summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Thiebaud <nthiebaud@gmail.com>2011-08-06 13:05:26 -0500
committerNorbert Thiebaud <nthiebaud@gmail.com>2011-08-06 13:05:26 -0500
commit801936459fa8cd5d452f875d14da7f34a9117f08 (patch)
treeb68a8d557f97d432db6933f487ebdff842eee600
parentbf202438d88e650b69c9817f003f45aed1f58996 (diff)
parentf8c7607ea291d7e7d976a9485abc1761627eb654 (diff)
Merge remote branch 'extensions/master'MELD_LIBREOFFICE_REPOS
* extensions/master: (978 commits) get this building for me Version 3.4.2.3, tag libreoffice-3.4.2.3 (3.4.2-rc3) enable l10n of presenter screen oops Bjoern's .gitattributes link got commited by mistake enable l10n of presenter screen Version 3.4.2.2, tag libreoffice-3.4.2.2 (3.4.2-rc2) poppler 0.17.0 changed its api for no some reason or other Branch libreoffice-3-4-2 Version 3.4.2.1, tag libreoffice-3.4.2.1 (3.4.2-rc1) Remove component_getImplementationEnvironment hotfix to include localizations of Presenter screen extension hotfix to include localizations of Presenter screen extension Goodbye to CWS_WORK_STAMP use OString::equalsL fixing rebase errors ause130: #i117218# change .idl handling to gnu make CWS gnumake4: reimplement basegfx_s hack for new build system [hg:c943ed591aff] Use DESKTOP and NATIVE where appropriate Version 3.4.1.1, tag libreoffice-3.4.1.1 (3.4.1-rc1) createFromAscii -> RTL_CONSTASCII_USTRINGPARAM ...
-rw-r--r--apache-commons/java/codec/makefile.mk75
-rw-r--r--apache-commons/java/httpclient/makefile.mk78
-rw-r--r--apache-commons/java/lang/makefile.mk75
-rw-r--r--apache-commons/java/logging/makefile.mk81
-rw-r--r--apache-commons/patches/codec.patch17
-rw-r--r--apache-commons/patches/logging.patch15
-rw-r--r--apache-commons/prj/build.lst6
-rw-r--r--apache-commons/prj/d.lst5
-rw-r--r--ct2n/ConvertTextToNumber-1.3.2-no-license.patch16
-rw-r--r--ct2n/ConvertTextToNumber-1.3.2-no-visible-by-default.patch104
-rw-r--r--ct2n/delzip2
-rw-r--r--ct2n/makefile.mk70
-rw-r--r--ct2n/prj/build.lst3
-rw-r--r--ct2n/prj/d.lst1
-rw-r--r--jfreereport/java/flute/makefile.mk79
-rw-r--r--jfreereport/java/jfreereport/makefile.mk70
-rw-r--r--jfreereport/java/libbase/makefile.mk91
-rw-r--r--jfreereport/java/libfonts/makefile.mk78
-rw-r--r--jfreereport/java/libformula/makefile.mk81
-rw-r--r--jfreereport/java/liblayout/makefile.mk71
-rw-r--r--jfreereport/java/libloader/makefile.mk78
-rw-r--r--jfreereport/java/librepository/makefile.mk78
-rw-r--r--jfreereport/java/libserializer/makefile.mk77
-rw-r--r--jfreereport/java/libxml/makefile.mk77
-rw-r--r--jfreereport/java/sac/makefile.mk83
-rw-r--r--jfreereport/nbprojects/flute/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/jcommon-serializer/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/jfreereport/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/libfonts/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/libformula/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/liblayout/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/libloader/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/librepository/nbproject/project.xml42
-rw-r--r--jfreereport/nbprojects/libxml/nbproject/project.xml42
-rwxr-xr-xjfreereport/patches/common_build.patch102
-rw-r--r--jfreereport/patches/flow-engine.patch10
-rw-r--r--jfreereport/patches/libbase-1.1.6-deprecated.patch11
-rw-r--r--jfreereport/patches/libfonts-1.1.6-deprecated.patch11
-rw-r--r--jfreereport/patches/liblayout.patch10
-rw-r--r--jfreereport/patches/libloader-1.1.6-deprecated.patch11
-rw-r--r--jfreereport/patches/librepository-1.1.6-deprecated.patch11
-rw-r--r--jfreereport/patches/sac.patch73
-rw-r--r--jfreereport/prj/build.lst13
-rw-r--r--jfreereport/prj/d.lst2
-rw-r--r--jfreereport/version.mk12
-rw-r--r--languagetool/JLanguageTool-1.0.0.patch137
-rw-r--r--languagetool/makefile.mk63
-rw-r--r--languagetool/prj/build.lst3
-rw-r--r--languagetool/prj/d.lst1
-rw-r--r--migrationanalysis/Read Me.odtbin0 -> 15137 bytes
-rw-r--r--migrationanalysis/no_localization1
-rw-r--r--migrationanalysis/prj/build.lst7
-rw-r--r--migrationanalysis/prj/d.lst1
-rw-r--r--migrationanalysis/src/driver_docs/CreateDriverDocs.wsf221
-rw-r--r--migrationanalysis/src/driver_docs/DocAnalysisRunMacro.vbs438
-rw-r--r--migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisExcelDriver.xlsbin0 -> 696832 bytes
-rw-r--r--migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisPPTDriver.pptbin0 -> 284672 bytes
-rw-r--r--migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisWordDriver.docbin0 -> 664064 bytes
-rw-r--r--migrationanalysis/src/driver_docs/allstrings.ulf2371
-rw-r--r--migrationanalysis/src/driver_docs/makefile.mk127
-rw-r--r--migrationanalysis/src/driver_docs/sources/AnalysisDriver.bas3646
-rw-r--r--migrationanalysis/src/driver_docs/sources/CollectedFiles.cls378
-rw-r--r--migrationanalysis/src/driver_docs/sources/CommonMigrationAnalyser.bas1119
-rw-r--r--migrationanalysis/src/driver_docs/sources/CommonPreparation.bas226
-rw-r--r--migrationanalysis/src/driver_docs/sources/DocumentAnalysis.cls342
-rw-r--r--migrationanalysis/src/driver_docs/sources/FileTypeAssociation.cls56
-rw-r--r--migrationanalysis/src/driver_docs/sources/IssueInfo.cls206
-rw-r--r--migrationanalysis/src/driver_docs/sources/LocalizeResults.bas308
-rw-r--r--migrationanalysis/src/driver_docs/sources/PrepareInfo.cls42
-rw-r--r--migrationanalysis/src/driver_docs/sources/StringDataManager.cls131
-rw-r--r--migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisExcelDriver.xlsbin0 -> 31232 bytes
-rw-r--r--migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisPPTDriver.pptbin0 -> 64512 bytes
-rw-r--r--migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisWordDriver.docbin0 -> 38912 bytes
-rw-r--r--migrationanalysis/src/driver_docs/sources/common_res.bas284
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/ApplicationSpecific.bas164
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/MigrationAnalyser.cls2319
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/Preparation.bas51
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/SetTextBoxFont.bas50
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/ThisWorkbook.cls53
-rw-r--r--migrationanalysis/src/driver_docs/sources/excel/excel_res.bas375
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/ApplicationSpecific.bas176
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/Loader.bas62
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/MigrationAnalyser.cls824
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/Preparation.bas41
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/Slide1.cls54
-rw-r--r--migrationanalysis/src/driver_docs/sources/powerpoint/powerpoint_res.bas107
-rw-r--r--migrationanalysis/src/driver_docs/sources/results_res.bas613
-rw-r--r--migrationanalysis/src/driver_docs/sources/word/ApplicationSpecific.bas156
-rw-r--r--migrationanalysis/src/driver_docs/sources/word/MigrationAnalyser.cls1522
-rw-r--r--migrationanalysis/src/driver_docs/sources/word/Preparation.bas151
-rw-r--r--migrationanalysis/src/driver_docs/sources/word/ThisDocument.cls52
-rw-r--r--migrationanalysis/src/driver_docs/sources/word/word_res.bas289
-rw-r--r--migrationanalysis/src/driver_docs/ulf2dat.pl153
-rw-r--r--migrationanalysis/src/exe/LaunchDrivers.exebin0 -> 28672 bytes
-rw-r--r--migrationanalysis/src/exe/ProAnalysisWizard.exebin0 -> 843776 bytes
-rw-r--r--migrationanalysis/src/msokill/StdAfx.cpp38
-rw-r--r--migrationanalysis/src/msokill/StdAfx.h57
-rw-r--r--migrationanalysis/src/msokill/makefile.mk82
-rw-r--r--migrationanalysis/src/msokill/msokill.cpp261
-rw-r--r--migrationanalysis/src/resources/analysis.dtd52
-rw-r--r--migrationanalysis/src/resources/makefile.mk59
-rw-r--r--migrationanalysis/src/resources/results_paw.xltbin0 -> 140800 bytes
-rw-r--r--migrationanalysis/src/wizard/Analyse.bas589
-rw-r--r--migrationanalysis/src/wizard/CollectedFiles.cls530
-rw-r--r--migrationanalysis/src/wizard/DocAnalysisWizard.exe.manifest22
-rw-r--r--migrationanalysis/src/wizard/Get Directory Dialog.bas143
-rw-r--r--migrationanalysis/src/wizard/IniSupport.bas269
-rw-r--r--migrationanalysis/src/wizard/LaunchDrivers.vbp42
-rw-r--r--migrationanalysis/src/wizard/LaunchDrivers.vbw1
-rw-r--r--migrationanalysis/src/wizard/OOo3_Analysis.icobin0 -> 295606 bytes
-rw-r--r--migrationanalysis/src/wizard/OOo_AnalysisBitmap.pngbin0 -> 8625 bytes
-rw-r--r--migrationanalysis/src/wizard/Office10Issues.bas361
-rw-r--r--migrationanalysis/src/wizard/ProAnalysisWizard.vbp65
-rw-r--r--migrationanalysis/src/wizard/RunServer.bas199
-rw-r--r--migrationanalysis/src/wizard/ScanFolders.frm157
-rw-r--r--migrationanalysis/src/wizard/SearchDocs.frm124
-rw-r--r--migrationanalysis/src/wizard/Terminate.frm81
-rw-r--r--migrationanalysis/src/wizard/Utilities.bas552
-rw-r--r--migrationanalysis/src/wizard/Wizard.DCAbin0 -> 3927 bytes
-rw-r--r--migrationanalysis/src/wizard/Wizard.Dsr79
-rw-r--r--migrationanalysis/src/wizard/Wizard.FRXbin0 -> 416643 bytes
-rw-r--r--migrationanalysis/src/wizard/Wizard.bas651
-rw-r--r--migrationanalysis/src/wizard/Wizard.frm3453
-rw-r--r--migrationanalysis/src/wizard/makefile.mk116
-rw-r--r--migrationanalysis/src/wizard/rcfooter.txt1
-rw-r--r--migrationanalysis/src/wizard/rcheader.txt17
-rw-r--r--migrationanalysis/src/wizard/rctmpl.txt126
-rw-r--r--migrationanalysis/src/wizard/res_defines.h153
-rw-r--r--migrationanalysis/src/wizard/wizard.ulf352
-rw-r--r--migrationanalysis/util/delzip1
-rw-r--r--migrationanalysis/util/makefile.mk53
-rw-r--r--mysqlc/prj/build.lst3
-rw-r--r--mysqlc/prj/d.lst4
-rw-r--r--mysqlc/source/DataAccess.xcu19
-rw-r--r--mysqlc/source/README65
-rw-r--r--mysqlc/source/delzip0
-rwxr-xr-xmysqlc/source/description.xml23
-rw-r--r--mysqlc/source/description/description_de.txt1
-rwxr-xr-xmysqlc/source/description/description_en-US.txt1
-rw-r--r--mysqlc/source/description/description_es.txt1
-rw-r--r--mysqlc/source/description/description_fr.txt1
-rw-r--r--mysqlc/source/description/description_hu.txt1
-rw-r--r--mysqlc/source/description/description_it.txt1
-rw-r--r--mysqlc/source/description/description_ja.txt1
-rw-r--r--mysqlc/source/description/description_ko.txt1
-rw-r--r--mysqlc/source/description/description_nl.txt1
-rw-r--r--mysqlc/source/description/description_pl.txt1
-rw-r--r--mysqlc/source/description/description_pt-BR.txt1
-rw-r--r--mysqlc/source/description/description_pt.txt1
-rw-r--r--mysqlc/source/description/description_ru.txt1
-rw-r--r--mysqlc/source/description/description_sv.txt1
-rw-r--r--mysqlc/source/description/description_zh-CN.txt1
-rw-r--r--mysqlc/source/description/description_zh-TW.txt1
-rw-r--r--mysqlc/source/exports.dxp2
-rw-r--r--mysqlc/source/makefile.mk312
-rw-r--r--mysqlc/source/manifest.xml8
-rw-r--r--mysqlc/source/mysqlc.map7
-rw-r--r--mysqlc/source/mysqlc.xml79
-rw-r--r--mysqlc/source/mysqlc_connection.cxx791
-rw-r--r--mysqlc/source/mysqlc_connection.hxx249
-rw-r--r--mysqlc/source/mysqlc_databasemetadata.cxx2215
-rw-r--r--mysqlc/source/mysqlc_databasemetadata.hxx238
-rw-r--r--mysqlc/source/mysqlc_driver.cxx366
-rw-r--r--mysqlc/source/mysqlc_driver.hxx117
-rw-r--r--mysqlc/source/mysqlc_general.cxx175
-rw-r--r--mysqlc/source/mysqlc_general.hxx65
-rw-r--r--mysqlc/source/mysqlc_preparedstatement.cxx943
-rw-r--r--mysqlc/source/mysqlc_preparedstatement.hxx183
-rw-r--r--mysqlc/source/mysqlc_propertyids.cxx207
-rw-r--r--mysqlc/source/mysqlc_propertyids.hxx138
-rw-r--r--mysqlc/source/mysqlc_resultset.cxx1513
-rw-r--r--mysqlc/source/mysqlc_resultset.hxx288
-rw-r--r--mysqlc/source/mysqlc_resultsetmetadata.cxx466
-rw-r--r--mysqlc/source/mysqlc_resultsetmetadata.hxx111
-rw-r--r--mysqlc/source/mysqlc_services.cxx171
-rw-r--r--mysqlc/source/mysqlc_statement.cxx530
-rw-r--r--mysqlc/source/mysqlc_statement.hxx190
-rw-r--r--mysqlc/source/mysqlc_subcomponent.hxx241
-rw-r--r--mysqlc/source/mysqlc_types.cxx791
-rw-r--r--mysqlc/source/mysqlc_types.hxx55
-rw-r--r--mysqlc/source/registry/data/org/openoffice/Office/DataAccess/Drivers.xcu100
-rw-r--r--mysqlc/version.mk38
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ast.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ca.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_de.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_en_GB.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_es.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_et.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_fa.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_fi.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_fr.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_gl.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_hu.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_it.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ja.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ko.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_nb.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_nl.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_pt_BR.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ro.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_ru.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_sk.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_sl.properties24
-rw-r--r--nlpsolver/locale/NLPSolverCommon_tr.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_zh_CN.properties22
-rw-r--r--nlpsolver/locale/NLPSolverCommon_zh_TW.properties22
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ast.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ca.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_de.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_en_GB.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_es.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_et.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_fa.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_fi.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_fr.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_gl.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_hu.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_is.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_it.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ja.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ko.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_nb.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_nl.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_pt_BR.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ro.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_ru.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_sk.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_sl.properties31
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_tr.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_zh_CN.properties28
-rw-r--r--nlpsolver/locale/NLPSolverStatusDialog_zh_TW.properties28
-rw-r--r--nlpsolver/makefile.mk68
-rw-r--r--nlpsolver/nlpsolver-0.9.patch62
-rw-r--r--nlpsolver/prj/build.lst3
-rw-r--r--nlpsolver/prj/d.lst1
-rw-r--r--reportbuilder/java/com/sun/star/report/DataRow.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/DataSource.java48
-rw-r--r--reportbuilder/java/com/sun/star/report/DataSourceException.java94
-rw-r--r--reportbuilder/java/com/sun/star/report/DataSourceFactory.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/ImageService.java70
-rw-r--r--reportbuilder/java/com/sun/star/report/InputRepository.java88
-rw-r--r--reportbuilder/java/com/sun/star/report/JobDefinitionException.java64
-rw-r--r--reportbuilder/java/com/sun/star/report/JobProgressIndicator.java79
-rw-r--r--reportbuilder/java/com/sun/star/report/JobProperties.java45
-rw-r--r--reportbuilder/java/com/sun/star/report/OfficeToken.java65
-rw-r--r--reportbuilder/java/com/sun/star/report/OutputRepository.java71
-rw-r--r--reportbuilder/java/com/sun/star/report/ParameterMap.java68
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportAddIn.java45
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportEngine.java56
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportEngineMetaData.java59
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportEngineParameterNames.java55
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportExecutionException.java86
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportExpression.java51
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportExpressionMetaData.java47
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportFunction.java44
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportJob.java91
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportJobDefinition.java57
-rw-r--r--reportbuilder/java/com/sun/star/report/ReportJobFactory.java41
-rw-r--r--reportbuilder/java/com/sun/star/report/SDBCReportData.java387
-rw-r--r--reportbuilder/java/com/sun/star/report/SDBCReportDataFactory.java591
-rw-r--r--reportbuilder/java/com/sun/star/report/SOImageService.java189
-rw-r--r--reportbuilder/java/com/sun/star/report/StorageRepository.java353
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/Author-Function.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/Author-Function_en_US.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/AuthorFunction.java61
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/AuthorFunctionDescription.java70
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/MetaDataFunctionCategory.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/Title-Function.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/Title-Function_en_US.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/TitleFunction.java65
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/TitleFunctionDescription.java70
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/category.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/category_en_US.properties30
-rw-r--r--reportbuilder/java/com/sun/star/report/function/metadata/makefile.mk66
-rw-r--r--reportbuilder/java/com/sun/star/report/makefile.mk74
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/DefaultNameGenerator.java156
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/Manifest.mf7
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/OfficeNamespaces.java72
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoFormulaContext.java97
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoReportAddIn.java60
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoReportEngine.java72
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoReportEngineMetaData.java147
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/PentahoReportJob.java419
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/SOFormulaOpCodeMapper.java153
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/SOFormulaParser.java446
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/SOFunctionManager.java172
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/SOReportJobFactory.java448
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/StarFunctionCategory.java161
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/StarFunctionDescription.java194
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/StarReportData.java168
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/StarReportDataFactory.java125
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/StarReportModule.java56
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/configuration.properties156
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/expressions/SumExpression.java56
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/expressions/SumExpressionMetaData.java78
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/AbstractReportElementLayoutController.java269
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FixedTextLayoutController.java85
-rwxr-xr-xreportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java241
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormattedTextLayoutController.java229
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ImageElementContext.java90
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ImageElementLayoutController.java325
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ObjectOleLayoutController.java124
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java159
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupInstanceSectionLayoutController.java153
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java204
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupSectionLayoutController.java109
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficePageSectionLayoutController.java30
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeRepeatingStructureLayoutController.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeReportLayoutController.java270
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeTableLayoutController.java79
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeTableTemplateLayoutController.java189
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/TableCellLayoutController.java216
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/VariablesCollection.java97
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/VariablesDeclarationLayoutController.java191
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/loader/InputRepositoryLoader.java189
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/loader/InputRepositoryResourceData.java85
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/loader/InputResourceKey.java63
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/makefile.mk147
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/DataStyle.java55
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/FixedTextElement.java52
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/FontFaceDeclsSection.java74
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/FontFaceElement.java55
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/FormatCondition.java67
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/FormattedTextElement.java58
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/ImageElement.java87
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/ObjectOleElement.java88
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeDetailSection.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeDocument.java73
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroup.java94
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroupInstanceSection.java16
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroupSection.java54
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeMasterPage.java66
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeMasterStyles.java83
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeReport.java148
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStyle.java130
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStyles.java198
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStylesCollection.java123
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/OfficeTableSection.java42
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/PageLayout.java68
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/PageSection.java60
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/RawText.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/ReportElement.java110
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/TableCellElement.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/model/VariablesDeclarationSection.java52
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/module.properties45
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-datastyle.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-draw.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-form.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-style.css10
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-table.css37
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/oasis-text.css9
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/ImageProducer.java498
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/OfficeDocumentReportTarget.java1730
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/OleProducer.java139
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/StyleUtilities.java615
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/StylesWriter.java390
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/chart/ChartRawReportProcessor.java106
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/chart/ChartRawReportTarget.java266
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/spreadsheet/SpreadsheetRawReportProcessor.java121
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java969
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/MasterPageFactory.java417
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/PageBreakDefinition.java49
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/PageContext.java228
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/TextRawReportProcessor.java116
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/TextRawReportTarget.java1454
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/output/text/VariablesDeclarations.java108
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/AttributeSpecification.java57
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/ElementReadHandler.java91
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeDocumentXmlResourceFactory.java51
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeParserUtil.java191
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeStylesXmlResourceFactory.java59
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/StarStyleXmlFactoryModule.java62
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/StarXmlFactoryModule.java62
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/StyleMapper.java38
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/chart/ChartReadHandler.java115
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/data/DataStyleReadHandler.java130
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/draw/ObjectOleReadHandler.java85
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/office/BodyReadHandler.java91
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/office/DocumentContentReadHandler.java236
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/office/DocumentStylesReadHandler.java106
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/office/FontFaceDeclsReadHandler.java117
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/office/MasterStylesReadHandler.java125
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt-schema-v1.0-os.xsd414
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ConditionalPrintExpressionReadHandler.java81
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/DetailRootTableReadHandler.java38
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FixedContentReadHandler.java98
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FormatConditionReadHandler.java100
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FormattedTextReadHandler.java118
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FunctionReadHandler.java116
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/GroupReadHandler.java182
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/GroupSectionReadHandler.java38
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ImageReadHandler.java141
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/MasterDetailReadHandler.java109
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ReportElementReadHandler.java109
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ReportReadHandler.java239
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/RootTableReadHandler.java105
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/SubDocumentReadHandler.java137
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/selectors.properties113
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style-mapping.txt8
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/FontFaceReadHandler.java56
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/MasterPageReadHandler.java106
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/OfficeStyleReadHandler.java105
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/OfficeStylesReadHandler.java143
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/PageLayoutReadHandler.java104
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/style/StyleDefinitionReadHandler.java99
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/OneOfConstantsMapper.java77
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/draw/TextAreaVerticalAlignMapper.java45
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/BackgroundColorMapper.java50
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/BorderRightMapper.java55
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/ColorMapper.java52
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontSizeMapper.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontStyleMapper.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontWeightMapper.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/TextAlignMapper.java47
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontFamilyGenericMapper.java65
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontFamilyMapper.java65
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontNameMapper.java49
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontPitchMapper.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontReliefMapper.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextEmphasizeMapper.java45
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineColorMapper.java54
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineStyleMapper.java49
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineWidthMapper.java76
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineWordMode.java43
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/VerticalAlignMapper.java47
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/table/ColumnWidthMapper.java53
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/table/RowHeightMapper.java53
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/CoveredCellReadHandler.java54
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableCellReadHandler.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableColumnReadHandler.java53
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableColumnsReadHandler.java103
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableReadHandler.java145
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableRowReadHandler.java126
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableRowsReadHandler.java102
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/text/NoCDATATextContentReadHandler.java168
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/text/TextContentReadHandler.java70
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/parser/xlink/XLinkReadHandler.java97
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/smil.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/star-office.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/star-report.css73
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/star-rpt.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/LengthCalculator.java110
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapper.java96
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperKey.java118
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperXmlFactoryModule.java70
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperXmlResourceFactory.java56
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingDocumentReadHandler.java107
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingReadHandler.java101
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingRule.java64
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/stylemapper.xml772
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/styles/stylemapper.xsd91
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/svg.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/pentaho/xsl-fo.css5
-rw-r--r--reportbuilder/java/com/sun/star/report/util/DefaultJobProperties.java80
-rw-r--r--reportbuilder/java/com/sun/star/report/util/DefaultParameterMap.java123
-rw-r--r--reportbuilder/java/com/sun/star/report/util/DefaultReportJobDefinition.java116
-rw-r--r--reportbuilder/java/com/sun/star/report/util/ManifestWriter.java123
-rw-r--r--reportbuilder/java/com/sun/star/report/util/ReportUtil.java46
-rw-r--r--reportbuilder/java/com/sun/star/report/util/makefile.mk49
-rw-r--r--reportbuilder/java/jfreereport.properties30
-rw-r--r--reportbuilder/java/libformula.properties43
-rw-r--r--reportbuilder/java/loader.properties31
-rw-r--r--reportbuilder/java/makefile.mk45
-rw-r--r--reportbuilder/license/THIRDPARTYREADMELICENSE.html768
-rw-r--r--reportbuilder/license/readme_en-US.html30
-rw-r--r--reportbuilder/license/readme_en-US.txt34
-rw-r--r--reportbuilder/prj/build.lst16
-rw-r--r--reportbuilder/prj/d.lst12
-rw-r--r--reportbuilder/prj/rpt.xml14
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/Accelerators.xcu156
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/DataAccess.xcu44
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/Embedding.xcu71
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/ExtendedColorScheme.xcu195
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/Paths.xcu39
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/ReportDesign.xcu34
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/UI/Controller.xcu167
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/UI/DbReportWindowState.xcu154
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/UI/ReportCommands.xcu403
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/UI/makefile.mk48
-rw-r--r--reportbuilder/registry/data/org/openoffice/Office/makefile.mk68
-rw-r--r--reportbuilder/registry/data/org/openoffice/Setup.xcu54
-rw-r--r--reportbuilder/registry/data/org/openoffice/TypeDetection/Filter.xcu76
-rw-r--r--reportbuilder/registry/data/org/openoffice/TypeDetection/Types.xcu81
-rw-r--r--reportbuilder/registry/data/org/openoffice/TypeDetection/makefile.mk55
-rw-r--r--reportbuilder/registry/data/org/openoffice/makefile.mk50
-rw-r--r--reportbuilder/registry/schema/org/openoffice/Office/ReportDesign.xcs71
-rw-r--r--reportbuilder/registry/schema/org/openoffice/Office/UI/DbReportWindowState.xcs48
-rw-r--r--reportbuilder/registry/schema/org/openoffice/Office/UI/ReportCommands.xcs53
-rw-r--r--reportbuilder/registry/schema/org/openoffice/Office/UI/makefile.mk58
-rw-r--r--reportbuilder/registry/schema/org/openoffice/Office/makefile.mk46
-rw-r--r--reportbuilder/template/delzip0
-rw-r--r--reportbuilder/template/en-US/wizard/report/default.otrbin0 -> 2561 bytes
-rw-r--r--reportbuilder/template/en-US/wizard/report/makefile.mk69
-rw-r--r--reportbuilder/template/makefile.mk122
-rw-r--r--reportbuilder/template/manifest.xml3
-rw-r--r--reportbuilder/template/post.xml8
-rw-r--r--reportbuilder/template/pre.xml6
-rw-r--r--reportbuilder/template/registry/data/org/openoffice/Office/Paths.xcu40
-rw-r--r--reportbuilder/template/registry/data/org/openoffice/Office/makefile.mk49
-rw-r--r--reportbuilder/template/wizard/report/default.odr1
-rw-r--r--reportbuilder/template/wizard/report/finance.odr1
-rw-r--r--reportbuilder/template/wizard/report/finance_2.odr1
-rw-r--r--reportbuilder/template/wizard/report/makefile.mk69
-rw-r--r--reportbuilder/template/wizard/report/yellow.odr1
-rwxr-xr-xreportbuilder/util/component.txt1
-rw-r--r--reportbuilder/util/delzip1
-rw-r--r--reportbuilder/util/description.xml24
-rw-r--r--reportbuilder/util/makefile.mk151
-rwxr-xr-xreportbuilder/util/makefile.pmk66
-rw-r--r--reportbuilder/util/manifest.xml5
-rw-r--r--reportbuilder/util/target.pmk34
-rw-r--r--sdext/inc/makefile.mk47
-rw-r--r--sdext/inc/pch/precompiled_sdext.cxx31
-rw-r--r--sdext/inc/pch/precompiled_sdext.hxx34
-rw-r--r--sdext/prj/build.lst19
-rw-r--r--sdext/prj/d.lst13
-rw-r--r--sdext/source/minimizer/basic.txt89
-rw-r--r--sdext/source/minimizer/configurationaccess.cxx541
-rw-r--r--sdext/source/minimizer/configurationaccess.hxx141
-rw-r--r--sdext/source/minimizer/delzip1
-rw-r--r--sdext/source/minimizer/description.xml30
-rw-r--r--sdext/source/minimizer/fileopendialog.cxx210
-rw-r--r--sdext/source/minimizer/fileopendialog.hxx74
-rw-r--r--sdext/source/minimizer/graphiccollector.cxx462
-rw-r--r--sdext/source/minimizer/graphiccollector.hxx108
-rwxr-xr-xsdext/source/minimizer/help/component.txt2
-rw-r--r--sdext/source/minimizer/help/help_de.odtbin0 -> 8987 bytes
-rw-r--r--sdext/source/minimizer/help/help_en-US.odtbin0 -> 8987 bytes
-rw-r--r--sdext/source/minimizer/impoptimizer.cxx770
-rw-r--r--sdext/source/minimizer/impoptimizer.hxx88
-rw-r--r--sdext/source/minimizer/informationdialog.cxx413
-rw-r--r--sdext/source/minimizer/informationdialog.hxx102
-rw-r--r--sdext/source/minimizer/makefile.mk148
-rw-r--r--sdext/source/minimizer/manifest.xml16
-rw-r--r--sdext/source/minimizer/minimizer.pmk28
-rw-r--r--sdext/source/minimizer/optimizationstats.cxx105
-rw-r--r--sdext/source/minimizer/optimizationstats.hxx66
-rw-r--r--sdext/source/minimizer/optimizerdialog.cxx840
-rw-r--r--sdext/source/minimizer/optimizerdialog.hrc36
-rw-r--r--sdext/source/minimizer/optimizerdialog.hxx248
-rw-r--r--sdext/source/minimizer/optimizerdialogcontrols.cxx962
-rw-r--r--sdext/source/minimizer/pagecollector.cxx182
-rw-r--r--sdext/source/minimizer/pagecollector.hxx52
-rw-r--r--sdext/source/minimizer/pppoptimizer.cxx212
-rw-r--r--sdext/source/minimizer/pppoptimizer.hxx103
-rw-r--r--sdext/source/minimizer/pppoptimizerdialog.cxx218
-rw-r--r--sdext/source/minimizer/pppoptimizerdialog.hxx112
-rw-r--r--sdext/source/minimizer/pppoptimizertoken.cxx349
-rw-r--r--sdext/source/minimizer/pppoptimizertoken.hxx286
-rw-r--r--sdext/source/minimizer/pppoptimizeruno.cxx115
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/Addons.xcu65
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/ProtocolHandler.xcu10
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu383
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/extension/makefile.mk50
-rw-r--r--sdext/source/minimizer/registry/data/org/openoffice/Office/makefile.mk48
-rw-r--r--sdext/source/minimizer/registry/schema/org/openoffice/Office/extension/SunPresentationMinimizer.xcs326
-rw-r--r--sdext/source/minimizer/unodialog.cxx406
-rw-r--r--sdext/source/minimizer/unodialog.hxx148
-rw-r--r--sdext/source/pdfimport/config/description.xml29
-rw-r--r--sdext/source/pdfimport/config/manifest.xml16
-rw-r--r--sdext/source/pdfimport/config/pdf_import_filter.xcu199
-rw-r--r--sdext/source/pdfimport/config/pdf_types.xcu18
-rw-r--r--sdext/source/pdfimport/delzip1
-rw-r--r--sdext/source/pdfimport/dialogs/Module1.xba7
-rw-r--r--sdext/source/pdfimport/dialogs/TargetChooser.xdl21
-rw-r--r--sdext/source/pdfimport/dialogs/dialog.xlb5
-rw-r--r--sdext/source/pdfimport/dialogs/impress.pngbin0 -> 11117 bytes
-rw-r--r--sdext/source/pdfimport/dialogs/script.xlb5
-rw-r--r--sdext/source/pdfimport/dialogs/writer.pngbin0 -> 10176 bytes
-rwxr-xr-xsdext/source/pdfimport/dialogs/xpdfimport_err.pdfbin0 -> 21204 bytes
-rw-r--r--sdext/source/pdfimport/filterdet.cxx757
-rw-r--r--sdext/source/pdfimport/filterdet.hxx116
-rwxr-xr-xsdext/source/pdfimport/help/component.txt1
-rw-r--r--sdext/source/pdfimport/inc/contentsink.hxx186
-rw-r--r--sdext/source/pdfimport/inc/odfemitter.hxx48
-rw-r--r--sdext/source/pdfimport/inc/pdfihelper.hxx205
-rw-r--r--sdext/source/pdfimport/inc/pdfparse.hxx314
-rw-r--r--sdext/source/pdfimport/inc/saxemitter.hxx49
-rw-r--r--sdext/source/pdfimport/inc/treevisitorfactory.hxx69
-rw-r--r--sdext/source/pdfimport/inc/wrapper.hxx66
-rw-r--r--sdext/source/pdfimport/inc/xmlemitter.hxx62
-rw-r--r--sdext/source/pdfimport/makefile.mk154
-rw-r--r--sdext/source/pdfimport/misc/makefile.mk51
-rw-r--r--sdext/source/pdfimport/misc/pdfihelper.cxx82
-rw-r--r--sdext/source/pdfimport/misc/pwdinteract.cxx166
-rw-r--r--sdext/source/pdfimport/odf/makefile.mk50
-rw-r--r--sdext/source/pdfimport/odf/odfemitter.cxx139
-rw-r--r--sdext/source/pdfimport/pdfiadaptor.cxx332
-rw-r--r--sdext/source/pdfimport/pdfiadaptor.hxx141
-rw-r--r--sdext/source/pdfimport/pdfisettings.pmk28
-rw-r--r--sdext/source/pdfimport/pdfparse/makefile.mk58
-rw-r--r--sdext/source/pdfimport/pdfparse/pdfentries.cxx1487
-rw-r--r--sdext/source/pdfimport/pdfparse/pdfparse.cxx708
-rw-r--r--sdext/source/pdfimport/sax/emitcontext.cxx193
-rw-r--r--sdext/source/pdfimport/sax/emitcontext.hxx62
-rw-r--r--sdext/source/pdfimport/sax/makefile.mk51
-rw-r--r--sdext/source/pdfimport/sax/saxattrlist.cxx106
-rw-r--r--sdext/source/pdfimport/sax/saxattrlist.hxx79
-rw-r--r--sdext/source/pdfimport/services.cxx184
-rwxr-xr-xsdext/source/pdfimport/test/export.map34
-rwxr-xr-xsdext/source/pdfimport/test/makefile.mk161
-rw-r--r--sdext/source/pdfimport/test/outputwrap.hxx75
-rw-r--r--sdext/source/pdfimport/test/pdf2xml.cxx108
-rw-r--r--sdext/source/pdfimport/test/pdfunzip.cxx544
-rw-r--r--sdext/source/pdfimport/test/testdocs/graphicformats.pdfbin0 -> 27149 bytes
-rw-r--r--sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_draw.xml242
-rw-r--r--sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_impress.xml242
-rw-r--r--sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_writer.xml368
-rw-r--r--sdext/source/pdfimport/test/testdocs/makefile.mk81
-rw-r--r--sdext/source/pdfimport/test/testdocs/pictxt.pdfbin0 -> 24475 bytes
-rw-r--r--sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_draw.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_impress.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_writer.xml533
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpic.pdfbin0 -> 24486 bytes
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_draw.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_impress.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_writer.xml533
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpictxt.pdfbin0 -> 24484 bytes
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_draw.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_impress.xml3379
-rw-r--r--sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_writer.xml533
-rw-r--r--sdext/source/pdfimport/test/testdocs/verticaltext.pdfbin0 -> 16533 bytes
-rw-r--r--sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_draw.xml216
-rw-r--r--sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_impress.xml216
-rw-r--r--sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_writer.xml339
-rw-r--r--sdext/source/pdfimport/test/testinput.odpbin0 -> 40660 bytes
-rwxr-xr-xsdext/source/pdfimport/test/testinput.pdfbin0 -> 67103 bytes
-rw-r--r--sdext/source/pdfimport/test/tests.cxx584
-rw-r--r--sdext/source/pdfimport/tree/drawtreevisiting.cxx1087
-rw-r--r--sdext/source/pdfimport/tree/drawtreevisiting.hxx132
-rw-r--r--sdext/source/pdfimport/tree/genericelements.cxx496
-rw-r--r--sdext/source/pdfimport/tree/genericelements.hxx326
-rw-r--r--sdext/source/pdfimport/tree/imagecontainer.cxx156
-rw-r--r--sdext/source/pdfimport/tree/imagecontainer.hxx63
-rw-r--r--sdext/source/pdfimport/tree/makefile.mk56
-rw-r--r--sdext/source/pdfimport/tree/pdfiprocessor.cxx1463
-rw-r--r--sdext/source/pdfimport/tree/pdfiprocessor.hxx309
-rw-r--r--sdext/source/pdfimport/tree/style.cxx262
-rw-r--r--sdext/source/pdfimport/tree/style.hxx184
-rw-r--r--sdext/source/pdfimport/tree/treevisiting.hxx83
-rw-r--r--sdext/source/pdfimport/tree/treevisitorfactory.cxx124
-rw-r--r--sdext/source/pdfimport/tree/writertreevisiting.cxx1221
-rw-r--r--sdext/source/pdfimport/tree/writertreevisiting.hxx119
-rwxr-xr-xsdext/source/pdfimport/wrapper/keyword_list53
-rwxr-xr-xsdext/source/pdfimport/wrapper/makefile.mk59
-rw-r--r--sdext/source/pdfimport/wrapper/wrapper.cxx1160
-rw-r--r--sdext/source/pdfimport/xpdftest/binary_0_out.defbin0 -> 80097 bytes
-rw-r--r--sdext/source/pdfimport/xpdftest/binary_1_out.defbin0 -> 75159156 bytes
-rw-r--r--sdext/source/pdfimport/xpdftest/book.pdfbin0 -> 463628 bytes
-rw-r--r--sdext/source/pdfimport/xpdftest/makefile.mk57
-rw-r--r--sdext/source/pdfimport/xpdftest/testinput.odpbin0 -> 44591 bytes
-rw-r--r--sdext/source/pdfimport/xpdftest/testinput.pdfbin0 -> 64488 bytes
-rw-r--r--sdext/source/pdfimport/xpdftest/text_0_out.def202
-rw-r--r--sdext/source/pdfimport/xpdftest/text_1_out.def70338
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/makefile.mk82
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx935
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx299
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/pnghelper.cxx419
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/pnghelper.hxx95
-rw-r--r--sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx210
-rw-r--r--sdext/source/presenter/PresenterAccessibility.cxx2495
-rw-r--r--sdext/source/presenter/PresenterAccessibility.hxx159
-rw-r--r--sdext/source/presenter/PresenterAnimation.cxx143
-rw-r--r--sdext/source/presenter/PresenterAnimation.hxx133
-rw-r--r--sdext/source/presenter/PresenterAnimator.cxx174
-rw-r--r--sdext/source/presenter/PresenterAnimator.hxx75
-rw-r--r--sdext/source/presenter/PresenterBitmapContainer.cxx501
-rw-r--r--sdext/source/presenter/PresenterBitmapContainer.hxx168
-rw-r--r--sdext/source/presenter/PresenterButton.cxx615
-rw-r--r--sdext/source/presenter/PresenterButton.hxx188
-rw-r--r--sdext/source/presenter/PresenterCanvasHelper.cxx331
-rw-r--r--sdext/source/presenter/PresenterCanvasHelper.hxx122
-rw-r--r--sdext/source/presenter/PresenterClock.cxx1445
-rw-r--r--sdext/source/presenter/PresenterClock.hxx202
-rw-r--r--sdext/source/presenter/PresenterComponent.cxx141
-rw-r--r--sdext/source/presenter/PresenterComponent.hxx58
-rw-r--r--sdext/source/presenter/PresenterConfigurationAccess.cxx412
-rw-r--r--sdext/source/presenter/PresenterConfigurationAccess.hxx208
-rw-r--r--sdext/source/presenter/PresenterController.cxx1380
-rw-r--r--sdext/source/presenter/PresenterController.hxx270
-rw-r--r--sdext/source/presenter/PresenterCurrentSlideObserver.cxx157
-rw-r--r--sdext/source/presenter/PresenterCurrentSlideObserver.hxx98
-rw-r--r--sdext/source/presenter/PresenterExtensionIdentifier.txx41
-rw-r--r--sdext/source/presenter/PresenterFrameworkObserver.cxx216
-rw-r--r--sdext/source/presenter/PresenterFrameworkObserver.hxx133
-rw-r--r--sdext/source/presenter/PresenterGeometryHelper.cxx337
-rw-r--r--sdext/source/presenter/PresenterGeometryHelper.hxx134
-rw-r--r--sdext/source/presenter/PresenterHelpView.cxx825
-rw-r--r--sdext/source/presenter/PresenterHelpView.hxx146
-rw-r--r--sdext/source/presenter/PresenterHelper.cxx96
-rw-r--r--sdext/source/presenter/PresenterHelper.hxx80
-rw-r--r--sdext/source/presenter/PresenterNotesView.cxx810
-rw-r--r--sdext/source/presenter/PresenterNotesView.hxx200
-rw-r--r--sdext/source/presenter/PresenterPaintManager.cxx178
-rw-r--r--sdext/source/presenter/PresenterPaintManager.hxx99
-rw-r--r--sdext/source/presenter/PresenterPane.cxx237
-rw-r--r--sdext/source/presenter/PresenterPane.hxx121
-rw-r--r--sdext/source/presenter/PresenterPaneAnimator.cxx1426
-rw-r--r--sdext/source/presenter/PresenterPaneAnimator.hxx97
-rw-r--r--sdext/source/presenter/PresenterPaneBase.cxx561
-rw-r--r--sdext/source/presenter/PresenterPaneBase.hxx176
-rw-r--r--sdext/source/presenter/PresenterPaneBorderManager.cxx585
-rw-r--r--sdext/source/presenter/PresenterPaneBorderManager.hxx176
-rw-r--r--sdext/source/presenter/PresenterPaneBorderPainter.cxx1104
-rw-r--r--sdext/source/presenter/PresenterPaneBorderPainter.hxx166
-rw-r--r--sdext/source/presenter/PresenterPaneContainer.cxx450
-rw-r--r--sdext/source/presenter/PresenterPaneContainer.hxx200
-rw-r--r--sdext/source/presenter/PresenterPaneFactory.cxx381
-rw-r--r--sdext/source/presenter/PresenterPaneFactory.hxx142
-rw-r--r--sdext/source/presenter/PresenterProtocolHandler.cxx1004
-rw-r--r--sdext/source/presenter/PresenterProtocolHandler.hxx106
-rw-r--r--sdext/source/presenter/PresenterScreen.cxx930
-rw-r--r--sdext/source/presenter/PresenterScreen.hxx250
-rw-r--r--sdext/source/presenter/PresenterScrollBar.cxx1348
-rw-r--r--sdext/source/presenter/PresenterScrollBar.hxx340
-rw-r--r--sdext/source/presenter/PresenterSlidePreview.cxx429
-rw-r--r--sdext/source/presenter/PresenterSlidePreview.hxx176
-rw-r--r--sdext/source/presenter/PresenterSlideShowView.cxx1159
-rw-r--r--sdext/source/presenter/PresenterSlideShowView.hxx300
-rw-r--r--sdext/source/presenter/PresenterSlideSorter.cxx2324
-rw-r--r--sdext/source/presenter/PresenterSlideSorter.hxx236
-rw-r--r--sdext/source/presenter/PresenterSprite.cxx292
-rw-r--r--sdext/source/presenter/PresenterSprite.hxx102
-rw-r--r--sdext/source/presenter/PresenterSpritePane.cxx263
-rw-r--r--sdext/source/presenter/PresenterSpritePane.hxx129
-rw-r--r--sdext/source/presenter/PresenterTextView.cxx1594
-rw-r--r--sdext/source/presenter/PresenterTextView.hxx322
-rw-r--r--sdext/source/presenter/PresenterTheme.cxx1417
-rw-r--r--sdext/source/presenter/PresenterTheme.hxx160
-rw-r--r--sdext/source/presenter/PresenterTimer.cxx681
-rw-r--r--sdext/source/presenter/PresenterTimer.hxx146
-rw-r--r--sdext/source/presenter/PresenterToolBar.cxx2461
-rw-r--r--sdext/source/presenter/PresenterToolBar.hxx318
-rw-r--r--sdext/source/presenter/PresenterUIPainter.cxx259
-rw-r--r--sdext/source/presenter/PresenterUIPainter.hxx73
-rw-r--r--sdext/source/presenter/PresenterViewFactory.cxx656
-rw-r--r--sdext/source/presenter/PresenterViewFactory.hxx189
-rw-r--r--sdext/source/presenter/PresenterWindowManager.cxx1644
-rw-r--r--sdext/source/presenter/PresenterWindowManager.hxx262
-rw-r--r--sdext/source/presenter/bitmaps/Background.pngbin0 -> 3474 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveBottom.pngbin0 -> 214 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveBottomCallout.pngbin0 -> 1425 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveBottomLeft.pngbin0 -> 598 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveBottomRight.pngbin0 -> 626 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveLeft.pngbin0 -> 145 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveRight.pngbin0 -> 141 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveTop.pngbin0 -> 148 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveTopLeft.pngbin0 -> 442 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderActiveTopRight.pngbin0 -> 438 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderBottom.pngbin0 -> 164 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderBottomLeft.pngbin0 -> 576 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderBottomRight.pngbin0 -> 587 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideBottom.pngbin0 -> 140 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideBottomLeft.pngbin0 -> 161 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideBottomRight.pngbin0 -> 159 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideLeft.pngbin0 -> 140 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideRight.pngbin0 -> 140 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideTop.pngbin0 -> 140 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideTopLeft.pngbin0 -> 164 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderCurrentSlideTopRight.pngbin0 -> 164 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderLeft.pngbin0 -> 147 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderRight.pngbin0 -> 177 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarBottom.pngbin0 -> 112 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarLeft.pngbin0 -> 119 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarRight.pngbin0 -> 121 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarTop.pngbin0 -> 120 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarTopLeft.pngbin0 -> 268 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderToolbarTopRight.pngbin0 -> 244 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderTop.pngbin0 -> 174 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderTopLeft.pngbin0 -> 426 bytes
-rw-r--r--sdext/source/presenter/bitmaps/BorderTopRight.pngbin0 -> 414 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonEffectNextDisabled.pngbin0 -> 258 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonEffectNextMouseOver.pngbin0 -> 259 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonEffectNextNormal.pngbin0 -> 262 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonEffectNextSelected.pngbin0 -> 257 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameCenterMouseOver.pngbin0 -> 131 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameCenterNormal.pngbin0 -> 138 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameLeftMouseOver.pngbin0 -> 166 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameLeftNormal.pngbin0 -> 166 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameRightMouseOver.pngbin0 -> 163 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonFrameRightNormal.pngbin0 -> 163 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonHelpDisabled.pngbin0 -> 543 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonHelpMouseOver.pngbin0 -> 538 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonHelpNormal.pngbin0 -> 550 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonHelpSelected.pngbin0 -> 623 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonMinusDisabled.pngbin0 -> 243 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonMinusMouseOver.pngbin0 -> 239 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonMinusNormal.pngbin0 -> 244 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonMinusSelected.pngbin0 -> 245 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonNotesDisabled.pngbin0 -> 321 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonNotesMouseOver.pngbin0 -> 314 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonNotesNormal.pngbin0 -> 324 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonNotesSelected.pngbin0 -> 318 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonPlusDisabled.pngbin0 -> 277 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonPlusMouseOver.pngbin0 -> 275 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonPlusNormal.pngbin0 -> 279 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonPlusSelected.pngbin0 -> 280 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideNextDisabled.pngbin0 -> 246 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideNextMouseOver.pngbin0 -> 250 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideNextNormal.pngbin0 -> 250 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlidePreviousDisabled.pngbin0 -> 270 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlidePreviousMouseOver.pngbin0 -> 263 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlidePreviousNormal.pngbin0 -> 271 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlidePreviousSelected.pngbin0 -> 270 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideSorterDisabled.pngbin0 -> 342 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideSorterMouseOver.pngbin0 -> 338 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideSorterNormal.pngbin0 -> 347 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ButtonSlideSorterSelected.pngbin0 -> 338 bytes
-rw-r--r--sdext/source/presenter/bitmaps/LabelMouseOverCenter.pngbin0 -> 208 bytes
-rw-r--r--sdext/source/presenter/bitmaps/LabelMouseOverLeft.pngbin0 -> 157 bytes
-rw-r--r--sdext/source/presenter/bitmaps/LabelMouseOverRight.pngbin0 -> 154 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowDownDisabled.pngbin0 -> 324 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowDownMouseOver.pngbin0 -> 324 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowDownNormal.pngbin0 -> 331 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowDownSelected.pngbin0 -> 369 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowUpDisabled.pngbin0 -> 319 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowUpMouseOver.pngbin0 -> 323 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowUpNormal.pngbin0 -> 329 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarArrowUpSelected.pngbin0 -> 365 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarPagerMiddleMouseOver.pngbin0 -> 125 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarPagerMiddleNormal.pngbin0 -> 119 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbBottomMouseOver.pngbin0 -> 120 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbBottomNormal.pngbin0 -> 120 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbMiddleMouseOver.pngbin0 -> 118 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbMiddleNormal.pngbin0 -> 118 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbTopMouseOver.pngbin0 -> 120 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ScrollbarThumbTopNormal.pngbin0 -> 120 bytes
-rw-r--r--sdext/source/presenter/bitmaps/ViewBackground.pngbin0 -> 177 bytes
-rw-r--r--sdext/source/presenter/delzip1
-rw-r--r--sdext/source/presenter/description.xml30
-rwxr-xr-xsdext/source/presenter/help/component.txt2
-rw-r--r--sdext/source/presenter/help/en-US/com.sun.PresenterScreen/makefile.mk51
-rw-r--r--sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp186
-rw-r--r--sdext/source/presenter/makefile.mk385
-rw-r--r--sdext/source/presenter/manifest.xml18
-rw-r--r--sdext/source/presenter/registry/data/org/openoffice/Office/Jobs.xcu20
-rw-r--r--sdext/source/presenter/registry/data/org/openoffice/Office/ProtocolHandler.xcu10
-rw-r--r--sdext/source/presenter/registry/data/org/openoffice/Office/extension/PresenterScreen.xcu1224
-rw-r--r--sdext/source/presenter/registry/data/org/openoffice/Office/extension/makefile.mk51
-rw-r--r--sdext/source/presenter/registry/data/org/openoffice/Office/makefile.mk48
-rw-r--r--sdext/source/presenter/registry/schema/org/openoffice/Office/extension/PresenterScreen.xcs469
-rw-r--r--sdext/util/makefile.pmk37
-rw-r--r--swext/makefile.pmk37
-rw-r--r--swext/mediawiki/build.xml227
-rw-r--r--swext/mediawiki/dialogs/EditSetting.xdl47
-rw-r--r--swext/mediawiki/dialogs/Module1.xba33
-rw-r--r--swext/mediawiki/dialogs/SendToMediaWiki.xdl54
-rw-r--r--swext/mediawiki/dialogs/Settings.xdl46
-rw-r--r--swext/mediawiki/dialogs/dialog.xlb33
-rw-r--r--swext/mediawiki/dialogs/script.xlb31
-rwxr-xr-xswext/mediawiki/help/component.txt1
-rw-r--r--swext/mediawiki/help/makefile.mk87
-rw-r--r--swext/mediawiki/help/wiki.xhp156
-rw-r--r--swext/mediawiki/help/wikiaccount.xhp56
-rw-r--r--swext/mediawiki/help/wikiformats.xhp72
-rw-r--r--swext/mediawiki/help/wikisend.xhp60
-rw-r--r--swext/mediawiki/help/wikisettings.xhp54
-rw-r--r--swext/mediawiki/makefile.mk69
-rw-r--r--swext/mediawiki/src/THIRDPARTYLICENSEREADME.html148
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java193
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/Helper.java1153
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/MainThreadDialogExecutor.java176
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/Settings.java347
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java295
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiCancelException.java33
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java325
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiEditSettingDialog.java429
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiEditorImpl.java476
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiOptionsEventHandlerImpl.java303
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiPropDialog.java388
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiProtocolSocketFactory.java168
-rw-r--r--swext/mediawiki/src/description.xml14
-rw-r--r--swext/mediawiki/src/filter/mediawiki.ottbin0 -> 6304 bytes
-rwxr-xr-xswext/mediawiki/src/filter/odt2mediawiki.xsl1567
-rw-r--r--swext/mediawiki/src/makefile.mk54
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/Addons.xcu67
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/Custom/WikiExtension.xcu153
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/Custom/makefile.mk48
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/OptionsDialog.xcu50
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/Paths.xcu36
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/ProtocolHandler.xcu36
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/Office/makefile.mk46
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Filter.xcu56
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Types.xcu44
-rw-r--r--swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/makefile.mk46
-rw-r--r--swext/mediawiki/src/registry/schema/org/openoffice/Office/Custom/WikiExtension.xcs197
-rw-r--r--swext/mediawiki/src/registry/schema/org/openoffice/Office/Custom/makefile.mk46
-rw-r--r--swext/mediawiki/src/uno-extension-manifest.xml53
-rw-r--r--swext/prj/build.lst10
-rw-r--r--swext/prj/d.lst5
-rwxr-xr-xtomcat/makefile.mk68
-rw-r--r--tomcat/prj/build.lst2
-rw-r--r--tomcat/prj/d.lst1
-rw-r--r--tomcat/tomcat.patch35
-rw-r--r--xpdf/makefile.mk137
-rw-r--r--xpdf/prj/build.lst2
-rw-r--r--xpdf/prj/d.lst5
-rw-r--r--xpdf/xpdf-3.02-ooopwd.patch101
-rw-r--r--xpdf/xpdf-3.02.patch1901
899 files changed, 243184 insertions, 0 deletions
diff --git a/apache-commons/java/codec/makefile.mk b/apache-commons/java/codec/makefile.mk
new file mode 100644
index 000000000000..84643530eb16
--- /dev/null
+++ b/apache-commons/java/codec/makefile.mk
@@ -0,0 +1,75 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=apache-commons
+TARGET=commons-codec
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# override buildfile
+ANT_BUILDFILE=build.xml
+
+.INCLUDE : antsettings.mk
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=commons-codec-1.3-src
+TARFILE_MD5=af3c3acf618de6108d65fcdc92b492e1
+
+TARFILE_ROOTDIR=commons-codec-1.3
+
+PATCH_FILES=$(PRJ)$/patches$/codec.patch
+
+OUT2CLASS=dist$/commons-codec-1.3.jar
+
+ANT_OPTS+="-Dfile.encoding=ISO-8859-1"
+.EXPORT : ANT_OPTS
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+.INCLUDE : tg_ext.mk
+.ENDIF
+
diff --git a/apache-commons/java/httpclient/makefile.mk b/apache-commons/java/httpclient/makefile.mk
new file mode 100644
index 000000000000..55302e8c2f6a
--- /dev/null
+++ b/apache-commons/java/httpclient/makefile.mk
@@ -0,0 +1,78 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=apache-commons
+TARGET=commons-httpclient
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# override buildfile
+ANT_BUILDFILE=build.xml
+
+.INCLUDE : antsettings.mk
+
+TAR!:=$(GNUTAR)
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=commons-httpclient-3.1-src
+TARFILE_MD5=2c9b0f83ed5890af02c0df1c1776f39b
+
+TARFILE_ROOTDIR=commons-httpclient-3.1
+
+OUT2CLASS=dist$/commons-httpclient.jar
+
+COMMONS_LOGGING_JAR=..$/..$/..$/..$/$(INPATH)$/class$/commons-logging-1.1.1-SNAPSHOT.jar
+COMMONS_CODEC_JAR=..$/..$/..$/..$/$/$(INPATH)$/class$/commons-codec-1.3.jar
+
+ANT_OPTS+="-Dfile.encoding=ISO-8859-1"
+.EXPORT : ANT_OPTS
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj -Dcommons-logging.jar=$(COMMONS_LOGGING_JAR) -Dcommons-codec.jar=$(COMMONS_CODEC_JAR) -f $(ANT_BUILDFILE) dist
+.ELSE
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dcommons-logging.jar=$(COMMONS_LOGGING_JAR) -Dcommons-codec.jar=$(COMMONS_CODEC_JAR) -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) dist
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+.INCLUDE : tg_ext.mk
+.ENDIF
+
diff --git a/apache-commons/java/lang/makefile.mk b/apache-commons/java/lang/makefile.mk
new file mode 100644
index 000000000000..88a7e1f78dc8
--- /dev/null
+++ b/apache-commons/java/lang/makefile.mk
@@ -0,0 +1,75 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=apache-commons
+TARGET=commons-lang
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# override buildfile
+ANT_BUILDFILE=build.xml
+
+.INCLUDE : antsettings.mk
+
+TAR!:=$(GNUTAR)
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=commons-lang-2.3-src
+TARFILE_MD5=2ae988b339daec234019a7066f96733e
+
+TARFILE_ROOTDIR=commons-lang-2.3-src
+
+OUT2CLASS=dist$/commons-lang-2.3.jar
+
+ANT_OPTS+="-Dfile.encoding=ISO-8859-1"
+.EXPORT : ANT_OPTS
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != "" && "$(ENABLE_MEDIAWIKI)" == "YES"
+.INCLUDE : tg_ext.mk
+.ENDIF
+
diff --git a/apache-commons/java/logging/makefile.mk b/apache-commons/java/logging/makefile.mk
new file mode 100644
index 000000000000..cc1f1a6e8aaa
--- /dev/null
+++ b/apache-commons/java/logging/makefile.mk
@@ -0,0 +1,81 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=apache-commons
+TARGET=commons-logging
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# override buildfile
+ANT_BUILDFILE=build.xml
+
+.INCLUDE : antsettings.mk
+
+.IF "$(SOLAR_JAVA)" != "" && ( "$(ENABLE_MEDIAWIKI)" == "YES" || "$(ENABLE_REPORTBUILDER)" == "YES" )
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=commons-logging-1.1.1-src
+TARFILE_MD5=3c219630e4302863a9a83d0efde889db
+
+TARFILE_ROOTDIR=commons-logging-1.1.1-src
+
+PATCH_FILES=$(PRJ)$/patches$/logging.patch
+
+CONVERTFILES=build.xml
+
+OUT2CLASS=target$/commons-logging-1.1.1-SNAPSHOT.jar
+
+ANT_OPTS+="-Dfile.encoding=ISO-8859-1"
+.EXPORT : ANT_OPTS
+
+.IF "$(SYSTEM_TOMCAT)" != "YES"
+SERVLETAPI_JAR := $(SOLARVER)$/$(INPATH)$/bin$(UPDMINOREXT)$/servlet-api.jar
+.ENDIF
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj -Dservletapi.jar=$(SERVLETAPI_JAR) -f $(ANT_BUILDFILE) compile build-jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -f $(ANT_BUILDFILE) -Dservletapi.jar=$(SERVLETAPI_JAR) compile build-jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != "" && ( "$(ENABLE_MEDIAWIKI)" == "YES" || "$(ENABLE_REPORTBUILDER)" == "YES" )
+.INCLUDE : tg_ext.mk
+.ENDIF
+
diff --git a/apache-commons/patches/codec.patch b/apache-commons/patches/codec.patch
new file mode 100644
index 000000000000..dea25ad263d2
--- /dev/null
+++ b/apache-commons/patches/codec.patch
@@ -0,0 +1,17 @@
+--- misc/build/commons-codec-1.3/build.xml-old 2008-01-31 15:28:58.000000000 +0100
++++ misc/build/commons-codec-1.3/build.xml 2008-01-31 15:29:21.000000000 +0100
+@@ -90,14 +90,12 @@
+ </target>
+ <target name="dist" depends="compile,javadoc" description="Create binary distribution">
+ <mkdir dir="${dist.home}"/>
+- <copy file="../LICENSE" todir="${dist.home}"/>
+ <copy file="${basedir}/RELEASE-NOTES.txt" todir="${dist.home}"/>
+ <antcall target="jar"/>
+ </target>
+ <target name="jar" depends="compile" description="Create jar">
+ <mkdir dir="${dist.home}"/>
+ <mkdir dir="${build.home}/classes/META-INF"/>
+- <copy file="../LICENSE" tofile="${build.home}/classes/META-INF/LICENSE.txt"/>
+ <jar jarfile="${dist.home}/${final.name}.jar" basedir="${build.home}/classes" manifest="${build.home}/conf/MANIFEST.MF"/>
+ </target>
+ <target name="install-jar" depends="jar" description="--> Installs jar file in ${lib.repo}">
diff --git a/apache-commons/patches/logging.patch b/apache-commons/patches/logging.patch
new file mode 100644
index 000000000000..63b93dcbd6f2
--- /dev/null
+++ b/apache-commons/patches/logging.patch
@@ -0,0 +1,15 @@
+--- misc/commons-logging-1.1.1-src/build.xml 2007-11-22 00:27:52.000000000 +0100
++++ misc/build/commons-logging-1.1.1-src/build.xml 2008-06-24 14:23:56.316301736 +0200
+@@ -127,10 +127,10 @@
+ <!-- ========== Compiler Defaults ========================================= -->
+
+ <!-- Version of java class files to generate. -->
+- <property name="target.version" value="1.1"/>
++ <property name="target.version" value="1.3"/>
+
+ <!-- Version of java source to accept -->
+- <property name="source.version" value="1.2"/>
++ <property name="source.version" value="1.3"/>
+
+ <!-- Should Java compilations set the 'debug' compiler option? -->
+ <property name="compile.debug" value="true"/>
diff --git a/apache-commons/prj/build.lst b/apache-commons/prj/build.lst
new file mode 100644
index 000000000000..c509ce0336dd
--- /dev/null
+++ b/apache-commons/prj/build.lst
@@ -0,0 +1,6 @@
+ac apache-commons : solenv TOMCAT:tomcat NULL
+ac apache-commons usr1 - all ac_mkout NULL
+ac apache-commons\java\codec nmake - all ac_codec NULL
+ac apache-commons\java\lang nmake - all ac_lang NULL
+ac apache-commons\java\logging nmake - all ac_logging NULL
+ac apache-commons\java\httpclient nmake - all ac_httpclient ac_logging ac_codec NULL
diff --git a/apache-commons/prj/d.lst b/apache-commons/prj/d.lst
new file mode 100644
index 000000000000..03eec2a853ad
--- /dev/null
+++ b/apache-commons/prj/d.lst
@@ -0,0 +1,5 @@
+..\%__SRC%\class\commons-logging-1.1.1-SNAPSHOT.jar %_DEST%\bin\commons-logging-1.1.1.jar
+..\%__SRC%\class\commons-codec-1.3.jar %_DEST%\bin\commons-codec-1.3.jar
+..\%__SRC%\class\commons-httpclient.jar %_DEST%\bin\commons-httpclient-3.1.jar
+..\%__SRC%\class\commons-lang-2.3.jar %_DEST%\bin\commons-lang-2.3.jar
+
diff --git a/ct2n/ConvertTextToNumber-1.3.2-no-license.patch b/ct2n/ConvertTextToNumber-1.3.2-no-license.patch
new file mode 100644
index 000000000000..1d8b805ceaa8
--- /dev/null
+++ b/ct2n/ConvertTextToNumber-1.3.2-no-license.patch
@@ -0,0 +1,16 @@
+diff -purN misc/description.xml misc/build/description.xml
+--- misc/description.xml 2009-02-03 00:07:30.000000000 +0100
++++ misc/build/description.xml 2010-03-05 21:38:48.000000000 +0100
+@@ -5,12 +5,4 @@
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <identifier value="nl.nouenoff.ct2n"/>
+ <version value="1.3.2"/>
+- <!-- <dependencies>
+-
+- </dependencies> -->
+- <registration>
+- <simple-license accept-by="admin" default-license-id="ID0" suppress-on-update="true" >
+- <license-text xlink:href="registration/COPYING" lang="en" license-id="ID0" />
+- </simple-license>
+- </registration>
+ </description>
diff --git a/ct2n/ConvertTextToNumber-1.3.2-no-visible-by-default.patch b/ct2n/ConvertTextToNumber-1.3.2-no-visible-by-default.patch
new file mode 100644
index 000000000000..e764b55e3b8b
--- /dev/null
+++ b/ct2n/ConvertTextToNumber-1.3.2-no-visible-by-default.patch
@@ -0,0 +1,104 @@
+diff -purN misc/Office/UI/BaseWindowState.xcu misc/build/Office/UI/BaseWindowState.xcu
+--- misc/Office/UI/BaseWindowState.xcu 2008-02-09 23:26:50.000000000 +0100
++++ misc/build/Office/UI/BaseWindowState.xcu 2010-03-05 21:36:37.000000000 +0100
+@@ -9,6 +9,9 @@
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>CT2N</value>
+ </prop>
++ <prop oor:name="Visible" oor:type="xs:boolean">
++ <value>false</value>
++ </prop>
+ </node>
+ </node>
+ </node>
+diff -purN misc/Office/UI/BasicIDEWindowState.xcu misc/build/Office/UI/BasicIDEWindowState.xcu
+--- misc/Office/UI/BasicIDEWindowState.xcu 2008-02-09 23:26:50.000000000 +0100
++++ misc/build/Office/UI/BasicIDEWindowState.xcu 2010-03-05 21:36:46.000000000 +0100
+@@ -9,6 +9,9 @@
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>CT2N</value>
+ </prop>
++ <prop oor:name="Visible" oor:type="xs:boolean">
++ <value>false</value>
++ </prop>
+ </node>
+ </node>
+ </node>
+diff -purN misc/Office/UI/CalcWindowState.xcu misc/build/Office/UI/CalcWindowState.xcu
+--- misc/Office/UI/CalcWindowState.xcu 2008-02-09 23:26:50.000000000 +0100
++++ misc/build/Office/UI/CalcWindowState.xcu 2010-03-05 21:36:32.000000000 +0100
+@@ -9,6 +9,9 @@
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>CT2N</value>
+ </prop>
++ <prop oor:name="Visible" oor:type="xs:boolean">
++ <value>false</value>
++ </prop>
+ </node>
+ </node>
+ </node>
+diff -purN misc/Office/UI/DrawWindowState.xcu misc/build/Office/UI/DrawWindowState.xcu
+--- misc/Office/UI/DrawWindowState.xcu 2008-02-09 23:26:50.000000000 +0100
++++ misc/build/Office/UI/DrawWindowState.xcu 2010-03-05 21:36:54.000000000 +0100
+@@ -9,6 +9,9 @@
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>CT2N</value>
+ </prop>
++ <prop oor:name="Visible" oor:type="xs:boolean">
++ <value>false</value>
++ </prop>
+ </node>
+ </node>
+ </node>
+diff -purN misc/Office/UI/ImpressWindowState.xcu misc/build/Office/UI/ImpressWindowState.xcu
+--- misc/Office/UI/ImpressWindowState.xcu 2008-02-09 23:26:50.000000000 +0100
++++ misc/build/Office/UI/ImpressWindowState.xcu 2010-03-05 21:36:59.000000000 +0100
+@@ -9,6 +9,9 @@
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>CT2N</value>
+ </prop>
++ <prop oor:name="Visible" oor:type="xs:boolean">
++ <value>false</value>
++ </prop>
+ </node>
+ </node>
+ </node>
+diff -purN misc/Office/UI/MathWindowState.xcu misc/build/Office/UI/MathWindowState.xcu
+--- misc/Office/UI/MathWindowState.xcu 2008-02-09 23:26:50.000000000 +0100
++++ misc/build/Office/UI/MathWindowState.xcu 2010-03-05 21:37:03.000000000 +0100
+@@ -9,6 +9,9 @@
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>CT2N</value>
+ </prop>
++ <prop oor:name="Visible" oor:type="xs:boolean">
++ <value>false</value>
++ </prop>
+ </node>
+ </node>
+ </node>
+diff -purN misc/Office/UI/StartModuleWindowState.xcu misc/build/Office/UI/StartModuleWindowState.xcu
+--- misc/Office/UI/StartModuleWindowState.xcu 2008-02-09 23:26:50.000000000 +0100
++++ misc/build/Office/UI/StartModuleWindowState.xcu 2010-03-05 21:37:09.000000000 +0100
+@@ -9,6 +9,9 @@
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>CT2N</value>
+ </prop>
++ <prop oor:name="Visible" oor:type="xs:boolean">
++ <value>false</value>
++ </prop>
+ </node>
+ </node>
+ </node>
+diff -purN misc/Office/UI/WriterWindowState.xcu misc/build/Office/UI/WriterWindowState.xcu
+--- misc/Office/UI/WriterWindowState.xcu 2008-02-09 23:26:50.000000000 +0100
++++ misc/build/Office/UI/WriterWindowState.xcu 2010-03-05 21:37:17.000000000 +0100
+@@ -9,6 +9,9 @@
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>CT2N</value>
+ </prop>
++ <prop oor:name="Visible" oor:type="xs:boolean">
++ <value>false</value>
++ </prop>
+ </node>
+ </node>
+ </node>
diff --git a/ct2n/delzip b/ct2n/delzip
new file mode 100644
index 000000000000..00d6fa1d41c7
--- /dev/null
+++ b/ct2n/delzip
@@ -0,0 +1,2 @@
+*.orig
+so_*_ct2n
diff --git a/ct2n/makefile.mk b/ct2n/makefile.mk
new file mode 100644
index 000000000000..62e70521d3f2
--- /dev/null
+++ b/ct2n/makefile.mk
@@ -0,0 +1,70 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.10 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=.
+
+PRJNAME=ct2n
+TARGET=ct2n
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+TARFILE_MD5=451ccf439a36a568653b024534669971
+TARFILE_NAME=ConvertTextToNumber-1.3.2
+TARFILE_ROOTDIR=.
+BUILD_DIR=.
+
+PATCH_FILES=\
+ ConvertTextToNumber-1.3.2-no-license.patch \
+ ConvertTextToNumber-1.3.2-no-visible-by-default.patch
+
+CONFIGURE_DIR=
+CONFIGURE_ACTION=
+CONFIGURE_FLAGS=
+BUILD_ACTION=
+
+ZIP1TARGET=ConvertTextToNumber
+ZIP1EXT=.oxt
+ZIP1FLAGS=-u -r
+ZIP1DIR=$(MISC)/build$/$(TARFILE_ROOTDIR)
+ZIP1LIST= * -x "*.orig" -x "so_*_ct2n"
+ZIP1DEPS=$(PACKAGE_DIR)/$(PREDELIVER_FLAG_FILE)
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : tg_ext.mk
+.INCLUDE : target.mk
+
+ZIP1TARGET : $(PACKAGE_DIR)/$(PREDELIVER_FLAG_FILE)
diff --git a/ct2n/prj/build.lst b/ct2n/prj/build.lst
new file mode 100644
index 000000000000..714d9265d372
--- /dev/null
+++ b/ct2n/prj/build.lst
@@ -0,0 +1,3 @@
+ct2n ct2n : solenv NULL
+ct2n ct2n usr1 - all ct2n_mkout NULL
+ct2n ct2n nmake - all ct2n_ct2n NULL
diff --git a/ct2n/prj/d.lst b/ct2n/prj/d.lst
new file mode 100644
index 000000000000..bb394d57baef
--- /dev/null
+++ b/ct2n/prj/d.lst
@@ -0,0 +1 @@
+..\%__SRC%\bin\ConvertTextToNumber*.oxt %_DEST%\bin\*
diff --git a/jfreereport/java/flute/makefile.mk b/jfreereport/java/flute/makefile.mk
new file mode 100644
index 000000000000..0e4d28b173a2
--- /dev/null
+++ b/jfreereport/java/flute/makefile.mk
@@ -0,0 +1,79 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=jfreereport
+TARGET=flute
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+.INCLUDE : $(PRJ)$/version.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+.IF "$(L10N_framework)"==""
+TARFILE_NAME=$(TARGET)-$(FLUTE_VERSION)
+TARFILE_MD5=d8bd5eed178db6e2b18eeed243f85aa8
+# TARFILE_ROOTDIR=$(TARGET)
+TARFILE_IS_FLAT=true
+PATCH_FILES=$(PACKAGE_DIR)$/$(TARGET).patch
+CONVERTFILES=common_build.xml
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(FLUTE_VERSION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(FLUTE_VERSION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+
+# --- Targets ------------------------------------------------------
+.ENDIF
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+.INCLUDE : tg_ext.mk
+.IF "$(L10N_framework)"==""
+ALLTAR : $(CLASSDIR)$/$(TARGET)-$(FLUTE_VERSION).jar
+
+$(PACKAGE_DIR)$/$(TARGET).patch :
+ @-$(MKDIRHIER) $(PACKAGE_DIR)$(fake_root_dir)
+ ( $(TYPE:s/+//) $(PRJ)$/patches$/common_build.patch | $(SED) 's/libloader-1.1.3/$(TARGET)-$(FLUTE_VERSION)/g' > $(PACKAGE_DIR)$/$(TARGET).patch )
+ $(COMMAND_ECHO)$(TOUCH) $(PACKAGE_DIR)$/so_converted_$(TARGET).dummy
+
+$(CLASSDIR)$/$(TARGET)-$(FLUTE_VERSION).jar : $(PACKAGE_DIR)$/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)$/$(TARFILE_ROOTDIR)$/dist$/$(TARGET)-$(FLUTE_VERSION).jar $(CLASSDIR)$/$(TARGET)-$(FLUTE_VERSION).jar
+.ENDIF
+.ENDIF
+
diff --git a/jfreereport/java/jfreereport/makefile.mk b/jfreereport/java/jfreereport/makefile.mk
new file mode 100644
index 000000000000..fb082f9058e5
--- /dev/null
+++ b/jfreereport/java/jfreereport/makefile.mk
@@ -0,0 +1,70 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=jfreereport
+TARGET=flow-engine
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+.INCLUDE : $(PRJ)$/version.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+.IF "$(L10N_framework)"==""
+TARFILE_NAME=$(TARGET)-$(FLOW_ENGINE_VERSION)
+TARFILE_IS_FLAT=true
+TARFILE_MD5=ba2930200c9f019c2d93a8c88c651a0f
+PATCH_FILES=$(PRJ)$/patches$/$(TARGET).patch
+CONVERTFILES=build.xml
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+.ENDIF
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+.INCLUDE : tg_ext.mk
+.IF "$(L10N_framework)"==""
+ALLTAR : $(CLASSDIR)$/$(TARGET)-$(FLOW_ENGINE_VERSION).jar
+$(CLASSDIR)$/$(TARGET)-$(FLOW_ENGINE_VERSION).jar : $(PACKAGE_DIR)$/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)$/$(TARFILE_ROOTDIR)$/build$/lib$/$(TARGET).jar $(CLASSDIR)$/$(TARGET)-$(FLOW_ENGINE_VERSION).jar
+.ENDIF
+.ENDIF
diff --git a/jfreereport/java/libbase/makefile.mk b/jfreereport/java/libbase/makefile.mk
new file mode 100644
index 000000000000..2c5fc5195aa5
--- /dev/null
+++ b/jfreereport/java/libbase/makefile.mk
@@ -0,0 +1,91 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=../..
+
+PRJNAME=jfreereport
+TARGET=libbase
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+.INCLUDE : $(PRJ)/version.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=$(TARGET)-$(LIBBASE_VERSION)
+TARFILE_MD5=eeb2c7ddf0d302fba4bfc6e97eac9624
+#TARFILE_ROOTDIR=$(TARGET)
+TARFILE_IS_FLAT=true
+
+PATCH_FILES=$(PACKAGE_DIR)/$(TARGET).patch $(PRJ)/patches/$(TARGET)-$(LIBBASE_VERSION)-deprecated.patch
+CONVERTFILES=common_build.xml
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBBASE_VERSION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBBASE_VERSION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+.IF "$(L10N_framework)"==""
+.INCLUDE : tg_ext.mk
+
+ALLTAR : $(CLASSDIR)/$(TARGET)-$(LIBBASE_VERSION).jar
+
+$(PACKAGE_DIR)/$(TARGET).patch :
+ @-$(MKDIRHIER) $(PACKAGE_DIR)$(fake_root_dir)
+ ( $(TYPE:s/+//) $(PRJ)/patches/common_build.patch | $(SED) 's/libloader-1.1.3/$(TARGET)-$(LIBBASE_VERSION)/g' > $(PACKAGE_DIR)/$(TARGET).patch )
+ $(COMMAND_ECHO)$(TOUCH) $(PACKAGE_DIR)/so_converted_$(TARGET).dummy
+
+# XCLASSPATH/CLASSPATH does not work and we only can give lib once. But
+# the build.xmls fortunately take *.jar out of lib so we can copy our
+# commons-logging.jar here - yes, even in the system-apache commons case.
+# Sucks.
+$(PACKAGE_DIR)/$(CONFIGURE_FLAG_FILE) : $(CLASSDIR)/commons-logging.jar
+
+$(CLASSDIR)/commons-logging.jar :
+.IF "$(SYSTEM_APACHE_COMMONS)" != "YES"
+ $(COPY) $(SOLARBINDIR)/commons-logging-1.1.1.jar $(CLASSDIR)/commons-logging.jar
+.ELSE
+ $(COPY) $(COMMONS_LOGGING_JAR) $(CLASSDIR)/commons-logging.jar
+.ENDIF
+
+$(CLASSDIR)/$(TARGET)-$(LIBBASE_VERSION).jar : $(CLASSDIR)/commons-logging.jar $(PACKAGE_DIR)/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)/$(TARFILE_ROOTDIR)/dist/$(TARGET)-$(LIBBASE_VERSION).jar $(CLASSDIR)/$(TARGET)-$(LIBBASE_VERSION).jar
+.ENDIF
+.ENDIF
diff --git a/jfreereport/java/libfonts/makefile.mk b/jfreereport/java/libfonts/makefile.mk
new file mode 100644
index 000000000000..cffe2a999f12
--- /dev/null
+++ b/jfreereport/java/libfonts/makefile.mk
@@ -0,0 +1,78 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=../..
+
+PRJNAME=jfreereport
+TARGET=libfonts
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+.INCLUDE : $(PRJ)/version.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+.IF "$(L10N_framework)"==""
+TARFILE_NAME=$(TARGET)-$(LIBFONTS_VERSION)
+TARFILE_IS_FLAT=true
+TARFILE_MD5=3bdf40c0d199af31923e900d082ca2dd
+PATCH_FILES=$(PACKAGE_DIR)/$(TARGET).patch $(PRJ)/patches/$(TARGET)-$(LIBFONTS_VERSION)-deprecated.patch
+CONVERTFILES=common_build.xml
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBFONTS_VERSION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBFONTS_VERSION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+.ENDIF
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.IF "$(L10N_framework)"==""
+.IF "$(SOLAR_JAVA)" != ""
+.INCLUDE : tg_ext.mk
+
+ALLTAR : $(CLASSDIR)/$(TARGET)-$(LIBFONTS_VERSION).jar
+
+$(PACKAGE_DIR)/$(TARGET).patch :
+ @-$(MKDIRHIER) $(PACKAGE_DIR)$(fake_root_dir)
+ ( $(TYPE:s/+//) $(PRJ)/patches/common_build.patch | $(SED) 's/libloader-1.1.3/$(TARGET)-$(LIBFONTS_VERSION)/g' > $(PACKAGE_DIR)/$(TARGET).patch )
+ $(COMMAND_ECHO)$(TOUCH) $(PACKAGE_DIR)/so_converted_$(TARGET).dummy
+
+$(CLASSDIR)/$(TARGET)-$(LIBFONTS_VERSION).jar : $(PACKAGE_DIR)/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)/$(TARFILE_ROOTDIR)/dist/$(TARGET)-$(LIBFONTS_VERSION).jar $(CLASSDIR)/$(TARGET)-$(LIBFONTS_VERSION).jar
+
+.ENDIF
+.ENDIF
+
diff --git a/jfreereport/java/libformula/makefile.mk b/jfreereport/java/libformula/makefile.mk
new file mode 100644
index 000000000000..33ff65f7bb8d
--- /dev/null
+++ b/jfreereport/java/libformula/makefile.mk
@@ -0,0 +1,81 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=jfreereport
+TARGET=libformula
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+.INCLUDE : $(PRJ)$/version.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+.IF "$(L10N_framework)"==""
+TARFILE_NAME=$(TARGET)-$(LIBFORMULA_VERSION)
+TARFILE_IS_FLAT=true
+TARFILE_MD5=3404ab6b1792ae5f16bbd603bd1e1d03
+PATCH_FILES=$(PACKAGE_DIR)$/$(TARGET).patch
+CONVERTFILES=common_build.xml
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBFORMULA_VERSION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBFORMULA_VERSION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+.ENDIF
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.IF "$(L10N_framework)"==""
+.IF "$(SOLAR_JAVA)" != ""
+.INCLUDE : tg_ext.mk
+
+ALLTAR : $(CLASSDIR)$/$(TARGET)-$(LIBFORMULA_VERSION).jar
+
+$(PACKAGE_DIR)$/$(TARGET).patch :
+ @-$(MKDIRHIER) $(PACKAGE_DIR)$(fake_root_dir)
+ ( $(TYPE:s/+//) $(PRJ)$/patches$/common_build.patch | $(SED) 's/libloader-1.1.3/$(TARGET)-$(LIBFORMULA_VERSION)/g' > $(PACKAGE_DIR)$/$(TARGET).patch )
+ $(COMMAND_ECHO)$(TOUCH) $(PACKAGE_DIR)$/so_converted_$(TARGET).dummy
+
+$(CLASSDIR)$/$(TARGET)-$(LIBFORMULA_VERSION).jar : $(PACKAGE_DIR)$/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)$/$(TARFILE_ROOTDIR)$/dist$/$(TARGET)-$(LIBFORMULA_VERSION).jar $(CLASSDIR)$/$(TARGET)-$(LIBFORMULA_VERSION).jar
+
+.ENDIF
+# $(PACKAGE_DIR)$/$(TARFILE_ROOTDIR)$/source$/org$/jfree$/formula$/function$/information$/IsRef-Function.properties :
+# @@-$(MKDIRHIER) $(@:d)
+# $(MV) $(PACKAGE_DIR)$/$(TARFILE_ROOTDIR)$/source$/org$/jfree$/formula$/function$/information$/isRef-Function.properties $@
+.ENDIF
diff --git a/jfreereport/java/liblayout/makefile.mk b/jfreereport/java/liblayout/makefile.mk
new file mode 100644
index 000000000000..7e4977d8639c
--- /dev/null
+++ b/jfreereport/java/liblayout/makefile.mk
@@ -0,0 +1,71 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=jfreereport
+TARGET=liblayout
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+.INCLUDE : $(PRJ)$/version.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+.IF "$(L10N_framework)"==""
+TARFILE_NAME=$(TARGET)-$(LIBLAYOUT_VERSION)
+TARFILE_IS_FLAT=true
+TARFILE_MD5=db60e4fde8dd6d6807523deb71ee34dc
+PATCH_FILES=$(PRJ)$/patches$/$(TARGET).patch
+CONVERTFILES=build.xml
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+.ENDIF
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.IF "$(L10N_framework)"==""
+.IF "$(SOLAR_JAVA)" != ""
+.INCLUDE : tg_ext.mk
+
+ALLTAR : $(CLASSDIR)$/$(TARGET)-$(LIBLAYOUT_VERSION).jar
+$(CLASSDIR)$/$(TARGET)-$(LIBLAYOUT_VERSION).jar : $(PACKAGE_DIR)$/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)$/$(TARFILE_ROOTDIR)$/build$/lib$/$(TARGET).jar $(CLASSDIR)$/$(TARGET)-$(LIBLAYOUT_VERSION).jar
+
+.ENDIF
+.ENDIF
diff --git a/jfreereport/java/libloader/makefile.mk b/jfreereport/java/libloader/makefile.mk
new file mode 100644
index 000000000000..c0741e3e9ef9
--- /dev/null
+++ b/jfreereport/java/libloader/makefile.mk
@@ -0,0 +1,78 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=../..
+
+PRJNAME=jfreereport
+TARGET=libloader
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+.INCLUDE : $(PRJ)/version.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=$(TARGET)-$(LIBLOADER_VERSION)
+TARFILE_IS_FLAT=true
+TARFILE_MD5=97b2d4dba862397f446b217e2b623e71
+PATCH_FILES=$(PACKAGE_DIR)/$(TARGET).patch $(PRJ)/patches/$(TARGET)-$(LIBLOADER_VERSION)-deprecated.patch
+CONVERTFILES=common_build.xml
+
+.IF "$(L10N_framework)"==""
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBLOADER_VERSION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBLOADER_VERSION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+.ENDIF
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.IF "$(L10N_framework)"==""
+.IF "$(SOLAR_JAVA)" != ""
+.INCLUDE : tg_ext.mk
+
+ALLTAR : $(CLASSDIR)/$(TARGET)-$(LIBLOADER_VERSION).jar
+
+$(PACKAGE_DIR)/$(TARGET).patch :
+ @-$(MKDIRHIER) $(PACKAGE_DIR)$(fake_root_dir)
+ ( $(TYPE:s/+//) $(PRJ)/patches/common_build.patch | $(SED) 's/libloader-1.1.3/$(TARGET)-$(LIBLOADER_VERSION)/g' > $(PACKAGE_DIR)/$(TARGET).patch )
+ $(COMMAND_ECHO)$(TOUCH) $(PACKAGE_DIR)/so_converted_$(TARGET).dummy
+
+$(CLASSDIR)/$(TARGET)-$(LIBLOADER_VERSION).jar : $(PACKAGE_DIR)/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)/$(TARFILE_ROOTDIR)/dist/$(TARGET)-$(LIBLOADER_VERSION).jar $(CLASSDIR)/$(TARGET)-$(LIBLOADER_VERSION).jar
+
+.ENDIF
+.ENDIF
diff --git a/jfreereport/java/librepository/makefile.mk b/jfreereport/java/librepository/makefile.mk
new file mode 100644
index 000000000000..617572ce7eb9
--- /dev/null
+++ b/jfreereport/java/librepository/makefile.mk
@@ -0,0 +1,78 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=../..
+
+PRJNAME=jfreereport
+TARGET=librepository
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+.INCLUDE : $(PRJ)/version.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=$(TARGET)-$(LIBREPOSITORY_VERSION)
+TARFILE_IS_FLAT=true
+TARFILE_MD5=8ce2fcd72becf06c41f7201d15373ed9
+PATCH_FILES=$(PACKAGE_DIR)/$(TARGET).patch $(PRJ)/patches/$(TARGET)-$(LIBREPOSITORY_VERSION)-deprecated.patch
+CONVERTFILES=common_build.xml
+
+.IF "$(L10N_framework)"==""
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBREPOSITORY_VERSION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBREPOSITORY_VERSION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+.ENDIF
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.IF "$(L10N_framework)"==""
+.IF "$(SOLAR_JAVA)" != ""
+.INCLUDE : tg_ext.mk
+
+ALLTAR : $(CLASSDIR)/$(TARGET)-$(LIBREPOSITORY_VERSION).jar
+
+$(PACKAGE_DIR)/$(TARGET).patch :
+ @-$(MKDIRHIER) $(PACKAGE_DIR)$(fake_root_dir)
+ ( $(TYPE:s/+//) $(PRJ)/patches/common_build.patch | $(SED) 's/libloader-1.1.3/$(TARGET)-$(LIBREPOSITORY_VERSION)/g' > $(PACKAGE_DIR)/$(TARGET).patch )
+ $(COMMAND_ECHO)$(TOUCH) $(PACKAGE_DIR)/so_converted_$(TARGET).dummy
+
+$(CLASSDIR)/$(TARGET)-$(LIBREPOSITORY_VERSION).jar : $(PACKAGE_DIR)/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)/$(TARFILE_ROOTDIR)/dist/$(TARGET)-$(LIBREPOSITORY_VERSION).jar $(CLASSDIR)/$(TARGET)-$(LIBREPOSITORY_VERSION).jar
+
+.ENDIF
+.ENDIF
diff --git a/jfreereport/java/libserializer/makefile.mk b/jfreereport/java/libserializer/makefile.mk
new file mode 100644
index 000000000000..d5ee7cc878c6
--- /dev/null
+++ b/jfreereport/java/libserializer/makefile.mk
@@ -0,0 +1,77 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=jfreereport
+TARGET=libserializer
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+.INCLUDE : $(PRJ)$/version.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+.IF "$(L10N_framework)"==""
+TARFILE_NAME=$(TARGET)-$(LIBSERIALIZER_VERSION)
+TARFILE_IS_FLAT=true
+TARFILE_MD5=f94d9870737518e3b597f9265f4e9803
+PATCH_FILES=$(PACKAGE_DIR)$/$(TARGET).patch
+CONVERTFILES=common_build.xml
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBSERIALIZER_VERSION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBSERIALIZER_VERSION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+.ENDIF
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.IF "$(L10N_framework)"==""
+.IF "$(SOLAR_JAVA)" != ""
+.INCLUDE : tg_ext.mk
+
+ALLTAR : $(CLASSDIR)$/$(TARGET)-$(LIBSERIALIZER_VERSION).jar
+
+$(PACKAGE_DIR)$/$(TARGET).patch :
+ @-$(MKDIRHIER) $(PACKAGE_DIR)$(fake_root_dir)
+ ( $(TYPE:s/+//) $(PRJ)$/patches$/common_build.patch | $(SED) 's/libloader-1.1.3/$(TARGET)-$(LIBSERIALIZER_VERSION)/g' > $(PACKAGE_DIR)$/$(TARGET).patch )
+ $(COMMAND_ECHO)$(TOUCH) $(PACKAGE_DIR)$/so_converted_$(TARGET).dummy
+
+$(CLASSDIR)$/$(TARGET)-$(LIBSERIALIZER_VERSION).jar : $(PACKAGE_DIR)$/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)$/$(TARFILE_ROOTDIR)$/dist$/$(TARGET)-$(LIBSERIALIZER_VERSION).jar $(CLASSDIR)$/$(TARGET)-$(LIBSERIALIZER_VERSION).jar
+
+.ENDIF
+.ENDIF
diff --git a/jfreereport/java/libxml/makefile.mk b/jfreereport/java/libxml/makefile.mk
new file mode 100644
index 000000000000..1ae17a1b8dd1
--- /dev/null
+++ b/jfreereport/java/libxml/makefile.mk
@@ -0,0 +1,77 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=jfreereport
+TARGET=libxml
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+.INCLUDE : $(PRJ)$/version.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+.IF "$(L10N_framework)"==""
+TARFILE_NAME=$(TARGET)-$(LIBXML_VERSION)
+TARFILE_IS_FLAT=true
+TARFILE_MD5=ace6ab49184e329db254e454a010f56d
+PATCH_FILES=$(PACKAGE_DIR)$/$(TARGET).patch
+CONVERTFILES=common_build.xml
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBXML_VERSION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) jar
+.ELSE
+BUILD_ACTION=$(ANT) -Dlib="../../../class" -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dbuild.id="10682" -Dproject.revision="$(LIBXML_VERSION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) jar
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+.ENDIF
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.IF "$(L10N_framework)"==""
+.IF "$(SOLAR_JAVA)" != ""
+.INCLUDE : tg_ext.mk
+
+ALLTAR : $(CLASSDIR)$/$(TARGET)-$(LIBXML_VERSION).jar
+
+$(PACKAGE_DIR)$/$(TARGET).patch :
+ @-$(MKDIRHIER) $(PACKAGE_DIR)$(fake_root_dir)
+ ( $(TYPE:s/+//) $(PRJ)$/patches$/common_build.patch | $(SED) 's/libloader-1.1.3/$(TARGET)-$(LIBXML_VERSION)/g' > $(PACKAGE_DIR)$/$(TARGET).patch )
+ $(COMMAND_ECHO)$(TOUCH) $(PACKAGE_DIR)$/so_converted_$(TARGET).dummy
+
+$(CLASSDIR)$/$(TARGET)-$(LIBXML_VERSION).jar : $(PACKAGE_DIR)$/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)$/$(TARFILE_ROOTDIR)$/dist$/$(TARGET)-$(LIBXML_VERSION).jar $(CLASSDIR)$/$(TARGET)-$(LIBXML_VERSION).jar
+
+.ENDIF
+.ENDIF
diff --git a/jfreereport/java/sac/makefile.mk b/jfreereport/java/sac/makefile.mk
new file mode 100644
index 000000000000..899fc258b422
--- /dev/null
+++ b/jfreereport/java/sac/makefile.mk
@@ -0,0 +1,83 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=jfreereport
+TARGET=sac-1.3
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(L10N_framework)"==""
+
+# override buildfile
+ANT_BUILDFILE=build.xml
+
+.INCLUDE : antsettings.mk
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=sacjava-1.3
+TARFILE_MD5=39bb3fcea1514f1369fcfc87542390fd
+
+TARFILE_ROOTDIR=$(TARGET)
+
+PATCH_FILES=$(PRJ)$/patches$/sac.patch
+
+ADDITIONAL_FILES=build.xml
+
+# CONVERTFILES=build.xml
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dproject.revision="$(VERSION)" -Dbuild.compiler=gcj -f $(ANT_BUILDFILE) all
+.ELSE
+BUILD_ACTION=$(ANT) -Dbuild.label="build-$(RSCREVISION)" -Dantcontrib.available="true" -Dproject.revision="$(VERSION)" -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) -f $(ANT_BUILDFILE) all
+.ENDIF
+
+.ENDIF # $(SOLAR_JAVA)!= ""
+.ENDIF # L10N_framework
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.IF "$(L10N_framework)"==""
+.IF "$(SOLAR_JAVA)" != ""
+.INCLUDE : tg_ext.mk
+
+ALLTAR : $(CLASSDIR)$/sac.jar
+
+$(CLASSDIR)$/sac.jar : $(PACKAGE_DIR)$/$(INSTALL_FLAG_FILE)
+ $(COPY) $(PACKAGE_DIR)$/$(TARFILE_ROOTDIR)$/build$/lib$/sac.jar $(CLASSDIR)$/sac.jar
+.ENDIF
+.ENDIF # L10N_framework
+
diff --git a/jfreereport/nbprojects/flute/nbproject/project.xml b/jfreereport/nbprojects/flute/nbproject/project.xml
new file mode 100644
index 000000000000..4280b91022ab
--- /dev/null
+++ b/jfreereport/nbprojects/flute/nbproject/project.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+ <!-- Do not use Project Properties customizer when editing this file manually. -->
+ <name>flute-13a</name>
+ <properties>
+ <property name="project.dir">../../wntmsci10/misc/build/flute</property>
+ <property name="ant.script">${project.dir}/ant/build.xml</property>
+ </properties>
+ <folders>
+ <source-folder>
+ <label>flute</label>
+ <location>${project.dir}</location>
+ </source-folder>
+ </folders>
+ <ide-actions>
+ <action name="build">
+ <script>${ant.script}</script>
+ <target>all</target>
+ </action>
+ <action name="javadoc">
+ <script>${ant.script}</script>
+ <target>javadoc</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ <source-file>
+ <location>${ant.script}</location>
+ </source-file>
+ </items>
+ <context-menu>
+ <ide-action name="build"/>
+ <ide-action name="javadoc"/>
+ </context-menu>
+ </view>
+ </general-data>
+ <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1"/>
+ </configuration>
+</project>
diff --git a/jfreereport/nbprojects/jcommon-serializer/nbproject/project.xml b/jfreereport/nbprojects/jcommon-serializer/nbproject/project.xml
new file mode 100644
index 000000000000..f7a14ae8712f
--- /dev/null
+++ b/jfreereport/nbprojects/jcommon-serializer/nbproject/project.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+ <!-- Do not use Project Properties customizer when editing this file manually. -->
+ <name>jcommon-serializer</name>
+ <properties>
+ <property name="project.dir">../../wntmsci10/misc/build/jcommon-serializer</property>
+ <property name="ant.script">${project.dir}/ant/build.xml</property>
+ </properties>
+ <folders>
+ <source-folder>
+ <label>jcommon-serializer</label>
+ <location>${project.dir}</location>
+ </source-folder>
+ </folders>
+ <ide-actions>
+ <action name="build">
+ <script>${ant.script}</script>
+ <target>all</target>
+ </action>
+ <action name="javadoc">
+ <script>${ant.script}</script>
+ <target>javadoc</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ <source-file>
+ <location>${ant.script}</location>
+ </source-file>
+ </items>
+ <context-menu>
+ <ide-action name="build"/>
+ <ide-action name="javadoc"/>
+ </context-menu>
+ </view>
+ </general-data>
+ <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1"/>
+ </configuration>
+</project>
diff --git a/jfreereport/nbprojects/jfreereport/nbproject/project.xml b/jfreereport/nbprojects/jfreereport/nbproject/project.xml
new file mode 100644
index 000000000000..8f6074cfb8d8
--- /dev/null
+++ b/jfreereport/nbprojects/jfreereport/nbproject/project.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+ <!-- Do not use Project Properties customizer when editing this file manually. -->
+ <name>jfreereport</name>
+ <properties>
+ <property name="project.dir">../../wntmsci10/misc/build/jfreereport</property>
+ <property name="ant.script">${project.dir}/ant/build.xml</property>
+ </properties>
+ <folders>
+ <source-folder>
+ <label>jfreereport</label>
+ <location>${project.dir}</location>
+ </source-folder>
+ </folders>
+ <ide-actions>
+ <action name="build">
+ <script>${ant.script}</script>
+ <target>all</target>
+ </action>
+ <action name="javadoc">
+ <script>${ant.script}</script>
+ <target>javadoc</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ <source-file>
+ <location>${ant.script}</location>
+ </source-file>
+ </items>
+ <context-menu>
+ <ide-action name="build"/>
+ <ide-action name="javadoc"/>
+ </context-menu>
+ </view>
+ </general-data>
+ <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1"/>
+ </configuration>
+</project>
diff --git a/jfreereport/nbprojects/libfonts/nbproject/project.xml b/jfreereport/nbprojects/libfonts/nbproject/project.xml
new file mode 100644
index 000000000000..d84bfb7f832b
--- /dev/null
+++ b/jfreereport/nbprojects/libfonts/nbproject/project.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+ <!-- Do not use Project Properties customizer when editing this file manually. -->
+ <name>libfonts</name>
+ <properties>
+ <property name="project.dir">../../wntmsci10/misc/build/libfonts</property>
+ <property name="ant.script">${project.dir}/ant/build.xml</property>
+ </properties>
+ <folders>
+ <source-folder>
+ <label>libfonts</label>
+ <location>${project.dir}</location>
+ </source-folder>
+ </folders>
+ <ide-actions>
+ <action name="build">
+ <script>${ant.script}</script>
+ <target>all</target>
+ </action>
+ <action name="javadoc">
+ <script>${ant.script}</script>
+ <target>javadoc</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ <source-file>
+ <location>${ant.script}</location>
+ </source-file>
+ </items>
+ <context-menu>
+ <ide-action name="build"/>
+ <ide-action name="javadoc"/>
+ </context-menu>
+ </view>
+ </general-data>
+ <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1"/>
+ </configuration>
+</project>
diff --git a/jfreereport/nbprojects/libformula/nbproject/project.xml b/jfreereport/nbprojects/libformula/nbproject/project.xml
new file mode 100644
index 000000000000..e056200ee16e
--- /dev/null
+++ b/jfreereport/nbprojects/libformula/nbproject/project.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+ <!-- Do not use Project Properties customizer when editing this file manually. -->
+ <name>libformula</name>
+ <properties>
+ <property name="project.dir">../../wntmsci10/misc/build/libformula</property>
+ <property name="ant.script">${project.dir}/ant/build.xml</property>
+ </properties>
+ <folders>
+ <source-folder>
+ <label>libformula</label>
+ <location>${project.dir}</location>
+ </source-folder>
+ </folders>
+ <ide-actions>
+ <action name="build">
+ <script>${ant.script}</script>
+ <target>all</target>
+ </action>
+ <action name="javadoc">
+ <script>${ant.script}</script>
+ <target>javadoc</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ <source-file>
+ <location>${ant.script}</location>
+ </source-file>
+ </items>
+ <context-menu>
+ <ide-action name="build"/>
+ <ide-action name="javadoc"/>
+ </context-menu>
+ </view>
+ </general-data>
+ <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1"/>
+ </configuration>
+</project>
diff --git a/jfreereport/nbprojects/liblayout/nbproject/project.xml b/jfreereport/nbprojects/liblayout/nbproject/project.xml
new file mode 100644
index 000000000000..63ad9ef3f420
--- /dev/null
+++ b/jfreereport/nbprojects/liblayout/nbproject/project.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+ <!-- Do not use Project Properties customizer when editing this file manually. -->
+ <name>liblayout</name>
+ <properties>
+ <property name="project.dir">../../wntmsci10/misc/build/liblayout</property>
+ <property name="ant.script">${project.dir}/ant/build.xml</property>
+ </properties>
+ <folders>
+ <source-folder>
+ <label>liblayout</label>
+ <location>${project.dir}</location>
+ </source-folder>
+ </folders>
+ <ide-actions>
+ <action name="build">
+ <script>${ant.script}</script>
+ <target>all</target>
+ </action>
+ <action name="javadoc">
+ <script>${ant.script}</script>
+ <target>javadoc</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ <source-file>
+ <location>${ant.script}</location>
+ </source-file>
+ </items>
+ <context-menu>
+ <ide-action name="build"/>
+ <ide-action name="javadoc"/>
+ </context-menu>
+ </view>
+ </general-data>
+ <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1"/>
+ </configuration>
+</project>
diff --git a/jfreereport/nbprojects/libloader/nbproject/project.xml b/jfreereport/nbprojects/libloader/nbproject/project.xml
new file mode 100644
index 000000000000..6b06d5686759
--- /dev/null
+++ b/jfreereport/nbprojects/libloader/nbproject/project.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+ <!-- Do not use Project Properties customizer when editing this file manually. -->
+ <name>libloader</name>
+ <properties>
+ <property name="project.dir">../../wntmsci10/misc/build/libloader</property>
+ <property name="ant.script">${project.dir}/ant/build.xml</property>
+ </properties>
+ <folders>
+ <source-folder>
+ <label>libloader</label>
+ <location>${project.dir}</location>
+ </source-folder>
+ </folders>
+ <ide-actions>
+ <action name="build">
+ <script>${ant.script}</script>
+ <target>all</target>
+ </action>
+ <action name="javadoc">
+ <script>${ant.script}</script>
+ <target>javadoc</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ <source-file>
+ <location>${ant.script}</location>
+ </source-file>
+ </items>
+ <context-menu>
+ <ide-action name="build"/>
+ <ide-action name="javadoc"/>
+ </context-menu>
+ </view>
+ </general-data>
+ <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1"/>
+ </configuration>
+</project>
diff --git a/jfreereport/nbprojects/librepository/nbproject/project.xml b/jfreereport/nbprojects/librepository/nbproject/project.xml
new file mode 100644
index 000000000000..c1b92593de3f
--- /dev/null
+++ b/jfreereport/nbprojects/librepository/nbproject/project.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+ <!-- Do not use Project Properties customizer when editing this file manually. -->
+ <name>librepository</name>
+ <properties>
+ <property name="project.dir">../../wntmsci10/misc/build/librepository</property>
+ <property name="ant.script">${project.dir}/ant/build.xml</property>
+ </properties>
+ <folders>
+ <source-folder>
+ <label>librepository</label>
+ <location>${project.dir}</location>
+ </source-folder>
+ </folders>
+ <ide-actions>
+ <action name="build">
+ <script>${ant.script}</script>
+ <target>all</target>
+ </action>
+ <action name="javadoc">
+ <script>${ant.script}</script>
+ <target>javadoc</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ <source-file>
+ <location>${ant.script}</location>
+ </source-file>
+ </items>
+ <context-menu>
+ <ide-action name="build"/>
+ <ide-action name="javadoc"/>
+ </context-menu>
+ </view>
+ </general-data>
+ <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1"/>
+ </configuration>
+</project>
diff --git a/jfreereport/nbprojects/libxml/nbproject/project.xml b/jfreereport/nbprojects/libxml/nbproject/project.xml
new file mode 100644
index 000000000000..6b966c904cd3
--- /dev/null
+++ b/jfreereport/nbprojects/libxml/nbproject/project.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.ant.freeform</type>
+ <configuration>
+ <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
+ <!-- Do not use Project Properties customizer when editing this file manually. -->
+ <name>libxml</name>
+ <properties>
+ <property name="project.dir">../../wntmsci10/misc/build/libxml</property>
+ <property name="ant.script">${project.dir}/ant/build.xml</property>
+ </properties>
+ <folders>
+ <source-folder>
+ <label>libxml</label>
+ <location>${project.dir}</location>
+ </source-folder>
+ </folders>
+ <ide-actions>
+ <action name="build">
+ <script>${ant.script}</script>
+ <target>all</target>
+ </action>
+ <action name="javadoc">
+ <script>${ant.script}</script>
+ <target>javadoc</target>
+ </action>
+ </ide-actions>
+ <view>
+ <items>
+ <source-file>
+ <location>${ant.script}</location>
+ </source-file>
+ </items>
+ <context-menu>
+ <ide-action name="build"/>
+ <ide-action name="javadoc"/>
+ </context-menu>
+ </view>
+ </general-data>
+ <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1"/>
+ </configuration>
+</project>
diff --git a/jfreereport/patches/common_build.patch b/jfreereport/patches/common_build.patch
new file mode 100755
index 000000000000..2bc54595cf17
--- /dev/null
+++ b/jfreereport/patches/common_build.patch
@@ -0,0 +1,102 @@
+--- misc/libloader-1.1.3/common_build.xml 2009-11-16 10:25:34.000000000 +0100
++++ misc/build/libloader-1.1.3/common_build.xml 2009-12-04 10:22:24.277647200 +0100
+@@ -261,7 +261,7 @@ TYPICAL TARGET SEQUENCE
+ <property name="project.revision" value="${Implementation-Version}" description="Sets the version number of the project based on the Implementation-Version found in the manifest file (if one is supplied and nothing is specified in the build.properties)" />
+ <fail message="A project revision number has not been determined!">
+ <condition>
+- <matches string="${project.revision}" pattern="\$\{.*\}" />
++ <contains string="${project.revision}" substring="\$\{" />
+ </condition>
+ </fail>
+
+@@ -270,7 +270,7 @@ TYPICAL TARGET SEQUENCE
+ <property name="impl.title" value="${Implementation-Title}" description="Sets the title of the project based on the Implementation-Title found in the manifest file (if one is supplied and nothing is specified in the build.properties)" />
+ <fail message="A project title has not been determined!">
+ <condition>
+- <matches string="${impl.title}" pattern="\$\{.*\}" />
++ <contains string="${impl.title}" substring="\$\{" />
+ </condition>
+ </fail>
+
+@@ -497,7 +497,7 @@
+ Sets a property build.id to the either "development" or the svn revision
+ if in release mode
+ ====================================================================-->
+- <target name="set-build.id" unless="build.id" depends="install-antcontrib">
++ <target name="set-build.id" unless="build.id" >
+ <if>
+ <istrue value="${release}" />
+ <then>
+@@ -1061,6 +1061,11 @@
+ Performs the actual compile
+ ====================================================================-->
+ <target name="compile.compile" depends="init">
++ <copy todir="${classes.dir}">
++ <fileset dir="source">
++ <include name="**/*.properties"/>
++ </fileset>
++ </copy>
+ <javac destdir="${classes.dir}"
+ debug="${javac.debug}"
+ deprecation="${javac.deprecation}"
+@@ -1082,27 +1087,32 @@
+ duplicate copying of resources from src tree (handled by compile.src_copy
+ if jar.include.source is set.
+ ====================================================================-->
+- <target name="compile.res_copy" depends="install-antcontrib">
+- <if>
+- <available file="${res.dir}" />
+- <then>
+- <copy todir="${classes.dir}">
+- <fileset dir="${res.dir}" />
+- </copy>
+- </then>
+- </if>
++ <target name="compile.res_copy" >
++ <condition property="copy.res.available">
++ <available file="$(res.dir)" type="dir" />
++ </condition>
++ <antcall target="copy.res" />
+
+- <if>
+- <not>
+- <isset property="jar.include.source" />
+- </not>
+- <then>
+- <copy todir="${classes.dir}" flatten="false">
+- <fileset dir="${src.dir}" excludes="**/*.java" />
+- </copy>
+- </then>
+- </if>
+- </target>
++ <condition property="copy.res.class.available">
++ <not>
++ <isset property="jar.include.source" />
++ </not>
++ </condition>
++ <antcall target="copy.res.class" />
++ </target>
++
++ <target name="copy.res" if="copy.res.available" >
++ <copy todir="${classes.dir}">
++ <fileset dir="${res.dir}"/>
++ </copy>
++ </target>
++
++ <target name="copy.res.class" if="copy.res.class.available" >
++ <uptodate targetfile="${classes.dir}" property="s">
++ <srcfiles dir= "${src.dir}" excludes="**/*.java" />
++ <flattenmapper/>
++ </uptodate>
++ </target>
+
+
+ <!--=======================================================================
+@@ -1167,7 +1177,6 @@
+ <target name="generate.manifest" depends="init,set-build.id">
+ <delete file="${dist.manifest.file}" />
+ <touch file="${dist.manifest.file}" />
+- <copy file="${manifest.file}" tofile="${dist.manifest.file}" overwrite="true" failonerror="false" />
+
+ <manifest file="${dist.manifest.file}" mode="update">
+ <attribute name="Implementation-Title" value="${impl.title}" />
diff --git a/jfreereport/patches/flow-engine.patch b/jfreereport/patches/flow-engine.patch
new file mode 100644
index 000000000000..aef70cb7fef6
--- /dev/null
+++ b/jfreereport/patches/flow-engine.patch
@@ -0,0 +1,10 @@
+--- misc/flow-engine-0.9.4/build.xml (Revision 6728)
++++ misc/build/flow-engine-0.9.4/build.xml (Arbeitskopie)
+@@ -24,6 +24,6 @@
+ <!-- Setup the compile classpath -->
+ <path id="classpath">
+- <fileset dir="lib">
++ <fileset dir="${lib}">
+ <include name="*.jar" />
+ </fileset>
+ </path>
diff --git a/jfreereport/patches/libbase-1.1.6-deprecated.patch b/jfreereport/patches/libbase-1.1.6-deprecated.patch
new file mode 100644
index 000000000000..da28c30eb70e
--- /dev/null
+++ b/jfreereport/patches/libbase-1.1.6-deprecated.patch
@@ -0,0 +1,11 @@
+--- misc/libbase-1.1.6/source/org/pentaho/reporting/libraries/base/boot/ModuleInitializeException.java 2010-04-27 15:58:44.000000000 +0200
++++ misc/build/libbase-1.1.6/source/org/pentaho/reporting/libraries/base/boot/ModuleInitializeException.java 2011-06-13 01:28:14.000000000 +0200
+@@ -48,7 +48,7 @@
+ */
+ public ModuleInitializeException(final String s, final Exception e)
+ {
+- super(s, e);
++ super(s, (Throwable) e);
+ }
+
+ /**
diff --git a/jfreereport/patches/libfonts-1.1.6-deprecated.patch b/jfreereport/patches/libfonts-1.1.6-deprecated.patch
new file mode 100644
index 000000000000..eb2ab8c76c10
--- /dev/null
+++ b/jfreereport/patches/libfonts-1.1.6-deprecated.patch
@@ -0,0 +1,11 @@
+--- misc/libfonts-1.1.6/source/org/pentaho/reporting/libraries/fonts/FontException.java 2010-04-27 16:09:00.000000000 +0200
++++ misc/build/libfonts-1.1.6/source/org/pentaho/reporting/libraries/fonts/FontException.java 2011-06-13 02:04:51.000000000 +0200
+@@ -39,7 +39,7 @@
+ */
+ public FontException(final String message, final Exception ex)
+ {
+- super(message, ex);
++ super(message, (Throwable) ex);
+ }
+
+ /**
diff --git a/jfreereport/patches/liblayout.patch b/jfreereport/patches/liblayout.patch
new file mode 100644
index 000000000000..4b1c23100987
--- /dev/null
+++ b/jfreereport/patches/liblayout.patch
@@ -0,0 +1,10 @@
+--- misc/liblayout-0.2.10/build.xml (Revision 6728)
++++ misc/build/liblayout-0.2.10/build.xml (Arbeitskopie)
+@@ -24,6 +24,6 @@
+ <!-- Setup the compile classpath -->
+ <path id="classpath">
+- <fileset dir="lib">
++ <fileset dir="${lib}">
+ <include name="*.jar" />
+ </fileset>
+ </path>
diff --git a/jfreereport/patches/libloader-1.1.6-deprecated.patch b/jfreereport/patches/libloader-1.1.6-deprecated.patch
new file mode 100644
index 000000000000..c098906fcf70
--- /dev/null
+++ b/jfreereport/patches/libloader-1.1.6-deprecated.patch
@@ -0,0 +1,11 @@
+--- misc/libloader-1.1.6/source/org/pentaho/reporting/libraries/resourceloader/ResourceException.java 2010-04-27 16:07:00.000000000 +0200
++++ misc/build/libloader-1.1.6/source/org/pentaho/reporting/libraries/resourceloader/ResourceException.java 2011-06-13 02:00:46.000000000 +0200
+@@ -42,7 +42,7 @@
+ */
+ public ResourceException(final String message, final Exception ex)
+ {
+- super(message, ex);
++ super(message, (Throwable) ex);
+ }
+
+ /**
diff --git a/jfreereport/patches/librepository-1.1.6-deprecated.patch b/jfreereport/patches/librepository-1.1.6-deprecated.patch
new file mode 100644
index 000000000000..a266efc4bb79
--- /dev/null
+++ b/jfreereport/patches/librepository-1.1.6-deprecated.patch
@@ -0,0 +1,11 @@
+--- misc/librepository-1.1.6/source/org/pentaho/reporting/libraries/repository/ContentIOException.java 2010-04-27 16:04:50.000000000 +0200
++++ misc/build/librepository-1.1.6/source/org/pentaho/reporting/libraries/repository/ContentIOException.java 2011-06-13 01:44:35.000000000 +0200
+@@ -43,7 +43,7 @@
+ */
+ public ContentIOException(final String message, final Exception ex)
+ {
+- super(message, ex);
++ super(message, (Throwable) ex);
+ }
+
+ /**
diff --git a/jfreereport/patches/sac.patch b/jfreereport/patches/sac.patch
new file mode 100644
index 000000000000..77db8511acbe
--- /dev/null
+++ b/jfreereport/patches/sac.patch
@@ -0,0 +1,73 @@
+*** misc/sac-1.3/build.xml Thu Oct 18 09:22:24 2007
+--- misc/build/sac-1.3/build.xml Thu Oct 18 08:53:59 2007
+***************
+*** 1 ****
+! dummy
+--- 1,66 ----
+! <!-- simple generic build file -->
+!
+! <project name="sac" default="all" basedir=".">
+!
+! <!-- Properties -->
+!
+! <property name="name" value="sac"/>
+! <property name="src" value="src"/>
+! <property name="build" value="build"/>
+! <property name="build.classes" value="${build}/classes"/>
+! <property name="build.doc" value="${build}/api"/>
+! <property name="build.lib" value="${build}/lib"/>
+! <property name="packagenames" value="org.w3c.css.sac.*"/>
+!
+! <!-- Targets -->
+!
+! <!-- Prepare build directories -->
+! <target name="prepare">
+! <mkdir dir="${src}"/>
+! <mkdir dir="${build}"/>
+! <mkdir dir="${build.classes}"/>
+! <mkdir dir="${build.lib}"/>
+! <mkdir dir="${build.doc}"/>
+! <copy todir="${src}/org">
+! <fileset dir="org"/>
+! </copy>
+! </target>
+!
+! <!-- Kill all the created directories -->
+! <target name="clean">
+! <delete dir="${build}"/>
+! <delete dir="${src}"/>
+! </target>
+!
+! <!-- Build classes -->
+! <target name="classes" depends="prepare">
+! <javac srcdir="${src}" destdir="${build.classes}" debug="off" optimize="on"/>
+! <copy todir="${build.classes}">
+! <fileset dir="${src}">
+! <include name="**/*.properties"/>
+! </fileset>
+! </copy>
+! </target>
+!
+! <!-- Build jar archives -->
+! <target name="jar" depends="classes">
+! <jar jarfile="${build.lib}/${name}.jar" basedir="${build.classes}"/>
+! </target>
+!
+! <!-- Build the full JavaDocs -->
+! <target name="javadoc" depends="prepare">
+! <javadoc sourcepath="${src}"
+! destdir="${build.doc}"
+! doctitle="${name} JavaDoc"
+! windowtitle="${name} JavaDoc"
+! package="true"
+! author="true"
+! version="true"
+! packagenames="${packagenames}"
+! />
+! </target>
+!
+! <!-- Build everything -->
+! <target name="all" depends="jar,javadoc"/>
+!
+! </project>
+\ No newline at end of file
diff --git a/jfreereport/prj/build.lst b/jfreereport/prj/build.lst
new file mode 100644
index 000000000000..62cdd738c3b6
--- /dev/null
+++ b/jfreereport/prj/build.lst
@@ -0,0 +1,13 @@
+jf jfreereport : solenv APACHE_COMMONS:apache-commons NULL
+jf jfreereport usr1 - all jf_mkout NULL
+jf jfreereport\java\sac nmake - all jf_sac NULL
+jf jfreereport\java\libbase nmake - all jf_libbase NULL
+jf jfreereport\java\flute nmake - all jf_flute jf_sac NULL
+jf jfreereport\java\libloader nmake - all jf_libloader jf_libbase NULL
+jf jfreereport\java\libxml nmake - all jf_libxml jf_libbase jf_libloader NULL
+jf jfreereport\java\libformula nmake - all jf_libformula jf_libbase NULL
+jf jfreereport\java\libfonts nmake - all jf_libfonts jf_libbase jf_libloader NULL
+jf jfreereport\java\librepository nmake - all jf_librepository jf_libbase NULL
+jf jfreereport\java\libserializer nmake - all jf_libserializer jf_libbase NULL
+jf jfreereport\java\jfreereport nmake - all jf_jfreereport jf_liblayout jf_libformula jf_libserializer NULL
+jf jfreereport\java\liblayout nmake - all jf_liblayout jf_libbase jf_flute jf_libfonts jf_libloader jf_librepository jf_libxml jf_sac NULL
diff --git a/jfreereport/prj/d.lst b/jfreereport/prj/d.lst
new file mode 100644
index 000000000000..094707925b36
--- /dev/null
+++ b/jfreereport/prj/d.lst
@@ -0,0 +1,2 @@
+..\%__SRC%\class\*.jar %_DEST%\bin\*.jar
+..\version.mk %_DEST%\bin\jfreereport_version.mk
diff --git a/jfreereport/version.mk b/jfreereport/version.mk
new file mode 100644
index 000000000000..cd9a8053bbd9
--- /dev/null
+++ b/jfreereport/version.mk
@@ -0,0 +1,12 @@
+FLUTE_VERSION=1.1.6
+LIBBASE_VERSION=1.1.6
+LIBFONTS_VERSION=1.1.6
+LIBFORMAT_VERSION=1.1.6
+LIBFORMULA_VERSION=1.1.7
+LIBLAYOUT_VERSION=0.2.10
+LIBLOADER_VERSION=1.1.6
+LIBREPOSITORY_VERSION=1.1.6
+LIBSERIALIZER_VERSION=1.1.6
+LIBXML_VERSION=1.1.7
+FLOW_ENGINE_VERSION=0.9.4
+
diff --git a/languagetool/JLanguageTool-1.0.0.patch b/languagetool/JLanguageTool-1.0.0.patch
new file mode 100644
index 000000000000..2b025c904394
--- /dev/null
+++ b/languagetool/JLanguageTool-1.0.0.patch
@@ -0,0 +1,137 @@
+--- misc/JLanguageTool-1.0.0/build.properties 2009-11-01 17:02:22.000000000 +0100
++++ misc/build/JLanguageTool-1.0.0/build.properties 2010-03-10 15:33:21.000000000 +0100
+@@ -54,10 +54,10 @@
+ ext.log4j.lib = ${ext.dir}/build/cobertura/log4j-1.2.9.jar
+ ext.jakarta-oro.lib = ${ext.dir}/build/cobertura/jakarta-oro-2.0.8.jar
+
+-ext.ooo.juh.lib = ${ext.ooo.dir}/juh.jar
+-ext.ooo.unoil.lib = ${ext.ooo.dir}/unoil.jar
+-ext.ooo.ridl.lib = ${ext.ooo.dir}/ridl.jar
+-ext.ooo.jurt.lib = ${ext.ooo.dir}/jurt.jar
++ext.ooo.juh.lib = ${solver.ooo.dir}/juh.jar
++ext.ooo.unoil.lib = ${solver.ooo.dir}/unoil.jar
++ext.ooo.ridl.lib = ${solver.ooo.dir}/ridl.jar
++ext.ooo.jurt.lib = ${solver.ooo.dir}/jurt.jar
+
+ build.meta-inf = ${build.dir}/META-INF
+ final.name = LanguageTool
+--- misc/JLanguageTool-1.0.0/build.xml 2009-10-26 14:28:30.000000000 +0100
++++ misc/build/JLanguageTool-1.0.0/build.xml 2010-03-10 15:33:21.000000000 +0100
+@@ -20,6 +20,8 @@
+ <pathelement location="${ext.logging.lib}" />
+ <pathelement location="${ext.segment.lib}" />
+ <!-- -->
++ <pathelement location="${ext.junit.lib}"/>
++ <!-- -->
+ <pathelement location="${ext.ooo.juh.lib}" />
+ <pathelement location="${ext.ooo.unoil.lib}" />
+ <pathelement location="${ext.ooo.ridl.lib}" />
+@@ -367,11 +369,11 @@
+ <!-- ================================================================== -->
+
+ <target name="dist" depends="ooo-internal" description="Builds one ZIP for both OpenOffice.org and stand-alone use">
+-<zip compress="yes" destfile="${dist.dir}/LanguageTool-${version}.oxt" basedir="${dist.dir}" includes="**" excludes="deploy.sh,undeploy.sh,turn.sh,jdic.jar,printlocales.jar,linux/**,windows/**,sunos/**,mac/**" />
++<zip compress="yes" destfile="${dist.dir}/LanguageTool.oxt" basedir="${dist.dir}" includes="**" excludes="deploy.sh,undeploy.sh,turn.sh,jdic.jar,printlocales.jar,linux/**,windows/**,sunos/**,mac/**" />
+ </target>
+
+ <target name="fast" depends="ooo-internal" description="like dist, but without ZIP compression (for development only)">
+-<zip compress="no" destfile="${dist.dir}/LanguageTool-${version}.oxt" basedir="${dist.dir}" includes="**" excludes="deploy.sh,undeploy.sh,turn.sh,jdic.jar,printlocales.jar,linux/**,windows/**,sunos/**,mac/**" />
++<zip compress="no" destfile="${dist.dir}/LanguageTool.oxt" basedir="${dist.dir}" includes="**" excludes="deploy.sh,undeploy.sh,turn.sh,jdic.jar,printlocales.jar,linux/**,windows/**,sunos/**,mac/**" />
+ </target>
+
+ <target name="ooo-internal" depends="clean,init,build,ooo-build">
+@@ -402,11 +404,6 @@
+ <copy file="${ext.segment.lib}" todir="${dist.dir}" />
+ <copy file="${ext.logging.lib}" todir="${dist.dir}" />
+ <copy file="${ext.junit.lib}" todir="${dist.dir}" />
+-<!-- JAXB jars for Java 1.5 -->
+-<copy file="${ext.jaxb-api.lib}" todir="${dist.dir}" />
+-<copy file="${ext.jaxb-impl.lib}" todir="${dist.dir}" />
+-<copy file="${ext.jsr.lib}" todir="${dist.dir}" />
+-<copy file="${ext.activation.lib}" todir="${dist.dir}" />
+
+
+ <copy todir="${dist.dir}/linux">
+@@ -472,7 +472,6 @@
+ <copy file="${resource.dir}/sv/swedish.info" todir="${dist.dir}/resource/sv" />
+ <copy file="${resource.dir}/sv/swedish.dict" todir="${dist.dir}/resource/sv" />
+ <copy file="${resource.dir}/sv/compounds.txt" todir="${dist.dir}/resource/sv" />
+-<copy file="${resource.dir}/uk/ukrainian.dict" todir="${dist.dir}/resource/uk" />
+ <copy file="${resource.dir}/ru/russian.dict" todir="${dist.dir}/resource/ru" />
+ <copy file="${resource.dir}/ru/russian.info" todir="${dist.dir}/resource/ru" />
+ <copy file="${resource.dir}/ru/russian_tags.txt" todir="${dist.dir}/resource/ru" />
+@@ -494,7 +493,6 @@
+ <copy file="${resource.dir}/sk/slovak_synth.dict" todir="${dist.dir}/resource/sk" />
+ <copy file="${resource.dir}/sk/slovak_synth.info" todir="${dist.dir}/resource/sk" />
+ <copy file="${resource.dir}/sk/slovak_tags.txt" todir="${dist.dir}/resource/sk" />
+-<copy file="${resource.dir}/xx/dummy.dict" tofile="${dist.dir}/resource/cs/czech.dict" />
+
+ <!-- prepare properties file automatically -->
+ <javac encoding="${encoding}" srcdir="${src.dir}/dev" includes="de/danielnaber/languagetool/dev/PrintLocales.java" destdir="${build.classes}" target="${target}" debug="${debug}">
+--- misc/JLanguageTool-1.0.0/src/java/de/danielnaber/languagetool/gui/Configuration.java 2009-01-01 23:39:30.000000000 +0100
++++ misc/build/JLanguageTool-1.0.0/src/java/de/danielnaber/languagetool/gui/Configuration.java 2010-03-10 15:33:21.000000000 +0100
+@@ -23,6 +23,7 @@
+ import java.io.FileNotFoundException;
+ import java.io.FileOutputStream;
+ import java.io.IOException;
++import java.lang.ClassLoader;
+ import java.util.HashSet;
+ import java.util.Iterator;
+ import java.util.Properties;
+@@ -154,8 +155,19 @@
+ final String motherTongueStr = (String) props
+ .get(MOTHER_TONGUE_CONFIG_KEY);
+ if (motherTongueStr != null) {
++ // FIXME: hack to disable the functionality for JRE 1.5
++ // javax.xml.bind.JAXBException is part of JRE 1.6
++ boolean isJRE15 = false;
++ try {
++ ClassLoader cl = ClassLoader.getSystemClassLoader();
++ cl.loadClass("javax.xml.bind.JAXBException");
++ } catch (ClassNotFoundException e) {
++ isJRE15 = true;
++ }
++ if (!isJRE15) {
+ motherTongue = Language.getLanguageForShortName(motherTongueStr);
+ }
++ }
+ final String runServerString = (String) props.get(SERVER_RUN_CONFIG_KEY);
+ if (runServerString != null) {
+ runServer = runServerString.equals("true");
+--- misc/JLanguageTool-1.0.0/src/java/de/danielnaber/languagetool/openoffice/Main.java 2009-10-24 16:52:03.000000000 +0200
++++ misc/build/JLanguageTool-1.0.0/src/java/de/danielnaber/languagetool/openoffice/Main.java 2010-03-10 15:33:21.000000000 +0100
+@@ -24,6 +24,7 @@
+ * @author Marcin Miłkowski
+ */
+ import java.io.File;
++import java.lang.ClassLoader;
+ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.Comparator;
+@@ -455,6 +456,14 @@
+ * @return An array of Locales supported by LT.
+ */
+ public final Locale[] getLocales() {
++ // FIXME: hack to disable the functionality for JRE 1.5
++ // javax.xml.bind.JAXBException is part of JRE 1.6
++ try {
++ ClassLoader cl = ClassLoader.getSystemClassLoader();
++ cl.loadClass("javax.xml.bind.JAXBException");
++ } catch (ClassNotFoundException e) {
++ return new Locale[0];
++ }
+ try {
+ int dims = 0;
+ for (final Language element : Language.LANGUAGES) {
+@@ -609,9 +618,9 @@
+ if (version != null
+ && (version.startsWith("1.0") || version.startsWith("1.1")
+ || version.startsWith("1.2") || version.startsWith("1.3") || version
+- .startsWith("1.4"))) {
++ .startsWith("1.4") || version.startsWith("1.5"))) {
+ final DialogThread dt = new DialogThread(
+- "Error: LanguageTool requires Java 1.5 or later. Current version: "
++ "Error: LanguageTool requires Java 1.6 or later. Current version: "
+ + version);
+ dt.start();
+ return false;
diff --git a/languagetool/makefile.mk b/languagetool/makefile.mk
new file mode 100644
index 000000000000..89505c280f76
--- /dev/null
+++ b/languagetool/makefile.mk
@@ -0,0 +1,63 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=.
+
+PRJNAME=languagetool
+TARGET=languagetool
+
+.IF "$(SOLAR_JAVA)"!=""
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=JLanguageTool-1.0.0
+TARFILE_MD5=47e1edaa44269bc537ae8cabebb0f638
+TARFILE_ROOTDIR=JLanguageTool-1.0.0
+PATCH_FILES=JLanguageTool-1.0.0.patch
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) -v -Dsolver.ooo.dir=$(SOLARVER)$/$(INPATH)$/bin -Dbuild.compiler=gcj dist
+.ELSE
+BUILD_ACTION=$(ANT) -v -Dsolver.ooo.dir=$(SOLARVER)$/$(INPATH)$/bin -Dant.build.javac.target=$(JAVA_TARGET_VER) dist
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.INCLUDE : tg_ext.mk
+
+.ELSE
+all:
+ @echo java disabled
+.ENDIF
diff --git a/languagetool/prj/build.lst b/languagetool/prj/build.lst
new file mode 100644
index 000000000000..98e25c36b3fc
--- /dev/null
+++ b/languagetool/prj/build.lst
@@ -0,0 +1,3 @@
+lt languagetool : javaunohelper jurt ridljar unoil NULL
+lt languagetool usr1 - all lt_mkout NULL
+lt languagatool nmake - all lt_languagetool NULL
diff --git a/languagetool/prj/d.lst b/languagetool/prj/d.lst
new file mode 100644
index 000000000000..cdbabc31f919
--- /dev/null
+++ b/languagetool/prj/d.lst
@@ -0,0 +1 @@
+..\%__SRC%\misc\build\JLanguageTool*\dist\LanguageTool.oxt %_DEST%\bin\
diff --git a/migrationanalysis/Read Me.odt b/migrationanalysis/Read Me.odt
new file mode 100644
index 000000000000..02c8db4b5eaa
--- /dev/null
+++ b/migrationanalysis/Read Me.odt
Binary files differ
diff --git a/migrationanalysis/no_localization b/migrationanalysis/no_localization
new file mode 100644
index 000000000000..502bb06d023a
--- /dev/null
+++ b/migrationanalysis/no_localization
@@ -0,0 +1 @@
+Touch me to prevent that the localisation process extracts strings here
diff --git a/migrationanalysis/prj/build.lst b/migrationanalysis/prj/build.lst
new file mode 100644
index 000000000000..54f0af004187
--- /dev/null
+++ b/migrationanalysis/prj/build.lst
@@ -0,0 +1,7 @@
+at migrationanalysis : soltools shell NULL
+at migrationanalysis\src\msokill nmake - w at_src NULL
+at migrationanalysis\src\driver_docs nmake - w at_src_driver NULL
+at migrationanalysis\src\resources nmake - w at_src_resources NULL
+at migrationanalysis\src\wizard nmake - w at_src_wizard NULL
+at migrationanalysis\util nmake - w at_util at_src.w at_src_driver.w at_src_resources.w at_src_wizard.w NULL
+
diff --git a/migrationanalysis/prj/d.lst b/migrationanalysis/prj/d.lst
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/migrationanalysis/prj/d.lst
@@ -0,0 +1 @@
+
diff --git a/migrationanalysis/src/driver_docs/CreateDriverDocs.wsf b/migrationanalysis/src/driver_docs/CreateDriverDocs.wsf
new file mode 100644
index 000000000000..a9442ff58cdb
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/CreateDriverDocs.wsf
@@ -0,0 +1,221 @@
+'/*************************************************************************
+' *
+' * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+' *
+' * Copyright 2000, 2010 Oracle and/or its affiliates.
+' *
+' * OpenOffice.org - a multi-platform office productivity suite
+' *
+' * This file is part of OpenOffice.org.
+' *
+' * OpenOffice.org is free software: you can redistribute it and/or modify
+' * it under the terms of the GNU Lesser General Public License version 3
+' * only, as published by the Free Software Foundation.
+' *
+' * OpenOffice.org is distributed in the hope that it will be useful,
+' * but WITHOUT ANY WARRANTY; without even the implied warranty of
+' * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' * GNU Lesser General Public License version 3 for more details
+' * (a copy is included in the LICENSE file that accompanied this code).
+' *
+' * You should have received a copy of the GNU Lesser General Public License
+' * version 3 along with OpenOffice.org. If not, see
+' * http://www.openoffice.org/license.html
+' * for a copy of the LGPLv3 License.
+' *
+' ************************************************************************/
+'### Build Support Module for running commands to export and import
+'### modules from Word, Excel and PowerPoint Document Analysis driver documents
+
+
+<job id="DocAnalysisBuildCmd" error="true" debug="true">
+ <script language="VBScript" src="DocAnalysisRunMacro.vbs"/>
+ <script language="VBScript">
+
+Const CTITLE = "Document Analysis Command"
+
+Const CWORD_DRIVER = "_OOoDocAnalysisWordDriver.doc"
+Const CEXCEL_DRIVER = "_OOoDocAnalysisExcelDriver.xls"
+Const CPP_DRIVER = "_OOoDocAnalysisPPTDriver.ppt"
+Const CStub = "Stripped"
+
+Const CUTIL_APPNAME_WORD = "Word"
+Const CUTIL_APPNAME_EXCEL = "Excel"
+Const CUTIL_APPNAME_POWERPOINT = "Powerpoint"
+
+Const CDIAG_STD_DELAY = 2
+
+Const CDEFAULT_SOURCE_DIR = ".\sources\"
+Const CDEFAULT_TARGET_DIR = "."
+
+Const CSOURCE_DIR_ARG = "X"
+Const CTARGET_DIR_ARG = "T"
+Const CUSAGE_ARG = "?"
+
+Const CSTR_PAW = "\PAW\"
+
+'######### Doc Analysis Build - Main Script Body #############
+Dim mArgsNamed, mArgsUnnamed
+Dim mSourceDir
+Dim mTargetDir
+
+On Error Resume Next
+
+'### Process Arguments ###
+Set mArgsNamed = WScript.Arguments.Named
+Set mArgsUnnamed = WScript.Arguments.Unnamed
+
+If mArgsNamed.Exists(CUSAGE_ARG) Then
+ Usage
+ FinalExit
+End If
+
+'# Source Dir
+if mArgsNamed.Exists(CSOURCE_DIR_ARG) Then
+ mSourceDir = mArgsNamed.Item(CSOURCE_DIR_ARG)
+Else
+ mSourceDir = CDEFAULT_SOURCE_DIR
+End If
+
+'# Target Dir
+if mArgsNamed.Exists(CTARGET_DIR_ARG ) Then
+ mTargetDir = mArgsNamed.Item(CTARGET_DIR_ARG )
+Else
+ mTargetDir = CDEFAULT_TARGET_DIR
+End If
+
+mSourceDir = daFso.GetAbsolutePathName(mSourceDir )
+mTargetDir = daFso.GetAbsolutePathName(mTargetDir )
+
+'# Check source and target dirs exist
+If Not daFso.FolderExists(mSourceDir) Then
+ DAErrMsg "Source directory does not exist: " & mSourceDir, CDA_ERR_STD_DELAY
+ FinalExit
+End If
+If Not daFso.FolderExists(mTargetDir) Then
+ DAErrMsg "Target directory does not exist: " & mTargetDir, CDA_ERR_STD_DELAY
+ FinalExit
+End If
+
+Set mArgsNamed = Nothing
+Set mArgsUnnamed = Nothing
+
+'#### then continue with PAW
+ImportAll mTargetDir & CSTR_PAW
+
+'# Cleanup
+FinalExit
+
+
+'######### End - Main Script Body #############
+
+
+'#### Doc Analysis Build - Support Functions ####
+
+Sub Usage()
+ DAdiagMsg "Build command line tool to create Document Analysis driver documents" & vbLf & vbLf &_
+ "DocAnalysisBuildCmd [/X:<sourceDir>] [/T:<targetDir>]" & vbLf & vbLf &_
+ "/X:<sourceDir> base <source> directory " & vbLf & _
+ " The <sourceDir> is the base dir under which all the " & vbLf & _
+ " _res.bas files are located to import from" & vbLf & vbLf & _
+ "/T:<targetDir> target directory " & vbLf & _
+ " <targetDir> is where the new Driver docs" & vbLf & _
+ " will be created", 30
+End Sub
+
+'######################
+Sub FinalExit()
+ DACleanUp
+ wscript.quit
+End Sub
+
+'######################
+Sub ImportAll( aTargetDir )
+
+ '#### Create automation servers ####
+ DAsetupWrdServer
+ DAsetupExcelServer
+ DAsetupPPServer
+
+ If Not daFso.FolderExists( aTargetDir ) Then
+ daFso.CreateFolder( aTargetDir )
+ End If
+
+ BackupDrivers aTargetDir
+
+ DAOpenWrdDriver mSourceDir & "\" & CSTUB & CWORD_DRIVER
+ DAOpenExcelDriver mSourceDir & "\" & CSTUB & CEXCEL_DRIVER
+ DAOpenPPDriver mSourceDir & "\" & CSTUB & CPP_DRIVER
+
+ DASetTitle CTITLE & " - Import"
+
+ ImportSelectedProjectFiles mSourceDir, CUTIL_APPNAME_WORD
+ ImportSelectedProjectFiles mSourceDir, CUTIL_APPNAME_EXCEL
+ ImportSelectedProjectFiles mSourceDir, CUTIL_APPNAME_POWERPOINT
+
+ DAsaveWrdDriver aTargetDir & "\" & CWORD_DRIVER
+ DAsaveExcelDriver aTargetDir & "\" & CEXCEL_DRIVER
+ DAsavePPDriver aTargetDir & "\" & CPP_DRIVER
+
+ DACloseApps
+End Sub
+
+'######################
+Sub BackupDrivers(importdir)
+ On Error Resume Next
+
+ Dim wrdPath
+ Dim xlsPath
+ Dim ppPath
+
+ wrdPath = daFso.GetAbsolutePathName(importdir & "\" & CWORD_DRIVER)
+ xlsPath= daFso.GetAbsolutePathName(importdir & "\" & CEXCEL_DRIVER)
+ ppPath= daFso.GetAbsolutePathName(importdir & "\" & CPP_DRIVER)
+
+ If daFso.FileExists( wrdPath ) Then daFso.CopyFile wrdPath, wrdPath & ".bak"
+ If daFso.FileExists( xlsPath ) Then daFso.CopyFile xlsPath, xlsPath & ".bak"
+ If daFso.FileExists( ppPath ) Then daFso.CopyFile ppPath, ppPath & ".bak"
+End Sub
+
+'######################
+Sub ImportSelectedProjectFiles(dir, app_name)
+ On Error Resume Next
+
+ Dim base
+ Dim lcApp_name
+ lcApp_name = LCase(app_name)
+
+ 'Driver Specific
+ base = dir & "\" & lcApp_name & "\"
+
+ DAImportFile base & "ApplicationSpecific.bas", "ApplicationSpecific", app_name
+ DAImportFile base & "MigrationAnalyser.cls", "MigrationAnalyser", app_name
+
+ DAImportFile base & "Preparation.bas", "Preparation", app_name
+
+ 'app resource
+ DAImportFile base & lcApp_name & "_res.bas", lcApp_name & "_res", app_name
+
+ 'Common
+ base = dir & "\"
+ DAImportFile base & "AnalysisDriver.bas", "AnalysisDriver", app_name
+ DAImportFile base & "CommonMigrationAnalyser.bas", "CommonMigrationAnalyser", app_name
+ DAImportFile base & "CollectedFiles.cls", "CollectedFiles", app_name
+ DAImportFile base & "DocumentAnalysis.cls", "DocumentAnalysis", app_name
+ DAImportFile base & "FileTypeAssociation.cls", "FileTypeAssociation", app_name
+ DAImportFile base & "IssueInfo.cls", "IssueInfo", app_name
+ DAImportFile base & "PrepareInfo.cls", "PrepareInfo", app_name
+ DAImportFile base & "StringDataManager.cls", "StringDataManager", app_name
+ DAImportFile base & "LocalizeResults.bas", "LocalizeResults", app_name
+
+ DAImportFile base & "CommonPreparation.bas", "CommonPreparation", app_name
+
+ 'common resource
+ DAImportFile base & "common_res.bas", "common_res", app_name
+ DAImportFile base & "results_res.bas", "results_res", app_name
+
+End Sub
+
+</script>
+</job>
+
diff --git a/migrationanalysis/src/driver_docs/DocAnalysisRunMacro.vbs b/migrationanalysis/src/driver_docs/DocAnalysisRunMacro.vbs
new file mode 100644
index 000000000000..4fa6b203ae4a
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/DocAnalysisRunMacro.vbs
@@ -0,0 +1,438 @@
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+'### Support Module for running macros in Word. Excel and Powerpoint
+'### using automation
+
+CONST CDA_TITLE = "Document Analysis Run Macro"
+CONST CDA_ANALYSIS_INI = "analysis.ini"
+Const CDA_ERR_STD_DELAY = 10
+Const CDA_APPNAME_WORD = "Word"
+Const CDA_APPNAME_EXCEL = "Excel"
+Const CDA_APPNAME_POWERPOINT = "Powerpoint"
+
+Dim daWrd
+Dim daDoc
+Dim daXl
+Dim daWb
+Dim daPP
+Dim daPres
+Dim daWshShell
+Dim daFso
+Dim daTitle
+
+daTitle = CDA_TITLE
+
+'# Setup Scripting objects
+set daFso = WScript.CreateObject("Scripting.FileSystemObject")
+set daWshShell = Wscript.CreateObject("Wscript.Shell")
+
+
+'##### Run Macro FUNCTIONS ######
+
+'######################
+Sub DASetTitle(newTitle)
+ daTitle = newTitle
+End Sub
+
+'######################
+Sub DAsetupWrdServer
+
+On Error Resume Next
+
+Set daWrd = wscript.CreateObject("Word.Application")
+If Err.Number <> 0 Then
+ DAErrMsg "Failed to create Word Automation server: " & vbLf & vbLf & "Error: " _
+ & CStr(Err.Number) & " " & Err.Description, CDA_ERR_STD_DELAY
+ FinalExit
+End If
+
+End Sub
+
+'######################
+Sub DAOpenWrdDriver(driver)
+Dim sWordDriverDocPath
+
+On Error Resume Next
+daWrd.Visible = False
+
+'# Open a driver doc
+sWordDriverDocPath = daFso.GetAbsolutePathName(driver)
+'DAdiagMsg "sWordDriverDocPath : " & sWordDriverDocPath , CDIAG_STD_DELAY
+
+If Not daFso.FileExists(sWordDriverDocPath) Then
+ DAErrMsg "Driver doc does not exist: " & sWordDriverDocPath, CDA_ERR_STD_DELAY
+ FinalExit
+End If
+
+Set daDoc = daWrd.Documents.Open(sWordDriverDocPath)
+If Err.Number <> 0 Then
+ DAErrMsg "Failed to open driver doc: " & vbLf & sWordDriverDocPath & vbLf & vbLf & "Error: " _
+ & CStr(Err.Number) & " " & Err.Description, CDA_ERR_STD_DELAY
+ FinalExit
+End If
+
+End Sub
+
+'######################
+Function DArunWrdDriver(driver, macro)
+
+On Error Resume Next
+'# Run macro
+DArunWrdDriver = True
+daWrd.Run ("AnalysisTool." & macro)
+If Err.Number <> 0 Then
+ DAErrMsg "Failed to run macro: " & macro & vbLf & vbLf & "Error: " _
+ & CStr(Err.Number) & " " & Err.Description, CDA_ERR_STD_DELAY
+ DArunWrdDriver = False
+End If
+
+End Function
+
+'######################
+Sub DAsaveWrdDriver(saveDriver)
+'DAdiagMsg "saveDriver : " & saveDriver , CDIAG_STD_DELAY
+'DAdiagMsg "Abs(saveDriver) : " & daFso.GetAbsolutePathName( saveDriver) , CDIAG_STD_DELAY
+ daDoc.SaveAs daFso.GetAbsolutePathName( saveDriver)
+End Sub
+
+'######################
+Sub DAsetupExcelServer
+
+On Error Resume Next
+
+Set daXl = wscript.CreateObject("Excel.Application")
+If Err.Number <> 0 Then
+ DAErrMsg "Failed to create Excel Automation server: " & vbLf & vbLf & "Error: " _
+ & CStr(Err.Number) & " " & Err.Description, CDA_ERR_STD_DELAY
+ FinalExit
+End If
+
+End Sub
+
+'######################
+Sub DAOpenExcelDriver(driver)
+ Dim sExcelDriverDocPath
+
+ On Error Resume Next
+ daXl.Visible = False
+
+ '# Open driver doc
+ sExcelDriverDocPath = daFso.GetAbsolutePathName(driver)
+ If Not daFso.FileExists(sExcelDriverDocPath) Then
+ DAErrMsg "Driver doc does not exist: " & sExcelDriverDocPath, CDA_ERR_STD_DELAY
+ FinalExit
+ End If
+
+ Set daWb = daXl.Workbooks.Open(sExcelDriverDocPath)
+ If Err.Number <> 0 Then
+ DAErrMsg "Failed to open driver doc: " & vbLf & sExcelDriverDocPath & vbLf & vbLf & "Error: " _
+ & CStr(Err.Number) & " " & Err.Description, CDA_ERR_STD_DELAY
+ FinalExit
+ End If
+
+End Sub
+
+'######################
+Function DArunExcelDriver(driver, macro)
+On Error Resume Next
+
+'# Run macro
+DArunExcelDriver = True
+daXl.Run ("AnalysisTool." & macro)
+If Err.Number <> 0 Then
+ DAErrMsg "Failed to run macro: " & macro & vbLf & vbLf & "Error: " _
+ & CStr(Err.Number) & " " & Err.Description, CDA_ERR_STD_DELAY
+ DArunExcelDriver = False
+End If
+
+End Function
+
+'######################
+Sub DAsaveExcelDriver(saveDriver)
+ '# Not overwritting - Excel hangs, need to remove file first
+ if daFso.FileExists(daFso.GetAbsolutePathName(saveDriver)) Then
+ daFso.DeleteFile(daFso.GetAbsolutePathName(saveDriver))
+ End If
+ daWb.SaveAs daFso.GetAbsolutePathName(saveDriver)
+End Sub
+
+'######################
+Sub DAsetupPPServer
+
+On Error Resume Next
+
+Set daPP = wscript.CreateObject("PowerPoint.Application")
+If Err.Number <> 0 Then
+ DAErrMsg "Failed to create PowerPoint Automation server: " & vbLf & vbLf & "Error: " _
+ & CStr(Err.Number) & " " & Err.Description, CDA_ERR_STD_DELAY
+ FinalExit
+End If
+
+End Sub
+
+'######################
+Sub DAOpenPPDriver(driver)
+Dim sPPDriverDocPath
+
+On Error Resume Next
+
+
+'# Open driver doc
+sPPDriverDocPath = daFso.GetAbsolutePathName(driver)
+If Not daFso.FileExists(sPPDriverDocPath ) Then
+ DAErrMsg "Driver doc does not exist: " & sPPDriverDocPath, CDA_ERR_STD_DELAY
+ FinalExit
+End If
+
+
+'## MS: KB Article 155073 ##
+'# PPT7: OLE Automation Error Using Open Method
+'# MUST show the PowerPoint application window at least once before calling the Application.Presentations.Open method
+daPP.Visible = True
+daPP.WindowState = 2 'Minimize PowerPoint
+
+daPP.Presentations.Open sPPDriverDocPath
+If Err.Number <> 0 Then
+ DAErrMsg "Failed to open driver doc: " & vbLf & sPPDriverDocPath & vbLf & vbLf & "Error: " _
+ & CStr(Err.Number) & " " & Err.Description, CDA_ERR_STD_DELAY
+ FinalExit
+End If
+
+set daPres = daPP.Presentations(1)
+
+End Sub
+
+'######################
+Function DArunPPDriver(driver, macro)
+
+On Error Resume Next
+'# Run macro
+DArunPPDriver = True
+daPP.Run (daFso.GetFileName(driver) & "!" & macro)
+If Err.Number <> 0 Then
+ DAErrMsg "Failed to run macro: " & macro & vbLf & vbLf & "Error: " _
+ & CStr(Err.Number) & " " & Err.Description, CDA_ERR_STD_DELAY
+ DArunPPDriver = False
+End If
+
+End Function
+
+'######################
+Sub DAsavePPDriver(saveDriver)
+ daPres.SaveAs daFso.GetAbsolutePathName(saveDriver)
+End Sub
+
+
+'######################
+
+Sub DACloseApps()
+ '# Quit apps
+ On Error Resume Next
+ If Not daWrd Is Nothing Then
+ daDoc.Close wdDoNotSaveChanges
+ daWrd.Quit
+ End If
+ If Not daXl Is Nothing Then
+ daWb.Close False
+ daXl.Quit
+ End If
+ If Not daPP Is Nothing Then
+ daPres.Close
+ daPP.Quit
+ End If
+
+ Set daDoc = Nothing
+ Set daWb = Nothing
+ Set daPres = Nothing
+
+ Set daWrd = Nothing
+ Set daXl = Nothing
+ Set daPP = Nothing
+End Sub
+
+'######################
+
+Sub DACleanUp()
+ '# Quit apps
+ On Error Resume Next
+
+ DACloseApps
+
+ Set daFso = Nothing
+ Set daWshShell = Nothing
+End Sub
+
+
+'######################
+Sub DAdiagMsg( msg, delay)
+ '# WSHShell.echo: Popup if run with Wscript.exe, command line output if run with Cscript.exe
+ WScript.Echo msg
+
+ 'WSHShell.popup msg, delay, daTitle, 64
+End Sub
+
+'######################
+Sub DAErrMsg( msg, delay)
+ daWshShell.Popup msg, delay, daTitle, 16
+
+ 'WScript.Echo msg
+End Sub
+
+'######################
+Sub DAVerifyAnalysisIni()
+ if daFso.FileExists(daFso.GetAbsolutePathName(".\" & CDA_ANALYSIS_INI)) Then Exit Sub
+
+ DAErrMsg CDA_ANALYSIS_INI & " does not exist. " & vbLf & vbLf & _
+ "You need to create it manually or use the DocAnalysisWizard to create one for you." & vbLf & _
+ "Once this is done you can rerun the Document Analysis command line.", CDA_ERR_STD_DELAY
+ FinalExit
+End Sub
+
+'######################
+Sub DAExportFile(fileName, projectFile, app_name)
+ On Error Resume Next
+
+ Dim myProject
+
+ '# Setup App Specifc VB Project
+ Set myProject = DAgetProject(fileName, projectFile, app_name)
+
+ Dim myComponent
+ Set myComponent = myProject.VBComponents(projectFile)
+ If Err.Number <> 0 Then
+ DAErrMsg "Missing Project File [" & projectFile & "] - Path:" & vbLf & vbLf & fileName, CERR_STD_DELAY
+ Set myComponent = Nothing
+ Set myProject = Nothing
+ FinalExit
+ End If
+
+ myProject.VBComponents(projectFile).Export fileName
+ If Err.Number <> 0 Then
+ DAErrMsg "Error exporting Project File [" & projectFile & "] - Path:" & vbLf & vbLf & fileName, CERR_STD_DELAY
+ Set myComponent = Nothing
+ Set myProject = Nothing
+ FinalExit
+ End If
+
+ Set myComponent = Nothing
+ Set myProject = Nothing
+
+End Sub
+
+'######################
+Sub DAImportFile(fileName, projectFile, app_name)
+ On Error Resume Next
+
+ Dim myProject
+
+ '# Setup App Specifc VB Project
+ Set myProject = DAgetProject(fileName, projectFile, app_name)
+
+ '# Check if module already exists raise error
+ Dim myComponent
+ Set myComponent = myProject.VBComponents(projectFile)
+ If Err.Number = 0 Then
+ DAErrMsg "Duplicate Project File [" & projectFile & "] - Path:" & vbLf & vbLf & fileName, CERR_STD_DELAY
+ Set myComponent = Nothing
+ Set myProject = Nothing
+ FinalExit
+ End If
+
+ '#If module not there need to clear out of index error
+ Err.Clear
+
+ If Not daFso.FileExists(fileName) Then
+ DAErrMsg "Missing File " & fileName, CERR_STD_DELAY
+ Set myComponent = Nothing
+ Set myProject = Nothing
+ FinalExit
+ End If
+
+ Call myProject.VBComponents.Import(fileName)
+
+ If Err.Number <> 0 Then
+ DAErrMsg "Error importing Project File [" & projectFile & "] - Path:" & vbLf & vbLf & fileName, CERR_STD_DELAY
+ Set myComponent = Nothing
+ Set myProject = Nothing
+ FinalExit
+ End If
+
+ Set myComponent = Nothing
+ Set myProject = Nothing
+End Sub
+
+'#################
+
+Sub DARemoveModule(fileName, projectFile, app_name)
+ On Error Resume Next
+
+ Dim myProject
+
+ '# Setup App Specifc VB Project
+ Set myProject = DAgetProject(fileName, projectFile, app_name)
+
+ '# Check if module already exists raise error
+ Dim myComponent
+ Set myComponent = myProject.VBComponents(projectFile)
+
+
+ myProject.VBComponents.Remove myComponent
+
+ If Err.Number <> 0 Then
+ DAErrMsg "Error removing Project File [" & projectFile & "] - Path:" & vbLf & vbLf & fileName, CERR_STD_DELAY
+ Set myComponent = Nothing
+ Set myProject = Nothing
+ FinalExit
+ End If
+
+ Set myComponent = Nothing
+ Set myProject = Nothing
+End Sub
+
+'######################
+Function DAgetProject(fileName, projectFile, app_name)
+ On Error Resume Next
+
+ If app_name = CDA_APPNAME_WORD Then
+ Set DAgetProject = daWrd.ActiveDocument.VBProject
+
+ ElseIf app_name = CDA_APPNAME_EXCEL Then
+ Set DAgetProject = daXl.ActiveWorkbook.VBProject
+
+ ElseIf app_name = CDA_APPNAME_POWERPOINT Then
+ Set DAgetProject = daPP.ActivePresentation.VBProject
+ End If
+
+ If Err.Number <> 0 Then
+ DAErrMsg "Cannot access VBProject for Project File [" & projectFile & "] - Path:" & vbLf & vbLf & fileName, _
+ CERR_STD_DELAY
+ Set DAgetProject = Nothing
+ FinalExit
+ End If
+
+End Function
+
diff --git a/migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisExcelDriver.xls b/migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisExcelDriver.xls
new file mode 100644
index 000000000000..a5a52adc1350
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisExcelDriver.xls
Binary files differ
diff --git a/migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisPPTDriver.ppt b/migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisPPTDriver.ppt
new file mode 100644
index 000000000000..e5f9de418b9a
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisPPTDriver.ppt
Binary files differ
diff --git a/migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisWordDriver.doc b/migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisWordDriver.doc
new file mode 100644
index 000000000000..501274bc5220
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/PAW/_OOoDocAnalysisWordDriver.doc
Binary files differ
diff --git a/migrationanalysis/src/driver_docs/allstrings.ulf b/migrationanalysis/src/driver_docs/allstrings.ulf
new file mode 100644
index 000000000000..0f36a93290ff
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/allstrings.ulf
@@ -0,0 +1,2371 @@
+[RID_STR_COMMON_PRODUCTNAME]
+en-US = "OpenOffice.org"
+
+[RID_STR_COMMON_PRODUCTVERSION]
+en-US = "3.0"
+
+[RID_STR_COMMON_NEXTPRODUCTVERSION]
+en-US = "3.1"
+
+[RID_STR_COMMON_OLE_CONTROL]
+en-US = "OLE Control"
+
+[RID_STR_COMMON_OLE_FIELD_LINK]
+en-US = "OLE Field Link"
+
+[RID_STR_COMMON_OLE_UNKNOWN]
+en-US = "Unknown Type"
+
+[RID_STR_COMMON_VB_COMPONENT_MODULE]
+en-US = "Module"
+
+[RID_STR_COMMON_VB_COMPONENT_STANDARD]
+en-US = "Standard Module"
+
+[RID_STR_COMMON_VB_COMPONENT_CLASS]
+en-US = "Class Module"
+
+[RID_STR_COMMON_VB_COMPONENT_USER_FORM]
+en-US = "User Form"
+
+[RID_STR_COMMON_VB_COMPONENT_DOCUMENT]
+en-US = "Document"
+
+[RID_STR_COMMON_VB_COMPONENT_ACTIVEX_DESIGNER]
+en-US = "ActiveX Designer"
+
+[RID_STR_COMMON_VB_COMPONENT_UNKNOWN]
+en-US = "Unknown"
+
+[RID_STR_COMMON_YES_OR_NO]
+en-US = "Yes or No"
+
+[RID_STR_COMMON_DATE]
+en-US = "Date"
+
+[RID_STR_COMMON_NUMBER]
+en-US = "Number"
+
+[RID_STR_COMMON_TEXT]
+en-US = "Text"
+
+[RID_STR_COMMON_UNKNOWN]
+en-US = "Unknown"
+
+[RID_STR_COMMON_DEC_TO_EXTERNAL_LIBRARY]
+en-US = "Declaration to external library"
+
+[RID_STR_COMMON_RESULTS_LOCATION_TYPE_DOCUMENT]
+en-US = "Document"
+
+[RID_STR_COMMON_RESULTS_LOCATION_TYPE_PAGE]
+en-US = "Page"
+
+[RID_STR_COMMON_RESULTS_LOCATION_TYPE_WORKBOOK]
+en-US = "WorkBook"
+
+[RID_STR_COMMON_RESULTS_LOCATION_TYPE_SHEET]
+en-US = "Sheet"
+
+[RID_STR_COMMON_RESULTS_LOCATION_TYPE_PRESENTATION]
+en-US = "Presentation"
+
+[RID_STR_COMMON_RESULTS_LOCATION_TYPE_SLIDE]
+en-US = "Slide"
+
+[RID_STR_COMMON_INVALID_PASSWORD]
+en-US = "Invalid Password"
+
+[RID_STR_COMMON_PASSWORD_SKIPDOC]
+en-US = "Skip Password Protected"
+
+[RID_STR_COMMON_NA]
+en-US = "na"
+
+[RID_STR_COMMON_ATTRIBUTE_BROKEN]
+en-US = "Broken!"
+
+[RID_STR_COMMON_ATTRIBUTE_BUILTIN]
+en-US = "BuiltIn"
+
+[RID_STR_COMMON_ATTRIBUTE_CHECK_DOCUMENT_REFERENCES]
+en-US = "Check document VB-IDE/Tools/References"
+
+[RID_STR_COMMON_ATTRIBUTE_CLASS_ME_COUNT]
+en-US = "Class refs to Me"
+
+[RID_STR_COMMON_ATTRIBUTE_COMPONENT]
+en-US = "Component"
+
+[RID_STR_COMMON_ATTRIBUTE_CONTROLS]
+en-US = "Controls"
+
+[RID_STR_COMMON_ATTRIBUTE_CUSTOM]
+en-US = "Custom"
+
+[RID_STR_COMMON_ATTRIBUTE_DESCRIPTION]
+en-US = "Description"
+
+[RID_STR_COMMON_ATTRIBUTE_GUID]
+en-US = "GUID"
+
+[RID_STR_COMMON_ATTRIBUTE_FILE]
+en-US = "File"
+
+[RID_STR_COMMON_ATTRIBUTE_PROPERTIES]
+en-US = "Properties"
+
+[RID_STR_COMMON_ATTRIBUTE_FURTHER_MACRO_ANALYSIS_NOT_POSSIBLE]
+en-US = "Further macro analysis not possible"
+
+[RID_STR_COMMON_ATTRIBUTE_INCLUDING]
+en-US = "including:"
+
+[RID_STR_COMMON_ATTRIBUTE_INTACT]
+en-US = "Intact"
+
+[RID_STR_COMMON_ATTRIBUTE_ISBROKEN]
+en-US = "IsBroken"
+
+[RID_STR_COMMON_ATTRIBUTE_MAJOR]
+en-US = "Major"
+
+[RID_STR_COMMON_ATTRIBUTE_MINOR]
+en-US = "Minor"
+
+[RID_STR_COMMON_ATTRIBUTE_MISSING]
+en-US = "MISSING"
+
+[RID_STR_COMMON_ATTRIBUTE_NAME]
+en-US = "Name"
+
+[RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES]
+en-US = "Non Portable External References"
+
+[RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES_COUNT]
+en-US = "External Reference Count"
+
+[RID_STR_COMMON_ATTRIBUTE_NUMBER_OF_LINES]
+en-US = "Number of Lines"
+
+[RID_STR_COMMON_ATTRIBUTE_SIGNATURE]
+en-US = "MD5 Hash"
+
+[RID_STR_COMMON_ATTRIBUTE_PASSWORD]
+en-US = "Password"
+
+[RID_STR_COMMON_ATTRIBUTE_PATH]
+en-US = "Path"
+
+[RID_STR_COMMON_ATTRIBUTE_PROCEDURES]
+en-US = "Procedures"
+
+[RID_STR_COMMON_ATTRIBUTE_PROJECT]
+en-US = "Project"
+
+[RID_STR_COMMON_ATTRIBUTE_TYPE]
+en-US = "Type"
+
+[RID_STR_COMMON_ATTRIBUTE_TYPELIB]
+en-US = "Type Library"
+
+[RID_STR_COMMON_ATTRIBUTE_UNABLE_TO_ACCESS_VBPROJECT]
+en-US = "Unable to access VBProject"
+
+[RID_STR_COMMON_ATTRIBUTE_UNKNOWN]
+en-US = "Unknown"
+
+[RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPE]
+en-US = "Control Types"
+
+[RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPES_COUNT]
+en-US = "Control Types Count"
+
+[RID_STR_COMMON_ATTRIBUTE_VALUE]
+en-US = "Value"
+
+[RID_STR_COMMON_ATTRIBUTE_VBPROJECT_PASSWORD]
+en-US = "VBProject Password set"
+
+[RID_STR_COMMON_ISSUE_INFORMATION]
+en-US = "Information"
+
+[RID_STR_COMMON_ISSUE_FORMAT]
+en-US = "Format"
+
+[RID_STR_COMMON_ISSUE_PORTABILITY]
+en-US = "Portability"
+
+[RID_STR_COMMON_ISSUE_VBA_MACROS]
+en-US = "VBA Macros"
+
+[RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES]
+en-US = "Content and Document Properties"
+
+[RID_STR_COMMON_NOTE_DOCUMENT_PROPERTIES_LOST]
+en-US = "this summary property is lost"
+
+[RID_STR_COMMON_SUBISSUE_PROPERTIES]
+en-US = "Properties"
+
+[RID_STR_COMMON_SUBISSUE_REFERENCES]
+en-US = "References"
+
+[RID_STR_COMMON_SUBISSUE_EXTERNAL_REFERENCES_IN_MACROS]
+en-US = "External References in Macro"
+
+[RID_STR_COMMON_SUBISSUE_INVALID_PASSWORD_ENTERED]
+en-US = "Invalid Password Entered"
+
+[RID_STR_COMMON_SUBISSUE_DOCUMENT_PARTS_PROTECTION]
+en-US = "Document Parts Protection"
+
+[RID_STR_COMMON_SUBISSUE_MACRO_PASSWORD_PROTECTION]
+en-US = "Password Protected"
+
+[RID_STR_COMMON_SUBISSUE_PASSWORDS_PROTECTION]
+en-US = "Password Protection"
+
+[RID_STR_COMMON_ATTRIBUTE_OBJECT_NAME]
+en-US = "Object Name"
+
+[RID_STR_COMMON_ATTRIBUTE_OBJECT_TYPE]
+en-US = "Object Type"
+
+[RID_STR_COMMON_ATTRIBUTE_SOURCE]
+en-US = "Source"
+
+[RID_STR_COMMON_NOTE_HF_PREPARABLE]
+en-US = "will add additional returns to the header/footer"
+
+[RID_STR_COMMON_PREPARATION_FOLDER]
+en-US = "prepared"
+
+[RID_STR_COMMON_SUBISSUE_DOCUMENT_CUSTOM_PROPERTY]
+en-US = "Document Custom Property"
+
+[RID_STR_COMMON_MACRO_CLASS_COMPLEX]
+en-US = "Complex"
+
+[RID_STR_COMMON_MACRO_CLASS_MEDIUM]
+en-US = "Medium"
+
+[RID_STR_COMMON_MACRO_CLASS_SIMPLE]
+en-US = "Simple"
+
+[RID_STR_COMMON_MACRO_CLASS_NONE]
+en-US = "No Macros"
+
+[RID_STR_COMMON_ISSUE_CLASS_COMPLEX]
+en-US = "Complex"
+
+[RID_STR_COMMON_ISSUE_CLASS_MINOR]
+en-US = "Minor"
+
+[RID_STR_COMMON_ISSUE_CLASS_NONE]
+en-US = "No Issues"
+
+[RID_STR_COMMON_OV_VERSION_STR]
+en-US = "Created by"
+
+[RID_STR_COMMON_OV_DOC_MOD_DATES_COMMENT_TITLE]
+en-US = "Which documents do you need to migrate?"
+
+[RID_STR_COMMON_OV_DOC_MOD_DATES_COMMENT_BODY]
+en-US = "<CR>The last modified date is an indicator of the importance of a document. It helps you decide which documents should just be archived to a read only format such as Adobe PDF and which actually need to be migrated to <PRODUCTNAME> where they can continue to be updated and modified."
+
+[RID_STR_COMMON_OV_LEGEND_TITLE]
+en-US = "Legend"
+
+[RID_STR_COMMON_OV_DOC_MOD_DATES_LEGEND_BODY]
+en-US = "< 3 months: Migrate to <PRODUCTNAME>.<CR>3 - 6 Months: Careful review to see if they should be archived or migrated to <PRODUCTNAME>.<CR>6 - 12 Months: Quick review, either archive or migrate to the read/write <PRODUCTNAME> XML file format.<CR>> 1 Year: Older than 1 year, archive to read-only format such as PDF"
+
+[RID_STR_COMMON_OV_DOC_MACRO_COMMENT_TITLE]
+en-US = "How many documents contain macros?"
+
+[RID_STR_COMMON_OV_DOC_MACRO_COMMENT_BODY]
+en-US = "<CR><PRODUCTNAME> includes <PRODUCTNAME> BASIC, a Basic dialect that is similar to Microsoft's Visual Basic for Application (VBA), but <PRODUCTNAME> uses a different sets of objects to access the underlying Office.<CR>This makes it necessary to migrate the VBA macros into the platform independent <PRODUCTNAME> BASIC. Your local <PRODUCTNAME> Migration partner can help you with these VBA macro migrations."
+
+[RID_STR_COMMON_OV_DOC_MACRO_LEGEND_BODY]
+en-US = "Complex: Macros using Forms, Controls and external references<CR>Medium: Macros with more than 50 lines of code<CR>Simple: Macros with less than 50 lines of code<CR>None: No macros in the document"
+
+[RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_DAW]
+en-US = "Analysis of document migration issues for documents modified within the last <TOPIC> months"
+
+[RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_PAW_NO_LIMIT]
+en-US = "High level analysis of document migration issues"
+
+[RID_STR_COMMON_OV_DOC_ANALYSIS_COMMENT_TITLE]
+en-US = "Which documents may have migration issues?"
+
+[RID_STR_COMMON_OV_DOC_ANALYSIS_COMMENT_BODY]
+en-US = "<CR>Some Microsoft Office documents may not migrate perfectly into <PRODUCTNAME>. These issues are outlined in the <PRODUCTNAME> Migration Guide. <PRODUCTNAME> engineering is working continously to resolve these issues by improving the Microsoft Office filters.<CR>The Document Analysis Wizard has been provided by <PRODUCTNAME> engineering to detect the most important of these migration issues in any Microsoft Office document you wish to specify. These findings are summarised below [refer to the 'List of documents' sheet to see the list of all analyzed documents]."
+
+[RID_STR_COMMON_OV_DOC_ANALYSIS_DAW_LEGEND_BODY]
+en-US = "Complex: More complex migration issues.<CR>Minor: Minor migration issues easily fixed by any user.<CR>None: No issues Migrate to <PRODUCTNAME> without any issues.<CR><CR>Your <PRODUCTNAME> Migration Partners can help you with these more complex migration issues [refer to link above]. For instance they can migrate these documents to custom templates that achieve the same functionality but work well in both Office environments allowing the documents to be freely exchanged."
+
+[RID_STR_COMMON_OV_DOC_ANALYSIS_PAW_LEGEND_BODY]
+en-US = "Complex: More complex migration issues.<CR>Minor: Minor migration issues easily fixed by any user.<CR>None: No issues Migrate to <PRODUCTNAME> without any issues."
+
+[RID_STR_COMMON_OV_DOC_MOD_DATES_CHART_TITLE]
+en-US = "Document modification dates"
+
+[RID_STR_COMMON_OV_DOC_MACRO_CHART_TITLE]
+en-US = "Document with Macro Migration Issues"
+
+[RID_STR_COMMON_OV_DOC_ANALYSIS_CHART_TITLE]
+en-US = "Documents with Document Migration Issues"
+
+[RID_STR_COMMON_PREPARATION_NOTE]
+en-US = "Preparation"
+
+[RID_STR_COMMON_CANNOT_OPEN]
+en-US = "Cannot open - no analysis possible"
+
+[RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW]
+en-US = "Overview"
+
+[RID_STR_COMMON_RESULTS_SHEET_NAME_COSTS]
+en-US = "Issues Analyzed"
+
+[RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_WORD]
+en-US = "Word Issues"
+
+[RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_EXCEL]
+en-US = "Excel Issues"
+
+[RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_POWERPOINT]
+en-US = "PowerPoint Issues"
+
+[RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUE_DETAILS]
+en-US = "Issue Details"
+
+[RID_STR_COMMON_RESULTS_SHEET_NAME_DOCREF_DETAILS]
+en-US = "Reference Details"
+
+[RID_STR_COMMON_RESULTS_SHEET_NAME_DOCPROP]
+en-US = "List of documents"
+
+[RID_STR_COMMON_ANALYSIS_STR]
+en-US = "Analysis"
+
+[RID_STR_COMMON_NOTE_PRE]
+en-US = "Note"
+
+[RID_STR_COMMON_NOTE_POST]
+en-US = " on migration"
+
+[RID_STR_COMMON_OLE_EMBEDDED]
+en-US = "Embedded OLE Object"
+
+[RID_STR_COMMON_OLE_LINKED]
+en-US = "Linked OLE Object"
+
+[RID_STR_EXCEL_ISSUE_CHARTS_AND_TABLES]
+en-US = "Charts and Tables"
+
+[RID_STR_EXCEL_ISSUE_FORMAT]
+en-US = "Format"
+
+[RID_STR_EXCEL_ISSUE_FUNCTIONS]
+en-US = "Functions"
+
+[RID_STR_EXCEL_ISSUE_PORTABILITY]
+en-US = "Portability"
+
+[RID_STR_EXCEL_ISSUE_VBA_MACROS]
+en-US = "VBA Macros"
+
+[RID_STR_EXCEL_ISSUE_INFORMATION]
+en-US = "Information"
+
+[RID_STR_EXCEL_SUBISSUE_PIVOT]
+en-US = "Pivot"
+
+[RID_STR_EXCEL_SUBISSUE_ZOOM]
+en-US = "Zoom"
+
+[RID_STR_EXCEL_TRUE]
+en-US = "True"
+
+[RID_STR_EXCEL_FALSE]
+en-US = "False"
+
+[RID_STR_EXCEL_SUBISSUE_MAX_SHEETS_EXCEEDED]
+en-US = "Maximum Sheets Exceeded"
+
+[RID_STR_EXCEL_SUBISSUE_ATTRIBUTES]
+en-US = "Cell Attributes"
+
+[RID_STR_EXCEL_SUBISSUE_EXTERNAL]
+en-US = "External"
+
+[RID_STR_EXCEL_SUBISSUE_SHEET_CHART]
+en-US = "Sheet Chart"
+
+[RID_STR_EXCEL_SUBISSUE_EMBEDDED_CHART]
+en-US = "Embedded Chart"
+
+[RID_STR_EXCEL_SUBISSUE_INVALID_WORKSHEET_NAME]
+en-US = "Invalid Worksheet Name"
+
+[RID_STR_EXCEL_ATTRIBUTE_BADCHARACTER]
+en-US = "'<TOKEN1>' at pos <TOKEN2>"
+
+[RID_STR_EXCEL_ATTRIBUTE_DB_QUERY]
+en-US = "Connection string"
+
+[RID_STR_EXCEL_ATTRIBUTE_NAME]
+en-US = "Name"
+
+[RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_PIVOTFIELDS]
+en-US = "Number of PivotFields"
+
+[RID_STR_EXCEL_ATTRIBUTE_TITLE]
+en-US = "Title"
+
+[RID_STR_EXCEL_ATTRIBUTE_TYPE]
+en-US = "Type"
+
+[RID_STR_EXCEL_ATTRIBUTE_PIE]
+en-US = "Pie"
+
+[RID_STR_EXCEL_ATTRIBUTE_SLICES_IN_DIFFERENT_DIRECTION]
+en-US = "Slices in diff. direction"
+
+[RID_STR_EXCEL_ATTRIBUTE_LEGEND_NAME]
+en-US = "Legend Name"
+
+[RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_LEGEND_ENTRIES]
+en-US = "Number of Legend Entries"
+
+[RID_STR_EXCEL_ATTRIBUTE_PIVOT_TABLE_NAME]
+en-US = "PivotTable Name"
+
+[RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_VISIBLE]
+en-US = "PivotFields Visible"
+
+[RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_NUM]
+en-US = "Number of PivotFields"
+
+[RID_STR_EXCEL_ATTRIBUTE_PRINT_RANGE]
+en-US = "Print Range"
+
+[RID_STR_EXCEL_ATTRIBUTE_DISPLAY_ZOOM]
+en-US = "Display Zoom"
+
+[RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_SHEETS]
+en-US = "Number of Sheets"
+
+[RID_STR_EXCEL_ATTRIBUTE_LIST_SOURCE]
+en-US = "ListSource"
+
+[RID_STR_EXCEL_ATTRIBUTE_CUSTOM_FORMULA]
+en-US = "Custom Formula"
+
+[RID_STR_EXCEL_ATTRIBUTE_SET]
+en-US = "Set"
+
+[RID_STR_EXCEL_ATTRIBUTE_LINE_STYLE]
+en-US = "Line Style"
+
+[RID_STR_EXCEL_ATTRIBUTE_DASHED_DOT]
+en-US = "Dashed/Dot"
+
+[RID_STR_EXCEL_ATTRIBUTE_FILL_PATTERN]
+en-US = "Fill Pattern"
+
+[RID_STR_EXCEL_ATTRIBUTE_PATTERNED]
+en-US = "Patterned"
+
+[RID_STR_EXCEL_ATTRIBUTE_FUNCTION_STRING]
+en-US = "Function String"
+
+[RID_STR_EXCEL_ATTRIBUTE_PASSWORD_TO_OPEN]
+en-US = "Password to Open"
+
+[RID_STR_EXCEL_ATTRIBUTE_PASSWORD_TO_MODIFY]
+en-US = "Password to Modify"
+
+[RID_STR_EXCEL_ATTRIBUTE_OBJECT_TYPE]
+en-US = "Object Type"
+
+[RID_STR_EXCEL_ATTRIBUTE_OBJECT_NAME]
+en-US = "Object Name"
+
+[RID_STR_EXCEL_ATTRIBUTE_SOURCE]
+en-US = "Source"
+
+[RID_STR_EXCEL_ATTRIBUTE_VALUE]
+en-US = "Value"
+
+[RID_STR_EXCEL_ATTRIBUTE_UNABLE_TO_ACCESS_VBPROJECT]
+en-US = "Unable to access VBProject"
+
+[RID_STR_EXCEL_ATTRIBUTE_FURTHER_MACRO_ANALYSIS_NOT_POSSIBLE]
+en-US = "Further macro analysis not possible"
+
+[RID_STR_EXCEL_ATTRIBUTE_VBPROJECT_PASSWORD_SET]
+en-US = "VBProject Password Set"
+
+[RID_STR_EXCEL_ATTRIBUTE_PROJECT]
+en-US = "Project"
+
+[RID_STR_EXCEL_ATTRIBUTE_COMPONENT]
+en-US = "Component"
+
+[RID_STR_EXCEL_ATTRIBUTE_PROCEDURES]
+en-US = "Procedures"
+
+[RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_LINES]
+en-US = "Number of Lines"
+
+[RID_STR_EXCEL_ATTRIBUTE_CONTROLS]
+en-US = "Controls"
+
+[RID_STR_EXCEL_ATTRIBUTE_TYPES]
+en-US = "Types"
+
+[RID_STR_EXCEL_ATTRIBUTE_DESCRIPTION]
+en-US = "Description"
+
+[RID_STR_EXCEL_ATTRIBUTE_FILE]
+en-US = "File"
+
+[RID_STR_EXCEL_ATTRIBUTE_PATH]
+en-US = "Path"
+
+[RID_STR_EXCEL_ATTRIBUTE_MISSING]
+en-US = "MISSING"
+
+[RID_STR_EXCEL_ATTRIBUTE_CHECK_DOCUMENT_REFERENCES]
+en-US = "Check document VB-IDE/Tools/References"
+
+[RID_STR_EXCEL_ATTRIBUTE_MAJOR]
+en-US = "Major"
+
+[RID_STR_EXCEL_ATTRIBUTE_MINOR]
+en-US = "Minor"
+
+[RID_STR_EXCEL_ATTRIBUTE_BUILT_IN]
+en-US = "Built In"
+
+[RID_STR_EXCEL_ATTRIBUTE_INTACT]
+en-US = "Intact"
+
+[RID_STR_EXCEL_ATTRIBUTE_TYPELIB]
+en-US = "TypeLib"
+
+[RID_STR_EXCEL_ATTRIBUTE_GUID]
+en-US = "GUID"
+
+[RID_STR_EXCEL_ATTRIBUTE_CUSTOM]
+en-US = "Custom"
+
+[RID_STR_EXCEL_ATTRIBUTE_IS_BROKEN]
+en-US = "Is Broken"
+
+[RID_STR_EXCEL_ATTRIBUTE_BROKEN]
+en-US = "Broken!"
+
+[RID_STR_EXCEL_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES]
+en-US = "Non Portable External References"
+
+[RID_STR_EXCEL_ATTRIBUTE_INCLUDING]
+en-US = "including:"
+
+[RID_STR_EXCEL_ATTRIBUTE_PASSWORD]
+en-US = "Password"
+
+[RID_STR_EXCEL_ENUMERATION_CUSTOM]
+en-US = "Custom"
+
+[RID_STR_EXCEL_ENUMERATION_LIST]
+en-US = "List"
+
+[RID_STR_EXCEL_ENUMERATION_UNKNOWN]
+en-US = "Unknown"
+
+[RID_STR_EXCEL_ENUMERATION_LINE_STYLE_CONTINUOUS]
+en-US = "Continuous"
+
+[RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DASH]
+en-US = "Dash"
+
+[RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DASHDOT]
+en-US = "DashDot"
+
+[RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DOT]
+en-US = "Dot"
+
+[RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DOUBLE]
+en-US = "Double"
+
+[RID_STR_EXCEL_ENUMERATION_LINE_STYLE_SLANTDASHDOT]
+en-US = "SlantDashDot"
+
+[RID_STR_EXCEL_ENUMERATION_LINE_STYLE_LINESTYLENONE]
+en-US = "LineStyleNone"
+
+[RID_STR_EXCEL_NOTE_DB_QUERY]
+en-US = "The connection to the database in <PRODUCTNAME> will be lost . The data will appear correctly but can not be updated."
+
+[RID_STR_EXCEL_NOTE_INVALIDWORKSHEETNAME]
+en-US = "The worksheet name contains characters that are not supported by <PRODUCTNAME>. Please rename your sheet and exclude these characters."
+
+[RID_STR_EXCEL_NOTE_ZOOM]
+en-US = "all sheets will have the same zoom irrespective of their Excel View/Zoom setting after migration to <PRODUCTNAME>"
+
+[RID_STR_EXCEL_NOTE_CELL_ATTRIBUTES_3]
+en-US = "this line style is imported as a solid line. Only solid line syles are supported in <PRODUCTNAME>"
+
+[RID_STR_EXCEL_NOTE_CELL_ATTRIBUTES_4]
+en-US = "this fill pattern is imported as a solid gray. Only solid fill patterns are supported in <PRODUCTNAME>"
+
+[RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_1]
+en-US = "this function returns platform dependent information specific to Windows and is not imported to <PRODUCTNAME>"
+
+[RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_2]
+en-US = "this function returns error codes specific to Excel and is imported in <PRODUCTNAME> as the stub function ErrorType() always returning Err.520"
+
+[RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_3]
+en-US = "this is an external function referenced from an Excel spreadsheet. It does not import correctly to <PRODUCTNAME>. The external reference is stripped and the resulting formula always returns #ADDIN?"
+
+[RID_STR_EXCEL_NOTE_DOCUMENT_PROPERTIES_1]
+en-US = "this summary property is lost"
+
+[RID_STR_EXCEL_NOTE_DOCUMENT_PROPERTIES_2]
+en-US = "this custom property is lost"
+
+[RID_STR_EXCEL_NOTE_SHEET_LIMITS_1]
+en-US = "all sheets will be lost in <PRODUCTNAME> that are greater than "
+
+[RID_STR_EXCEL_NOTE_SHEET_LIMITS_2]
+en-US = "all sheets must be moved to a new workbook before migration that are greater than "
+
+[RID_STR_EXCEL_SUBLOCATION_NA]
+en-US = "na"
+
+[RID_STR_EXCEL_SUBISSUE_WORKBOOK_PROTECTION]
+en-US = "Workbook Protection"
+
+[RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_SHARING]
+en-US = "Protection Sharing"
+
+[RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_STRUCTURE]
+en-US = "Protection Structure"
+
+[RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_WINDOWS]
+en-US = "Protection Windows"
+
+[RID_STR_EXCEL_NOTE_PASSWORD_TO_OPEN]
+en-US = "workbook is protected"
+
+[RID_STR_EXCEL_NOTE_DATATABLE]
+en-US = "no simple workaround, could copy the data table and paste below the chart"
+
+[RID_STR_EXCEL_NOTE_XAXISCATEGORY]
+en-US = "only category option supported. Setup your category labels you need on the sheet"
+
+[RID_STR_EXCEL_NOTE_UNSUPPORTEDTYPE1]
+en-US = "following chart types not supported"
+
+[RID_STR_EXCEL_NOTE_UNSUPPORTEDTYPE2]
+en-US = "pie of pie,exploded 3D pie,bar of pie,bubble,filled radar,exploded doughnut"
+
+[RID_STR_EXCEL_NOTE_TRENDLINE]
+en-US = "replace the trend line by drawing a line on the chart. You must click outside the chart when adding the line and drag it onto the chart. Objects created by clicking on the chart will not import"
+
+[RID_STR_EXCEL_NOTE_DATALABELWITHLEGEND]
+en-US = "after import into <PRODUCTNAME>, select Insert->Data Labels->show legend icon with label and the legend key will appear"
+
+[RID_STR_EXCEL_NOTE_LEGENDPOSITION]
+en-US = "only legend to the right is supported on import. Change legend position in <PRODUCTNAME> after import"
+
+[RID_STR_EXCEL_NOTE_TITLEFONT]
+en-US = "title font with different font size is not supported on import, set a sub-title in <PRODUCTNAME>, then change the font size"
+
+[RID_STR_EXCEL_NOTE_SERIESCHARTTYPE]
+en-US = "multiple series with different chart types. SO only supports one chart type for all series. Adjust the chart type to best display the series"
+
+[RID_STR_EXCEL_NOTE_DATASOURCENOTLINKEDTOCELL]
+en-US = "data sources to catalogue or other external sources not supported. Data source must be set to cell or range on the sheet"
+
+[RID_STR_EXCEL_NOTE_CATEGORYANDDATA]
+en-US = "category names must be located above or to the left of the value ranges"
+
+[RID_STR_EXCEL_NOTE_DATASOURCEONDIFFERENTSHEET]
+en-US = "data sources must be located on the same sheet. Paste the data sources onto the same sheet"
+
+[RID_STR_EXCEL_NOTE_CATEGORYLABELMORETHANONECELL]
+en-US = "category labels spanning multiple cells are not supported. Copy all the text to one cell"
+
+[RID_STR_EXCEL_NOTE_COLUMNBAR]
+en-US = "chart 'series in' must match the data source. For data source in single row, set 'series in' = row. For data source in single column, set 'series in' = column"
+
+[RID_STR_EXCEL_NOTE_BORDER]
+en-US = "chart border will not appear in <PRODUCTNAME>, before import,set border to none, draw a rectangle around the border of the chart"
+
+[RID_STR_EXCEL_NOTE_AXISINTERVAL]
+en-US = " y axis interval setting will be changed in <PRODUCTNAME>. Modify axes interval setting in <PRODUCTNAME>, re-set major interval scale"
+
+[RID_STR_EXCEL_ATTRIBUTE_DATATABLE]
+en-US = "Data Table"
+
+[RID_STR_EXCEL_ATTRIBUTE_INVALIDCHARACTER]
+en-US = "Invalid Characters"
+
+[RID_STR_EXCEL_ATTRIBUTE_XAXISCATEGORY]
+en-US = "Chart Axes"
+
+[RID_STR_EXCEL_ATTRIBUTE_TIMESCALE]
+en-US = "time scale/auto"
+
+[RID_STR_EXCEL_ATTRIBUTE_UNSUPPORTEDTYPE]
+en-US = "Unsupported Chart Type"
+
+[RID_STR_EXCEL_ATTRIBUTE_TRENDLINE]
+en-US = "Trendline"
+
+[RID_STR_EXCEL_ATTRIBUTE_DATALABELWITHLEGEND]
+en-US = "Data Label With Legend"
+
+[RID_STR_EXCEL_ATTRIBUTE_LEGENDPOSITION]
+en-US = "Legend Position"
+
+[RID_STR_EXCEL_ATTRIBUTE_TITLEFONT]
+en-US = "Title Font"
+
+[RID_STR_EXCEL_ATTRIBUTE_DIFFERENT]
+en-US = "Different"
+
+[RID_STR_EXCEL_ATTRIBUTE_SERIESCHARTTYPE]
+en-US = "Multiple series chart type"
+
+[RID_STR_EXCEL_ATTRIBUTE_CHANGED]
+en-US = "changed"
+
+[RID_STR_EXCEL_ATTRIBUTE_DATASOURCE]
+en-US = "Data Source"
+
+[RID_STR_EXCEL_ATTRIBUTE_DATASOURCENOTLINKEDTOCELL]
+en-US = "Not Linked To A Cell"
+
+[RID_STR_EXCEL_ATTRIBUTE_CATEGORYANDDATA]
+en-US = "Category And Data"
+
+[RID_STR_EXCEL_ATTRIBUTE_SEPARATE]
+en-US = "Separate"
+
+[RID_STR_EXCEL_ATTRIBUTE_DATASOURCEONDIFFERENTSHEET]
+en-US = "On Different Sheet"
+
+[RID_STR_EXCEL_ATTRIBUTE_CATEGORYLABEL]
+en-US = "Category Label"
+
+[RID_STR_EXCEL_ATTRIBUTE_CATEGORYLABELMORETHANONECELL]
+en-US = "More Than One Cell"
+
+[RID_STR_EXCEL_ATTRIBUTE_COLUMNBAR]
+en-US = "Column/Bar Chart"
+
+[RID_STR_EXCEL_ATTRIBUTE_ONECOLUMNROW]
+en-US = "Data Source With Single Column/ Chart Series In Row"
+
+[RID_STR_EXCEL_ATTRIBUTE_BORDER]
+en-US = "Border"
+
+[RID_STR_EXCEL_ATTRIBUTE_AXISINTERVAL]
+en-US = "Y Axis Interval"
+
+[RID_STR_EXCEL_ATTRIBUTE_AUTO]
+en-US = "Auto"
+
+[RID_STR_EXCEL_ATTRIBUTE_CHARTNAME]
+en-US = "Chart Name"
+
+[RID_STR_EXCEL_SUBISSUE_CHART_COMPLEX]
+en-US = "Chart Issues Complex"
+
+[RID_STR_EXCEL_SUBISSUE_CHART_MINOR]
+en-US = "Chart Issues Minor"
+
+[RID_STR_EXCEL_ATTRIBUTE_NOTRIGHT]
+en-US = "not at right hand side"
+
+[RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_CELLS]
+en-US = "number cells effected"
+
+[RID_STR_PP_TRUE]
+en-US = "True"
+
+[RID_STR_PP_FALSE]
+en-US = "False"
+
+[RID_STR_PP_ISSUE_OBJECTS_GRAPHICS_AND_TEXTBOXES]
+en-US = "Objects, Graphics and Textboxes"
+
+[RID_STR_PP_SUBISSUE_COMMENT]
+en-US = "Comment"
+
+[RID_STR_PP_SUBISSUE_MOVIE]
+en-US = "Movie"
+
+[RID_STR_PP_ATTRIBUTE_CONTENT]
+en-US = "Content"
+
+[RID_STR_PP_ATTRIBUTE_LOOP]
+en-US = "Loop"
+
+[RID_STR_PP_ATTRIBUTE_PLAYONENTRY]
+en-US = "PlayOnEntry"
+
+[RID_STR_PP_ATTRIBUTE_REWIND]
+en-US = "Rewind"
+
+[RID_STR_PP_ATTRIBUTE_TYPES]
+en-US = "Types"
+
+[RID_STR_PP_ENUMERATION_VIEW_HANDOUT_MASTER]
+en-US = "View Handout Master"
+
+[RID_STR_PP_ENUMERATION_VIEW_NORMAL]
+en-US = "View Normal"
+
+[RID_STR_PP_ENUMERATION_VIEW_NOTES_MASTER]
+en-US = "View Notes Master"
+
+[RID_STR_PP_ENUMERATION_VIEW_NOTES_PAGE]
+en-US = "View Notes Page"
+
+[RID_STR_PP_ENUMERATION_VIEW_OUTLINE]
+en-US = "View Outline"
+
+[RID_STR_PP_ENUMERATION_VIEW_SLIDE]
+en-US = "View Slide"
+
+[RID_STR_PP_ENUMERATION_VIEW_SLIDE_MASTER]
+en-US = "View Slide Master"
+
+[RID_STR_PP_ENUMERATION_VIEW_SLIDE_SORTER]
+en-US = "View Slide Sorter"
+
+[RID_STR_PP_ENUMERATION_VIEW_TITLE_MASTER]
+en-US = "View Title Master"
+
+[RID_STR_PP_ENUMERATION_UNKNOWN]
+en-US = "Unknown"
+
+[RID_RESXLS_COST_Action_Settings]
+en-US = "Action Settings"
+
+[RID_RESXLS_COST_Add_custom_properties_to_document_Properties_Summary_Comments_field]
+en-US = "Add custom properties to document Properties Summary Comments field."
+
+[RID_RESXLS_COST_Additional_Weighting_Factors]
+en-US = "Additional Weighting Factors"
+
+[RID_RESXLS_COST_All_sheets__256_will_need_to_be_moved_to_a_new_workbook]
+en-US = "All sheets >256 will need to be moved to a new workbook"
+
+[RID_RESXLS_COST_Appearance]
+en-US = "Appearance"
+
+[RID_RESXLS_COST_Application]
+en-US = "Application"
+
+[RID_RESXLS_COST_AutoFilter]
+en-US = "AutoFilter"
+
+[RID_RESXLS_COST_Border_Styles]
+en-US = "Border Styles"
+
+[RID_RESXLS_COST_Cell_Attributes]
+en-US = "Cell Attributes"
+
+[RID_RESXLS_COST_CELL_SPAN_WORKAROUND]
+en-US = "Add extra row below cell. Cut and paste contents running onto 2nd page into new cell."
+
+[RID_RESXLS_COST_Cell_Spanning_Page]
+en-US = "Cell Spanning Page"
+
+[RID_RESXLS_COST_ChangesAndReviewing]
+en-US = "Changes And Reviewing"
+
+[RID_RESXLS_COST_Charts_And_Tables]
+en-US = "Charts And Tables"
+
+[RID_RESXLS_COST_Comment]
+en-US = "Comment"
+
+[RID_RESXLS_COST_Content_And_Document_Properties]
+en-US = "Content And Document Properties"
+
+[RID_RESXLS_COST_ContentAndDocumentProperties]
+en-US = "Content And Document Properties"
+
+[RID_RESXLS_COST_Controls]
+en-US = "Controls"
+
+[RID_RESXLS_COST_Cost]
+en-US = "Cost Comment"
+
+[RID_RESXLS_COST_Cost__In_simple_cases_cut_and_paste_to_new_sheet_3___5_min]
+en-US = "Cost: In simple cases cut and paste to new sheet. 3 - 5 min. May exist functions that refer to these cells. 10+"
+
+[RID_RESXLS_COST_COST_0]
+en-US = "Cost = 0. No work around."
+
+[RID_RESXLS_COST_COST_EMBED_CHART]
+en-US = "Variations in cost can range from 0 - 30 mins. Cost caused by uneven data souce, external data source, unsupported chart types, floating legend position."
+
+[RID_RESXLS_COST_COST_ERROR_TYPE]
+en-US = "Fix up cost can vary depending on the context in which this is used. Cost 3 - 5"
+
+[RID_RESXLS_COST_COST_INFO]
+en-US = "Fix up cost can vary depending on the context in which this is used. Cost 2 - 4"
+
+[RID_RESXLS_COST_COST_INVAL_PASS]
+en-US = "Cost = 0. Rerun analysis with correct password."
+
+[RID_RESXLS_COST_COST_INVALID_WORKSHEET_NAME]
+en-US = "Aufewand: Vergewissern Sie sich nach der Umbenennung, dass alle Makros mit Verweisen auf dieses Arbeitsblatt ebenfalls angepaßt werden. Der Aufwand hängt von der Zahl der Codezeilen ab, die auf den Arbeitsblattnamen verweisen."
+en-US = "Cost: When the worksheet has been renamed, ensure that all macros with a reference to the worksheet are also renamed accordingly. Cost depends on how many lines of code there are that refer to the worksheet name."
+
+[RID_RESXLS_COST_Cost_of_4_min_per_line__takes_no_account_of_complexity_of_code__number_of_comment_lines_and_so_on]
+en-US = "Cost of 4 min per line, takes no account of complexity of code, number of comment lines and so on"
+
+[RID_RESXLS_COST_Cost_per_Issue_or_Factor__min]
+en-US = "Cost per Issue or Factor (min)"
+
+[RID_RESXLS_COST_COST_PIVOT]
+en-US = "Cost = 0. Calc does not support dynamically created charts. No workaround."
+
+[RID_RESXLS_COST_COST_SHEET_CHART]
+en-US = "Variations in cost can range from 0 - 30 mins. Cost caused by uneven data souce, external data source, unsupported chart types, floating legend position."
+
+[RID_RESXLS_COST_Cost_variations_occur_because_of_the_use_of_macros_with_controls]
+en-US = "Cost variations occur because of the use of macros with controls."
+
+[RID_RESXLS_COST_COST_VBA_CONT_TYPE]
+en-US = "Cost = 0. Total number of controls better estimate - this information is useful as an indication of complexity of the Forms."
+
+[RID_RESXLS_COST_COST_VBA_CONTROLS]
+en-US = "Cost = 3 minute per control, this does not take account of issues with Frame controls or the number of these controls that have event handlers that need manually linked to migrated code."
+
+[RID_RESXLS_COST_COST_VBA_FORMS]
+en-US = "Cost = 0. Using total number of controls on forms as better estimate"
+
+[RID_RESXLS_COST_COST_VBA_LOC]
+en-US = "Cost of 4 min per line, takes no account of complexity of code, number of comment lines and so on"
+
+[RID_RESXLS_COST_COST_VBA_PROPS]
+en-US = "Cost = 0 using lines of code as better cost estimate."
+
+[RID_RESXLS_COST_Costs__min]
+en-US = "Costs (min)"
+
+[RID_RESXLS_COST_Custom_Bullet_List]
+en-US = "Custom Bullet List"
+
+[RID_RESXLS_COST_Document_Custom_Properties]
+en-US = "Document Custom Properties"
+
+[RID_RESXLS_COST_Document_Parts_Protection]
+en-US = "Document Parts Protection"
+
+[RID_RESXLS_COST_Embedded_Chart]
+en-US = "Chart Issues Minor"
+
+[RID_RESXLS_COST_embedded_objects]
+en-US = "Cost = 0. Most embedded objects come across. If one does not then this may require some reenginering and is not in the scope of an automated cost calculation."
+
+[RID_RESXLS_COST_Embedded_OLE_Object]
+en-US = "Embedded OLE Object"
+
+[RID_RESXLS_COST_Excel]
+en-US = "Excel"
+
+[RID_RESXLS_COST_Excel_Totals]
+en-US = "Excel Totals"
+
+[RID_RESXLS_COST_External]
+en-US = "External"
+
+[RID_RESXLS_COST_External_References_In_Macro___Module__Class_or_UserForm]
+en-US = "External References In Macro - Module, Class or UserForm"
+
+[RID_RESXLS_COST_Factor_Count]
+en-US = "Factor Count"
+
+[RID_RESXLS_COST_Fields]
+en-US = "Fields"
+
+[RID_RESXLS_COST_Filters]
+en-US = "Filters"
+
+[RID_RESXLS_COST_Fixed_SO7]
+en-US = "Fixed <PRODUCTNAME> <PRODUCTVERSION>"
+
+[RID_RESXLS_COST_Form_Field]
+en-US = "Form Field"
+
+[RID_RESXLS_COST_Format]
+en-US = "Format"
+
+[RID_RESXLS_COST_Functions]
+en-US = "Functions"
+
+[RID_RESXLS_COST_Zoom]
+en-US = "Zoom"
+
+[RID_RESXLS_COST_HEADERFOOTER_WORKAROUND]
+en-US = "Insert carriage returns to resize header/ footer to the size of the graphic."
+
+[RID_RESXLS_COST_Hours_Per_MD]
+en-US = "Hours Per MD ="
+
+[RID_RESXLS_COST_Indexes_And_References]
+en-US = "Indexes And References"
+
+[RID_RESXLS_COST_Invalid_Password_Entered]
+en-US = "Invalid Password Entered"
+
+[RID_RESXLS_COST_Invalid_Worksheet_Name]
+en-US = "Invalid Worksheet Name"
+
+[RID_RESXLS_COST_Issue__18_of_the_24_table_border_styles_do_not_display_correctly]
+en-US = "Issue: 18 of the 24 table border styles do not display correctly."
+
+[RID_RESXLS_COST_Issue__256_sheet_limit_exceeded]
+en-US = "Issue: 256 sheet limit exceeded."
+
+[RID_RESXLS_COST_Issue__32000_row_limit_exceeded]
+en-US = "Issue: 32000 row limit exceeded."
+
+[RID_RESXLS_COST_Issue__A_worksheet_in_the_workbook_has_a_name_with_invalid_characters]
+en-US = "Issue: A worksheet in the workbook has a name with invalid characters."
+
+[RID_RESXLS_COST_Issue__AutoFilter_does_not_function_properly]
+en-US = "Issue: AutoFilter does not function properly."
+
+[RID_RESXLS_COST_Issue__Calls_to_windows_API_functions_are_windows_specific]
+en-US = "Issue: Calls to windows API functions are windows specific."
+
+[RID_RESXLS_COST_Issue__Chart_support_is_limited_in_SO7]
+en-US = "Issue: Chart support is limited in <PRODUCTNAME>."
+
+[RID_RESXLS_COST_Issue__Comments_are_lost_on_migration_to_SO7]
+en-US = "Issue: Comments are lost on migration to <PRODUCTNAME>."
+
+[RID_RESXLS_COST_Issue__Custom_Properties_are_lost_on_migration]
+en-US = "Issue: Custom Properties are lost on migration"
+
+[RID_RESXLS_COST_Issue__Document_is_password_protected_and_cannot_be_opened_by_SO]
+en-US = "Issue: Document is password protected and cannot be opened by SO."
+
+[RID_RESXLS_COST_Issue__External_functions_not_supported_by_SO7]
+en-US = "Issue: External functions not supported by <PRODUCTNAME>"
+
+[RID_RESXLS_COST_Issue__External_references_are_windows_specific]
+en-US = "Issue: External references are windows specific."
+
+[RID_RESXLS_COST_Issue__Fields_are_imported_but_need_to_have_the_link_to_datasource_reset]
+en-US = "Issue: Fields are imported but need to have the link to data source reset."
+
+[RID_RESXLS_COST_Issue__Graphics___frames_in_header_footer_tend_to_be_misplaced]
+en-US = "Issue: Graphics & frames in header footer tend to be misplaced."
+
+[RID_RESXLS_COST_Issue__Incorrect_password_entered]
+en-US = "Issue: Incorrect password entered. "
+
+[RID_RESXLS_COST_Issue__Information_relating_to_the_data_source_is_lost_in_migration]
+en-US = "Issue: Information relating to the data source is lost in migration."
+
+[RID_RESXLS_COST_Issue__Invalid_password_entered_Rerun_analysis]
+en-US = "Issue: Invalid password entered. Rerun analysis."
+
+[RID_RESXLS_COST_Issue__Lost_during_migration_No_StarOffice_equivalent]
+en-US = "Issue: Lost during migration. No <PRODUCTNAME> equivalent."
+
+[RID_RESXLS_COST_Issue__Macros_from_old_workbook_versions_do_not_import_into_SO7]
+en-US = "Issue: Macros from old workbook versions do not import into SO9."
+
+[RID_RESXLS_COST_Issue__Modules_will_need_porting_to_StarOffice_Basic]
+en-US = "Issue: Modules will need porting to <PRODUCTNAME> Basic."
+
+[RID_RESXLS_COST_Issue__Most_migrate_ok_but_do_not_roundtrip]
+en-US = "Issue: Most migrate ok but do not roundtrip."
+
+[RID_RESXLS_COST_Issue__Movies_are_not_supported_by_SO7]
+en-US = "Issue: Movies are not supported by <PRODUCTNAME>."
+
+[RID_RESXLS_COST_Issue__Need_to_set_these_to_be_included_in_TOC_in_SO7]
+en-US = "Issue: Need to set these to be included in TOC in <PRODUCTNAME>"
+
+[RID_RESXLS_COST_Issue__Password_protection_of_comments__tracked_changes_and_forms_is_lost]
+en-US = "Issue: Password protection of comments, tracked changes and forms is lost."
+
+[RID_RESXLS_COST_Issue__Pivot_charts_are_not_supported_by_SO7]
+en-US = "Issue: Pivot charts are not supported by <PRODUCTNAME>."
+
+[RID_RESXLS_COST_Issue__Presents_a_cross_platform_interoperability_issue]
+en-US = "Issue: Presents a cross platform interoperability issue."
+
+[RID_RESXLS_COST_Issue__Print_wide_pages_not_supported]
+en-US = "Issue: Print wide pages not supported."
+
+[RID_RESXLS_COST_Issue__Shading_can_be_applied_to_fields_and_to_controls_separately_in_Word]
+en-US = "Issue: Shading can be applied to fields and to controls separately in Word. <PRODUCTNAME> does not differentiate between controls and fields so shading can look different in Writer."
+
+[RID_RESXLS_COST_Issue__Table_imported_as_text_as_no_StarOffice_equivalent]
+en-US = "Issue: Table imported as text as no <PRODUCTNAME> equivalent."
+
+[RID_RESXLS_COST_Issue__Tables_nested_in_tables_are_not_supported_by_SO7]
+en-US = "Issue: Tables nested in tables are not supported by <PRODUCTNAME>."
+
+[RID_RESXLS_COST_Issue__Tabs_are_incorrect_after_migration]
+en-US = "Issue: Tabs are incorrect after migration. Certain format types do not migrate to <PRODUCTNAME>."
+
+[RID_RESXLS_COST_Issue__Text_form_fields_roundtrip_as_Fill_In_field]
+en-US = "Issue: Text form fields roundtrip as Fill In field. Field attributes are lost."
+
+[RID_RESXLS_COST_Issue__Unsupported_formatting_set]
+en-US = "Issue: Unsupported formatting set."
+
+[RID_RESXLS_COST_Issue__Unsupported_function_type]
+en-US = "Issue: Unsupported function type. "
+
+[RID_RESXLS_COST_Issue__Userform_controls_will_need_porting_to_StarOffice_Basic]
+en-US = "Issue: Userform controls will need porting to <PRODUCTNAME> Basic."
+
+[RID_RESXLS_COST_Issue__Userforms_controls_will_need_porting_to_StarOffice_Basic]
+en-US = "Issue: Userform controls will need porting to <PRODUCTNAME> Basic."
+
+[RID_RESXLS_COST_Issue__Userforms_will_need_porting_to_StarOffice_Basic]
+en-US = "Issue: Userforms will need porting to <PRODUCTNAME> Basic."
+
+[RID_RESXLS_COST_Issue__VBProject_is_password_protected_Remove_password__rerun_analysis]
+en-US = "Issue: VBProject is password protected. Remove password, rerun analysis."
+
+[RID_RESXLS_COST_Issue__Will_need_refreshing_in_SO7_External_datasources_and_functions_are_not_supported]
+en-US = "Issue: Will need refreshing in <PRODUCTNAME>. External data sources and functions are not supported"
+
+[RID_RESXLS_COST_Issue__Workbook_protection_is_not_supported]
+en-US = "Issue: Workbook protection is not supported"
+
+[RID_RESXLS_COST_Issue__Writer_cannot_correctly_display_cells_spanning_more_than_1_page]
+en-US = "Issue: Writer cannot correctly display cells spanning more than 1 page."
+
+[RID_RESXLS_COST_Issue_Category]
+en-US = "Issue Category"
+
+[RID_RESXLS_COST_Issue_Count]
+en-US = " Issue Count"
+
+[RID_RESXLS_COST_Issue_Type]
+en-US = "Issue Type"
+
+[RID_RESXLS_COST_Linked_OLE_Object]
+en-US = "Linked OLE Object"
+
+[RID_RESXLS_COST_Mail_Merge_Datasource]
+en-US = "Mail Merge Data Source"
+
+[RID_RESXLS_COST_Mail_Merge_Field]
+en-US = "Mail Merge Field"
+
+[RID_RESXLS_COST_Major_Issue]
+en-US = "Complex Issue"
+
+[RID_RESXLS_COST_MAX_SHEETS_WORKAROUND]
+en-US = "Need to move sheets to new workbook. "
+
+[RID_RESXLS_COST_Maximum_Rows_Exceeded]
+en-US = "Maximum Rows Exceeded"
+
+[RID_RESXLS_COST_Maximum_Sheets_Exceeded]
+en-US = "Maximum Sheets Exceeded"
+
+[RID_RESXLS_COST_Migration_Issues_Costs]
+en-US = "Migration Issues Analyzed"
+
+[RID_RESXLS_COST_Movie]
+en-US = "Movie"
+
+[RID_RESXLS_COST_NESTED_TABLE_WORKAROUND]
+en-US = "In word use split cell to create similar layout."
+
+[RID_RESXLS_COST_Nested_Tables]
+en-US = "Nested Tables"
+
+[RID_RESXLS_COST_Not_Planned]
+en-US = "Not Planned"
+
+[RID_RESXLS_COST_Notes_And_Handouts]
+en-US = "Notes And Handouts"
+
+[RID_RESXLS_COST_Number_Of_External_References]
+en-US = "Number Of External References"
+
+[RID_RESXLS_COST_Number_Of_Lines]
+en-US = "Number Of Lines"
+
+[RID_RESXLS_COST_Number_of_Lines_in_Unique_Modules]
+en-US = "Number of Lines in Unique Code Modules"
+
+[RID_RESXLS_COST_Number_of_Modules]
+en-US = "Number of Modules"
+
+[RID_RESXLS_COST_Number_of_Unique_Modules]
+en-US = "Number of Unique Code Modules"
+
+[RID_RESXLS_COST_Numbering_Reference]
+en-US = "Numbering Reference"
+
+[RID_RESXLS_COST_Numbering_Reference_Comment]
+en-US = "Issue: <PRODUCTNAME> can not import references that refer in a numbered list."
+
+[RID_RESXLS_COST_Object_In_Header_Footer]
+en-US = "Object In Header Footer"
+
+[RID_RESXLS_COST_Objects_And_Graphics]
+en-US = "Objects And Graphics"
+
+[RID_RESXLS_COST_Objects_Graphics_And_Frames]
+en-US = "Objects Graphics And Frames"
+
+[RID_RESXLS_COST_Objects_Graphics_And_Textboxes]
+en-US = "Objects Graphics And Textboxes"
+
+[RID_RESXLS_COST_Old_Workbook_Version]
+en-US = "Old Workbook Version"
+
+[RID_RESXLS_COST_OLE_Control]
+en-US = "OLE Control"
+
+[RID_RESXLS_COST_OLECONTR_COST]
+en-US = "Cost variations occur because of the use of macros with controls."
+
+[RID_RESXLS_COST_Page_Setup]
+en-US = "Page Setup"
+
+[RID_RESXLS_COST_Password_Protected]
+en-US = "Password Protected"
+
+[RID_RESXLS_COST_Password_Protection]
+en-US = "Password Protection"
+
+[RID_RESXLS_COST_Pivot]
+en-US = "Pivot Chart"
+
+[RID_RESXLS_COST_Planned_SO8]
+en-US = "Planned"
+
+[RID_RESXLS_COST_Portability]
+en-US = "Portability"
+
+[RID_RESXLS_COST_PowerPoint]
+en-US = "PowerPoint"
+
+[RID_RESXLS_COST_PowerPoint_Totals]
+en-US = "PowerPoint Totals"
+
+[RID_RESXLS_COST_Prepared_Issue_Count]
+en-US = "Prepared Issue Count"
+
+[RID_RESXLS_COST_Prepared_Savings__min]
+en-US = "Prepared Savings (min)"
+
+[RID_RESXLS_COST_Properties___Module__Class_or_UserForm]
+en-US = "Properties - Module, Class or UserForm"
+
+[RID_RESXLS_COST_Remove_password_to_open]
+en-US = "Remove password to open."
+
+[RID_RESXLS_COST_Remove_the_invalid_characters_from_the_worksheet_name]
+en-US = "Remove the invalid characters from the worksheet name."
+
+[RID_RESXLS_COST_Rerun_analysis_with_correct_password]
+en-US = "Rerun analysis with correct password."
+
+[RID_RESXLS_COST_Reset_link_to_Data_Base_having_setup_a_Datasource_in_SO7]
+en-US = "Reset link to database having setup a data source in <PRODUCTNAME>."
+
+[RID_RESXLS_COST_set_cost_factor_if_the_macro_has_to_be_ported_off_Windows]
+en-US = "Cost = 0. Set a cost factor if the macro has to be ported off Windows. "
+
+[RID_RESXLS_COST_Save_workbook_as_a_new_workbook_version]
+en-US = "Save workbook as a new workbook version."
+
+[RID_RESXLS_COST_Setup_Datasource_in_SO7_using_Tools__Datasource]
+en-US = "Setup data source in <PRODUCTNAME> using Tools/Data source"
+
+[RID_RESXLS_COST_Sheet_Chart]
+en-US = "Chart Issues Complex"
+
+[RID_RESXLS_COST_Status]
+en-US = "Status"
+
+[RID_RESXLS_COST_Table_Of_Authorities]
+en-US = "Table Of Authorities"
+
+[RID_RESXLS_COST_Table_Of_Authorities_Field]
+en-US = "Table Of Authorities Field"
+
+[RID_RESXLS_COST_Table_Of_Contents]
+en-US = "Table Of Contents"
+
+[RID_RESXLS_COST_Tables]
+en-US = "Tables"
+
+[RID_RESXLS_COST_TOC_ISSUE_WORKAROUND]
+en-US = "Tab Issues: use fancy format. Numbering incorrect: remove blank lines with heading style used by TOC. Numbering abuts Header: replace leading tabs in Header style used in TOC with spaces."
+
+[RID_RESXLS_COST_Total_Cost___MD]
+en-US = "Total Cost (MD) = "
+
+[RID_RESXLS_COST_User_Error]
+en-US = "User Error"
+
+[RID_RESXLS_COST_User_Forms_Control_Count]
+en-US = "User Forms Control Count"
+
+[RID_RESXLS_COST_User_Forms_Control_Type_Count]
+en-US = "User Forms Control Type Count"
+
+[RID_RESXLS_COST_User_Forms_Count]
+en-US = "User Forms Count"
+
+[RID_RESXLS_COST_VBA_Macros]
+en-US = "VBA Macros"
+
+[RID_RESXLS_COST_Word]
+en-US = "Word"
+
+[RID_RESXLS_COST_Word_Totals]
+en-US = "Word Totals"
+
+[RID_RESXLS_COST_Work_Around]
+en-US = "Work Around"
+
+[RID_RESXLS_COST_Workaround_Remove_protection_before_importing]
+en-US = "Remove protection before importing"
+
+[RID_RESXLS_COST_WorkbookProtection]
+en-US = "WorkbookProtection "
+
+[RID_RESXLS_DP_Accessed]
+en-US = "Accessed"
+
+[RID_RESXLS_DP_All_Analysed_Documents___Properties]
+en-US = "All Analysed Documents - properties"
+
+[RID_RESXLS_DP_Application]
+en-US = "Application"
+
+[RID_RESXLS_DP_Based_on_Template]
+en-US = "Based on Template"
+
+[RID_RESXLS_DP_Costs]
+en-US = "Costs"
+
+[RID_RESXLS_DP_Created]
+en-US = "Created"
+
+[RID_RESXLS_DP_Document_Details]
+en-US = "Document Details"
+
+[RID_RESXLS_DP_Document_Issue_Costs]
+en-US = "Document Migration Costs (min)"
+
+[RID_RESXLS_DP_Document_Migration_Issues]
+en-US = "Document Migration Issues"
+
+[RID_RESXLS_DP_Document_Name]
+en-US = "Document Name"
+
+[RID_RESXLS_DP_Document_Name_and_Path]
+en-US = "Document Name and Path"
+
+[RID_RESXLS_DP_Issues_Complex_count]
+en-US = "Issues Complex Count"
+
+[RID_RESXLS_DP_Last_Saved_By]
+en-US = "Last Saved By"
+
+[RID_RESXLS_DP_Lines_of_Macro_Code]
+en-US = "Lines of Macro Code"
+
+[RID_RESXLS_DP_Macro_Issues]
+en-US = "Macro Migration Issues"
+
+[RID_RESXLS_DP_Macro_Migration_Costs]
+en-US = "Macro Migration Costs (min)"
+
+[RID_RESXLS_DP_Macro_Migration_Issues]
+en-US = "Macro Migration Issues"
+
+[RID_RESXLS_DP_Migration_Issues]
+en-US = "Document Migration Issues"
+
+[RID_RESXLS_DP_Minor_Issues]
+en-US = "Issues Minor Count"
+
+[RID_RESXLS_DP_Modified]
+en-US = "Modified"
+
+[RID_RESXLS_DP_Pages_Sheets_Slides]
+en-US = "Pages, Sheets or Slides Count"
+
+[RID_RESXLS_DP_Prepareable_Issues_Costs]
+en-US = "Prepareable Issues Savings (min)"
+
+[RID_RESXLS_DP_Prepared_Issues]
+en-US = "Prepareable Document Issues"
+
+[RID_RESXLS_DP_Printed]
+en-US = "Printed"
+
+[RID_RESXLS_DP_Revision]
+en-US = "Revision"
+
+[RID_RESXLS_DP_User_Form_Count]
+en-US = "User Form Count"
+
+[RID_RESXLS_ID_All_Documents_with_Issues___Issue_Details]
+en-US = "All Documents with Issues - Issue Details"
+
+[RID_RESXLS_ID_Application]
+en-US = "Application"
+
+[RID_RESXLS_ID_Column__Left]
+en-US = "Column/ Left"
+
+[RID_RESXLS_ID_Document_Name]
+en-US = "Document Name"
+
+[RID_RESXLS_ID_Document_Name_and_Path]
+en-US = "Document Name and Path"
+
+[RID_RESXLS_ID_Issue_Category]
+en-US = "Issue Category"
+
+[RID_RESXLS_ID_Issue_Details]
+en-US = "Issue Details"
+
+[RID_RESXLS_ID_Issue_Type]
+en-US = "Issue Type"
+
+[RID_RESXLS_ID_Line__Row__Top]
+en-US = "Line/ Row/ Top"
+
+[RID_RESXLS_ID_Location]
+en-US = "Location"
+
+[RID_RESXLS_ID_Location_Type]
+en-US = "Location Type"
+
+[RID_RESXLS_OV_3_to_6_months]
+en-US = "3 - 6 months"
+
+[RID_RESXLS_OV_6_to_12_months]
+en-US = "6 - 12 months"
+
+[RID_RESXLS_OV_Complex]
+en-US = "Complex"
+
+[RID_RESXLS_OV_Cost_estimates_for_migration]
+en-US = "Cost estimates for migration of all analyzed documents"
+
+[RID_RESXLS_OV_Costs]
+en-US = "Costs (MD)"
+
+[RID_RESXLS_OV_Docs_with_DocumentMigrationIssues]
+en-US = "Documents with Document Migration Issues (excludes macro issues)"
+
+[RID_RESXLS_OV_Document_Migration_Costs]
+en-US = "Document Migration Costs<CR>( costs based on: issues listed in Issues Analyzed, excludes macros issues )"
+
+[RID_RESXLS_OV_Document_Modification_Dates]
+en-US = "Document Modification Dates"
+
+[RID_RESXLS_OV_Document_Type]
+en-US = "Type"
+
+[RID_RESXLS_OV_Documents_with_Macro_Migration_Issues]
+en-US = "Documents with Macro Migration Issues"
+
+[RID_RESXLS_OV_Excel]
+en-US = "Excel"
+
+[RID_RESXLS_OV_Excel_Costs]
+en-US = "Excel "
+
+[RID_RESXLS_OV_Excel_Spreadsheet]
+en-US = " Spreadsheets (.xls)"
+
+[RID_RESXLS_OV_Excel_Template]
+en-US = " Templates (.xlt)"
+
+[RID_RESXLS_OV_GREATER_THAN_1_year]
+en-US = "> 1 year"
+
+[RID_RESXLS_OV_Last_Modified]
+en-US = "Last Modified"
+
+[RID_RESXLS_OV_LESS_3_months]
+en-US = "< 3 months"
+
+[RID_RESXLS_OV_LESS_THAN3MONTHS]
+en-US = "Templates (.dot)"
+
+[RID_RESXLS_OV_Macro_Migration_Costs]
+en-US = "Manual Macro Migration Costs<CR>( costs based on: number of lines in unique code modules and number of user form controls )"
+
+[RID_RESXLS_OV_Medium]
+en-US = "Medium"
+
+[RID_RESXLS_OV_Minor]
+en-US = "Minor"
+
+[RID_RESXLS_OV_None]
+en-US = "None"
+
+[RID_RESXLS_OV_Number]
+en-US = "Number"
+
+[RID_RESXLS_OV_Number_of_Documents_Analyzed]
+en-US = "Number of Documents Analyzed"
+
+[RID_RESXLS_OV_NumberOfDocs]
+en-US = "Number of docs"
+
+[RID_RESXLS_OV_Potential_savings_macro_conversion]
+en-US = "Potential Savings with Automated Macro Migration of 20 to 60%"
+
+[RID_RESXLS_OV_Potential_savings_prepared_docs]
+en-US = "Potential Savings with Automated Preparation"
+
+[RID_RESXLS_OV_PowerPoint]
+en-US = "PowerPoint"
+
+[RID_RESXLS_OV_PowerPoint_Costs]
+en-US = "PowerPoint "
+
+[RID_RESXLS_OV_PowerPoint_Document]
+en-US = " Presentations (.ppt)"
+
+[RID_RESXLS_OV_PowerPoint_Template]
+en-US = " Templates (.pot)"
+
+[RID_RESXLS_OV_Simple]
+en-US = "Simple"
+
+[RID_RESXLS_OV_Total]
+en-US = "Total"
+
+[RID_RESXLS_OV_Totals]
+en-US = "Totals"
+
+[RID_RESXLS_OV_Word]
+en-US = "Word"
+
+[RID_RESXLS_OV_Word_Costs]
+en-US = "Word "
+
+[RID_RESXLS_OV_Word_Document]
+en-US = "Documents (.doc)"
+
+[RID_RESXLS_OV_Word_Template]
+en-US = "Templates (.dot)"
+
+[RID_RESXLS_PP_Action_Settings]
+en-US = "Action Settings"
+
+[RID_RESXLS_PP_Application]
+en-US = "Application"
+
+[RID_RESXLS_PP_Content___Document_Properties]
+en-US = "Content & Document Properties"
+
+[RID_RESXLS_PP_Document_Name_and_Path]
+en-US = "Document Name and Path"
+
+[RID_RESXLS_PP_Fields]
+en-US = "Fields"
+
+[RID_RESXLS_PP_Format]
+en-US = "Format"
+
+[RID_RESXLS_PP_Notes___Handouts]
+en-US = "Notes & Handouts"
+
+[RID_RESXLS_PP_Objects__Graphics___Textboxes]
+en-US = "Objects, Graphics & Textboxes"
+
+[RID_RESXLS_PP_Portability]
+en-US = "Portability"
+
+[RID_RESXLS_PP_PowerPoint_Documents_with_Issues___Issue_Summary]
+en-US = "PowerPoint Documents with Issues - Issue Summary"
+
+[RID_RESXLS_PP_PowerPoint_Presentation_Name]
+en-US = "PowerPoint Presentation Name"
+
+[RID_RESXLS_PP_VBA_Macros]
+en-US = "VBA Macros"
+
+[RID_RESXLS_RD_All_Documents_with_Macros___Reference_Details]
+en-US = "All Documents with Macros - Reference Details"
+
+[RID_RESXLS_RD_Application]
+en-US = "Application"
+
+[RID_RESXLS_RD_Description]
+en-US = "Description"
+
+[RID_RESXLS_RD_Document_Name]
+en-US = "Document Name"
+
+[RID_RESXLS_RD_Document_Name_and_Path]
+en-US = "Document Name and Path"
+
+[RID_RESXLS_RD_Location]
+en-US = "Location"
+
+[RID_RESXLS_RD_Reference]
+en-US = "Reference"
+
+[RID_RESXLS_RD_Reference_Details]
+en-US = "Reference Details"
+
+[RID_RESXLS_WI_Application]
+en-US = "Application"
+
+[RID_RESXLS_WI_Changes_and_Reviewing]
+en-US = "Changes and Reviewing"
+
+[RID_RESXLS_WI_Content___Document_Properties]
+en-US = "Content & Document Properties"
+
+[RID_RESXLS_WI_Controls]
+en-US = "Controls"
+
+[RID_RESXLS_WI_Document_Name_and_Path]
+en-US = "Document Name and Path"
+
+[RID_RESXLS_WI_Fields]
+en-US = "Fields"
+
+[RID_RESXLS_WI_Format]
+en-US = "Format"
+
+[RID_RESXLS_WI_Index_and_References]
+en-US = "Index and References"
+
+[RID_RESXLS_WI_Objects__Graphics____Frames]
+en-US = "Objects, Graphics & Frames"
+
+[RID_RESXLS_WI_Portability]
+en-US = "Portability"
+
+[RID_RESXLS_WI_Tables]
+en-US = "Tables"
+
+[RID_RESXLS_WI_VBA_Macros]
+en-US = "VBA Macros"
+
+[RID_RESXLS_WI_Word_Document_Name]
+en-US = "Word Document Name"
+
+[RID_RESXLS_WI_Word_Documents_with_Issues___Issue_Summary]
+en-US = "Word Documents with Issues - Issue Summary"
+
+[RID_RESXLS_XL_Application]
+en-US = "Application"
+
+[RID_RESXLS_XL_Changes___Reviewing]
+en-US = "Changes & Reviewing"
+
+[RID_RESXLS_XL_Charts___Tables]
+en-US = "Charts & Tables"
+
+[RID_RESXLS_XL_Excel_Documents_with_Issues___Issue_Summary]
+en-US = "Excel Documents with Issues - Issue Summary"
+
+[RID_RESXLS_XL_Excel_Spreadsheet_Name]
+en-US = "Excel Spreadsheet Name"
+
+[RID_RESXLS_XL_Filters]
+en-US = "Filters"
+
+[RID_RESXLS_XL_Format]
+en-US = "Format"
+
+[RID_RESXLS_XL_Functions]
+en-US = "Functions"
+
+[RID_RESXLS_XL_Objects___Graphics]
+en-US = "Objects & Graphics"
+
+[RID_STR_DVR_XL_EXCEL_DRIVER]
+en-US = "Excel Driver"
+
+[RID_STR_DVR_XL_ISSUES]
+en-US = "2. Issues"
+
+[RID_STR_DVR_XL_PURPOSE]
+en-US = "1. Purpose"
+
+[RID_STR_DVR_XL_READ_README]
+en-US = "If there are any problems running the Wizard please refer to the Readme.doc"
+
+[RID_STR_DVR_XL_THE_MACROS]
+en-US = "The macros in this document are used by the Analysis Wizard to analyze the collection of Excel documents you specify using the Wizard. It should not be modified in any way, the Wizard will open and close it as required by the tool."
+
+[RID_STR_DVR_XL_THIS_DOC]
+en-US = "This document contains VBA macros which collect and analyse Excel documents for known issues when importing into <PRODUCTNAME>"
+
+[RID_STR_DVR_XL_TITLE]
+en-US = "<PRODUCTNAME> Migration Analysis - Excel Driver"
+
+[RID_STR_DVR_PP_TXT2]
+en-US = "This document contains VBA macros which collect and analyse PowerPoint documents for known issues when importing into <PRODUCTNAME>"
+
+[RID_STR_DVR_PP_TXT3]
+en-US = "<PRODUCTNAME> Migration Analysis - PowerPoint Driver"
+
+[RID_STR_DVR_PP_TXT4]
+en-US = "PowerPoint Driver"
+
+[RID_STR_DVR_PP_TXT5]
+en-US = "Purpose"
+
+[RID_STR_DVR_PP_TXT6]
+en-US = "The macros in this document are used by the Analysis Wizard to analyze the collection of PowerPoint documents you specify using the Wizard. It should not be modified in any way, the Wizard will open and close it as required by the tool."
+
+[RID_STR_DVR_PP_TXT7]
+en-US = "Issues"
+
+[RID_STR_DVR_PP_TXT8]
+en-US = "If there are any problems running the Wizard please refer to the Readme.doc"
+
+[RID_STR_WDVR_SOANA]
+en-US = "<PRODUCTNAME> MIGRATION ANALYSIS - WORD DRIVER"
+
+[RID_STR_WDVR_INTRO]
+en-US = "This document contains VBA macros, which collect and analyse Word documents for known issues when importing into <PRODUCTNAME>"
+
+[RID_STR_WDVR_TITLE]
+en-US = "Word Driver"
+
+[RID_STR_WDVR_PURPO]
+en-US = "Purpose"
+
+[RID_STR_WDVR_PARA1]
+en-US = "The macros in this document are used by the Analysis Wizard to analyze the collection of Word documents you specify using the Wizard. It should not be modified in any way, the Wizard will open and close it as required by the tool."
+
+[RID_STR_WDVR_ISSUE]
+en-US = "Issues"
+
+[RID_STR_WDVR_PARA2]
+en-US = "If there are any problems running the Wizard please refer to the Readme.doc"
+
+[RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_COMMENTS]
+en-US = "Allow Only Comments"
+
+[RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_FORM_FIELDS]
+en-US = "Allow Only FormFields"
+
+[RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_REVISIONS]
+en-US = "Allow Only Revisions"
+
+[RID_STR_WORD_ATTRIBUTE_AUTHOR]
+en-US = "Author"
+
+[RID_STR_WORD_ATTRIBUTE_DATASOURCE]
+en-US = "Datasource"
+
+[RID_STR_WORD_ATTRIBUTE_FIELD_TEXT]
+en-US = "Field Text"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_AUTOSIZE]
+en-US = "Autosize"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_ENTRY_MACRO]
+en-US = "Entry macro"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_EXIT_MACRO]
+en-US = "Exit macro"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_FILLIN_ENABLED]
+en-US = "Fill-in enabled"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_GREYED]
+en-US = "FormFields Greyed"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_HELP_KEY_F1_AUTO_TEXT]
+en-US = "Help Key(F1) [Auto Text]"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_HELP_KEY_F1_OWN_TEXT]
+en-US = "Help Key(F1) [Own Text]"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_LOCKED]
+en-US = "Locked"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_MAX_LENGTH]
+en-US = "Maximum Length"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_STATUS_BAR_HELP_AUTO_TEXT]
+en-US = "Status Bar Help [Auto Text]"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_STATUS_BAR_HELP_OWN_TEXT]
+en-US = "Status Bar Help [Own Text]"
+
+[RID_STR_WORD_ATTRIBUTE_FORM_FIELD_TEXT_FORM_FIELD_TYPE]
+en-US = "Text Form Field Type"
+
+[RID_STR_WORD_ATTRIBUTE_FOOTER]
+en-US = "Footer"
+
+[RID_STR_WORD_ATTRIBUTE_HEADER]
+en-US = "Header"
+
+[RID_STR_WORD_ATTRIBUTE_FRAME]
+en-US = "Frame"
+
+[RID_STR_WORD_ATTRIBUTE_GRAPHIC]
+en-US = "Graphic"
+
+[RID_STR_WORD_ATTRIBUTE_OBJECT_HEIGHT_GT_H]
+en-US = "Height Greater Than Header Height"
+
+[RID_STR_WORD_ATTRIBUTE_OBJECT_HEIGHT_GT_F]
+en-US = "Height Greater Than Footer Height"
+
+[RID_STR_WORD_ATTRIBUTE_NUM_OF_GRAPHIC]
+en-US = "Number of Graphics"
+
+[RID_STR_WORD_ATTRIBUTE_OBJECT_LOCATED_BELOW_HEADER]
+en-US = "Located Below Header"
+
+[RID_STR_WORD_ATTRIBUTE_NUM_OF_FRAME]
+en-US = "Number of Frames"
+
+[RID_STR_WORD_ATTRIBUTE_HEADER_EVEN_PAGES]
+en-US = "Even Page(s)"
+
+[RID_STR_WORD_ATTRIBUTE_HEADER_FIRST_PAGE]
+en-US = "First Page"
+
+[RID_STR_WORD_ATTRIBUTE_HEADER_ODD_PAGES]
+en-US = "Odd Page(s)"
+
+[RID_STR_WORD_ATTRIBUTE_HEADER_PAGE_DEFAULT]
+en-US = "Page Default"
+
+[RID_STR_WORD_ATTRIBUTE_GRAPHICTYPE]
+en-US = "Graphic Type"
+
+[RID_STR_WORD_ATTRIBUTE_INLINESHAPE]
+en-US = "Inline Shape"
+
+[RID_STR_WORD_ATTRIBUTE_INNER_TABLE]
+en-US = "InnerTable"
+
+[RID_STR_WORD_ATTRIBUTE_LEADER]
+en-US = "Leader"
+
+[RID_STR_WORD_ATTRIBUTE_LINK]
+en-US = "Link"
+
+[RID_STR_WORD_ATTRIBUTE_LOCATION]
+en-US = "Location"
+
+[RID_STR_WORD_ATTRIBUTE_NUMBER_CUSTOM_PARAGRAPHS]
+en-US = "Number of custom paragraphs"
+
+[RID_STR_WORD_ATTRIBUTE_OUTER_TABLE]
+en-US = "Outer Table"
+
+[RID_STR_WORD_ATTRIBUTE_PASSWORD_TO_MODIFY]
+en-US = "Password to Modify"
+
+[RID_STR_WORD_ATTRIBUTE_PASSWORD_TO_OPEN]
+en-US = "Password to Open"
+
+[RID_STR_WORD_ATTRIBUTE_PROTECTION]
+en-US = "Protection"
+
+[RID_STR_WORD_ATTRIBUTE_SET]
+en-US = "Set"
+
+[RID_STR_WORD_ATTRIBUTE_START_COL]
+en-US = "Start Column"
+
+[RID_STR_WORD_ATTRIBUTE_START_ROW]
+en-US = "Start Row"
+
+[RID_STR_WORD_ATTRIBUTE_TEXT]
+en-US = "Text"
+
+[RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_ISSUE]
+en-US = "Potential problem with TOC Format matching Modern style"
+
+[RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_NOT_MIGRATE_CLEAN]
+en-US = "TOC Format will not migrate cleanly"
+
+[RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_NOT_ROUNDTRIP_CLEAN]
+en-US = "TOC will not roundtrip cleanly due to following settings"
+
+[RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FROM_TEMPLATE_WITH_LEVEL]
+en-US = "Format [FromTemplate] Level"
+
+[RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FROM_TEMPLATE_TAB_DOTS]
+en-US = "Format [FromTemplate] TabLeader [Dots]"
+
+[RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FORMAL_WITH_LEVEL]
+en-US = "Format [Formal] Level"
+
+[RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_CLASSIC_WITH_LEVEL]
+en-US = "Format [Classic] Level"
+
+[RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_DISTINCTIVE_WITH_LEVEL]
+en-US = "Format [Distinctive] Level"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_CALCULATION]
+en-US = "Calculation"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_CHECK_BOX]
+en-US = "Check Box Form Field"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_CURRENT_DATE]
+en-US = "Current Date"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_CURRENT_TIME]
+en-US = "Current Time"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_DATE]
+en-US = "Date"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_DATE]
+en-US = "Default date"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_EXPRESSION]
+en-US = "Expression"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_NUMBER]
+en-US = "Default number"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_TEXT]
+en-US = "Default text"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_TIME]
+en-US = "Default time"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_DROP_DOWN]
+en-US = "Drop-Down Form Field"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_DATE]
+en-US = "Date format"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_NUMBER]
+en-US = "Number format"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_TEXT]
+en-US = "Text format"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_TIME]
+en-US = "Time format"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_NUMBER]
+en-US = "Number"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_REGULAR]
+en-US = "Regular"
+
+[RID_STR_WORD_ENUMERATION_FORM_FIELD_TEXT]
+en-US = "Text Form Field"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_ASK]
+en-US = "Ask"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER]
+en-US = "Auto Number"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER_LEGAL]
+en-US = "Auto Number Legal"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER_OUTLINE]
+en-US = "Auto Number Outline"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_FIELD_NAME_NOT_KNOWN]
+en-US = "Field name not known"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_FILL_IN]
+en-US = "Fill In"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_MERGE_RECORDS]
+en-US = "Merge Records"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_MERGE_FIELDS]
+en-US = "Merge Fields"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_NEXT]
+en-US = "Next"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_REVISION_NUMBER]
+en-US = "Revision Number"
+
+[RID_STR_WORD_ENUMERATION_MAILMERGE_SEQUENCE]
+en-US = "Sequence"
+
+[RID_STR_WORD_ENUMERATION_INDEX_TABLES_CLASSIC]
+en-US = "Classic"
+
+[RID_STR_WORD_ENUMERATION_INDEX_TABLES_DISTINCTIVE]
+en-US = "Distinctive"
+
+[RID_STR_WORD_ENUMERATION_INDEX_TABLES_FANCY]
+en-US = "Fancy"
+
+[RID_STR_WORD_ENUMERATION_INDEX_TABLES_FORMAL]
+en-US = "Formal"
+
+[RID_STR_WORD_ENUMERATION_INDEX_TABLES_MODERN]
+en-US = "Modern"
+
+[RID_STR_WORD_ENUMERATION_INDEX_TABLES_SIMPLE]
+en-US = "Simple"
+
+[RID_STR_WORD_ENUMERATION_INDEX_TABLES_FROM_TEMPLATE]
+en-US = "From Template"
+
+[RID_STR_WORD_ENUMERATION_INDEX_LEADER_DASHES]
+en-US = "Dashes"
+
+[RID_STR_WORD_ENUMERATION_INDEX_LEADER_DOTS]
+en-US = "Dots"
+
+[RID_STR_WORD_ENUMERATION_INDEX_LEADER_HEAVY]
+en-US = "Heavy"
+
+[RID_STR_WORD_ENUMERATION_INDEX_LEADER_LINES]
+en-US = "Lines"
+
+[RID_STR_WORD_ENUMERATION_INDEX_LEADER_MIDDLEDOT]
+en-US = "MiddleDot"
+
+[RID_STR_WORD_ENUMERATION_INDEX_LEADER_SPACES]
+en-US = "Spaces"
+
+[RID_STR_WORD_ENUMERATION_UNKNOWN]
+en-US = "Unknown"
+
+[RID_STR_WORD_FALSE]
+en-US = "False"
+
+[RID_STR_WORD_TRUE]
+en-US = "True"
+
+[RID_STR_WORD_ISSUE_FIELDS]
+en-US = "Fields"
+
+[RID_STR_WORD_ISSUE_INDEX_AND_REFERENCES]
+en-US = "Indexes and References"
+
+[RID_STR_WORD_ISSUE_OBJECTS_GRAPHICS_AND_FRAMES]
+en-US = "Objects, Graphics and Frames"
+
+[RID_STR_WORD_ISSUE_TABLES]
+en-US = "Tables"
+
+[RID_STR_WORD_NOTE_FORM_FIELD_ATTRIBUTES_LOST]
+en-US = "following attribute values lost"
+
+[RID_STR_WORD_NOTE_FORM_FIELD_TYPE_LOST]
+en-US = "Type lost, converted to plain text"
+
+[RID_STR_WORD_NOTE_NESTED_TABLE_WILL_BE_LOST]
+en-US = "The inner table will be lost on roundtrip."
+
+[RID_STR_WORD_NOTE_TOA_FIELD_LOST_ON_ROUNDTRIP]
+en-US = "Field will be lost on roundtrip"
+
+[RID_STR_WORD_NOTE_TOA_MIGRATE_AS_PLAIN_TEXT]
+en-US = "Table will migrate as plain text"
+
+[RID_STR_WORD_SUBISSUE_APPEARANCE]
+en-US = "Appearance"
+
+[RID_STR_WORD_SUBISSUE_COMMENT]
+en-US = "Comment"
+
+[RID_STR_WORD_SUBISSUE_CUSTOM_BULLET_LIST]
+en-US = "Custom bullet list"
+
+[RID_STR_WORD_SUBISSUE_FORM_FIELD]
+en-US = "Form Field"
+
+[RID_STR_WORD_SUBISSUE_MAILMERGE_DATASOURCE]
+en-US = "Mail Merge Datasource"
+
+[RID_STR_WORD_SUBISSUE_MAILMERGE_FIELD]
+en-US = "Mail Merge Field"
+
+[RID_STR_WORD_SUBISSUE_NESTED_TABLES]
+en-US = "Nested Tables"
+
+[RID_STR_WORD_SUBISSUE_OBJECT_IN_HEADER_FOOTER]
+en-US = "Object in Header Footer"
+
+[RID_STR_WORD_SUBISSUE_TABLE_OF_AUTHORITIES]
+en-US = "Table of Authorities"
+
+[RID_STR_WORD_SUBISSUE_TABLE_OF_AUTHORITIES_FIELD]
+en-US = "Table of Authorities Field"
+
+[RID_RESXLT_COST_CHART_Radar_AWF]
+en-US = "Radar chart, Radar with symbol"
+
+[RID_RESXLT_COST_CHART_Radar_Comment]
+en-US = "Although <PRODUCTNAME> Net charts appear similar to Excel Radar charts, but they are not equivalent. Radar charts are drawn clockwise whereas Net charts are drawn counter-clockwise."
+
+[RID_RESXLT_COST_CHART_Scattered_AWF]
+en-US = "Scattered chart"
+
+[RID_RESXLT_COST_CHART_Scattered_Comment]
+en-US = "The XY-Chart of <PRODUCTNAME> has the same appearance as the scattered chart in Excel."
+
+[RID_RESXLT_COST_CHART_Bubble_AWF]
+en-US = "Bubble chart"
+
+[RID_RESXLT_COST_CHART_Bubble_Comment]
+en-US = "XY-Chart has similar functionality to a Bubble chart in Excel but a completely different look."
+
+[RID_RESXLT_COST_CHART_BarOfPie_AWF]
+en-US = "Bar of Pie and Pie of Pie charts"
+
+[RID_RESXLT_COST_CHART_BarOfPie_Comment]
+en-US = "<PRODUCTNAME> imports these types of charts as Column charts, which look completely different."
+
+[RID_RESXLT_COST_CHART_FilledRadar_AWF]
+en-US = "Filled Radar chart"
+
+[RID_RESXLT_COST_CHART_FilledRadar_Comment]
+en-US = "This chart type does not have a <PRODUCTNAME> equivalent. Instead, the import filter in <PRODUCTNAME> converts a Filled Radar chart to a Column chart."
+
+[RID_RESXLT_COST_CHART_Surface_AWF]
+en-US = "Surface chart"
+
+[RID_RESXLT_COST_CHART_Surface_Comment]
+en-US = "This chart type does not have a <PRODUCTNAME> equivalent. The imported chart will look completely different than the original chart."
+
+[RID_RESXLT_COST_PIVOT_MultConsRanges_AWF]
+en-US = "Multiple Consolidation Ranges"
+
+[RID_RESXLT_COST_PIVOT_MultConsRanges_Comment]
+en-US = "A Pivot table from Excel can use data from multiple consolidation ranges, Calc does not support this."
+
+[RID_RESXLT_COST_PIVOT_PivotChart_Comment]
+en-US = "A pivot chart is created dynamically in Excel using a pivot table as it's datasource. <PRODUCTNAME> does not support generating charts from dynamically created tables."
+
+[RID_RESXLT_COST_PIVOT_ManSort_AWF]
+en-US = "Manual Sorting"
+
+[RID_RESXLT_COST_PIVOT_ManSort_Comment]
+en-US = "Pivot table users could sort the results manually. Excel preserves the sorting. Calc does not."
+
+[RID_RESXLT_COST_PIVOT_CalcVal_AWF]
+en-US = "Calculated Values"
+
+[RID_RESXLT_COST_PIVOT_CalcVal_Comment]
+en-US = "Excel users can create a formula that writes the results in a new column within the pivot table. Users can use the same type of formula to replace the content of an existing column. Calc does not support this."
+
+[RID_RESXLT_COST_PIVOT_ExternData_AWF]
+en-US = "External Data"
+
+[RID_RESXLT_COST_PIVOT_ExternData_Comment]
+en-US = "A Pivot table from Excel can use data from external sources. Calc does not support this."
+
+[RID_RESXLS_COST_IAR_Numbering_IssueType]
+en-US = "Numbering Order"
+
+[RID_RESXLS_COST_IAR_Numbering_Comment]
+en-US = "<PRODUCTNAME> first calculates numbering located in frames and then the numbering within the text. Word does not separate this."
+
+[RID_RESXLS_COST_IAR_Numbering_WorkAround]
+en-US = "Move the numberings from within the frames into the text body area."
+
+[RID_RESXLS_COST_WorkbookPartProtection_AWF]
+en-US = "Protection for Parts of Workbooks"
+
+[RID_RESXLS_COST_WorkbookPartProtection_Comment]
+en-US = "In Excel users can protect certain parts of workbooks. Workbooks, sheets, charts and ranges can all be individually protected. These do not all migrate to <PRODUCTNAME>."
+
+[RID_RESXLS_COST_WorkbookPartProtection_WorkAround]
+en-US = "Do not protect Excel workbooks"
+
+[RID_RESXLS_COST_FORMAT_TabStop_IssueType]
+en-US = "Tabstop"
+
+[RID_RESXLS_COST_FORMAT_TabStop_Comment]
+en-US = "The minimum tabstop distance in word is shorter than <PRODUCTNAME>. That means that if, in Word, the user tabs a distance shorter than <PRODUCTNAME>'s minimum, that after migration the text spacing will be pushed one tab further."
+
+[RID_RESXLS_COST_GraphicAnchorEndOfPage_IssueType]
+en-US = "Graphic Object Anchor - End of Page"
+
+[RID_RESXLS_COST_GraphicAnchorEndOfPage_Comment]
+en-US = "If a frame or graphic object (not including AutoShapes) is too close to the end of a page it will be pushed to the next page in <PRODUCTNAME>."
+
+[RID_RESXLS_COST_GraphicAnchorLostGraphic_IssueType]
+en-US = "Graphic Object Anchor - Lost Graphic Object"
+
+[RID_RESXLS_COST_GraphicAnchorLostGraphic_Comment]
+en-US = "If a graphic object is anchored off a paragraph (Format Autoshape | Layout | Advanced | Vertical Position = Paragraph) which contains just a blank carriage return, then this can lead to the graphic object being lost in <PRODUCTNAME>."
+
+[RID_RESXLS_COST_TABLE_Leading_IssueType]
+en-US = "Leading"
+
+[RID_RESXLS_COST_TABLE_Leading_Comment]
+en-US = "Leading can cause extra lines in tables. In a table, if the column width is very close to the text, it can lead to a single character being pushed to new line in <PRODUCTNAME>. This is caused by extra leading in <PRODUCTNAME>."
+
+[RID_RESXLS_COST_TABLE_Misplaced_IssueType]
+en-US = "Misplaced"
+
+[RID_RESXLS_COST_TABLE_Misplaced_Comment]
+en-US = "Text wrapping can cause misplaced tables."
+
+[RID_RESXLS_COST_TOC_HeadlinesWithoutNum_IssueType]
+en-US = "Headings Without Numbering"
+
+[RID_RESXLS_COST_TOC_HeadlinesWithoutNum_Comment]
+en-US = "Many users do not use automatic heading or section numbering. They type the numbers in front of the heading manually instead. Word displays the first TAB of the heading in the TOC. <PRODUCTNAME> does not. The TOC will look different."
+
+[RID_RESXLS_COST_TOC_HeadlinesWithoutNum_WorkAround]
+en-US = "Replace the manual numbering with automatic numbering or add spaces between the manual numbers and the text."
+
+[RID_RESXLS_COST_TABLE_AlignmentOfObjects_IssueType]
+en-US = "Horizontal Alignment of Objects"
+
+[RID_RESXLS_COST_TABLE_AlignmentOfObjects_Comment]
+en-US = "Graphics, WordArt or similar objects located in text tables get displayed in the wrong position when the absolute position of the horizontal alignment is defined instead of a relative position."
+
+[RID_RESXLS_COST_TABLE_AlignmentOfObjects_WorkAround]
+en-US = "Adjust the horizontal alignment manually."
+
+[RID_STR_WORD_ATTRIBUTE_COUNT]
+en-US = "Count"
+
+[RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_DATEDIF]
+en-US = "<PRODUCTNAME> Calc does not have an equivalent 'DATEDIF' function."
+
+[RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_PHONETIC]
+en-US = "<PRODUCTNAME> does not have an equivalent 'PHONETIC' function."
+
+[RID_STR_PP_SUBISSUE_BACKGROUND_NOTE]
+en-US = "Fill style background colors applied to shapes in PowerPoint might be lost after a round trip conversion in <PRODUCTNAME>."
+
+[RID_STR_PP_SUBISSUE_NUMBERING_NOTE]
+en-US = "Only the first paragraph in a numbered sequence can start with "1" in <PRODUCTNAME>. The numbering can only start with "2" or higher in subsequent paragraphs."
+
+[RID_STR_PP_SUBISSUE_HYPERLINK_NOTE]
+en-US = "Unlike PowerPoint, <PRODUCTNAME> does not support multiple text formats in hyperlink text. Instead, <PRODUCTNAME> creates a separate hyperlink for each formatting style in an imported hyperlink."
+
+[RID_STR_PP_SUBISSUE_HYPERLINK_SPLIT_NOTE]
+en-US = "PowerPoint splits the text representation of a hyperlink into several lines when the text box is not wide enough. <PRODUCTNAME> does not split hyperlinks so the hyperlink text might extend out of the text box."
+
+[RID_STR_PP_SUBISSUE_TEMPLATE_NOTE]
+en-US = "<PRODUCTNAME> does not support the PowerPoint 'Title Slide' layout. When you import this layout, most of the subtitle object attributes are converted to hard attributes. PowerPoint 97 users require the multiple master page patch from Microsoft to view 'Title Slide' layouts that are contained in round trip documents."
+
+[RID_STR_PP_SUBISSUE_TABSTOP_NOTE]
+en-US = "Unlike PowerPoint, <PRODUCTNAME> only supports one default tab stop in a document and not one for each text object. If a PowerPoint document uses more than one default tab stop for text objects, <PRODUCTNAME> assigns hard tab stops to these text objects to ensure an identical layout when you import the document. The default tab stops are not reinserted when you save the document in PowerPoint format."
+
+[RID_STR_PP_SUBISSUE_FONTS]
+en-US = "Embedded Fonts"
+
+[RID_STR_PP_SUBISSUE_FONTS_NOTE]
+en-US = "<PRODUCTNAME> doesn't support embedded fonts."
+
+[RID_STR_COMMON_SUBISSUE_TRANSPARENCY_NOTE]
+en-US = "Microsoft Office supports a color attribute that allows you to make a bitmap color transparent without modifying the orginal bitmap. When you import a document with such a bitmap, <PRODUCTNAME> changes the bitmap to match the transparent color. The transparent color attribute is lost."
+
+[RID_STR_COMMON_SUBISSUE_LINE_NOTE]
+en-US = "<PRODUCTNAME> does not support all of the line styles that you can apply to MS Office AutoShapes. As a result, <PRODUCTNAME> replaces double and triple line styles with a single line."
+
+[RID_STR_COMMON_SUBISSUE_GRADIENT_PRESET_NOTE]
+en-US = "<PRODUCTNAME> does not support preset gradient styles."
+
+[RID_STR_COMMON_SUBISSUE_GRADIENT_CORNER_NOTE]
+en-US = "<PRODUCTNAME> does not support the 'from center' gradient style."
+
+[RID_STR_COMMON_SUBISSUE_GRADIENT_CENTER_NOTE]
+en-US = "<PRODUCTNAME> does not support the 'from corner' gradient style."
+
+[RID_RESXLS_COST_DB_Query]
+en-US = "Database Query"
+
+[RID_RESXLS_COST_DB_Query_Comment]
+en-US = "Issue: <PRODUCTNAME> can not import the database query. "
+
+[RID_RESXLS_COST_LineStyle]
+en-US = "Line Style"
+
+[RID_RESXLS_COST_LineStyle_Comment]
+en-US = "Issue: Line style is not supported."
+
+[RID_RESXLS_COST_Numbering]
+en-US = "Numbering"
+
+[RID_RESXLS_COST_Numbering_Comment]
+en-US = "Issue: Text numbering starts with wrong number."
+
+[RID_RESXLS_COST_Template]
+en-US = "Layout 'Title Slide'"
+
+[RID_RESXLS_COST_Template_Comment]
+en-US = "Issue: 'Title Slide' layout is not supported."
+
+[RID_RESXLS_COST_DATEDIF_Note]
+en-US = "Use a date or time function that <PRODUCTNAME> Calc supports."
+
+[RID_RESXLS_COST_Tabstop]
+en-US = "Default Tabulator"
+
+[RID_RESXLS_COST_Tabstop_Comment]
+en-US = "Issue: Different default tabulators are not supported for text objects."
+
+[RID_RESXLS_COST_Transparent]
+en-US = "Transparent Color"
+
+[RID_RESXLS_COST_Transparent_Comment]
+en-US = "Issue: <PRODUCTNAME> does not support the transparent color attribute in bitmaps."
+
+[RID_RESXLS_COST_GradientStyle]
+en-US = "Gradient Style"
+
+[RID_RESXLS_COST_GradientStyle_Comment]
+en-US = "Issue: Unsupported gradient styles used."
+
+[RID_RESXLS_COST_GradientStyle_Note]
+en-US = "Replacing gradient styles by styles that are supported."
+
+[RID_RESXLS_COST_Hyperlink]
+en-US = "Textrange Hyperlinks"
+
+[RID_RESXLS_COST_Hyperlink_Comment]
+en-US = "Issue: Multiple text formatting is not supported in Hyperlinks."
+
+[RID_RESXLS_COST_HyperlinkSplit]
+en-US = "Split Hyperlinks"
+
+[RID_RESXLS_COST_HyperlinkSplit_Comment]
+en-US = "Issue: Hyperlink will not be split onto several lines."
+
+[RID_RESXLS_COST_Background]
+en-US = "Fill Type Background"
+
+[RID_RESXLS_COST_Background_Comment]
+en-US = "Issue: Fillstyle background is not supported."
+
diff --git a/migrationanalysis/src/driver_docs/makefile.mk b/migrationanalysis/src/driver_docs/makefile.mk
new file mode 100644
index 000000000000..23b8d5f7b330
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/makefile.mk
@@ -0,0 +1,127 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=migrationanalysis
+TARGET=driverdocs
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+PAW_DOCDEST:=$(BIN)$/ProAnalysisWizard$/Resources
+PAW_DATDEST:=$(BIN)$/ProAnalysisWizard$/Resources$/lang
+
+PAW_DRIVER_DOCS:= \
+ $(PAW_DOCDEST)$/_OOoDocAnalysisExcelDriver.xls \
+ $(PAW_DOCDEST)$/_OOoDocAnalysisWordDriver.doc \
+ $(PAW_DOCDEST)$/_OOoDocAnalysisPPTDriver.ppt
+
+PAW_DRIVER_DOCS_SRC:= \
+ .$/PAW$/_OOoDocAnalysisExcelDriver.xls \
+ .$/PAW$/_OOoDocAnalysisWordDriver.doc \
+ .$/PAW$/_OOoDocAnalysisPPTDriver.ppt
+
+PAW_DAT_FILES= \
+ $(foreach,i,$(alllangiso) $(PAW_DATDEST)$/$i.dat)
+
+DAT_DATA_FILE=allstrings.ulf
+DAT_DON_FILE_PAW=$(MISC)$/$(DAT_DATA_FILE).paw
+
+ULFFILES=$(DAT_DATA_FILE)
+.IF "$(WITH_LANG)"!=""
+ULFDIR:=$(COMMONMISC)$/$(TARGET)
+.ELSE # "$(WITH_LANG)"!=""
+ULFDIR:=.
+.ENDIF # "$(WITH_LANG)"!=""
+
+COMMON_SRC:= \
+ .$/sources$/AnalysisDriver.bas \
+ .$/sources$/CollectedFiles.cls \
+ .$/sources$/CommonMigrationAnalyser.bas \
+ .$/sources$/CommonPreparation.bas \
+ .$/sources$/DocumentAnalysis.cls \
+ .$/sources$/FileTypeAssociation.cls \
+ .$/sources$/IssueInfo.cls \
+ .$/sources$/LocalizeResults.bas \
+ .$/sources$/PrepareInfo.cls \
+ .$/sources$/StringDataManager.cls \
+ .$/sources$/Stripped_OOoDocAnalysisExcelDriver.xls \
+ .$/sources$/Stripped_OOoDocAnalysisPPTDriver.ppt \
+ .$/sources$/Stripped_OOoDocAnalysisWordDriver.doc \
+ .$/sources$/common_res.bas \
+ .$/sources$/results_res.bas
+
+EXCEL_SRC:= \
+ .$/sources$/excel$/ApplicationSpecific.bas \
+ .$/sources$/excel$/MigrationAnalyser.cls \
+ .$/sources$/excel$/Preparation.bas \
+ .$/sources$/excel$/excel_res.bas
+
+PP_SRC:= \
+ .$/sources$/powerpoint$/ApplicationSpecific.bas \
+ .$/sources$/powerpoint$/MigrationAnalyser.cls \
+ .$/sources$/powerpoint$/Preparation.bas \
+ .$/sources$/powerpoint$/powerpoint_res.bas
+
+WORD_SRC:= \
+ .$/sources$/word$/ApplicationSpecific.bas \
+ .$/sources$/word$/MigrationAnalyser.cls \
+ .$/sources$/word$/Preparation.bas \
+ .$/sources$/word$/word_res.bas
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+ALLTAR : $(PAW_DRIVER_DOCS) $(DAT_DON_FILE_PAW)
+
+$(PAW_DRIVER_DOCS) : .$/PAW$/$$(@:f)
+ -$(MKDIRHIER) $(@:d)
+ $(COPY) .$/PAW$/$(@:f) $@
+
+$(PAW_DAT_FILES) : $(ULFDIR)$/$(DAT_DATA_FILE)
+ -$(MKDIRHIER) $(@:d)
+ $(TOUCH) $@
+
+$(DAT_DON_FILE_PAW) : $(PAW_DAT_FILES)
+ @echo --------------------------------
+ @echo building $@
+ -$(MKDIRHIER) $(@:d)
+ @echo making $(PAW_DAT_FILES)
+ $(PERL) ulf2dat.pl -i $(ULFDIR)$/$(DAT_DATA_FILE) $(PAW_DAT_FILES) && $(TOUCH) $@
+
+.IF "$(VB6_LOCATION)" != ""
+$(PAW_DRIVER_DOCS_SRC) : $(COMMON_SRC) $(EXCEL_SRC) $(PP_SRC) $(WORD_SRC)
+ @echo --------------------------------
+ @echo create driver docs
+ cscript CreateDriverDocs.wsf
+.ENDIF
+
diff --git a/migrationanalysis/src/driver_docs/sources/AnalysisDriver.bas b/migrationanalysis/src/driver_docs/sources/AnalysisDriver.bas
new file mode 100644
index 000000000000..cb9f85b376c1
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/AnalysisDriver.bas
@@ -0,0 +1,3646 @@
+Attribute VB_Name = "AnalysisDriver"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+' Declare Public variables.
+Public Type ShortItemId
+ cb As Long
+ abID As Byte
+End Type
+
+Public Type ITEMIDLIST
+ mkid As ShortItemId
+End Type
+
+Public Declare Function FindWindow Lib "user32" Alias _
+ "FindWindowA" (ByVal lpClassName As String, _
+ ByVal lpWindowName As Long) As Long
+
+Private Declare Function GetTickCount Lib "kernel32" () As Long
+
+'This function saves the passed value to the file,
+'under the section and key names specified.
+'If the ini file, lpFileName, does not exist, it is created.
+'If the section, lpSectionName, does not exist, it is created.
+'If the key name, lpKeyName, does not exist, it is created.
+'If the key name exists, it's value, lpString, is replaced.
+Private Declare Function WritePrivateProfileString Lib "kernel32" _
+ Alias "WritePrivateProfileStringA" _
+ (ByVal lpSectionName As String, _
+ ByVal lpKeyName As Any, _
+ ByVal lpString As Any, _
+ ByVal lpFileName As String) As Long
+
+Private Declare Function GetPrivateProfileString Lib "kernel32" _
+ Alias "GetPrivateProfileStringA" _
+ (ByVal lpSectionName As String, _
+ ByVal lpKeyName As Any, _
+ ByVal lpDefault As String, _
+ ByVal lpReturnedString As String, _
+ ByVal nSize As Long, _
+ ByVal lpFileName As String) As Long
+
+Private Declare Function UrlEscape Lib "shlwapi" _
+ Alias "UrlEscapeA" _
+ (ByVal pszURL As String, _
+ ByVal pszEscaped As String, _
+ pcchEscaped As Long, _
+ ByVal dwFlags As Long) As Long
+
+Public Declare Function SHGetPathFromIDList Lib "shell32.dll" _
+ (ByVal pidl As Long, ByVal pszPath As String) As Long
+
+Public Declare Function SHGetSpecialFolderLocation Lib _
+ "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder _
+ As Long, pidl As ITEMIDLIST) As Long
+
+Public Const LOCALE_ILANGUAGE As Long = &H1 'language id
+Public Const LOCALE_SLANGUAGE As Long = &H2 'localized name of lang
+Public Const LOCALE_SENGLANGUAGE As Long = &H1001 'English name of lang
+Public Const LOCALE_SABBREVLANGNAME As Long = &H3 'abbreviated lang name
+Public Const LOCALE_SNATIVELANGNAME As Long = &H4 'native name of lang
+Public Const LOCALE_ICOUNTRY As Long = &H5 'country code
+Public Const LOCALE_SCOUNTRY As Long = &H6 'localized name of country
+Public Const LOCALE_SENGCOUNTRY As Long = &H1002 'English name of country
+Public Const LOCALE_SABBREVCTRYNAME As Long = &H7 'abbreviated country name
+Public Const LOCALE_SNATIVECTRYNAME As Long = &H8 'native name of country
+Public Const LOCALE_SINTLSYMBOL As Long = &H15 'intl monetary symbol
+Public Const LOCALE_IDEFAULTLANGUAGE As Long = &H9 'def language id
+Public Const LOCALE_IDEFAULTCOUNTRY As Long = &HA 'def country code
+Public Const LOCALE_IDEFAULTCODEPAGE As Long = &HB 'def oem code page
+Public Const LOCALE_IDEFAULTANSICODEPAGE As Long = &H1004 'def ansi code page
+Public Const LOCALE_IDEFAULTMACCODEPAGE As Long = &H1011 'def mac code page
+
+Public Const LOCALE_IMEASURE As Long = &HD '0 = metric, 1 = US
+Public Const LOCALE_SSHORTDATE As Long = &H1F 'short date format string
+
+'#if(WINVER >= &H0400)
+Public Const LOCALE_SISO639LANGNAME As Long = &H59 'ISO abbreviated language name
+Public Const LOCALE_SISO3166CTRYNAME As Long = &H5A 'ISO abbreviated country name
+'#endif /* WINVER >= as long = &H0400 */
+
+'#if(WINVER >= &H0500)
+Public Const LOCALE_SNATIVECURRNAME As Long = &H1008 'native name of currency
+Public Const LOCALE_IDEFAULTEBCDICCODEPAGE As Long = &H1012 'default ebcdic code page
+Public Const LOCALE_SSORTNAME As Long = &H1013 'sort name
+'#endif /* WINVER >= &H0500 */
+
+Public Declare Function GetSystemDefaultLangID Lib "kernel32" () As Long
+Public Declare Function GetUserDefaultLangID Lib "kernel32" () As Long
+
+Public Declare Function GetLocaleInfo Lib "kernel32" _
+ Alias "GetLocaleInfoA" _
+ (ByVal Locale As Long, _
+ ByVal LCType As Long, _
+ ByVal lpLCData As String, _
+ ByVal cchData As Long) As Long
+
+
+Public Const CWIZARD = "analysis"
+
+Const CROWOFFSET = 2
+Const CDOCPROP_PAW_ROWOFFSET = 3
+Private mDocPropRowOffset As Long
+
+Const CNUMBERDOC_ALL = "All"
+Const CTOTAL_DOCS_ANALYZED = "TotalDocsAnalysed"
+Const CNUMDAYS_IN_MONTH = 30
+Const CMAX_LIMIT = 10000
+
+Const CISSUE_DETDOCNAME = 1
+Const CISSUE_DETDOCAPPLICATION = CISSUE_DETDOCNAME + 1
+Const CISSUE_DETTYPE = CISSUE_DETDOCAPPLICATION + 1
+Const CISSUE_DETSUBTYPE = CISSUE_DETTYPE + 1
+Const CISSUE_DETLOCATION = CISSUE_DETSUBTYPE + 1
+Const CISSUE_DETSUBLOCATION = CISSUE_DETLOCATION + 1
+Const CISSUE_DETLINE = CISSUE_DETSUBLOCATION + 1
+Const CISSUE_DETCOLUMN = CISSUE_DETLINE + 1
+Const CISSUE_DETATTRIBUTES = CISSUE_DETCOLUMN + 1
+Const CISSUE_DETNAMEANDPATH = CISSUE_DETATTRIBUTES + 1
+
+Const CREF_DETDOCNAME = 1
+Const CREF_DETDOCAPPLICATION = CREF_DETDOCNAME + 1
+Const CREF_DETREFERENCE = CREF_DETDOCAPPLICATION + 1
+Const CREF_DETDESCRIPTION = CREF_DETREFERENCE + 1
+Const CREF_DETLOCATION = CREF_DETDESCRIPTION + 1
+Const CREF_DETATTRIBUTES = CREF_DETLOCATION + 1
+Const CREF_DETNAMEANDPATH = CREF_DETATTRIBUTES + 1
+
+Const CINPUT_DIR = "indir"
+Const COUTPUT_DIR = "outdir"
+Const CRESULTS_FILE = "resultsfile"
+Const CLOG_FILE = "logfile"
+Const CRESULTS_TEMPLATE = "resultstemplate"
+Const CRESULTS_EXIST = "resultsexist"
+Const COVERWRITE_FILE = "overwritefile"
+Const CNEW_RESULTS_FILE = "newresultsfile"
+Const CINCLUDE_SUBDIRS = "includesubdirs"
+Const CDEBUG_LEVEL = "debuglevel"
+Const COUTPUT_TYPE = "outputtype"
+Const COUTPUT_TYPE_XLS = "xls"
+Const COUTPUT_TYPE_XML = "xml"
+Const COUTPUT_TYPE_BOTH = "both"
+Const COVERVIEW_TITLE_LABEL = "OV_Document_Analysis_Overview_lbl"
+Const CDEFAULT_PASSWORD = "defaultpassword"
+Const CVERSION = "version"
+Const CTITLE = "title"
+Const CDOPREPARE = "prepare"
+Const CISSUES_LIMIT = "issuesmonthlimit"
+Const CSINGLE_FILE = "singlefile"
+Const CFILE_LIST = "filelist"
+Const CSTAT_FILE = "statfilename"
+Const C_ABORT_ANALYSIS = "abortanalysis"
+Const C_DOCS_LESS_3_MONTH = "DocumentsYoungerThan3Month"
+Const C_DOCS_LESS_6_MONTH = "DocumentsYoungerThan6Month"
+Const C_DOCS_LESS_12_MONTH = "DocumentsYoungerThan12Month"
+Const C_DOCS_MORE_12_MONTH = "DocumentsOlderThan12Month"
+
+Private Const C_ANALYSIS As String = "Analysis"
+Private Const C_LAST_CHECKPOINT As String = "LastCheckpoint"
+Private Const C_NEXT_FILE As String = "NextFile"
+Private Const C_MAX_CHECK_INI As String = "FilesBeforeSave"
+Private Const C_MAX_WAIT_BEFORE_WRITE_INI As String = "SecondsBeforeSave"
+Private Const C_MAX_RANGE_PROCESS_TIME_INI As String = "ExcelMaxRangeProcessTime"
+Private Const C_ERROR_HANDLING_DOC As String = "_ERROR_HANDLING_DOC_"
+Private Const C_MAX_CHECK As Long = 100
+Private Const C_MAX_WAIT_BEFORE_WRITE As Long = 300 ' sec
+Private Const C_MAX_RANGE_PROCESS_TIME As Integer = 30 'sec
+
+Private Const C_STAT_STARTING As Integer = 1
+Private Const C_STAT_DONE As Integer = 2
+Private Const C_STAT_FINISHED As Integer = 3
+
+Private Type DocumentCount
+ numDocsAnalyzed As Long
+ numDocsAnalyzedWithIssues As Long
+ numMinorIssues As Long
+ numComplexIssues As Long
+ numMacroIssues As Long
+ numPreparableIssues As Long
+ totalMacroCosts As Long
+ totalDocIssuesCosts As Long
+ totalPreparableIssuesCosts As Long
+End Type
+
+Private Type DocModificationDates
+ lessThanThreemonths As Long
+ threeToSixmonths As Long
+ sixToTwelvemonths As Long
+ greaterThanOneYear As Long
+End Type
+
+Private Type DocMacroClassifications
+ None As Long
+ Simple As Long
+ Medium As Long
+ complex As Long
+End Type
+
+Private Type DocIssueClassifications
+ None As Long
+ Minor As Long
+ complex As Long
+End Type
+
+Const CCOST_COL_OFFSET = -1
+
+Private mLogFilePath As String
+Private mDocIndex As String
+Private mDebugLevel As Long
+Private mIniFilePath As String
+Private mUserFormTypesDict As Scripting.Dictionary
+Private mIssuesDict As Scripting.Dictionary
+Private mMacroDict As Scripting.Dictionary
+Private mPreparedIssuesDict As Scripting.Dictionary
+Private mIssuesClassificationDict As Scripting.Dictionary
+Private mIssuesCostDict As Scripting.Dictionary
+Private mIssuesLimit As Date
+
+Public Const CWORD_DRIVER_FILE = "_OOoDocAnalysisWordDriver.doc"
+Public Const CEXCEL_DRIVER_FILE = "_OOoDocAnalysisExcelDriver.xls"
+Public Const CPP_DRIVER_FILE = "_OOoDocAnalysisPPTDriver.ppt"
+Public Const CWORD_DRIVER_FILE_TEMP = "~$OoDocAnalysisWordDriver.doc"
+Public Const CEXCEL_DRIVER_FILE_TEMP = "~$OoDocAnalysisExcelDriver.xls"
+Public Const CPP_DRIVER_FILE_TEMP = "~$OoDocAnalysisPPTDriver.ppt"
+
+'Doc Properties Offsets - used in WriteDocProperties and GetPreparableFilesFromDocProps
+Const CDOCINFONAME = 1
+Const CDOCINFOAPPLICATION = CDOCINFONAME + 1
+
+Const CDOCINFOISSUE_CLASS = CDOCINFOAPPLICATION + 1
+Const CDOCINFOCOMPLEXISSUES = CDOCINFOISSUE_CLASS + 1
+Const CDOCINFOMINORISSUES = CDOCINFOCOMPLEXISSUES + 1
+Const CDOCINFOPREPAREDISSUES = CDOCINFOMINORISSUES + 1
+
+Const CDOCINFOMACRO_CLASS = CDOCINFOPREPAREDISSUES + 1
+Const CDOCINFOMACRO_USERFORMS = CDOCINFOMACRO_CLASS + 1
+Const CDOCINFOMACRO_LINESOFCODE = CDOCINFOMACRO_USERFORMS + 1
+
+Const CDOCINFODOCISSUECOSTS = CDOCINFOMACRO_LINESOFCODE + 1
+Const CDOCINFOPREPARABLEISSUECOSTS = CDOCINFODOCISSUECOSTS + 1
+Const CDOCINFOMACROISSUECOSTS = CDOCINFOPREPARABLEISSUECOSTS + 1
+
+Const CDOCINFONUMBERPAGES = CDOCINFOMACROISSUECOSTS + 1
+Const CDOCINFOCREATED = CDOCINFONUMBERPAGES + 1
+Const CDOCINFOLASTMODIFIED = CDOCINFOCREATED + 1
+Const CDOCINFOLASTACCESSED = CDOCINFOLASTMODIFIED + 1
+Const CDOCINFOLASTPRINTED = CDOCINFOLASTACCESSED + 1
+Const CDOCINFOLASTSAVEDBY = CDOCINFOLASTPRINTED + 1
+Const CDOCINFOREVISION = CDOCINFOLASTSAVEDBY + 1
+Const CDOCINFOTEMPLATE = CDOCINFOREVISION + 1
+Const CDOCINFONAMEANDPATH = CDOCINFOTEMPLATE + 1
+
+'Overview shapes
+Const COV_DOC_MOD_DATES_CHART = "Chart 21"
+Const COV_DOC_MACRO_CHART = "Chart 22"
+Const COV_DOC_ANALYSIS_CHART = "Chart 23"
+
+Const COV_DOC_MOD_DATES_COMMENT_TXB = "Text Box 25"
+Const COV_DOC_MOD_DATES_LEGEND_TXB = "Text Box 12"
+
+Const COV_DOC_MACRO_COMMENT_TXB = "Text Box 26"
+Const COV_DOC_MACRO_LEGEND_TXB = "Text Box 16"
+
+Const COV_DOC_ANALYSIS_COMMENT_TXB = "Text Box 27"
+Const COV_DOC_ANALYSIS_LEGEND_DAW_TXB = "Text Box 28"
+Const COV_DOC_ANALYSIS_LEGEND_PAW_TXB = "Text Box 18"
+
+Const COV_HIGH_LEVEL_ANALYSIS_RANGE = "OV_High_Level_Analysis_Range"
+Const COV_COST_RANGE = "OV_Cost_Range"
+
+'Sheet labels
+Const COV_HIGH_LEVEL_ANALYSIS_LBL = "OV_High_level_analysis_lbl"
+Const COV_DP_PREPISSUES_COL_LBL = "DocProperties_PreparedIssues_Column"
+Const COV_COSTS_PREPISSUE_COUNT_COL_LBL = "Costs_PreparedIssueCount_Column"
+Const CDP_DAW_HIDDEN_COLS_LBL = "DP_DAW_HIDDEN_COLS_RANGE"
+Const CDP_DAW_HIDDEN_COLS2_LBL = "DP_DAW_HIDDEN_COLS_RANGE2"
+Const CDP_DAW_HIDDEN_ROW_LBL = "DP_DAW_HIDDEN_ROW_RANGE"
+
+Const COV_DAW_SETUP_SHEETS_RUN_LBL = "OV_DAW_SETUP_SHEETS_RUN"
+Const COV_PAW_SETUP_SHEETS_RUN_LBL = "OV_PAW_SETUP_SHEETS_RUN"
+Const COV_Internal_Attributes_Cols_LBL = "OV_Internal_Attributes_Cols"
+
+Const CR_STR = "<CR>"
+Const CR_TOPIC = "<TOPIC>"
+Const CR_PRODUCT = "<PRODUCT>"
+
+Const CLEGEND_FONT_SIZE = 8
+Const CCOMMENTS_FONT_SIZE = 10
+
+Dim mTstart As Single
+Dim mTend As Single
+Public gExcelMaxRangeProcessTime As Integer
+
+Sub AnalyseDirectory()
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "AnalyseDirectory"
+
+ Dim iniFilePath As String
+ Dim startDir As String
+ Dim fileList As String
+ Dim storeToDir As String
+ Dim resultsFile As String
+ Dim resultsTemplate As String
+ Dim statFileName As String
+ Dim bOverwriteResultsFile As Boolean
+ Dim bNewResultsFile As Boolean
+ Dim outputType As String
+ Dim singleFile As String
+ Dim nTimeNeeded As Long
+ Dim nIncrementFileCounter As Long
+ Dim nMaxWaitBeforeWrite As Long
+ Dim fso As Scripting.FileSystemObject
+ Set fso = New Scripting.FileSystemObject
+
+ SetAppToMinimized
+
+ If InDocPreparation Then
+ mDocPropRowOffset = CDOCPROP_PAW_ROWOFFSET
+ Else
+ mDocPropRowOffset = CROWOFFSET
+ End If
+
+ 'Get Wizard input variables
+ SetupWizardVariables fileList, storeToDir, resultsFile, _
+ mLogFilePath, resultsTemplate, bOverwriteResultsFile, bNewResultsFile, _
+ statFileName, mDebugLevel, outputType, singleFile
+
+ startDir = ProfileGetItem("Analysis", CINPUT_DIR, "", mIniFilePath)
+
+ nIncrementFileCounter = CLng(ProfileGetItem("Analysis", _
+ C_MAX_CHECK_INI, C_MAX_CHECK, mIniFilePath))
+ nMaxWaitBeforeWrite = CLng(ProfileGetItem("Analysis", _
+ C_MAX_WAIT_BEFORE_WRITE_INI, C_MAX_WAIT_BEFORE_WRITE, mIniFilePath))
+ gExcelMaxRangeProcessTime = CInt(ProfileGetItem("Analysis", _
+ C_MAX_RANGE_PROCESS_TIME_INI, C_MAX_RANGE_PROCESS_TIME, mIniFilePath))
+ LocalizeResources
+
+ 'Setup File List
+ 'For Prepare - get list from results spreadsheet with docs analysis found as preparable
+ 'If no results spreadsheet then just try to prepare all the docs - run over full analysis list
+ Dim myFiles As Collection
+ Set myFiles = New Collection
+ Dim sAnalysisOrPrep As String
+ If InDocPreparation And CheckDoPrepare Then
+ sAnalysisOrPrep = "Prepared"
+ If fso.FileExists(storeToDir & "\" & resultsFile) Then
+ If Not GetPrepareFilesToAnalyze(storeToDir & "\" & resultsFile, myFiles, fso) Then
+ SetPrepareToNone
+ WriteDebug currentFunctionName & ": No files to analyse!"
+ GoTo FinalExit 'No files to prepare - exit
+ End If
+ Else
+ If Not GetFilesToAnalyze(fileList, singleFile, myFiles) Then
+ SetPrepareToNone
+ WriteDebug currentFunctionName & ": No files to analyse! Filelist (" & fileList & ") empty?"
+ GoTo FinalExit 'No files to prepare - exit
+ End If
+ End If
+ Else
+ sAnalysisOrPrep = "Analyzed"
+ If Not GetFilesToAnalyze(fileList, singleFile, myFiles) Then
+ WriteDebug currentFunctionName & ": No files to analyse! Filelist (" & fileList & ") empty?"
+ GoTo FinalExit
+ End If
+ End If
+
+ Dim index As Long
+ Dim numFiles As Long
+ Dim nextSave As Long
+ Dim startIndex As Long
+ Dim bResultsWaiting As Boolean
+ Dim AnalysedDocs As Collection
+ Dim startDate As Date
+ Dim currentDate As Date
+
+ Set AnalysedDocs = New Collection
+ numFiles = myFiles.count
+ bResultsWaiting = False
+
+ If (singleFile <> "") Then
+ ' No recovery handling for single file analysis and the value in the
+ ' ini file should be used for bNewResultsFile
+ startIndex = 1
+ Else
+ bNewResultsFile = bNewResultsFile And GetIndexValues(startIndex, nextSave, myFiles)
+ End If
+
+ startDate = Now()
+
+ ' Analyse all files
+ For index = startIndex To numFiles
+ Set mIssuesClassificationDict = New Scripting.Dictionary
+ mIssuesClassificationDict.CompareMode = TextCompare
+ Set mIssuesCostDict = New Scripting.Dictionary
+ 'mIssuesCostDict.CompareMode = TextCompare
+
+ Set mUserFormTypesDict = New Scripting.Dictionary
+ Set mIssuesDict = New Scripting.Dictionary
+ Set mMacroDict = New Scripting.Dictionary
+ Set mPreparedIssuesDict = New Scripting.Dictionary
+
+ 'Write to Application log
+ Dim myAnalyser As MigrationAnalyser
+ Set myAnalyser = New MigrationAnalyser
+
+ If (CheckForAbort) Then GoTo FinalExit
+
+ 'Log Analysis
+ WriteToStatFile statFileName, C_STAT_STARTING, myFiles.item(index), fso
+ WriteToLog "Analyzing", myFiles.item(index)
+ WriteToIni C_NEXT_FILE, myFiles.item(index)
+ mDocIndex = index
+
+ 'Do Analysis
+ myAnalyser.DoAnalyse myFiles.item(index), mUserFormTypesDict, startDir, storeToDir, fso
+
+ AnalysedDocs.Add myAnalyser.Results
+ bResultsWaiting = True
+
+ WriteToLog sAnalysisOrPrep, index & "of" & numFiles & _
+ " " & getAppSpecificApplicationName & " Documents"
+ WriteToLog "Analyzing", "Done"
+ WriteToLog sAnalysisOrPrep & "Doc" & index, myFiles.item(index)
+ Set myAnalyser = Nothing
+
+ If (CheckForAbort) Then GoTo FinalExit
+
+ 'No need to output results spreadsheet, just doing prepare
+ If CheckDoPrepare Then GoTo CONTINUE_FOR
+
+ nTimeNeeded = val(DateDiff("s", startDate, Now()))
+ If ((nTimeNeeded > nMaxWaitBeforeWrite) Or _
+ (index >= nextSave)) Then
+ If WriteResults(storeToDir, resultsFile, resultsTemplate, _
+ bOverwriteResultsFile, bNewResultsFile, _
+ outputType, AnalysedDocs, fso) Then
+ nextSave = index + C_MAX_CHECK
+ bResultsWaiting = False
+ Set AnalysedDocs = New Collection
+ WriteToIni C_LAST_CHECKPOINT, myFiles.item(index)
+ startDate = Now()
+ Else
+ 'write error
+ End If
+ End If
+ WriteToStatFile statFileName, C_STAT_DONE, myFiles.item(index), fso
+CONTINUE_FOR:
+ Next index
+
+ If (bResultsWaiting) Then
+ If WriteResults(storeToDir, resultsFile, resultsTemplate, _
+ bOverwriteResultsFile, bNewResultsFile, _
+ outputType, AnalysedDocs, fso) Then
+ WriteToIni C_LAST_CHECKPOINT, myFiles.item(index - 1)
+ Else
+ 'write error
+ End If
+ End If
+ WriteToStatFile statFileName, C_STAT_FINISHED, "", fso
+
+FinalExit:
+
+ Set fso = Nothing
+ Set myFiles = Nothing
+ Set mIssuesClassificationDict = Nothing
+ Set mIssuesCostDict = Nothing
+ Set mUserFormTypesDict = Nothing
+ Set mIssuesDict = Nothing
+ Set mMacroDict = Nothing
+ Set mPreparedIssuesDict = Nothing
+
+ Set AnalysedDocs = Nothing
+
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Function WriteResults(storeToDir As String, resultsFile As String, resultsTemplate As String, _
+ bOverwriteResultsFile As Boolean, bNewResultsFile As Boolean, _
+ outputType As String, AnalysedDocs As Collection, _
+ fso As FileSystemObject) As Boolean
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteResults"
+
+ If InDocPreparation Then
+ If outputType = COUTPUT_TYPE_XML Or outputType = COUTPUT_TYPE_BOTH Then
+ WriteXMLOutput storeToDir, resultsFile, _
+ bOverwriteResultsFile, bNewResultsFile, AnalysedDocs, fso
+ End If
+ End If
+
+ If outputType = COUTPUT_TYPE_XLS Or outputType = COUTPUT_TYPE_BOTH Then
+ WriteXLSOutput storeToDir, resultsFile, fso.GetAbsolutePathName(resultsTemplate), _
+ bOverwriteResultsFile, bNewResultsFile, AnalysedDocs, fso
+ End If
+
+ WriteResults = True
+ bNewResultsFile = False
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteResults = False
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function GetFilesToAnalyze_old(startDir As String, bIncludeSubdirs As Boolean, _
+ myFiles As Collection) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetFilesToAnalyze"
+ Dim fso As New FileSystemObject
+ Dim theResultsFile As String
+ theResultsFile = ProfileGetItem("Analysis", CINPUT_DIR, "c:\", mIniFilePath) & "\" & ProfileGetItem("Analysis", CRESULTS_FILE, "", mIniFilePath)
+
+ GetFilesToAnalyze = False
+
+ Dim searchTypes As Collection
+ Set searchTypes = New Collection
+ SetupSearchTypes searchTypes
+ If searchTypes.count = 0 Then
+ GoTo FinalExit
+ End If
+
+ Dim myDocFiles As CollectedFiles
+ Set myDocFiles = New CollectedFiles
+ With myDocFiles
+ .BannedList.Add fso.GetAbsolutePathName(getAppSpecificPath & "\" & CWORD_DRIVER_FILE)
+ .BannedList.Add fso.GetAbsolutePathName(getAppSpecificPath & "\" & CEXCEL_DRIVER_FILE)
+ .BannedList.Add fso.GetAbsolutePathName(getAppSpecificPath & "\" & CPP_DRIVER_FILE)
+ .BannedList.Add fso.GetAbsolutePathName(getAppSpecificPath & "\" & CWORD_DRIVER_FILE_TEMP)
+ .BannedList.Add fso.GetAbsolutePathName(getAppSpecificPath & "\" & CEXCEL_DRIVER_FILE_TEMP)
+ .BannedList.Add fso.GetAbsolutePathName(getAppSpecificPath & "\" & CPP_DRIVER_FILE_TEMP)
+ .BannedList.Add theResultsFile
+ End With
+ myDocFiles.Search rootDir:=startDir, FileSpecs:=searchTypes, _
+ IncludeSubdirs:=bIncludeSubdirs
+
+ If getAppSpecificApplicationName = CAPPNAME_WORD Then
+ Set myFiles = myDocFiles.WordFiles
+ ElseIf getAppSpecificApplicationName = CAPPNAME_EXCEL Then
+ Set myFiles = myDocFiles.ExcelFiles
+ ElseIf getAppSpecificApplicationName = CAPPNAME_POWERPOINT Then
+ Set myFiles = myDocFiles.PowerPointFiles
+ Else
+ WriteDebug currentFunctionName & " : invalid application " & getAppSpecificApplicationName
+ GoTo FinalExit
+ End If
+
+ GetFilesToAnalyze = True
+
+FinalExit:
+ Set searchTypes = Nothing
+ Set myDocFiles = Nothing
+
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function GetFilesToAnalyze(fileList As String, startFile As String, _
+ myFiles As Collection) As Boolean
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetFilesToAnalyze"
+
+ Dim fso As New FileSystemObject
+ Dim fileContent As TextStream
+ Dim fileName As String
+
+ GetFilesToAnalyze = False
+
+ If (startFile = "") Then
+ If (fso.FileExists(fileList)) Then
+ Set fileContent = fso.OpenTextFile(fileList, ForReading, False, TristateTrue)
+ While (Not fileContent.AtEndOfStream)
+ fileName = fileContent.ReadLine
+ fileName = Trim(fileName)
+ If (fileName <> "") Then
+ myFiles.Add (fileName)
+ End If
+ Wend
+ fileContent.Close
+ End If
+ Else
+ myFiles.Add (startFile)
+ End If
+
+ If (myFiles.count <> 0) Then GetFilesToAnalyze = True
+
+FinalExit:
+ Set fileContent = Nothing
+ Set fso = Nothing
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function GetPrepareFilesToAnalyze(resultsFilePath As String, myFiles As Collection, _
+ fso As FileSystemObject) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetPrepareFilesToAnalyze"
+
+ GetPrepareFilesToAnalyze = False
+
+ If Not fso.FileExists(resultsFilePath) Then
+ WriteDebug currentFunctionName & ": results file does not exist : " & resultsFilePath
+ GoTo FinalExit
+ End If
+
+ 'Open results spreadsheet
+ Dim xl As Excel.Application
+ If getAppSpecificApplicationName = CAPPNAME_EXCEL Then
+ Set xl = Application
+ xl.Visible = True
+ Else
+ Set xl = GetExcelInstance
+ xl.Visible = False
+ End If
+ Dim logWb As WorkBook
+ Set logWb = xl.Workbooks.Open(resultsFilePath)
+
+ Dim wsDocProp As Worksheet
+ Set wsDocProp = logWb.Sheets(RID_STR_COMMON_RESULTS_SHEET_NAME_DOCPROP)
+
+ Dim startRow As Long
+ Dim endRow As Long
+ startRow = mDocPropRowOffset + 1
+ endRow = GetWorkbookNameValueAsLong(logWb, CTOTAL_DOCS_ANALYZED) + mDocPropRowOffset
+
+ GetPreparableFilesFromDocProps wsDocProp, startRow, endRow, fso, myFiles
+
+ GetPrepareFilesToAnalyze = (myFiles.count > 0)
+
+FinalExit:
+ Set wsDocProp = Nothing
+ If Not logWb Is Nothing Then logWb.Close
+ Set logWb = Nothing
+
+ If getAppSpecificApplicationName <> CAPPNAME_EXCEL Then
+ If Not xl Is Nothing Then
+ If xl.Workbooks.count = 0 Then
+ xl.Quit
+ End If
+ End If
+ End If
+ Set xl = Nothing
+
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function GetPreparableFilesFromDocProps(wsDocProp As Worksheet, startRow As Long, _
+ endRow As Long, fso As FileSystemObject, myFiles As Collection) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetPreparableFilesFromDocProps"
+ GetPreparableFilesFromDocProps = False
+
+ Dim index As Long
+ Dim fileName As String
+ Dim fileExt As String
+ Dim docExt As String
+ Dim templateExt As String
+
+ docExt = getAppSpecificDocExt
+ templateExt = getAppSpecificTemplateExt
+
+ For index = startRow To endRow
+ If GetWorksheetCellValueAsLong(wsDocProp, index, CDOCINFOPREPAREDISSUES) > 0 Then
+ fileName = GetWorksheetCellValueAsString(wsDocProp, index, CDOCINFONAME)
+ fileExt = "." & fso.GetExtensionName(fileName)
+ 'Don't have to worry about search types - just looking at existing results
+ 'so just check both legal extensions for this application
+ If fileExt = docExt Or fileExt = templateExt Then
+ myFiles.Add GetWorksheetCellValueAsString(wsDocProp, index, CDOCINFONAMEANDPATH)
+ End If
+ End If
+ Next index
+
+ GetPreparableFilesFromDocProps = myFiles.count > 0
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ GetPreparableFilesFromDocProps = False
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Sub OpenXLSResultFile(resultsFile As String, _
+ resultsTemplate As String, _
+ bNewResultsFile As Boolean, _
+ excelApp As Excel.Application, _
+ resultSheet As Excel.WorkBook)
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "OpenXLSResultFile"
+
+ If getAppSpecificApplicationName = CAPPNAME_EXCEL Then
+ Set excelApp = Application
+ excelApp.Visible = True
+ Else
+ Set excelApp = GetExcelInstance
+ excelApp.Visible = False
+ End If
+
+ If bNewResultsFile Then
+ Set resultSheet = excelApp.Workbooks.Add(Template:=resultsTemplate)
+ Localize_WorkBook resultSheet
+ Else
+ Set resultSheet = excelApp.Workbooks.Open(resultsFile)
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ excelApp.DisplayAlerts = False
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub CloseXLSResultFile(excelApp As Excel.Application, _
+ resultSheet As Excel.WorkBook)
+
+ On Error Resume Next
+
+ If Not resultSheet Is Nothing Then resultSheet.Close
+ Set resultSheet = Nothing
+
+ If getAppSpecificApplicationName <> CAPPNAME_EXCEL Then
+ If Not excelApp Is Nothing Then
+ excelApp.Visible = True
+ If excelApp.Workbooks.count = 0 Then
+ excelApp.Quit
+ End If
+ End If
+ End If
+ Set excelApp = Nothing
+
+ Exit Sub
+End Sub
+
+Sub WriteXLSOutput(storeToDir As String, resultsFile As String, resultsTemplate As String, _
+ bOverwriteResultsFile As Boolean, bNewResultsFile As Boolean, AnalysedDocs As Collection, _
+ fso As Scripting.FileSystemObject)
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteXLSOutput"
+
+ Dim offsetDocPropRow As Long
+ Dim offsetDocIssuesRow As Long
+ Dim offsetDocIssueDetailsRow As Long
+ Dim offsetDocRefDetailsRow As Long
+
+ Const COVERVIEW_SHEET_IDX = 1
+ Const CDOCLIST_SHEET_IDX = 2
+ Const CISSUES_ANALYSED_SHEET = 3
+ Const CISSUE_DETAILS_SHEET = 4
+ Const CWORD_ISSUES_SHEET = 5
+ Const CEXCEL_ISSUES_SHEET = 6
+ Const CPOWERPOINT_ISSUES_SHEET = 7
+ Const CREFERENCE_ISSUES_SHEET = 8
+
+ 'Begin writing stats to excel
+ Dim xl As Excel.Application
+ If getAppSpecificApplicationName = CAPPNAME_EXCEL Then
+ Set xl = Application
+ xl.Visible = True
+ Else
+ Set xl = GetExcelInstance
+ xl.Visible = False
+ End If
+
+ Dim logWb As WorkBook
+
+ If bNewResultsFile Then
+ Set logWb = xl.Workbooks.Add(Template:=resultsTemplate)
+ Localize_WorkBook logWb
+ Else
+ Set logWb = xl.Workbooks.Open(storeToDir & "\" & resultsFile)
+ End If
+
+ SetupAnalysisResultsVariables logWb, offsetDocPropRow, _
+ offsetDocIssuesRow, offsetDocIssueDetailsRow, offsetDocRefDetailsRow
+
+ ' Iterate through results and write info
+ Dim aAnalysis As DocumentAnalysis
+ Dim row As Long
+ Dim docCounts As DocumentCount
+ Dim templateCounts As DocumentCount
+
+ Dim issuesRow As Long
+ Dim issueDetailsRow As Long
+ Dim refDetailsRow As Long
+
+ Dim wsOverview As Worksheet
+ Dim wsCosts As Worksheet
+ Dim wsPgStats As Worksheet
+ Dim wsIssues As Worksheet
+ Dim wsIssueDetails As Worksheet
+ Dim wsRefDetails As Worksheet
+
+ Set wsOverview = logWb.Sheets(COVERVIEW_SHEET_IDX)
+ Set wsPgStats = logWb.Sheets(CDOCLIST_SHEET_IDX)
+
+ 'Some localized names might be longer than 31 chars, excel doesn't
+ 'allow such names!
+ On Error Resume Next
+ wsOverview.name = RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW
+ wsPgStats.name = RID_STR_COMMON_RESULTS_SHEET_NAME_DOCPROP
+ On Error GoTo HandleErrors
+
+ If InDocPreparation Then
+ Set wsCosts = logWb.Sheets(CISSUES_ANALYSED_SHEET)
+ Dim appName As String
+ appName = getAppSpecificApplicationName
+ Select Case appName
+ Case "Word"
+ Set wsIssues = logWb.Worksheets(CWORD_ISSUES_SHEET)
+ Case "Excel"
+ Set wsIssues = logWb.Worksheets(CEXCEL_ISSUES_SHEET)
+ Case "PowerPoint"
+ Set wsIssues = logWb.Worksheets(CPOWERPOINT_ISSUES_SHEET)
+ Case Default
+ Err.Raise Number:=-1, Description:="BadAppName"
+ End Select
+ Set wsIssueDetails = logWb.Sheets(CISSUE_DETAILS_SHEET)
+ Set wsRefDetails = logWb.Sheets(CREFERENCE_ISSUES_SHEET)
+ issuesRow = 1 + CROWOFFSET + offsetDocIssuesRow
+ issueDetailsRow = 1 + CROWOFFSET + offsetDocIssueDetailsRow
+ refDetailsRow = 1 + CROWOFFSET + offsetDocRefDetailsRow
+ ' localize PAW worksheets
+ Dim wsWordIssues As Worksheet
+ Dim wsExcelIssues As Worksheet
+ Dim wsPowerPointIssues As Worksheet
+ Set wsWordIssues = logWb.Worksheets(CWORD_ISSUES_SHEET)
+ Set wsExcelIssues = logWb.Worksheets(CEXCEL_ISSUES_SHEET)
+ Set wsPowerPointIssues = logWb.Worksheets(CPOWERPOINT_ISSUES_SHEET)
+
+ On Error Resume Next
+ wsCosts.name = RID_STR_COMMON_RESULTS_SHEET_NAME_COSTS
+ wsIssueDetails.name = RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUE_DETAILS
+ wsRefDetails.name = RID_STR_COMMON_RESULTS_SHEET_NAME_DOCREF_DETAILS
+ wsWordIssues.name = RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_WORD
+ wsExcelIssues.name = RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_EXCEL
+ wsPowerPointIssues.name = RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_POWERPOINT
+ On Error GoTo HandleErrors
+ End If
+
+ Dim fileName As String
+ Dim macroClasses As DocMacroClassifications
+ Dim issueClasses As DocIssueClassifications
+
+ For row = 1 To AnalysedDocs.count 'Need Row count - so not using Eor Each
+ Set aAnalysis = AnalysedDocs.item(row)
+ fileName = fso.GetFileName(aAnalysis.name)
+
+ If InDocPreparation Then
+ issuesRow = WriteDocIssues(wsIssues, issuesRow, aAnalysis, fileName)
+ issueDetailsRow = _
+ ProcessIssuesAndWriteDocIssueDetails(logWb, wsIssueDetails, issueDetailsRow, aAnalysis, fileName)
+ refDetailsRow = _
+ WriteDocRefDetails(wsRefDetails, refDetailsRow, aAnalysis, fileName)
+ aAnalysis.MacroCosts = getMacroIssueCosts(logWb, aAnalysis)
+ WriteDocProperties wsPgStats, row + offsetDocPropRow, aAnalysis, fileName
+ Else
+ ProcessIssuesForDAW logWb, aAnalysis, fileName
+ WriteDocProperties wsPgStats, row + offsetDocPropRow, aAnalysis, fileName
+ End If
+
+ UpdateAllCounts aAnalysis, docCounts, templateCounts, macroClasses, issueClasses, fso
+
+ Set aAnalysis = Nothing
+ Next row
+
+ ' We change the font used for text box shapes here for the japanese
+ ' version, because office 2000 sometimes displays squares instead of
+ ' chars
+ Dim langStr As String
+ Dim userLCID As Long
+ Dim textSize As Long
+ Dim fontName As String
+
+ userLCID = GetUserDefaultLangID()
+ langStr = GetUserLocaleInfo(userLCID, LOCALE_SISO639LANGNAME)
+
+ If (langStr = "ja") Then
+ WriteDebug currentFunctionName & " : Setting font to MS PGothic for 'ja' locale"
+ fontName = "MS PGothic"
+ textSize = 10
+ Else
+ fontName = "Arial"
+ textSize = CLEGEND_FONT_SIZE
+ End If
+
+ 'DAW - PAW switches
+ If InDocPreparation Then
+ SaveAnalysisResultsVariables logWb, issueDetailsRow - (1 + CROWOFFSET), _
+ refDetailsRow - (1 + CROWOFFSET)
+
+ WriteOverview logWb, docCounts, templateCounts, macroClasses, issueClasses
+
+ SetupPAWResultsSpreadsheet logWb, fontName, textSize
+ WriteIssueCounts logWb
+ Else
+ WriteOverview logWb, docCounts, templateCounts, macroClasses, issueClasses
+
+ 'StartTiming
+ SetupDAWResultsSpreadsheet logWb, fontName, textSize
+ 'EndTiming "SetupDAWResultsSpreadsheet"
+ End If
+
+ SetupPrintRanges logWb, row, issuesRow, issueDetailsRow, refDetailsRow
+
+ If resultsFile <> "" Then
+ 'Overwrite existing results file without prompting
+ If bOverwriteResultsFile Or (Not bNewResultsFile) Then
+ xl.DisplayAlerts = False
+ End If
+
+ logWb.SaveAs fileName:=storeToDir & "\" & resultsFile
+ xl.DisplayAlerts = True
+ End If
+
+FinalExit:
+ If Not xl Is Nothing Then
+ xl.Visible = True
+ End If
+
+ Set wsOverview = Nothing
+ Set wsPgStats = Nothing
+
+ If InDocPreparation Then
+ Set wsCosts = Nothing
+ Set wsIssues = Nothing
+ Set wsIssueDetails = Nothing
+ Set wsRefDetails = Nothing
+ End If
+
+ If Not logWb Is Nothing Then logWb.Close
+ Set logWb = Nothing
+
+ If getAppSpecificApplicationName <> CAPPNAME_EXCEL Then
+ If Not xl Is Nothing Then
+ If xl.Workbooks.count = 0 Then
+ xl.Quit
+ End If
+ End If
+ End If
+ Set xl = Nothing
+
+ Exit Sub
+
+HandleErrors:
+ xl.DisplayAlerts = False
+
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Public Sub StartTiming()
+ mTstart = 0
+ mTend = 0
+ mTstart = GetTickCount()
+End Sub
+Public Sub EndTiming(what As String)
+ mTend = GetTickCount()
+ WriteDebug "Timing: " & what & ": " & (FormatNumber((mTend - mTstart) / 1000, 0) & " seconds")
+ mTstart = 0
+ mTend = 0
+End Sub
+Sub WriteIssueCounts(logWb As WorkBook)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteIssueCounts"
+
+ Dim Str As String
+ Dim str1 As String
+ Dim val1 As Long
+ Dim count As Long
+ Dim vKeyArray As Variant
+ Dim vItemArray As Variant
+ Dim vPrepKeyArray As Variant
+ Dim vPrepItemArray As Variant
+
+ vKeyArray = mIssuesDict.Keys
+ vItemArray = mIssuesDict.Items
+
+ vPrepKeyArray = mPreparedIssuesDict.Keys
+ vPrepItemArray = mPreparedIssuesDict.Items
+
+ 'Write Issue Counts across all Documents
+ For count = 0 To mIssuesDict.count - 1
+ str1 = vKeyArray(count)
+ val1 = CInt(vItemArray(count))
+ logWb.Names(str1).RefersToRange.Cells(1, 1) = _
+ logWb.Names(str1).RefersToRange.Cells(1, 1).value + vItemArray(count)
+ 'DEBUG: str = str & "Key: " & str1 & " Value: " & val1 & vbLf
+ Next count
+
+ 'Write Prepared Issues Counts across all Documents
+ For count = 0 To mPreparedIssuesDict.count - 1
+ str1 = vPrepKeyArray(count)
+ val1 = CInt(vPrepItemArray(count))
+ AddVariantToWorkbookNameValue logWb, str1, vPrepItemArray(count)
+ 'DEBUG: str = str & "Key: " & str1 & " Value: " & val1 & vbLf
+ Next count
+
+ 'User Form control type count across all analyzed documents of this type
+ str1 = getAppSpecificApplicationName & "_" & _
+ CSTR_ISSUE_VBA_MACROS & "_" & _
+ CSTR_SUBISSUE_PROPERTIES & "_" & _
+ CSTR_SUBISSUE_VBA_MACROS_USERFORMS_CONTROLTYPE_COUNT
+ SetWorkbookNameValueToLong logWb, str1, mUserFormTypesDict.count
+
+ 'Add list of User Form controls and counts to ...USERFORMS_CONTROLTYPE_COUNT field
+ If mUserFormTypesDict.count > 0 Then
+ vKeyArray = mUserFormTypesDict.Keys
+ vItemArray = mUserFormTypesDict.Items
+
+ Str = RID_STR_COMMON_ATTRIBUTE_CONTROLS & ": "
+ For count = 0 To mUserFormTypesDict.count - 1
+ Str = Str & vbLf & vKeyArray(count) & " " & vItemArray(count)
+ Next count
+ WriteUserFromControlTypesComment logWb, str1, Str
+ End If
+ 'DEBUG: MsgBox str & vbLf & mIssuesDict.count
+
+ WriteUniqueModuleCount logWb
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : logging costs : " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Sub WriteUniqueModuleCount(logWb As WorkBook)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteUniqueModuleCount"
+
+ Dim strLabel As String
+ Dim uniqueLineCount As Long
+ Dim uniqueModuleCount As Long
+ Dim count As Long
+ Dim vItemArray As Variant
+
+ vItemArray = mMacroDict.Items
+
+ 'Write Issues Costs
+ uniqueLineCount = 0
+ For count = 0 To mMacroDict.count - 1
+ uniqueLineCount = uniqueLineCount + CInt(vItemArray(count))
+ Next count
+ uniqueModuleCount = mMacroDict.count
+
+
+ strLabel = getAppSpecificApplicationName & "_" & _
+ CSTR_ISSUE_VBA_MACROS & "_" & _
+ CSTR_SUBISSUE_PROPERTIES & "_" & _
+ CSTR_SUBISSUE_VBA_MACROS_UNIQUE_MODULE_COUNT
+ SetWorkbookNameValueToLong logWb, strLabel, uniqueModuleCount
+
+ strLabel = getAppSpecificApplicationName & "_" & _
+ CSTR_ISSUE_VBA_MACROS & "_" & _
+ CSTR_SUBISSUE_PROPERTIES & "_" & _
+ CSTR_SUBISSUE_VBA_MACROS_UNIQUE_LINE_COUNT
+ SetWorkbookNameValueToLong logWb, strLabel, uniqueLineCount
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : logging Unique Module/ Line Counts : " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub WriteUserFromControlTypesComment(logWb As WorkBook, name As String, comment As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteUserFromControlTypesComment"
+
+ On Error Resume Next 'Ignore error if trying to add comment again - would happen on append to results
+ logWb.Names(name).RefersToRange.Cells(1, 1).AddComment
+
+ On Error GoTo HandleErrors
+ logWb.Names(name).RefersToRange.Cells(1, 1).comment.Text Text:=comment
+ 'Autosize not supported - Office 2000
+ 'logWb.Names(name).RefersToRange.Cells(1, 1).comment.AutoSize = True
+ logWb.Names(name).RefersToRange.Cells(1, 1).comment.Visible = False
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : name : " & name & _
+ " : comment : " & comment & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub UpdateAllCounts(aAnalysis As DocumentAnalysis, counts As DocumentCount, templateCounts As DocumentCount, _
+ macroClasses As DocMacroClassifications, issueClasses As DocIssueClassifications, _
+ fso As FileSystemObject)
+ Const CMODDATE_LESS3MONTHS = 91
+ Const CMODDATE_LESS6MONTHS = 182
+ Const CMODDATE_LESS12MONTHS = 365
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "UpdateAllCounts"
+ 'DocIssue Classification occurs in setDocOverallIssueClassification under
+ ' ProcessIssuesAndWriteDocIssueDetails when all DocIssues are being traversed.
+ 'MacroClass for the Doc is setup at the end of the Analyze_Macros in DoAnalysis
+ 'Mod Dates are determined in SetDocProperties in DoAnalysis
+
+ 'DocMacroClassifications
+ Select Case aAnalysis.MacroOverallClass
+ Case enMacroComplex
+ macroClasses.complex = macroClasses.complex + 1
+ Case enMacroMedium
+ macroClasses.Medium = macroClasses.Medium + 1
+ Case enMacroSimple
+ macroClasses.Simple = macroClasses.Simple + 1
+ Case Else
+ macroClasses.None = macroClasses.None + 1
+ End Select
+
+ 'DocIssueClassifications
+ aAnalysis.BelowIssuesLimit = True
+ Select Case aAnalysis.DocOverallIssueClass
+ Case enComplex
+ issueClasses.complex = issueClasses.complex + 1
+ Case enMinor
+ issueClasses.Minor = issueClasses.Minor + 1
+ Case Else
+ issueClasses.None = issueClasses.None + 1
+ End Select
+
+ 'DocumentCounts
+ Dim extStr As String
+ extStr = "." & LCase(fso.GetExtensionName(aAnalysis.name))
+ If extStr = getAppSpecificDocExt Then
+ UpdateDocCounts counts, aAnalysis
+ ElseIf extStr = getAppSpecificTemplateExt Then
+ UpdateDocCounts templateCounts, aAnalysis
+ Else
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & _
+ ": unhandled file extesnion " & extStr & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Sub UpdateDocCounts(counts As DocumentCount, aAnalysis As DocumentAnalysis)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "UpdateDocCounts"
+
+ counts.numDocsAnalyzed = counts.numDocsAnalyzed + 1
+ If aAnalysis.IssuesCount > 0 Then 'During Analysis incremented
+ counts.numDocsAnalyzedWithIssues = counts.numDocsAnalyzedWithIssues + 1
+
+ If aAnalysis.BelowIssuesLimit Then
+ counts.numMinorIssues = _
+ counts.numMinorIssues + aAnalysis.MinorIssuesCount
+ 'MinorIssuesCount incemented as all DocIssues are being traversed are being written out - ProcessIssuesAndWriteDocIssueDetails
+ counts.numComplexIssues = counts.numComplexIssues + aAnalysis.ComplexIssuesCount 'Calculated
+ counts.totalDocIssuesCosts = counts.totalDocIssuesCosts + _
+ aAnalysis.DocIssuesCosts
+ counts.totalPreparableIssuesCosts = counts.totalPreparableIssuesCosts + _
+ aAnalysis.PreparableIssuesCosts
+ End If
+
+ counts.numMacroIssues = counts.numMacroIssues + aAnalysis.MacroIssuesCount 'During Analysis incremented
+ counts.totalMacroCosts = counts.totalMacroCosts + aAnalysis.MacroCosts
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+
+Sub WriteDocProperties(wsPgStats As Worksheet, row As Long, aAnalysis As DocumentAnalysis, _
+ fileName As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteDocProperties"
+
+ Dim rowIndex As Long
+ rowIndex = row + mDocPropRowOffset
+
+ If aAnalysis.Application = RID_STR_COMMON_CANNOT_OPEN Then
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFONAME, fileName
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFOAPPLICATION, aAnalysis.Application
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFONAMEANDPATH, aAnalysis.name
+
+ GoTo FinalExit
+ End If
+
+ If InDocPreparation Then
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFONAME, fileName
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFOAPPLICATION, aAnalysis.Application
+
+ SetWorksheetCellValueToLong wsPgStats, rowIndex, CDOCINFODOCISSUECOSTS, aAnalysis.DocIssuesCosts
+ SetWorksheetCellValueToLong wsPgStats, rowIndex, CDOCINFOPREPARABLEISSUECOSTS, aAnalysis.PreparableIssuesCosts
+ SetWorksheetCellValueToLong wsPgStats, rowIndex, CDOCINFOMACROISSUECOSTS, aAnalysis.MacroCosts
+
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFOISSUE_CLASS, _
+ getDocOverallIssueClassificationAsString(aAnalysis.DocOverallIssueClass)
+ SetWorksheetCellValueToLong wsPgStats, rowIndex, CDOCINFOCOMPLEXISSUES, aAnalysis.ComplexIssuesCount
+ SetWorksheetCellValueToLong wsPgStats, rowIndex, CDOCINFOMINORISSUES, aAnalysis.MinorIssuesCount
+ SetWorksheetCellValueToLong wsPgStats, rowIndex, CDOCINFOPREPAREDISSUES, aAnalysis.PreparableIssuesCount
+
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFOMACRO_CLASS, _
+ getDocOverallMacroClassAsString(aAnalysis.MacroOverallClass)
+ SetWorksheetCellValueToLong wsPgStats, rowIndex, CDOCINFOMACRO_USERFORMS, aAnalysis.MacroNumUserForms
+ SetWorksheetCellValueToLong wsPgStats, rowIndex, CDOCINFOMACRO_LINESOFCODE, aAnalysis.MacroTotalNumLines
+
+ SetWorksheetCellValueToLong wsPgStats, rowIndex, CDOCINFONUMBERPAGES, aAnalysis.PageCount
+ SetWorksheetCellValueToVariant wsPgStats, rowIndex, CDOCINFOCREATED, CheckDate(aAnalysis.Created)
+ SetWorksheetCellValueToVariant wsPgStats, rowIndex, CDOCINFOLASTMODIFIED, CheckDate(aAnalysis.Modified)
+ SetWorksheetCellValueToVariant wsPgStats, rowIndex, CDOCINFOLASTACCESSED, CheckDate(aAnalysis.Accessed)
+ SetWorksheetCellValueToVariant wsPgStats, rowIndex, CDOCINFOLASTPRINTED, CheckDate(aAnalysis.Printed)
+
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFOLASTSAVEDBY, aAnalysis.SavedBy
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFOREVISION, aAnalysis.Revision
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFOTEMPLATE, aAnalysis.Template
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFONAMEANDPATH, aAnalysis.name
+ Else
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFONAME, fileName
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFOAPPLICATION, aAnalysis.Application
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFOISSUE_CLASS, _
+ getDocOverallIssueClassificationAsString(aAnalysis.DocOverallIssueClass)
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFOMACRO_CLASS, _
+ getDocOverallMacroClassAsString(aAnalysis.MacroOverallClass)
+ SetWorksheetCellValueToVariant wsPgStats, rowIndex, CDOCINFOLASTMODIFIED, CheckDate(aAnalysis.Modified)
+ SetWorksheetCellValueToString wsPgStats, rowIndex, CDOCINFONAMEANDPATH, aAnalysis.name
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Function CheckDate(myDate As Date) As Variant
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckDate"
+
+ Dim lowerNTDateLimit As Date
+ If Not IsDate(myDate) Then
+ CheckDate = RID_STR_COMMON_NA
+ Exit Function
+ End If
+
+ lowerNTDateLimit = DateSerial(1980, 1, 1)
+ CheckDate = IIf(myDate < lowerNTDateLimit, RID_STR_COMMON_NA, myDate)
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : date " & myDate & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function WriteDocIssues(wsIssues As Worksheet, row As Long, _
+ aAnalysis As DocumentAnalysis, fileName As String) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteDocIssues"
+
+ Const CNAME = 1
+ Const CAPPLICATION = CNAME + 1
+ Const CISSUE_COLUMNOFFSET = CAPPLICATION
+
+ If aAnalysis.IssuesCount = 0 Then
+ WriteDocIssues = row
+ Exit Function
+ End If
+ SetWorksheetCellValueToString wsIssues, row, CNAME, fileName
+ SetWorksheetCellValueToString wsIssues, row, CAPPLICATION, aAnalysis.Application
+
+ Dim index As Integer
+ For index = 1 To aAnalysis.TotalIssueTypes
+ If aAnalysis.IssuesCountArray(index) > 0 Then
+ SetWorksheetCellValueToString wsIssues, row, CISSUE_COLUMNOFFSET + index, aAnalysis.IssuesCountArray(index)
+ End If
+ Next index
+ SetWorksheetCellValueToString wsIssues, row, CISSUE_COLUMNOFFSET + aAnalysis.TotalIssueTypes + 1, aAnalysis.name
+
+ WriteDocIssues = row + 1
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Sub ProcessIssuesForDAW(logWb As WorkBook, aAnalysis As DocumentAnalysis, fileName As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "ProcessIssuesForDAW"
+
+ Dim myIssue As IssueInfo
+ Dim issueClass As EnumDocOverallIssueClass
+
+ Dim index As Integer
+ For index = 1 To aAnalysis.Issues.count
+ Set myIssue = aAnalysis.Issues(index)
+
+ If Not isMacroIssue(myIssue) Then
+ issueClass = getDocIssueClassification(logWb, myIssue)
+ CountDocIssuesForDoc issueClass, aAnalysis
+ SetOverallDocIssueClassification issueClass, aAnalysis
+ End If
+
+ Set myIssue = Nothing
+ Next index
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Function ProcessIssuesAndWriteDocIssueDetails(logWb As WorkBook, wsIssueDetails As Worksheet, DetailsRow As Long, _
+ aAnalysis As DocumentAnalysis, fileName As String) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "ProcessIssueAndWriteDocIssueDetails"
+
+ Dim myIssue As IssueInfo
+ Dim rowIndex As Long
+ Dim issueClass As EnumDocOverallIssueClass
+ Dim issueCost As Long
+
+ rowIndex = DetailsRow
+
+ Dim index As Integer
+ For index = 1 To aAnalysis.Issues.count
+ Set myIssue = aAnalysis.Issues(index)
+
+ ' Process Document Issues and Costs for the Document
+ ' Will be output to List of Documents sheet by WriteDocProperties( )
+ If Not isMacroIssue(myIssue) Then
+ issueClass = getDocIssueClassification(logWb, myIssue)
+ CountDocIssuesForDoc issueClass, aAnalysis
+ SetOverallDocIssueClassification issueClass, aAnalysis
+ issueCost = getDocIssueCost(logWb, aAnalysis, myIssue)
+ aAnalysis.DocIssuesCosts = aAnalysis.DocIssuesCosts + issueCost
+ If myIssue.Preparable Then
+ aAnalysis.PreparableIssuesCosts = aAnalysis.PreparableIssuesCosts + issueCost
+ End If
+ End If
+
+ 'Collate Issue and Factor counts across all Documents
+ 'Will be output to the Issues Analyzed sheet by WriteIssueCounts( )
+ CollateIssueAndFactorCountsAcrossAllDocs aAnalysis, myIssue, fileName
+
+ OutputCommonIssueDetails wsIssueDetails, rowIndex, aAnalysis, myIssue, fileName
+ OutputCommonIssueAttributes wsIssueDetails, rowIndex, myIssue
+ rowIndex = rowIndex + 1
+ Set myIssue = Nothing
+ Next index
+
+ ProcessIssuesAndWriteDocIssueDetails = rowIndex
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function getDocIssueCost(logWb As WorkBook, aAnalysis As DocumentAnalysis, myIssue As IssueInfo) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "getDocIssueCost"
+
+ Dim issueKey As String
+ Dim ret As Long
+ ret = 0
+
+ issueKey = getAppSpecificApplicationName & "_" & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML
+
+ ret = getIssueValueFromXLSorDict(logWb, aAnalysis, mIssuesCostDict, issueKey, 1, CCOST_COL_OFFSET)
+
+FinalExit:
+ getDocIssueCost = ret
+ Exit Function
+
+HandleErrors:
+ ret = 0
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Function getMacroIssueCosts(logWb As WorkBook, aAnalysis As DocumentAnalysis) As Long
+ 'Error handling not required
+ getMacroIssueCosts = getVBAMacroIssueCost(logWb, aAnalysis) '+ getMacroExtRefIssueCost(logWb, aAnalysis)
+ 'NOTE: Currently not counting External Refs as Macro Cost
+ 'could be added if porting off Windows
+
+End Function
+
+Function getVBAMacroIssueCost(logWb As WorkBook, aAnalysis As DocumentAnalysis) As Long
+ Const CMACRO_ROW_OFFSET_UNIQUE_LINES_COST = 4
+ Const CMACRO_ROW_OFFSET_USER_FORMS_COUNT_COST = 5
+ Const CMACRO_ROW_OFFSET_USER_FORMS_CONTROL_COUNT_COST = 6
+ Const CMACRO_ROW_OFFSET_USER_FORMS_CONTROL_TYPE_COUNT_COST = 7
+
+ Const CMACRO_NUM_OF_LINES_FACTOR_KEY = "_UniqueLineCount"
+ Const CMACRO_USER_FORMS_COUNT_FACTOR_KEY = "_UserFormsCount"
+ Const CMACRO_USER_FORMS_CONTROL_COUNT_FACTOR_KEY = "_UserFormsControlCount"
+ Const CMACRO_USER_FORMS_CONTROL_TYPE_COUNT_FACTOR_KEY = "_UserFormsControlTypeCount"
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "getVBAMacroIssueCost"
+
+ Dim baseIssueKey As String
+ Dim ret As Long
+ ret = 0
+
+ If Not aAnalysis.HasMacros Then GoTo FinalExit
+
+ 'Fetch VBA Macro Cost Factors - if required
+ baseIssueKey = getAppSpecificApplicationName & "_" & CSTR_ISSUE_VBA_MACROS & "_" & CSTR_SUBISSUE_PROPERTIES
+
+ 'Num Lines - Costing taken from "Lines in Unique Modules"
+ If aAnalysis.MacroTotalNumLines > 0 Then
+ ret = ret + aAnalysis.MacroTotalNumLines * _
+ getValueFromXLSorDict(logWb, aAnalysis, mIssuesCostDict, _
+ baseIssueKey & CMACRO_NUM_OF_LINES_FACTOR_KEY, baseIssueKey, _
+ CMACRO_ROW_OFFSET_UNIQUE_LINES_COST, CCOST_COL_OFFSET)
+ End If
+ 'User Forms Count
+ If aAnalysis.MacroNumUserForms > 0 Then
+ ret = ret + aAnalysis.MacroNumUserForms * _
+ getValueFromXLSorDict(logWb, aAnalysis, mIssuesCostDict, _
+ baseIssueKey & CMACRO_USER_FORMS_COUNT_FACTOR_KEY, baseIssueKey, _
+ CMACRO_ROW_OFFSET_USER_FORMS_COUNT_COST, CCOST_COL_OFFSET)
+ End If
+ 'User Forms Control Count
+ If aAnalysis.MacroNumUserFormControls > 0 Then
+ ret = ret + aAnalysis.MacroNumUserFormControls * _
+ getValueFromXLSorDict(logWb, aAnalysis, mIssuesCostDict, _
+ baseIssueKey & CMACRO_USER_FORMS_CONTROL_COUNT_FACTOR_KEY, baseIssueKey, _
+ CMACRO_ROW_OFFSET_USER_FORMS_CONTROL_COUNT_COST, CCOST_COL_OFFSET)
+ End If
+ 'User Forms Control Type Count
+ If aAnalysis.MacroNumUserFormControlTypes > 0 Then
+ ret = ret + aAnalysis.MacroNumUserFormControlTypes * getValueFromXLSorDict(logWb, aAnalysis, mIssuesCostDict, _
+ baseIssueKey & CMACRO_USER_FORMS_CONTROL_TYPE_COUNT_FACTOR_KEY, baseIssueKey, CMACRO_ROW_OFFSET_USER_FORMS_CONTROL_TYPE_COUNT_COST, CCOST_COL_OFFSET)
+ End If
+
+
+FinalExit:
+ getVBAMacroIssueCost = ret
+ Exit Function
+
+HandleErrors:
+ ret = 0
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Function getMacroExtRefIssueCost(logWb As WorkBook, aAnalysis As DocumentAnalysis) As Long
+ Const CMACRO_ROW_OFFSET_NUM_EXTERNAL_REFS_COST = 2
+ Const CMACRO_NUM_EXTERNAL_REFS_FACTOR_KEY = "_ExternalRefs"
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "getMacroExtRefIssueCost"
+ Dim baseIssueKey As String
+ Dim ret As Long
+ ret = 0
+
+ If aAnalysis.MacroNumExternalRefs <= 0 Then GoTo FinalExit
+
+ 'Fetch External Ref Cost Factors
+ baseIssueKey = getAppSpecificApplicationName & "_" & CSTR_ISSUE_PORTABILITY & "_" & _
+ CSTR_SUBISSUE_EXTERNAL_REFERENCES_IN_MACRO
+ ret = ret + aAnalysis.MacroNumExternalRefs * _
+ getValueFromXLSorDict(logWb, aAnalysis, mIssuesCostDict, _
+ baseIssueKey & CMACRO_NUM_EXTERNAL_REFS_FACTOR_KEY, baseIssueKey, _
+ CMACRO_ROW_OFFSET_NUM_EXTERNAL_REFS_COST, CCOST_COL_OFFSET)
+
+FinalExit:
+ getMacroExtRefIssueCost = ret
+ Exit Function
+
+HandleErrors:
+ ret = 0
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Function getIssueValueFromXLSorDict(logWb As WorkBook, aAnalysis As DocumentAnalysis, dict As Scripting.Dictionary, _
+ key As String, row As Long, column As Long) As Long
+ 'Error handling not required
+ getIssueValueFromXLSorDict = getValueFromXLSorDict(logWb, aAnalysis, dict, key, key, row, column)
+End Function
+
+Function getValueFromXLSorDict(logWb As WorkBook, aAnalysis As DocumentAnalysis, dict As Scripting.Dictionary, _
+ dictKey As String, xlsKey As String, row As Long, column As Long) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "getValueFromXLSorDict"
+
+ Dim ret As Long
+ ret = 0
+
+ If dict.Exists(dictKey) Then
+ ret = dict.item(dictKey)
+ Else
+ On Error Resume Next
+ ret = logWb.Names(xlsKey).RefersToRange.Cells(row, column).value
+ 'Log as error missing key
+ If Err.Number <> 0 Then
+ WriteDebug currentFunctionName & _
+ " : Issue Cost Key - " & xlsKey & ": label missing from results.xlt Costs sheet, check sheet and add/ check spelling label" & Err.Number & " " & Err.Description & " " & Err.Source
+ WriteDebug currentFunctionName & " : dictKey " & dictKey & " : xlsKey " & xlsKey & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ ret = 0
+ End If
+ On Error GoTo HandleErrors
+ dict.Add dictKey, ret
+ End If
+
+FinalExit:
+ getValueFromXLSorDict = ret
+ Exit Function
+
+HandleErrors:
+ ret = 0
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Function isMacroIssue(myIssue As IssueInfo)
+ 'Error handling not required
+ isMacroIssue = False
+
+ If myIssue.IssueTypeXML = CSTR_ISSUE_VBA_MACROS Or _
+ (myIssue.IssueTypeXML = CSTR_ISSUE_PORTABILITY And _
+ myIssue.SubTypeXML = CSTR_SUBISSUE_EXTERNAL_REFERENCES_IN_MACRO) Then
+ isMacroIssue = True
+ End If
+End Function
+Sub CountDocIssuesForDoc(issueClass As EnumDocOverallIssueClass, aAnalysis As DocumentAnalysis)
+ 'Error handling not required
+
+ If issueClass = enMinor Then
+ aAnalysis.MinorIssuesCount = aAnalysis.MinorIssuesCount + 1
+ End If
+ ' Macro issues are counted during analysis
+ ' Complex issues is calculated from: mIssues.count - mMinorIssuesCount - mMacroIssuesCount
+End Sub
+Sub SetOverallDocIssueClassification(issueClass As EnumDocOverallIssueClass, aAnalysis As DocumentAnalysis)
+ 'Error handling not required
+
+ If aAnalysis.DocOverallIssueClass = enComplex Then Exit Sub
+
+ If issueClass = enComplex Then
+ aAnalysis.DocOverallIssueClass = enComplex
+ Else
+ aAnalysis.DocOverallIssueClass = enMinor
+ End If
+End Sub
+Function getDocIssueClassification(logWb As WorkBook, myIssue As IssueInfo) As EnumDocOverallIssueClass
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "getDocIssueClassification"
+ Dim issueKey As String
+ Dim bRet As Boolean
+ bRet = False
+ getDocIssueClassification = enMinor
+
+ issueKey = getAppSpecificApplicationName & "_" & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML
+ If mIssuesClassificationDict.Exists(issueKey) Then
+ bRet = mIssuesClassificationDict.item(issueKey)
+ Else
+ On Error Resume Next
+ bRet = logWb.Names(issueKey).RefersToRange.Cells(1, 0).value
+ 'Log as error missing key
+ If Err.Number <> 0 Then
+ WriteDebug currentFunctionName & _
+ " : Issue Cost Key - " & issueKey & ": label missing from results.xlt Costs sheet, check sheet and add/ check spelling label" & Err.Number & " " & Err.Description & " " & Err.Source
+ bRet = False
+ End If
+ On Error GoTo HandleErrors
+ mIssuesClassificationDict.Add issueKey, bRet
+ End If
+
+
+FinalExit:
+ If bRet Then
+ getDocIssueClassification = enComplex
+ End If
+ Exit Function
+
+HandleErrors:
+ bRet = False
+ WriteDebug currentFunctionName & " : issueKey " & issueKey & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function getDocOverallIssueClassificationAsString(docIssueClass As EnumDocOverallIssueClass) As String
+ Dim Str As String
+ 'Error handling not required
+
+ Select Case docIssueClass
+ Case enComplex
+ Str = RID_STR_COMMON_ISSUE_CLASS_COMPLEX
+ Case enMinor
+ Str = RID_STR_COMMON_ISSUE_CLASS_MINOR
+ Case Else
+ Str = RID_STR_COMMON_ISSUE_CLASS_NONE
+ End Select
+
+ getDocOverallIssueClassificationAsString = Str
+End Function
+
+Public Function getDocOverallMacroClassAsString(docMacroClass As EnumDocOverallMacroClass) As String
+ Dim Str As String
+ 'Error handling not required
+
+ Select Case docMacroClass
+ Case enMacroComplex
+ Str = RID_STR_COMMON_MACRO_CLASS_COMPLEX
+ Case enMacroMedium
+ Str = RID_STR_COMMON_MACRO_CLASS_MEDIUM
+ Case enMacroSimple
+ Str = RID_STR_COMMON_MACRO_CLASS_SIMPLE
+ Case Else
+ Str = RID_STR_COMMON_MACRO_CLASS_NONE
+ End Select
+
+ getDocOverallMacroClassAsString = Str
+End Function
+
+Function WriteDocRefDetails(wsRefDetails As Worksheet, DetailsRow As Long, _
+ aAnalysis As DocumentAnalysis, fileName As String) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteDocRefDetails"
+
+ Dim myIssue As IssueInfo
+ Dim rowIndex As Long
+ rowIndex = DetailsRow
+
+ Dim index As Integer
+
+ 'Output References for Docs with Macros
+ If aAnalysis.HasMacros And (aAnalysis.References.count > 0) Then
+ For index = 1 To aAnalysis.References.count
+ Set myIssue = aAnalysis.References(index)
+ OutputReferenceAttributes wsRefDetails, rowIndex, aAnalysis, myIssue, fileName
+ rowIndex = rowIndex + 1
+ Set myIssue = Nothing
+ Next index
+ End If
+
+ WriteDocRefDetails = rowIndex
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : path " & aAnalysis.name & ": " & _
+ " : row " & DetailsRow & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Sub OutputReferenceAttributes(wsIssueDetails As Worksheet, rowIndex As Long, _
+ aAnalysis As DocumentAnalysis, myIssue As IssueInfo, fileName As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "OutputReferenceAttributes"
+
+ Dim strAttributes As String
+
+ With myIssue
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CREF_DETDOCNAME, fileName
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CREF_DETDOCAPPLICATION, aAnalysis.Application
+
+ strAttributes = .Values(RID_STR_COMMON_ATTRIBUTE_MAJOR) & "." & .Values(RID_STR_COMMON_ATTRIBUTE_MINOR)
+ strAttributes = IIf(strAttributes = "0.0" Or strAttributes = ".", .Values(RID_STR_COMMON_ATTRIBUTE_NAME), _
+ .Values(RID_STR_COMMON_ATTRIBUTE_NAME) & " " & .Values(RID_STR_COMMON_ATTRIBUTE_MAJOR) & _
+ "." & .Values(RID_STR_COMMON_ATTRIBUTE_MINOR))
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CREF_DETREFERENCE, strAttributes
+
+ If .Values(RID_STR_COMMON_ATTRIBUTE_TYPE) = RID_STR_COMMON_ATTRIBUTE_PROJECT Then
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CREF_DETDESCRIPTION, RID_STR_COMMON_ATTRIBUTE_PROJECT
+ Else
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CREF_DETDESCRIPTION, _
+ IIf(.Values(RID_STR_COMMON_ATTRIBUTE_DESCRIPTION) <> "", .Values(RID_STR_COMMON_ATTRIBUTE_DESCRIPTION), RID_STR_COMMON_NA)
+ End If
+
+
+ If .Values(RID_STR_COMMON_ATTRIBUTE_ISBROKEN) <> RID_STR_COMMON_ATTRIBUTE_BROKEN Then
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CREF_DETLOCATION, _
+ .Values(RID_STR_COMMON_ATTRIBUTE_FILE)
+ Else
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CREF_DETLOCATION, _
+ RID_STR_COMMON_NA
+ End If
+
+ 'Reference Details
+ strAttributes = RID_STR_COMMON_ATTRIBUTE_TYPE & ": " & .Values(RID_STR_COMMON_ATTRIBUTE_TYPE) & vbLf
+ strAttributes = strAttributes & RID_STR_COMMON_ATTRIBUTE_PROPERTIES & ": " & _
+ .Values(RID_STR_COMMON_ATTRIBUTE_BUILTIN) & " " & .Values(RID_STR_COMMON_ATTRIBUTE_ISBROKEN)
+ strAttributes = IIf(.Values(RID_STR_COMMON_ATTRIBUTE_GUID) <> "", _
+ strAttributes & vbLf & RID_STR_COMMON_ATTRIBUTE_GUID & ": " & .Values(RID_STR_COMMON_ATTRIBUTE_GUID), _
+ strAttributes)
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CREF_DETATTRIBUTES, strAttributes
+
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CREF_DETNAMEANDPATH, aAnalysis.name
+ End With
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : path " & aAnalysis.name & ": " & _
+ " : rowIndex " & rowIndex & ": " & _
+ " : myIssue " & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Sub OutputCommonIssueAttributes(wsIssueDetails As Worksheet, rowIndex As Long, _
+ myIssue As IssueInfo)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "OutputCommonIssueAttributes"
+
+ Dim index As Integer
+ Dim strAttributes As String
+
+ strAttributes = ""
+ For index = 1 To myIssue.Attributes.count
+ strAttributes = strAttributes & myIssue.Attributes(index) & " - " & _
+ myIssue.Values(index)
+ strAttributes = strAttributes & IIf(index <> myIssue.Attributes.count, vbLf, "")
+
+ Next index
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CISSUE_DETATTRIBUTES, strAttributes
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : rowIndex " & rowIndex & ": " & _
+ " : myIssue " & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+'Store issue cost and factor costs across all documents
+Sub CollateIssueAndFactorCountsAcrossAllDocs(aAnalysis As DocumentAnalysis, myIssue As IssueInfo, fileName As String)
+ Const CSTR_USER_FORM = "User Form"
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CollateIssueAndFactorCountsAcrossAllDocs"
+
+ 'Don't want to cost ISSUE_INFORMATION issues
+ If myIssue.IssueTypeXML = CSTR_ISSUE_INFORMATION Then Exit Sub
+
+ Dim issueKey As String
+ issueKey = getAppSpecificApplicationName & "_" & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML
+
+ 'Store costing metrics for Issue
+ AddIssueAndOneToDict issueKey
+
+ 'Store prepeared issue for costing metrics
+ If myIssue.Preparable Then
+ AddPreparedIssueAndOneToDict issueKey & "_Prepared"
+ End If
+
+ 'Additional costing Factors output for VB macros
+ If (myIssue.IssueTypeXML = CSTR_ISSUE_VBA_MACROS) And _
+ (myIssue.SubTypeXML <> CSTR_SUBISSUE_MACRO_PASSWORD_PROTECTION) Then
+
+ 'Unique Macro Module and Line count
+ AddMacroModuleHashToMacroDict myIssue
+
+ 'Line count
+ AddIssueAndValToDict issueKey & "_" & CSTR_SUBISSUE_VBA_MACROS_NUMLINES, myIssue, _
+ RID_STR_COMMON_ATTRIBUTE_NUMBER_OF_LINES
+
+ 'User From info
+ If myIssue.SubLocation = CSTR_USER_FORM Then
+ AddIssueAndOneToDict issueKey & "_" & CSTR_SUBISSUE_VBA_MACROS_USERFORMS_COUNT
+
+ AddIssueAndValToDict issueKey & "_" & CSTR_SUBISSUE_VBA_MACROS_USERFORMS_CONTROL_COUNT, myIssue, _
+ RID_STR_COMMON_ATTRIBUTE_CONTROLS
+ End If
+ 'Additional costing Factors output for External References
+ ElseIf (myIssue.IssueTypeXML = CSTR_ISSUE_PORTABILITY And _
+ myIssue.SubTypeXML = CSTR_SUBISSUE_EXTERNAL_REFERENCES_IN_MACRO) Then
+
+ AddIssueAndValToDict issueKey & "_" & CSTR_SUBISSUE_EXTERNAL_REFERENCES_IN_MACRO_COUNT, myIssue, _
+ RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES_COUNT
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : path " & aAnalysis.name & ": " & _
+ " : myIssue " & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub OutputCommonIssueDetails(wsIssueDetails As Worksheet, rowIndex As Long, _
+ aAnalysis As DocumentAnalysis, myIssue As IssueInfo, fileName As String)
+ Const CSTR_USER_FORM = "User Form"
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "OutputCommonIssueDetails"
+
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CISSUE_DETDOCNAME, fileName
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CISSUE_DETDOCAPPLICATION, aAnalysis.Application
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CISSUE_DETTYPE, myIssue.IssueType
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CISSUE_DETSUBTYPE, myIssue.SubType
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CISSUE_DETLOCATION, myIssue.Location
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CISSUE_DETSUBLOCATION, _
+ IIf(myIssue.SubLocation = "", RID_STR_COMMON_NA, myIssue.SubLocation)
+ SetWorksheetCellValueToVariant wsIssueDetails, rowIndex, CISSUE_DETLINE, _
+ IIf(myIssue.Line = -1, RID_STR_COMMON_NA, myIssue.Line)
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CISSUE_DETCOLUMN, _
+ IIf(myIssue.column = "", RID_STR_COMMON_NA, myIssue.column)
+ SetWorksheetCellValueToString wsIssueDetails, rowIndex, CISSUE_DETNAMEANDPATH, aAnalysis.name
+
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : path " & aAnalysis.name & ": " & _
+ " : rowIndex " & rowIndex & ": " & _
+ " : myIssue " & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub AddIssueAndBoolValToDict(issueKey As String, issue As IssueInfo, valKey As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "AddIssueAndBoolValToDict"
+
+ If mIssuesDict.Exists(issueKey) Then
+ mIssuesDict.item(issueKey) = mIssuesDict.item(issueKey) + _
+ IIf(issue.Values(valKey) > 0, 1, 0)
+ Else
+ mIssuesDict.Add issueKey, IIf(issue.Values(valKey) > 0, 1, 0)
+ End If
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : issueKey " & issueKey & ": " & _
+ " : valKey " & valKey & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Sub AddIssueAndValToDict(issueKey As String, issue As IssueInfo, valKey As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "AddIssueAndValToDict"
+
+ If mIssuesDict.Exists(issueKey) Then
+ mIssuesDict.item(issueKey) = mIssuesDict.item(issueKey) + issue.Values(valKey)
+ Else
+ mIssuesDict.Add issueKey, issue.Values(valKey)
+ End If
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : issueKey " & issueKey & ": " & _
+ " : valKey " & valKey & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub AddMacroModuleHashToMacroDict(issue As IssueInfo)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ Dim issueKey As String
+ Dim issueVal As String
+ currentFunctionName = "AddMacroModuleHashToMacroDict"
+
+ issueKey = issue.Values(RID_STR_COMMON_ATTRIBUTE_SIGNATURE)
+ If issueKey = RID_STR_COMMON_NA Then Exit Sub
+
+ If Not mMacroDict.Exists(issueKey) Then
+ mMacroDict.Add issueKey, issue.Values(RID_STR_COMMON_ATTRIBUTE_NUMBER_OF_LINES)
+ End If
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : issueKey " & issueKey & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub AddIssueAndOneToDict(key As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "AddIssueAndOneToDict"
+
+ If mIssuesDict.Exists(key) Then
+ mIssuesDict.item(key) = mIssuesDict.item(key) + 1
+ Else
+ mIssuesDict.Add key, 1
+ End If
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : key " & key & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub AddPreparedIssueAndOneToDict(key As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "AddPreparedIssueAndOneToDict"
+
+ If mPreparedIssuesDict.Exists(key) Then
+ mPreparedIssuesDict.item(key) = mPreparedIssuesDict.item(key) + 1
+ Else
+ mPreparedIssuesDict.Add key, 1
+ End If
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : key " & key & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Function GetExcelInstance() As Excel.Application
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetExcelInstance"
+
+ Dim xl As Excel.Application
+ On Error Resume Next
+ 'Try and get an existing instance
+ Set xl = GetObject(, "Excel.Application")
+ If Err.Number = 429 Then
+ Set xl = CreateObject("Excel.Application")
+ ElseIf Err.Number <> 0 Then
+ Set xl = Nothing
+ MsgBox "Error: " & Err.Description
+ Exit Function
+ End If
+ Set GetExcelInstance = xl
+ Set xl = Nothing
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Sub WriteOverview(logWb As WorkBook, DocCount As DocumentCount, templateCount As DocumentCount, _
+ macroClasses As DocMacroClassifications, issueClasses As DocIssueClassifications)
+ Const COV_ISSUECLASS_COMPLEX = "MAW_ISSUECLASS_COMPLEX"
+ Const COV_ISSUECLASS_MINOR = "MAW_ISSUECLASS_MINOR"
+ Const COV_ISSUECLASS_NONE = "MAW_ISSUECLASS_NONE"
+
+ Const COV_MACROCLASS_COMPLEX = "MAW_MACROCLASS_COMPLEX"
+ Const COV_MACROCLASS_MEDIUM = "MAW_MACROCLASS_MEDIUM"
+ Const COV_MACROCLASS_SIMPLE = "MAW_MACROCLASS_SIMPLE"
+ Const COV_MACROCLASS_NONE = "MAW_MACROCLASS_NONE"
+
+ Const COV_ISSUECOUNT_COMPLEX = "MAW_ISSUECOUNT_COMPLEX"
+ Const COV_ISSUECOUNT_MINOR = "MAW_ISSUECOUNT_MINOR"
+
+ Const COV_MODDATES_LESS3MONTHS = "MAW_MODDATES_LESS3MONTHS"
+ Const COV_MODDATES_3TO6MONTHS = "MAW_MODDATES_3TO6MONTHS"
+ Const COV_MODDATES_6TO12MONTHS = "MAW_MODDATES_6TO12MONTHS"
+ Const COV_MODDATES_MORE12MONTHS = "MAW_MODDATES_MORE12MONTHS"
+
+ Const COV_DOC_MIGRATION_COSTS = "Document_Migration_Costs"
+ Const COV_DOC_PREPARABLE_COSTS = "Document_Migration_Preparable_Costs"
+ Const COV_MACRO_MIGRATION_COSTS = "Macro_Migration_Costs"
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteOverview"
+
+ Dim appName As String
+ appName = getAppSpecificApplicationName
+
+ 'OV - Title
+ SetWorkbookNameValueToString logWb, COVERVIEW_TITLE_LABEL, GetTitle
+ SetWorkbookNameValueToVariant logWb, "AnalysisDate", Now
+ SetWorkbookNameValueToString logWb, "AnalysisVersion", _
+ RID_STR_COMMON_OV_VERSION_STR & ": " & GetTitle & " " & GetVersion
+
+ 'OV - Number of Documents Analyzed
+ AddLongToWorkbookNameValue logWb, CNUMBERDOC_ALL & getAppSpecificDocExt, DocCount.numDocsAnalyzed
+ AddLongToWorkbookNameValue logWb, CNUMBERDOC_ALL & getAppSpecificTemplateExt, templateCount.numDocsAnalyzed
+
+ 'OV - Documents with Document Migration Issues (excludes macro issues)
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_ISSUECLASS_COMPLEX, issueClasses.complex
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_ISSUECLASS_MINOR, issueClasses.Minor
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_ISSUECLASS_NONE, issueClasses.None
+
+ 'OV - Documents with Macro Migration Issues
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_MACROCLASS_COMPLEX, macroClasses.complex
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_MACROCLASS_MEDIUM, macroClasses.Medium
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_MACROCLASS_SIMPLE, macroClasses.Simple
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_MACROCLASS_NONE, macroClasses.None
+
+ 'OV - Document Modification Dates
+ Dim modDates As DocModificationDates
+ Call GetDocModificationDates(modDates)
+
+ SetWorkbookNameValueToLong logWb, COV_MODDATES_LESS3MONTHS, modDates.lessThanThreemonths
+ SetWorkbookNameValueToLong logWb, COV_MODDATES_3TO6MONTHS, modDates.threeToSixmonths
+ SetWorkbookNameValueToLong logWb, COV_MODDATES_6TO12MONTHS, modDates.sixToTwelvemonths
+ SetWorkbookNameValueToLong logWb, COV_MODDATES_MORE12MONTHS, modDates.greaterThanOneYear
+
+
+ If InDocPreparation Then
+ 'OV - Document Migration Issues(excludes macro issues)
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_ISSUECOUNT_COMPLEX, _
+ DocCount.numComplexIssues + templateCount.numComplexIssues
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_ISSUECOUNT_MINOR, _
+ DocCount.numMinorIssues + templateCount.numMinorIssues
+
+ 'OV - Document Migration Costs
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_DOC_MIGRATION_COSTS, _
+ DocCount.totalDocIssuesCosts + templateCount.totalDocIssuesCosts
+
+ 'OV - Document Migration Preparable Costs
+ AddLongToWorkbookNameValue logWb, COV_DOC_PREPARABLE_COSTS, _
+ DocCount.totalPreparableIssuesCosts + templateCount.totalPreparableIssuesCosts
+
+ 'OV - Macro Migration Costs
+ AddLongToWorkbookNameValue logWb, appName & "_" & COV_MACRO_MIGRATION_COSTS, _
+ DocCount.totalMacroCosts + templateCount.totalMacroCosts
+ End If
+
+ 'OV - Internal Attributes
+ AddLongToWorkbookNameValue logWb, appName & "_" & "TotalDocsAnalysedWithIssues", _
+ DocCount.numDocsAnalyzedWithIssues + templateCount.numDocsAnalyzedWithIssues
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : Problem writing overview: " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetupDAWResultsSpreadsheet(logWb As WorkBook, fontName As String, fontSize As Long)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetupDAWResultsSpreadsheet"
+ Dim bSetupRun As Boolean
+ bSetupRun = CBool(GetWorkbookNameValueAsLong(logWb, COV_DAW_SETUP_SHEETS_RUN_LBL))
+
+ If bSetupRun Then Exit Sub
+
+ 'Setup Text Boxes
+ SetupSheetTextBox logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_MOD_DATES_COMMENT_TXB, _
+ RID_STR_COMMON_OV_DOC_MOD_DATES_COMMENT_TITLE, RID_STR_COMMON_OV_DOC_MOD_DATES_COMMENT_BODY, _
+ CCOMMENTS_FONT_SIZE, fontName
+ SetupSheetTextBox logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_MOD_DATES_LEGEND_TXB, _
+ RID_STR_COMMON_OV_LEGEND_TITLE, RID_STR_COMMON_OV_DOC_MOD_DATES_LEGEND_BODY, fontSize, fontName
+ SetupSheetTextBox logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_MACRO_COMMENT_TXB, _
+ RID_STR_COMMON_OV_DOC_MACRO_COMMENT_TITLE, RID_STR_COMMON_OV_DOC_MACRO_COMMENT_BODY, _
+ CCOMMENTS_FONT_SIZE, fontName
+ SetupSheetTextBox logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_MACRO_LEGEND_TXB, _
+ RID_STR_COMMON_OV_LEGEND_TITLE, RID_STR_COMMON_OV_DOC_MACRO_LEGEND_BODY, fontSize, fontName
+ Dim monthLimit As Long
+ monthLimit = GetIssuesLimitInDays / CNUMDAYS_IN_MONTH
+ SetWorkbookNameValueToString logWb, COV_HIGH_LEVEL_ANALYSIS_LBL, _
+ IIf(monthLimit <> CMAX_LIMIT, _
+ ReplaceTopicTokens(RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_DAW, CR_TOPIC, CStr(monthLimit)), _
+ RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_PAW_NO_LIMIT)
+
+ SetupSheetTextBox logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_ANALYSIS_COMMENT_TXB, _
+ RID_STR_COMMON_OV_DOC_ANALYSIS_COMMENT_TITLE, RID_STR_COMMON_OV_DOC_ANALYSIS_COMMENT_BODY, _
+ CCOMMENTS_FONT_SIZE, fontName
+ SetupSheetTextBox logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_ANALYSIS_LEGEND_DAW_TXB, _
+ RID_STR_COMMON_OV_LEGEND_TITLE, RID_STR_COMMON_OV_DOC_ANALYSIS_DAW_LEGEND_BODY, fontSize, fontName
+
+ 'Setup Chart Titles
+ SetupSheetChartTitles logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_MOD_DATES_CHART, _
+ RID_STR_COMMON_OV_DOC_MOD_DATES_CHART_TITLE
+ SetupSheetChartTitles logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_MACRO_CHART, _
+ RID_STR_COMMON_OV_DOC_MACRO_CHART_TITLE
+ SetupSheetChartTitles logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_ANALYSIS_CHART, _
+ RID_STR_COMMON_OV_DOC_ANALYSIS_CHART_TITLE
+
+ 'Set selection to top cell of Overview
+ logWb.Sheets(RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW).Range("A1").Select
+
+ bSetupRun = True
+ SetWorkbookNameValueToBoolean logWb, COV_DAW_SETUP_SHEETS_RUN_LBL, bSetupRun
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : Problem setting up spreadsheet for DAW: " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetupPAWResultsSpreadsheet(logWb As WorkBook, fontName As String, fontSize As Long)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetupPAWResultsSpreadsheet"
+ Dim bSetupRun As Boolean
+ bSetupRun = CBool(GetWorkbookNameValueAsLong(logWb, COV_PAW_SETUP_SHEETS_RUN_LBL))
+
+ If bSetupRun Then Exit Sub
+
+ 'Costs
+ logWb.Names(COV_COSTS_PREPISSUE_COUNT_COL_LBL).RefersToRange.EntireColumn.Hidden = False
+
+ 'Setup Text Boxes
+ SetupSheetTextBox logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_MOD_DATES_LEGEND_TXB, _
+ RID_STR_COMMON_OV_LEGEND_TITLE, RID_STR_COMMON_OV_DOC_MOD_DATES_LEGEND_BODY, fontSize, fontName
+ SetupSheetTextBox logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_MACRO_LEGEND_TXB, _
+ RID_STR_COMMON_OV_LEGEND_TITLE, RID_STR_COMMON_OV_DOC_MACRO_LEGEND_BODY, fontSize, fontName
+ SetWorkbookNameValueToString logWb, COV_HIGH_LEVEL_ANALYSIS_LBL, _
+ RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_PAW_NO_LIMIT
+ SetupSheetTextBox logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_ANALYSIS_LEGEND_PAW_TXB, _
+ RID_STR_COMMON_OV_LEGEND_TITLE, RID_STR_COMMON_OV_DOC_ANALYSIS_PAW_LEGEND_BODY, fontSize, fontName
+
+ 'Setup Chart Titles
+ SetupSheetChartTitles logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_MOD_DATES_CHART, _
+ RID_STR_COMMON_OV_DOC_MOD_DATES_CHART_TITLE
+ SetupSheetChartTitles logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_MACRO_CHART, _
+ RID_STR_COMMON_OV_DOC_MACRO_CHART_TITLE
+ SetupSheetChartTitles logWb, RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, COV_DOC_ANALYSIS_CHART, _
+ RID_STR_COMMON_OV_DOC_ANALYSIS_CHART_TITLE
+
+ 'Set selection to top cell of Overview
+ logWb.Sheets(RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW).Range("A1").Select
+
+ bSetupRun = True
+ SetWorkbookNameValueToBoolean logWb, COV_PAW_SETUP_SHEETS_RUN_LBL, bSetupRun
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : Problem setting up spreadsheet for PAW: " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetupPrintRanges(logWb As WorkBook, docPropRow As Long, appIssuesRow As Long, issueDetailsRow As Long, _
+ refDetailsRow As Long)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetupPrintRanges"
+
+ 'Set Print Ranges
+ If InDocPreparation Then
+
+ logWb.Worksheets(RID_STR_COMMON_RESULTS_SHEET_NAME_DOCPROP).PageSetup.PrintArea = "$A1:$U" & (docPropRow + mDocPropRowOffset)
+ logWb.Worksheets(RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUE_DETAILS).PageSetup.PrintArea = "$A1:$J" & issueDetailsRow
+ logWb.Worksheets(RID_STR_COMMON_RESULTS_SHEET_NAME_DOCREF_DETAILS).PageSetup.PrintArea = "$A1:$G" & refDetailsRow
+ If getAppSpecificApplicationName = CAPPNAME_WORD Then
+ logWb.Worksheets(RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_WORD).PageSetup.PrintArea = _
+ "$A1:$N" & appIssuesRow
+ ElseIf getAppSpecificApplicationName = CAPPNAME_EXCEL Then
+ logWb.Worksheets(RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_EXCEL).PageSetup.PrintArea = _
+ "$A1:$M" & appIssuesRow
+ Else
+ logWb.Worksheets(RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_POWERPOINT).PageSetup.PrintArea = _
+ "$A1:$K" & appIssuesRow
+ End If
+ Else
+ logWb.Worksheets(RID_STR_COMMON_RESULTS_SHEET_NAME_DOCPROP).PageSetup.PrintArea = "$A1:$U" & (docPropRow + mDocPropRowOffset)
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : Problem setting print ranges: " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetupSheetChartTitles(logWb As WorkBook, namedWorksheet As String, namedChart As String, _
+ chartTitle As String)
+ Const CCHART_TITLE_FONT_SIZE = 11
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetupSheetChartTitles"
+
+ With logWb.Sheets(namedWorksheet).ChartObjects(namedChart).Chart
+ .HasTitle = True
+ .chartTitle.Characters.Text = chartTitle
+ .chartTitle.Font.Size = CCHART_TITLE_FONT_SIZE
+ End With
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " namedWorkSheet: " & namedWorksheet & _
+ " namedChart: " & namedChart & _
+ " chartTitle: " & chartTitle & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetupSheetTextBox(logWb As WorkBook, namedWorksheet As String, _
+ textBoxName As String, textBoxTitle As String, textBoxBody As String, _
+ textSize As Long, fontName As String)
+
+ Const CMAX_INSERTABLE_STRING_LEN = 255
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetupSheetTextBox"
+
+ Dim strTextBody As String
+ Dim allText As String
+ strTextBody = ReplaceTopic2Tokens(textBoxBody, CR_STR, Chr(10), CR_PRODUCT, RID_STR_COMMON_OV_PRODUCT_STR)
+
+ 'Setup Text Boxes
+ logWb.Sheets(namedWorksheet).Activate
+ logWb.Sheets(namedWorksheet).Shapes(textBoxName).Select
+
+ '*** Workaround Excel bug: 213841 XL: Passed Strings Longer Than 255 Characters Are Truncated
+ Dim I As Long
+ logWb.Application.Selection.Text = ""
+
+ logWb.Application.Selection.Characters.Text = textBoxTitle & Chr(10)
+
+ With logWb.Application.Selection
+ For I = 0 To Int(Len(strTextBody) / CMAX_INSERTABLE_STRING_LEN)
+ .Characters(.Characters.count + 1).Text = Mid(strTextBody, _
+ (I * CMAX_INSERTABLE_STRING_LEN) + 1, CMAX_INSERTABLE_STRING_LEN)
+ Next
+ End With
+
+ 'Highlight title only
+ With logWb.Application.Selection.Characters(start:=1, Length:=Len(textBoxTitle)).Font
+ .name = fontName
+ .FontStyle = "Bold"
+ .Size = textSize
+ End With
+ With logWb.Application.Selection.Characters(start:=Len(textBoxTitle) + 1, _
+ Length:=Len(strTextBody) + 1).Font
+ .name = fontName
+ .FontStyle = "Regular"
+ .Size = textSize
+ End With
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " namedWorkSheet: " & namedWorksheet & _
+ " textBoxName: " & textBoxName & _
+ " textBoxTitle: " & textBoxTitle & _
+ " textBoxBody: " & textBoxBody & _
+ " textSize: " & textSize & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Function GetWorkbookNameValueAsLong(logWb As WorkBook, name As String) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetWorkbookNameValueAsLong"
+
+ GetWorkbookNameValueAsLong = logWb.Names(name).RefersToRange.Cells(1, 1).value
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ GetWorkbookNameValueAsLong = 0
+ WriteDebug currentFunctionName & " : name " & name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function GetWorksheetCellValueAsLong(logWs As Worksheet, row As Long, col As Long) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetWorksheetCellValueAsLong"
+
+ GetWorksheetCellValueAsLong = logWs.Cells(row, col).value
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : row " & row & _
+ " : col " & col & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function GetWorksheetCellValueAsString(logWs As Worksheet, row As Long, col As Long) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetWorksheetCellValueToString"
+
+ GetWorksheetCellValueAsString = logWs.Cells(row, col).value
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ GetWorksheetCellValueAsString = ""
+
+ WriteDebug currentFunctionName & _
+ " : row " & row & _
+ " : col " & col & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Sub SetWorksheetCellValueToLong(logWs As Worksheet, row As Long, col As Long, val As Long)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetWorksheetCellValueToLong"
+
+ logWs.Cells(row, col) = val
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : row " & row & _
+ " : col " & col & _
+ " : val " & val & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Sub SetWorksheetCellValueToInteger(logWs As Worksheet, row As Long, col As Long, intVal As Integer)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetWorksheetCellValueToInteger"
+
+ logWs.Cells(row, col) = intVal
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : row " & row & _
+ " : col " & col & _
+ " : intVal " & intVal & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetWorksheetCellValueToVariant(logWs As Worksheet, row As Long, col As Long, varVal As Variant)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetWorksheetCellValueToInteger"
+
+ logWs.Cells(row, col) = varVal
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : row " & row & _
+ " : col " & col & _
+ " : varVal " & varVal & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetWorksheetCellValueToString(logWs As Worksheet, row As Long, col As Long, strVal As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetWorksheetCellValueToString"
+
+ logWs.Cells(row, col) = strVal
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : row " & row & _
+ " : col " & col & _
+ " : strVal " & strVal & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetWorkbookNameValueToBoolean(logWb As WorkBook, name As String, bVal As Boolean)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetWorkbookNameValueToBoolean"
+
+ logWb.Names(name).RefersToRange.Cells(1, 1) = bVal
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : name " & name & " : boolean value " & bVal & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetWorkbookNameValueToString(logWb As WorkBook, name As String, val As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetWorkbookNameValueToString"
+
+ logWb.Names(name).RefersToRange.Cells(1, 1) = val
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : name " & name & " : value " & val & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetWorkbookNameValueToLong(logWb As WorkBook, name As String, val As Long)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetWorkbookNameValueToLong"
+
+ logWb.Names(name).RefersToRange.Cells(1, 1) = val
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : name " & name & " : value " & val & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetWorkbookNameValueToVariant(logWb As WorkBook, name As String, val As Variant)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetWorkbookNameValueToVariant"
+
+ logWb.Names(name).RefersToRange.Cells(1, 1) = val
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : name " & name & " : value " & val & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub AddLongToWorkbookNameValue(logWb As WorkBook, name As String, val As Long)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "AddLongToWorkbookNameValue"
+
+ logWb.Names(name).RefersToRange.Cells(1, 1) = logWb.Names(name).RefersToRange.Cells(1, 1).value + val
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : name " & name & " : value " & val & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Sub AddVariantToWorkbookNameValue(logWb As WorkBook, name As String, varVal As Variant)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "AddVariantToWorkbookNameValue"
+
+ logWb.Names(name).RefersToRange.Cells(1, 1) = logWb.Names(name).RefersToRange.Cells(1, 1).value + varVal
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : name " & name & " : value " & varVal & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SaveAnalysisResultsVariables(logWb As WorkBook, offsetDocIssueDetailsRow As Long, _
+ offsetDocRefDetailsRow As Long)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SaveAnalysisResultsVariables"
+
+ 'OV - Internal Attributes
+ SetWorkbookNameValueToLong logWb, "TotalIssuesAnalysed", offsetDocIssueDetailsRow
+ SetWorkbookNameValueToLong logWb, "TotalRefsAnalysed", offsetDocRefDetailsRow
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : offsetDocIssueDetailsRow " & offsetDocIssueDetailsRow & _
+ " : offsetDocRefDetailsRow " & offsetDocRefDetailsRow & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetupAnalysisResultsVariables(logWb As WorkBook, _
+ offsetDocPropRow As Long, offsetDocIssuesRow As Long, _
+ offsetDocIssueDetailsRow As Long, offsetDocRefDetailsRow As Long)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetupAnalysisResultsVariables"
+
+ offsetDocPropRow = GetWorkbookNameValueAsLong(logWb, CTOTAL_DOCS_ANALYZED)
+ offsetDocIssueDetailsRow = GetWorkbookNameValueAsLong(logWb, "TotalIssuesAnalysed")
+ offsetDocRefDetailsRow = GetWorkbookNameValueAsLong(logWb, "TotalRefsAnalysed")
+ offsetDocIssuesRow = GetWorkbookNameValueAsLong(logWb, getAppSpecificApplicationName & "_" & "TotalDocsAnalysedWithIssues")
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : offsetDocPropRow " & offsetDocPropRow & _
+ " : offsetDocIssueDetailsRow " & offsetDocIssueDetailsRow & _
+ " : offsetDocRefDetailsRow " & offsetDocRefDetailsRow & _
+ " : offsetDocIssuesRow " & offsetDocIssuesRow & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub WriteToIni(key As String, value As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteToIni"
+
+ If mIniFilePath = "" Then Exit Sub
+
+ Call WritePrivateProfileString("Analysis", key, value, mIniFilePath)
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : key " & key & " : value " & value & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub WriteToLog(key As String, value As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteToLog"
+
+ If mLogFilePath = "" Then Exit Sub
+
+ Dim sSection As String
+ sSection = getAppSpecificApplicationName
+
+ Call WritePrivateProfileString(sSection, key, value, mLogFilePath)
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : key " & key & " : value " & value & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Sub WriteDebug(value As String)
+ On Error Resume Next 'Ignore errors in our error writing routines - could get circular dependency otherwise
+ Static ErrCount As Long
+
+ If mLogFilePath = "" Then Exit Sub
+
+ Dim sSection As String
+ sSection = getAppSpecificApplicationName & "Debug"
+
+ If mDebugLevel > 0 Then
+ Call WritePrivateProfileString(sSection, "Doc" & mDocIndex & "_debug" & ErrCount, value, mLogFilePath)
+ ErrCount = ErrCount + 1
+ Else
+ Debug.Print
+ End If
+End Sub
+Sub WriteDebugLevelTwo(value As String)
+ On Error Resume Next 'Ignore errors in our error writing routines - could get circular dependency otherwise
+ Static ErrCountTwo As Long
+
+ If mLogFilePath = "" Then Exit Sub
+
+ Dim sSection As String
+ sSection = getAppSpecificApplicationName & "Debug"
+
+ If mDebugLevel > 1 Then
+ Call WritePrivateProfileString(sSection, "Doc" & mDocIndex & "_debug" & ErrCountTwo, "Level2: " & value, mLogFilePath)
+ ErrCountTwo = ErrCountTwo + 1
+ Else
+ Debug.Print
+ End If
+End Sub
+
+Public Function ProfileLoadDict(dict As Scripting.Dictionary, _
+ lpSectionName As String, _
+ inifile As String) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "ProfileLoadDict"
+ Dim success As Long
+ Dim c As Long
+ Dim nSize As Long
+ Dim KeyData As String
+ Dim lpKeyName As String
+ Dim ret As String
+
+ ret = Space$(2048)
+ nSize = Len(ret)
+ success = GetPrivateProfileString( _
+ lpSectionName, vbNullString, "", ret, nSize, inifile)
+
+ If success Then
+ ret = Left$(ret, success)
+
+ Do Until ret = ""
+ lpKeyName = StripNulls(ret)
+ KeyData = ProfileGetItem( _
+ lpSectionName, lpKeyName, "", inifile)
+ dict.Add lpKeyName, KeyData
+ Loop
+ End If
+ ProfileLoadDict = dict.count
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : dict.Count " & dict.count & _
+ " : lpSectionName " & lpSectionName & _
+ " : inifile " & inifile & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Private Function StripNulls(startStrg As String) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "StripNulls"
+ Dim pos As Long
+ Dim item As String
+
+ pos = InStr(1, startStrg, Chr$(0))
+
+ If pos Then
+
+ item = Mid$(startStrg, 1, pos - 1)
+ startStrg = Mid$(startStrg, pos + 1, Len(startStrg))
+ StripNulls = item
+
+ End If
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : startStrg " & startStrg & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Public Function ProfileGetItem(lpSectionName As String, _
+ lpKeyName As String, _
+ defaultValue As String, _
+ inifile As String) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "ProfileGetItem"
+
+ Dim success As Long
+ Dim nSize As Long
+ Dim ret As String
+ ret = Space$(2048)
+ nSize = Len(ret)
+ success = GetPrivateProfileString(lpSectionName, _
+ lpKeyName, _
+ defaultValue, _
+ ret, _
+ nSize, _
+ inifile)
+ If success Then
+ ProfileGetItem = Left$(ret, success)
+ Else
+ ProfileGetItem = defaultValue
+ End If
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : lpSectionName " & lpSectionName & _
+ " : lpKeyName " & lpKeyName & _
+ " : defaultValue " & defaultValue & _
+ " : inifile " & inifile & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Public Function GetDefaultPassword() As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetDefaultPassword"
+
+ Static myPassword As String
+
+ If myPassword = "" Then
+ myPassword = ProfileGetItem("Analysis", CDEFAULT_PASSWORD, "", mIniFilePath)
+ End If
+
+ GetDefaultPassword = myPassword
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Public Function GetVersion() As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetVersion"
+
+ Static myVersion As String
+
+ If myVersion = "" Then
+ myVersion = ProfileGetItem("Analysis", CVERSION, "", mIniFilePath)
+ End If
+
+ GetVersion = myVersion
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Public Function GetTitle() As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetTitle"
+
+ Static myTitle As String
+
+ If myTitle = "" Then
+ myTitle = ProfileGetItem("Analysis", CTITLE, RID_STR_COMMON_ANALYSIS_STR, mIniFilePath)
+ End If
+
+ GetTitle = myTitle
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Sub SetPrepareToNone()
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetPrepareToNone"
+
+ Call WritePrivateProfileString("Analysis", CDOPREPARE, CStr(0), mIniFilePath)
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Function CheckForAbort() As Boolean
+ Dim currentFunctionName As String
+ Dim bAbort As Boolean
+
+ currentFunctionName = "CheckForAbort"
+ bAbort = False
+
+ On Error GoTo HandleErrors
+
+ bAbort = CBool(ProfileGetItem("Analysis", C_ABORT_ANALYSIS, "false", mIniFilePath))
+
+ 'reset the flag
+ If (bAbort) Then Call WriteToIni(C_ABORT_ANALYSIS, "false")
+
+FinalExit:
+ CheckForAbort = bAbort
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function CheckDoPrepare() As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckDoPrepare"
+
+ Static bDoPrepare As Boolean
+ Static myDoPrepare As String
+
+ If myDoPrepare = "" Then
+ bDoPrepare = CBool(ProfileGetItem("Analysis", _
+ CDOPREPARE, "False", mIniFilePath))
+ myDoPrepare = "OK"
+ End If
+
+ CheckDoPrepare = bDoPrepare
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function GetIssuesLimitInDays() As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+
+ currentFunctionName = "GetIssuesLimitInDays"
+
+ Static issuesLimit As Long
+ Static myDoPrepare As String
+
+ If issuesLimit = 0 Then
+ issuesLimit = CLng(ProfileGetItem("Analysis", _
+ CISSUES_LIMIT, CMAX_LIMIT, mIniFilePath)) * CNUMDAYS_IN_MONTH
+ End If
+
+ GetIssuesLimitInDays = issuesLimit
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Public Sub AddIssueDetailsNote(myIssue As IssueInfo, noteNum As Long, noteStr As String, _
+ Optional preStr As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "AddIssueDetailsNote"
+
+ If IsMissing(preStr) Then
+ preStr = RID_STR_COMMON_NOTE_PRE
+ End If
+ myIssue.Attributes.Add preStr & "[" & noteNum & "]"
+ myIssue.Values.Add noteStr
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : noteNum " & noteNum & " : noteStr " & noteStr & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Public Sub SetupWizardVariables( _
+ fileList As String, storeToDir As String, resultsFile As String, _
+ logFile As String, resultsTemplate As String, bOverwriteFile As Boolean, _
+ bNewResultsFile As Boolean, statFileName As String, debugLevel As Long, _
+ outputType As String, singleFile As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetupWizardVariables"
+
+ If mIniFilePath = "" Then
+ mIniFilePath = GetAppDataFolder & "\Sun\AnalysisWizard\" & CWIZARD & ".ini"
+ End If
+
+ statFileName = ProfileGetItem("Analysis", CSTAT_FILE, "", mIniFilePath)
+ fileList = ProfileGetItem("Analysis", CFILE_LIST, "", mIniFilePath)
+ storeToDir = ProfileGetItem("Analysis", COUTPUT_DIR, "", mIniFilePath)
+ resultsFile = ProfileGetItem("Analysis", CRESULTS_FILE, "", mIniFilePath)
+ logFile = ProfileGetItem("Analysis", CLOG_FILE, "", mIniFilePath)
+ resultsTemplate = ProfileGetItem("Analysis", CRESULTS_TEMPLATE, "", mIniFilePath)
+ bOverwriteFile = IIf(ProfileGetItem("Analysis", CRESULTS_EXIST, COVERWRITE_FILE, mIniFilePath) = COVERWRITE_FILE, _
+ True, False)
+ bNewResultsFile = CBool(ProfileGetItem("Analysis", CNEW_RESULTS_FILE, "True", mIniFilePath))
+ debugLevel = CLng(ProfileGetItem("Analysis", CDEBUG_LEVEL, "1", mIniFilePath))
+ outputType = ProfileGetItem("Analysis", COUTPUT_TYPE, COUTPUT_TYPE_XLS, mIniFilePath)
+ singleFile = ProfileGetItem("Analysis", CSINGLE_FILE, "", mIniFilePath)
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ ": mIniFilePath " & mIniFilePath & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Public Sub SetupSearchTypes(searchTypes As Collection)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetupSearchTypes"
+
+ Dim bDocument As Boolean
+ Dim bTemplate As Boolean
+
+ bDocument = CBool(ProfileGetItem("Analysis", LCase("type" & getAppSpecificApplicationName & "doc"), "False", mIniFilePath))
+ bTemplate = CBool(ProfileGetItem("Analysis", LCase("type" & getAppSpecificApplicationName & "dot"), "False", mIniFilePath))
+ If bDocument = True Then searchTypes.Add "*" & getAppSpecificDocExt
+ If bTemplate = True Then searchTypes.Add "*" & getAppSpecificTemplateExt
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & ": searchTypes.Count " & searchTypes.count & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub WriteXMLHeader(out As TextStream)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteXMLHeader"
+
+ out.WriteLine "<?xml version=""1.0"" encoding=""ISO-8859-1""?>"
+ out.WriteLine "<!DOCTYPE results SYSTEM 'analysis.dtd'>"
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Sub WriteXMLResultsStartTag(out As TextStream)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteXMLResultsStartTag"
+
+ out.WriteLine "<results generated-by=""" & IIf(InDocPreparation, "documentanalysis_preparation", "documentanalysis") & """"
+ out.WriteLine " version=""" & GetVersion & """ timestamp=""" & Now & """"
+ out.WriteLine " type=""" & getAppSpecificApplicationName & """ >"
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Sub WriteXMLResultsEndTag(out As TextStream)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteXMLResultsEndTag"
+
+ out.WriteLine "</results>"
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub WriteXMLDocProperties(out As TextStream, aAnalysis As DocumentAnalysis)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteXMLDocProperties"
+
+ out.WriteLine "<document location=""" & EncodeXML(aAnalysis.name) & """"
+ out.WriteLine " application=""" & aAnalysis.Application & """"
+ out.WriteLine " issues-count=""" & (aAnalysis.IssuesCount) & """"
+ out.WriteLine " pages=""" & aAnalysis.PageCount & """"
+ out.WriteLine " created=""" & CheckDate(aAnalysis.Created) & """"
+ out.WriteLine " modified=""" & CheckDate(aAnalysis.Modified) & """"
+ out.WriteLine " accessed=""" & CheckDate(aAnalysis.Accessed) & """"
+ out.WriteLine " printed=""" & CheckDate(aAnalysis.Printed) & """"
+ out.WriteLine " last-save-by=""" & aAnalysis.SavedBy & """"
+ out.WriteLine " revision=""" & aAnalysis.Revision & """"
+ out.WriteLine " based-on-template=""" & EncodeXML(aAnalysis.Template) & """"
+ out.WriteLine ">"
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub WriteXMLDocPropertiesEndTag(out As TextStream)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteXMLDocPropertiesEndTag"
+
+ out.WriteLine "</document>"
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub WriteXMLDocRefDetails(out As TextStream, aAnalysis As DocumentAnalysis)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteXMLDocRefDetails"
+ Dim myIssue As IssueInfo
+
+ 'Output References for Docs with Macros
+ If aAnalysis.HasMacros And (aAnalysis.References.count > 0) Then
+ out.WriteLine "<references>"
+ For Each myIssue In aAnalysis.References
+ OutputXMLReferenceAttributes out, aAnalysis, myIssue
+ Next myIssue
+ out.WriteLine "</references>"
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub OutputXMLReferenceAttributes(out As TextStream, aAnalysis As DocumentAnalysis, myIssue As IssueInfo)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "OutputXMLReferenceAttributes"
+ Dim strAttributes As String
+
+ With myIssue
+ out.WriteLine "<reference"
+
+ strAttributes = .Values("Major") & "." & .Values("Minor")
+ strAttributes = IIf(strAttributes = "0.0" Or strAttributes = ".", .Values("Name"), _
+ .Values("Name") & " " & .Values("Major") & "." & .Values("Minor"))
+ out.WriteLine " name=""" & EncodeXML(strAttributes) & """"
+
+ If .Values("Type") = "Project" Then
+ strAttributes = "Project reference"
+ Else
+ strAttributes = IIf(.Values("Description") <> "", .Values("Description"), RID_STR_COMMON_NA)
+ End If
+ out.WriteLine " description=""" & EncodeXML(strAttributes) & """"
+ If .Values("IsBroken") <> RID_STR_COMMON_ATTRIBUTE_BROKEN Then
+ out.WriteLine " location=""" & .Values("File") & """"
+ End If
+ out.WriteLine " type=""" & .Values("Type") & """"
+ strAttributes = IIf(.Values("GUID") <> "", .Values("GUID"), RID_STR_COMMON_NA)
+ out.WriteLine " GUID=""" & strAttributes & """"
+ out.WriteLine " is-broken=""" & .Values("IsBroken") & """"
+ out.WriteLine " builtin=""" & .Values("BuiltIn") & """"
+
+ out.WriteLine " />"
+ End With
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & " : myIssue " & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub WriteXMLDocIssueDetails(out As TextStream, aAnalysis As DocumentAnalysis)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteXMLDocIssueDetails"
+
+ Dim myIssue As IssueInfo
+
+ If aAnalysis.Issues.count = 0 Then Exit Sub
+
+ out.WriteLine "<issues>"
+ For Each myIssue In aAnalysis.Issues
+ OutputXMLCommonIssueDetails out, aAnalysis, myIssue
+ OutputXMLCommonIssueAttributes out, myIssue
+ out.WriteLine "</issue>"
+ Next myIssue
+ out.WriteLine "</issues>"
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub OutputXMLCommonIssueDetails(out As TextStream, aAnalysis As DocumentAnalysis, myIssue As IssueInfo)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "OutputXMLCommonIssueDetails"
+
+ out.WriteLine "<issue category=""" & myIssue.IssueTypeXML & """"
+ out.WriteLine " type=""" & myIssue.SubTypeXML & """"
+
+ 'NOTE: Dropping severity - now stored in results.xlt, do not want to open it to fetch this data
+ 'out.WriteLine " severity=""" & IIf(CheckForMinorIssue(aAnalysis, myIssue), "Minor", "Major") & """"
+ out.WriteLine " prepared=""" & IIf((myIssue.Preparable), "True", "False") & """ >"
+
+ out.WriteLine "<location type=""" & myIssue.locationXML & """ >"
+
+ If myIssue.SubLocation <> "" Then
+ out.WriteLine "<property name=""sublocation"" value=""" & myIssue.SubLocation & """ />"
+ End If
+ If myIssue.Line <> -1 Then
+ out.WriteLine "<property name=""line"" value=""" & myIssue.Line & """ />"
+ End If
+ If myIssue.column <> "" Then
+ out.WriteLine "<property name=""column"" value=""" & myIssue.column & """ />"
+ End If
+ out.WriteLine "</location>"
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & aAnalysis.name & " : myIssue " & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub OutputXMLCommonIssueAttributes(out As TextStream, myIssue As IssueInfo)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "OutputXMLCommonIssueAttributes"
+
+ Dim index As Integer
+ Dim valStr As String
+ Dim attStr As String
+
+ If myIssue.Attributes.count = 0 Then Exit Sub
+
+ out.WriteLine "<details>"
+ For index = 1 To myIssue.Attributes.count
+ attStr = myIssue.Attributes(index)
+ If InStr(attStr, RID_STR_COMMON_NOTE_PRE & "[") = 1 Then
+ attStr = Right$(attStr, Len(attStr) - Len(RID_STR_COMMON_NOTE_PRE & "["))
+ attStr = Left$(attStr, Len(attStr) - 1)
+ out.WriteLine "<note index=""" & attStr & """ value=""" & EncodeXML(myIssue.Values(index)) & """ />"
+ Else
+ out.WriteLine "<property name=""" & EncodeXML(myIssue.Attributes(index)) & """ value=""" & EncodeXML(myIssue.Values(index)) & """ />"
+ End If
+ Next index
+
+ out.WriteLine "</details>"
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : myIssue " & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+
+Sub WriteXMLOutput(storeToDir As String, resultsFile As String, _
+ bOverwriteResultsFile As Boolean, bNewResultsFile As Boolean, AnalysedDocs As Collection, _
+ fso As Scripting.FileSystemObject)
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteXMLOutput"
+
+ Dim xmlOutput As TextStream
+ Dim xmlOrigOutput As TextStream
+ Dim origOutput As String
+ Dim analysis As DocumentAnalysis
+ Dim outFilePath As String
+
+ outFilePath = storeToDir & "\" & fso.GetBaseName(resultsFile) & "_" & _
+ getAppSpecificApplicationName & ".xml"
+
+ Set xmlOutput = fso.CreateTextFile(outFilePath, True)
+ WriteXMLHeader xmlOutput
+
+ 'Set xmlOrigOutput = fso.OpenTextFile(outFilePath, ForReading)
+ 'Set xmlOutput = fso.OpenTextFile(outFilePath, ForWriting)
+
+ WriteXMLResultsStartTag xmlOutput
+ For Each analysis In AnalysedDocs
+ WriteXMLDocProperties xmlOutput, analysis
+ WriteXMLDocRefDetails xmlOutput, analysis
+ WriteXMLDocIssueDetails xmlOutput, analysis
+ WriteXMLDocPropertiesEndTag xmlOutput
+ Next analysis
+ WriteXMLResultsEndTag xmlOutput
+
+FinalExit:
+ xmlOutput.Close
+ Set xmlOutput = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : path " & outFilePath & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Private Function EncodeUrl(ByVal sUrl As String) As String
+ Const MAX_PATH As Long = 260
+ Const ERROR_SUCCESS As Long = 0
+ Const URL_DONT_SIMPLIFY As Long = &H8000000
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "EncodeUrl"
+
+ Dim sUrlEsc As String
+ Dim dwSize As Long
+ Dim dwFlags As Long
+
+ If Len(sUrl) > 0 Then
+
+ sUrlEsc = Space$(MAX_PATH)
+ dwSize = Len(sUrlEsc)
+ dwFlags = URL_DONT_SIMPLIFY
+
+ If UrlEscape(sUrl, _
+ sUrlEsc, _
+ dwSize, _
+ dwFlags) = ERROR_SUCCESS Then
+
+ EncodeUrl = Left$(sUrlEsc, dwSize)
+
+ End If 'If UrlEscape
+ End If 'If Len(sUrl) > 0
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : sUrl " & sUrl & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Private Function EncodeXML(Str As String) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "EncodeXML"
+
+ Str = Replace(Str, "^", "&#x5E;")
+ Str = Replace(Str, "&", "&amp;")
+ Str = Replace(Str, "`", "&apos;")
+ Str = Replace(Str, "{", "&#x7B;")
+ Str = Replace(Str, "}", "&#x7D;")
+ Str = Replace(Str, "|", "&#x7C;")
+ Str = Replace(Str, "]", "&#x5D;")
+ Str = Replace(Str, "[", "&#x5B;")
+ Str = Replace(Str, """", "&quot;")
+ Str = Replace(Str, "<", "&lt;")
+ Str = Replace(Str, ">", "&gt;")
+
+ 'str = Replace(str, "\", "&#x5C;")
+ 'str = Replace(str, "#", "&#x23;")
+ 'str = Replace(str, "?", "&#x3F;")
+ 'str = Replace(str, "/", "&#x2F;")
+
+ EncodeXML = Str
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : string " & Str & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+
+Function ReplaceTopicTokens(sString As String, _
+ sToken As String, _
+ sReplacement As String) As String
+ On Error Resume Next
+
+ Dim p As Integer
+ Dim sTmp As String
+
+ sTmp = sString
+ Do
+ p = InStr(sTmp, sToken)
+ If p Then
+ sTmp = Left(sTmp, p - 1) + sReplacement + Mid(sTmp, p + Len(sToken))
+ End If
+ Loop While p > 0
+
+
+ ReplaceTopicTokens = sTmp
+
+End Function
+
+Function ReplaceTopic2Tokens(sString As String, _
+ sToken1 As String, _
+ sReplacement1 As String, _
+ sToken2 As String, _
+ sReplacement2 As String) As String
+ On Error Resume Next
+
+ ReplaceTopic2Tokens = _
+ ReplaceTopicTokens(ReplaceTopicTokens(sString, sToken1, sReplacement1), _
+ sToken2, sReplacement2)
+End Function
+
+'Language setting functions
+Function GetResourceDataFileName(thisDir As String) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetResourceDataFileName"
+
+ Dim fso As FileSystemObject
+ Set fso = New FileSystemObject
+
+ 'A debug method - if a file called debug.dat exists load it.
+ If fso.FileExists(fso.GetAbsolutePathName(thisDir & "\debug.dat")) Then
+ GetResourceDataFileName = fso.GetAbsolutePathName(thisDir & "\debug.dat")
+ GoTo FinalExit
+ End If
+
+ Dim isoLangStr As String
+ Dim isoCountryStr As String
+ Dim langDir As String
+
+ langDir = thisDir & "\" & "lang"
+
+ Dim userLCID As Long
+ userLCID = GetUserDefaultLangID()
+ Dim sysLCID As Long
+ sysLCID = GetSystemDefaultLangID()
+
+ isoLangStr = GetUserLocaleInfo(userLCID, LOCALE_SISO639LANGNAME)
+ isoCountryStr = GetUserLocaleInfo(userLCID, LOCALE_SISO3166CTRYNAME)
+
+ 'check for locale data in following order:
+ ' user language
+ ' isoLangStr & "_" & isoCountryStr & ".dat"
+ ' isoLangStr & ".dat"
+ ' system language
+ ' isoLangStr & "_" & isoCountryStr & ".dat"
+ ' isoLangStr & ".dat"
+ ' "en_US" & ".dat"
+
+ If fso.FileExists(fso.GetAbsolutePathName(langDir & "\" & isoLangStr & "-" & isoCountryStr & ".dat")) Then
+ GetResourceDataFileName = fso.GetAbsolutePathName(langDir & "\" & isoLangStr & "-" & isoCountryStr & ".dat")
+ ElseIf fso.FileExists(fso.GetAbsolutePathName(langDir & "\" & isoLangStr & ".dat")) Then
+ GetResourceDataFileName = fso.GetAbsolutePathName(langDir & "\" & isoLangStr & ".dat")
+ Else
+ isoLangStr = GetUserLocaleInfo(sysLCID, LOCALE_SISO639LANGNAME)
+ isoCountryStr = GetUserLocaleInfo(sysLCID, LOCALE_SISO3166CTRYNAME)
+
+ If fso.FileExists(fso.GetAbsolutePathName(langDir & "\" & isoLangStr & "-" & isoCountryStr & ".dat")) Then
+ GetResourceDataFileName = fso.GetAbsolutePathName(langDir & "\" & isoLangStr & "-" & isoCountryStr & ".dat")
+ ElseIf fso.FileExists(fso.GetAbsolutePathName(langDir & "\" & isoLangStr & ".dat")) Then
+ GetResourceDataFileName = fso.GetAbsolutePathName(langDir & "\" & isoLangStr & ".dat")
+ Else
+ GetResourceDataFileName = fso.GetAbsolutePathName(langDir & "\" & "en-US.dat")
+ End If
+ End If
+FinalExit:
+ Set fso = Nothing
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Public Function GetUserLocaleInfo(ByVal dwLocaleID As Long, ByVal dwLCType As Long) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetUserLocaleInfo"
+ Dim sReturn As String
+ Dim r As Long
+
+ 'call the function passing the Locale type
+ 'variable to retrieve the required size of
+ 'the string buffer needed
+ r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
+
+ 'if successful..
+ If r Then
+ 'pad the buffer with spaces
+ sReturn = Space$(r)
+
+ 'and call again passing the buffer
+ r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
+
+ 'if successful (r > 0)
+ If r Then
+ 'r holds the size of the string
+ 'including the terminating null
+ GetUserLocaleInfo = Left$(sReturn, r - 1)
+ End If
+ End If
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+' This function returns the Application Data Folder Path
+Function GetAppDataFolder() As String
+ Dim idlstr As Long
+ Dim sPath As String
+ Dim IDL As ITEMIDLIST
+ Const NOERROR = 0
+ Const MAX_LENGTH = 260
+ Const CSIDL_APPDATA = &H1A
+
+ On Error GoTo Err_GetFolder
+
+ ' Fill the idl structure with the specified folder item.
+ idlstr = SHGetSpecialFolderLocation(0, CSIDL_APPDATA, IDL)
+
+ If idlstr = NOERROR Then
+ ' Get the path from the idl list, and return
+ ' the folder with a slash at the end.
+ sPath = Space$(MAX_LENGTH)
+ idlstr = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)
+ If idlstr Then
+ GetAppDataFolder = Left$(sPath, InStr(sPath, Chr$(0)) - 1)
+ End If
+ End If
+
+Exit_GetFolder:
+ Exit Function
+
+Err_GetFolder:
+ MsgBox "An Error was Encountered" & Chr(13) & Err.Description, _
+ vbCritical Or vbOKOnly
+ Resume Exit_GetFolder
+
+End Function
+
+Sub WriteToStatFile(statFileName As String, statValue As Integer, _
+ currDocument As String, fso As Scripting.FileSystemObject)
+
+ On Error Resume Next
+
+ Dim fileCont As TextStream
+
+ Set fileCont = fso.OpenTextFile(statFileName, ForWriting, True, TristateTrue)
+ If (statValue = C_STAT_STARTING) Then
+ fileCont.WriteLine ("analysing=" & currDocument)
+ ElseIf (statValue = C_STAT_DONE) Then
+ fileCont.WriteLine ("analysed=" & currDocument)
+ ElseIf (statValue = C_STAT_FINISHED) Then
+ fileCont.WriteLine ("finished")
+ End If
+
+ fileCont.Close
+End Sub
+
+' The function FindIndex looks for a document in the given document list
+' starting at the position lastIndex in that list. If the document could
+' not be found, the function starts searching from the beginning
+
+Function FindIndex(myDocument As String, _
+ myDocList As Collection, _
+ lastIndex As Long) As Long
+
+ Dim lastEntry As Long
+ Dim curIndex As Long
+ Dim curEntry As String
+ Dim entryFound As Boolean
+
+ entryFound = False
+ lastEntry = myDocList.count
+
+ If (lastIndex > lastEntry) Then lastIndex = lastEntry
+
+ If (lastIndex > 1) Then
+ curIndex = lastIndex
+ Else
+ curIndex = 1
+ End If
+
+ While Not entryFound And curIndex <= lastEntry
+ curEntry = myDocList.item(curIndex)
+ If (curEntry = myDocument) Then
+ entryFound = True
+ Else
+ curIndex = curIndex + 1
+ End If
+ Wend
+
+ If (Not entryFound) Then
+ curIndex = 1
+ While Not entryFound And curIndex < lastIndex
+ curEntry = myDocList.item(curIndex)
+ If (curEntry = myDocument) Then
+ entryFound = True
+ Else
+ curIndex = curIndex + 1
+ End If
+ Wend
+ End If
+
+ If entryFound Then
+ FindIndex = curIndex
+ Else
+ FindIndex = 0
+ End If
+
+End Function
+
+' The sub GetIndexValues calulates the start index of the analysis and the index
+' of the file after which the next intermediate reult will be written
+Function GetIndexValues(startIndex As Long, nextCheck As Long, _
+ myFiles As Collection) As Boolean
+
+ Dim lastCheckpoint As String
+ Dim nextFile As String
+ Dim newResultsFile As Boolean
+
+ lastCheckpoint = ProfileGetItem(C_ANALYSIS, C_LAST_CHECKPOINT, "", mIniFilePath)
+ nextFile = ProfileGetItem(C_ANALYSIS, C_NEXT_FILE, "", mIniFilePath)
+ newResultsFile = True
+
+ If (nextFile = "") Then
+ ' No Analysis done yet
+ startIndex = 1
+ nextCheck = C_MAX_CHECK
+ Else
+ If (lastCheckpoint = "") Then
+ startIndex = 1
+ Else
+ startIndex = FindIndex(lastCheckpoint, myFiles, 1) + 1
+ If (startIndex > 0) Then newResultsFile = False
+ End If
+
+ nextCheck = FindIndex(nextFile, myFiles, startIndex - 1)
+
+ If (nextCheck = 0) Then ' Next file not in file list, restarting
+ startIndex = 1
+ nextCheck = C_MAX_CHECK
+ newResultsFile = True
+ ElseIf (nextCheck < startIndex) Then 'we are done?
+ nextCheck = startIndex + C_MAX_CHECK
+ ElseIf (nextCheck = startIndex) Then 'skip this one
+ WriteToLog C_ERROR_HANDLING_DOC & nextCheck, nextFile
+ startIndex = startIndex + 1
+ nextCheck = startIndex + C_MAX_CHECK
+ Else 'last time an error occured with that file, write before analysing
+ nextCheck = nextCheck - 1
+ End If
+ End If
+ GetIndexValues = newResultsFile
+End Function
+
+Private Sub GetDocModificationDates(docCounts As DocModificationDates)
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetDocModificationDates"
+
+ docCounts.lessThanThreemonths = CLng(ProfileGetItem("Analysis", C_DOCS_LESS_3_MONTH, "0", mIniFilePath))
+ docCounts.threeToSixmonths = CLng(ProfileGetItem("Analysis", C_DOCS_LESS_6_MONTH, "0", mIniFilePath))
+ docCounts.sixToTwelvemonths = CLng(ProfileGetItem("Analysis", C_DOCS_LESS_12_MONTH, "0", mIniFilePath))
+ docCounts.greaterThanOneYear = CLng(ProfileGetItem("Analysis", C_DOCS_MORE_12_MONTH, "0", mIniFilePath))
+
+FinalExit:
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
diff --git a/migrationanalysis/src/driver_docs/sources/CollectedFiles.cls b/migrationanalysis/src/driver_docs/sources/CollectedFiles.cls
new file mode 100644
index 000000000000..de81fc9261f0
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/CollectedFiles.cls
@@ -0,0 +1,378 @@
+VERSION 1.0 CLASS
+BEGIN
+ MultiUse = -1 'True
+END
+Attribute VB_Name = "CollectedFiles"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = False
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+Option Explicit
+
+Private Const vbDot = 46
+Private Const MAX_PATH = 260
+Private Const INVALID_HANDLE_VALUE = -1
+Private Const vbBackslash = "\"
+Private Const ALL_FILES = "*.*"
+
+Private Type FILETIME
+ dwLowDateTime As Long
+ dwHighDateTime As Long
+End Type
+
+Private Type WIN32_FIND_DATA
+ dwFileAttributes As Long
+ ftCreationTime As FILETIME
+ ftLastAccessTime As FILETIME
+ ftLastWriteTime As FILETIME
+ nFileSizeHigh As Long
+ nFileSizeLow As Long
+ dwReserved0 As Long
+ dwReserved1 As Long
+ cFileName As String * MAX_PATH
+ cAlternate As String * 14
+End Type
+
+Private Type FILE_PARAMS
+ bRecurse As Boolean
+ nSearched As Long
+ sFileNameExt As String
+ sFileRoot As String
+End Type
+
+Private Declare Function FindClose Lib "kernel32" _
+ (ByVal hFindFile As Long) As Long
+
+Private Declare Function FindFirstFile Lib "kernel32" _
+ Alias "FindFirstFileA" _
+ (ByVal lpFileName As String, _
+ lpFindFileData As WIN32_FIND_DATA) As Long
+
+Private Declare Function FindNextFile Lib "kernel32" _
+ Alias "FindNextFileA" _
+ (ByVal hFindFile As Long, _
+ lpFindFileData As WIN32_FIND_DATA) As Long
+
+Private Declare Function GetTickCount Lib "kernel32" () As Long
+
+Private Declare Function lstrlen Lib "kernel32" _
+ Alias "lstrlenW" (ByVal lpString As Long) As Long
+
+Private Declare Function PathMatchSpec Lib "shlwapi" _
+ Alias "PathMatchSpecW" _
+ (ByVal pszFileParam As Long, _
+ ByVal pszSpec As Long) As Long
+
+Private fp As FILE_PARAMS 'holds search parameters
+
+Private mWordFilesCol As Collection
+Private mExcelFilesCol As Collection
+Private mPPFilesCol As Collection
+
+Private mDocCount As Long
+Private mDotCount As Long
+Private mXlsCount As Long
+Private mXltCount As Long
+Private mPptCount As Long
+Private mPotCount As Long
+Private mbDocSearch As Boolean
+Private mbDotSearch As Boolean
+Private mbXlsSearch As Boolean
+Private mbXltSearch As Boolean
+Private mbPptSearch As Boolean
+Private mbPotSearch As Boolean
+
+Private mBannedList As Collection
+
+Private Sub Class_Initialize()
+ Set mWordFilesCol = New Collection
+ Set mExcelFilesCol = New Collection
+ Set mPPFilesCol = New Collection
+ Set mBannedList = New Collection
+End Sub
+Private Sub Class_Terminate()
+ Set mWordFilesCol = Nothing
+ Set mExcelFilesCol = Nothing
+ Set mPPFilesCol = Nothing
+ Set mBannedList = Nothing
+End Sub
+
+Public Property Get BannedList() As Collection
+ Set BannedList = mBannedList
+End Property
+Public Property Let BannedList(ByVal theList As Collection)
+ Set mBannedList = theList
+End Property
+
+Public Property Get DocCount() As Long
+ DocCount = mDocCount
+End Property
+Public Property Get DotCount() As Long
+ DotCount = mDotCount
+End Property
+Public Property Get XlsCount() As Long
+ XlsCount = mXlsCount
+End Property
+Public Property Get XltCount() As Long
+ XltCount = mXltCount
+End Property
+Public Property Get PptCount() As Long
+ PptCount = mPptCount
+End Property
+Public Property Get PotCount() As Long
+ PotCount = mPotCount
+End Property
+
+Public Property Get WordFiles() As Collection
+ Set WordFiles = mWordFilesCol
+End Property
+Public Property Get ExcelFiles() As Collection
+ Set ExcelFiles = mExcelFilesCol
+End Property
+Public Property Get PowerPointFiles() As Collection
+ Set PowerPointFiles = mPPFilesCol
+End Property
+
+Public Function count() As Long
+ count = mWordFilesCol.count + mExcelFilesCol.count + mPPFilesCol.count
+End Function
+
+
+Public Function Search(rootDir As String, _
+ FileSpecs As Collection, IncludeSubdirs As Boolean)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Search"
+
+ Dim tstart As Single 'timer var for this routine only
+ Dim tend As Single 'timer var for this routine only
+ Dim spec As Variant
+ Dim allSpecs As String
+ Dim fso As New FileSystemObject
+
+ If FileSpecs.count = 0 Then Exit Function
+
+ If FileSpecs.count > 1 Then
+ For Each spec In FileSpecs
+ allSpecs = allSpecs & "; " & spec
+ SetSearchBoolean CStr(spec)
+ Next
+ Else
+ allSpecs = FileSpecs(1)
+ SetSearchBoolean CStr(FileSpecs(1))
+ End If
+
+ With fp
+ .sFileRoot = QualifyPath(rootDir)
+ .sFileNameExt = allSpecs
+ .bRecurse = IncludeSubdirs
+ .nSearched = 0
+ End With
+
+ tstart = GetTickCount()
+ Call SearchForFiles(fp.sFileRoot)
+ tend = GetTickCount()
+
+ 'Debug:
+ 'MsgBox "Specs " & allSpecs & vbLf & _
+ ' Format$(fp.nSearched, "###,###,###,##0") & vbLf & _
+ ' Format$(count, "###,###,###,##0") & vbLf & _
+ ' FormatNumber((tend - tstart) / 1000, 2) & " seconds"
+
+FinalExit:
+ Set fso = Nothing
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Function isBannedFile(thePath As String) As Boolean
+
+ Dim aPath As Variant
+ Dim theResult As Boolean
+ theResult = False
+ For Each aPath In mBannedList
+ If aPath = thePath Then
+ theResult = True
+ GoTo FinalExit
+ End If
+ Next
+
+FinalExit:
+ isBannedFile = theResult
+End Function
+Sub SetSearchBoolean(spec As String)
+
+ If spec = "*.doc" Then
+ mbDocSearch = True
+ End If
+ If spec = "*.dot" Then
+ mbDotSearch = True
+ End If
+ If spec = "*.xls" Then
+ mbXlsSearch = True
+ End If
+ If spec = "*.xlt" Then
+ mbXltSearch = True
+ End If
+ If spec = "*.ppt" Then
+ mbPptSearch = True
+ End If
+ If spec = "*.pot" Then
+ mbPotSearch = True
+ End If
+
+End Sub
+
+Private Sub SearchForFiles(sRoot As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SearchForFiles"
+
+ Dim WFD As WIN32_FIND_DATA
+ Dim hFile As Long
+ Dim path As String
+ Dim WordDriverPathTemp As String
+ Dim ExcelDriverPathTemp As String
+ Dim PPDriverPathTemp As String
+
+ hFile = FindFirstFile(sRoot & ALL_FILES, WFD)
+
+ If hFile = INVALID_HANDLE_VALUE Then GoTo FinalExit
+
+ Do
+ 'if a folder, and recurse specified, call
+ 'method again
+ If (WFD.dwFileAttributes And vbDirectory) Then
+ If Asc(WFD.cFileName) <> vbDot Then
+ If fp.bRecurse Then
+ SearchForFiles sRoot & TrimNull(WFD.cFileName) & vbBackslash
+ End If
+ End If
+ Else
+ 'must be a file..
+ If mbDocSearch Then
+ If MatchSpec(WFD.cFileName, "*.doc") Then
+ path = sRoot & TrimNull(WFD.cFileName)
+ 'If StrComp(path, mWordDriverPath, vbTextCompare) <> 0 Then
+ If Not isBannedFile(path) Then
+ mDocCount = mDocCount + 1
+ mWordFilesCol.Add path
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+ End If
+ If mbDotSearch Then
+ If MatchSpec(WFD.cFileName, "*.dot") Then
+ mDotCount = mDotCount + 1
+ mWordFilesCol.Add sRoot & TrimNull(WFD.cFileName)
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+ If mbXlsSearch Then
+ If MatchSpec(WFD.cFileName, "*.xls") Then
+ path = sRoot & TrimNull(WFD.cFileName)
+ 'If StrComp(TrimNull(WFD.cFileName), CEXCEL_DRIVER_FILE, vbTextCompare) <> 0 Then
+ If Not isBannedFile(path) Then
+ mXlsCount = mXlsCount + 1
+ mExcelFilesCol.Add sRoot & TrimNull(WFD.cFileName)
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+ End If
+ If mbXltSearch Then
+ If MatchSpec(WFD.cFileName, "*.xlt") Then
+ mXltCount = mXltCount + 1
+ mExcelFilesCol.Add sRoot & TrimNull(WFD.cFileName)
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+ If mbPptSearch Then
+ If MatchSpec(WFD.cFileName, "*.ppt") Then
+ path = sRoot & TrimNull(WFD.cFileName)
+ 'If StrComp(path, mPPDriverPath, vbTextCompare) <> 0 Then
+ If Not isBannedFile(path) Then
+ mPptCount = mPptCount + 1
+ mPPFilesCol.Add path
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+ End If
+ If mbPotSearch Then
+ If MatchSpec(WFD.cFileName, "*.pot") Then
+ mPotCount = mPotCount + 1
+ mPPFilesCol.Add sRoot & TrimNull(WFD.cFileName)
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+
+ End If 'If WFD.dwFileAttributes
+
+CONTINUE_LOOP:
+ fp.nSearched = fp.nSearched + 1
+
+ Loop While FindNextFile(hFile, WFD)
+
+FinalExit:
+ Call FindClose(hFile)
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+
+Private Function QualifyPath(sPath As String) As String
+
+ If Right$(sPath, 1) <> vbBackslash Then
+ QualifyPath = sPath & vbBackslash
+ Else: QualifyPath = sPath
+ End If
+
+End Function
+
+
+Private Function TrimNull(startstr As String) As String
+
+ TrimNull = Left$(startstr, lstrlen(StrPtr(startstr)))
+
+End Function
+
+
+Private Function MatchSpec(sFile As String, sSpec As String) As Boolean
+
+ MatchSpec = PathMatchSpec(StrPtr(sFile), StrPtr(sSpec))
+
+End Function
+
+
+
+
diff --git a/migrationanalysis/src/driver_docs/sources/CommonMigrationAnalyser.bas b/migrationanalysis/src/driver_docs/sources/CommonMigrationAnalyser.bas
new file mode 100644
index 000000000000..5fae03a4d399
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/CommonMigrationAnalyser.bas
@@ -0,0 +1,1119 @@
+Attribute VB_Name = "CommonMigrationAnalyser"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+
+'***********************************************
+'**** APPLICATION COMMON ANALYSIS FUNCTIONS ****
+'***********************************************
+
+'** Common - XML Issue and SubIssue strings
+'For preparation - need access to some Word/ Excel or PP consts
+Public Const CSTR_ISSUE_OBJECTS_GRAPHICS_AND_FRAMES = "ObjectsGraphicsAndFrames"
+Public Const CSTR_SUBISSUE_OBJECT_IN_HEADER_FOOTER = "ObjectInHeaderFooter"
+
+Public Const CSTR_ISSUE_INFORMATION = "Information"
+Public Const CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES = "ContentAndDocumentProperties"
+Public Const CSTR_ISSUE_FORMAT = "Format"
+Public Const CSTR_ISSUE_PORTABILITY = "Portability"
+Public Const CSTR_ISSUE_VBA_MACROS = "VBAMacros"
+
+Public Const CSTR_SUBISSUE_DOCUMENT_PARTS_PROTECTION = "DocumentPartsProtection"
+Public Const CSTR_SUBISSUE_EXTERNAL_REFERENCES_IN_MACRO = "ExternalReferencesInMacro"
+Public Const CSTR_SUBISSUE_EXTERNAL_REFERENCES_IN_MACRO_COUNT = "ExternalReferencesInMacroCount"
+Public Const CSTR_SUBISSUE_GRADIENT = "Gradient"
+Public Const CSTR_SUBISSUE_INVALID_PASSWORD_ENTERED = "InvalidPasswordEntered"
+Public Const CSTR_SUBISSUE_LINE = "Line"
+Public Const CSTR_SUBISSUE_MACRO_PASSWORD_PROTECTION = "PasswordProtected"
+Public Const CSTR_SUBISSUE_OLD_WORKBOOK_VERSION = "OldWorkbookVersion"
+Public Const CSTR_SUBISSUE_OLE_EMBEDDED = "EmbeddedOLEObject"
+Public Const CSTR_SUBISSUE_OLE_LINKED = "LinkedOLEObject"
+Public Const CSTR_SUBISSUE_OLE_CONTROL = "OLEControl"
+Public Const CSTR_SUBISSUE_OLE_FIELD_LINK = "OLEFieldLink"
+Public Const CSTR_SUBISSUE_OLE_UNKNOWN = "UnknownType"
+Public Const CSTR_SUBISSUE_PASSWORDS_PROTECTION = "PasswordProtection"
+Public Const CSTR_SUBISSUE_PROPERTIES = "Properties"
+Public Const CSTR_SUBISSUE_REFERENCES = "References"
+Public Const CSTR_SUBISSUE_TRANSPARENCY = "Transparency"
+Public Const CSTR_SUBISSUE_VBA_MACROS_NUMLINES = "NumberOfLines"
+Public Const CSTR_SUBISSUE_VBA_MACROS_USERFORMS_COUNT = "UserFormsCount"
+Public Const CSTR_SUBISSUE_VBA_MACROS_USERFORMS_CONTROL_COUNT = "UserFormsControlCount"
+Public Const CSTR_SUBISSUE_VBA_MACROS_USERFORMS_CONTROLTYPE_COUNT = "UserFormsControlTypeCount"
+Public Const CSTR_SUBISSUE_VBA_MACROS_UNIQUE_MODULE_COUNT = "UniqueModuleCount"
+Public Const CSTR_SUBISSUE_VBA_MACROS_UNIQUE_LINE_COUNT = "UniqueLineCount"
+'** END Common - XML Issue and SubIssue strings
+
+'Macro classification bounds
+Public Const CMACRO_LINECOUNT_MEDIUM_LBOUND = 50
+
+'Don't localize folder name
+Public Const CSTR_COMMON_PREPARATION_FOLDER = "prepared"
+
+
+Public Enum EnumDocOverallMacroClass
+ enMacroNone = 0
+ enMacroSimple = 1
+ enMacroMedium = 2
+ enMacroComplex = 3
+End Enum
+Public Enum EnumDocOverallIssueClass
+ enNone = 0
+ enMinor = 1
+ enComplex = 2
+End Enum
+
+Sub EmptyCollection(docAnalysis As DocumentAnalysis, coll As Collection)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "EmptyCollection"
+ Dim Num As Long
+ For Num = 1 To coll.count ' Remove name from the collection.
+ coll.Remove 1 ' Default collection numeric indexes
+ Next ' begin at 1.
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Public Function Analyze_Macros(docAnalysis As DocumentAnalysis, _
+ userFormTypesDict As Scripting.Dictionary, _
+ currDoc As Object)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Macros"
+ Dim macroDetails As String
+ Dim cmpDetails As String
+ Dim myProject As VBProject
+ Dim myComponent As VBComponent
+ Dim numLines As Long
+ Dim myIssue As IssueInfo
+ Dim wrd As Object
+ Dim bUserFormWithEmptyCodeModule As Boolean
+
+ On Error Resume Next
+ Set myProject = getAppSpecificVBProject(currDoc)
+ If Err.Number <> 0 Then
+ ' Failed to get access to VBProject
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & _
+ RID_STR_COMMON_ATTRIBUTE_UNABLE_TO_ACCESS_VBPROJECT & ":" & _
+ RID_STR_COMMON_ATTRIBUTE_FURTHER_MACRO_ANALYSIS_NOT_POSSIBLE
+
+ GoTo FinalExit
+ End If
+
+ On Error GoTo HandleErrors
+ If myProject.Protection = vbext_pp_locked Then
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_VBA_MACROS
+ .IssueType = RID_STR_COMMON_ISSUE_VBA_MACROS
+ .SubType = RID_STR_COMMON_SUBISSUE_MACRO_PASSWORD_PROTECTION
+ .Location = .CLocationDocument
+
+ .IssueTypeXML = CSTR_ISSUE_VBA_MACROS
+ .SubTypeXML = CSTR_SUBISSUE_MACRO_PASSWORD_PROTECTION
+ .locationXML = .CXMLLocationDocument
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_VBPROJECT_PASSWORD
+ .Values.Add RID_STR_COMMON_ATTRIBUTE_FURTHER_MACRO_ANALYSIS_NOT_POSSIBLE
+ End With
+ docAnalysis.IssuesCountArray(CID_VBA_MACROS) = _
+ docAnalysis.IssuesCountArray(CID_VBA_MACROS) + 1
+ docAnalysis.Issues.Add myIssue
+ docAnalysis.MacroIssuesCount = docAnalysis.MacroIssuesCount + 1
+
+ docAnalysis.HasMacros = True
+ GoTo FinalExit
+ End If
+
+ Dim myContolDict As Scripting.Dictionary
+ For Each myComponent In myProject.VBComponents
+
+ bUserFormWithEmptyCodeModule = False
+ If CheckEmptyProject(docAnalysis, myProject, myComponent) Then
+ If myComponent.Type <> vbext_ct_MSForm Then
+ GoTo FOREACH_CONTINUE
+ Else
+ bUserFormWithEmptyCodeModule = True
+ End If
+ End If
+
+ Analyze_MacrosForPortabilityIssues docAnalysis, myProject, myComponent
+
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_VBA_MACROS
+ .IssueType = RID_STR_COMMON_ISSUE_VBA_MACROS
+ .SubType = RID_STR_COMMON_SUBISSUE_PROPERTIES
+ .Location = .CLocationDocument
+
+ .IssueTypeXML = CSTR_ISSUE_VBA_MACROS
+ .SubTypeXML = CSTR_SUBISSUE_PROPERTIES
+ .locationXML = .CXMLLocationDocument
+
+ .SubLocation = VBComponentType(myComponent)
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_PROJECT
+ .Values.Add myProject.name
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_COMPONENT
+ .Values.Add myComponent.name
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_PROCEDURES
+ .Values.Add VBNumFuncs(docAnalysis, myComponent.CodeModule), RID_STR_COMMON_ATTRIBUTE_PROCEDURES
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NUMBER_OF_LINES
+ numLines = VBNumLines(docAnalysis, myComponent.CodeModule)
+ .Values.Add numLines, RID_STR_COMMON_ATTRIBUTE_NUMBER_OF_LINES
+
+ If bUserFormWithEmptyCodeModule Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_SIGNATURE
+ .Values.Add RID_STR_COMMON_NA, RID_STR_COMMON_ATTRIBUTE_SIGNATURE
+ Else
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_SIGNATURE
+ .Values.Add MD5HashString( _
+ myComponent.CodeModule.Lines(1, myComponent.CodeModule.CountOfLines)), _
+ RID_STR_COMMON_ATTRIBUTE_SIGNATURE
+ End If
+
+ docAnalysis.MacroTotalNumLines = numLines + docAnalysis.MacroTotalNumLines
+ End With
+
+ ' User Forms - control details
+ If (myComponent.Type = vbext_ct_MSForm) And Not bUserFormWithEmptyCodeModule Then
+ myIssue.Attributes.Add RID_STR_COMMON_ATTRIBUTE_CONTROLS
+ myIssue.Values.Add myComponent.Designer.Controls.count, RID_STR_COMMON_ATTRIBUTE_CONTROLS
+ docAnalysis.MacroNumUserForms = 1 + docAnalysis.MacroNumUserForms
+ docAnalysis.MacroNumUserFormControls = myComponent.Designer.Controls.count + docAnalysis.MacroNumUserFormControls
+
+ Dim myControl As Control
+ Dim controlTypes As String
+ Dim myType As String
+
+ Set myContolDict = New Scripting.Dictionary
+
+ For Each myControl In myComponent.Designer.Controls
+ myType = TypeName(myControl)
+ If myContolDict.Exists(myType) Then
+ myContolDict.item(myType) = myContolDict.item(myType) + 1
+ Else
+ myContolDict.Add myType, 1
+ End If
+ If userFormTypesDict.Exists(myType) Then
+ userFormTypesDict.item(myType) = userFormTypesDict.item(myType) + 1
+ Else
+ userFormTypesDict.Add myType, 1
+ End If
+ Next
+
+ If myComponent.Designer.Controls.count > 0 Then
+ Dim count As Long
+ Dim vKeyArray As Variant
+ Dim vItemArray As Variant
+
+ vKeyArray = myContolDict.Keys
+ vItemArray = myContolDict.Items
+
+ controlTypes = ""
+ For count = 0 To myContolDict.count - 1
+ controlTypes = controlTypes & vKeyArray(count) & " " & CInt(vItemArray(count)) & " "
+ Next count
+ myIssue.Attributes.Add RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPE
+ myIssue.Values.Add controlTypes, RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPE
+
+ myIssue.Attributes.Add RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPES_COUNT
+ myIssue.Values.Add myContolDict.count, RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPES_COUNT
+
+ docAnalysis.MacroNumUserFormControlTypes = myContolDict.count + docAnalysis.MacroNumUserFormControlTypes
+ End If
+ Set myContolDict = Nothing
+ End If
+
+ 'Check for occurence of " Me " in Form and Class Modules
+ If myComponent.Type = vbext_ct_MSForm Or _
+ myComponent.Type = vbext_ct_ClassModule Then
+
+ Dim strFind As String
+ strFind = ""
+ count = 0
+ strFind = VBFindLines(docAnalysis, myComponent.CodeModule, "Me", count, bWholeWord:=True)
+' If (strFind <> "") Then MsgBox strFind
+
+ If count > 0 Then
+ myIssue.Attributes.Add RID_STR_COMMON_ATTRIBUTE_CLASS_ME_COUNT
+ myIssue.Values.Add count, RID_STR_COMMON_ATTRIBUTE_CLASS_ME_COUNT
+ End If
+ End If
+
+ docAnalysis.IssuesCountArray(CID_VBA_MACROS) = _
+ docAnalysis.IssuesCountArray(CID_VBA_MACROS) + 1
+ docAnalysis.Issues.Add myIssue
+ docAnalysis.MacroIssuesCount = docAnalysis.MacroIssuesCount + 1
+
+ Set myIssue = Nothing
+
+FOREACH_CONTINUE:
+ 'No equiv to C continue in VB
+ Next myComponent 'End - For Each myComponent
+
+ If docAnalysis.IssuesCountArray(CID_VBA_MACROS) > 0 Then
+ Analyze_VBEReferences docAnalysis, currDoc
+ docAnalysis.HasMacros = True
+ End If
+
+FinalExit:
+ docAnalysis.MacroOverallClass = ClassifyDocOverallMacroClass(docAnalysis)
+
+ Set myProject = Nothing
+ Set myIssue = Nothing
+ Set myContolDict = Nothing
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function CheckOnlyEmptyProject(docAnalysis As DocumentAnalysis, currDoc As Object) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckOnlyEmptyProject"
+ Dim myProject As VBProject
+ Set myProject = getAppSpecificVBProject(currDoc)
+ Dim myVBComponent As VBComponent
+
+ For Each myVBComponent In myProject.VBComponents
+ If Not CheckEmptyProject(docAnalysis, myProject, myVBComponent) Then
+ CheckOnlyEmptyProject = False
+ GoTo FinalExit
+ End If
+ Next myVBComponent
+
+ CheckOnlyEmptyProject = True
+
+FinalExit:
+ Set myProject = Nothing
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Sub Analyze_VBEReferences(docAnalysis As DocumentAnalysis, currDoc As Object)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_VBEReferences"
+ 'References
+ Dim Ref As Reference
+ Dim fso As Scripting.FileSystemObject
+ Dim myVBProject As VBProject
+ Dim myVBComponent As VBComponent
+
+ Set fso = New Scripting.FileSystemObject
+
+ If CheckOnlyEmptyProject(docAnalysis, currDoc) Then
+ Exit Sub
+ End If
+ Set myVBProject = getAppSpecificVBProject(currDoc)
+
+ For Each Ref In myVBProject.References
+ Analyze_VBEReferenceSingle docAnalysis, Ref, fso
+ Next Ref
+
+FinalExit:
+ Set myVBProject = Nothing
+ Set fso = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_VBEReferenceSingle(docAnalysis As DocumentAnalysis, Ref As Reference, fso As Scripting.FileSystemObject)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_VBEReferenceSingle"
+ 'References
+ Dim myIssue As IssueInfo
+ Dim bBadRef As Boolean
+
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_INFORMATION_REFS
+ .IssueType = RID_STR_COMMON_ISSUE_INFORMATION
+ .SubType = RID_STR_COMMON_SUBISSUE_REFERENCES
+ .Location = .CLocationDocument
+
+ .IssueTypeXML = CSTR_ISSUE_INFORMATION
+ .SubTypeXML = CSTR_SUBISSUE_REFERENCES
+ .locationXML = .CXMLLocationDocument
+
+ If Ref.GUID = "" Then
+ bBadRef = True
+ Else
+ bBadRef = False
+ End If
+ If Not bBadRef Then
+ .SubLocation = LCase(fso.GetFileName(Ref.FullPath))
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add Ref.name, RID_STR_COMMON_ATTRIBUTE_NAME
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_DESCRIPTION
+ .Values.Add Ref.Description, RID_STR_COMMON_ATTRIBUTE_DESCRIPTION
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_FILE
+ .Values.Add LCase(fso.GetFileName(Ref.FullPath)), RID_STR_COMMON_ATTRIBUTE_FILE
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_PATH
+ .Values.Add LCase(Ref.FullPath), RID_STR_COMMON_ATTRIBUTE_PATH
+ Else
+ .SubLocation = RID_STR_COMMON_NA
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add RID_STR_COMMON_ATTRIBUTE_MISSING, RID_STR_COMMON_ATTRIBUTE_NAME
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_DESCRIPTION
+ .Values.Add RID_STR_COMMON_ATTRIBUTE_CHECK_DOCUMENT_REFERENCES, RID_STR_COMMON_ATTRIBUTE_DESCRIPTION
+ End If
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_MAJOR
+ .Values.Add IIf(Not bBadRef, Ref.Major, ""), RID_STR_COMMON_ATTRIBUTE_MAJOR
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_MINOR
+ .Values.Add IIf(Not bBadRef, Ref.Minor, ""), RID_STR_COMMON_ATTRIBUTE_MINOR
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_TYPE
+ .Values.Add IIf(Ref.Type = vbext_rk_Project, RID_STR_COMMON_ATTRIBUTE_PROJECT, RID_STR_COMMON_ATTRIBUTE_TYPELIB), RID_STR_COMMON_ATTRIBUTE_TYPE
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_BUILTIN
+ .Values.Add IIf(Ref.BuiltIn, RID_STR_COMMON_ATTRIBUTE_BUILTIN, RID_STR_COMMON_ATTRIBUTE_CUSTOM), RID_STR_COMMON_ATTRIBUTE_BUILTIN
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_ISBROKEN
+ .Values.Add IIf(bBadRef, RID_STR_COMMON_ATTRIBUTE_BROKEN, RID_STR_COMMON_ATTRIBUTE_INTACT), RID_STR_COMMON_ATTRIBUTE_ISBROKEN
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_GUID
+ .Values.Add IIf(Ref.Type = vbext_rk_TypeLib, Ref.GUID, ""), RID_STR_COMMON_ATTRIBUTE_GUID
+ End With
+
+ docAnalysis.References.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebugLevelTwo currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_MacrosForPortabilityIssues(docAnalysis As DocumentAnalysis, myProject As VBProject, myComponent As VBComponent)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_MacrosForPortabilityIssues"
+ Dim myIssue As IssueInfo
+ Dim count As Long
+
+ ' Code Modules
+ Dim strFind As String
+ strFind = VBFindLines(docAnalysis, myComponent.CodeModule, "CreateObject", count, bWholeWord:=True) & _
+ VBFindLines(docAnalysis, myComponent.CodeModule, "GetObject", count, bWholeWord:=True) & _
+ VBFindLines(docAnalysis, myComponent.CodeModule, "ADODB.", count, True, True) & _
+ VBFindLines(docAnalysis, myComponent.CodeModule, "Word.", count, True, True) & _
+ VBFindLines(docAnalysis, myComponent.CodeModule, "Excel.", count, True, True) & _
+ VBFindLines(docAnalysis, myComponent.CodeModule, "PowerPoint.", count, True, True) & _
+ VBFindLines(docAnalysis, myComponent.CodeModule, "Access.", count, True, True) & _
+ VBFindLines(docAnalysis, myComponent.CodeModule, "Declare Function ", count, False) & _
+ VBFindLines(docAnalysis, myComponent.CodeModule, "Declare Sub ", count, False)
+
+
+ If (strFind <> "") And (myComponent.Type <> vbext_ct_Document) Then
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_PORTABILITY
+ .IssueType = RID_STR_COMMON_ISSUE_PORTABILITY
+ .SubType = RID_STR_COMMON_SUBISSUE_EXTERNAL_REFERENCES_IN_MACROS
+ .Location = .CLocationDocument
+
+ .IssueTypeXML = CSTR_ISSUE_PORTABILITY
+ .SubTypeXML = CSTR_SUBISSUE_EXTERNAL_REFERENCES_IN_MACRO
+ .locationXML = .CXMLLocationDocument
+
+ .SubLocation = VBComponentType(myComponent)
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_PROJECT
+ .Values.Add myProject.name
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_COMPONENT
+ .Values.Add myComponent.name
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES
+ .Values.Add RID_STR_COMMON_ATTRIBUTE_INCLUDING & vbLf & Left(strFind, Len(strFind) - 1)
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES_COUNT
+ .Values.Add count, RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES_COUNT
+ End With
+ docAnalysis.IssuesCountArray(CID_PORTABILITY) = _
+ docAnalysis.IssuesCountArray(CID_PORTABILITY) + 1
+ docAnalysis.Issues.Add myIssue
+ docAnalysis.MacroNumExternalRefs = count + docAnalysis.MacroNumExternalRefs
+ docAnalysis.MacroIssuesCount = docAnalysis.MacroIssuesCount + 1
+ End If
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+Resume FinalExit
+End Sub
+
+'Find Lines in code module containing strFind and return list of them
+Function VBFindLines(docAnalysis As DocumentAnalysis, vbcm As CodeModule, strFind As String, _
+ count As Long, _
+ Optional bInProcedure As Boolean = True, _
+ Optional bUsingNew As Boolean = False, _
+ Optional bWholeWord As Boolean = False, _
+ Optional bMatchCase As Boolean = False) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "VBFindLines"
+ Dim lngStartLine As Long
+ Dim lngStartCol As Long
+ Dim lngEndLine As Long
+ Dim lngEndCol As Long
+ Dim strLine As String
+ lngStartLine = 1
+ lngStartCol = 1
+ lngEndLine = vbcm.CountOfLines
+ Dim tmpString As String
+ If (vbcm.CountOfLines = 0) Then
+ Exit Function
+ End If
+ tmpString = vbcm.Lines(vbcm.CountOfLines, 1)
+ lngEndCol = Len(vbcm.Lines(vbcm.CountOfLines, 1))
+ Dim lngType As Long
+ Dim strProc As String
+ Dim retStr As String
+
+ ' Search
+ Do While vbcm.Find(strFind, lngStartLine, _
+ lngStartCol, lngEndLine, lngEndCol, bWholeWord, bMatchCase)
+
+ 'Ignore any lines using this func
+ If InStr(1, vbcm.Lines(lngStartLine, 1), "VBFindLines") <> 0 Then
+ GoTo CONTINUE_LOOP
+ End If
+
+ If bInProcedure Then
+ If bUsingNew Then
+ If InStr(1, vbcm.Lines(lngStartLine, 1), "New") <> 0 Then
+ strProc = vbcm.ProcOfLine(lngStartLine, lngType)
+ Else
+ strProc = ""
+ End If
+ Else
+ strProc = vbcm.ProcOfLine(lngStartLine, lngType)
+ End If
+ If strProc = "" Then GoTo CONTINUE_LOOP
+
+ VBFindLines = VBFindLines & "[" & strProc & " ( ) - " & lngStartLine & " ]" & _
+ vbLf & vbcm.Lines(lngStartLine, 1) & vbLf
+ Else
+ strProc = vbcm.Lines(lngStartLine, 1)
+ If strProc = "" Then GoTo CONTINUE_LOOP
+
+ 'Can be External refs, Const, Type or variable declarations
+ If InStr(1, vbcm.Lines(lngStartLine, 1), "Declare Function") <> 0 Then
+ VBFindLines = VBFindLines & "[" & RID_STR_COMMON_DEC_TO_EXTERNAL_LIBRARY & " - " & lngStartLine & " ]" & _
+ vbLf & strProc & vbLf
+ Else
+ VBFindLines = VBFindLines & "[" & RID_STR_COMMON_VB_COMPONENT_MODULE & " " & strFind & _
+ " - " & lngStartLine & " ]" & vbLf
+ End If
+ End If
+ count = count + 1
+
+CONTINUE_LOOP:
+ 'Reset Params to search for next hit
+ lngStartLine = lngEndLine + 1
+ lngStartCol = 1
+ lngEndLine = vbcm.CountOfLines
+ lngEndCol = Len(vbcm.Lines(vbcm.CountOfLines, 1))
+
+ If lngStartLine >= lngEndLine Then Exit Function
+
+ Loop 'End - Do While vbcm.Find
+ VBFindLines = VBFindLines
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+Function VBNumLines(docAnalysis As DocumentAnalysis, vbcm As CodeModule) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "VBNumLines"
+ Dim cLines As Long
+ Dim lngType As Long
+ Dim strProc As String
+
+ 'Issue: Just give line count in module to be in sync with Macro Analysis and Migration Wizard
+ VBNumLines = vbcm.CountOfLines
+
+ 'For cLines = 1 To vbcm.CountOfLines
+ ' strProc = vbcm.ProcOfLine(cLines, lngType)
+ ' If strProc <> "" Then
+ ' VBNumLines = VBNumLines - _
+ ' (vbcm.ProcBodyLine(strProc, lngType) - vbcm.ProcStartLine(strProc, lngType))
+ ' cLines = cLines + vbcm.ProcCountLines(strProc, lngType) - 1
+ ' End If
+ 'Next
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+Function VBNumFuncs(docAnalysis As DocumentAnalysis, vbcm As CodeModule) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "VBNumFuncs"
+ Dim cLines As Long
+ Dim lngType As Long
+ Dim strProc As String
+
+ For cLines = 1 To vbcm.CountOfLines
+ strProc = vbcm.ProcOfLine(cLines, lngType)
+ If strProc <> "" Then
+ VBNumFuncs = VBNumFuncs + 1
+ cLines = cLines + vbcm.ProcCountLines(strProc, lngType) - 1
+ End If
+ Next
+ Exit Function
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Function VBComponentType(vbc As VBComponent) As String
+ Select Case vbc.Type
+ Case vbext_ct_StdModule
+ VBComponentType = RID_STR_COMMON_VB_COMPONENT_STANDARD
+ Case vbext_ct_ClassModule
+ VBComponentType = RID_STR_COMMON_VB_COMPONENT_CLASS
+ Case vbext_ct_MSForm
+ VBComponentType = RID_STR_COMMON_VB_COMPONENT_USER_FORM
+ Case vbext_ct_Document
+ VBComponentType = RID_STR_COMMON_VB_COMPONENT_DOCUMENT
+ Case 11 'vbext_ct_ActiveX Designer
+ VBComponentType = RID_STR_COMMON_VB_COMPONENT_ACTIVEX_DESIGNER
+ Case Else
+ VBComponentType = RID_STR_COMMON_UNKNOWN
+ End Select
+End Function
+
+Function CheckEmptyProject(docAnalysis As DocumentAnalysis, myProject As VBProject, myComponent As VBComponent) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckEmptyProject"
+ Dim bEmptyProject As Boolean
+
+ 'Bug: Can have empty project with different name from default, would be picked up
+ ' as not empty.
+ 'bEmptyProject = _
+ ' (StrComp(myProject.name, CTOPLEVEL_PROJECT) = 0) And _
+ ' (VBNumFuncs(docAnalysis, myComponent.CodeModule) = 0) And _
+ ' (VBNumLines(docAnalysis, myComponent.CodeModule) < 3)
+
+ ' Code Modules
+ Dim strFind As String
+ Dim count As Long
+ 'Check for:
+ 'Public Const myFoo ....
+ 'Public Declare Function ....
+ 'Public myVar As ...
+ strFind = VBFindLines(docAnalysis, myComponent.CodeModule, "Public", _
+ count, bInProcedure:=False, bWholeWord:=True, bMatchCase:=True)
+
+ bEmptyProject = _
+ (VBNumFuncs(docAnalysis, myComponent.CodeModule) = 0) And _
+ (VBNumLines(docAnalysis, myComponent.CodeModule) < 3) And _
+ (strFind = "")
+
+ CheckEmptyProject = IIf(bEmptyProject, True, False)
+ Exit Function
+
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Function getCustomDocPropTypeAsString(propType As MsoDocProperties)
+ Dim Str As String
+
+ Select Case propType
+ Case msoPropertyTypeBoolean
+ Str = RID_STR_COMMON_YES_OR_NO
+ Case msoPropertyTypeDate
+ Str = RID_STR_COMMON_DATE
+ Case msoPropertyTypeFloat
+ Str = RID_STR_COMMON_NUMBER
+ Case msoPropertyTypeNumber
+ Str = RID_STR_COMMON_NUMBER
+ Case msoPropertyTypeString
+ Str = RID_STR_COMMON_TEXT
+ Case Else
+ Str = "Unknown"
+ End Select
+
+ getCustomDocPropTypeAsString = Str
+End Function
+
+Sub HandleProtectedDocInvalidPassword(docAnalysis As DocumentAnalysis, strError As String, fso As FileSystemObject)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "HandleProtectedDocInvalidPassword"
+ Dim f As File
+ Set f = fso.GetFile(docAnalysis.name)
+
+ docAnalysis.Application = RID_STR_COMMON_PASSWORD_SKIPDOC
+
+ On Error Resume Next
+ docAnalysis.PageCount = 0
+ docAnalysis.Created = f.DateCreated
+ docAnalysis.Modified = f.DateLastModified
+ docAnalysis.Accessed = f.DateLastAccessed
+ docAnalysis.Printed = DateValue("01/01/1900")
+ docAnalysis.SavedBy = RID_STR_COMMON_NA
+ docAnalysis.Revision = 0
+ docAnalysis.Template = RID_STR_COMMON_NA
+ On Error GoTo HandleErrors
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_COMMON_SUBISSUE_INVALID_PASSWORD_ENTERED
+ .Location = .CLocationDocument
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_INVALID_PASSWORD_ENTERED
+ .locationXML = .CXMLLocationDocument
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_PASSWORD
+ .Values.Add strError
+
+ docAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ docAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ docAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Set f = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_OLEEmbeddedSingleShape(docAnalysis As DocumentAnalysis, aShape As Shape, mySubLocation As Variant)
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_OLEEmbeddedSingleShape"
+ Dim myIssue As IssueInfo
+ Dim bOleObject As Boolean
+ Dim TypeAsString As String
+ Dim XMLTypeAsString As String
+ Dim objName As String
+
+ bOleObject = (aShape.Type = msoEmbeddedOLEObject) Or _
+ (aShape.Type = msoLinkedOLEObject) Or _
+ (aShape.Type = msoOLEControlObject)
+
+ If Not bOleObject Then Exit Sub
+
+ aShape.Select
+ Select Case aShape.Type
+ Case msoEmbeddedOLEObject
+ TypeAsString = RID_STR_COMMON_OLE_EMBEDDED
+ XMLTypeAsString = CSTR_SUBISSUE_OLE_EMBEDDED
+ Case msoLinkedOLEObject
+ TypeAsString = RID_STR_COMMON_OLE_LINKED
+ XMLTypeAsString = CSTR_SUBISSUE_OLE_LINKED
+ Case msoOLEControlObject
+ TypeAsString = RID_STR_COMMON_OLE_CONTROL
+ XMLTypeAsString = CSTR_SUBISSUE_OLE_CONTROL
+ Case Else
+ TypeAsString = RID_STR_COMMON_OLE_UNKNOWN
+ XMLTypeAsString = CSTR_SUBISSUE_OLE_UNKNOWN
+ End Select
+
+ Dim appStr As String
+ appStr = getAppSpecificApplicationName
+
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_PORTABILITY
+ .IssueType = RID_STR_COMMON_ISSUE_PORTABILITY
+ .SubType = TypeAsString
+ .Location = .CLocationPage
+ .SubLocation = mySubLocation
+
+ .IssueTypeXML = CSTR_ISSUE_PORTABILITY
+ .SubTypeXML = XMLTypeAsString
+ .locationXML = .CXMLLocationPage
+
+ .Line = aShape.top
+ .column = aShape.Left
+
+ If aShape.name <> "" Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add aShape.name
+ End If
+
+ If aShape.Type = msoEmbeddedOLEObject Or _
+ aShape.Type = msoOLEControlObject Then
+ Dim objType As String
+ On Error Resume Next
+
+ objType = getAppSpecificOLEClassType(aShape)
+
+ If objType = "" Then GoTo FinalExit
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_OBJECT_TYPE
+ .Values.Add objType
+
+ If aShape.Type = msoOLEControlObject Then
+ docAnalysis.MacroNumOLEControls = 1 + docAnalysis.MacroNumOLEControls
+ End If
+
+ If appStr = CAPPNAME_POWERPOINT Then
+ '#114127: Too many open windows
+ 'Checking for OLEFormat.Object is Nothing or IsEmpty still causes problem
+ If objType <> "Equation.3" Then
+ objName = aShape.OLEFormat.Object.name
+ If Err.Number = 0 Then
+ If aShape.name <> objName Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_OBJECT_NAME
+ .Values.Add objName
+ End If
+ End If
+ End If
+ Else
+ If Not (aShape.OLEFormat.Object) Is Nothing Then
+ objName = aShape.OLEFormat.Object.name
+ If Err.Number = 0 Then
+ If aShape.name <> objName Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_OBJECT_NAME
+ .Values.Add objName
+ End If
+ End If
+ End If
+ End If
+
+ On Error GoTo HandleErrors
+ End If
+
+ If aShape.Type = msoLinkedOLEObject Then
+ If appStr <> CAPPNAME_WORD Then
+ On Error Resume Next
+ Dim path As String
+ path = aShape.OLEFormat.Object.SourceFullName
+ If Err.Number = 0 Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_SOURCE
+ .Values.Add path
+ End If
+ On Error GoTo HandleErrors
+ Else
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_SOURCE
+ .Values.Add aShape.LinkFormat.SourceFullName
+ End If
+ End If
+
+ docAnalysis.IssuesCountArray(CID_PORTABILITY) = _
+ docAnalysis.IssuesCountArray(CID_PORTABILITY) + 1
+ End With
+ docAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebugLevelTwo currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Lines(docAnalysis As DocumentAnalysis, myShape As Shape, mySubLocation As Variant)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Lines"
+
+ If myShape.Line.Style = msoLineSingle Or _
+ myShape.Line.Style = msoLineStyleMixed Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_RESXLS_COST_LineStyle
+ .Location = .CLocationPage
+ .SubLocation = mySubLocation
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_LINE
+ .locationXML = .CXMLLocationPage
+
+ .Line = myShape.top
+ .column = myShape.Left
+
+ If myShape.name <> "" Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myShape.name
+ End If
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_COMMON_SUBISSUE_LINE_NOTE
+
+ docAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ docAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ docAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Transparency(docAnalysis As DocumentAnalysis, myShape As Shape, mySubLocation As Variant)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Transparency"
+
+ If Not myShape.Type = msoPicture Then Exit Sub
+
+ Dim bHasTransparentBkg
+ bHasTransparentBkg = False
+
+ On Error Resume Next
+ If myShape.PictureFormat.TransparentBackground = msoTrue Then
+ If Error.Number = 0 Then
+ bHasTransparentBkg = True
+ End If
+ End If
+
+ On Error GoTo HandleErrors
+ If Not bHasTransparentBkg Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_RESXLS_COST_Transparent
+ .Location = .CLocationSlide
+ .SubLocation = mySubLocation
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_TRANSPARENCY
+ .locationXML = .CXMLLocationPage
+
+ .Line = myShape.top
+ .column = myShape.Left
+
+ If myShape.name <> "" Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myShape.name
+ End If
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_COMMON_SUBISSUE_TRANSPARENCY_NOTE
+
+ docAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ docAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ docAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Gradients(docAnalysis As DocumentAnalysis, myShape As Shape, mySubLocation As Variant)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Gradients"
+
+ If myShape.Fill.Type <> msoFillGradient Then Exit Sub
+
+ Dim bUsesPresetGradient, bUsesFromCorner, bUsesFromCenter
+ bUsesPresetGradient = False
+ bUsesFromCorner = False
+ bUsesFromCenter = False
+
+ On Error Resume Next
+ If myShape.Fill.PresetGradientType <> msoPresetGradientMixed Then
+ If Error.Number = 0 Then
+ bUsesPresetGradient = True
+ End If
+ End If
+ If myShape.Fill.GradientStyle <> msoGradientFromCorner Then
+ If Error.Number = 0 Then
+ bUsesFromCorner = True
+ End If
+ End If
+ If myShape.Fill.GradientStyle <> msoGradientFromCenter Then
+ If Error.Number = 0 Then
+ bUsesFromCenter = True
+ End If
+ End If
+
+ On Error GoTo HandleErrors
+ If Not bUsesPresetGradient And Not bUsesFromCorner _
+ And Not bUsesFromCenter Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_RESXLS_COST_GradientStyle
+ .Location = .CLocationSlide
+ .SubLocation = mySubLocation
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_GRADIENT
+ .locationXML = .CXMLLocationSlide
+
+ .Line = myShape.top
+ .column = myShape.Left
+
+ If myShape.name <> "" Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myShape.name
+ End If
+
+ If bUsesPresetGradient Then
+ AddIssueDetailsNote myIssue, 0, RID_STR_COMMON_SUBISSUE_GRADIENT_PRESET_NOTE
+ ElseIf bUsesFromCorner Then
+ AddIssueDetailsNote myIssue, 0, RID_STR_COMMON_SUBISSUE_GRADIENT_CORNER_NOTE
+ Else
+ AddIssueDetailsNote myIssue, 0, RID_STR_COMMON_SUBISSUE_GRADIENT_CENTER_NOTE
+ End If
+
+ docAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ docAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ docAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Private Function CreateFullPath(newPath As String, fso As FileSystemObject)
+ 'We don't want to create 'c:\'
+ If (Len(newPath) < 4) Then
+ Exit Function
+ End If
+
+ 'Create parent folder first
+ If (Not fso.FolderExists(fso.GetParentFolderName(newPath))) Then
+ CreateFullPath fso.GetParentFolderName(newPath), fso
+ End If
+
+ If (Not fso.FolderExists(newPath)) Then
+ fso.CreateFolder (newPath)
+ End If
+End Function
+
+Function GetPreparedFullPath(sourceDocPath As String, startDir As String, storeToDir As String, _
+ fso As FileSystemObject) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetPreparedFullPath"
+ GetPreparedFullPath = ""
+
+ Dim preparedPath As String
+
+ preparedPath = Right(sourceDocPath, Len(sourceDocPath) - Len(startDir))
+ If Left(preparedPath, 1) = "\" Then
+ preparedPath = Right(preparedPath, Len(preparedPath) - 1)
+ End If
+
+ 'Allow for root folder C:\
+ If Right(storeToDir, 1) <> "\" Then
+ preparedPath = storeToDir & "\" & CSTR_COMMON_PREPARATION_FOLDER & "\" & preparedPath
+ Else
+ preparedPath = storeToDir & CSTR_COMMON_PREPARATION_FOLDER & "\" & preparedPath
+ End If
+
+ 'Debug: MsgBox "Preppath: " & preparedPath
+ CreateFullPath fso.GetParentFolderName(preparedPath), fso
+
+ 'Only set if folder to save to exists or has been created, otherwise return ""
+ GetPreparedFullPath = preparedPath
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebugLevelTwo currentFunctionName & " : " & sourceDocPath & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function ClassifyDocOverallMacroClass(docAnalysis As DocumentAnalysis) As EnumDocOverallMacroClass
+ ClassifyDocOverallMacroClass = enMacroNone
+
+ If Not docAnalysis.HasMacros Then Exit Function
+
+ If (docAnalysis.MacroTotalNumLines >= CMACRO_LINECOUNT_MEDIUM_LBOUND) Then
+ If (docAnalysis.MacroNumExternalRefs > 0) Or _
+ (docAnalysis.MacroNumOLEControls > 0 Or docAnalysis.MacroNumFieldsUsingMacros > 0) Or _
+ docAnalysis.MacroNumUserForms > 0 Then
+ ClassifyDocOverallMacroClass = enMacroComplex
+ Else
+ ClassifyDocOverallMacroClass = enMacroMedium
+ End If
+ Else
+ ClassifyDocOverallMacroClass = enMacroSimple
+ End If
+
+End Function
+
diff --git a/migrationanalysis/src/driver_docs/sources/CommonPreparation.bas b/migrationanalysis/src/driver_docs/sources/CommonPreparation.bas
new file mode 100644
index 000000000000..76fb80150d77
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/CommonPreparation.bas
@@ -0,0 +1,226 @@
+Attribute VB_Name = "CommonPreparation"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+Private Declare Function CryptAcquireContext Lib "advapi32.dll" _
+ Alias "CryptAcquireContextA" (ByRef phProv As Long, _
+ ByVal pszContainer As String, ByVal pszProvider As String, _
+ ByVal dwProvType As Long, ByVal dwFlags As Long) As Long
+
+Private Declare Function CryptReleaseContext Lib "advapi32.dll" ( _
+ ByVal hProv As Long, ByVal dwFlags As Long) As Long
+
+Private Declare Function CryptCreateHash Lib "advapi32.dll" ( _
+ ByVal hProv As Long, ByVal Algid As Long, ByVal hKey As Long, _
+ ByVal dwFlags As Long, ByRef phHash As Long) As Long
+
+Private Declare Function CryptDestroyHash Lib "advapi32.dll" (ByVal hHash As Long) As Long
+
+Private Declare Function CryptHashData Lib "advapi32.dll" (ByVal hHash As Long, _
+ pbData As Any, ByVal dwDataLen As Long, ByVal dwFlags As Long) As Long
+
+Private Declare Function CryptGetHashParam Lib "advapi32.dll" ( _
+ ByVal hHash As Long, ByVal dwParam As Long, pbData As Any, _
+ pdwDataLen As Long, ByVal dwFlags As Long) As Long
+
+Private Const ALG_CLASS_ANY As Long = 0
+Private Const ALG_TYPE_ANY As Long = 0
+Private Const ALG_CLASS_HASH As Long = 32768
+Private Const ALG_SID_MD5 As Long = 3
+' Hash algorithms
+Private Const MD5_ALGORITHM As Long = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD5
+' CryptSetProvParam
+Private Const PROV_RSA_FULL As Long = 1
+' used when acquiring the provider
+Private Const CRYPT_VERIFYCONTEXT As Long = &HF0000000
+' Microsoft provider data
+Private Const MS_DEFAULT_PROVIDER As String = _
+ "Microsoft Base Cryptographic Provider v1.0"
+
+Function DoPreparation(docAnalysis As DocumentAnalysis, myIssue As IssueInfo, preparationNote As String, _
+ var As Variant, currDoc As Object) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "DoPreparation"
+
+ DoPreparation = False
+
+ 'Log as Preparable
+ AddIssueDetailsNote myIssue, 0, preparationNote, RID_STR_COMMON_PREPARATION_NOTE
+ myIssue.Preparable = True
+ docAnalysis.PreparableIssuesCount = docAnalysis.PreparableIssuesCount + 1
+
+ If Not CheckDoPrepare Then Exit Function
+
+ 'Do Prepare
+
+ If myIssue.IssueTypeXML = CSTR_ISSUE_OBJECTS_GRAPHICS_AND_FRAMES And _
+ myIssue.SubTypeXML = CSTR_SUBISSUE_OBJECT_IN_HEADER_FOOTER Then
+ DoPreparation = Prepare_HeaderFooter_GraphicFrames(docAnalysis, myIssue, var, currDoc)
+
+ ElseIf myIssue.IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES And _
+ myIssue.SubTypeXML = CSTR_SUBISSUE_OLD_WORKBOOK_VERSION Then
+ DoPreparation = Prepare_WorkbookVersion()
+
+ End If
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & _
+ " : path " & docAnalysis.name & ": " & _
+ " : myIssue " & myIssue.IssueTypeXML & "_" & myIssue.SubTypeXML & ": " & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function InDocPreparation() As Boolean
+ InDocPreparation = True
+End Function
+
+Function Prepare_DocumentCustomProperties(docAnalysis As DocumentAnalysis, myIssue As IssueInfo, _
+ var As Variant, currDoc As Object) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Prepare_DocumentCustomProperties"
+
+ Dim aProp As DocumentProperty
+ Dim myCustomDocumentProperties As DocumentProperties
+ Dim commentProp As DocumentProperty
+ Prepare_DocumentCustomProperties = False
+
+ Set myCustomDocumentProperties = getAppSpecificCustomDocProperties(currDoc)
+ Set commentProp = getAppSpecificCommentBuiltInDocProperty(currDoc)
+ Set aProp = var 'Safe as we know that a DocumentProperty is being passed in
+
+ If commentProp.value <> "" Then commentProp.value = commentProp.value & vbLf
+
+ commentProp.value = commentProp.value & _
+ RID_STR_COMMON_SUBISSUE_DOCUMENT_CUSTOM_PROPERTY & ": " & vbLf
+
+ commentProp.value = commentProp.value & _
+ RID_STR_COMMON_ATTRIBUTE_NAME & " - " & aProp.name & ", " & _
+ RID_STR_COMMON_ATTRIBUTE_TYPE & " - " & getCustomDocPropTypeAsString(aProp.Type) & ", " & _
+ RID_STR_COMMON_ATTRIBUTE_VALUE & " - " & aProp.value
+
+ myCustomDocumentProperties.item(aProp.name).Delete
+
+ Prepare_DocumentCustomProperties = True
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Private Function GetProvider(hCtx As Long) As Boolean
+ Const NTE_BAD_KEYSET = &H80090016
+ Const NTE_EXISTS = &H8009000F
+ Const NTE_KEYSET_NOT_DEF = &H80090019
+ Dim currentFunctionName As String
+ currentFunctionName = "GetProvider"
+
+ Dim strTemp As String
+ Dim strProvider As String
+ Dim strErrorMsg As String
+ Dim errStr As String
+
+ GetProvider = False
+
+ On Error Resume Next
+ strTemp = vbNullChar
+ strProvider = MS_DEFAULT_PROVIDER & vbNullChar
+ If CBool(CryptAcquireContext(hCtx, ByVal strTemp, _
+ ByVal strProvider, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) Then
+ GetProvider = True
+ Exit Function
+ End If
+
+ Select Case Err.LastDllError
+ Case NTE_BAD_KEYSET
+ errStr = "Key container does not exist or You do not have access to the key container."
+ Case NTE_EXISTS
+ errStr = "The key container already exists, but you are attempting to create it"
+ Case NTE_KEYSET_NOT_DEF
+ errStr = "The Crypto Service Provider (CSP) may not be set up correctly"
+ End Select
+ WriteDebug currentFunctionName & "Problems acquiring Crypto Provider: " & MS_DEFAULT_PROVIDER & ": " & errStr
+End Function
+
+
+
+Function MD5HashString(ByVal Str As String) As String
+ Const HP_HASHVAL = 2
+ Const HP_HASHSIZE = 4
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "MD5HashString"
+
+ Dim hCtx As Long
+ Dim hHash As Long
+ Dim ret As Long
+ Dim lLen As Long
+ Dim lIdx As Long
+ Dim abData() As Byte
+
+ If Not GetProvider(hCtx) Then Err.Raise Err.LastDllError
+
+ ret = CryptCreateHash(hCtx, MD5_ALGORITHM, 0, 0, hHash)
+ If ret = 0 Then Err.Raise Err.LastDllError
+
+ ret = CryptHashData(hHash, ByVal Str, Len(Str), 0)
+ If ret = 0 Then Err.Raise Err.LastDllError
+
+ ret = CryptGetHashParam(hHash, HP_HASHSIZE, lLen, 4, 0)
+ If ret = 0 Then Err.Raise Err.LastDllError
+
+
+ ReDim abData(0 To lLen - 1)
+ ret = CryptGetHashParam(hHash, HP_HASHVAL, abData(0), lLen, 0)
+ If ret = 0 Then Err.Raise Err.LastDllError
+
+ For lIdx = 0 To UBound(abData)
+ MD5HashString = MD5HashString & Right$("0" & Hex$(abData(lIdx)), 2)
+ Next
+ CryptDestroyHash hHash
+
+ CryptReleaseContext hCtx, 0
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ MD5HashString = ""
+ WriteDebug currentFunctionName & _
+ Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
diff --git a/migrationanalysis/src/driver_docs/sources/DocumentAnalysis.cls b/migrationanalysis/src/driver_docs/sources/DocumentAnalysis.cls
new file mode 100644
index 000000000000..b4681eeb0163
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/DocumentAnalysis.cls
@@ -0,0 +1,342 @@
+VERSION 1.0 CLASS
+BEGIN
+ MultiUse = -1 'True
+END
+Attribute VB_Name = "DocumentAnalysis"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = False
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+Option Explicit
+
+Const CMAX_NUM_ISSUETYPES = 100
+
+Private mName As String
+Private mApplication As String
+Private mPageCount As Long
+Private mCreated As Date
+Private mModified As Date
+Private mAccessed As Date
+Private mPrinted As Date
+Private mSavedBy As String
+Private mRevision As Long
+Private mTemplate As String
+Private mHasMacros As Boolean
+
+Private mDocIssuesCosts As Long
+Private mPreparableIssuesCosts As Long
+Private mMacroCosts As Long
+
+Private mReferences As Collection
+Private mIssues As Collection
+Private mIssuesCountArray(1 To CMAX_NUM_ISSUETYPES) As Long
+Private mTotalIssueTypes As Long
+Private mMinorIssuesCount As Long
+Private mMacroIssuesCount As Long
+Private mPreparableIssuesCount As Long
+
+Private mDocOverallIssueClass As EnumDocOverallIssueClass
+
+Private mMacroTotalNumLines As Long
+Private mMacroNumUserForms As Long
+Private mMacroNumUserFormControls As Long
+Private mMacroNumUserFormControlTypes As Long
+Private mMacroNumOLEControls As Long
+Private mMacroNumFieldsUsingMacros As Long
+Private mMacroNumExternalRefs As Long
+Private mMacroOverallClass As EnumDocOverallMacroClass
+Private mbBelowIssuesLimit As Boolean
+
+Public Property Get BelowIssuesLimit() As Boolean
+ BelowIssuesLimit = mbBelowIssuesLimit
+End Property
+Public Property Let BelowIssuesLimit(vNewValue As Boolean)
+ mbBelowIssuesLimit = vNewValue
+End Property
+
+Public Property Get MacroOverallClass() As EnumDocOverallMacroClass
+ MacroOverallClass = mMacroOverallClass
+End Property
+Public Property Let MacroOverallClass(vNewValue As EnumDocOverallMacroClass)
+ mMacroOverallClass = vNewValue
+End Property
+
+Public Property Get MacroNumExternalRefs() As Long
+ MacroNumExternalRefs = mMacroNumExternalRefs
+End Property
+Public Property Let MacroNumExternalRefs(vNewValue As Long)
+ mMacroNumExternalRefs = vNewValue
+End Property
+
+Public Property Get MacroNumFieldsUsingMacros() As Long
+ MacroNumFieldsUsingMacros = mMacroNumFieldsUsingMacros
+End Property
+Public Property Let MacroNumFieldsUsingMacros(vNewValue As Long)
+ mMacroNumFieldsUsingMacros = vNewValue
+End Property
+
+Public Property Get MacroNumOLEControls() As Long
+ MacroNumOLEControls = mMacroNumOLEControls
+End Property
+Public Property Let MacroNumOLEControls(vNewValue As Long)
+ mMacroNumOLEControls = vNewValue
+End Property
+
+Public Property Get MacroNumUserFormControlTypes() As Long
+ MacroNumUserFormControlTypes = mMacroNumUserFormControlTypes
+End Property
+Public Property Let MacroNumUserFormControlTypes(vNewValue As Long)
+ mMacroNumUserFormControlTypes = vNewValue
+End Property
+
+Public Property Get MacroNumUserFormControls() As Long
+ MacroNumUserFormControls = mMacroNumUserFormControls
+End Property
+Public Property Let MacroNumUserFormControls(vNewValue As Long)
+ mMacroNumUserFormControls = vNewValue
+End Property
+
+Public Property Get MacroNumUserForms() As Long
+ MacroNumUserForms = mMacroNumUserForms
+End Property
+Public Property Let MacroNumUserForms(vNewValue As Long)
+ mMacroNumUserForms = vNewValue
+End Property
+
+Public Property Get MacroTotalNumLines() As Long
+ MacroTotalNumLines = mMacroTotalNumLines
+End Property
+Public Property Let MacroTotalNumLines(vNewValue As Long)
+ mMacroTotalNumLines = vNewValue
+End Property
+
+Public Property Get MacroCosts() As Long
+ MacroCosts = mMacroCosts
+End Property
+Public Property Let MacroCosts(vNewValue As Long)
+ mMacroCosts = vNewValue
+End Property
+
+Public Property Get DocIssuesCosts() As Long
+ DocIssuesCosts = mDocIssuesCosts
+End Property
+Public Property Let DocIssuesCosts(vNewValue As Long)
+ mDocIssuesCosts = vNewValue
+End Property
+
+Public Property Get PreparableIssuesCosts() As Long
+ PreparableIssuesCosts = mPreparableIssuesCosts
+End Property
+Public Property Let PreparableIssuesCosts(vNewValue As Long)
+ mPreparableIssuesCosts = vNewValue
+End Property
+
+Public Property Get DocOverallIssueClass() As EnumDocOverallIssueClass
+ DocOverallIssueClass = mDocOverallIssueClass
+End Property
+
+Public Property Let DocOverallIssueClass(ByVal vNewValue As EnumDocOverallIssueClass)
+ mDocOverallIssueClass = vNewValue
+End Property
+
+Public Property Get TotalIssueTypes() As Long
+ TotalIssueTypes = mTotalIssueTypes
+End Property
+
+Public Property Let TotalIssueTypes(ByVal vNewValue As Long)
+ mTotalIssueTypes = vNewValue
+End Property
+Public Property Get name() As String
+ name = mName
+End Property
+
+Public Property Let name(ByVal vNewValue As String)
+ mName = vNewValue
+End Property
+
+Public Property Get Application() As String
+ Application = mApplication
+End Property
+
+Public Property Let Application(ByVal vNewValue As String)
+ mApplication = vNewValue
+End Property
+Public Property Get PageCount() As Long
+ PageCount = mPageCount
+End Property
+
+Public Property Let PageCount(ByVal vNewValue As Long)
+ mPageCount = vNewValue
+End Property
+
+Public Property Get Created() As Date
+ Created = mCreated
+End Property
+
+Public Property Let Created(ByVal vNewValue As Date)
+ mCreated = vNewValue
+End Property
+
+Public Property Get Modified() As Date
+ Modified = mModified
+End Property
+
+Public Property Let Modified(ByVal vNewValue As Date)
+ mModified = vNewValue
+End Property
+
+Public Property Get Accessed() As Date
+ Accessed = mAccessed
+End Property
+
+Public Property Let Accessed(ByVal vNewValue As Date)
+ mAccessed = vNewValue
+End Property
+Public Property Get Printed() As Date
+ Printed = mPrinted
+End Property
+
+Public Property Let Printed(ByVal vNewValue As Date)
+ mPrinted = vNewValue
+End Property
+
+Public Property Get SavedBy() As String
+ SavedBy = mSavedBy
+End Property
+
+Public Property Let SavedBy(ByVal vNewValue As String)
+ mSavedBy = vNewValue
+End Property
+
+Public Property Get Revision() As Long
+ Revision = mRevision
+End Property
+
+Public Property Let Revision(ByVal vNewValue As Long)
+ mRevision = vNewValue
+End Property
+
+Public Property Get Template() As String
+ Template = mTemplate
+End Property
+
+Public Property Let Template(ByVal vNewValue As String)
+ mTemplate = vNewValue
+End Property
+Public Property Get HasMacros() As Boolean
+ HasMacros = mHasMacros
+End Property
+
+Public Property Let HasMacros(ByVal vNewValue As Boolean)
+ mHasMacros = vNewValue
+End Property
+
+Public Property Get References() As Collection
+ Set References = mReferences
+End Property
+
+Public Property Let References(ByVal vNewValue As Collection)
+ Set mReferences = vNewValue
+End Property
+
+Public Property Get Issues() As Collection
+ Set Issues = mIssues
+End Property
+
+Public Property Let Issues(ByVal vNewValue As Collection)
+ Set mIssues = vNewValue
+End Property
+
+Public Property Get IssuesCountArray(ByVal index As Integer) As Long
+ If index >= LBound(mIssuesCountArray) And index <= UBound(mIssuesCountArray) Then
+ IssuesCountArray = mIssuesCountArray(index)
+ Else
+ IssuesCountArray = Null
+ End If
+End Property
+
+Public Property Let IssuesCountArray(ByVal index As Integer, ByVal vNewValue As Long)
+ If index >= LBound(mIssuesCountArray) And index <= UBound(mIssuesCountArray) Then
+ mIssuesCountArray(index) = vNewValue
+ End If
+End Property
+
+Public Property Get IssuesCount() As Long
+ IssuesCount = mIssues.count
+End Property
+
+Public Property Get ComplexIssuesCount() As Long
+ Dim complexCount As Long
+ complexCount = mIssues.count - mMinorIssuesCount - mMacroIssuesCount
+ ComplexIssuesCount = IIf(complexCount > 0, complexCount, 0)
+End Property
+
+Public Property Get MacroIssuesCount() As Long
+ MacroIssuesCount = mMacroIssuesCount
+End Property
+
+Public Property Let MacroIssuesCount(ByVal vNewValue As Long)
+ mMacroIssuesCount = vNewValue
+End Property
+
+Public Property Get MinorIssuesCount() As Long
+ MinorIssuesCount = mMinorIssuesCount
+End Property
+
+Public Property Let MinorIssuesCount(ByVal vNewValue As Long)
+ mMinorIssuesCount = vNewValue
+End Property
+
+Public Property Get PreparableIssuesCount() As Long
+ PreparableIssuesCount = mPreparableIssuesCount
+End Property
+
+Public Property Let PreparableIssuesCount(ByVal vNewValue As Long)
+ mPreparableIssuesCount = vNewValue
+End Property
+
+Private Sub Class_Initialize()
+ mApplication = ""
+ mTotalIssueTypes = 0
+ mHasMacros = False
+ Set mIssues = New Collection
+ Set mReferences = New Collection
+ mPreparableIssuesCount = 0
+ mMacroOverallClass = enNone
+ mDocOverallIssueClass = enNone
+ mDocIssuesCosts = 0
+ mPreparableIssuesCosts = 0
+ mMacroCosts = 0
+ mbBelowIssuesLimit = False
+End Sub
+Private Sub Class_Terminate()
+ Set mIssues = Nothing
+ Set mReferences = Nothing
+End Sub
+
diff --git a/migrationanalysis/src/driver_docs/sources/FileTypeAssociation.cls b/migrationanalysis/src/driver_docs/sources/FileTypeAssociation.cls
new file mode 100644
index 000000000000..99828299f009
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/FileTypeAssociation.cls
@@ -0,0 +1,56 @@
+VERSION 1.0 CLASS
+BEGIN
+ MultiUse = -1 'True
+END
+Attribute VB_Name = "FileTypeAssociation"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = False
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+Option Explicit
+
+Private mFileSpec As String
+Private mXLKey As String
+
+
+Public Property Get filespec() As String
+ filespec = mFileSpec
+End Property
+
+Public Property Let filespec(ByVal vNewValue As String)
+ mFileSpec = vNewValue
+End Property
+
+Public Property Get key() As String
+ key = mXLKey
+End Property
+
+Public Property Let key(ByVal vNewValue As String)
+ mXLKey = vNewValue
+End Property
diff --git a/migrationanalysis/src/driver_docs/sources/IssueInfo.cls b/migrationanalysis/src/driver_docs/sources/IssueInfo.cls
new file mode 100644
index 000000000000..0979460cc335
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/IssueInfo.cls
@@ -0,0 +1,206 @@
+VERSION 1.0 CLASS
+BEGIN
+ MultiUse = -1 'True
+END
+Attribute VB_Name = "IssueInfo"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = False
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+Private mIssueID As Integer
+Private mIssueType As String
+Private mSubType As String
+Private mIssueTypeXML As String
+Private mSubTypeXML As String
+Private mLocationXML As String
+Private mLocation As String
+Private mSubLocation As Variant
+Private mLine As Long
+Private mColumn As Variant
+Private mAttributes As Collection
+Private mValues As Collection
+Private mPreparable As Boolean
+
+'General Constants
+Public Property Get CLocationDocument() As String
+ CLocationDocument = RID_STR_COMMON_RESULTS_LOCATION_TYPE_DOCUMENT
+End Property
+Public Property Get CLocationPage() As String
+ CLocationPage = RID_STR_COMMON_RESULTS_LOCATION_TYPE_PAGE
+End Property
+Public Property Get CLocationWorkBook() As String
+ CLocationWorkBook = RID_STR_COMMON_RESULTS_LOCATION_TYPE_WORKBOOK
+End Property
+Public Property Get CLocationSheet() As String
+ CLocationSheet = RID_STR_COMMON_RESULTS_LOCATION_TYPE_SHEET
+End Property
+Public Property Get CLocationPresentation() As String
+ CLocationPresentation = RID_STR_COMMON_RESULTS_LOCATION_TYPE_PRESENTATION
+End Property
+Public Property Get CLocationSlide() As String
+ CLocationSlide = RID_STR_COMMON_RESULTS_LOCATION_TYPE_SLIDE
+End Property
+
+'General XML Constants - NOT localised
+Public Property Get CXMLLocationDocument() As String
+ CXMLLocationDocument = "Document"
+End Property
+Public Property Get CXMLLocationPage() As String
+ CXMLLocationPage = "Page"
+End Property
+Public Property Get CXMLLocationWorkBook() As String
+ CXMLLocationWorkBook = "Workbook"
+End Property
+Public Property Get CXMLLocationSheet() As String
+ CXMLLocationSheet = "Sheet"
+End Property
+Public Property Get CXMLLocationPresentation() As String
+ CXMLLocationPresentation = "Presentation"
+End Property
+Public Property Get CXMLLocationSlide() As String
+ CXMLLocationSlide = "Slide"
+End Property
+
+'Settable Properties
+Public Property Get IssueID() As Integer
+ IssueID = mIssueID
+End Property
+
+Public Property Let IssueID(ByVal vNewValue As Integer)
+ mIssueID = vNewValue
+End Property
+Public Property Get IssueType() As String
+ IssueType = mIssueType
+End Property
+
+Public Property Let IssueType(ByVal vNewValue As String)
+ mIssueType = vNewValue
+End Property
+Public Property Get IssueTypeXML() As String
+ IssueTypeXML = mIssueTypeXML
+End Property
+
+Public Property Let IssueTypeXML(ByVal vNewValue As String)
+ mIssueTypeXML = vNewValue
+End Property
+Public Property Get SubType() As String
+ SubType = mSubType
+End Property
+
+Public Property Let SubType(ByVal vNewValue As String)
+ mSubType = vNewValue
+End Property
+Public Property Get SubTypeXML() As String
+ SubTypeXML = mSubTypeXML
+End Property
+
+Public Property Let SubTypeXML(ByVal vNewValue As String)
+ mSubTypeXML = vNewValue
+End Property
+
+Public Property Get Location() As String
+ Location = mLocation
+End Property
+
+Public Property Let Location(ByVal vNewValue As String)
+ mLocation = vNewValue
+End Property
+Public Property Get locationXML() As String
+ locationXML = mLocationXML
+End Property
+
+Public Property Let locationXML(ByVal vNewValue As String)
+ mLocationXML = vNewValue
+End Property
+
+Public Property Get SubLocation() As Variant
+ SubLocation = mSubLocation
+End Property
+
+Public Property Let SubLocation(ByVal vNewValue As Variant)
+ mSubLocation = vNewValue
+End Property
+
+Public Property Get Line() As Long
+ Line = mLine
+End Property
+
+Public Property Let Line(ByVal vNewValue As Long)
+ mLine = vNewValue
+End Property
+Public Property Get column() As Variant
+ column = mColumn
+End Property
+
+Public Property Let column(ByVal vNewValue As Variant)
+ mColumn = vNewValue
+End Property
+
+Public Property Get Attributes() As Collection
+ Set Attributes = mAttributes
+End Property
+
+Public Property Let Attributes(ByVal vNewValue As Collection)
+ Set mAttributes = vNewValue
+End Property
+Public Property Get Values() As Collection
+ Set Values = mValues
+End Property
+
+Public Property Let Values(ByVal vNewValue As Collection)
+ Set mValues = vNewValue
+End Property
+
+Public Property Get Preparable() As Boolean
+ Preparable = mPreparable
+End Property
+
+Public Property Let Preparable(ByVal vNewValue As Boolean)
+ mPreparable = vNewValue
+End Property
+
+
+
+Private Sub Class_Initialize()
+ Set mAttributes = New Collection
+ Set mValues = New Collection
+ mIssueID = -1
+ mLine = -1
+ mColumn = ""
+ mSubLocation = ""
+ mPreparable = False
+End Sub
+Private Sub Class_Terminate()
+ Set mAttributes = Nothing
+ Set mValues = Nothing
+End Sub
+
diff --git a/migrationanalysis/src/driver_docs/sources/LocalizeResults.bas b/migrationanalysis/src/driver_docs/sources/LocalizeResults.bas
new file mode 100644
index 000000000000..604071625764
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/LocalizeResults.bas
@@ -0,0 +1,308 @@
+Attribute VB_Name = "LocalizeResults"
+Sub Localize_WorkBook(aWorkBook As WorkBook)
+ On Error Resume Next
+ aWorkBook.Names("RID_RESXLS_COST_Action_Settings").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Action_Settings
+ aWorkBook.Names("RID_RESXLS_COST_Add_custom_properties_to_document_Properties_Summary_Comments_field").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Add_custom_properties_to_document_Properties_Summary_Comments_field
+ aWorkBook.Names("RID_RESXLS_COST_Additional_Weighting_Factors").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Additional_Weighting_Factors
+ aWorkBook.Names("RID_RESXLS_COST_All_sheets__256_will_need_to_be_moved_to_a_new_workbook").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_All_sheets__256_will_need_to_be_moved_to_a_new_workbook
+ aWorkBook.Names("RID_RESXLS_COST_Appearance").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Appearance
+ aWorkBook.Names("RID_RESXLS_COST_Application").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Application
+ aWorkBook.Names("RID_RESXLS_COST_Border_Styles").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Border_Styles
+ aWorkBook.Names("RID_RESXLS_COST_Cell_Attributes").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Cell_Attributes
+ aWorkBook.Names("RID_RESXLS_COST_CELL_SPAN_WORKAROUND").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_CELL_SPAN_WORKAROUND
+ aWorkBook.Names("RID_RESXLS_COST_Cell_Spanning_Page").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Cell_Spanning_Page
+ aWorkBook.Names("RID_RESXLS_COST_ChangesAndReviewing").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_ChangesAndReviewing
+ aWorkBook.Names("RID_RESXLS_COST_Charts_And_Tables").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Charts_And_Tables
+ aWorkBook.Names("RID_RESXLS_COST_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Comment
+ aWorkBook.Names("RID_RESXLS_COST_Content_And_Document_Properties").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Content_And_Document_Properties
+ aWorkBook.Names("RID_RESXLS_COST_ContentAndDocumentProperties").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_ContentAndDocumentProperties
+ aWorkBook.Names("RID_RESXLS_COST_Controls").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Controls
+ aWorkBook.Names("RID_RESXLS_COST_Cost").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Cost
+ aWorkBook.Names("RID_RESXLS_COST_Cost__In_simple_cases_cut_and_paste_to_new_sheet_3___5_min").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Cost__In_simple_cases_cut_and_paste_to_new_sheet_3___5_min
+ aWorkBook.Names("RID_RESXLS_COST_COST_0").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_0
+ aWorkBook.Names("RID_RESXLS_COST_COST_EMBED_CHART").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_EMBED_CHART
+ aWorkBook.Names("RID_RESXLS_COST_COST_ERROR_TYPE").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_ERROR_TYPE
+ aWorkBook.Names("RID_RESXLS_COST_COST_INFO").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_INFO
+ aWorkBook.Names("RID_RESXLS_COST_COST_INVAL_PASS").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_INVAL_PASS
+ aWorkBook.Names("RID_RESXLS_COST_COST_INVALID_WORKSHEET_NAME").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_INVALID_WORKSHEET_NAME
+ aWorkBook.Names("RID_RESXLS_COST_Cost_of_4_min_per_line__takes_no_account_of_complexity_of_code__number_of_comment_lines_and_so_on").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Cost_of_4_min_per_line__takes_no_account_of_complexity_of_code__number_of_comment_lines_and_so_on
+ aWorkBook.Names("RID_RESXLS_COST_Cost_per_Issue_or_Factor__min").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Cost_per_Issue_or_Factor__min
+ aWorkBook.Names("RID_RESXLS_COST_COST_PIVOT").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_PIVOT
+ aWorkBook.Names("RID_RESXLS_COST_COST_SHEET_CHART").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_SHEET_CHART
+ aWorkBook.Names("RID_RESXLS_COST_Cost_variations_occur_because_of_the_use_of_macros_with_controls").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Cost_variations_occur_because_of_the_use_of_macros_with_controls
+ aWorkBook.Names("RID_RESXLS_COST_COST_VBA_CONT_TYPE").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_VBA_CONT_TYPE
+ aWorkBook.Names("RID_RESXLS_COST_COST_VBA_CONTROLS").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_VBA_CONTROLS
+ aWorkBook.Names("RID_RESXLS_COST_COST_VBA_FORMS").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_VBA_FORMS
+ aWorkBook.Names("RID_RESXLS_COST_COST_VBA_LOC").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_VBA_LOC
+ aWorkBook.Names("RID_RESXLS_COST_COST_VBA_PROPS").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_COST_VBA_PROPS
+ aWorkBook.Names("RID_RESXLS_COST_Costs__min").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Costs__min
+ aWorkBook.Names("RID_RESXLS_COST_Custom_Bullet_List").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Custom_Bullet_List
+ aWorkBook.Names("RID_RESXLS_COST_Document_Custom_Properties").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Document_Custom_Properties
+ aWorkBook.Names("RID_RESXLS_COST_Document_Parts_Protection").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Document_Parts_Protection
+ aWorkBook.Names("RID_RESXLS_COST_Embedded_Chart").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Embedded_Chart
+ aWorkBook.Names("RID_RESXLS_COST_embedded_objects").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_embedded_objects
+ aWorkBook.Names("RID_RESXLS_COST_Embedded_OLE_Object").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Embedded_OLE_Object
+ aWorkBook.Names("RID_RESXLS_COST_Excel").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Excel
+ aWorkBook.Names("RID_RESXLS_COST_Excel_Totals").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Excel_Totals
+ aWorkBook.Names("RID_RESXLS_COST_External").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_External
+ aWorkBook.Names("RID_RESXLS_COST_External_References_In_Macro___Module__Class_or_UserForm").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_External_References_In_Macro___Module__Class_or_UserForm
+ aWorkBook.Names("RID_RESXLS_COST_Factor_Count").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Factor_Count
+ aWorkBook.Names("RID_RESXLS_COST_Fields").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Fields
+ aWorkBook.Names("RID_RESXLS_COST_Filters").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Filters
+ aWorkBook.Names("RID_RESXLS_COST_Fixed_SO7").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Fixed_SO7
+ aWorkBook.Names("RID_RESXLS_COST_Form_Field").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Form_Field
+ aWorkBook.Names("RID_RESXLS_COST_Format").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Format
+ aWorkBook.Names("RID_RESXLS_COST_Functions").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Functions
+ aWorkBook.Names("RID_RESXLS_COST_HEADERFOOTER_WORKAROUND").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_HEADERFOOTER_WORKAROUND
+ aWorkBook.Names("RID_RESXLS_COST_Hours_Per_MD").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Hours_Per_MD
+ aWorkBook.Names("RID_RESXLS_COST_Indexes_And_References").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Indexes_And_References
+ aWorkBook.Names("RID_RESXLS_COST_Invalid_Password_Entered").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Invalid_Password_Entered
+ aWorkBook.Names("RID_RESXLS_COST_Invalid_Worksheet_Name").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Invalid_Worksheet_Name
+ aWorkBook.Names("RID_RESXLS_COST_Issue__18_of_the_24_table_border_styles_do_not_display_correctly").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__18_of_the_24_table_border_styles_do_not_display_correctly
+ aWorkBook.Names("RID_RESXLS_COST_Issue__256_sheet_limit_exceeded").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__256_sheet_limit_exceeded
+ aWorkBook.Names("RID_RESXLS_COST_Issue__32000_row_limit_exceeded").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__32000_row_limit_exceeded
+ aWorkBook.Names("RID_RESXLS_COST_Issue__A_worksheet_in_the_workbook_has_a_name_with_invalid_characters").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__A_worksheet_in_the_workbook_has_a_name_with_invalid_characters
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Calls_to_windows_API_functions_are_windows_specific").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Calls_to_windows_API_functions_are_windows_specific
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Chart_support_is_limited_in_SO7").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Chart_support_is_limited_in_SO7
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Comments_are_lost_on_migration_to_SO7").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Comments_are_lost_on_migration_to_SO7
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Custom_Properties_are_lost_on_migration").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Custom_Properties_are_lost_on_migration
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Document_is_password_protected_and_cannot_be_opened_by_SO").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Document_is_password_protected_and_cannot_be_opened_by_SO
+ aWorkBook.Names("RID_RESXLS_COST_Issue__External_functions_not_supported_by_SO7").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__External_functions_not_supported_by_SO7
+ aWorkBook.Names("RID_RESXLS_COST_Issue__External_references_are_windows_specific").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__External_references_are_windows_specific
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Fields_are_imported_but_need_to_have_the_link_to_datasource_reset").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Fields_are_imported_but_need_to_have_the_link_to_datasource_reset
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Graphics___frames_in_header_footer_tend_to_be_misplaced").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Graphics___frames_in_header_footer_tend_to_be_misplaced
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Incorrect_password_entered").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Incorrect_password_entered
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Information_relating_to_the_data_source_is_lost_in_migration").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Information_relating_to_the_data_source_is_lost_in_migration
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Invalid_password_entered_Rerun_analysis").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Invalid_password_entered_Rerun_analysis
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Lost_during_migration_No_StarOffice_equivalent").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Lost_during_migration_No_StarOffice_equivalent
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Macros_from_old_workbook_versions_do_not_import_into_SO7").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Macros_from_old_workbook_versions_do_not_import_into_SO7
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Modules_will_need_porting_to_StarOffice_Basic").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Modules_will_need_porting_to_StarOffice_Basic
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Most_migrate_ok_but_do_not_roundtrip").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Most_migrate_ok_but_do_not_roundtrip
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Movies_are_not_supported_by_SO7").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Movies_are_not_supported_by_SO7
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Need_to_set_these_to_be_included_in_TOC_in_SO7").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Need_to_set_these_to_be_included_in_TOC_in_SO7
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Password_protection_of_comments__tracked_changes_and_forms_is_lost").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Password_protection_of_comments__tracked_changes_and_forms_is_lost
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Pivot_charts_are_not_supported_by_SO7").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Pivot_charts_are_not_supported_by_SO7
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Presents_a_cross_platform_interoperability_issue").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Presents_a_cross_platform_interoperability_issue
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Print_wide_pages_not_supported").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Print_wide_pages_not_supported
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Shading_can_be_applied_to_fields_and_to_controls_separately_in_Word").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Shading_can_be_applied_to_fields_and_to_controls_separately_in_Word
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Table_imported_as_text_as_no_StarOffice_equivalent").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Table_imported_as_text_as_no_StarOffice_equivalent
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Tables_nested_in_tables_are_not_supported_by_SO7").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Tables_nested_in_tables_are_not_supported_by_SO7
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Tabs_are_incorrect_after_migration").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Tabs_are_incorrect_after_migration
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Text_form_fields_roundtrip_as_Fill_In_field").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Text_form_fields_roundtrip_as_Fill_In_field
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Unsupported_formatting_set").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Unsupported_formatting_set
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Unsupported_function_type").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Unsupported_function_type
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Userform_controls_will_need_porting_to_StarOffice_Basic").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Userform_controls_will_need_porting_to_StarOffice_Basic
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Userforms_controls_will_need_porting_to_StarOffice_Basic").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Userforms_controls_will_need_porting_to_StarOffice_Basic
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Userforms_will_need_porting_to_StarOffice_Basic").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Userforms_will_need_porting_to_StarOffice_Basic
+ aWorkBook.Names("RID_RESXLS_COST_Issue__VBProject_is_password_protected_Remove_password__rerun_analysis").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__VBProject_is_password_protected_Remove_password__rerun_analysis
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Will_need_refreshing_in_SO7_External_datasources_and_functions_are_not_supported").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Will_need_refreshing_in_SO7_External_datasources_and_functions_are_not_supported
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Workbook_protection_is_not_supported").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Workbook_protection_is_not_supported
+ aWorkBook.Names("RID_RESXLS_COST_Issue__Writer_cannot_correctly_display_cells_spanning_more_than_1_page").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue__Writer_cannot_correctly_display_cells_spanning_more_than_1_page
+ aWorkBook.Names("RID_RESXLS_COST_Issue_Category").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue_Category
+ aWorkBook.Names("RID_RESXLS_COST_Issue_Count").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue_Count
+ aWorkBook.Names("RID_RESXLS_COST_Issue_Type").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Issue_Type
+ aWorkBook.Names("RID_RESXLS_COST_Linked_OLE_Object").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Linked_OLE_Object
+ aWorkBook.Names("RID_RESXLS_COST_Mail_Merge_Datasource").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Mail_Merge_Datasource
+ aWorkBook.Names("RID_RESXLS_COST_Mail_Merge_Field").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Mail_Merge_Field
+ aWorkBook.Names("RID_RESXLS_COST_Major_Issue").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Major_Issue
+ aWorkBook.Names("RID_RESXLS_COST_MAX_SHEETS_WORKAROUND").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_MAX_SHEETS_WORKAROUND
+ aWorkBook.Names("RID_RESXLS_COST_Maximum_Rows_Exceeded").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Maximum_Rows_Exceeded
+ aWorkBook.Names("RID_RESXLS_COST_Maximum_Sheets_Exceeded").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Maximum_Sheets_Exceeded
+ aWorkBook.Names("RID_RESXLS_COST_Migration_Issues_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Migration_Issues_Costs
+ aWorkBook.Names("RID_RESXLS_COST_Movie").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Movie
+ aWorkBook.Names("RID_RESXLS_COST_NESTED_TABLE_WORKAROUND").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_NESTED_TABLE_WORKAROUND
+ aWorkBook.Names("RID_RESXLS_COST_Nested_Tables").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Nested_Tables
+ aWorkBook.Names("RID_RESXLS_COST_Not_Planned").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Not_Planned
+ aWorkBook.Names("RID_RESXLS_COST_Notes_And_Handouts").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Notes_And_Handouts
+ aWorkBook.Names("RID_RESXLS_COST_Number_Of_External_References").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Number_Of_External_References
+ aWorkBook.Names("RID_RESXLS_COST_Number_Of_Lines").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Number_Of_Lines
+ aWorkBook.Names("RID_RESXLS_COST_Number_of_Lines_in_Unique_Modules").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Number_of_Lines_in_Unique_Modules
+ aWorkBook.Names("RID_RESXLS_COST_Number_of_Modules").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Number_of_Modules
+ aWorkBook.Names("RID_RESXLS_COST_Number_of_Unique_Modules").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Number_of_Unique_Modules
+ aWorkBook.Names("RID_RESXLS_COST_Numbering_Reference").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Numbering_Reference
+ aWorkBook.Names("RID_RESXLS_COST_Numbering_Reference_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Numbering_Reference_Comment
+ aWorkBook.Names("RID_RESXLS_COST_Object_In_Header_Footer").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Object_In_Header_Footer
+ aWorkBook.Names("RID_RESXLS_COST_Objects_And_Graphics").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Objects_And_Graphics
+ aWorkBook.Names("RID_RESXLS_COST_Objects_Graphics_And_Frames").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Objects_Graphics_And_Frames
+ aWorkBook.Names("RID_RESXLS_COST_Objects_Graphics_And_Textboxes").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Objects_Graphics_And_Textboxes
+ aWorkBook.Names("RID_RESXLS_COST_Old_Workbook_Version").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Old_Workbook_Version
+ aWorkBook.Names("RID_RESXLS_COST_OLE_Control").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_OLE_Control
+ aWorkBook.Names("RID_RESXLS_COST_OLECONTR_COST").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_OLECONTR_COST
+ aWorkBook.Names("RID_RESXLS_COST_Page_Setup").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Page_Setup
+ aWorkBook.Names("RID_RESXLS_COST_Password_Protected").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Password_Protected
+ aWorkBook.Names("RID_RESXLS_COST_Password_Protection").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Password_Protection
+ aWorkBook.Names("RID_RESXLS_COST_Pivot").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Pivot
+ aWorkBook.Names("RID_RESXLS_COST_Planned_SO8").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Planned_SO8
+ aWorkBook.Names("RID_RESXLS_COST_Portability").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Portability
+ aWorkBook.Names("RID_RESXLS_COST_PowerPoint").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_PowerPoint
+ aWorkBook.Names("RID_RESXLS_COST_PowerPoint_Totals").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_PowerPoint_Totals
+ aWorkBook.Names("RID_RESXLS_COST_Prepared_Issue_Count").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Prepared_Issue_Count
+ aWorkBook.Names("RID_RESXLS_COST_Prepared_Savings__min").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Prepared_Savings__min
+ aWorkBook.Names("RID_RESXLS_COST_Properties___Module__Class_or_UserForm").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Properties___Module__Class_or_UserForm
+ aWorkBook.Names("RID_RESXLS_COST_Remove_password_to_open").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Remove_password_to_open
+ aWorkBook.Names("RID_RESXLS_COST_Remove_the_invalid_characters_from_the_worksheet_name").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Remove_the_invalid_characters_from_the_worksheet_name
+ aWorkBook.Names("RID_RESXLS_COST_Rerun_analysis_with_correct_password").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Rerun_analysis_with_correct_password
+ aWorkBook.Names("RID_RESXLS_COST_Reset_link_to_Data_Base_having_setup_a_Datasource_in_SO7").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Reset_link_to_Data_Base_having_setup_a_Datasource_in_SO7
+ aWorkBook.Names("RID_RESXLS_COST_set_cost_factor_if_the_macro_has_to_be_ported_off_Windows").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_set_cost_factor_if_the_macro_has_to_be_ported_off_Windows
+ aWorkBook.Names("RID_RESXLS_COST_Save_workbook_as_a_new_workbook_version").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Save_workbook_as_a_new_workbook_version
+ aWorkBook.Names("RID_RESXLS_COST_Setup_Datasource_in_SO7_using_Tools__Datasource").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Setup_Datasource_in_SO7_using_Tools__Datasource
+ aWorkBook.Names("RID_RESXLS_COST_Sheet_Chart").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Sheet_Chart
+ aWorkBook.Names("RID_RESXLS_COST_Status").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Status
+ aWorkBook.Names("RID_RESXLS_COST_Table_Of_Authorities").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Table_Of_Authorities
+ aWorkBook.Names("RID_RESXLS_COST_Table_Of_Authorities_Field").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Table_Of_Authorities_Field
+ aWorkBook.Names("RID_RESXLS_COST_Table_Of_Contents").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Table_Of_Contents
+ aWorkBook.Names("RID_RESXLS_COST_Tables").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Tables
+ aWorkBook.Names("RID_RESXLS_COST_TOC_ISSUE_WORKAROUND").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_TOC_ISSUE_WORKAROUND
+ aWorkBook.Names("RID_RESXLS_COST_Total_Cost___MD").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Total_Cost___MD
+ aWorkBook.Names("RID_RESXLS_COST_User_Error").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_User_Error
+ aWorkBook.Names("RID_RESXLS_COST_User_Forms_Control_Count").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_User_Forms_Control_Count
+ aWorkBook.Names("RID_RESXLS_COST_User_Forms_Control_Type_Count").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_User_Forms_Control_Type_Count
+ aWorkBook.Names("RID_RESXLS_COST_User_Forms_Count").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_User_Forms_Count
+ aWorkBook.Names("RID_RESXLS_COST_VBA_Macros").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_VBA_Macros
+ aWorkBook.Names("RID_RESXLS_COST_Word").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Word
+ aWorkBook.Names("RID_RESXLS_COST_Word_Totals").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Word_Totals
+ aWorkBook.Names("RID_RESXLS_COST_Work_Around").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Work_Around
+ aWorkBook.Names("RID_RESXLS_COST_Workaround_Remove_protection_before_importing").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Workaround_Remove_protection_before_importing
+ aWorkBook.Names("RID_RESXLS_COST_WorkbookProtection").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_WorkbookProtection
+ aWorkBook.Names("RID_RESXLS_DP_Accessed").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Accessed
+ aWorkBook.Names("RID_RESXLS_DP_All_Analysed_Documents___Properties").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_All_Analysed_Documents___Properties
+ aWorkBook.Names("RID_RESXLS_DP_Application").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Application
+ aWorkBook.Names("RID_RESXLS_DP_Based_on_Template").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Based_on_Template
+ aWorkBook.Names("RID_RESXLS_DP_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Costs
+ aWorkBook.Names("RID_RESXLS_DP_Created").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Created
+ aWorkBook.Names("RID_RESXLS_DP_Document_Details").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Document_Details
+ aWorkBook.Names("RID_RESXLS_DP_Document_Issue_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Document_Issue_Costs
+ aWorkBook.Names("RID_RESXLS_DP_Document_Migration_Issues").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Document_Migration_Issues
+ aWorkBook.Names("RID_RESXLS_DP_Document_Name").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Document_Name
+ aWorkBook.Names("RID_RESXLS_DP_Document_Name_and_Path").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Document_Name_and_Path
+ aWorkBook.Names("RID_RESXLS_DP_Issues_Complex_count").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Issues_Complex_count
+ aWorkBook.Names("RID_RESXLS_DP_Last_Saved_By").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Last_Saved_By
+ aWorkBook.Names("RID_RESXLS_DP_Lines_of_Macro_Code").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Lines_of_Macro_Code
+ aWorkBook.Names("RID_RESXLS_DP_Macro_Issues").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Macro_Issues
+ aWorkBook.Names("RID_RESXLS_DP_Macro_Migration_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Macro_Migration_Costs
+ aWorkBook.Names("RID_RESXLS_DP_Macro_Migration_Issues").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Macro_Migration_Issues
+ aWorkBook.Names("RID_RESXLS_DP_Migration_Issues").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Migration_Issues
+ aWorkBook.Names("RID_RESXLS_DP_Minor_Issues").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Minor_Issues
+ aWorkBook.Names("RID_RESXLS_DP_Modified").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Modified
+ aWorkBook.Names("RID_RESXLS_DP_Pages_Sheets_Slides").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Pages_Sheets_Slides
+ aWorkBook.Names("RID_RESXLS_DP_Prepareable_Issues_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Prepareable_Issues_Costs
+ aWorkBook.Names("RID_RESXLS_DP_Prepared_Issues").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Prepared_Issues
+ aWorkBook.Names("RID_RESXLS_DP_Printed").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Printed
+ aWorkBook.Names("RID_RESXLS_DP_Revision").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_Revision
+ aWorkBook.Names("RID_RESXLS_DP_User_Form_Count").RefersToRange.Cells(1, 1) = RID_RESXLS_DP_User_Form_Count
+ aWorkBook.Names("RID_RESXLS_ID_All_Documents_with_Issues___Issue_Details").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_All_Documents_with_Issues___Issue_Details
+ aWorkBook.Names("RID_RESXLS_ID_Application").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_Application
+ aWorkBook.Names("RID_RESXLS_ID_Column__Left").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_Column__Left
+ aWorkBook.Names("RID_RESXLS_ID_Document_Name").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_Document_Name
+ aWorkBook.Names("RID_RESXLS_ID_Document_Name_and_Path").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_Document_Name_and_Path
+ aWorkBook.Names("RID_RESXLS_ID_Issue_Category").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_Issue_Category
+ aWorkBook.Names("RID_RESXLS_ID_Issue_Details").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_Issue_Details
+ aWorkBook.Names("RID_RESXLS_ID_Issue_Type").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_Issue_Type
+ aWorkBook.Names("RID_RESXLS_ID_Line__Row__Top").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_Line__Row__Top
+ aWorkBook.Names("RID_RESXLS_ID_Location").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_Location
+ aWorkBook.Names("RID_RESXLS_ID_Location_Type").RefersToRange.Cells(1, 1) = RID_RESXLS_ID_Location_Type
+ aWorkBook.Names("RID_RESXLS_OV_3_to_6_months").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_3_to_6_months
+ aWorkBook.Names("RID_RESXLS_OV_6_to_12_months").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_6_to_12_months
+ aWorkBook.Names("RID_RESXLS_OV_Complex").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Complex
+ aWorkBook.Names("RID_RESXLS_OV_Cost_estimates_for_migration").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Cost_estimates_for_migration
+ aWorkBook.Names("RID_RESXLS_OV_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Costs
+ aWorkBook.Names("RID_RESXLS_OV_Docs_with_DocumentMigrationIssues").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Docs_with_DocumentMigrationIssues
+ aWorkBook.Names("RID_RESXLS_OV_Document_Migration_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Document_Migration_Costs
+ aWorkBook.Names("RID_RESXLS_OV_Document_Modification_Dates").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Document_Modification_Dates
+ aWorkBook.Names("RID_RESXLS_OV_Document_Type").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Document_Type
+ aWorkBook.Names("RID_RESXLS_OV_Documents_with_Macro_Migration_Issues").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Documents_with_Macro_Migration_Issues
+ aWorkBook.Names("RID_RESXLS_OV_Excel").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Excel
+ aWorkBook.Names("RID_RESXLS_OV_Excel_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Excel_Costs
+ aWorkBook.Names("RID_RESXLS_OV_Excel_Spreadsheet").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Excel_Spreadsheet
+ aWorkBook.Names("RID_RESXLS_OV_Excel_Template").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Excel_Template
+ aWorkBook.Names("RID_RESXLS_OV_GREATER_THAN_1_year").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_GREATER_THAN_1_year
+ aWorkBook.Names("RID_RESXLS_OV_Last_Modified").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Last_Modified
+ aWorkBook.Names("RID_RESXLS_OV_LESS_3_months").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_LESS_3_months
+ aWorkBook.Names("RID_RESXLS_OV_LESS_THAN3MONTHS").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_LESS_THAN3MONTHS
+ aWorkBook.Names("RID_RESXLS_OV_Macro_Migration_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Macro_Migration_Costs
+ aWorkBook.Names("RID_RESXLS_OV_Medium").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Medium
+ aWorkBook.Names("RID_RESXLS_OV_Minor").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Minor
+ aWorkBook.Names("RID_RESXLS_OV_None").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_None
+ aWorkBook.Names("RID_RESXLS_OV_Number").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Number
+ aWorkBook.Names("RID_RESXLS_OV_Number_of_Documents_Analyzed").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Number_of_Documents_Analyzed
+ aWorkBook.Names("RID_RESXLS_OV_NumberOfDocs").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_NumberOfDocs
+ aWorkBook.Names("RID_RESXLS_OV_Potential_savings_macro_conversion").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Potential_savings_macro_conversion
+ aWorkBook.Names("RID_RESXLS_OV_Potential_savings_prepared_docs").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Potential_savings_prepared_docs
+ aWorkBook.Names("RID_RESXLS_OV_PowerPoint").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_PowerPoint
+ aWorkBook.Names("RID_RESXLS_OV_PowerPoint_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_PowerPoint_Costs
+ aWorkBook.Names("RID_RESXLS_OV_PowerPoint_Document").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_PowerPoint_Document
+ aWorkBook.Names("RID_RESXLS_OV_PowerPoint_Template").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_PowerPoint_Template
+ aWorkBook.Names("RID_RESXLS_OV_Simple").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Simple
+ aWorkBook.Names("RID_RESXLS_OV_Total").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Total
+ aWorkBook.Names("RID_RESXLS_OV_Totals").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Totals
+ aWorkBook.Names("RID_RESXLS_OV_Word").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Word
+ aWorkBook.Names("RID_RESXLS_OV_Word_Costs").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Word_Costs
+ aWorkBook.Names("RID_RESXLS_OV_Word_Document").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Word_Document
+ aWorkBook.Names("RID_RESXLS_OV_Word_Template").RefersToRange.Cells(1, 1) = RID_RESXLS_OV_Word_Template
+ aWorkBook.Names("RID_RESXLS_PP_Action_Settings").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_Action_Settings
+ aWorkBook.Names("RID_RESXLS_PP_Application").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_Application
+ aWorkBook.Names("RID_RESXLS_PP_Content___Document_Properties").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_Content___Document_Properties
+ aWorkBook.Names("RID_RESXLS_PP_Document_Name_and_Path").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_Document_Name_and_Path
+ aWorkBook.Names("RID_RESXLS_PP_Fields").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_Fields
+ aWorkBook.Names("RID_RESXLS_PP_Format").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_Format
+ aWorkBook.Names("RID_RESXLS_PP_Notes___Handouts").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_Notes___Handouts
+ aWorkBook.Names("RID_RESXLS_PP_Objects__Graphics___Textboxes").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_Objects__Graphics___Textboxes
+ aWorkBook.Names("RID_RESXLS_PP_Portability").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_Portability
+ aWorkBook.Names("RID_RESXLS_PP_PowerPoint_Documents_with_Issues___Issue_Summary").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_PowerPoint_Documents_with_Issues___Issue_Summary
+ aWorkBook.Names("RID_RESXLS_PP_PowerPoint_Presentation_Name").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_PowerPoint_Presentation_Name
+ aWorkBook.Names("RID_RESXLS_PP_VBA_Macros").RefersToRange.Cells(1, 1) = RID_RESXLS_PP_VBA_Macros
+ aWorkBook.Names("RID_RESXLS_RD_All_Documents_with_Macros___Reference_Details").RefersToRange.Cells(1, 1) = RID_RESXLS_RD_All_Documents_with_Macros___Reference_Details
+ aWorkBook.Names("RID_RESXLS_RD_Application").RefersToRange.Cells(1, 1) = RID_RESXLS_RD_Application
+ aWorkBook.Names("RID_RESXLS_RD_Description").RefersToRange.Cells(1, 1) = RID_RESXLS_RD_Description
+ aWorkBook.Names("RID_RESXLS_RD_Document_Name").RefersToRange.Cells(1, 1) = RID_RESXLS_RD_Document_Name
+ aWorkBook.Names("RID_RESXLS_RD_Document_Name_and_Path").RefersToRange.Cells(1, 1) = RID_RESXLS_RD_Document_Name_and_Path
+ aWorkBook.Names("RID_RESXLS_RD_Location").RefersToRange.Cells(1, 1) = RID_RESXLS_RD_Location
+ aWorkBook.Names("RID_RESXLS_RD_Reference").RefersToRange.Cells(1, 1) = RID_RESXLS_RD_Reference
+ aWorkBook.Names("RID_RESXLS_RD_Reference_Details").RefersToRange.Cells(1, 1) = RID_RESXLS_RD_Reference_Details
+ aWorkBook.Names("RID_RESXLS_WI_Application").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Application
+ aWorkBook.Names("RID_RESXLS_WI_Changes_and_Reviewing").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Changes_and_Reviewing
+ aWorkBook.Names("RID_RESXLS_WI_Content___Document_Properties").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Content___Document_Properties
+ aWorkBook.Names("RID_RESXLS_WI_Controls").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Controls
+ aWorkBook.Names("RID_RESXLS_WI_Document_Name_and_Path").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Document_Name_and_Path
+ aWorkBook.Names("RID_RESXLS_WI_Fields").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Fields
+ aWorkBook.Names("RID_RESXLS_WI_Format").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Format
+ aWorkBook.Names("RID_RESXLS_WI_Index_and_References").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Index_and_References
+ aWorkBook.Names("RID_RESXLS_WI_Objects__Graphics____Frames").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Objects__Graphics____Frames
+ aWorkBook.Names("RID_RESXLS_WI_Portability").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Portability
+ aWorkBook.Names("RID_RESXLS_WI_Tables").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Tables
+ aWorkBook.Names("RID_RESXLS_WI_VBA_Macros").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_VBA_Macros
+ aWorkBook.Names("RID_RESXLS_WI_Word_Document_Name").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Word_Document_Name
+ aWorkBook.Names("RID_RESXLS_WI_Word_Documents_with_Issues___Issue_Summary").RefersToRange.Cells(1, 1) = RID_RESXLS_WI_Word_Documents_with_Issues___Issue_Summary
+ aWorkBook.Names("RID_RESXLS_XL_Application").RefersToRange.Cells(1, 1) = RID_RESXLS_XL_Application
+ aWorkBook.Names("RID_RESXLS_XL_Changes___Reviewing").RefersToRange.Cells(1, 1) = RID_RESXLS_XL_Changes___Reviewing
+ aWorkBook.Names("RID_RESXLS_XL_Charts___Tables").RefersToRange.Cells(1, 1) = RID_RESXLS_XL_Charts___Tables
+ aWorkBook.Names("RID_RESXLS_XL_Excel_Documents_with_Issues___Issue_Summary").RefersToRange.Cells(1, 1) = RID_RESXLS_XL_Excel_Documents_with_Issues___Issue_Summary
+ aWorkBook.Names("RID_RESXLS_XL_Excel_Spreadsheet_Name").RefersToRange.Cells(1, 1) = RID_RESXLS_XL_Excel_Spreadsheet_Name
+ aWorkBook.Names("RID_RESXLS_XL_Format").RefersToRange.Cells(1, 1) = RID_RESXLS_XL_Format
+ aWorkBook.Names("RID_RESXLS_XL_Functions").RefersToRange.Cells(1, 1) = RID_RESXLS_XL_Functions
+ aWorkBook.Names("RID_RESXLS_XL_Objects___Graphics").RefersToRange.Cells(1, 1) = RID_RESXLS_XL_Objects___Graphics
+
+ aWorkBook.Names("RID_RESXLS_COST_DB_Query").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_DB_Query
+ aWorkBook.Names("RID_RESXLS_COST_DB_Query_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_DB_Query_Comment
+ aWorkBook.Names("RID_RESXLS_COST_LineStyle").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_LineStyle
+ aWorkBook.Names("RID_RESXLS_COST_LineStyle_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_LineStyle_Comment
+ aWorkBook.Names("RID_RESXLS_COST_Numbering").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Numbering
+ aWorkBook.Names("RID_RESXLS_COST_Numbering_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Numbering_Comment
+ aWorkBook.Names("RID_RESXLS_COST_Template").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Template
+ aWorkBook.Names("RID_RESXLS_COST_Template_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Template_Comment
+ aWorkBook.Names("RID_RESXLS_COST_DATEDIF_Note").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_DATEDIF_Note
+ aWorkBook.Names("RID_RESXLS_COST_Tabstop").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Tabstop
+ aWorkBook.Names("RID_RESXLS_COST_Tabstop_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Tabstop_Comment
+ aWorkBook.Names("RID_RESXLS_COST_GradientStyle").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_GradientStyle
+ aWorkBook.Names("RID_RESXLS_COST_GradientStyle_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_GradientStyle_Comment
+ aWorkBook.Names("RID_RESXLS_COST_GradientStyle_Note").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_GradientStyle_Note
+ aWorkBook.Names("RID_RESXLS_COST_Hyperlink").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Hyperlink
+ aWorkBook.Names("RID_RESXLS_COST_Hyperlink_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Hyperlink_Comment
+ aWorkBook.Names("RID_RESXLS_COST_HyperlinkSplit").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_HyperlinkSplit
+ aWorkBook.Names("RID_RESXLS_COST_HyperlinkSplit_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_HyperlinkSplit_Comment
+ aWorkBook.Names("RID_RESXLS_COST_Background").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Background
+ aWorkBook.Names("RID_RESXLS_COST_Background_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Background_Comment
+ aWorkBook.Names("RID_RESXLS_COST_Transparent").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Transparent
+ aWorkBook.Names("RID_RESXLS_COST_Transparent_Comment").RefersToRange.Cells(1, 1) = RID_RESXLS_COST_Transparent_Comment
+
+End Sub
diff --git a/migrationanalysis/src/driver_docs/sources/PrepareInfo.cls b/migrationanalysis/src/driver_docs/sources/PrepareInfo.cls
new file mode 100644
index 000000000000..e1a7253bd3ee
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/PrepareInfo.cls
@@ -0,0 +1,42 @@
+VERSION 1.0 CLASS
+BEGIN
+ MultiUse = -1 'True
+END
+Attribute VB_Name = "PrepareInfo"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = True
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+'H&F Info
+Public HF_OnPage As Long
+Public HF_inheader As Boolean
+Public HF_extendLength As Single
+Public HF_Shapes As Collection
+Public HF_Frames As Collection
diff --git a/migrationanalysis/src/driver_docs/sources/StringDataManager.cls b/migrationanalysis/src/driver_docs/sources/StringDataManager.cls
new file mode 100644
index 000000000000..a6081121c1af
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/StringDataManager.cls
@@ -0,0 +1,131 @@
+VERSION 1.0 CLASS
+BEGIN
+ MultiUse = -1 'True
+END
+Attribute VB_Name = "StringDataManager"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = True
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+Private langDict As Scripting.Dictionary
+Private mFileName As String
+
+Const C_PRODUCTNAME = "<PRODUCTNAME>"
+Const C_PRODUCTVERSION = "<PRODUCTVERSION>"
+Const C_NEXTPRODUCTVERSION = "<NEXTPRODUCTVERSION>"
+Const C_NEWLINE = "<CR>"
+
+' Load strings from the data file (in the form "id=string") into
+' dictionary object.
+Function InitStringData(fileName As String) As Boolean
+ On Error GoTo HandleErrors
+ Dim stringFile As TextStream
+ Dim aLine As String
+ Dim valueOffset As Long
+ Dim id, Str As String
+ Dim fso As FileSystemObject
+
+ 'Make sure the string data file exists before opening.
+ Set fso = New Scripting.FileSystemObject
+ If Not fso.FileExists(fileName) Then
+ InitStringData = False
+ Exit Function
+ End If
+ Set stringFile = fso.OpenTextFile(fileName, ForReading, False, TristateTrue)
+ If IsEmpty(stringFile) Then
+ 'WriteDebug
+ End If
+ mFileName = fileName
+
+ 'Read each line and parse the id and string, then put into dictionary
+ Do While Not stringFile.AtEndOfStream
+ aLine = stringFile.ReadLine
+ valueOffset = InStr(aLine, "=")
+ id = Left(aLine, valueOffset - 1)
+ Str = Right(aLine, Len(aLine) - valueOffset)
+ langDict.Add id, Str
+ Loop
+ stringFile.Close
+
+ Dim aProductName As String
+ Dim aProductVersion As String
+ Dim aNextProductVersion As String
+ Dim aKey As Variant
+ Dim aItem As String
+ Dim aOldItem As String
+
+ aProductName = langDict.item("RID_STR_COMMON_PRODUCTNAME")
+ aProductVersion = langDict.item("RID_STR_COMMON_PRODUCTVERSION")
+ aNextProductVersion = langDict.item("RID_STR_COMMON_NEXTPRODUCTVERSION")
+
+ For Each aKey In langDict
+ aOldItem = langDict.item(aKey)
+ aItem = ReplaceTopicTokens(aOldItem, C_PRODUCTNAME, aProductName)
+ aItem = ReplaceTopicTokens(aItem, C_PRODUCTVERSION, aProductVersion)
+ aItem = ReplaceTopicTokens(aItem, C_NEXTPRODUCTVERSION, aNextProductVersion)
+ aItem = ReplaceTopicTokens(aItem, C_NEWLINE, vbLF)
+ If (Not (aOldItem = aItem)) Then
+ langDict.item(aKey) = aItem
+ End If
+ Next
+
+ InitStringData = True
+
+FinalExit:
+ Exit Function
+HandleErrors:
+ WriteDebug "InitStringData : " & Err.Number & " " & Err.Description & " " & Err.Source
+ InitStringData = False
+End Function
+
+'Set String Data from an existing dictionary
+Public Property Set StringData(data As Scripting.Dictionary)
+ Set langDict = data
+End Property
+
+'Get String Data dictionary
+Public Property Get StringData() As Scripting.Dictionary
+ Set StringData = langDict
+End Property
+
+'Initialize a given string variable by id
+Function InitString(ByRef resRef As String, resName As String)
+ resRef = langDict.item(resName)
+End Function
+
+Private Sub Class_Initialize()
+ Set langDict = New Scripting.Dictionary 'Allocate the string dictonary
+End Sub
+
+Private Sub Class_Terminate()
+ langDict.RemoveAll
+ Set langDict = Nothing 'Empty the dictionary and remove the instance
+End Sub
diff --git a/migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisExcelDriver.xls b/migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisExcelDriver.xls
new file mode 100644
index 000000000000..8b749cf29ec3
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisExcelDriver.xls
Binary files differ
diff --git a/migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisPPTDriver.ppt b/migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisPPTDriver.ppt
new file mode 100644
index 000000000000..005f9030efbc
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisPPTDriver.ppt
Binary files differ
diff --git a/migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisWordDriver.doc b/migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisWordDriver.doc
new file mode 100644
index 000000000000..8ec7afdd4d71
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/Stripped_OOoDocAnalysisWordDriver.doc
Binary files differ
diff --git a/migrationanalysis/src/driver_docs/sources/common_res.bas b/migrationanalysis/src/driver_docs/sources/common_res.bas
new file mode 100644
index 000000000000..113f8da16b58
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/common_res.bas
@@ -0,0 +1,284 @@
+Attribute VB_Name = "common_res"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Public RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW As String
+Public RID_STR_COMMON_RESULTS_SHEET_NAME_COSTS As String
+Public RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_WORD As String
+Public RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_EXCEL As String
+Public RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_POWERPOINT As String
+Public RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUE_DETAILS As String
+Public RID_STR_COMMON_RESULTS_SHEET_NAME_DOCREF_DETAILS As String
+Public RID_STR_COMMON_RESULTS_SHEET_NAME_DOCPROP As String
+Public RID_STR_COMMON_ANALYSIS_STR As String
+Public RID_STR_COMMON_NOTE_PRE As String
+Public RID_STR_COMMON_NOTE_POST As String
+Public RID_STR_COMMON_OLE_EMBEDDED As String
+Public RID_STR_COMMON_OLE_LINKED As String
+Public RID_STR_COMMON_OLE_CONTROL As String
+Public RID_STR_COMMON_OLE_FIELD_LINK As String
+Public RID_STR_COMMON_OLE_UNKNOWN As String
+Public RID_STR_COMMON_VB_COMPONENT_MODULE As String
+Public RID_STR_COMMON_VB_COMPONENT_STANDARD As String
+Public RID_STR_COMMON_VB_COMPONENT_CLASS As String
+Public RID_STR_COMMON_VB_COMPONENT_USER_FORM As String
+Public RID_STR_COMMON_VB_COMPONENT_DOCUMENT As String
+Public RID_STR_COMMON_VB_COMPONENT_ACTIVEX_DESIGNER As String
+Public RID_STR_COMMON_VB_COMPONENT_UNKNOWN As String
+Public RID_STR_COMMON_YES_OR_NO As String
+Public RID_STR_COMMON_DATE As String
+Public RID_STR_COMMON_NUMBER As String
+Public RID_STR_COMMON_TEXT As String
+Public RID_STR_COMMON_UNKNOWN As String
+Public RID_STR_COMMON_DEC_TO_EXTERNAL_LIBRARY As String
+Public RID_STR_COMMON_RESULTS_LOCATION_TYPE_DOCUMENT As String
+Public RID_STR_COMMON_RESULTS_LOCATION_TYPE_PAGE As String
+Public RID_STR_COMMON_RESULTS_LOCATION_TYPE_WORKBOOK As String
+Public RID_STR_COMMON_RESULTS_LOCATION_TYPE_SHEET As String
+Public RID_STR_COMMON_RESULTS_LOCATION_TYPE_PRESENTATION As String
+Public RID_STR_COMMON_RESULTS_LOCATION_TYPE_SLIDE As String
+Public RID_STR_COMMON_INVALID_PASSWORD As String
+Public RID_STR_COMMON_PASSWORD_SKIPDOC As String
+Public RID_STR_COMMON_NA As String
+Public RID_STR_COMMON_ATTRIBUTE_BROKEN As String
+Public RID_STR_COMMON_ATTRIBUTE_BUILTIN As String
+Public RID_STR_COMMON_ATTRIBUTE_CHECK_DOCUMENT_REFERENCES As String
+Public RID_STR_COMMON_ATTRIBUTE_CLASS_ME_COUNT As String
+Public RID_STR_COMMON_ATTRIBUTE_COMPONENT As String
+Public RID_STR_COMMON_ATTRIBUTE_CONTROLS As String
+Public RID_STR_COMMON_ATTRIBUTE_CUSTOM As String
+Public RID_STR_COMMON_ATTRIBUTE_DESCRIPTION As String
+Public RID_STR_COMMON_ATTRIBUTE_GUID As String
+Public RID_STR_COMMON_ATTRIBUTE_FILE As String
+Public RID_STR_COMMON_ATTRIBUTE_PROPERTIES As String
+Public RID_STR_COMMON_ATTRIBUTE_FURTHER_MACRO_ANALYSIS_NOT_POSSIBLE As String
+Public RID_STR_COMMON_ATTRIBUTE_INCLUDING As String
+Public RID_STR_COMMON_ATTRIBUTE_INTACT As String
+Public RID_STR_COMMON_ATTRIBUTE_ISBROKEN As String
+Public RID_STR_COMMON_ATTRIBUTE_MAJOR As String
+Public RID_STR_COMMON_ATTRIBUTE_MINOR As String
+Public RID_STR_COMMON_ATTRIBUTE_MISSING As String
+Public RID_STR_COMMON_ATTRIBUTE_NAME As String
+Public RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES As String
+Public RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES_COUNT As String
+Public RID_STR_COMMON_ATTRIBUTE_NUMBER_OF_LINES As String
+Public RID_STR_COMMON_ATTRIBUTE_SIGNATURE As String
+Public RID_STR_COMMON_ATTRIBUTE_PASSWORD As String
+Public RID_STR_COMMON_ATTRIBUTE_PATH As String
+Public RID_STR_COMMON_ATTRIBUTE_PROCEDURES As String
+Public RID_STR_COMMON_ATTRIBUTE_PROJECT As String
+Public RID_STR_COMMON_ATTRIBUTE_TYPE As String
+Public RID_STR_COMMON_ATTRIBUTE_TYPELIB As String
+Public RID_STR_COMMON_ATTRIBUTE_UNABLE_TO_ACCESS_VBPROJECT As String
+Public RID_STR_COMMON_ATTRIBUTE_UNKNOWN As String
+Public RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPE As String
+Public RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPES_COUNT As String
+Public RID_STR_COMMON_ATTRIBUTE_VALUE As String
+Public RID_STR_COMMON_ATTRIBUTE_VBPROJECT_PASSWORD As String
+Public RID_STR_COMMON_ISSUE_INFORMATION As String
+Public RID_STR_COMMON_ISSUE_FORMAT As String
+Public RID_STR_COMMON_ISSUE_PORTABILITY As String
+Public RID_STR_COMMON_ISSUE_VBA_MACROS As String
+Public RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES As String
+Public RID_STR_COMMON_NOTE_DOCUMENT_PROPERTIES_LOST As String
+Public RID_STR_COMMON_SUBISSUE_PROPERTIES As String
+Public RID_STR_COMMON_SUBISSUE_REFERENCES As String
+Public RID_STR_COMMON_SUBISSUE_EXTERNAL_REFERENCES_IN_MACROS As String
+Public RID_STR_COMMON_SUBISSUE_INVALID_PASSWORD_ENTERED As String
+Public RID_STR_COMMON_SUBISSUE_SKIP_PASSWORD_DOCUMENTS As String
+Public RID_STR_COMMON_SUBISSUE_DOCUMENT_PARTS_PROTECTION As String
+Public RID_STR_COMMON_SUBISSUE_MACRO_PASSWORD_PROTECTION As String
+Public RID_STR_COMMON_SUBISSUE_PASSWORDS_PROTECTION As String
+Public RID_STR_COMMON_ATTRIBUTE_OBJECT_NAME As String
+Public RID_STR_COMMON_ATTRIBUTE_OBJECT_TYPE As String
+Public RID_STR_COMMON_ATTRIBUTE_SOURCE As String
+Public RID_STR_COMMON_NOTE_HF_PREPARABLE As String
+Public RID_STR_COMMON_PREPARATION_FOLDER As String
+Public RID_STR_COMMON_SUBISSUE_DOCUMENT_CUSTOM_PROPERTY As String
+Public RID_STR_COMMON_MACRO_CLASS_COMPLEX As String
+Public RID_STR_COMMON_MACRO_CLASS_MEDIUM As String
+Public RID_STR_COMMON_MACRO_CLASS_SIMPLE As String
+Public RID_STR_COMMON_MACRO_CLASS_NONE As String
+Public RID_STR_COMMON_ISSUE_CLASS_COMPLEX As String
+Public RID_STR_COMMON_ISSUE_CLASS_MINOR As String
+Public RID_STR_COMMON_ISSUE_CLASS_NONE As String
+Public RID_STR_COMMON_OV_VERSION_STR As String
+Public RID_STR_COMMON_OV_PRODUCT_STR As String
+Public RID_STR_COMMON_OV_DOC_MOD_DATES_COMMENT_TITLE As String
+Public RID_STR_COMMON_OV_DOC_MOD_DATES_COMMENT_BODY As String
+Public RID_STR_COMMON_OV_LEGEND_TITLE As String
+Public RID_STR_COMMON_OV_DOC_MOD_DATES_LEGEND_BODY As String
+Public RID_STR_COMMON_OV_DOC_MACRO_COMMENT_TITLE As String
+Public RID_STR_COMMON_OV_DOC_MACRO_COMMENT_BODY As String
+Public RID_STR_COMMON_OV_DOC_MACRO_LEGEND_BODY As String
+Public RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_DAW As String
+Public RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_PAW_NO_LIMIT As String
+Public RID_STR_COMMON_OV_DOC_ANALYSIS_COMMENT_TITLE As String
+Public RID_STR_COMMON_OV_DOC_ANALYSIS_COMMENT_BODY As String
+Public RID_STR_COMMON_OV_DOC_ANALYSIS_DAW_LEGEND_BODY As String
+Public RID_STR_COMMON_OV_DOC_ANALYSIS_PAW_LEGEND_BODY As String
+Public RID_STR_COMMON_OV_DOC_MOD_DATES_CHART_TITLE As String
+Public RID_STR_COMMON_OV_DOC_MACRO_CHART_TITLE As String
+Public RID_STR_COMMON_OV_DOC_ANALYSIS_CHART_TITLE As String
+Public RID_STR_COMMON_PREPARATION_NOTE As String
+Public RID_STR_COMMON_CANNOT_OPEN As String
+Public RID_STR_COMMON_SUBISSUE_LINE_NOTE As String
+Public RID_STR_COMMON_SUBISSUE_TRANSPARENCY_NOTE As String
+Public RID_STR_COMMON_SUBISSUE_GRADIENT_PRESET_NOTE As String
+Public RID_STR_COMMON_SUBISSUE_GRADIENT_CORNER_NOTE As String
+Public RID_STR_COMMON_SUBISSUE_GRADIENT_CENTER_NOTE As String
+
+Public Sub LoadCommonStrings(sdm As StringDataManager)
+ sdm.InitString RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW, "RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW"
+ ' The dutch excel 2000 doesn't like the name 'Overzicht' so we always append a space to the name
+ RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW = RID_STR_COMMON_RESULTS_SHEET_NAME_OVERVIEW & " "
+ sdm.InitString RID_STR_COMMON_RESULTS_SHEET_NAME_COSTS, "RID_STR_COMMON_RESULTS_SHEET_NAME_COSTS"
+ sdm.InitString RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_WORD, "RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_WORD"
+ sdm.InitString RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_EXCEL, "RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_EXCEL"
+ sdm.InitString RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_POWERPOINT, "RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUES_POWERPOINT"
+ sdm.InitString RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUE_DETAILS, "RID_STR_COMMON_RESULTS_SHEET_NAME_DOCISSUE_DETAILS"
+ sdm.InitString RID_STR_COMMON_RESULTS_SHEET_NAME_DOCREF_DETAILS, "RID_STR_COMMON_RESULTS_SHEET_NAME_DOCREF_DETAILS"
+ sdm.InitString RID_STR_COMMON_RESULTS_SHEET_NAME_DOCPROP, "RID_STR_COMMON_RESULTS_SHEET_NAME_DOCPROP"
+ sdm.InitString RID_STR_COMMON_ANALYSIS_STR, "RID_STR_COMMON_ANALYSIS_STR"
+ sdm.InitString RID_STR_COMMON_NOTE_PRE, "RID_STR_COMMON_NOTE_PRE"
+ sdm.InitString RID_STR_COMMON_NOTE_POST, "RID_STR_COMMON_NOTE_POST"
+ sdm.InitString RID_STR_COMMON_OLE_EMBEDDED, "RID_STR_COMMON_OLE_EMBEDDED"
+ sdm.InitString RID_STR_COMMON_OLE_LINKED, "RID_STR_COMMON_OLE_LINKED"
+ sdm.InitString RID_STR_COMMON_OLE_CONTROL, "RID_STR_COMMON_OLE_CONTROL"
+ sdm.InitString RID_STR_COMMON_OLE_FIELD_LINK, "RID_STR_COMMON_OLE_FIELD_LINK"
+ sdm.InitString RID_STR_COMMON_OLE_UNKNOWN, "RID_STR_COMMON_OLE_UNKNOWN"
+ sdm.InitString RID_STR_COMMON_VB_COMPONENT_MODULE, "RID_STR_COMMON_VB_COMPONENT_MODULE"
+ sdm.InitString RID_STR_COMMON_VB_COMPONENT_STANDARD, "RID_STR_COMMON_VB_COMPONENT_STANDARD"
+ sdm.InitString RID_STR_COMMON_VB_COMPONENT_CLASS, "RID_STR_COMMON_VB_COMPONENT_CLASS"
+ sdm.InitString RID_STR_COMMON_VB_COMPONENT_USER_FORM, "RID_STR_COMMON_VB_COMPONENT_USER_FORM"
+ sdm.InitString RID_STR_COMMON_VB_COMPONENT_DOCUMENT, "RID_STR_COMMON_VB_COMPONENT_DOCUMENT"
+ sdm.InitString RID_STR_COMMON_VB_COMPONENT_ACTIVEX_DESIGNER, "RID_STR_COMMON_VB_COMPONENT_ACTIVEX_DESIGNER"
+ sdm.InitString RID_STR_COMMON_VB_COMPONENT_UNKNOWN, "RID_STR_COMMON_VB_COMPONENT_UNKNOWN"
+ sdm.InitString RID_STR_COMMON_YES_OR_NO, "RID_STR_COMMON_YES_OR_NO"
+ sdm.InitString RID_STR_COMMON_DATE, "RID_STR_COMMON_DATE"
+ sdm.InitString RID_STR_COMMON_NUMBER, "RID_STR_COMMON_NUMBER"
+ sdm.InitString RID_STR_COMMON_TEXT, "RID_STR_COMMON_TEXT"
+ sdm.InitString RID_STR_COMMON_UNKNOWN, "RID_STR_COMMON_UNKNOWN"
+ sdm.InitString RID_STR_COMMON_DEC_TO_EXTERNAL_LIBRARY, "RID_STR_COMMON_DEC_TO_EXTERNAL_LIBRARY"
+ sdm.InitString RID_STR_COMMON_RESULTS_LOCATION_TYPE_DOCUMENT, "RID_STR_COMMON_RESULTS_LOCATION_TYPE_DOCUMENT"
+ sdm.InitString RID_STR_COMMON_RESULTS_LOCATION_TYPE_PAGE, "RID_STR_COMMON_RESULTS_LOCATION_TYPE_PAGE"
+ sdm.InitString RID_STR_COMMON_RESULTS_LOCATION_TYPE_WORKBOOK, "RID_STR_COMMON_RESULTS_LOCATION_TYPE_WORKBOOK"
+ sdm.InitString RID_STR_COMMON_RESULTS_LOCATION_TYPE_SHEET, "RID_STR_COMMON_RESULTS_LOCATION_TYPE_SHEET"
+ sdm.InitString RID_STR_COMMON_RESULTS_LOCATION_TYPE_PRESENTATION, "RID_STR_COMMON_RESULTS_LOCATION_TYPE_PRESENTATION"
+ sdm.InitString RID_STR_COMMON_RESULTS_LOCATION_TYPE_SLIDE, "RID_STR_COMMON_RESULTS_LOCATION_TYPE_SLIDE"
+ sdm.InitString RID_STR_COMMON_INVALID_PASSWORD, "RID_STR_COMMON_INVALID_PASSWORD"
+ sdm.InitString RID_STR_COMMON_PASSWORD_SKIPDOC, "RID_STR_COMMON_PASSWORD_SKIPDOC"
+ sdm.InitString RID_STR_COMMON_NA, "RID_STR_COMMON_NA"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_BROKEN, "RID_STR_COMMON_ATTRIBUTE_BROKEN"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_BUILTIN, "RID_STR_COMMON_ATTRIBUTE_BUILTIN"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_CHECK_DOCUMENT_REFERENCES, "RID_STR_COMMON_ATTRIBUTE_CHECK_DOCUMENT_REFERENCES"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_CLASS_ME_COUNT, "RID_STR_COMMON_ATTRIBUTE_CLASS_ME_COUNT"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_COMPONENT, "RID_STR_COMMON_ATTRIBUTE_COMPONENT"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_CONTROLS, "RID_STR_COMMON_ATTRIBUTE_CONTROLS"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_CUSTOM, "RID_STR_COMMON_ATTRIBUTE_CUSTOM"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_DESCRIPTION, "RID_STR_COMMON_ATTRIBUTE_DESCRIPTION"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_GUID, "RID_STR_COMMON_ATTRIBUTE_GUID"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_FILE, "RID_STR_COMMON_ATTRIBUTE_FILE"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_PROPERTIES, "RID_STR_COMMON_ATTRIBUTE_PROPERTIES"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_FURTHER_MACRO_ANALYSIS_NOT_POSSIBLE, "RID_STR_COMMON_ATTRIBUTE_FURTHER_MACRO_ANALYSIS_NOT_POSSIBLE"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_INCLUDING, "RID_STR_COMMON_ATTRIBUTE_INCLUDING"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_INTACT, "RID_STR_COMMON_ATTRIBUTE_INTACT"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_ISBROKEN, "RID_STR_COMMON_ATTRIBUTE_ISBROKEN"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_MAJOR, "RID_STR_COMMON_ATTRIBUTE_MAJOR"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_MINOR, "RID_STR_COMMON_ATTRIBUTE_MINOR"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_MISSING, "RID_STR_COMMON_ATTRIBUTE_MISSING"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_NAME, "RID_STR_COMMON_ATTRIBUTE_NAME"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES, "RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES_COUNT, "RID_STR_COMMON_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES_COUNT"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_NUMBER_OF_LINES, "RID_STR_COMMON_ATTRIBUTE_NUMBER_OF_LINES"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_SIGNATURE, "RID_STR_COMMON_ATTRIBUTE_SIGNATURE"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_PASSWORD, "RID_STR_COMMON_ATTRIBUTE_PASSWORD"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_PATH, "RID_STR_COMMON_ATTRIBUTE_PATH"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_PROCEDURES, "RID_STR_COMMON_ATTRIBUTE_PROCEDURES"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_PROJECT, "RID_STR_COMMON_ATTRIBUTE_PROJECT"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_TYPE, "RID_STR_COMMON_ATTRIBUTE_TYPE"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_TYPELIB, "RID_STR_COMMON_ATTRIBUTE_TYPELIB"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_UNABLE_TO_ACCESS_VBPROJECT, "RID_STR_COMMON_ATTRIBUTE_UNABLE_TO_ACCESS_VBPROJECT"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_UNKNOWN, "RID_STR_COMMON_ATTRIBUTE_UNKNOWN"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPE, "RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPE"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPES_COUNT, "RID_STR_COMMON_ATTRIBUTE_USERFORM_TYPES_COUNT"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_VALUE, "RID_STR_COMMON_ATTRIBUTE_VALUE"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_VBPROJECT_PASSWORD, "RID_STR_COMMON_ATTRIBUTE_VBPROJECT_PASSWORD"
+ sdm.InitString RID_STR_COMMON_ISSUE_INFORMATION, "RID_STR_COMMON_ISSUE_INFORMATION"
+ sdm.InitString RID_STR_COMMON_ISSUE_FORMAT, "RID_STR_COMMON_ISSUE_FORMAT"
+ sdm.InitString RID_STR_COMMON_ISSUE_PORTABILITY, "RID_STR_COMMON_ISSUE_PORTABILITY"
+ sdm.InitString RID_STR_COMMON_ISSUE_VBA_MACROS, "RID_STR_COMMON_ISSUE_VBA_MACROS"
+ sdm.InitString RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES, "RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES"
+ sdm.InitString RID_STR_COMMON_NOTE_DOCUMENT_PROPERTIES_LOST, "RID_STR_COMMON_NOTE_DOCUMENT_PROPERTIES_LOST"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_PROPERTIES, "RID_STR_COMMON_SUBISSUE_PROPERTIES"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_REFERENCES, "RID_STR_COMMON_SUBISSUE_REFERENCES"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_EXTERNAL_REFERENCES_IN_MACROS, "RID_STR_COMMON_SUBISSUE_EXTERNAL_REFERENCES_IN_MACROS"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_INVALID_PASSWORD_ENTERED, "RID_STR_COMMON_SUBISSUE_INVALID_PASSWORD_ENTERED"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_SKIP_PASSWORD_DOCUMENTS, "RID_STR_COMMON_SUBISSUE_SKIP_PASSWORD_DOCUMENTS"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_DOCUMENT_PARTS_PROTECTION, "RID_STR_COMMON_SUBISSUE_DOCUMENT_PARTS_PROTECTION"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_MACRO_PASSWORD_PROTECTION, "RID_STR_COMMON_SUBISSUE_MACRO_PASSWORD_PROTECTION"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_PASSWORDS_PROTECTION, "RID_STR_COMMON_SUBISSUE_PASSWORDS_PROTECTION"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_OBJECT_NAME, "RID_STR_COMMON_ATTRIBUTE_OBJECT_NAME"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_OBJECT_TYPE, "RID_STR_COMMON_ATTRIBUTE_OBJECT_TYPE"
+ sdm.InitString RID_STR_COMMON_ATTRIBUTE_SOURCE, "RID_STR_COMMON_ATTRIBUTE_SOURCE"
+ sdm.InitString RID_STR_COMMON_NOTE_HF_PREPARABLE, "RID_STR_COMMON_NOTE_HF_PREPARABLE"
+ sdm.InitString RID_STR_COMMON_PREPARATION_FOLDER, "RID_STR_COMMON_PREPARATION_FOLDER"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_DOCUMENT_CUSTOM_PROPERTY, "RID_STR_COMMON_SUBISSUE_DOCUMENT_CUSTOM_PROPERTY"
+ sdm.InitString RID_STR_COMMON_MACRO_CLASS_COMPLEX, "RID_STR_COMMON_MACRO_CLASS_COMPLEX"
+ sdm.InitString RID_STR_COMMON_MACRO_CLASS_MEDIUM, "RID_STR_COMMON_MACRO_CLASS_MEDIUM"
+ sdm.InitString RID_STR_COMMON_MACRO_CLASS_SIMPLE, "RID_STR_COMMON_MACRO_CLASS_SIMPLE"
+ sdm.InitString RID_STR_COMMON_MACRO_CLASS_NONE, "RID_STR_COMMON_MACRO_CLASS_NONE"
+ sdm.InitString RID_STR_COMMON_ISSUE_CLASS_COMPLEX, "RID_STR_COMMON_ISSUE_CLASS_COMPLEX"
+ sdm.InitString RID_STR_COMMON_ISSUE_CLASS_MINOR, "RID_STR_COMMON_ISSUE_CLASS_MINOR"
+ sdm.InitString RID_STR_COMMON_ISSUE_CLASS_NONE, "RID_STR_COMMON_ISSUE_CLASS_NONE"
+ sdm.InitString RID_STR_COMMON_OV_VERSION_STR, "RID_STR_COMMON_OV_VERSION_STR"
+ sdm.InitString RID_STR_COMMON_OV_PRODUCT_STR, "RID_STR_COMMON_OV_PRODUCT_STR"
+ sdm.InitString RID_STR_COMMON_OV_DOC_MOD_DATES_COMMENT_TITLE, "RID_STR_COMMON_OV_DOC_MOD_DATES_COMMENT_TITLE"
+ sdm.InitString RID_STR_COMMON_OV_DOC_MOD_DATES_COMMENT_BODY, "RID_STR_COMMON_OV_DOC_MOD_DATES_COMMENT_BODY"
+ sdm.InitString RID_STR_COMMON_OV_LEGEND_TITLE, "RID_STR_COMMON_OV_LEGEND_TITLE"
+ sdm.InitString RID_STR_COMMON_OV_DOC_MOD_DATES_LEGEND_BODY, "RID_STR_COMMON_OV_DOC_MOD_DATES_LEGEND_BODY"
+ sdm.InitString RID_STR_COMMON_OV_DOC_MACRO_COMMENT_TITLE, "RID_STR_COMMON_OV_DOC_MACRO_COMMENT_TITLE"
+ sdm.InitString RID_STR_COMMON_OV_DOC_MACRO_COMMENT_BODY, "RID_STR_COMMON_OV_DOC_MACRO_COMMENT_BODY"
+ sdm.InitString RID_STR_COMMON_OV_DOC_MACRO_LEGEND_BODY, "RID_STR_COMMON_OV_DOC_MACRO_LEGEND_BODY"
+ sdm.InitString RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_DAW, "RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_DAW"
+ sdm.InitString RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_PAW_NO_LIMIT, "RID_STR_COMMON_OV_HIGH_LEVEL_ANALYSIS_PAW_NO_LIMIT"
+ sdm.InitString RID_STR_COMMON_OV_DOC_ANALYSIS_COMMENT_TITLE, "RID_STR_COMMON_OV_DOC_ANALYSIS_COMMENT_TITLE"
+ sdm.InitString RID_STR_COMMON_OV_DOC_ANALYSIS_COMMENT_BODY, "RID_STR_COMMON_OV_DOC_ANALYSIS_COMMENT_BODY"
+ sdm.InitString RID_STR_COMMON_OV_DOC_ANALYSIS_DAW_LEGEND_BODY, "RID_STR_COMMON_OV_DOC_ANALYSIS_DAW_LEGEND_BODY"
+ sdm.InitString RID_STR_COMMON_OV_DOC_ANALYSIS_PAW_LEGEND_BODY, "RID_STR_COMMON_OV_DOC_ANALYSIS_PAW_LEGEND_BODY"
+ sdm.InitString RID_STR_COMMON_OV_DOC_MOD_DATES_CHART_TITLE, "RID_STR_COMMON_OV_DOC_MOD_DATES_CHART_TITLE"
+ sdm.InitString RID_STR_COMMON_OV_DOC_MACRO_CHART_TITLE, "RID_STR_COMMON_OV_DOC_MACRO_CHART_TITLE"
+ sdm.InitString RID_STR_COMMON_OV_DOC_ANALYSIS_CHART_TITLE, "RID_STR_COMMON_OV_DOC_ANALYSIS_CHART_TITLE"
+ sdm.InitString RID_STR_COMMON_PREPARATION_NOTE, "RID_STR_COMMON_PREPARATION_NOTE"
+ sdm.InitString RID_STR_COMMON_CANNOT_OPEN, "RID_STR_COMMON_CANNOT_OPEN"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_LINE_NOTE, "RID_STR_COMMON_SUBISSUE_LINE_NOTE"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_TRANSPARENCY_NOTE, "RID_STR_COMMON_SUBISSUE_TRANSPARENCY_NOTE"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_GRADIENT_PRESET_NOTE, "RID_STR_COMMON_SUBISSUE_GRADIENT_PRESET_NOTE"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_GRADIENT_CORNER_NOTE, "RID_STR_COMMON_SUBISSUE_GRADIENT_CORNER_NOTE"
+ sdm.InitString RID_STR_COMMON_SUBISSUE_GRADIENT_CENTER_NOTE, "RID_STR_COMMON_SUBISSUE_GRADIENT_CENTER_NOTE"
+End Sub
+
diff --git a/migrationanalysis/src/driver_docs/sources/excel/ApplicationSpecific.bas b/migrationanalysis/src/driver_docs/sources/excel/ApplicationSpecific.bas
new file mode 100644
index 000000000000..88351b178115
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/excel/ApplicationSpecific.bas
@@ -0,0 +1,164 @@
+Attribute VB_Name = "ApplicationSpecific"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+Option Explicit
+
+'** Issue Categories
+Public Const CID_INFORMATION_REFS = 0
+Public Const CID_CHANGES_AND_REVIEWING = 1
+Public Const CID_CHARTS_TABLES = 2
+Public Const CID_CONTENT_AND_DOCUMENT_PROPERTIES = 3
+Public Const CID_CONTROLS = 4
+Public Const CID_FILTERS = 5
+Public Const CID_FORMAT = 6
+Public Const CID_FUNCTIONS = 7
+Public Const CID_OBJECTS_GRAPHICS = 8
+Public Const CID_PORTABILITY = 9
+Public Const CID_VBA_MACROS = 10
+Public Const CTOTAL_CATEGORIES = 10
+
+'** Excel - XML Issue and SubIssue strings
+Public Const CSTR_ISSUE_CHANGES_AND_REVIEWING = "ChangesAndReviewing"
+Public Const CSTR_ISSUE_CHARTS_TABLES = "ChartsAndTables"
+Public Const CSTR_ISSUE_CONTROLS = "Controls"
+Public Const CSTR_ISSUE_FUNCTIONS = "Functions"
+Public Const CSTR_ISSUE_OBJECTS_GRAPHICS = "ObjectsAndGraphics"
+
+Public Const CSTR_SUBISSUE_ATTRIBUTES = "CellAttributes"
+Public Const CSTR_SUBISSUE_DATEDIF = "DATEDIF"
+Public Const CSTR_SUBISSUE_EMBEDDED_CHART = "EmbeddedChart"
+Public Const CSTR_SUBISSUE_ERROR_TYPE = "ERROR.TYPE"
+Public Const CSTR_SUBISSUE_EXTERNAL = "External"
+Public Const CSTR_SUBISSUE_INFO = "INFO"
+Public Const CSTR_SUBISSUE_MAX_ROWS_EXCEEDED = "MaximumRowsExceeded"
+Public Const CSTR_SUBISSUE_MAX_SHEETS_EXCEEDED = "MaximumSheetsExceeded"
+Public Const CSTR_SUBISSUE_PAGE_SETUP = "PageSetup"
+Public Const CSTR_SUBISSUE_PASSWORD_PROTECTION = "PasswordProtection"
+Public Const CSTR_SUBISSUE_PHONETIC = "PHONETIC"
+Public Const CSTR_SUBISSUE_SHEET_CHART = "SheetChart"
+Public Const CSTR_SUBISSUE_WORKBOOK_PROTECTION = "WorkbookProtection"
+Public Const CSTR_SUBISSUE_ZOOM = "Zoom"
+
+Public Const CSTR_SUBISSUE_CHART_COMPLEX = "ChartIssuesComplex"
+Public Const CSTR_SUBISSUE_CHART_MINOR = "ChartIssuesMinor"
+Public Const CSTR_SUBISSUE_CHART_PIVOT = "Pivot"
+Public Const CSTR_SUBISSUE_INVALID_WORKSHEET_NAME = "InvalidWorksheetName"
+Public Const CSTR_SUBISSUE_DB_QUERY = "DBQuery"
+
+'** END Excel - XML Issue and SubIssue strings
+
+
+Public Const CAPPNAME_WORD = "Word"
+'Public Const CAPPNAME_WORD_DOC = ".doc"
+'Public Const CAPPNAME_WORD_DOT = ".dot"
+
+Public Const CAPPNAME_EXCEL = "Excel"
+Public Const CAPPNAME_EXCEL_DOC = ".xls"
+Public Const CAPPNAME_EXCEL_DOT = ".xlt"
+
+Public Const CAPPNAME_POWERPOINT = "PowerPoint"
+'Public Const CAPPNAME_PP_DOC = ".ppt"
+'Public Const CAPPNAME_PP_DOT = ".pot"
+
+'Public Const CAPP_DOCPROP_LOCATION = "Document"
+Public CAPP_DOCPROP_LOCATION As String
+'Public Const CAPP_DOCPROP_LOCATION = "Presentation"
+
+'Public Const CAPP_XMLDOCPROP_LOCATION = "Document"
+Public Const CAPP_XMLDOCPROP_LOCATION = "Workbook"
+'Public Const CAPP_XMLDOCPROP_LOCATION = "Presentation"
+
+Public Const CTHIS_DOCUMENT = "ThisWorkbook"
+Public Const CTOPLEVEL_PROJECT = "VBAProject"
+
+Public Function getAppSpecificDocExt() As String
+ getAppSpecificDocExt = CAPPNAME_EXCEL_DOC
+End Function
+Public Function getAppSpecificTemplateExt() As String
+ getAppSpecificTemplateExt = CAPPNAME_EXCEL_DOT
+End Function
+
+Public Function getAppSpecificPath() As String
+ getAppSpecificPath = ActiveWorkbook.path
+End Function
+Public Function getAppSpecificApplicationName() As String
+ getAppSpecificApplicationName = CAPPNAME_EXCEL
+End Function
+
+Public Function getAppSpecificCustomDocProperties(currDoc As Workbook) As DocumentProperties
+ Set getAppSpecificCustomDocProperties = currDoc.CustomDocumentProperties
+End Function
+Public Function getAppSpecificCommentBuiltInDocProperty(currDoc As Workbook) As DocumentProperty
+ Set getAppSpecificCommentBuiltInDocProperty = currDoc.BuiltinDocumentProperties("Comments")
+End Function
+
+Public Function getAppSpecificVBProject(currDoc As Workbook) As VBProject
+ Set getAppSpecificVBProject = currDoc.VBProject
+End Function
+
+Public Function getAppSpecificOLEClassType(aShape As Shape) As String
+ Dim objType As String
+
+ If aShape.OLEFormat.ProgID = "" Then
+ objType = aShape.OLEFormat.ClassType
+ Else
+ objType = aShape.OLEFormat.ProgID
+ End If
+
+ getAppSpecificOLEClassType = objType
+End Function
+
+Public Sub SetAppToMinimized()
+ Application.WindowState = xlMinimized
+ Application.Visible = False
+End Sub
+
+Public Sub LocalizeResources()
+ Dim xlStrings As StringDataManager
+ Set xlStrings = New StringDataManager
+
+ xlStrings.InitStringData (GetResourceDataFileName(ThisWorkbook.path))
+ LoadCommonStrings xlStrings
+ LoadExcelStrings xlStrings
+ LoadResultsStrings xlStrings
+ Set xlStrings = Nothing
+
+ SetWBDriverText
+End Sub
+
+Public Sub SetWBDriverText()
+ On Error Resume Next
+ CAPP_DOCPROP_LOCATION = RID_STR_COMMON_RESULTS_LOCATION_TYPE_DOCUMENT
+ ThisWorkbook.Names("RID_STR_DVR_XL_EXCEL_DRIVER").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_EXCEL_DRIVER
+ ThisWorkbook.Names("RID_STR_DVR_XL_ISSUES").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_ISSUES
+ ThisWorkbook.Names("RID_STR_DVR_XL_PURPOSE").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_PURPOSE
+ ThisWorkbook.Names("RID_STR_DVR_XL_READ_README").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_READ_README
+ ThisWorkbook.Names("RID_STR_DVR_XL_THE_MACROS").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_THE_MACROS
+ ThisWorkbook.Names("RID_STR_DVR_XL_THIS_DOC").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_THIS_DOC
+ ThisWorkbook.Names("RID_STR_DVR_XL_TITLE").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_TITLE
+End Sub
+
diff --git a/migrationanalysis/src/driver_docs/sources/excel/MigrationAnalyser.cls b/migrationanalysis/src/driver_docs/sources/excel/MigrationAnalyser.cls
new file mode 100644
index 000000000000..1378417344cc
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/excel/MigrationAnalyser.cls
@@ -0,0 +1,2319 @@
+VERSION 1.0 CLASS
+BEGIN
+ MultiUse = -1 'True
+END
+Attribute VB_Name = "MigrationAnalyser"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = False
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+Option Explicit
+
+Const CWORKBOOK_SHEETS_LIMIT = 256
+
+'Class variables
+Private Enum HFIssueType
+ hfInline
+ hfShape
+ hfFrame
+End Enum
+
+Private Enum HFIssueLocation
+ hfHeader
+ hfFooter
+End Enum
+
+Private Type CellAtrributes
+ LineStyle As Integer
+ FillPattern As Integer
+End Type
+
+Private Type BadSheetNameChar
+ BadChar As String
+ Position As Integer
+End Type
+
+Private mAnalysis As DocumentAnalysis
+Private mFileName As String
+
+Const RID_STR_EXCEL_SUBISSUE_ERROR_TYPE = "ERROR.TYPE"
+Const RID_STR_EXCEL_SUBISSUE_INFO = "INFO"
+Const RID_STR_EXCEL_SUBISSUE_DATEDIF = "DATEDIF"
+Const RID_STR_EXCEL_SUBISSUE_PHONETIC = "PHONETIC"
+Const FontError = 94
+Const CR_BADCHAR = "<TOKEN1>"
+Const CR_BADCHARNUM = "<TOKEN2>"
+Const DATA_SOURCE_EXCEL = 0
+Const DATA_SOURCE_EXTERNAL = 1
+Const DATA_SOURCE_MULTIPLE = 2
+Const DATA_SOURCE_EXTERNAL_FILE = 3
+Const C_MAX_CELL_RANGE_COUNT = 10000
+
+Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
+
+'***ADDING-ISSUE: Use Following Skeleton as Guideline for Adding Issue
+' For complete list of all RID_STR_... for Issues (IssueType), SubIssues (SubType) and Attributes refer to:
+' excel_res.bas and common_res.bas
+'
+' For complete list of all CID_... for Issue Categories(IssueID) and
+' CSTR_... for XML Issues (IssueTypeXML) and XML SubIssues (SubTypeXML) refer to:
+' ApplicationSpecific.bas and CommonMigrationAnalyser.bas
+'
+' You should not have to add any new Issue Categories or matching IssueTypes, only new SubIssues
+Sub Analyze_SKELETON()
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_SKELETON"
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_VBA_MACROS 'Issue Category
+ .IssueType = RID_STR_COMMON_ISSUE_VBA_MACROS 'Issue String
+ .SubType = RID_STR_COMMON_SUBISSUE_PROPERTIES 'SubIssue String
+ .Location = .CLocationDocument 'Location string
+
+ .IssueTypeXML = CSTR_ISSUE_VBA_MACROS 'Non localised XML Issue String
+ .SubTypeXML = CSTR_SUBISSUE_PROPERTIES 'Non localised XML SubIssue String
+ .locationXML = .CXMLLocationDocument 'Non localised XML location
+
+ .SubLocation = 0 'if not set will default to RID_STR_NOT_AVAILABLE_SHORTHAND
+ .Line = 0 'if not set will default to RID_STR_NOT_AVAILABLE_SHORTHAND
+ .column = 0 'if not set will default to RID_STR_NOT_AVAILABLE_SHORTHAND
+
+ ' Add as many Attribute Value pairs as needed
+ ' Note: following must always be true - Attributes.Count = Values.Count
+ .Attributes.Add "AAA"
+ .Values.Add "foobar"
+
+ ' Use AddIssueDetailsNote to add notes to the Issue Details if required
+ ' Public Sub AddIssueDetailsNote(myIssue As IssueInfo, noteNum As Long, noteStr As String, _
+ ' Optional preStr As String = RID_STR_COMMON_NOTE_PRE)
+ ' Where preStr is prepended to the output, with "Note" as the default
+ AddIssueDetailsNote myIssue, 0, RID_STR_COMMON_NOTE_DOCUMENT_PROPERTIES_LOST
+
+ mAnalysis.IssuesCountArray(CID_VBA_MACROS) = _
+ mAnalysis.IssuesCountArray(CID_VBA_MACROS) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub DoAnalyse(fileName As String, userFormTypesDict As Scripting.Dictionary, _
+ startDir As String, storeToDir As String, fso As FileSystemObject)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "DoAnalyse"
+ 'Dim secAutomation As MsoAutomationSecurity
+ 'secAutomation = Application.AutomationSecurity
+
+ mAnalysis.name = fileName
+ Dim aWB As Workbook
+ mAnalysis.TotalIssueTypes = CTOTAL_CATEGORIES
+
+ 'Make Excel run as non interactively as possible
+ Application.EnableEvents = False
+ Application.DisplayAlerts = False
+ Application.Interactive = False
+ Application.AskToUpdateLinks = False
+ Application.EnableAnimations = False
+ Application.EnableSound = False
+
+ 'Only supported in Office XP and above
+ 'Application.AutomationSecurity = msoAutomationSecurityForceDisable
+ 'mFileName = fso.GetFileName(fileName)
+ 'WriteToLog "TmpDebug1", mFileName
+
+ Dim myPassword As String
+
+ myPassword = GetDefaultPassword
+
+ If myPassword = "" Then
+ myPassword = "xoxoxoxoxo"
+ End If
+
+ Set aWB = Workbooks.Open(fileName:=fileName, _
+ Password:=myPassword, _
+ WriteResPassword:=myPassword, _
+ UpdateLinks:=0)
+
+ 'Application.AutomationSecurity = secAutomation
+
+ 'Do Analysis
+ Analyze_Password_Protection aWB
+ Analyze_Workbook_Protection aWB
+
+ 'Set Doc Properties
+ SetDocProperties mAnalysis, aWB, fso
+
+ Analyze_SheetLimits aWB
+ Analyze_SheetDisplay aWB
+ Analyze_SheetIssues aWB
+ Analyze_SheetCharts aWB
+ Analyze_WorkbookVersion aWB
+ Analyze_Macros mAnalysis, userFormTypesDict, aWB
+
+ ' Doc Preparation only
+ ' Save document with any fixed issues under <storeToDir>\prepared\<source doc name>
+ If mAnalysis.PreparableIssuesCount > 0 And CheckDoPrepare Then
+ Dim preparedFullPath As String
+ preparedFullPath = GetPreparedFullPath(mAnalysis.name, startDir, storeToDir, fso)
+ If preparedFullPath <> "" Then
+ If fso.FileExists(preparedFullPath) Then
+ fso.DeleteFile preparedFullPath, True
+ End If
+ If fso.FolderExists(fso.GetParentFolderName(preparedFullPath)) Then
+ If IsOldVersion(aWB.FileFormat) Then
+ aWB.SaveAs fileName:=preparedFullPath, FileFormat:=xlExcel9795
+ Else
+ aWB.SaveAs preparedFullPath
+ End If
+ End If
+ End If
+ End If
+
+FinalExit:
+ If Not aWB Is Nothing Then
+ aWB.Close (False)
+ End If
+
+ Set aWB = Nothing
+
+ Application.EnableEvents = True
+ Application.DisplayAlerts = True
+ Application.Interactive = True
+ Application.AskToUpdateLinks = True
+ Application.EnableAnimations = True
+ Application.EnableSound = True
+
+ 'Debug - Call Sleep(5000)
+ Exit Sub
+
+HandleErrors:
+ ' MsgBox currentFunctionName & " : " & fileName & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ ' Handle Password error on Doc Open, Modify and Cancel
+ If Err.Number = 1004 Then
+ WriteDebug currentFunctionName & " : " & fileName & ": " & _
+ "User entered Invalid Document Password - " & Err.Number & " " & Err.Description & " " & Err.Source
+ HandleProtectedDocInvalidPassword mAnalysis, _
+ "User entered Invalid Document Password, further analysis not possible", fso
+ Resume FinalExit
+ End If
+ mAnalysis.Application = RID_STR_COMMON_CANNOT_OPEN
+ WriteDebug currentFunctionName & " : " & fileName & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_SheetCharts(aWB As Workbook)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_SheetCharts"
+
+ Dim myChartSheet As Chart
+
+ For Each myChartSheet In aWB.Charts
+ SetChartIssueMinor myChartSheet, myChartSheet.name, False
+ SetChartIssueComplex myChartSheet, myChartSheet.name
+ Next myChartSheet
+
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub Analyze_EmbeddedCharts(mySheet As Worksheet)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_EmbeddedCharts"
+ Dim BorderIssue As Boolean
+
+ Dim index As Integer
+ BorderIssue = False
+ Dim chartcount As Integer
+ Dim myChart As Chart
+
+ chartcount = mySheet.ChartObjects.count
+
+ For index = 1 To chartcount
+ BorderIssue = False
+ With mySheet.ChartObjects(index)
+ If .Border.LineStyle <> xlLineStyleNone Then
+ BorderIssue = True
+ End If
+ SetChartIssueMinor .Chart, mySheet.name, BorderIssue
+ 'If Not ((.ChartType = xlSurface) _
+ ' And (.ChartType = xlSurfaceTopViewWireframe) _
+ ' And (.ChartType = xlSurfaceTopView)) Then
+ SetChartIssueComplex .Chart, mySheet.name
+ 'End If
+ End With
+ Next index
+
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Private Function getType(o As Variant) As Integer
+ If (VarType(o) = vbString) Then
+ Dim aDataSource As String
+ aDataSource = o
+ getType = DATA_SOURCE_EXCEL
+ If (Len(aDataSource) > 0) Then
+ Dim nBackslashPos As Long
+ nBackslashPos = InStr(Trim(aDataSource), "\")
+ If (nBackslashPos > 0 And nBackslashPos < 4) Then
+ getType = DATA_SOURCE_EXTERNAL_FILE
+ End If
+ End If
+ ElseIf (IsArray(o)) Then
+ If (hasSecondDimension(o)) Then
+ getType = DATA_SOURCE_MULTIPLE
+ Else
+ getType = DATA_SOURCE_EXTERNAL
+ End If
+ End If
+End Function
+
+Private Function hasSecondDimension(o2 As Variant) As Boolean
+ On Error GoTo njet
+ Dim temp As Integer
+ temp = UBound(o2, 2)
+ hasSecondDimension = True
+ Exit Function
+njet:
+ hasSecondDimension = False
+End Function
+
+Private Sub Analyze_PivotTable(myIssue As IssueInfo, myPivotTable As PivotTable)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyse_PivotTable"
+
+ Dim aPivotField As PivotField
+ Dim aNoteCount As Long
+ Dim bManualSort As Boolean
+ Dim bCalculatedValues As Boolean
+ Dim aSorting As XlSortOrder
+ Dim nCount As Integer
+ Dim nDataSource As Integer
+
+ bManualSort = False
+ bCalculatedValues = False
+
+ For Each aPivotField In myPivotTable.PivotFields
+ aSorting = xlAscending
+
+ On Error Resume Next 'some fields don't have any property at all
+ aSorting = aPivotField.AutoSortOrder
+ On Error GoTo HandleErrors
+
+ If (aSorting = xlManual) Then
+ bManualSort = True
+ End If
+
+ nCount = 0
+
+ On Error Resume Next 'some fields don't have any property at all
+ nCount = aPivotField.CalculatedItems.count
+ On Error GoTo HandleErrors
+
+ If (nCount > 0) Then
+ bCalculatedValues = True
+ End If
+ Next
+
+ nCount = 0
+
+ On Error Resume Next 'some fields don't have any property at all
+ nCount = myPivotTable.CalculatedFields.count
+ On Error GoTo HandleErrors
+
+ If (nCount > 0) Then
+ bCalculatedValues = True
+ End If
+
+ nDataSource = getType(myPivotTable.SourceData)
+
+ aNoteCount = 0
+
+ If (bManualSort) Then
+ AddIssueDetailsNote myIssue, aNoteCount, RID_RESXLT_COST_PIVOT_ManSort_Comment
+ aNoteCount = aNoteCount + 1
+ End If
+
+ If (nDataSource = DATA_SOURCE_EXTERNAL) Then
+ AddIssueDetailsNote myIssue, aNoteCount, RID_RESXLT_COST_PIVOT_ExternData_Comment
+ aNoteCount = aNoteCount + 1
+ ElseIf (nDataSource = DATA_SOURCE_MULTIPLE) Then
+ AddIssueDetailsNote myIssue, aNoteCount, RID_RESXLT_COST_PIVOT_MultConsRanges_Comment
+ aNoteCount = aNoteCount + 1
+ ElseIf (nDataSource = DATA_SOURCE_EXTERNAL_FILE) Then
+ Dim noteString As String
+ noteString = RID_RESXLT_COST_PIVOT_ExternData_Comment & "[" & _
+ myPivotTable.SourceData & "]"
+ AddIssueDetailsNote myIssue, aNoteCount, noteString
+ aNoteCount = aNoteCount + 1
+ End If
+
+ If (bCalculatedValues) Then
+ AddIssueDetailsNote myIssue, aNoteCount, RID_RESXLT_COST_PIVOT_CalcVal_Comment
+ aNoteCount = aNoteCount + 1
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Private Sub SetChartIssueComplex(myChart As Chart, myName As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetChartIssueComplex"
+
+ Dim myIssue As IssueInfo
+ Dim bSeriesChartTypeChanged As Boolean
+ Dim bDatasourceNotLinkedtoCell As Boolean
+ Dim bDatasourceOnDifferentSheet As Boolean
+ Dim bCategoryandValue As Boolean
+ Dim bCLabelMorethanOneCell As Boolean
+ Dim bOneColumnRow As Boolean
+ Dim bDataTable As Boolean
+ Dim bXAxes As Boolean
+ Dim bseries As Boolean
+ Dim bformat As Boolean
+ Dim bpivot As Boolean
+
+
+ Set myIssue = New IssueInfo
+ bSeriesChartTypeChanged = False
+ bDatasourceNotLinkedtoCell = False
+ bDatasourceOnDifferentSheet = False
+ bCategoryandValue = False
+ bCLabelMorethanOneCell = False
+ bOneColumnRow = False
+ bDataTable = False
+ bXAxes = False
+
+ bformat = FormatIssueComplex(myChart, bDataTable, bXAxes)
+ bseries = SeriesIssue(myChart, bSeriesChartTypeChanged, bDatasourceNotLinkedtoCell, bDatasourceOnDifferentSheet, bCategoryandValue, bCLabelMorethanOneCell, bOneColumnRow)
+ bpivot = Not (myChart.PivotLayout Is Nothing)
+
+ If (Not (bseries Or bformat Or bpivot)) Then
+ GoTo FinalExit
+ ElseIf bpivot Then
+ With myIssue
+ .IssueID = CID_CHARTS_TABLES
+ .IssueType = RID_STR_EXCEL_ISSUE_CHARTS_AND_TABLES
+ .SubType = RID_STR_EXCEL_SUBISSUE_PIVOT
+ .Location = .CLocationSheet
+ .SubLocation = myName
+
+ .IssueTypeXML = CSTR_ISSUE_CHARTS_TABLES
+ .SubTypeXML = CSTR_SUBISSUE_CHART_PIVOT
+ .locationXML = .CXMLLocationSheet
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PIVOT_TABLE_NAME
+ .Values.Add myChart.PivotLayout.PivotTable.name
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_VISIBLE
+ .Values.Add myChart.HasPivotFields
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_NUM
+ .Values.Add myChart.PivotLayout.PivotTable.PivotFields.count
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_TYPE
+ .Values.Add getChartTypeAsString(myChart.ChartType)
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_CHARTNAME
+ .Values.Add myChart.name
+ End With
+
+ AddIssueDetailsNote myIssue, 0, RID_RESXLT_COST_PIVOT_PivotChart_Comment
+ mAnalysis.IssuesCountArray(CID_CHARTS_TABLES) = _
+ mAnalysis.IssuesCountArray(CID_CHARTS_TABLES) + 1
+ mAnalysis.Issues.Add myIssue
+
+ GoTo FinalExit
+ Else
+ With myIssue
+ Dim NoteIndex As Long
+ NoteIndex = 0
+
+ .IssueID = CID_CHARTS_TABLES
+ .IssueType = RID_STR_EXCEL_ISSUE_CHARTS_AND_TABLES
+ .SubType = RID_STR_EXCEL_SUBISSUE_CHART_COMPLEX
+ .Location = .CLocationSheet
+ .SubLocation = myName
+
+ .IssueTypeXML = CSTR_ISSUE_CHARTS_TABLES
+ .SubTypeXML = CSTR_SUBISSUE_CHART_COMPLEX
+ .locationXML = .CXMLLocationSheet
+
+ If bDataTable Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_DATATABLE
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SET
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_DATATABLE
+ NoteIndex = NoteIndex + 1
+ End If
+ If bXAxes Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_XAXISCATEGORY
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_TIMESCALE
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_XAXISCATEGORY
+ NoteIndex = NoteIndex + 1
+ End If
+ If bSeriesChartTypeChanged Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_SERIESCHARTTYPE
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_CHANGED
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_SERIESCHARTTYPE
+ NoteIndex = NoteIndex + 1
+ End If
+ If bDatasourceNotLinkedtoCell Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_DATASOURCE
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_DATASOURCENOTLINKEDTOCELL
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_DATASOURCENOTLINKEDTOCELL
+ NoteIndex = NoteIndex + 1
+ End If
+ If bDatasourceOnDifferentSheet Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_DATASOURCE
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_DATASOURCEONDIFFERENTSHEET
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_DATASOURCEONDIFFERENTSHEET
+ NoteIndex = NoteIndex + 1
+ End If
+ If bCategoryandValue Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_CATEGORYANDDATA
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SEPARATE
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_CATEGORYANDDATA
+ NoteIndex = NoteIndex + 1
+ End If
+ If bCLabelMorethanOneCell Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_CATEGORYLABEL
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_CATEGORYLABELMORETHANONECELL
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_CATEGORYLABELMORETHANONECELL
+ NoteIndex = NoteIndex + 1
+ End If
+ If bOneColumnRow Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_COLUMNBAR
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_ONECOLUMNROW
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_COLUMNBAR
+ NoteIndex = NoteIndex + 1
+ End If
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_TYPE
+ .Values.Add getChartTypeAsString(myChart.ChartType)
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_CHARTNAME
+ .Values.Add myChart.name
+ End With
+
+ mAnalysis.IssuesCountArray(CID_CHARTS_TABLES) = _
+ mAnalysis.IssuesCountArray(CID_CHARTS_TABLES) + 1
+ mAnalysis.Issues.Add myIssue
+ End If
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Private Sub SetChartIssueMinor(myChart As Chart, myName As String, BorderIssue As Boolean)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetChartIssueMinor"
+
+ Dim myIssue As IssueInfo
+ Dim bUnsupportedType As Boolean
+ Dim bTrendline As Boolean
+ Dim bDatalabelWithLegend As Boolean
+ Dim bLegendPosition As Boolean
+ Dim bTitleFont As Boolean
+ Dim bPiechartDirection As Boolean
+ Dim bAxisInterval As Boolean
+
+
+ Set myIssue = New IssueInfo
+ bUnsupportedType = False
+ bTrendline = False
+ bDatalabelWithLegend = False
+ bLegendPosition = False
+ bTitleFont = False
+ bPiechartDirection = False
+ bAxisInterval = False
+
+
+ If (Not FormatissueMinor(myChart, bUnsupportedType, bTrendline, bDatalabelWithLegend, bLegendPosition, bTitleFont, bPiechartDirection, bAxisInterval)) And (Not BorderIssue) Then
+ GoTo FinalExit
+ Else
+ With myIssue
+ Dim NoteIndex As Long
+ NoteIndex = 0
+
+ .IssueID = CID_CHARTS_TABLES
+ .IssueType = RID_STR_EXCEL_ISSUE_CHARTS_AND_TABLES
+
+ .SubType = RID_STR_EXCEL_SUBISSUE_CHART_MINOR
+ .Location = .CLocationSheet
+ .SubLocation = myName
+
+ .IssueTypeXML = CSTR_ISSUE_CHARTS_TABLES
+ .SubTypeXML = CSTR_SUBISSUE_CHART_PIVOT
+ .locationXML = .CXMLLocationSheet
+
+ If bUnsupportedType Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_UNSUPPORTEDTYPE
+ .Values.Add getChartTypeAsString(myChart.ChartType)
+ ' bubble chart
+ If (myChart.ChartType = xlBubble Or myChart.ChartType = xlBubble3DEffect) Then
+ AddIssueDetailsNote myIssue, NoteIndex, RID_RESXLT_COST_CHART_Bubble_Comment
+ ' bar of pie and pie of pie chart
+ ElseIf (myChart.ChartType = xlPieOfPie Or myChart.ChartType = xlBarOfPie) Then
+ AddIssueDetailsNote myIssue, NoteIndex, RID_RESXLT_COST_CHART_BarOfPie_Comment
+ ' Scatter chart
+ ElseIf (myChart.ChartType = xlXYScatter Or myChart.ChartType = xlXYScatterLines _
+ Or myChart.ChartType = xlXYScatterLinesNoMarkers _
+ Or myChart.ChartType = xlXYScatterSmooth _
+ Or myChart.ChartType = xlXYScatterSmoothNoMarkers) Then
+ AddIssueDetailsNote myIssue, NoteIndex, RID_RESXLT_COST_CHART_Scattered_Comment
+ ' radar chart
+ ElseIf (myChart.ChartType = xlRadarMarkers Or myChart.ChartType = xlRadar) Then
+ AddIssueDetailsNote myIssue, NoteIndex, RID_RESXLT_COST_CHART_Radar_Comment
+ ' radar filled chart
+ ElseIf (myChart.ChartType = xlRadarFilled) Then
+ AddIssueDetailsNote myIssue, NoteIndex, RID_RESXLT_COST_CHART_FilledRadar_Comment
+ ' surface chart
+ ElseIf (myChart.ChartType = xlSurface Or myChart.ChartType = xlSurfaceTopView _
+ Or myChart.ChartType = xlSurfaceTopViewWireframe _
+ Or myChart.ChartType = xlSurfaceWireframe) Then
+ AddIssueDetailsNote myIssue, NoteIndex, RID_RESXLT_COST_CHART_Surface_Comment
+ Else
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_UNSUPPORTEDTYPE1
+ NoteIndex = NoteIndex + 1
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_UNSUPPORTEDTYPE2
+ End If
+ NoteIndex = NoteIndex + 1
+ End If
+ If bTrendline Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_TRENDLINE
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SET
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_TRENDLINE
+ NoteIndex = NoteIndex + 1
+ End If
+ If bDatalabelWithLegend Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_DATALABELWITHLEGEND
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SET
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_DATALABELWITHLEGEND
+ NoteIndex = NoteIndex + 1
+ End If
+ If bLegendPosition Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_LEGENDPOSITION
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_NOTRIGHT
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_LEGENDPOSITION
+ NoteIndex = NoteIndex + 1
+ End If
+ If bTitleFont Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_TITLEFONT
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_DIFFERENT
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_TITLEFONT
+ NoteIndex = NoteIndex + 1
+ End If
+ If bPiechartDirection Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PIE
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SLICES_IN_DIFFERENT_DIRECTION
+ End If
+ If BorderIssue Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_BORDER
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SET
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_BORDER
+ NoteIndex = NoteIndex + 1
+ End If
+ If bAxisInterval Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_AXISINTERVAL
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_AUTO
+ AddIssueDetailsNote myIssue, NoteIndex, RID_STR_EXCEL_NOTE_AXISINTERVAL
+ NoteIndex = NoteIndex + 1
+ End If
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_CHARTNAME
+ .Values.Add myChart.name
+ End With
+
+ mAnalysis.IssuesCountArray(CID_CHARTS_TABLES) = _
+ mAnalysis.IssuesCountArray(CID_CHARTS_TABLES) + 1
+ mAnalysis.Issues.Add myIssue
+ End If
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetChartIssue(myChart As Chart, myName As String, strSubType As String, _
+ strXMLSubType As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetChartIssue"
+ Dim myIssue As IssueInfo
+ Dim bUnsupportedPosition As Boolean
+
+ Set myIssue = New IssueInfo
+
+ ' Common Settings
+ With myIssue
+ .IssueID = CID_CHARTS_TABLES
+ .IssueType = RID_STR_EXCEL_ISSUE_CHARTS_AND_TABLES
+ .SubType = strSubType
+ .Location = .CLocationSheet
+ .SubLocation = myName
+
+ .IssueTypeXML = CSTR_ISSUE_CHARTS_TABLES
+ .SubTypeXML = strXMLSubType
+ .locationXML = .CXMLLocationSheet
+
+
+ If myChart.HasTitle Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_TITLE
+ .Values.Add myChart.chartTitle.Text
+ End If
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_TYPE
+ .Values.Add myChart.ChartType 'TBD - getChartTypeAsString() convert to String
+
+ 'Pie Chart
+ If (myChart.ChartType = xlPie) Or _
+ (myChart.ChartType = xlPieExploded) Or _
+ (myChart.ChartType = xlPieOfPie) Or _
+ (myChart.ChartType = xl3DPie) Or _
+ (myChart.ChartType = xl3DPieExploded) Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PIE
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SLICES_IN_DIFFERENT_DIRECTION
+ End If
+
+ If Not myChart.PivotLayout Is Nothing Then
+ 'Pivot Chart
+ .SubType = RID_STR_EXCEL_SUBISSUE_PIVOT & " " & strSubType
+
+ 'Pivot Chart details
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PIVOT_TABLE_NAME
+ .Values.Add myChart.PivotLayout.PivotTable.name
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_VISIBLE
+ .Values.Add myChart.HasPivotFields
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_NUM
+ .Values.Add myChart.PivotLayout.PivotTable.PivotFields.count
+ End If
+ End With
+
+ mAnalysis.IssuesCountArray(CID_CHARTS_TABLES) = _
+ mAnalysis.IssuesCountArray(CID_CHARTS_TABLES) + 1
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Function getLineStyleAsString(myLineStyle As XlLineStyle) As String
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "getLineStyleAsString"
+
+ Dim strVal As String
+
+ Select Case myLineStyle
+ Case xlContinuous
+ strVal = RID_STR_EXCEL_ENUMERATION_LINE_STYLE_CONTINUOUS
+ Case xlDash
+ strVal = RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DASH
+ Case xlDashDot
+ strVal = RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DASHDOT
+ Case xlDot
+ strVal = RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DOT
+ Case xlDouble
+ strVal = RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DOUBLE
+ Case xlSlantDashDot
+ strVal = RID_STR_EXCEL_ENUMERATION_LINE_STYLE_SLANTDASHDOT
+ Case xlLineStyleNone
+ strVal = RID_STR_EXCEL_ENUMERATION_LINE_STYLE_LINESTYLENONE
+ Case Else
+ strVal = RID_STR_EXCEL_ENUMERATION_UNKNOWN
+ End Select
+
+
+ getLineStyleAsString = strVal
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Function getChartTypeAsString(myChartType As XlChartType) As String
+ '*********************************************************
+ '**** Localisation: ON HOLD ******************************
+ '*********************************************************
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "getChartTypeAsString"
+
+ Dim strVal As String
+
+ Select Case myChartType
+ Case xl3DArea
+ strVal = "3DArea"
+ Case xl3DAreaStacked
+ strVal = "3DAreaStacked"
+ Case xl3DAreaStacked100
+ strVal = "3DAreaStacked100"
+ Case xl3DBarClustered
+ strVal = "3DBarClustered"
+ Case xl3DBarStacked
+ strVal = "xl3DBarStacked"
+ Case xl3DBarStacked100
+ strVal = "xl3DBarStacked100"
+ Case xl3DColumn
+ strVal = "3DColumn"
+ Case xl3DColumnClustered
+ strVal = "xl3DColumnClustered"
+ Case xl3DColumnStacked
+ strVal = "xl3DColumnStacked"
+ Case xl3DColumnStacked100
+ strVal = "xl3DColumnStacked100"
+ Case xl3DLine
+ strVal = "3DLine"
+ Case xl3DPie
+ strVal = "3DPie"
+ Case xl3DPieExploded
+ strVal = "3DPieExploded"
+ Case xlArea
+ strVal = "Area"
+ Case xlAreaStacked
+ strVal = "AreaStacked"
+ Case xlAreaStacked100
+ strVal = "AreaStacked100"
+ Case xlBarClustered
+ strVal = "BarClustered"
+ Case xlBarOfPie
+ strVal = "BarOfPie"
+ Case xlBarStacked
+ strVal = "BarStacked"
+ Case xlBarStacked100
+ strVal = "BarStacked100"
+ Case xlBubble
+ strVal = "Bubble"
+ Case xlBubble3DEffect
+ strVal = "Bubble3DEffect"
+ Case xlColumnClustered
+ strVal = "ColumnClustered"
+ Case xlColumnStacked
+ strVal = "ColumnStacked"
+ Case xlColumnStacked100
+ strVal = "ColumnStacked100"
+ Case xlConeBarClustered
+ strVal = "ConeBarClustered"
+ Case xlConeBarStacked
+ strVal = "ConeBarStacked"
+ Case xlConeBarStacked100
+ strVal = "ConeBarStacked100"
+ Case xlConeCol
+ strVal = "ConeCol"
+ Case xlConeColClustered
+ strVal = "ConeColClustered"
+ Case xlConeColStacked
+ strVal = "ConeColStacked"
+ Case xlConeColStacked100
+ strVal = "ConeColStacked100"
+ Case xlCylinderBarClustered
+ strVal = "CylinderBarClustered"
+ Case xlCylinderBarStacked
+ strVal = "CylinderBarStacked"
+ Case xlCylinderBarStacked100
+ strVal = "CylinderBarStacked100"
+ Case xlCylinderCol
+ strVal = "CylinderCol"
+ Case xlCylinderColClustered
+ strVal = "CylinderColClustered"
+ Case xlCylinderColStacked
+ strVal = "CylinderColStacked"
+ Case xlCylinderColStacked100
+ strVal = "CylinderColStacked100"
+ Case xlDoughnut
+ strVal = "Doughnut"
+ Case xlLine
+ strVal = "Line"
+ Case xlLineMarkers
+ strVal = "LineMarkers"
+ Case xlLineMarkersStacked
+ strVal = "LineMarkersStacked"
+ Case xlLineMarkersStacked100
+ strVal = "LineMarkersStacked100"
+ Case xlLineStacked
+ strVal = "LineStacked"
+ Case xlLineStacked100
+ strVal = "LineStacked100"
+ Case xlPie
+ strVal = "Pie"
+ Case xlPieExploded
+ strVal = "PieExploded"
+ Case xlPieOfPie
+ strVal = "PieOfPie"
+ Case xlPyramidBarClustered
+ strVal = "PyramidBarClustered"
+ Case xlPyramidBarStacked
+ strVal = "PyramidBarStacked"
+ Case xlPyramidBarStacked100
+ strVal = "PyramidBarStacked100"
+ Case xlPyramidCol
+ strVal = "PyramidCol"
+ Case xlPyramidColClustered
+ strVal = "PyramidColClustered"
+ Case xlPyramidColStacked
+ strVal = "PyramidColStacked"
+ Case xlPyramidColStacked100
+ strVal = "PyramidColStacked100"
+ Case xlRadar
+ strVal = "Radar"
+ Case xlRadarFilled
+ strVal = "RadarFilled"
+ Case xlRadarMarkers
+ strVal = "RadarMarkers"
+ Case xlStockHLC
+ strVal = "StockHLC"
+ Case xlStockOHLC
+ strVal = "StockOHLC"
+ Case xlStockVHLC
+ strVal = "StockVHLC"
+ Case xlStockVOHLC
+ strVal = "StockVOHLC"
+ Case xlSurface
+ strVal = "Surface"
+ Case xlSurfaceTopView
+ strVal = "SurfaceTopView"
+ Case xlSurfaceTopViewWireframe
+ strVal = "SurfaceTopViewWireframe"
+ Case xlSurfaceWireframe
+ strVal = "SurfaceWireframe"
+ Case xlXYScatter
+ strVal = "XYScatter"
+ Case xlXYScatterLines
+ strVal = "XYScatterLines"
+ Case xlXYScatterLinesNoMarkers
+ strVal = "XYScatterLinesNoMarkers"
+ Case xlXYScatterSmooth
+ strVal = "XYScatterSmooth"
+ Case xlXYScatterSmoothNoMarkers
+ strVal = "XYScatterSmoothNoMarkers"
+ Case Else
+ strVal = RID_STR_EXCEL_ENUMERATION_UNKNOWN
+ End Select
+
+ getChartTypeAsString = strVal
+
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Sub HandleZoomIssue(currentSheet)
+ Dim myIssue As IssueInfo
+ Dim currentFunctionName As String
+ currentFunctionName = "HandleZoomIssue"
+
+ On Error GoTo HandleErrors
+
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_FORMAT
+ .IssueType = RID_STR_EXCEL_ISSUE_FORMAT
+ .SubType = RID_STR_EXCEL_SUBISSUE_ZOOM
+ .Location = .CLocationSheet
+ .SubLocation = currentSheet.name
+
+ .IssueTypeXML = CSTR_ISSUE_FORMAT
+ .SubTypeXML = CSTR_SUBISSUE_ZOOM
+ .locationXML = .CXMLLocationSheet
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_EXCEL_NOTE_ZOOM
+ End With
+
+ mAnalysis.IssuesCountArray(CID_FORMAT) = _
+ mAnalysis.IssuesCountArray(CID_FORMAT) + 1
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_SheetDisplay(aWB As Workbook)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_SheetDisplay"
+
+ If aWB.Sheets.count = 1 Then Exit Sub
+
+ Dim lastZoomVal As Integer
+ Dim bInitZoom As Boolean
+ Dim bZoomChanged As Boolean
+ Dim ws As Object
+
+ bInitZoom = True
+ bZoomChanged = False
+
+ For Each ws In aWB.Sheets
+ ws.Activate
+
+ On Error GoTo HandleErrors
+
+ If bInitZoom Then
+ lastZoomVal = ActiveWindow.Zoom
+ bInitZoom = False
+ ElseIf Not bZoomChanged Then
+ If ActiveWindow.Zoom <> lastZoomVal Then
+ bZoomChanged = True
+ HandleZoomIssue ws
+ End If
+ End If
+ If bZoomChanged Then Exit For
+ Next ws
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_SheetLimits(aWB As Workbook)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_SheetLimits"
+ Dim myIssue As IssueInfo
+
+ If aWB.Sheets.count < CWORKBOOK_SHEETS_LIMIT + 1 Then Exit Sub
+
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_EXCEL_SUBISSUE_MAX_SHEETS_EXCEEDED
+ .Location = .CLocationWorkBook
+ .SubLocation = aWB.name
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_MAX_SHEETS_EXCEEDED
+ .locationXML = .CXMLLocationWorkBook
+
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_SHEETS
+ .Values.Add aWB.Sheets.count
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_EXCEL_NOTE_SHEET_LIMITS_1 & CWORKBOOK_SHEETS_LIMIT
+ AddIssueDetailsNote myIssue, 1, RID_STR_EXCEL_NOTE_SHEET_LIMITS_2 & CWORKBOOK_SHEETS_LIMIT
+ End With
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ mAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_SheetIssues(aWB As Workbook)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_SheetIssues"
+
+ Dim myWrkSheet As Worksheet
+
+ For Each myWrkSheet In aWB.Worksheets
+ Analyze_OLEEmbedded myWrkSheet
+ Analyze_CellInSheetIssues myWrkSheet
+ Analyze_EmbeddedCharts myWrkSheet
+ Analyze_SheetName myWrkSheet
+ Analyze_QueryTables myWrkSheet
+ Next myWrkSheet
+
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub Analyze_SheetName(mySheet As Worksheet)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_SheetName"
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ Dim invalidCharacters As String
+ invalidCharacters = InvalidSheetNameCharacters(mySheet.name)
+ If Len(invalidCharacters) <> 0 Then
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_EXCEL_SUBISSUE_INVALID_WORKSHEET_NAME
+ .Location = .CLocationSheet
+ .SubLocation = mySheet.name
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_INVALID_WORKSHEET_NAME
+ .locationXML = .CXMLLocationSheet
+
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_INVALIDCHARACTER
+ .Values.Add invalidCharacters
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_EXCEL_NOTE_INVALIDWORKSHEETNAME
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+ mAnalysis.Issues.Add myIssue
+ End If
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Function InvalidSheetNameCharacters(aName As String) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "InvalidSheetNameCharacters"
+
+ Dim I As Integer
+ Dim NameCount As Integer
+ Dim newBadCharLine As String
+ Dim invalidCharacterDetails As String
+ Dim BadCharPosition As String
+ Dim theBadChars As BadSheetNameChar
+ NameCount = Len(aName)
+ invalidCharacterDetails = ""
+ For I = 1 To NameCount
+ theBadChars.BadChar = Mid(aName, I, 1)
+ theBadChars.Position = I
+ BadCharPosition = CStr(theBadChars.Position)
+ Select Case theBadChars.BadChar
+ Case "[", "]", "{", "}", ".", "!", "%", "$", "^", ".", "&", "(", ")", _
+ "-", "=", "+", "~", "#", "@", "'", ";", "<", ">", ",", "|", "`"
+ newBadCharLine = ReplaceTopic2Tokens(RID_STR_EXCEL_ATTRIBUTE_BADCHARACTER, CR_BADCHAR, _
+ theBadChars.BadChar, CR_BADCHARNUM, BadCharPosition)
+ invalidCharacterDetails = invalidCharacterDetails + newBadCharLine + ", "
+ Case Else
+ End Select
+ Next I
+ If Len(invalidCharacterDetails) > 0 Then
+ InvalidSheetNameCharacters = Left(invalidCharacterDetails, (Len(invalidCharacterDetails) - 2))
+ Else
+ InvalidSheetNameCharacters = ""
+ End If
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+
+End Function
+
+Sub Analyze_QueryTables(mySheet As Worksheet)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_QueryTables"
+
+ Dim aTable As QueryTable
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ For Each aTable In mySheet.QueryTables
+ If (aTable.QueryType = xlADORecordset) Or _
+ (aTable.QueryType = xlDAORecordSet) Or _
+ (aTable.QueryType = xlODBCQuery) Or _
+ (aTable.QueryType = xlOLEDBQuery) Then
+
+ With myIssue
+ .IssueID = CID_CHARTS_TABLES
+ .IssueType = RID_STR_EXCEL_ISSUE_CHARTS_AND_TABLES
+ .SubType = RID_RESXLS_COST_DB_Query
+ .Location = .CLocationSheet
+ .SubLocation = mySheet.name
+
+ .IssueTypeXML = CSTR_ISSUE_CHARTS_TABLES
+ .SubTypeXML = CSTR_SUBISSUE_DB_QUERY
+ .locationXML = .CXMLLocationSheet
+
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_DB_QUERY
+ .Values.Add aTable.Connection
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_EXCEL_NOTE_DB_QUERY
+
+ mAnalysis.IssuesCountArray(CID_CHARTS_TABLES) = _
+ mAnalysis.IssuesCountArray(CID_CHARTS_TABLES) + 1
+ End With
+ mAnalysis.Issues.Add myIssue
+ End If
+ Next aTable
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_WorkbookVersion(aWB As Workbook)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_WorkbookVersion"
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+ Dim aProp As Variant
+
+ If IsOldVersion(aWB.FileFormat) Then
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_EXCEL_SUBISSUE_OLD_WORKBOOK_VERSION
+ .Location = .CLocationWorkBook
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_OLD_WORKBOOK_VERSION
+ .locationXML = .CXMLLocationWorkBook
+
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_WORKBOOK_VERSION
+ .Values.Add aWB.FileFormat
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_EXCEL_NOTE_OLDWORKBOOKVERSION
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+ Call DoPreparation(mAnalysis, myIssue, RID_STR_EXCEL_NOTE_OLD_OLDWORKBOOKVERSION_PREPARABLE, aProp, aWB)
+
+ mAnalysis.Issues.Add myIssue
+ End If
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Function getRange(myRange As Range) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "getRange"
+ getRange = ""
+
+ On Error Resume Next
+ getRange = myRange.Address(RowAbsolute:=False, ColumnAbsolute:=False, ReferenceStyle:=xlA1)
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : myRange.name " & myRange.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Sub Analyze_CellInSheetIssues(mySheet As Worksheet)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_CellInSheetIssues"
+ Dim myCellRng As Range
+
+ Set myCellRng = mySheet.UsedRange
+ Call CheckAllCellFormatting(myCellRng, mySheet.name)
+ Call CheckAllCellFunctions(myCellRng, mySheet.name)
+
+FinalExit:
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub CheckAllCellFormatting(CurrRange As Range, myName As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckAllCellFormatting"
+
+ Dim myCell As Range
+ Dim myCellAttri As CellAtrributes
+ Dim bCellIssue As Boolean
+ Dim bCellIssueAll As Boolean
+ Dim startTime As Single
+
+ bCellIssue = False
+ bCellIssueAll = False
+ startTime = Timer
+
+ For Each myCell In CurrRange
+ bCellIssue = CheckCellFormatting(myCell, myCellAttri)
+ bCellIssueAll = bCellIssueAll Or bCellIssue
+ If (Timer - gExcelMaxRangeProcessTime > startTime) Then
+ WriteDebug currentFunctionName & " : [" & myName & _
+ "]Too much time needed, abortet cell formatting check."
+ Exit For
+ End If
+ Next
+
+FinalExit:
+ If bCellIssueAll Then
+ ReportCellFormattingIssue myName, myCellAttri
+ End If
+
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Function CheckLineFormatIssue(myRange As Range, edge As XlBordersIndex) As Boolean
+ CheckLineFormatIssue = (myRange.Borders(edge).LineStyle <> xlContinuous) And _
+ (myRange.Borders(edge).LineStyle <> xlDouble) And _
+ (myRange.Borders(edge).LineStyle <> xlLineStyleNone)
+End Function
+
+Private Function CheckCellFormatting(myCell As Range, myCellAttri As CellAtrributes) As Boolean
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckCellFormatting"
+
+ On Error GoTo HandleErrors
+
+ Dim bCellLineFormatIssue As Boolean
+
+ CheckCellFormatting = False
+
+ bCellLineFormatIssue = CheckLineFormatIssue(myCell, xlEdgeBottom) Or _
+ CheckLineFormatIssue(myCell, xlEdgeLeft) Or _
+ CheckLineFormatIssue(myCell, xlEdgeRight) Or _
+ CheckLineFormatIssue(myCell, xlEdgeTop)
+
+ CheckCellFormatting = bCellLineFormatIssue Or _
+ (myCell.Interior.Pattern <> xlPatternSolid And myCell.Interior.Pattern <> xlPatternNone)
+
+ If Not CheckCellFormatting Then Exit Function
+
+ If bCellLineFormatIssue Then
+ myCellAttri.LineStyle = myCellAttri.LineStyle + 1
+ End If
+ If (myCell.Interior.Pattern <> xlPatternSolid And myCell.Interior.Pattern <> xlPatternNone) Then
+ myCellAttri.FillPattern = myCellAttri.FillPattern + 1
+ End If
+
+ Exit Function
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Private Sub ReportCellFormattingIssue(myName As String, myCellAttri As CellAtrributes)
+ Dim currentFunctionName As String
+ currentFunctionName = "ReportCellFormattingIssue"
+
+ On Error GoTo HandleErrors
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_FORMAT
+ .IssueType = RID_STR_EXCEL_ISSUE_FORMAT
+ .SubType = RID_STR_EXCEL_SUBISSUE_ATTRIBUTES
+ .Location = .CLocationSheet
+
+ .IssueTypeXML = CSTR_ISSUE_FORMAT
+ .SubTypeXML = CSTR_SUBISSUE_ATTRIBUTES
+ .locationXML = .CXMLLocationSheet
+
+ .SubLocation = myName
+ '.Line = myCell.row
+ '.column = Chr(myCell.column + 65 - 1)
+
+ Dim noteCount As Long
+ noteCount = 0
+
+ If myCellAttri.LineStyle > 0 Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_LINE_STYLE
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_DASHED_DOT
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_CELLS
+ .Values.Add myCellAttri.LineStyle
+ AddIssueDetailsNote myIssue, noteCount, RID_STR_EXCEL_NOTE_CELL_ATTRIBUTES_3
+ noteCount = noteCount + 1
+ End If
+ If myCellAttri.FillPattern > 0 Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_FILL_PATTERN
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_PATTERNED
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_CELLS
+ .Values.Add myCellAttri.FillPattern
+ AddIssueDetailsNote myIssue, noteCount, RID_STR_EXCEL_NOTE_CELL_ATTRIBUTES_4
+ noteCount = noteCount + 1
+ End If
+
+
+ mAnalysis.IssuesCountArray(CID_FORMAT) = _
+ mAnalysis.IssuesCountArray(CID_FORMAT) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub CheckAllCellFunctions(CurrRange As Range, myName As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckAllCellFunctions"
+
+ Dim myCell As Range
+ Dim startTime As Single
+
+ startTime = Timer
+
+ For Each myCell In CurrRange
+ Call CheckCellFunction(myCell, myName)
+ If (Timer - gExcelMaxRangeProcessTime > startTime) Then
+ WriteDebug currentFunctionName & " : [" & myName & _
+ "]Too much time needed, abortet cell functions check (xlCellTypeFormulas)."
+ Exit For
+ End If
+ Next
+
+FinalExit:
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub CheckCellFunction(myCell As Range, myName As String)
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckCellFunction"
+
+ On Error GoTo HandleErrors
+ Dim bCellFunctionIssue As Boolean
+ Dim bCellINFOFunctionIssue As Boolean
+ Dim bCellERROR_TYPEFunctionIssue As Boolean
+ Dim bCellExternalFunctionIssue As Boolean
+ Dim bHasDateDifFunction As Boolean
+ Dim bHasPhoneticFunction As Boolean
+ Dim aFormularStr As String
+
+ aFormularStr = myCell.FormulaR1C1
+
+ If (aFormularStr = Null) Then Exit Sub
+ If (aFormularStr = "") Then Exit Sub
+
+ bCellINFOFunctionIssue = (InStr(aFormularStr, "INFO(") <> 0)
+ bCellERROR_TYPEFunctionIssue = (InStr(aFormularStr, "ERROR.TYPE(") <> 0)
+ bCellExternalFunctionIssue = (InStr(aFormularStr, ".xls!") <> 0)
+ bHasDateDifFunction = (InStr(aFormularStr, "DATEDIF(") <> 0)
+ bHasPhoneticFunction = (InStr(aFormularStr, "PHONETIC(") <> 0)
+
+ bCellFunctionIssue = bCellINFOFunctionIssue Or bCellERROR_TYPEFunctionIssue _
+ Or bCellExternalFunctionIssue Or bHasDateDifFunction Or bHasPhoneticFunction
+
+ If Not bCellFunctionIssue Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_FUNCTIONS
+ .IssueType = RID_STR_EXCEL_ISSUE_FUNCTIONS
+ .Location = .CLocationSheet
+
+ .IssueTypeXML = CSTR_ISSUE_FUNCTIONS
+ .locationXML = .CXMLLocationSheet
+
+ .SubLocation = myName
+ .Line = myCell.row
+ .column = Chr(myCell.column + 65 - 1)
+
+ Dim noteCount As Long
+ noteCount = 0
+ If bCellINFOFunctionIssue Then
+ .SubTypeXML = CSTR_SUBISSUE_INFO
+ .SubType = RID_STR_EXCEL_SUBISSUE_INFO
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_FUNCTION_STRING
+ .Values.Add myCell.FormulaR1C1
+ AddIssueDetailsNote myIssue, noteCount, RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_1
+ noteCount = noteCount + 1
+ End If
+ If bCellERROR_TYPEFunctionIssue Then
+ .SubTypeXML = CSTR_SUBISSUE_ERROR_TYPE
+ .SubType = RID_STR_EXCEL_SUBISSUE_ERROR_TYPE
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_FUNCTION_STRING
+ .Values.Add myCell.FormulaR1C1
+ AddIssueDetailsNote myIssue, noteCount, RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_2
+ noteCount = noteCount + 1
+ End If
+ If bCellExternalFunctionIssue Then
+ .SubTypeXML = CSTR_SUBISSUE_EXTERNAL
+ .SubType = RID_STR_EXCEL_SUBISSUE_EXTERNAL
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_FUNCTION_STRING
+ .Values.Add myCell.FormulaR1C1
+ AddIssueDetailsNote myIssue, noteCount, RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_3
+ noteCount = noteCount + 1
+ End If
+ If bHasDateDifFunction Then
+ .SubTypeXML = CSTR_SUBISSUE_DATEDIF
+ .SubType = RID_STR_EXCEL_SUBISSUE_DATEDIF
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_FUNCTION_STRING
+ .Values.Add myCell.FormulaR1C1
+ AddIssueDetailsNote myIssue, noteCount, RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_DATEDIF
+ noteCount = noteCount + 1
+ End If
+ If bHasPhoneticFunction Then
+ .SubTypeXML = CSTR_SUBISSUE_PHONETIC
+ .SubType = RID_STR_EXCEL_SUBISSUE_PHONETIC
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_FUNCTION_STRING
+ .Values.Add myCell.FormulaR1C1
+ AddIssueDetailsNote myIssue, noteCount, RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_PHONETIC
+ noteCount = noteCount + 1
+ End If
+
+ mAnalysis.IssuesCountArray(CID_FUNCTIONS) = _
+ mAnalysis.IssuesCountArray(CID_FUNCTIONS) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub Analyze_Password_Protection(aWB As Workbook)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Password_Protection"
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ If aWB.HasPassword Or aWB.WriteReserved Then
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_COMMON_SUBISSUE_PASSWORDS_PROTECTION
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_PASSWORD_PROTECTION
+ .locationXML = .CLocationWorkBook
+
+ .Location = .CLocationWorkBook
+
+ If aWB.HasPassword Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PASSWORD_TO_OPEN
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SET
+ End If
+ If aWB.WriteReserved Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PASSWORD_TO_MODIFY
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SET
+ End If
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+ End If
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub SetDocProperties(docAnalysis As DocumentAnalysis, wb As Workbook, fso As FileSystemObject)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetProperties"
+ Dim f As File
+ Set f = fso.GetFile(docAnalysis.name)
+
+ Const appPropertyAppName = 9
+ Const appPropertyLastAuthor = 7
+ Const appPropertyRevision = 8
+ Const appPropertyTemplate = 6
+ Const appPropertyTimeCreated = 11
+ Const appPropertyTimeLastSaved = 12
+
+ On Error Resume Next
+ docAnalysis.PageCount = wb.Sheets.count
+ docAnalysis.Created = f.DateCreated
+ docAnalysis.Modified = f.DateLastModified
+ docAnalysis.Accessed = f.DateLastAccessed
+ docAnalysis.Printed = DateValue("01/01/1900")
+ On Error GoTo HandleErrors
+
+ On Error Resume Next 'Some apps may not support all props
+ docAnalysis.Application = getAppSpecificApplicationName & " " & Application.Version
+ 'docAnalysis.Application = wb.BuiltinDocumentProperties(appPropertyAppName)
+ 'If InStr(docAnalysis.Application, "Microsoft") = 1 Then
+ ' docAnalysis.Application = Mid(docAnalysis.Application, Len("Microsoft") + 2)
+ 'End If
+ 'If InStr(Len(docAnalysis.Application) - 2, docAnalysis.Application, ".") = 0 Then
+ ' docAnalysis.Application = docAnalysis.Application & " " & Application.Version
+ 'End If
+
+ docAnalysis.SavedBy = _
+ wb.BuiltinDocumentProperties(appPropertyLastAuthor)
+ docAnalysis.Revision = _
+ val(wb.BuiltinDocumentProperties(appPropertyRevision))
+ docAnalysis.Template = _
+ fso.GetFileName(wb.BuiltinDocumentProperties(appPropertyTemplate))
+ docAnalysis.Modified = _
+ wb.BuiltinDocumentProperties(appPropertyTimeLastSaved)
+
+FinalExit:
+ Set f = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_OLEEmbedded(wrkSheet As Worksheet)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_OLEEmbedded"
+
+ ' Handle Shapes
+ Dim aShape As Shape
+ For Each aShape In wrkSheet.Shapes
+ Analyze_OLEEmbeddedSingleShape mAnalysis, aShape, wrkSheet.name
+ Analyze_Lines mAnalysis, aShape, wrkSheet.name
+ Analyze_Transparency mAnalysis, aShape, wrkSheet.name
+ Analyze_Gradients mAnalysis, aShape, wrkSheet.name
+ Next aShape
+
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub Analyze_Workbook_Protection(aWB As Workbook)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Workbook_Protection"
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+ Dim bProtectSharing As Boolean
+ Dim bProtectStructure As Boolean
+ Dim bProtectWindows As Boolean
+
+ bProtectSharing = False
+ bProtectStructure = False
+ bProtectWindows = False
+
+ If Not WorkbookProtectTest(aWB, bProtectSharing, bProtectStructure, bProtectWindows) Then
+ GoTo FinalExit
+ End If
+
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_EXCEL_SUBISSUE_WORKBOOK_PROTECTION
+ .Location = .CLocationWorkBook
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_WORKBOOK_PROTECTION
+ .locationXML = .CXMLLocationWorkBook
+
+ If bProtectSharing Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_SHARING
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SET
+ End If
+ If bProtectStructure Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_STRUCTURE
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SET
+ End If
+ If bProtectWindows Then
+ .Attributes.Add RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_WINDOWS
+ .Values.Add RID_STR_EXCEL_ATTRIBUTE_SET
+ End If
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_EXCEL_NOTE_PASSWORD_TO_OPEN
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+
+End Sub
+
+Private Function WorkbookProtectTest(aWB As Workbook, bProtectSharing As Boolean, _
+ bProtectStructure As Boolean, bProtectWindows As Boolean) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WorkbookProtectTest"
+
+ WorkbookProtectTest = False
+
+ On Error Resume Next 'Simulate Try Catch
+ aWB.UnprotectSharing sharingPassword:=" "
+ If Err.Number = 1004 Then
+ bProtectSharing = True
+ ElseIf Err.Number <> 0 Then
+ Resume HandleErrors
+ End If
+ On Error GoTo HandleErrors
+
+ On Error Resume Next 'Simulate Try Catch
+ aWB.Unprotect Password:=""
+ If Err.Number = 1004 Then
+ If aWB.ProtectStructure = True Then
+ bProtectStructure = True
+ End If
+ If aWB.ProtectWindows = True Then
+ bProtectWindows = True
+ End If
+ End If
+
+ If bProtectSharing Or bProtectStructure Or bProtectWindows Then
+ WorkbookProtectTest = True
+ End If
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+
+End Function
+
+Private Sub Class_Initialize()
+ Set mAnalysis = New DocumentAnalysis
+End Sub
+Private Sub Class_Terminate()
+ Set mAnalysis = Nothing
+End Sub
+
+Public Property Get Results() As DocumentAnalysis
+ Set Results = mAnalysis
+End Property
+Private Function FormatIssueComplex(myChart As Chart, bDataTable As Boolean, bXAxes As Boolean) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "FormatIssueComplex"
+
+ bXAxes = False
+
+ If myChart.HasDataTable Then
+ bDataTable = True
+ End If
+ If Not (IsPie(myChart) Or myChart.ChartType = xlDoughnut Or myChart.ChartType = xlBubble3DEffect) Then
+ If myChart.HasAxis(1) Then
+ If myChart.Axes(1).CategoryType = xlTimeScale Or myChart.Axes(1).CategoryType = xlAutomaticScale Then
+ bXAxes = True
+ End If
+ End If
+ End If
+ If bDataTable Or bXAxes Then
+ FormatIssueComplex = True
+ End If
+ Exit Function
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Private Function IsAreaChart(myChart As Chart) As Boolean
+
+ If (myChart.ChartType = xlArea Or myChart.ChartType = xl3DArea Or _
+ myChart.ChartType = xlAreaStacked Or _
+ myChart.ChartType = xl3DAreaStacked Or _
+ myChart.ChartType = xlAreaStacked100 Or _
+ myChart.ChartType = xl3DAreaStacked100) _
+ Then
+ IsAreaChart = True
+ Else
+ IsAreaChart = False
+ End If
+
+End Function
+
+Private Function FormatissueMinor(myChart As Chart, bUnsupportedType As Boolean, bTrendline As Boolean, bDatalabelWithLegend As Boolean, bLegendPosition As Boolean, bTitleFont As Boolean, bPiechartDirection As Boolean, bAxisInterval As Boolean) As Boolean
+On Error GoTo HandleErrors
+Dim currentFunctionName As String
+currentFunctionName = "FormatissueMinor"
+
+Dim ctype As Integer
+Dim fsize As Integer
+Dim se As Series
+Dim dl As DataLabel
+
+ FormatissueMinor = False
+ ctype = myChart.ChartType
+
+ If (ctype = xlBubble Or ctype = xlPieOfPie Or ctype = xl3DPieExploded _
+ Or ctype = xlRadarFilled Or ctype = xlBubble3DEffect _
+ Or ctype = xlRadarMarkers Or ctype = xlRadar Or ctype = xlBarOfPie _
+ Or ctype = xlXYScatter Or ctype = xlXYScatterLines Or ctype = xlXYScatterLinesNoMarkers _
+ Or ctype = xlXYScatterSmooth Or ctype = xlXYScatterSmoothNoMarkers _
+ Or ctype = xlSurface Or ctype = xlSurfaceTopView Or ctype = xlSurfaceTopViewWireframe _
+ Or ctype = xlSurfaceWireframe) Then
+ bUnsupportedType = True
+ End If
+
+ For Each se In myChart.SeriesCollection
+ On Error Resume Next ' may not have trendlines property
+ If se.Trendlines.count <> 0 Then
+ If Err.Number = 0 Then
+ bTrendline = True
+ End If
+ End If
+ If se.HasDataLabels Then
+ If Err.Number = 0 Then
+ If (IsAreaChart(myChart)) Then
+ For Each dl In se.DataLabels
+ If dl.ShowLegendKey = True Then
+ bDatalabelWithLegend = True
+ Exit For
+ End If
+ Next dl
+ Else
+ Dim pt As Point
+ For Each pt In se.Points
+ If pt.HasDataLabel Then
+ If pt.DataLabel.ShowLegendKey Then
+ bDatalabelWithLegend = True
+ Exit For
+ End If
+ End If
+ Next pt
+ End If
+ End If
+ End If
+ On Error GoTo HandleErrors
+ If bTrendline And bDatalabelWithLegend Then
+ Exit For
+ End If
+ Next se
+
+ If myChart.HasLegend Then
+ Dim legPos As Long
+ On Error Resume Next 'If legend moved accessing position will fail
+ legPos = myChart.Legend.Position
+
+ If (Err.Number <> 0) Or (legPos <> xlLegendPositionRight) Then
+ bLegendPosition = True
+ End If
+ On Error GoTo HandleErrors
+ End If
+
+ If IsPie(myChart) Then
+ bPiechartDirection = True
+ ElseIf myChart.ChartType <> xlDoughnut And myChart.ChartType <> xlBubble3DEffect Then
+ If myChart.HasAxis(xlValue, xlPrimary) Then
+ With myChart.Axes(xlValue, xlPrimary)
+ If .MajorUnitIsAuto And .MaximumScaleIsAuto And .MinimumScaleIsAuto And .MinorUnitIsAuto Then
+ bAxisInterval = True
+ End If
+ End With
+ End If
+ End If
+
+ On Error Resume Next 'If title has mixed font size accessing Font.Size will fail - Title mixed font issue
+ If myChart.HasTitle Then
+ fsize = myChart.chartTitle.Font.Size
+ If Err.Number = FontError Then
+ bTitleFont = True
+ End If
+ End If
+
+ On Error GoTo HandleErrors
+ If bUnsupportedType Or bTrendline Or bDatalabelWithLegend Or bLegendPosition Or bTitleFont Or bPiechartDirection Or bAxisInterval Then
+ FormatissueMinor = True
+ End If
+
+FinalExit:
+
+ Set se = Nothing
+ Set dl = Nothing
+ Exit Function
+
+HandleErrors:
+
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+
+End Function
+
+Private Function SeriesIssue(myChart As Chart, bSeriesChartTypeChanged As Boolean, bDatasourceNotLinkedtoCell As Boolean, bDatasourceOnDifferentSheet As Boolean, bCategoryandValue As Boolean, bCLabelMorethanOneCell As Boolean, bOneColumnRow As Boolean) As Boolean
+On Error GoTo HandleErrors
+Dim currentFunctionName As String
+currentFunctionName = "SeriesIssue"
+SeriesIssue = False
+
+Dim Num As Integer
+Dim I As Integer
+Dim i2 As Integer
+Dim formula As String
+Dim p1 As Integer, p2 As Integer
+Dim b1 As Integer, b2 As Integer
+Dim comma1 As Integer, comma2 As Integer
+Dim starty As Integer
+Dim ctype As Integer
+Dim temp As Integer
+Dim myarray() As String
+Dim Values(3), sh
+Dim chartseries As Series
+Dim b As Boolean
+Dim bmorecolumns As Boolean
+Dim c As Boolean
+
+bmorecolumns = False
+Num = myChart.SeriesCollection.count
+
+If (Num = 0) Then Exit Function
+
+ctype = myChart.SeriesCollection(1).ChartType
+I = 0
+sh = ""
+
+ReDim Preserve myarray(Num, 3)
+
+If IsPie(myChart) And Num > 1 Then 'if pie chart has more than one series,set series number to 1
+ bmorecolumns = True
+ Num = 1
+End If
+For Each chartseries In myChart.SeriesCollection
+ On Error Resume Next
+ formula = chartseries.formula
+ If Err.Number <> 0 Then
+ GoTo FinalExit
+ End If
+ If Not bSeriesChartTypeChanged Then 'check if the chart type changed
+ temp = chartseries.ChartType
+ If temp <> ctype Then
+ bSeriesChartTypeChanged = True
+ End If
+ End If
+
+ 'get each part of the formula, if it is a single range, set the value to the array
+ p1 = InStr(1, formula, "(")
+ comma1 = InStr(1, formula, ",")
+ Values(0) = Mid(formula, p1 + 1, comma1 - p1 - 1)
+
+ If Mid(formula, comma1 + 1, 1) = "(" Then
+' Multiple ranges
+ bDatasourceNotLinkedtoCell = True
+ GoTo FinalExit
+ Else
+ If Mid(formula, comma1 + 1, 1) = "{" Then
+' Literal Array
+ bDatasourceNotLinkedtoCell = True
+ GoTo FinalExit
+ Else
+' A single range
+ comma2 = InStr(comma1 + 1, formula, ",")
+ Values(1) = Mid(formula, comma1 + 1, comma2 - comma1 - 1)
+ starty = comma2
+ End If
+ End If
+
+ If Mid(formula, starty + 1, 1) = "(" Then
+' Multiple ranges
+ bDatasourceNotLinkedtoCell = True
+ GoTo FinalExit
+ Else
+ If Mid(formula, starty + 1, 1) = "{" Then
+' Literal Array
+ bDatasourceNotLinkedtoCell = True
+ GoTo FinalExit
+ Else
+' A single range
+ comma1 = starty
+ comma2 = InStr(comma1 + 1, formula, ",")
+ Values(2) = Mid(formula, comma1 + 1, comma2 - comma1 - 1)
+ End If
+ End If
+
+ If SheetCheck(sh, Values) Then 'check if data from different sheet
+ bDatasourceOnDifferentSheet = True
+ GoTo FinalExit
+ End If
+
+ For i2 = 0 To 2 'set data to myarray, if it is range, assign the range address, else null
+ If IsRange(Values(i2)) Then
+ myarray(I, i2) = Range(Values(i2)).Address
+ 'ElseIf (Not IsRange(values(i2))) And values(i2) <> "" Then
+ ' bDatasourceNotLinkedtoCell = True
+ ' myarray(i, i2) = ""
+ Else
+ bDatasourceNotLinkedtoCell = True
+ myarray(I, i2) = ""
+ End If
+ Next i2
+
+ I = I + 1
+ If bmorecolumns Then 'if it is pie chart, exit
+ Exit For
+ End If
+Next chartseries
+
+
+c = DataCheck(myarray, Num, bCategoryandValue, bCLabelMorethanOneCell, bOneColumnRow) 'check data values and category of the chart
+
+FinalExit:
+If bSeriesChartTypeChanged Or bDatasourceNotLinkedtoCell Or bDatasourceOnDifferentSheet Or bCategoryandValue Or bCLabelMorethanOneCell Or bOneColumnRow Then
+ SeriesIssue = True
+End If
+
+Last:
+ Set chartseries = Nothing
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume Last
+End Function
+
+Private Function DataCheck(myarray() As String, Num As Integer, bCategoryandValue As Boolean, bCLabelMorethanOneCell As Boolean, bOneColumnRow As Boolean)
+On Error GoTo HandleErrors
+Dim currentFunctionName As String
+currentFunctionName = "DataCheck"
+
+Dim s1() As String
+Dim v1() As String
+Dim v2() As String
+Dim c1() As String
+Dim c2() As String
+Dim bs1isrange As Boolean
+Dim bc1isrange As Boolean
+Dim bc2isrange As Boolean
+Dim j As Integer
+Dim I As Integer
+Dim btemp1 As Boolean
+Dim btemp2 As Boolean
+
+
+bs1isrange = True
+bc1isrange = True
+bc2isrange = True
+
+If myarray(0, 1) = "" Then
+ bs1isrange = False
+Else
+ s1 = SplitRange(myarray(0, 1))
+ If UBound(s1) < 4 Then
+ bOneColumnRow = True
+ GoTo FinalExit
+ End If
+ If (Asclong(s1(0)) <> Asclong(s1(2))) And (Asclong(s1(1)) <> Asclong(s1(3))) Then
+ bCLabelMorethanOneCell = True
+ GoTo FinalExit
+ End If
+
+End If
+
+If myarray(0, 0) = "" Then
+ ReDim c1(2)
+ bc1isrange = False
+ c1(0) = ""
+ c1(1) = ""
+Else
+ If InStr(1, myarray(0, 0), ":") <> 0 Then
+ bCLabelMorethanOneCell = True
+ GoTo FinalExit
+ End If
+ c1 = SplitRange(myarray(0, 0))
+End If
+v1 = SplitRange(myarray(0, 2))
+
+If bs1isrange Then
+ btemp1 = s1(0) = s1(2) And s1(1) = v1(1) And s1(3) = v1(3) And Asclong(v1(0)) >= Asclong(s1(0)) + 1 'category beside first column
+ btemp2 = s1(1) = s1(3) And s1(0) = v1(0) And s1(2) = v1(2) And Asclong(v1(1)) >= Asclong(s1(1)) + 1 'category beside first row
+ If (Not btemp1) And (Not btemp2) Then
+ bCategoryandValue = True
+ GoTo FinalExit
+ End If
+End If
+If bc1isrange Then
+ btemp1 = v1(0) = v1(2) And c1(0) = v1(0) And Asclong(c1(1)) <= Asclong(v1(1)) - 1 'data label beside row
+ btemp2 = v1(1) = v1(3) And c1(1) = v1(1) And Asclong(c1(0)) <= Asclong(v1(0)) - 1 'data label beside column
+ If (Not btemp1) And (Not btemp2) Then
+ bCategoryandValue = True
+ GoTo FinalExit
+ End If
+End If
+For I = 1 To Num - 1
+ If myarray(I, 0) = "" Then
+ ReDim c2(2)
+ c2(0) = ""
+ c2(1) = ""
+ bc2isrange = False
+ Else
+ If InStr(1, myarray(0, 1), ":") = 0 Then
+ bCLabelMorethanOneCell = True
+ GoTo FinalExit
+ End If
+ c2 = SplitRange(myarray(I, 0))
+ End If
+ v2 = SplitRange(myarray(I, 2))
+ If bc2isrange Then
+ btemp1 = v1(0) = v1(2) And c2(0) = v2(0) And Asclong(c2(1)) <= Asclong(v2(1)) - 1 'data label beside row
+ btemp2 = v2(1) = v2(3) And c2(1) = v2(1) And Asclong(c2(0)) <= Asclong(v2(0)) - 1 'data label beside column
+ If (Not btemp1) And (Not btemp2) Then
+ bCategoryandValue = True
+ GoTo FinalExit
+ 'break
+ End If
+ End If
+ If bc1isrange And bc2isrange Then
+ 'series data beside last series data in column and data label beside last series data label
+ btemp1 = v2(0) = v2(2) And Asclong(c2(0)) = Asclong(c1(0)) + 1 And c2(1) = c1(1) And Asclong(v2(0)) = Asclong(v1(0)) + 1 And v1(1) = v2(1) And v1(3) = v2(3)
+ 'series data beside last series data in row and data label beside laast series data label
+ btemp2 = v2(1) = v2(3) And c1(0) = c2(0) And Asclong(c2(1)) = Asclong(c1(1)) + 1 And Asclong(v2(1)) = Asclong(v1(1)) + 1 And v1(0) = v2(0) And v1(2) = v2(2)
+ If (Not btemp1) And (Not btemp2) Then
+ bCategoryandValue = True
+ GoTo FinalExit
+ End If
+ ElseIf Not bc2isrange Then
+ btemp1 = v2(0) = v2(2) And Asclong(v2(0)) = Asclong(v1(0)) + 1 And v1(1) = v2(1) And v1(3) = v2(3) 'series data beside last series data in column
+ btemp2 = v2(1) = v2(3) And Asclong(v2(1)) = Asclong(v1(1)) + 1 And v1(0) = v2(0) And v1(2) = v2(2) 'series data beside last series data in row
+ If (Not btemp1) And (Not btemp2) Then
+ bCategoryandValue = True
+ GoTo FinalExit
+ End If
+ End If
+ For j = 0 To 1
+ c1(j) = c2(j)
+ Next j
+ For j = 0 To 3
+ v1(j) = v2(j)
+ Next j
+ bc1isrange = bc2isrange
+ bc2isrange = True
+
+Next I
+FinalExit:
+Exit Function
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+Private Function SplitRange(a As String) As String()
+On Error GoTo HandleErrors
+Dim currentFunctionName As String
+currentFunctionName = "SplitRange"
+
+Dim c1 As Integer, c2 As Integer, c3 As Integer
+Dim start As Integer
+Dim l As Integer
+Dim rearray() As String
+
+start = 2
+If a <> "" Then
+ l = InStr(1, a, ":")
+ If l = 0 Then
+ ReDim rearray(2)
+ c1 = InStr(start, a, "$")
+ rearray(0) = Mid(a, start, c1 - start)
+ rearray(1) = Mid(a, c1 + 1, Len(a) - c1)
+ Else
+ ReDim rearray(4)
+ c1 = InStr(start, a, "$")
+ rearray(0) = Mid(a, start, c1 - start)
+ c2 = InStr(c1 + 1, a, "$")
+ rearray(1) = Mid(a, c1 + 1, c2 - c1 - 2)
+ c3 = InStr(c2 + 1, a, "$")
+ rearray(2) = Mid(a, c2 + 1, c3 - c2 - 1)
+ rearray(3) = Mid(a, c3 + 1, Len(a) - c3)
+ End If
+Else
+ ReDim rearray(4)
+ rearray(0) = ""
+ rearray(1) = ""
+ rearray(2) = ""
+ rearray(3) = ""
+End If
+SplitRange = rearray
+
+Exit Function
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+Private Function Asclong(s As String) As Integer
+On Error GoTo HandleErrors
+Dim currentFunctionName As String
+currentFunctionName = "Asclong"
+Asclong = 0
+
+Dim l As Integer
+Dim I As Integer
+Dim m As String
+
+l = Len(s)
+
+For I = 1 To l
+ m = Mid(s, I, 1)
+ Asclong = Asclong + Asc(m)
+Next I
+Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+Private Function SheetCheck(sh As Variant, Values() As Variant) As Boolean
+On Error GoTo HandleErrors
+Dim currentFunctionName As String
+currentFunctionName = "SheetCheck"
+SheetCheck = False
+
+Dim c1 As Integer
+Dim I As Integer
+
+Dim temp
+
+For I = 0 To 2
+ If IsRange(Values(I)) Then
+ c1 = InStr(1, Values(I), "!")
+ If sh = "" Then
+ sh = Mid(Values(I), 1, c1 - 1)
+ temp = Mid(Values(I), 1, c1 - 1)
+ Else
+ temp = Mid(Values(I), 1, c1 - 1)
+ End If
+ If temp <> sh Then
+ SheetCheck = True
+ Exit Function
+ End If
+ End If
+Next I
+Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+Private Function IsRange(Ref) As Boolean
+On Error GoTo HandleErrors
+Dim currentFunctionName As String
+currentFunctionName = "IsRange"
+
+Dim x As Range
+
+On Error Resume Next
+Set x = Range(Ref)
+If Err = 0 Then
+ IsRange = True
+Else
+ IsRange = False
+End If
+FinalExit:
+ Set x = Nothing
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Private Function IsPie(myChart As Chart) As Boolean
+On Error GoTo HandleErrors
+Dim currentFunctionName As String
+currentFunctionName = "IsPie"
+Dim ctype As Integer
+ IsPie = False
+
+ ctype = myChart.ChartType
+ If (ctype = xlPie) Or _
+ (ctype = xlPieExploded) Or _
+ (ctype = xlPieOfPie) Or _
+ (ctype = xl3DPie) Or _
+ (ctype = xl3DPieExploded) Then
+
+ IsPie = True
+ End If
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Private Function IsOldVersion(aFormat As XlFileFormat) As Boolean
+ Dim theResult As Boolean
+ Dim currentFunctionName As String
+ currentFunctionName = "IsOldVersion"
+
+ Select Case aFormat
+ Case xlExcel2, xlExcel2FarEast, xlExcel3, xlExcel4, xlExcel4Workbook, xlExcel5, xlExcel7
+ theResult = True
+ Case xlExcel9795, xlWorkbookNormal
+ theResult = False
+ Case Else
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": The version of this spreadsheet is not recognised"
+ End Select
+
+ IsOldVersion = theResult
+End Function
+
+
diff --git a/migrationanalysis/src/driver_docs/sources/excel/Preparation.bas b/migrationanalysis/src/driver_docs/sources/excel/Preparation.bas
new file mode 100644
index 000000000000..aba750604c3e
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/excel/Preparation.bas
@@ -0,0 +1,51 @@
+Attribute VB_Name = "Preparation"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+'Stub for Word Prepare H&F
+Function Prepare_HeaderFooter_GraphicFrames(docAnalysis As DocumentAnalysis, myIssue As IssueInfo, _
+ var As Variant, currDoc As Workbook) As Boolean
+ Prepare_HeaderFooter_GraphicFrames = False
+End Function
+
+Function Prepare_WorkbookVersion() As Boolean
+
+ ' **************************************************************************
+ ' Because the workbook version is changed when the workbook is being saved,
+ ' the actual preparation for this issue is done in the sub DoAnalyze of
+ ' the class module MigrationAnalyser when the prepared workbook is saved.
+ ' The reason for having this function is more for documentation/structural
+ ' purposes rather than actually needing the function.
+ ' **************************************************************************
+
+ Prepare_WorkbookVersion = True
+
+End Function
+
+
diff --git a/migrationanalysis/src/driver_docs/sources/excel/SetTextBoxFont.bas b/migrationanalysis/src/driver_docs/sources/excel/SetTextBoxFont.bas
new file mode 100644
index 000000000000..7338eefd92d1
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/excel/SetTextBoxFont.bas
@@ -0,0 +1,50 @@
+Attribute VB_Name = "SetTextBoxFont"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+' We change the font used for text box shapes here for the japanese
+' version, because office 2000 sometimes displays squares instead of
+' chars
+Public Sub SetTextBoxFont()
+ Dim aSheet As Worksheet
+ Dim myShape As Shape
+ Set aSheet = Sheets(1)
+
+ For Each myShape In aSheet.Shapes
+ If myShape.Type = msoTextBox Then
+ myShape.Select
+ With Selection.Characters.Font
+ .Name = "MS PGothic"
+ .Size = 10
+ End With
+ End If
+ Next myShape
+ Range("A1").Select
+End Sub
+
diff --git a/migrationanalysis/src/driver_docs/sources/excel/ThisWorkbook.cls b/migrationanalysis/src/driver_docs/sources/excel/ThisWorkbook.cls
new file mode 100644
index 000000000000..57689ef1e457
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/excel/ThisWorkbook.cls
@@ -0,0 +1,53 @@
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Public xlStrings As StringDataManager
+
+Private Sub Workbook_Open()
+ Set xlStrings = New StringDataManager
+
+ xlStrings.InitStringData (GetResourceDataFileName(ThisWorkbook.Path))
+ LoadCommonStrings xlStrings
+ LoadExcelStrings xlStrings
+ LoadResultsStrings xlStrings
+ Set xlStrings = Nothing
+
+ SetWBDriverText
+End Sub
+
+Public Sub SetWBDriverText()
+ On Error Resume Next
+ CAPP_DOCPROP_LOCATION = RID_STR_COMMON_RESULTS_LOCATION_TYPE_DOCUMENT
+ ThisWorkbook.Names("RID_STR_DVR_XL_EXCEL_DRIVER").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_EXCEL_DRIVER
+ ThisWorkbook.Names("RID_STR_DVR_XL_ISSUES").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_ISSUES
+ ThisWorkbook.Names("RID_STR_DVR_XL_PURPOSE").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_PURPOSE
+ ThisWorkbook.Names("RID_STR_DVR_XL_READ_README").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_READ_README
+ ThisWorkbook.Names("RID_STR_DVR_XL_THE_MACROS").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_THE_MACROS
+ ThisWorkbook.Names("RID_STR_DVR_XL_THIS_DOC").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_THIS_DOC
+ ThisWorkbook.Names("RID_STR_DVR_XL_TITLE").RefersToRange.Cells(1, 1) = RID_STR_DVR_XL_TITLE
+End Sub
+
diff --git a/migrationanalysis/src/driver_docs/sources/excel/excel_res.bas b/migrationanalysis/src/driver_docs/sources/excel/excel_res.bas
new file mode 100644
index 000000000000..daa8327bd875
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/excel/excel_res.bas
@@ -0,0 +1,375 @@
+Attribute VB_Name = "excel_res"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Public RID_RESXLT_COST_CHART_BarOfPie_Comment As String
+Public RID_RESXLT_COST_CHART_Bubble_Comment As String
+Public RID_RESXLT_COST_CHART_FilledRadar_Comment As String
+Public RID_RESXLT_COST_CHART_Radar_Comment As String
+Public RID_RESXLT_COST_CHART_Scattered_Comment As String
+Public RID_RESXLT_COST_CHART_Surface_Comment As String
+Public RID_RESXLT_COST_PIVOT_CalcVal_Comment As String
+Public RID_RESXLT_COST_PIVOT_ExternData_Comment As String
+Public RID_RESXLT_COST_PIVOT_ManSort_Comment As String
+Public RID_RESXLT_COST_PIVOT_MultConsRanges_Comment As String
+Public RID_RESXLT_COST_PIVOT_PivotChart_Comment As String
+Public RID_STR_EXCEL_ATTRIBUTE_AUTO As String
+Public RID_STR_EXCEL_ATTRIBUTE_AXISINTERVAL As String
+Public RID_STR_EXCEL_ATTRIBUTE_BADCHARACTER As String
+Public RID_STR_EXCEL_ATTRIBUTE_BORDER As String
+Public RID_STR_EXCEL_ATTRIBUTE_BROKEN As String
+Public RID_STR_EXCEL_ATTRIBUTE_BUILT_IN As String
+Public RID_STR_EXCEL_ATTRIBUTE_CATEGORYANDDATA As String
+Public RID_STR_EXCEL_ATTRIBUTE_CATEGORYLABEL As String
+Public RID_STR_EXCEL_ATTRIBUTE_CATEGORYLABELMORETHANONECELL As String
+Public RID_STR_EXCEL_ATTRIBUTE_CHANGED As String
+Public RID_STR_EXCEL_ATTRIBUTE_CHARTNAME As String
+Public RID_STR_EXCEL_ATTRIBUTE_CHECK_DOCUMENT_REFERENCES As String
+Public RID_STR_EXCEL_ATTRIBUTE_COLUMNBAR As String
+Public RID_STR_EXCEL_ATTRIBUTE_COMPONENT As String
+Public RID_STR_EXCEL_ATTRIBUTE_CONTROLS As String
+Public RID_STR_EXCEL_ATTRIBUTE_CUSTOM As String
+Public RID_STR_EXCEL_ATTRIBUTE_CUSTOM_FORMULA As String
+Public RID_STR_EXCEL_ATTRIBUTE_DASHED_DOT As String
+Public RID_STR_EXCEL_ATTRIBUTE_DATALABELWITHLEGEND As String
+Public RID_STR_EXCEL_ATTRIBUTE_DATASOURCE As String
+Public RID_STR_EXCEL_ATTRIBUTE_DATASOURCENOTLINKEDTOCELL As String
+Public RID_STR_EXCEL_ATTRIBUTE_DATASOURCEONDIFFERENTSHEET As String
+Public RID_STR_EXCEL_ATTRIBUTE_DATATABLE As String
+Public RID_STR_EXCEL_ATTRIBUTE_DESCRIPTION As String
+Public RID_STR_EXCEL_ATTRIBUTE_DIFFERENT As String
+Public RID_STR_EXCEL_ATTRIBUTE_DISPLAY_ZOOM As String
+Public RID_STR_EXCEL_ATTRIBUTE_FILE As String
+Public RID_STR_EXCEL_ATTRIBUTE_FILL_PATTERN As String
+Public RID_STR_EXCEL_ATTRIBUTE_FUNCTION_STRING As String
+Public RID_STR_EXCEL_ATTRIBUTE_FURTHER_MACRO_ANALYSIS_NOT_POSSIBLE As String
+Public RID_STR_EXCEL_ATTRIBUTE_GUID As String
+Public RID_STR_EXCEL_ATTRIBUTE_INCLUDING As String
+Public RID_STR_EXCEL_ATTRIBUTE_INTACT As String
+Public RID_STR_EXCEL_ATTRIBUTE_INVALIDCHARACTER As String
+Public RID_STR_EXCEL_ATTRIBUTE_IS_BROKEN As String
+Public RID_STR_EXCEL_ATTRIBUTE_LEGEND_NAME As String
+Public RID_STR_EXCEL_ATTRIBUTE_LEGENDPOSITION As String
+Public RID_STR_EXCEL_ATTRIBUTE_LINE_STYLE As String
+Public RID_STR_EXCEL_ATTRIBUTE_LIST_SOURCE As String
+Public RID_STR_EXCEL_ATTRIBUTE_MAJOR As String
+Public RID_STR_EXCEL_ATTRIBUTE_MINOR As String
+Public RID_STR_EXCEL_ATTRIBUTE_MISSING As String
+Public RID_STR_EXCEL_ATTRIBUTE_NAME As String
+Public RID_STR_EXCEL_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES As String
+Public RID_STR_EXCEL_ATTRIBUTE_NOTRIGHT As String
+Public RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_CELLS As String
+Public RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_LEGEND_ENTRIES As String
+Public RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_LINES As String
+Public RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_PIVOTFIELDS As String
+Public RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_SHEETS As String
+Public RID_STR_EXCEL_ATTRIBUTE_OBJECT_NAME As String
+Public RID_STR_EXCEL_ATTRIBUTE_OBJECT_TYPE As String
+Public RID_STR_EXCEL_ATTRIBUTE_ONECOLUMNROW As String
+Public RID_STR_EXCEL_ATTRIBUTE_PASSWORD As String
+Public RID_STR_EXCEL_ATTRIBUTE_PASSWORD_TO_MODIFY As String
+Public RID_STR_EXCEL_ATTRIBUTE_PASSWORD_TO_OPEN As String
+Public RID_STR_EXCEL_ATTRIBUTE_PATH As String
+Public RID_STR_EXCEL_ATTRIBUTE_PATTERNED As String
+Public RID_STR_EXCEL_ATTRIBUTE_PIE As String
+Public RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_NUM As String
+Public RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_VISIBLE As String
+Public RID_STR_EXCEL_ATTRIBUTE_PIVOT_TABLE_NAME As String
+Public RID_STR_EXCEL_ATTRIBUTE_PRINT_RANGE As String
+Public RID_STR_EXCEL_ATTRIBUTE_PROCEDURES As String
+Public RID_STR_EXCEL_ATTRIBUTE_PROJECT As String
+Public RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_SHARING As String
+Public RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_STRUCTURE As String
+Public RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_WINDOWS As String
+Public RID_STR_EXCEL_ATTRIBUTE_SEPARATE As String
+Public RID_STR_EXCEL_ATTRIBUTE_SERIESCHARTTYPE As String
+Public RID_STR_EXCEL_ATTRIBUTE_SET As String
+Public RID_STR_EXCEL_ATTRIBUTE_SLICES_IN_DIFFERENT_DIRECTION As String
+Public RID_STR_EXCEL_ATTRIBUTE_SOURCE As String
+Public RID_STR_EXCEL_ATTRIBUTE_TIMESCALE As String
+Public RID_STR_EXCEL_ATTRIBUTE_TITLE As String
+Public RID_STR_EXCEL_ATTRIBUTE_TITLEFONT As String
+Public RID_STR_EXCEL_ATTRIBUTE_TRENDLINE As String
+Public RID_STR_EXCEL_ATTRIBUTE_TYPE As String
+Public RID_STR_EXCEL_ATTRIBUTE_TYPELIB As String
+Public RID_STR_EXCEL_ATTRIBUTE_TYPES As String
+Public RID_STR_EXCEL_ATTRIBUTE_UNABLE_TO_ACCESS_VBPROJECT As String
+Public RID_STR_EXCEL_ATTRIBUTE_UNSUPPORTEDTYPE As String
+Public RID_STR_EXCEL_ATTRIBUTE_VALUE As String
+Public RID_STR_EXCEL_ATTRIBUTE_VBPROJECT_PASSWORD_SET As String
+Public RID_STR_EXCEL_ATTRIBUTE_DB_QUERY As String
+Public RID_STR_EXCEL_ATTRIBUTE_WORKBOOK_VERSION As String
+Public RID_STR_EXCEL_ATTRIBUTE_XAXISCATEGORY As String
+Public RID_STR_EXCEL_ENUMERATION_CUSTOM As String
+Public RID_STR_EXCEL_ENUMERATION_LINE_STYLE_CONTINUOUS As String
+Public RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DASH As String
+Public RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DASHDOT As String
+Public RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DOT As String
+Public RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DOUBLE As String
+Public RID_STR_EXCEL_ENUMERATION_LINE_STYLE_LINESTYLENONE As String
+Public RID_STR_EXCEL_ENUMERATION_LINE_STYLE_SLANTDASHDOT As String
+Public RID_STR_EXCEL_ENUMERATION_LIST As String
+Public RID_STR_EXCEL_ENUMERATION_UNKNOWN As String
+Public RID_STR_EXCEL_FALSE As String
+Public RID_STR_EXCEL_ISSUE_CHARTS_AND_TABLES As String
+Public RID_STR_EXCEL_ISSUE_FORMAT As String
+Public RID_STR_EXCEL_ISSUE_FUNCTIONS As String
+Public RID_STR_EXCEL_ISSUE_INFORMATION As String
+Public RID_STR_EXCEL_ISSUE_PORTABILITY As String
+Public RID_STR_EXCEL_ISSUE_VBA_MACROS As String
+Public RID_STR_EXCEL_NOTE_AXISINTERVAL As String
+Public RID_STR_EXCEL_NOTE_BORDER As String
+Public RID_STR_EXCEL_NOTE_CATEGORYANDDATA As String
+Public RID_STR_EXCEL_NOTE_CATEGORYLABELMORETHANONECELL As String
+Public RID_STR_EXCEL_NOTE_CELL_ATTRIBUTES_3 As String
+Public RID_STR_EXCEL_NOTE_CELL_ATTRIBUTES_4 As String
+Public RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_1 As String
+Public RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_2 As String
+Public RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_3 As String
+Public RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_DATEDIF As String
+Public RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_PHONETIC As String
+Public RID_STR_EXCEL_NOTE_COLUMNBAR As String
+Public RID_STR_EXCEL_NOTE_DATALABELWITHLEGEND As String
+Public RID_STR_EXCEL_NOTE_DATASOURCENOTLINKEDTOCELL As String
+Public RID_STR_EXCEL_NOTE_DATASOURCEONDIFFERENTSHEET As String
+Public RID_STR_EXCEL_NOTE_DATATABLE As String
+Public RID_STR_EXCEL_NOTE_DOCUMENT_PROPERTIES_1 As String
+Public RID_STR_EXCEL_NOTE_DOCUMENT_PROPERTIES_2 As String
+Public RID_STR_EXCEL_NOTE_INVALIDWORKSHEETNAME As String
+Public RID_STR_EXCEL_NOTE_LEGENDPOSITION As String
+Public RID_STR_EXCEL_NOTE_OLD_OLDWORKBOOKVERSION_PREPARABLE As String
+Public RID_STR_EXCEL_NOTE_OLDWORKBOOKVERSION As String
+Public RID_STR_EXCEL_NOTE_PASSWORD_TO_OPEN As String
+Public RID_STR_EXCEL_NOTE_SERIESCHARTTYPE As String
+Public RID_STR_EXCEL_NOTE_SHEET_LIMITS_1 As String
+Public RID_STR_EXCEL_NOTE_SHEET_LIMITS_2 As String
+Public RID_STR_EXCEL_NOTE_TITLEFONT As String
+Public RID_STR_EXCEL_NOTE_TRENDLINE As String
+Public RID_STR_EXCEL_NOTE_UNSUPPORTEDTYPE1 As String
+Public RID_STR_EXCEL_NOTE_UNSUPPORTEDTYPE2 As String
+Public RID_STR_EXCEL_NOTE_XAXISCATEGORY As String
+Public RID_STR_EXCEL_NOTE_DB_QUERY As String
+Public RID_STR_EXCEL_NOTE_ZOOM As String
+Public RID_STR_EXCEL_SUBISSUE_ATTRIBUTES As String
+Public RID_STR_EXCEL_SUBISSUE_CHART_COMPLEX As String
+Public RID_STR_EXCEL_SUBISSUE_CHART_MINOR As String
+Public RID_STR_EXCEL_SUBISSUE_EMBEDDED_CHART As String
+Public RID_STR_EXCEL_SUBISSUE_EXTERNAL As String
+Public RID_STR_EXCEL_SUBISSUE_INVALID_WORKSHEET_NAME As String
+Public RID_STR_EXCEL_SUBISSUE_MAX_SHEETS_EXCEEDED As String
+Public RID_STR_EXCEL_SUBISSUE_OLD_WORKBOOK_VERSION As String
+Public RID_STR_EXCEL_SUBISSUE_PIVOT As String
+Public RID_STR_EXCEL_SUBISSUE_SHEET_CHART As String
+Public RID_STR_EXCEL_SUBISSUE_WORKBOOK_PROTECTION As String
+Public RID_STR_EXCEL_SUBISSUE_ZOOM As String
+Public RID_STR_EXCEL_SUBLOCATION_NA As String
+Public RID_STR_EXCEL_TRUE As String
+
+'Excel Driver Strings
+Public RID_STR_DVR_XL_EXCEL_DRIVER As String
+Public RID_STR_DVR_XL_ISSUES As String
+Public RID_STR_DVR_XL_PURPOSE As String
+Public RID_STR_DVR_XL_READ_README As String
+Public RID_STR_DVR_XL_THE_MACROS As String
+Public RID_STR_DVR_XL_THIS_DOC As String
+Public RID_STR_DVR_XL_TITLE As String
+
+Public Sub LoadExcelStrings(sdm As StringDataManager)
+ 'Excel Strings
+ sdm.InitString RID_RESXLT_COST_CHART_BarOfPie_Comment, "RID_RESXLT_COST_CHART_BarOfPie_Comment"
+ sdm.InitString RID_RESXLT_COST_CHART_Bubble_Comment, "RID_RESXLT_COST_CHART_Bubble_Comment"
+ sdm.InitString RID_RESXLT_COST_CHART_FilledRadar_Comment, "RID_RESXLT_COST_CHART_FilledRadar_Comment"
+ sdm.InitString RID_RESXLT_COST_CHART_Radar_Comment, "RID_RESXLT_COST_CHART_Radar_Comment"
+ sdm.InitString RID_RESXLT_COST_CHART_Scattered_Comment, "RID_RESXLT_COST_CHART_Scattered_Comment"
+ sdm.InitString RID_RESXLT_COST_CHART_Surface_Comment, "RID_RESXLT_COST_CHART_Surface_Comment"
+ sdm.InitString RID_RESXLT_COST_PIVOT_CalcVal_Comment, "RID_RESXLT_COST_PIVOT_CalcVal_Comment"
+ sdm.InitString RID_RESXLT_COST_PIVOT_ExternData_Comment, "RID_RESXLT_COST_PIVOT_ExternData_Comment"
+ sdm.InitString RID_RESXLT_COST_PIVOT_ManSort_Comment, "RID_RESXLT_COST_PIVOT_ManSort_Comment"
+ sdm.InitString RID_RESXLT_COST_PIVOT_MultConsRanges_Comment, "RID_RESXLT_COST_PIVOT_MultConsRanges_Comment"
+ sdm.InitString RID_RESXLT_COST_PIVOT_PivotChart_Comment, "RID_RESXLT_COST_PIVOT_PivotChart_Comment"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_AUTO, "RID_STR_EXCEL_ATTRIBUTE_AUTO"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_AXISINTERVAL, "RID_STR_EXCEL_ATTRIBUTE_AXISINTERVAL"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_BADCHARACTER, "RID_STR_EXCEL_ATTRIBUTE_BADCHARACTER"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_BORDER, "RID_STR_EXCEL_ATTRIBUTE_BORDER"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_BROKEN, "RID_STR_EXCEL_ATTRIBUTE_BROKEN"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_BUILT_IN, "RID_STR_EXCEL_ATTRIBUTE_BUILT_IN"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_CATEGORYANDDATA, "RID_STR_EXCEL_ATTRIBUTE_CATEGORYANDDATA"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_CATEGORYLABEL, "RID_STR_EXCEL_ATTRIBUTE_CATEGORYLABEL"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_CATEGORYLABELMORETHANONECELL, "RID_STR_EXCEL_ATTRIBUTE_CATEGORYLABELMORETHANONECELL"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_CHANGED, "RID_STR_EXCEL_ATTRIBUTE_CHANGED"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_CHARTNAME, "RID_STR_EXCEL_ATTRIBUTE_CHARTNAME"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_CHECK_DOCUMENT_REFERENCES, "RID_STR_EXCEL_ATTRIBUTE_CHECK_DOCUMENT_REFERENCES"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_COLUMNBAR, "RID_STR_EXCEL_ATTRIBUTE_COLUMNBAR"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_COMPONENT, "RID_STR_EXCEL_ATTRIBUTE_COMPONENT"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_CONTROLS, "RID_STR_EXCEL_ATTRIBUTE_CONTROLS"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_CUSTOM, "RID_STR_EXCEL_ATTRIBUTE_CUSTOM"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_CUSTOM_FORMULA, "RID_STR_EXCEL_ATTRIBUTE_CUSTOM_FORMULA"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_DASHED_DOT, "RID_STR_EXCEL_ATTRIBUTE_DASHED_DOT"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_DATALABELWITHLEGEND, "RID_STR_EXCEL_ATTRIBUTE_DATALABELWITHLEGEND"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_DATASOURCE, "RID_STR_EXCEL_ATTRIBUTE_DATASOURCE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_DATASOURCENOTLINKEDTOCELL, "RID_STR_EXCEL_ATTRIBUTE_DATASOURCENOTLINKEDTOCELL"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_DATASOURCEONDIFFERENTSHEET, "RID_STR_EXCEL_ATTRIBUTE_DATASOURCEONDIFFERENTSHEET"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_DATATABLE, "RID_STR_EXCEL_ATTRIBUTE_DATATABLE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_DESCRIPTION, "RID_STR_EXCEL_ATTRIBUTE_DESCRIPTION"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_DIFFERENT, "RID_STR_EXCEL_ATTRIBUTE_DIFFERENT"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_DISPLAY_ZOOM, "RID_STR_EXCEL_ATTRIBUTE_DISPLAY_ZOOM"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_FILE, "RID_STR_EXCEL_ATTRIBUTE_FILE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_FILL_PATTERN, "RID_STR_EXCEL_ATTRIBUTE_FILL_PATTERN"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_FUNCTION_STRING, "RID_STR_EXCEL_ATTRIBUTE_FUNCTION_STRING"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_FURTHER_MACRO_ANALYSIS_NOT_POSSIBLE, "RID_STR_EXCEL_ATTRIBUTE_FURTHER_MACRO_ANALYSIS_NOT_POSSIBLE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_GUID, "RID_STR_EXCEL_ATTRIBUTE_GUID"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_INCLUDING, "RID_STR_EXCEL_ATTRIBUTE_INCLUDING"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_INTACT, "RID_STR_EXCEL_ATTRIBUTE_INTACT"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_INVALIDCHARACTER, "RID_STR_EXCEL_ATTRIBUTE_INVALIDCHARACTER"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_IS_BROKEN, "RID_STR_EXCEL_ATTRIBUTE_IS_BROKEN"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_LEGEND_NAME, "RID_STR_EXCEL_ATTRIBUTE_LEGEND_NAME"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_LEGENDPOSITION, "RID_STR_EXCEL_ATTRIBUTE_LEGENDPOSITION"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_LINE_STYLE, "RID_STR_EXCEL_ATTRIBUTE_LINE_STYLE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_LIST_SOURCE, "RID_STR_EXCEL_ATTRIBUTE_LIST_SOURCE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_MAJOR, "RID_STR_EXCEL_ATTRIBUTE_MAJOR"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_MINOR, "RID_STR_EXCEL_ATTRIBUTE_MINOR"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_MISSING, "RID_STR_EXCEL_ATTRIBUTE_MISSING"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_NAME, "RID_STR_EXCEL_ATTRIBUTE_NAME"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES, "RID_STR_EXCEL_ATTRIBUTE_NON_PORTABLE_EXTERNAL_REFERENCES"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_NOTRIGHT, "RID_STR_EXCEL_ATTRIBUTE_NOTRIGHT"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_CELLS, "RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_CELLS"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_LEGEND_ENTRIES, "RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_LEGEND_ENTRIES"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_LINES, "RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_LINES"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_PIVOTFIELDS, "RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_PIVOTFIELDS"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_SHEETS, "RID_STR_EXCEL_ATTRIBUTE_NUMBER_OF_SHEETS"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_OBJECT_NAME, "RID_STR_EXCEL_ATTRIBUTE_OBJECT_NAME"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_OBJECT_TYPE, "RID_STR_EXCEL_ATTRIBUTE_OBJECT_TYPE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_ONECOLUMNROW, "RID_STR_EXCEL_ATTRIBUTE_ONECOLUMNROW"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PASSWORD, "RID_STR_EXCEL_ATTRIBUTE_PASSWORD"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PASSWORD_TO_MODIFY, "RID_STR_EXCEL_ATTRIBUTE_PASSWORD_TO_MODIFY"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PASSWORD_TO_OPEN, "RID_STR_EXCEL_ATTRIBUTE_PASSWORD_TO_OPEN"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PATH, "RID_STR_EXCEL_ATTRIBUTE_PATH"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PATTERNED, "RID_STR_EXCEL_ATTRIBUTE_PATTERNED"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PIE, "RID_STR_EXCEL_ATTRIBUTE_PIE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_NUM, "RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_NUM"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_VISIBLE, "RID_STR_EXCEL_ATTRIBUTE_PIVOT_FIELDS_VISIBLE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PIVOT_TABLE_NAME, "RID_STR_EXCEL_ATTRIBUTE_PIVOT_TABLE_NAME"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PRINT_RANGE, "RID_STR_EXCEL_ATTRIBUTE_PRINT_RANGE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PROCEDURES, "RID_STR_EXCEL_ATTRIBUTE_PROCEDURES"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PROJECT, "RID_STR_EXCEL_ATTRIBUTE_PROJECT"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_SHARING, "RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_SHARING"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_STRUCTURE, "RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_STRUCTURE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_WINDOWS, "RID_STR_EXCEL_ATTRIBUTE_PROTECT_TYPE_WINDOWS"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_SEPARATE, "RID_STR_EXCEL_ATTRIBUTE_SEPARATE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_SERIESCHARTTYPE, "RID_STR_EXCEL_ATTRIBUTE_SERIESCHARTTYPE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_SET, "RID_STR_EXCEL_ATTRIBUTE_SET"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_SLICES_IN_DIFFERENT_DIRECTION, "RID_STR_EXCEL_ATTRIBUTE_SLICES_IN_DIFFERENT_DIRECTION"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_SOURCE, "RID_STR_EXCEL_ATTRIBUTE_SOURCE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_TIMESCALE, "RID_STR_EXCEL_ATTRIBUTE_TIMESCALE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_TITLE, "RID_STR_EXCEL_ATTRIBUTE_TITLE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_TITLEFONT, "RID_STR_EXCEL_ATTRIBUTE_TITLEFONT"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_TRENDLINE, "RID_STR_EXCEL_ATTRIBUTE_TRENDLINE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_TYPE, "RID_STR_EXCEL_ATTRIBUTE_TYPE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_TYPELIB, "RID_STR_EXCEL_ATTRIBUTE_TYPELIB"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_TYPES, "RID_STR_EXCEL_ATTRIBUTE_TYPES"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_UNABLE_TO_ACCESS_VBPROJECT, "RID_STR_EXCEL_ATTRIBUTE_UNABLE_TO_ACCESS_VBPROJECT"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_UNSUPPORTEDTYPE, "RID_STR_EXCEL_ATTRIBUTE_UNSUPPORTEDTYPE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_VALUE, "RID_STR_EXCEL_ATTRIBUTE_VALUE"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_VBPROJECT_PASSWORD_SET, "RID_STR_EXCEL_ATTRIBUTE_VBPROJECT_PASSWORD_SET"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_DB_QUERY, "RID_STR_EXCEL_ATTRIBUTE_DB_QUERY"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_WORKBOOK_VERSION, "RID_STR_EXCEL_ATTRIBUTE_WORKBOOK_VERSION"
+ sdm.InitString RID_STR_EXCEL_ATTRIBUTE_XAXISCATEGORY, "RID_STR_EXCEL_ATTRIBUTE_XAXISCATEGORY"
+ sdm.InitString RID_STR_EXCEL_ENUMERATION_CUSTOM, "RID_STR_EXCEL_ENUMERATION_CUSTOM"
+ sdm.InitString RID_STR_EXCEL_ENUMERATION_LINE_STYLE_CONTINUOUS, "RID_STR_EXCEL_ENUMERATION_LINE_STYLE_CONTINUOUS"
+ sdm.InitString RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DASH, "RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DASH"
+ sdm.InitString RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DASHDOT, "RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DASHDOT"
+ sdm.InitString RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DOT, "RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DOT"
+ sdm.InitString RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DOUBLE, "RID_STR_EXCEL_ENUMERATION_LINE_STYLE_DOUBLE"
+ sdm.InitString RID_STR_EXCEL_ENUMERATION_LINE_STYLE_LINESTYLENONE, "RID_STR_EXCEL_ENUMERATION_LINE_STYLE_LINESTYLENONE"
+ sdm.InitString RID_STR_EXCEL_ENUMERATION_LINE_STYLE_SLANTDASHDOT, "RID_STR_EXCEL_ENUMERATION_LINE_STYLE_SLANTDASHDOT"
+ sdm.InitString RID_STR_EXCEL_ENUMERATION_LIST, "RID_STR_EXCEL_ENUMERATION_LIST"
+ sdm.InitString RID_STR_EXCEL_ENUMERATION_UNKNOWN, "RID_STR_EXCEL_ENUMERATION_UNKNOWN"
+ sdm.InitString RID_STR_EXCEL_FALSE, "RID_STR_EXCEL_FALSE"
+ sdm.InitString RID_STR_EXCEL_ISSUE_CHARTS_AND_TABLES, "RID_STR_EXCEL_ISSUE_CHARTS_AND_TABLES"
+ sdm.InitString RID_STR_EXCEL_ISSUE_FORMAT, "RID_STR_EXCEL_ISSUE_FORMAT"
+ sdm.InitString RID_STR_EXCEL_ISSUE_FUNCTIONS, "RID_STR_EXCEL_ISSUE_FUNCTIONS"
+ sdm.InitString RID_STR_EXCEL_ISSUE_INFORMATION, "RID_STR_EXCEL_ISSUE_INFORMATION"
+ sdm.InitString RID_STR_EXCEL_ISSUE_PORTABILITY, "RID_STR_EXCEL_ISSUE_PORTABILITY"
+ sdm.InitString RID_STR_EXCEL_ISSUE_VBA_MACROS, "RID_STR_EXCEL_ISSUE_VBA_MACROS"
+ sdm.InitString RID_STR_EXCEL_NOTE_AXISINTERVAL, "RID_STR_EXCEL_NOTE_AXISINTERVAL"
+ sdm.InitString RID_STR_EXCEL_NOTE_BORDER, "RID_STR_EXCEL_NOTE_BORDER"
+ sdm.InitString RID_STR_EXCEL_NOTE_CATEGORYANDDATA, "RID_STR_EXCEL_NOTE_CATEGORYANDDATA"
+ sdm.InitString RID_STR_EXCEL_NOTE_CATEGORYLABELMORETHANONECELL, "RID_STR_EXCEL_NOTE_CATEGORYLABELMORETHANONECELL"
+ sdm.InitString RID_STR_EXCEL_NOTE_CELL_ATTRIBUTES_3, "RID_STR_EXCEL_NOTE_CELL_ATTRIBUTES_3"
+ sdm.InitString RID_STR_EXCEL_NOTE_CELL_ATTRIBUTES_4, "RID_STR_EXCEL_NOTE_CELL_ATTRIBUTES_4"
+ sdm.InitString RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_1, "RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_1"
+ sdm.InitString RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_2, "RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_2"
+ sdm.InitString RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_3, "RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_3"
+ sdm.InitString RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_DATEDIF, "RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_DATEDIF"
+ sdm.InitString RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_PHONETIC, "RID_STR_EXCEL_NOTE_CELL_FUNCTIONS_PHONETIC"
+ sdm.InitString RID_STR_EXCEL_NOTE_COLUMNBAR, "RID_STR_EXCEL_NOTE_COLUMNBAR"
+ sdm.InitString RID_STR_EXCEL_NOTE_DATALABELWITHLEGEND, "RID_STR_EXCEL_NOTE_DATALABELWITHLEGEND"
+ sdm.InitString RID_STR_EXCEL_NOTE_DATASOURCENOTLINKEDTOCELL, "RID_STR_EXCEL_NOTE_DATASOURCENOTLINKEDTOCELL"
+ sdm.InitString RID_STR_EXCEL_NOTE_DATASOURCEONDIFFERENTSHEET, "RID_STR_EXCEL_NOTE_DATASOURCEONDIFFERENTSHEET"
+ sdm.InitString RID_STR_EXCEL_NOTE_DATATABLE, "RID_STR_EXCEL_NOTE_DATATABLE"
+ sdm.InitString RID_STR_EXCEL_NOTE_DOCUMENT_PROPERTIES_1, "RID_STR_EXCEL_NOTE_DOCUMENT_PROPERTIES_1"
+ sdm.InitString RID_STR_EXCEL_NOTE_DOCUMENT_PROPERTIES_2, "RID_STR_EXCEL_NOTE_DOCUMENT_PROPERTIES_2"
+ sdm.InitString RID_STR_EXCEL_NOTE_INVALIDWORKSHEETNAME, "RID_STR_EXCEL_NOTE_INVALIDWORKSHEETNAME"
+ sdm.InitString RID_STR_EXCEL_NOTE_LEGENDPOSITION, "RID_STR_EXCEL_NOTE_LEGENDPOSITION"
+ sdm.InitString RID_STR_EXCEL_NOTE_OLD_OLDWORKBOOKVERSION_PREPARABLE, "RID_STR_EXCEL_NOTE_OLD_OLDWORKBOOKVERSION_PREPARABLE"
+ sdm.InitString RID_STR_EXCEL_NOTE_OLDWORKBOOKVERSION, "RID_STR_EXCEL_NOTE_OLDWORKBOOKVERSION"
+ sdm.InitString RID_STR_EXCEL_NOTE_PASSWORD_TO_OPEN, "RID_STR_EXCEL_NOTE_PASSWORD_TO_OPEN"
+ sdm.InitString RID_STR_EXCEL_NOTE_SERIESCHARTTYPE, "RID_STR_EXCEL_NOTE_SERIESCHARTTYPE"
+ sdm.InitString RID_STR_EXCEL_NOTE_SHEET_LIMITS_1, "RID_STR_EXCEL_NOTE_SHEET_LIMITS_1"
+ sdm.InitString RID_STR_EXCEL_NOTE_SHEET_LIMITS_2, "RID_STR_EXCEL_NOTE_SHEET_LIMITS_2"
+ sdm.InitString RID_STR_EXCEL_NOTE_TITLEFONT, "RID_STR_EXCEL_NOTE_TITLEFONT"
+ sdm.InitString RID_STR_EXCEL_NOTE_TRENDLINE, "RID_STR_EXCEL_NOTE_TRENDLINE"
+ sdm.InitString RID_STR_EXCEL_NOTE_UNSUPPORTEDTYPE1, "RID_STR_EXCEL_NOTE_UNSUPPORTEDTYPE1"
+ sdm.InitString RID_STR_EXCEL_NOTE_UNSUPPORTEDTYPE2, "RID_STR_EXCEL_NOTE_UNSUPPORTEDTYPE2"
+ sdm.InitString RID_STR_EXCEL_NOTE_XAXISCATEGORY, "RID_STR_EXCEL_NOTE_XAXISCATEGORY"
+ sdm.InitString RID_STR_EXCEL_NOTE_DB_QUERY, "RID_STR_EXCEL_NOTE_DB_QUERY"
+ sdm.InitString RID_STR_EXCEL_NOTE_ZOOM, "RID_STR_EXCEL_NOTE_ZOOM"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_ATTRIBUTES, "RID_STR_EXCEL_SUBISSUE_ATTRIBUTES"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_CHART_COMPLEX, "RID_STR_EXCEL_SUBISSUE_CHART_COMPLEX"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_CHART_MINOR, "RID_STR_EXCEL_SUBISSUE_CHART_MINOR"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_EMBEDDED_CHART, "RID_STR_EXCEL_SUBISSUE_EMBEDDED_CHART"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_EXTERNAL, "RID_STR_EXCEL_SUBISSUE_EXTERNAL"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_INVALID_WORKSHEET_NAME, "RID_STR_EXCEL_SUBISSUE_INVALID_WORKSHEET_NAME"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_MAX_SHEETS_EXCEEDED, "RID_STR_EXCEL_SUBISSUE_MAX_SHEETS_EXCEEDED"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_OLD_WORKBOOK_VERSION, "RID_STR_EXCEL_SUBISSUE_OLD_WORKBOOK_VERSION"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_PIVOT, "RID_STR_EXCEL_SUBISSUE_PIVOT"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_SHEET_CHART, "RID_STR_EXCEL_SUBISSUE_SHEET_CHART"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_WORKBOOK_PROTECTION, "RID_STR_EXCEL_SUBISSUE_WORKBOOK_PROTECTION"
+ sdm.InitString RID_STR_EXCEL_SUBISSUE_ZOOM, "RID_STR_EXCEL_SUBISSUE_ZOOM"
+ sdm.InitString RID_STR_EXCEL_SUBLOCATION_NA, "RID_STR_EXCEL_SUBLOCATION_NA"
+ sdm.InitString RID_STR_EXCEL_TRUE, "RID_STR_EXCEL_TRUE"
+
+ 'Excel Driver Strings
+ sdm.InitString RID_STR_DVR_XL_EXCEL_DRIVER, "RID_STR_DVR_XL_EXCEL_DRIVER"
+ sdm.InitString RID_STR_DVR_XL_ISSUES, "RID_STR_DVR_XL_ISSUES"
+ sdm.InitString RID_STR_DVR_XL_PURPOSE, "RID_STR_DVR_XL_PURPOSE"
+ sdm.InitString RID_STR_DVR_XL_READ_README, "RID_STR_DVR_XL_READ_README"
+ sdm.InitString RID_STR_DVR_XL_THE_MACROS, "RID_STR_DVR_XL_THE_MACROS"
+ sdm.InitString RID_STR_DVR_XL_THIS_DOC, "RID_STR_DVR_XL_THIS_DOC"
+ sdm.InitString RID_STR_DVR_XL_TITLE, "RID_STR_DVR_XL_TITLE"
+End Sub
+
diff --git a/migrationanalysis/src/driver_docs/sources/powerpoint/ApplicationSpecific.bas b/migrationanalysis/src/driver_docs/sources/powerpoint/ApplicationSpecific.bas
new file mode 100644
index 000000000000..c91444949a03
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/powerpoint/ApplicationSpecific.bas
@@ -0,0 +1,176 @@
+Attribute VB_Name = "ApplicationSpecific"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+'*** Do NOT add any new categories - use those listed below or else the results spreadsheet and
+'*** issues list will be out of sync
+Public Const GlbPowerPoint = True
+
+'** Issue Categories
+Public Const CID_INFORMATION_REFS = 0
+Public Const CID_ACTION_SETTINGS = 1
+Public Const CID_CONTENT_AND_DOCUMENT_PROPERTIES = 2
+Public Const CID_FIELDS = 3
+Public Const CID_FORMAT = 4
+Public Const CID_NOTES_AND_HANDOUTS = 5
+Public Const CID_OBJECTS_GRAPHICS_TEXTBOXES = 6
+Public Const CID_PORTABILITY = 7
+Public Const CID_VBA_MACROS = 8
+Public Const CTOTAL_CATEGORIES = 8
+
+'** PP - XML Issue and SubIssue strings
+Public Const CSTR_ISSUE_OBJECTS_GRAPHICS_AND_TEXTBOXES = "ObjectsGraphicsAndTextboxes"
+
+Public Const CSTR_SUBISSUE_COMMENT = "Comment"
+Public Const CSTR_SUBISSUE_MOVIE = "Movie"
+Public Const CSTR_SUBISSUE_BACKGROUND = "Background"
+Public Const CSTR_SUBISSUE_NUMBERING = "Numbering"
+Public Const CSTR_SUBISSUE_HYPERLINK = "Hyperlink"
+Public Const CSTR_SUBISSUE_HYPERLINK_SPLIT = "HyperlinkSplit"
+Public Const CSTR_SUBISSUE_TEMPLATE = "Template"
+Public Const CSTR_SUBISSUE_TABSTOP = "Tabstop"
+Public Const CSTR_SUBISSUE_FONTS = "Fonts"
+
+'** END PP - XML Issue and SubIssue strings
+
+Public Const CAPPNAME_WORD = "Word"
+'Public Const CAPPNAME_WORD_DOC = ".doc"
+'Public Const CAPPNAME_WORD_DOT = ".dot"
+
+Public Const CAPPNAME_EXCEL = "Excel"
+'Public Const CAPPNAME_EXCEL_DOC = ".xls"
+'Public Const CAPPNAME_EXCEL_DOT = ".xlt"
+
+Public Const CAPPNAME_POWERPOINT = "PowerPoint"
+Public Const CAPPNAME_PP_DOC = ".ppt"
+Public Const CAPPNAME_PP_DOT = ".pot"
+
+'Public Const CAPP_DOCPROP_LOCATION = "Document"
+'Public Const CAPP_DOCPROP_LOCATION = "Workbook"
+Public CAPP_DOCPROP_LOCATION As String
+
+
+'Public Const CAPP_XMLDOCPROP_LOCATION = "Document"
+'Public Const CAPP_XMLDOCPROP_LOCATION = "Workbook"
+Public Const CAPP_XMLDOCPROP_LOCATION = "Presentation"
+
+Public Const CTHIS_DOCUMENT = "ThisDocument"
+Public Const CTOPLEVEL_PROJECT = "Project"
+
+Const CSTART_DIR = 1
+Const CSTORE_TO_DIR = 2
+Const CRESULTS_FILE = 3
+Const CRESULTS_TEMPALTE = 4
+Const COVERWRITE_FILE = 5
+Const CNEW_RESULTS_FILE = 6
+Const CDOCUMENT = 7
+Const CTEMPLATE = 8
+Const CINCLUDE_SUBDIRS = 9
+Const CLOG_FILE = 10
+Const CDEBUG_LEVEL = 11
+
+Public Function getAppSpecificDocExt() As String
+ getAppSpecificDocExt = CAPPNAME_PP_DOC
+End Function
+Public Function getAppSpecificTemplateExt() As String
+ getAppSpecificTemplateExt = CAPPNAME_PP_DOT
+End Function
+
+Public Function getAppSpecificPath() As String
+ getAppSpecificPath = ActivePresentation.path
+End Function
+Public Function getAppSpecificApplicationName() As String
+ getAppSpecificApplicationName = CAPPNAME_POWERPOINT
+End Function
+
+Public Function getAppSpecificCustomDocProperties(currDoc As Presentation) As DocumentProperties
+ Set getAppSpecificCustomDocProperties = currDoc.CustomDocumentProperties
+End Function
+Public Function getAppSpecificCommentBuiltInDocProperty(currDoc As Presentation) As DocumentProperty
+ Set getAppSpecificCommentBuiltInDocProperty = currDoc.BuiltInDocumentProperties("Comments")
+End Function
+
+Public Function getAppSpecificVBProject(currDoc as Presentation) As VBProject
+ Set getAppSpecificVBProject = currDoc.VBProject
+End Function
+
+Public Function getAppSpecificOLEClassType(aShape As Shape) As String
+ getAppSpecificOLEClassType = aShape.OLEFormat.ProgID
+End Function
+
+' Workaround as it does not seem to be possible to shut down PP
+' from VB app
+Public Sub QuitPowerPoint()
+ Dim I As Integer
+ On Error Resume Next
+ With Application.Presentations
+ For I = .count To 1 Step -1
+ .item(I).Close
+ Next
+ End With
+ Application.Quit
+End Sub
+
+Public Sub SetAppToMinimized()
+ Application.WindowState = ppWindowMinimized
+End Sub
+
+Public Sub LocalizeResources()
+ On Error GoTo ErrorHandler
+ Dim ppStrings As StringDataManager
+ Set ppStrings = New StringDataManager
+ Dim aPres As Presentation
+ Set aPres = Presentations("_OOoDocAnalysisPPTDriver.ppt")
+ ppStrings.InitStringData (GetResourceDataFileName(aPres.path))
+ LoadCommonStrings ppStrings
+ LoadPPStrings ppStrings
+ LoadResultsStrings ppStrings
+ Set ppStrings = Nothing
+
+ SetPPDriverText
+FinalExit:
+ Exit Sub
+ErrorHandler:
+ WriteDebug "Presentation_Open : " & Err.Number & " : " & Err.Description
+ GoTo FinalExit
+End Sub
+
+Sub SetPPDriverText()
+ On Error Resume Next
+ CAPP_DOCPROP_LOCATION = RID_STR_COMMON_RESULTS_LOCATION_TYPE_PRESENTATION
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT2").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT2
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT3").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT3
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT4").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT4
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT5").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT5
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT6").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT6
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT7").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT7
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT8").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT8
+End Sub
+
+
diff --git a/migrationanalysis/src/driver_docs/sources/powerpoint/Loader.bas b/migrationanalysis/src/driver_docs/sources/powerpoint/Loader.bas
new file mode 100644
index 000000000000..9ffc880ce9ae
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/powerpoint/Loader.bas
@@ -0,0 +1,62 @@
+Attribute VB_Name = "Loader"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+Public ppStrings As StringDataManager
+
+Public Sub Presentation_Open()
+ On Error GoTo ErrorHandler
+ Set ppStrings = New StringDataManager
+ Dim aPres As Presentation
+ Set aPres = Presentations("_OOoDocAnalysisPPTDriver.ppt")
+ ppStrings.InitStringData (GetResourceDataFileName(aPres.path))
+ LoadCommonStrings ppStrings
+ LoadPPStrings ppStrings
+ LoadResultsStrings ppStrings
+ Set ppStrings = Nothing
+
+ SetPPDriverText
+FinalExit:
+ Exit Sub
+ErrorHandler:
+ WriteDebug "Presentation_Open : " & Err.Number & " : " & Err.Description
+ GoTo FinalExit
+End Sub
+
+Sub SetPPDriverText()
+ On Error Resume Next
+ CAPP_DOCPROP_LOCATION = RID_STR_COMMON_RESULTS_LOCATION_TYPE_PRESENTATION
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT2").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT2
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT3").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT3
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT4").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT4
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT5").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT5
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT6").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT6
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT7").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT7
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT8").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT8
+End Sub
diff --git a/migrationanalysis/src/driver_docs/sources/powerpoint/MigrationAnalyser.cls b/migrationanalysis/src/driver_docs/sources/powerpoint/MigrationAnalyser.cls
new file mode 100644
index 000000000000..195f87d439a9
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/powerpoint/MigrationAnalyser.cls
@@ -0,0 +1,824 @@
+VERSION 1.0 CLASS
+BEGIN
+ MultiUse = -1 'True
+END
+Attribute VB_Name = "MigrationAnalyser"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = False
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+
+Private mAnalysis As DocumentAnalysis
+
+'***ADDING-ISSUE: Use Following Skeleton as Guideline for Adding Issue
+' For complete list of all RID_STR_... for Issues (IssueType), SubIssues (SubType) and Attributes refer to:
+' powerpoint_res.bas and common_res.bas
+'
+' For complete list of all CID_... for Issue Categories(IssueID) and
+' CSTR_... for XML Issues (IssueTypeXML) and XML SubIssues (SubTypeXML) refer to:
+' ApplicationSpecific.bas and CommonMigrationAnalyser.bas
+'
+' You should not have to add any new Issue Categories or matching IssueTypes, only new SubIssues
+Sub Analyze_SKELETON()
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_SKELETON"
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_VBA_MACROS 'Issue Category
+ .IssueType = RID_STR_COMMON_ISSUE_VBA_MACROS 'Issue String
+ .SubType = RID_STR_COMMON_SUBISSUE_PROPERTIES 'SubIssue String
+ .Location = .CLocationDocument 'Location string
+
+ .IssueTypeXML = CSTR_ISSUE_VBA_MACROS 'Non localised XML Issue String
+ .SubTypeXML = CSTR_SUBISSUE_PROPERTIES 'Non localised XML SubIssue String
+ .locationXML = .CXMLLocationDocument 'Non localised XML location
+
+ .SubLocation = 0 'if not set will default to RID_STR_NOT_AVAILABLE_SHORTHAND
+ .Line = 0 'if not set will default to RID_STR_NOT_AVAILABLE_SHORTHAND
+ .column = 0 'if not set will default to RID_STR_NOT_AVAILABLE_SHORTHAND
+
+ ' Add as many Attribute Value pairs as needed
+ ' Note: following must always be true - Attributes.Count = Values.Count
+ .Attributes.Add "AAA"
+ .Values.Add "foobar"
+
+ ' Use AddIssueDetailsNote to add notes to the Issue Details if required
+ ' Public Sub AddIssueDetailsNote(myIssue As IssueInfo, noteNum As Long, noteStr As String, _
+ ' Optional preStr As String = RID_STR_COMMON_NOTE_PRE)
+ ' Where preStr is prepended to the output, with "Note" as the default
+ AddIssueDetailsNote myIssue, 0, RID_STR_COMMON_NOTE_DOCUMENT_PROPERTIES_LOST
+
+ mAnalysis.IssuesCountArray(CID_VBA_MACROS) = _
+ mAnalysis.IssuesCountArray(CID_VBA_MACROS) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub DoAnalyse(fileName As String, userFormTypesDict As Scripting.Dictionary, _
+ startDir As String, storeToDir As String, fso As FileSystemObject)
+ On Error GoTo HandleErrors
+ Dim containsInvalidChar As Boolean
+ containsInvalidChar = False
+ Dim currentFunctionName As String
+ currentFunctionName = "DoAnalyse"
+ mAnalysis.name = fileName
+ Dim aPres As Presentation
+ mAnalysis.TotalIssueTypes = CTOTAL_CATEGORIES
+
+ If InStr(fileName, "[") = 0 And InStr(fileName, "]") = 0 Then 'If fileName does not contain [ AND ]
+ containsInvalidChar = False
+ Else
+ containsInvalidChar = True
+ End If
+
+ 'Cannot Turn off any AutoExce macros before loading the Presentation
+ 'WordBasic.DisableAutoMacros 1
+ 'On Error GoTo HandleErrors
+
+ On Error Resume Next ' Ignore errors on setting
+ If containsInvalidChar = True Then
+ GoTo HandleErrors
+ End If
+ Set aPres = Presentations.Open(fileName:=fileName, ReadOnly:=True)
+ If Err.Number <> 0 Then
+ mAnalysis.Application = RID_STR_COMMON_CANNOT_OPEN
+ GoTo HandleErrors
+ End If
+ On Error GoTo HandleErrors
+
+ 'MsgBox "Window: " & PPViewType(aPres.Windows(1).viewType) & _
+ ' " Pane: " & PPViewType(aPres.Windows(1).ActivePane.viewType)
+
+ 'Set Doc Properties
+ SetDocProperties mAnalysis, aPres, fso
+
+ Analyze_SlideIssues aPres
+ Analyze_Macros mAnalysis, userFormTypesDict, aPres
+
+ ' Doc Preparation only
+ ' Save document with any fixed issues under <storeToDir>\prepared\<source doc name>
+ If mAnalysis.PreparableIssuesCount > 0 And CheckDoPrepare Then
+ Dim preparedFullPath As String
+ preparedFullPath = GetPreparedFullPath(mAnalysis.name, startDir, storeToDir, fso)
+ If preparedFullPath <> "" Then
+ If fso.FileExists(preparedFullPath) Then
+ fso.DeleteFile preparedFullPath, True
+ End If
+ If fso.FolderExists(fso.GetParentFolderName(preparedFullPath)) Then
+ aPres.SaveAs preparedFullPath
+ End If
+ End If
+ End If
+
+FinalExit:
+ If Not aPres Is Nothing Then 'If Not IsEmpty(aDoc) Then
+ aPres.Saved = True
+ aPres.Close
+ End If
+ Set aPres = Nothing
+ Exit Sub
+
+HandleErrors:
+ If containsInvalidChar = False Then
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Else
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": The file name contains the invalid character [ or ]. Please change the file name and run analysis again."
+ End If
+ Resume FinalExit
+End Sub
+
+Sub SetDocProperties(docAnalysis As DocumentAnalysis, pres As Presentation, fso As FileSystemObject)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetDocProperties"
+ Dim f As File
+ Set f = fso.GetFile(docAnalysis.name)
+
+ Const appPropertyAppName = 9
+ Const appPropertyLastAuthor = 7
+ Const appPropertyRevision = 8
+ Const appPropertyTemplate = 6
+ Const appPropertyTimeCreated = 11
+ Const appPropertyTimeLastSaved = 12
+
+ On Error Resume Next
+ docAnalysis.PageCount = pres.Slides.count
+ docAnalysis.Created = f.DateCreated
+ docAnalysis.Modified = f.DateLastModified
+ docAnalysis.Accessed = f.DateLastAccessed
+ docAnalysis.Printed = DateValue("01/01/1900")
+
+ On Error Resume Next 'Some apps may not support all props
+ DocAnalysis.Application = getAppSpecificApplicationName & " " & Application.Version
+
+ 'docAnalysis.Application = pres.BuiltInDocumentProperties(appPropertyAppName)
+ 'If InStr(docAnalysis.Application, "Microsoft") = 1 Then
+ ' docAnalysis.Application = Mid(docAnalysis.Application, Len("Microsoft") + 2)
+ 'End If
+ 'If InStr(Len(docAnalysis.Application) - 2, docAnalysis.Application, ".") = 0 Then
+ ' docAnalysis.Application = docAnalysis.Application & " " & Application.Version
+ 'End If
+
+ docAnalysis.SavedBy = _
+ pres.BuiltInDocumentProperties(appPropertyLastAuthor)
+ docAnalysis.Revision = _
+ val(pres.BuiltInDocumentProperties(appPropertyRevision))
+ docAnalysis.Template = _
+ fso.GetFileName(pres.BuiltInDocumentProperties(appPropertyTemplate))
+
+FinalExit:
+ Set f = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Function PPViewType(viewType As PPViewType) As String
+
+ Select Case viewType
+ Case ppViewHandoutMaster
+ PPViewType = RID_STR_PP_ENUMERATION_VIEW_HANDOUT_MASTER
+ Case ppViewNormal
+ PPViewType = RID_STR_PP_ENUMERATION_VIEW_NORMAL
+ Case ppViewNotesMaster
+ PPViewType = RID_STR_PP_ENUMERATION_VIEW_NOTES_MASTER
+ Case ppViewNotesPage
+ PPViewType = RID_STR_PP_ENUMERATION_VIEW_NOTES_PAGE
+ Case ppViewOutline
+ PPViewType = RID_STR_PP_ENUMERATION_VIEW_OUTLINE
+ Case ppViewSlide
+ PPViewType = RID_STR_PP_ENUMERATION_VIEW_SLIDE
+ Case ppViewSlideMaster
+ PPViewType = RID_STR_PP_ENUMERATION_VIEW_SLIDE_MASTER
+ Case ppViewSlideSorter
+ PPViewType = RID_STR_PP_ENUMERATION_VIEW_SLIDE_SORTER
+ Case ppViewTitleMaster
+ PPViewType = RID_STR_PP_ENUMERATION_VIEW_TITLE_MASTER
+ Case Else
+ PPViewType = RID_STR_PP_ENUMERATION_UNKNOWN
+ End Select
+End Function
+
+Sub Analyze_SlideIssues(curPresentation As Presentation)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_SlideIssues"
+
+ Dim mySlide As Slide
+ Dim SlideNum As Integer
+
+ SlideNum = 1
+ For Each mySlide In curPresentation.Slides
+ ActiveWindow.View.GotoSlide index:=SlideNum
+ Analyze_ShapeIssues mySlide
+ Analyze_Hyperlinks mySlide
+ Analyze_Templates mySlide
+ SlideNum = SlideNum + 1
+ Next mySlide
+
+ Analyze_TabStops curPresentation
+
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub Analyze_TabStops(curPresentation As Presentation)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_TabStops"
+
+ 'Dim firstSlide As Slide
+ 'Dim firstShape As Shape
+ Dim mySlide As Slide
+ Dim myShape As Shape
+ Dim bInitialized, bHasDifferentDefaults As Boolean
+ Dim curDefault, lastDefault As Single
+
+ bInitialized = False
+ bHasDifferentDefaults = False
+
+ For Each mySlide In curPresentation.Slides
+ For Each myShape In mySlide.Shapes
+ If myShape.HasTextFrame Then
+ If myShape.TextFrame.HasText Then
+ curDefault = myShape.TextFrame.Ruler.TabStops.DefaultSpacing
+ If Not bInitialized Then
+ bInitialized = True
+ lastDefault = curDefault
+ 'Set firstSlide = mySlide
+ 'Set firstShape = myShape
+ End If
+ If curDefault <> lastDefault Then
+ bHasDifferentDefaults = True
+ Exit For
+ End If
+ End If
+ End If
+ Next myShape
+ If bHasDifferentDefaults Then Exit For
+ Next mySlide
+
+ If Not bHasDifferentDefaults Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_RESXLS_COST_Tabstop
+ .Location = .CLocationSlide
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_TABSTOP
+ .locationXML = .CXMLLocationSlide
+
+ .SubLocation = mySlide.name
+ .Line = myShape.top
+ .column = myShape.Left
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myShape.name
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_PP_SUBISSUE_TABSTOP_NOTE
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Fonts(curPresentation As Presentation)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Fonts"
+
+ Dim myFont As Font
+ Dim bHasEmbeddedFonts As Boolean
+
+ bHasEmbeddedFonts = False
+ For Each myFont In curPresentation.Fonts
+ If myFont.Embedded Then
+ bHasEmbeddedFonts = True
+ Exit For
+ End If
+ Next
+
+ If Not bHasEmbeddedFonts Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_PP_SUBISSUE_FONTS
+ .Location = .CLocationSlide
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_FONTS
+ .locationXML = .CXMLLocationSlide
+
+ .SubLocation = mySlide.name
+ .Line = myShape.top
+ .column = myShape.Left
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myShape.name
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_PP_SUBISSUE_FONTS_NOTE
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Templates(mySlide As Slide)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Templates"
+
+ If mySlide.Layout <> ppLayoutTitle Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_RESXLS_COST_Template
+ .Location = .CLocationSlide
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_TEMPLATE
+ .locationXML = .CXMLLocationSlide
+ .SubLocation = mySlide.name
+
+ '.Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ '.Values.Add mySlide.name
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_PP_SUBISSUE_TEMPLATE_NOTE
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Hyperlinks(mySlide As Slide)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Hyperlinks"
+
+ Dim myIssue As IssueInfo
+ Dim hl As Hyperlink
+ Dim bHasMultipleFonts As Boolean
+ Dim bHasMultipleLines As Boolean
+
+ bHasMultipleFonts = False
+ bHasMultipleLines = False
+
+ For Each hl In mySlide.Hyperlinks
+ If TypeName(hl.Parent.Parent) = "TextRange" Then
+ Dim myTextRange As TextRange
+ Dim currRun As TextRange
+ Dim currLine As TextRange
+ Dim first, last, noteCount As Long
+
+ Set myTextRange = hl.Parent.Parent
+ first = myTextRange.start
+ last = first + myTextRange.Length - 1
+
+ For Each currRun In myTextRange.Runs
+ If (currRun.start > first And currRun.start < last) Then
+ bHasMultipleFonts = True
+ Exit For
+ End If
+ Next
+
+ For Each currLine In myTextRange.Lines
+ Dim lineEnd As Long
+ lineEnd = currLine.start + currLine.Length - 1
+ If (first <= lineEnd And last > lineEnd) Then
+ bHasMultipleLines = True
+ Exit For
+ End If
+ Next
+ End If
+
+ noteCount = 0
+
+ If bHasMultipleFonts Then
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_RESXLS_COST_Hyperlink
+ .Location = .CLocationSlide
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_HYPERLINK
+ .locationXML = .CXMLLocationSlide
+ .SubLocation = mySlide.name
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myTextRange.Text
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_PP_SUBISSUE_HYPERLINK_NOTE
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+ mAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ bHasMultipleFonts = False
+ End If
+ If bHasMultipleLines Then
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_RESXLS_COST_HyperlinkSplit
+ .Location = .CLocationSlide
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_HYPERLINK_SPLIT
+ .locationXML = .CXMLLocationSlide
+ .SubLocation = mySlide.name
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myTextRange.Text
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_PP_SUBISSUE_HYPERLINK_SPLIT_NOTE
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+ mAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ bHasMultipleLines = False
+ End If
+ Next
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_ShapeIssues(mySlide As Slide)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_ShapeIssues"
+ Dim myShape As Shape
+
+ For Each myShape In mySlide.Shapes
+ 'myShape.Select msoTrue
+ Analyze_Movie mySlide, myShape
+ Analyze_Comments mySlide, myShape
+ Analyze_Background mySlide, myShape
+ Analyze_Numbering mySlide, myShape
+ 'Analyze global issues
+ Analyze_OLEEmbeddedSingleShape mAnalysis, myShape, mySlide.name
+ Analyze_Lines mAnalysis, myShape, mySlide.name
+ Analyze_Transparency mAnalysis, myShape, mySlide.name
+ Analyze_Gradients mAnalysis, myShape, mySlide.name
+ Next myShape
+
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub Analyze_Numbering(mySlide As Slide, myShape As Shape)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Numbering"
+
+ If Not myShape.HasTextFrame Then Exit Sub
+ If Not myShape.TextFrame.HasText Then Exit Sub
+ Dim shapeText As TextRange
+
+ Set shapeText = myShape.TextFrame.TextRange
+
+ If shapeText.Paragraphs.count < 2 Then Exit Sub
+ If Not (shapeText.ParagraphFormat.Bullet.Type = ppBulletMixed Or _
+ shapeText.ParagraphFormat.Bullet.Type = ppBulletNumbered) Then Exit Sub
+
+ ' OpenOffice has Problems when the numbering does not start with the first
+ ' paragraph or when there are empty paragraphs which do not have a number.
+ ' Because PowerPoint does not give us the length of each paragraph ( .Length
+ ' does not work ), we have to compute the length ourself.
+
+ Dim I As Long
+ Dim lastType As PpBulletType
+ Dim currType As PpBulletType
+ Dim lastStart As Long
+ Dim lastLength As Long
+ Dim currStart As Long
+ Dim bHasNumProblem As Boolean
+ Dim bHasEmptyPar As Boolean
+
+ bHasNumProblem = False
+ bHasEmptyPar = False
+
+ lastType = shapeText.Paragraphs(1, 0).ParagraphFormat.Bullet.Type
+ lastStart = shapeText.Paragraphs(1, 0).start
+
+ For I = 2 To shapeText.Paragraphs.count
+ currType = shapeText.Paragraphs(I, 0).ParagraphFormat.Bullet.Type
+ currStart = shapeText.Paragraphs(I, 0).start
+ lastLength = currStart - lastStart - 1
+
+ If currType <> lastType Then
+ lastType = currType
+ If currType = ppBulletNumbered Then
+ bHasNumProblem = True
+ Exit For
+ End If
+ End If
+ If lastLength = 0 Then
+ bHasEmptyPar = True
+ Else
+ If (bHasEmptyPar) Then
+ bHasNumProblem = True
+ Exit For
+ End If
+ End If
+ lastStart = currStart
+ Next I
+
+ lastLength = shapeText.Length - lastStart
+ If (lastLength <> 0) And bHasEmptyPar Then
+ bHasNumProblem = True
+ End If
+
+ If Not bHasNumProblem Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_RESXLS_COST_Numbering
+ .Location = .CLocationSlide
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_NUMBERING
+ .locationXML = .CXMLLocationSlide
+
+ .SubLocation = mySlide.name
+ .Line = myShape.top
+ .column = myShape.Left
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myShape.name
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_PP_SUBISSUE_NUMBERING_NOTE
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Background(mySlide As Slide, myShape As Shape)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Background"
+
+ If myShape.Fill.Type <> msoFillBackground Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+ Dim strCr As String
+ strCr = "" & vbCr
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_RESXLS_COST_Background
+ .Location = .CLocationSlide
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_BACKGROUND
+ .locationXML = .CXMLLocationSlide
+
+ .SubLocation = mySlide.name
+ .Line = myShape.top
+ .column = myShape.Left
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myShape.name
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_PP_SUBISSUE_BACKGROUND_NOTE
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Comments(mySlide As Slide, myShape As Shape)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Comments"
+
+ If myShape.Type <> msoComment Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+ Dim strCr As String
+ strCr = "" & vbCr
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_PP_SUBISSUE_COMMENT
+ .Location = .CLocationSlide
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_COMMENT
+ .locationXML = .CXMLLocationSlide
+
+ .SubLocation = mySlide.name
+ .Line = myShape.top
+ .column = myShape.Left
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myShape.name
+ .Attributes.Add RID_STR_PP_ATTRIBUTE_CONTENT
+ .Values.Add Replace(myShape.TextFrame.TextRange.Text, strCr, "")
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Sub Analyze_Movie(mySlide As Slide, myShape As Shape)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Movie"
+
+ If myShape.Type <> msoMedia Then Exit Sub
+ If myShape.MediaType <> ppMediaTypeMovie Then Exit Sub
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_OBJECTS_GRAPHICS_TEXTBOXES
+ .IssueType = RID_STR_PP_ISSUE_OBJECTS_GRAPHICS_AND_TEXTBOXES
+ .SubType = RID_STR_PP_SUBISSUE_MOVIE
+ .Location = .CLocationSlide
+
+ .IssueTypeXML = CSTR_ISSUE_OBJECTS_GRAPHICS_AND_TEXTBOXES
+ .SubTypeXML = CSTR_SUBISSUE_MOVIE
+ .locationXML = .CXMLLocationSlide
+
+ .SubLocation = mySlide.name
+ .Line = myShape.top
+ .column = myShape.Left
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add myShape.name
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_SOURCE
+ .Values.Add myShape.LinkFormat.SourceFullName
+ .Attributes.Add RID_STR_PP_ATTRIBUTE_PLAYONENTRY
+ .Values.Add IIf(myShape.AnimationSettings.PlaySettings.PlayOnEntry, RID_STR_PP_TRUE, RID_STR_PP_FALSE)
+ .Attributes.Add RID_STR_PP_ATTRIBUTE_LOOP
+ .Values.Add IIf(myShape.AnimationSettings.PlaySettings.LoopUntilStopped, RID_STR_PP_TRUE, RID_STR_PP_FALSE)
+ .Attributes.Add RID_STR_PP_ATTRIBUTE_REWIND
+ .Values.Add IIf(myShape.AnimationSettings.PlaySettings.RewindMovie, RID_STR_PP_TRUE, RID_STR_PP_FALSE)
+
+ mAnalysis.IssuesCountArray(CID_OBJECTS_GRAPHICS_TEXTBOXES) = _
+ mAnalysis.IssuesCountArray(CID_OBJECTS_GRAPHICS_TEXTBOXES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Private Sub Class_Initialize()
+ Set mAnalysis = New DocumentAnalysis
+End Sub
+Private Sub Class_Terminate()
+ Set mAnalysis = Nothing
+End Sub
+
+Public Property Get Results() As DocumentAnalysis
+ Set Results = mAnalysis
+End Property
+
diff --git a/migrationanalysis/src/driver_docs/sources/powerpoint/Preparation.bas b/migrationanalysis/src/driver_docs/sources/powerpoint/Preparation.bas
new file mode 100644
index 000000000000..40454eb0bdd7
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/powerpoint/Preparation.bas
@@ -0,0 +1,41 @@
+Attribute VB_Name = "Preparation"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+'Stub for Word Prepare H&F
+Function Prepare_HeaderFooter_GraphicFrames(docAnalysis As DocumentAnalysis, myIssue As IssueInfo, _
+ var As Variant, currDoc As Presentation) As Boolean
+ Prepare_HeaderFooter_GraphicFrames = False
+End Function
+
+'Stub for Excel Prepare SheetName
+Function Prepare_WorkbookVersion() As Boolean
+ Prepare_WorkbookVersion = False
+End Function
+
diff --git a/migrationanalysis/src/driver_docs/sources/powerpoint/Slide1.cls b/migrationanalysis/src/driver_docs/sources/powerpoint/Slide1.cls
new file mode 100644
index 000000000000..9f6d4bd13752
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/powerpoint/Slide1.cls
@@ -0,0 +1,54 @@
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+Public ppStrings As StringDataManager
+
+Public Sub Presentation_Open()
+ MsgBox GetResourceDataFileName
+ Set ppStrings = New StringDataManager
+
+ ppStrings.InitStringData (GetResourceDataFileName)
+ LoadCommonStrings ppStrings
+ LoadPPStrings ppStrings
+ Set ppStrings = Nothing
+
+ SetPPDriverText
+End Sub
+
+Sub SetPPDriverText()
+ On Error Resume Next
+ CAPP_DOCPROP_LOCATION = RID_STR_COMMON_RESULTS_LOCATION_TYPE_PRESENTATION
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT2").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT2
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT3").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT3
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT4").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT4
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT5").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT5
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT6").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT6
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT7").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT7
+ ActivePresentation.Slides.item(1).Shapes.item("RID_STR_DVR_PP_TXT8").OLEFormat.Object.Text = RID_STR_DVR_PP_TXT8
+End Sub
diff --git a/migrationanalysis/src/driver_docs/sources/powerpoint/powerpoint_res.bas b/migrationanalysis/src/driver_docs/sources/powerpoint/powerpoint_res.bas
new file mode 100644
index 000000000000..cddc6e508e22
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/powerpoint/powerpoint_res.bas
@@ -0,0 +1,107 @@
+Attribute VB_Name = "powerpoint_res"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Public RID_STR_PP_TRUE As String
+Public RID_STR_PP_FALSE As String
+Public RID_STR_PP_ISSUE_OBJECTS_GRAPHICS_AND_TEXTBOXES As String
+Public RID_STR_PP_SUBISSUE_COMMENT As String
+Public RID_STR_PP_SUBISSUE_MOVIE As String
+Public RID_STR_PP_SUBISSUE_BACKGROUND_NOTE As String
+Public RID_STR_PP_SUBISSUE_NUMBERING_NOTE As String
+Public RID_STR_PP_SUBISSUE_HYPERLINK_NOTE As String
+Public RID_STR_PP_SUBISSUE_HYPERLINK_SPLIT_NOTE As String
+Public RID_STR_PP_SUBISSUE_TEMPLATE As String
+Public RID_STR_PP_SUBISSUE_TEMPLATE_NOTE As String
+Public RID_STR_PP_SUBISSUE_TABSTOP_NOTE As String
+Public RID_STR_PP_SUBISSUE_FONTS As String
+Public RID_STR_PP_SUBISSUE_FONTS_NOTE As String
+Public RID_STR_PP_ATTRIBUTE_CONTENT As String
+Public RID_STR_PP_ATTRIBUTE_LOOP As String
+Public RID_STR_PP_ATTRIBUTE_PLAYONENTRY As String
+Public RID_STR_PP_ATTRIBUTE_REWIND As String
+Public RID_STR_PP_ATTRIBUTE_TYPES As String
+Public RID_STR_PP_ENUMERATION_VIEW_HANDOUT_MASTER As String
+Public RID_STR_PP_ENUMERATION_VIEW_NORMAL As String
+Public RID_STR_PP_ENUMERATION_VIEW_NOTES_MASTER As String
+Public RID_STR_PP_ENUMERATION_VIEW_NOTES_PAGE As String
+Public RID_STR_PP_ENUMERATION_VIEW_OUTLINE As String
+Public RID_STR_PP_ENUMERATION_VIEW_SLIDE As String
+Public RID_STR_PP_ENUMERATION_VIEW_SLIDE_MASTER As String
+Public RID_STR_PP_ENUMERATION_VIEW_SLIDE_SORTER As String
+Public RID_STR_PP_ENUMERATION_VIEW_TITLE_MASTER As String
+Public RID_STR_PP_ENUMERATION_UNKNOWN As String
+
+'Driver strings
+Public RID_STR_DVR_PP_TXT2 As String
+Public RID_STR_DVR_PP_TXT3 As String
+Public RID_STR_DVR_PP_TXT4 As String
+Public RID_STR_DVR_PP_TXT5 As String
+Public RID_STR_DVR_PP_TXT6 As String
+Public RID_STR_DVR_PP_TXT7 As String
+Public RID_STR_DVR_PP_TXT8 As String
+
+Public Sub LoadPPStrings(sdm As StringDataManager)
+ sdm.InitString RID_STR_PP_TRUE, "RID_STR_PP_TRUE"
+ sdm.InitString RID_STR_PP_FALSE, "RID_STR_PP_FALSE"
+ sdm.InitString RID_STR_PP_ISSUE_OBJECTS_GRAPHICS_AND_TEXTBOXES, "RID_STR_PP_ISSUE_OBJECTS_GRAPHICS_AND_TEXTBOXES"
+ sdm.InitString RID_STR_PP_SUBISSUE_COMMENT, "RID_STR_PP_SUBISSUE_COMMENT"
+ sdm.InitString RID_STR_PP_SUBISSUE_MOVIE, "RID_STR_PP_SUBISSUE_MOVIE"
+ sdm.InitString RID_STR_PP_SUBISSUE_BACKGROUND_NOTE, "RID_STR_PP_SUBISSUE_BACKGROUND_NOTE"
+ sdm.InitString RID_STR_PP_SUBISSUE_NUMBERING_NOTE, "RID_STR_PP_SUBISSUE_NUMBERING_NOTE"
+ sdm.InitString RID_STR_PP_SUBISSUE_HYPERLINK_NOTE, "RID_STR_PP_SUBISSUE_HYPERLINK_NOTE"
+ sdm.InitString RID_STR_PP_SUBISSUE_HYPERLINK_SPLIT_NOTE, "RID_STR_PP_SUBISSUE_HYPERLINK_SPLIT_NOTE"
+ sdm.InitString RID_STR_PP_SUBISSUE_TEMPLATE, "RID_STR_PP_SUBISSUE_TEMPLATE"
+ sdm.InitString RID_STR_PP_SUBISSUE_TEMPLATE_NOTE, "RID_STR_PP_SUBISSUE_TEMPLATE_NOTE"
+ sdm.InitString RID_STR_PP_SUBISSUE_TABSTOP_NOTE, "RID_STR_PP_SUBISSUE_TABSTOP_NOTE"
+ sdm.InitString RID_STR_PP_SUBISSUE_FONTS, "RID_STR_PP_SUBISSUE_FONTS"
+ sdm.InitString RID_STR_PP_SUBISSUE_FONTS_NOTE, "RID_STR_PP_SUBISSUE_FONTS_NOTE"
+ sdm.InitString RID_STR_PP_ATTRIBUTE_CONTENT, "RID_STR_PP_ATTRIBUTE_CONTENT"
+ sdm.InitString RID_STR_PP_ATTRIBUTE_LOOP, "RID_STR_PP_ATTRIBUTE_LOOP"
+ sdm.InitString RID_STR_PP_ATTRIBUTE_PLAYONENTRY, "RID_STR_PP_ATTRIBUTE_PLAYONENTRY"
+ sdm.InitString RID_STR_PP_ATTRIBUTE_REWIND, "RID_STR_PP_ATTRIBUTE_REWIND"
+ sdm.InitString RID_STR_PP_ATTRIBUTE_TYPES, "RID_STR_PP_ATTRIBUTE_TYPES"
+ sdm.InitString RID_STR_PP_ENUMERATION_VIEW_HANDOUT_MASTER, "RID_STR_PP_ENUMERATION_VIEW_HANDOUT_MASTER"
+ sdm.InitString RID_STR_PP_ENUMERATION_VIEW_NORMAL, "RID_STR_PP_ENUMERATION_VIEW_NORMAL"
+ sdm.InitString RID_STR_PP_ENUMERATION_VIEW_NOTES_MASTER, "RID_STR_PP_ENUMERATION_VIEW_NOTES_MASTER"
+ sdm.InitString RID_STR_PP_ENUMERATION_VIEW_NOTES_PAGE, "RID_STR_PP_ENUMERATION_VIEW_NOTES_PAGE"
+ sdm.InitString RID_STR_PP_ENUMERATION_VIEW_OUTLINE, "RID_STR_PP_ENUMERATION_VIEW_OUTLINE"
+ sdm.InitString RID_STR_PP_ENUMERATION_VIEW_SLIDE, "RID_STR_PP_ENUMERATION_VIEW_SLIDE"
+ sdm.InitString RID_STR_PP_ENUMERATION_VIEW_SLIDE_MASTER, "RID_STR_PP_ENUMERATION_VIEW_SLIDE_MASTER"
+ sdm.InitString RID_STR_PP_ENUMERATION_VIEW_SLIDE_SORTER, "RID_STR_PP_ENUMERATION_VIEW_SLIDE_SORTER"
+ sdm.InitString RID_STR_PP_ENUMERATION_VIEW_TITLE_MASTER, "RID_STR_PP_ENUMERATION_VIEW_TITLE_MASTER"
+ sdm.InitString RID_STR_PP_ENUMERATION_UNKNOWN, "RID_STR_PP_ENUMERATION_UNKNOWN"
+
+ 'Driver strings
+ sdm.InitString RID_STR_DVR_PP_TXT2, "RID_STR_DVR_PP_TXT2"
+ sdm.InitString RID_STR_DVR_PP_TXT3, "RID_STR_DVR_PP_TXT3"
+ sdm.InitString RID_STR_DVR_PP_TXT4, "RID_STR_DVR_PP_TXT4"
+ sdm.InitString RID_STR_DVR_PP_TXT5, "RID_STR_DVR_PP_TXT5"
+ sdm.InitString RID_STR_DVR_PP_TXT6, "RID_STR_DVR_PP_TXT6"
+ sdm.InitString RID_STR_DVR_PP_TXT7, "RID_STR_DVR_PP_TXT7"
+ sdm.InitString RID_STR_DVR_PP_TXT8, "RID_STR_DVR_PP_TXT8"
+End Sub
diff --git a/migrationanalysis/src/driver_docs/sources/results_res.bas b/migrationanalysis/src/driver_docs/sources/results_res.bas
new file mode 100644
index 000000000000..b8285ff369e8
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/results_res.bas
@@ -0,0 +1,613 @@
+Attribute VB_Name = "results_res"
+Public RID_RESXLS_COST_Action_Settings As String
+Public RID_RESXLS_COST_Add_custom_properties_to_document_Properties_Summary_Comments_field As String
+Public RID_RESXLS_COST_Additional_Weighting_Factors As String
+Public RID_RESXLS_COST_All_sheets__256_will_need_to_be_moved_to_a_new_workbook As String
+Public RID_RESXLS_COST_Appearance As String
+Public RID_RESXLS_COST_Application As String
+Public RID_RESXLS_COST_Border_Styles As String
+Public RID_RESXLS_COST_Cell_Attributes As String
+Public RID_RESXLS_COST_CELL_SPAN_WORKAROUND As String
+Public RID_RESXLS_COST_Cell_Spanning_Page As String
+Public RID_RESXLS_COST_ChangesAndReviewing As String
+Public RID_RESXLS_COST_Charts_And_Tables As String
+Public RID_RESXLS_COST_Comment As String
+Public RID_RESXLS_COST_Content_And_Document_Properties As String
+Public RID_RESXLS_COST_ContentAndDocumentProperties As String
+Public RID_RESXLS_COST_Controls As String
+Public RID_RESXLS_COST_Cost As String
+Public RID_RESXLS_COST_Cost__In_simple_cases_cut_and_paste_to_new_sheet_3___5_min As String
+Public RID_RESXLS_COST_COST_0 As String
+Public RID_RESXLS_COST_COST_EMBED_CHART As String
+Public RID_RESXLS_COST_COST_ERROR_TYPE As String
+Public RID_RESXLS_COST_COST_INFO As String
+Public RID_RESXLS_COST_COST_INVAL_PASS As String
+Public RID_RESXLS_COST_COST_INVALID_WORKSHEET_NAME As String
+Public RID_RESXLS_COST_Cost_of_4_min_per_line__takes_no_account_of_complexity_of_code__number_of_comment_lines_and_so_on As String
+Public RID_RESXLS_COST_Cost_per_Issue_or_Factor__min As String
+Public RID_RESXLS_COST_COST_PIVOT As String
+Public RID_RESXLS_COST_COST_SHEET_CHART As String
+Public RID_RESXLS_COST_Cost_variations_occur_because_of_the_use_of_macros_with_controls As String
+Public RID_RESXLS_COST_COST_VBA_CONT_TYPE As String
+Public RID_RESXLS_COST_COST_VBA_CONTROLS As String
+Public RID_RESXLS_COST_COST_VBA_FORMS As String
+Public RID_RESXLS_COST_COST_VBA_LOC As String
+Public RID_RESXLS_COST_COST_VBA_PROPS As String
+Public RID_RESXLS_COST_Costs__min As String
+Public RID_RESXLS_COST_Custom_Bullet_List As String
+Public RID_RESXLS_COST_Document_Custom_Properties As String
+Public RID_RESXLS_COST_Document_Parts_Protection As String
+Public RID_RESXLS_COST_Embedded_Chart As String
+Public RID_RESXLS_COST_embedded_objects As String
+Public RID_RESXLS_COST_Embedded_OLE_Object As String
+Public RID_RESXLS_COST_Excel As String
+Public RID_RESXLS_COST_Excel_Totals As String
+Public RID_RESXLS_COST_External As String
+Public RID_RESXLS_COST_External_References_In_Macro___Module__Class_or_UserForm As String
+Public RID_RESXLS_COST_Factor_Count As String
+Public RID_RESXLS_COST_Fields As String
+Public RID_RESXLS_COST_Filters As String
+Public RID_RESXLS_COST_Fixed_SO7 As String
+Public RID_RESXLS_COST_Form_Field As String
+Public RID_RESXLS_COST_Format As String
+Public RID_RESXLS_COST_Functions As String
+Public RID_RESXLS_COST_HEADERFOOTER_WORKAROUND As String
+Public RID_RESXLS_COST_Hours_Per_MD As String
+Public RID_RESXLS_COST_Indexes_And_References As String
+Public RID_RESXLS_COST_Invalid_Password_Entered As String
+Public RID_RESXLS_COST_Invalid_Worksheet_Name As String
+Public RID_RESXLS_COST_Issue__18_of_the_24_table_border_styles_do_not_display_correctly As String
+Public RID_RESXLS_COST_Issue__256_sheet_limit_exceeded As String
+Public RID_RESXLS_COST_Issue__32000_row_limit_exceeded As String
+Public RID_RESXLS_COST_Issue__A_worksheet_in_the_workbook_has_a_name_with_invalid_characters As String
+Public RID_RESXLS_COST_Issue__Calls_to_windows_API_functions_are_windows_specific As String
+Public RID_RESXLS_COST_Issue__Chart_support_is_limited_in_SO7 As String
+Public RID_RESXLS_COST_Issue__Comments_are_lost_on_migration_to_SO7 As String
+Public RID_RESXLS_COST_Issue__Custom_Properties_are_lost_on_migration As String
+Public RID_RESXLS_COST_Issue__Document_is_password_protected_and_cannot_be_opened_by_SO As String
+Public RID_RESXLS_COST_Issue__External_functions_not_supported_by_SO7 As String
+Public RID_RESXLS_COST_Issue__External_references_are_windows_specific As String
+Public RID_RESXLS_COST_Issue__Fields_are_imported_but_need_to_have_the_link_to_datasource_reset As String
+Public RID_RESXLS_COST_Issue__Graphics___frames_in_header_footer_tend_to_be_misplaced As String
+Public RID_RESXLS_COST_Issue__Incorrect_password_entered As String
+Public RID_RESXLS_COST_Issue__Information_relating_to_the_data_source_is_lost_in_migration As String
+Public RID_RESXLS_COST_Issue__Invalid_password_entered_Rerun_analysis As String
+Public RID_RESXLS_COST_Issue__Lost_during_migration_No_StarOffice_equivalent As String
+Public RID_RESXLS_COST_Issue__Macros_from_old_workbook_versions_do_not_import_into_SO7 As String
+Public RID_RESXLS_COST_Issue__Modules_will_need_porting_to_StarOffice_Basic As String
+Public RID_RESXLS_COST_Issue__Most_migrate_ok_but_do_not_roundtrip As String
+Public RID_RESXLS_COST_Issue__Movies_are_not_supported_by_SO7 As String
+Public RID_RESXLS_COST_Issue__Need_to_set_these_to_be_included_in_TOC_in_SO7 As String
+Public RID_RESXLS_COST_Issue__Password_protection_of_comments__tracked_changes_and_forms_is_lost As String
+Public RID_RESXLS_COST_Issue__Pivot_charts_are_not_supported_by_SO7 As String
+Public RID_RESXLS_COST_Issue__Presents_a_cross_platform_interoperability_issue As String
+Public RID_RESXLS_COST_Issue__Print_wide_pages_not_supported As String
+Public RID_RESXLS_COST_Issue__Shading_can_be_applied_to_fields_and_to_controls_separately_in_Word As String
+Public RID_RESXLS_COST_Issue__Table_imported_as_text_as_no_StarOffice_equivalent As String
+Public RID_RESXLS_COST_Issue__Tables_nested_in_tables_are_not_supported_by_SO7 As String
+Public RID_RESXLS_COST_Issue__Tabs_are_incorrect_after_migration As String
+Public RID_RESXLS_COST_Issue__Text_form_fields_roundtrip_as_Fill_In_field As String
+Public RID_RESXLS_COST_Issue__Unsupported_formatting_set As String
+Public RID_RESXLS_COST_Issue__Unsupported_function_type As String
+Public RID_RESXLS_COST_Issue__Userform_controls_will_need_porting_to_StarOffice_Basic As String
+Public RID_RESXLS_COST_Issue__Userforms_controls_will_need_porting_to_StarOffice_Basic As String
+Public RID_RESXLS_COST_Issue__Userforms_will_need_porting_to_StarOffice_Basic As String
+Public RID_RESXLS_COST_Issue__VBProject_is_password_protected_Remove_password__rerun_analysis As String
+Public RID_RESXLS_COST_Issue__Will_need_refreshing_in_SO7_External_datasources_and_functions_are_not_supported As String
+Public RID_RESXLS_COST_Issue__Workbook_protection_is_not_supported As String
+Public RID_RESXLS_COST_Issue__Writer_cannot_correctly_display_cells_spanning_more_than_1_page As String
+Public RID_RESXLS_COST_Issue_Category As String
+Public RID_RESXLS_COST_Issue_Count As String
+Public RID_RESXLS_COST_Issue_Type As String
+Public RID_RESXLS_COST_Linked_OLE_Object As String
+Public RID_RESXLS_COST_Mail_Merge_Datasource As String
+Public RID_RESXLS_COST_Mail_Merge_Field As String
+Public RID_RESXLS_COST_Major_Issue As String
+Public RID_RESXLS_COST_MAX_SHEETS_WORKAROUND As String
+Public RID_RESXLS_COST_Maximum_Rows_Exceeded As String
+Public RID_RESXLS_COST_Maximum_Sheets_Exceeded As String
+Public RID_RESXLS_COST_Migration_Issues_Costs As String
+Public RID_RESXLS_COST_Movie As String
+Public RID_RESXLS_COST_NESTED_TABLE_WORKAROUND As String
+Public RID_RESXLS_COST_Nested_Tables As String
+Public RID_RESXLS_COST_Not_Planned As String
+Public RID_RESXLS_COST_Notes_And_Handouts As String
+Public RID_RESXLS_COST_Number_Of_External_References As String
+Public RID_RESXLS_COST_Number_Of_Lines As String
+Public RID_RESXLS_COST_Number_of_Lines_in_Unique_Modules As String
+Public RID_RESXLS_COST_Number_of_Modules As String
+Public RID_RESXLS_COST_Number_of_Unique_Modules As String
+Public RID_RESXLS_COST_Numbering_Reference As String
+Public RID_RESXLS_COST_Numbering_Reference_Comment As String
+Public RID_RESXLS_COST_Object_In_Header_Footer As String
+Public RID_RESXLS_COST_Objects_And_Graphics As String
+Public RID_RESXLS_COST_Objects_Graphics_And_Frames As String
+Public RID_RESXLS_COST_Objects_Graphics_And_Textboxes As String
+Public RID_RESXLS_COST_Old_Workbook_Version As String
+Public RID_RESXLS_COST_OLE_Control As String
+Public RID_RESXLS_COST_OLECONTR_COST As String
+Public RID_RESXLS_COST_Page_Setup As String
+Public RID_RESXLS_COST_Password_Protected As String
+Public RID_RESXLS_COST_Password_Protection As String
+Public RID_RESXLS_COST_Pivot As String
+Public RID_RESXLS_COST_Planned_SO8 As String
+Public RID_RESXLS_COST_Portability As String
+Public RID_RESXLS_COST_PowerPoint As String
+Public RID_RESXLS_COST_PowerPoint_Totals As String
+Public RID_RESXLS_COST_Prepared_Issue_Count As String
+Public RID_RESXLS_COST_Prepared_Savings__min As String
+Public RID_RESXLS_COST_Properties___Module__Class_or_UserForm As String
+Public RID_RESXLS_COST_Remove_password_to_open As String
+Public RID_RESXLS_COST_Remove_the_invalid_characters_from_the_worksheet_name As String
+Public RID_RESXLS_COST_Rerun_analysis_with_correct_password As String
+Public RID_RESXLS_COST_Reset_link_to_Data_Base_having_setup_a_Datasource_in_SO7 As String
+Public RID_RESXLS_COST_set_cost_factor_if_the_macro_has_to_be_ported_off_Windows As String
+Public RID_RESXLS_COST_Save_workbook_as_a_new_workbook_version As String
+Public RID_RESXLS_COST_Setup_Datasource_in_SO7_using_Tools__Datasource As String
+Public RID_RESXLS_COST_Sheet_Chart As String
+Public RID_RESXLS_COST_Status As String
+Public RID_RESXLS_COST_Table_Of_Authorities As String
+Public RID_RESXLS_COST_Table_Of_Authorities_Field As String
+Public RID_RESXLS_COST_Table_Of_Contents As String
+Public RID_RESXLS_COST_Tables As String
+Public RID_RESXLS_COST_TOC_ISSUE_WORKAROUND As String
+Public RID_RESXLS_COST_Total_Cost___MD As String
+Public RID_RESXLS_COST_User_Error As String
+Public RID_RESXLS_COST_User_Forms_Control_Count As String
+Public RID_RESXLS_COST_User_Forms_Control_Type_Count As String
+Public RID_RESXLS_COST_User_Forms_Count As String
+Public RID_RESXLS_COST_VBA_Macros As String
+Public RID_RESXLS_COST_Word As String
+Public RID_RESXLS_COST_Word_Totals As String
+Public RID_RESXLS_COST_Work_Around As String
+Public RID_RESXLS_COST_Workaround_Remove_protection_before_importing As String
+Public RID_RESXLS_COST_WorkbookProtection As String
+Public RID_RESXLS_DP_Accessed As String
+Public RID_RESXLS_DP_All_Analysed_Documents___Properties As String
+Public RID_RESXLS_DP_Application As String
+Public RID_RESXLS_DP_Based_on_Template As String
+Public RID_RESXLS_DP_Costs As String
+Public RID_RESXLS_DP_Created As String
+Public RID_RESXLS_DP_Document_Details As String
+Public RID_RESXLS_DP_Document_Issue_Costs As String
+Public RID_RESXLS_DP_Document_Migration_Issues As String
+Public RID_RESXLS_DP_Document_Name As String
+Public RID_RESXLS_DP_Document_Name_and_Path As String
+Public RID_RESXLS_DP_Issues_Complex_count As String
+Public RID_RESXLS_DP_Last_Saved_By As String
+Public RID_RESXLS_DP_Lines_of_Macro_Code As String
+Public RID_RESXLS_DP_Macro_Issues As String
+Public RID_RESXLS_DP_Macro_Migration_Costs As String
+Public RID_RESXLS_DP_Macro_Migration_Issues As String
+Public RID_RESXLS_DP_Migration_Issues As String
+Public RID_RESXLS_DP_Minor_Issues As String
+Public RID_RESXLS_DP_Modified As String
+Public RID_RESXLS_DP_Pages_Sheets_Slides As String
+Public RID_RESXLS_DP_Prepareable_Issues_Costs As String
+Public RID_RESXLS_DP_Prepared_Issues As String
+Public RID_RESXLS_DP_Printed As String
+Public RID_RESXLS_DP_Revision As String
+Public RID_RESXLS_DP_User_Form_Count As String
+Public RID_RESXLS_ID_All_Documents_with_Issues___Issue_Details As String
+Public RID_RESXLS_ID_Application As String
+Public RID_RESXLS_ID_Column__Left As String
+Public RID_RESXLS_ID_Document_Name As String
+Public RID_RESXLS_ID_Document_Name_and_Path As String
+Public RID_RESXLS_ID_Issue_Category As String
+Public RID_RESXLS_ID_Issue_Details As String
+Public RID_RESXLS_ID_Issue_Type As String
+Public RID_RESXLS_ID_Line__Row__Top As String
+Public RID_RESXLS_ID_Location As String
+Public RID_RESXLS_ID_Location_Type As String
+Public RID_RESXLS_OV_3_to_6_months As String
+Public RID_RESXLS_OV_6_to_12_months As String
+Public RID_RESXLS_OV_Complex As String
+Public RID_RESXLS_OV_Cost_estimates_for_migration As String
+Public RID_RESXLS_OV_Costs As String
+Public RID_RESXLS_OV_Docs_with_DocumentMigrationIssues As String
+Public RID_RESXLS_OV_Document_Migration_Costs As String
+Public RID_RESXLS_OV_Document_Modification_Dates As String
+Public RID_RESXLS_OV_Document_Type As String
+Public RID_RESXLS_OV_Documents_with_Macro_Migration_Issues As String
+Public RID_RESXLS_OV_Excel As String
+Public RID_RESXLS_OV_Excel_Costs As String
+Public RID_RESXLS_OV_Excel_Spreadsheet As String
+Public RID_RESXLS_OV_Excel_Template As String
+Public RID_RESXLS_OV_GREATER_THAN_1_year As String
+Public RID_RESXLS_OV_Last_Modified As String
+Public RID_RESXLS_OV_LESS_3_months As String
+Public RID_RESXLS_OV_LESS_THAN3MONTHS As String
+Public RID_RESXLS_OV_Macro_Migration_Costs As String
+Public RID_RESXLS_OV_Medium As String
+Public RID_RESXLS_OV_Minor As String
+Public RID_RESXLS_OV_None As String
+Public RID_RESXLS_OV_Number As String
+Public RID_RESXLS_OV_Number_of_Documents_Analyzed As String
+Public RID_RESXLS_OV_NumberOfDocs As String
+Public RID_RESXLS_OV_Potential_savings_macro_conversion As String
+Public RID_RESXLS_OV_Potential_savings_prepared_docs As String
+Public RID_RESXLS_OV_PowerPoint As String
+Public RID_RESXLS_OV_PowerPoint_Costs As String
+Public RID_RESXLS_OV_PowerPoint_Document As String
+Public RID_RESXLS_OV_PowerPoint_Template As String
+Public RID_RESXLS_OV_Simple As String
+Public RID_RESXLS_OV_Total As String
+Public RID_RESXLS_OV_Totals As String
+Public RID_RESXLS_OV_Word As String
+Public RID_RESXLS_OV_Word_Costs As String
+Public RID_RESXLS_OV_Word_Document As String
+Public RID_RESXLS_OV_Word_Template As String
+Public RID_RESXLS_PP_Action_Settings As String
+Public RID_RESXLS_PP_Application As String
+Public RID_RESXLS_PP_Content___Document_Properties As String
+Public RID_RESXLS_PP_Document_Name_and_Path As String
+Public RID_RESXLS_PP_Fields As String
+Public RID_RESXLS_PP_Format As String
+Public RID_RESXLS_PP_Notes___Handouts As String
+Public RID_RESXLS_PP_Objects__Graphics___Textboxes As String
+Public RID_RESXLS_PP_Portability As String
+Public RID_RESXLS_PP_PowerPoint_Documents_with_Issues___Issue_Summary As String
+Public RID_RESXLS_PP_PowerPoint_Presentation_Name As String
+Public RID_RESXLS_PP_VBA_Macros As String
+Public RID_RESXLS_RD_All_Documents_with_Macros___Reference_Details As String
+Public RID_RESXLS_RD_Application As String
+Public RID_RESXLS_RD_Description As String
+Public RID_RESXLS_RD_Document_Name As String
+Public RID_RESXLS_RD_Document_Name_and_Path As String
+Public RID_RESXLS_RD_Location As String
+Public RID_RESXLS_RD_Reference As String
+Public RID_RESXLS_RD_Reference_Details As String
+Public RID_RESXLS_WI_Application As String
+Public RID_RESXLS_WI_Changes_and_Reviewing As String
+Public RID_RESXLS_WI_Content___Document_Properties As String
+Public RID_RESXLS_WI_Controls As String
+Public RID_RESXLS_WI_Document_Name_and_Path As String
+Public RID_RESXLS_WI_Fields As String
+Public RID_RESXLS_WI_Format As String
+Public RID_RESXLS_WI_Index_and_References As String
+Public RID_RESXLS_WI_Objects__Graphics____Frames As String
+Public RID_RESXLS_WI_Portability As String
+Public RID_RESXLS_WI_Tables As String
+Public RID_RESXLS_WI_VBA_Macros As String
+Public RID_RESXLS_WI_Word_Document_Name As String
+Public RID_RESXLS_WI_Word_Documents_with_Issues___Issue_Summary As String
+Public RID_RESXLS_XL_Application As String
+Public RID_RESXLS_XL_Changes___Reviewing As String
+Public RID_RESXLS_XL_Charts___Tables As String
+Public RID_RESXLS_XL_Excel_Documents_with_Issues___Issue_Summary As String
+Public RID_RESXLS_XL_Excel_Spreadsheet_Name As String
+Public RID_RESXLS_XL_Format As String
+Public RID_RESXLS_XL_Functions As String
+Public RID_RESXLS_XL_Objects___Graphics As String
+
+Public RID_RESXLS_COST_DB_Query As String
+Public RID_RESXLS_COST_DB_Query_Comment As String
+Public RID_RESXLS_COST_LineStyle As String
+Public RID_RESXLS_COST_LineStyle_Comment As String
+Public RID_RESXLS_COST_Numbering As String
+Public RID_RESXLS_COST_Numbering_Comment As String
+Public RID_RESXLS_COST_Template As String
+Public RID_RESXLS_COST_Template_Comment As String
+Public RID_RESXLS_COST_DATEDIF_Note As String
+Public RID_RESXLS_COST_Tabstop As String
+Public RID_RESXLS_COST_Tabstop_Comment As String
+Public RID_RESXLS_COST_Transparent As String
+Public RID_RESXLS_COST_Transparent_Comment As String
+Public RID_RESXLS_COST_GradientStyle As String
+Public RID_RESXLS_COST_GradientStyle_Comment As String
+Public RID_RESXLS_COST_GradientStyle_Note As String
+Public RID_RESXLS_COST_Hyperlink As String
+Public RID_RESXLS_COST_Hyperlink_Comment As String
+Public RID_RESXLS_COST_HyperlinkSplit As String
+Public RID_RESXLS_COST_HyperlinkSplit_Comment As String
+Public RID_RESXLS_COST_Background As String
+Public RID_RESXLS_COST_Background_Comment As String
+
+Public Sub LoadResultsStrings(sdm As StringDataManager)
+ On Error Resume Next
+
+ sdm.InitString RID_RESXLS_COST_Action_Settings, "RID_RESXLS_COST_Action_Settings"
+ sdm.InitString RID_RESXLS_COST_Add_custom_properties_to_document_Properties_Summary_Comments_field, "RID_RESXLS_COST_Add_custom_properties_to_document_Properties_Summary_Comments_field"
+ sdm.InitString RID_RESXLS_COST_Additional_Weighting_Factors, "RID_RESXLS_COST_Additional_Weighting_Factors"
+ sdm.InitString RID_RESXLS_COST_All_sheets__256_will_need_to_be_moved_to_a_new_workbook, "RID_RESXLS_COST_All_sheets__256_will_need_to_be_moved_to_a_new_workbook"
+ sdm.InitString RID_RESXLS_COST_Appearance, "RID_RESXLS_COST_Appearance"
+ sdm.InitString RID_RESXLS_COST_Application, "RID_RESXLS_COST_Application"
+ sdm.InitString RID_RESXLS_COST_Border_Styles, "RID_RESXLS_COST_Border_Styles"
+ sdm.InitString RID_RESXLS_COST_Cell_Attributes, "RID_RESXLS_COST_Cell_Attributes"
+ sdm.InitString RID_RESXLS_COST_CELL_SPAN_WORKAROUND, "RID_RESXLS_COST_CELL_SPAN_WORKAROUND"
+ sdm.InitString RID_RESXLS_COST_Cell_Spanning_Page, "RID_RESXLS_COST_Cell_Spanning_Page"
+ sdm.InitString RID_RESXLS_COST_ChangesAndReviewing, "RID_RESXLS_COST_ChangesAndReviewing"
+ sdm.InitString RID_RESXLS_COST_Charts_And_Tables, "RID_RESXLS_COST_Charts_And_Tables"
+ sdm.InitString RID_RESXLS_COST_Comment, "RID_STR_WORD_SUBISSUE_COMMENT"
+ sdm.InitString RID_RESXLS_COST_Content_And_Document_Properties, "RID_RESXLS_COST_Content_And_Document_Properties"
+ sdm.InitString RID_RESXLS_COST_ContentAndDocumentProperties, "RID_RESXLS_COST_ContentAndDocumentProperties"
+ sdm.InitString RID_RESXLS_COST_Controls, "RID_RESXLS_COST_Controls"
+ sdm.InitString RID_RESXLS_COST_Cost, "RID_RESXLS_COST_Cost"
+ sdm.InitString RID_RESXLS_COST_Cost__In_simple_cases_cut_and_paste_to_new_sheet_3___5_min, "RID_RESXLS_COST_Cost__In_simple_cases_cut_and_paste_to_new_sheet_3___5_min"
+ sdm.InitString RID_RESXLS_COST_COST_0, "RID_RESXLS_COST_COST_0"
+ sdm.InitString RID_RESXLS_COST_COST_EMBED_CHART, "RID_RESXLS_COST_COST_EMBED_CHART"
+ sdm.InitString RID_RESXLS_COST_COST_ERROR_TYPE, "RID_RESXLS_COST_COST_ERROR_TYPE"
+ sdm.InitString RID_RESXLS_COST_COST_INFO, "RID_RESXLS_COST_COST_INFO"
+ sdm.InitString RID_RESXLS_COST_COST_INVAL_PASS, "RID_RESXLS_COST_COST_INVAL_PASS"
+ sdm.InitString RID_RESXLS_COST_COST_INVALID_WORKSHEET_NAME, "RID_RESXLS_COST_COST_INVALID_WORKSHEET_NAME"
+ sdm.InitString RID_RESXLS_COST_Cost_of_4_min_per_line__takes_no_account_of_complexity_of_code__number_of_comment_lines_and_so_on, "RID_RESXLS_COST_Cost_of_4_min_per_line__takes_no_account_of_complexity_of_code__number_of_comment_lines_and_so_on"
+ sdm.InitString RID_RESXLS_COST_Cost_per_Issue_or_Factor__min, "RID_RESXLS_COST_Cost_per_Issue_or_Factor__min"
+ sdm.InitString RID_RESXLS_COST_COST_PIVOT, "RID_RESXLS_COST_COST_PIVOT"
+ sdm.InitString RID_RESXLS_COST_COST_SHEET_CHART, "RID_RESXLS_COST_COST_SHEET_CHART"
+ sdm.InitString RID_RESXLS_COST_Cost_variations_occur_because_of_the_use_of_macros_with_controls, "RID_RESXLS_COST_Cost_variations_occur_because_of_the_use_of_macros_with_controls"
+ sdm.InitString RID_RESXLS_COST_COST_VBA_CONT_TYPE, "RID_RESXLS_COST_COST_VBA_CONT_TYPE"
+ sdm.InitString RID_RESXLS_COST_COST_VBA_CONTROLS, "RID_RESXLS_COST_COST_VBA_CONTROLS"
+ sdm.InitString RID_RESXLS_COST_COST_VBA_FORMS, "RID_RESXLS_COST_COST_VBA_FORMS"
+ sdm.InitString RID_RESXLS_COST_COST_VBA_LOC, "RID_RESXLS_COST_COST_VBA_LOC"
+ sdm.InitString RID_RESXLS_COST_COST_VBA_PROPS, "RID_RESXLS_COST_COST_VBA_PROPS"
+ sdm.InitString RID_RESXLS_COST_Costs__min, "RID_RESXLS_COST_Costs__min"
+ sdm.InitString RID_RESXLS_COST_Custom_Bullet_List, "RID_RESXLS_COST_Custom_Bullet_List"
+ sdm.InitString RID_RESXLS_COST_Document_Custom_Properties, "RID_RESXLS_COST_Document_Custom_Properties"
+ sdm.InitString RID_RESXLS_COST_Document_Parts_Protection, "RID_RESXLS_COST_Document_Parts_Protection"
+ sdm.InitString RID_RESXLS_COST_Embedded_Chart, "RID_RESXLS_COST_Embedded_Chart"
+ sdm.InitString RID_RESXLS_COST_embedded_objects, "RID_RESXLS_COST_embedded_objects"
+ sdm.InitString RID_RESXLS_COST_Embedded_OLE_Object, "RID_RESXLS_COST_Embedded_OLE_Object"
+ sdm.InitString RID_RESXLS_COST_Excel, "RID_RESXLS_COST_Excel"
+ sdm.InitString RID_RESXLS_COST_Excel_Totals, "RID_RESXLS_COST_Excel_Totals"
+ sdm.InitString RID_RESXLS_COST_External, "RID_RESXLS_COST_External"
+ sdm.InitString RID_RESXLS_COST_External_References_In_Macro___Module__Class_or_UserForm, "RID_RESXLS_COST_External_References_In_Macro___Module__Class_or_UserForm"
+ sdm.InitString RID_RESXLS_COST_Factor_Count, "RID_RESXLS_COST_Factor_Count"
+ sdm.InitString RID_RESXLS_COST_Fields, "RID_RESXLS_COST_Fields"
+ sdm.InitString RID_RESXLS_COST_Filters, "RID_RESXLS_COST_Filters"
+ sdm.InitString RID_RESXLS_COST_Fixed_SO7, "RID_RESXLS_COST_Fixed_SO7"
+ sdm.InitString RID_RESXLS_COST_Form_Field, "RID_RESXLS_COST_Form_Field"
+ sdm.InitString RID_RESXLS_COST_Format, "RID_RESXLS_COST_Format"
+ sdm.InitString RID_RESXLS_COST_Functions, "RID_RESXLS_COST_Functions"
+ sdm.InitString RID_RESXLS_COST_HEADERFOOTER_WORKAROUND, "RID_RESXLS_COST_HEADERFOOTER_WORKAROUND"
+ sdm.InitString RID_RESXLS_COST_Hours_Per_MD, "RID_RESXLS_COST_Hours_Per_MD"
+ sdm.InitString RID_RESXLS_COST_Indexes_And_References, "RID_RESXLS_COST_Indexes_And_References"
+ sdm.InitString RID_RESXLS_COST_Invalid_Password_Entered, "RID_RESXLS_COST_Invalid_Password_Entered"
+ sdm.InitString RID_RESXLS_COST_Invalid_Worksheet_Name, "RID_RESXLS_COST_Invalid_Worksheet_Name"
+ sdm.InitString RID_RESXLS_COST_Issue__18_of_the_24_table_border_styles_do_not_display_correctly, "RID_RESXLS_COST_Issue__18_of_the_24_table_border_styles_do_not_display_correctly"
+ sdm.InitString RID_RESXLS_COST_Issue__256_sheet_limit_exceeded, "RID_RESXLS_COST_Issue__256_sheet_limit_exceeded"
+ sdm.InitString RID_RESXLS_COST_Issue__32000_row_limit_exceeded, "RID_RESXLS_COST_Issue__32000_row_limit_exceeded"
+ sdm.InitString RID_RESXLS_COST_Issue__A_worksheet_in_the_workbook_has_a_name_with_invalid_characters, "RID_RESXLS_COST_Issue__A_worksheet_in_the_workbook_has_a_name_with_invalid_characters"
+ sdm.InitString RID_RESXLS_COST_Issue__Calls_to_windows_API_functions_are_windows_specific, "RID_RESXLS_COST_Issue__Calls_to_windows_API_functions_are_windows_specific"
+ sdm.InitString RID_RESXLS_COST_Issue__Chart_support_is_limited_in_SO7, "RID_RESXLS_COST_Issue__Chart_support_is_limited_in_SO7"
+ sdm.InitString RID_RESXLS_COST_Issue__Comments_are_lost_on_migration_to_SO7, "RID_RESXLS_COST_Issue__Comments_are_lost_on_migration_to_SO7"
+ sdm.InitString RID_RESXLS_COST_Issue__Custom_Properties_are_lost_on_migration, "RID_RESXLS_COST_Issue__Custom_Properties_are_lost_on_migration"
+ sdm.InitString RID_RESXLS_COST_Issue__Document_is_password_protected_and_cannot_be_opened_by_SO, "RID_RESXLS_COST_Issue__Document_is_password_protected_and_cannot_be_opened_by_SO"
+ sdm.InitString RID_RESXLS_COST_Issue__External_functions_not_supported_by_SO7, "RID_RESXLS_COST_Issue__External_functions_not_supported_by_SO7"
+ sdm.InitString RID_RESXLS_COST_Issue__External_references_are_windows_specific, "RID_RESXLS_COST_Issue__External_references_are_windows_specific"
+ sdm.InitString RID_RESXLS_COST_Issue__Fields_are_imported_but_need_to_have_the_link_to_datasource_reset, "RID_RESXLS_COST_Issue__Fields_are_imported_but_need_to_have_the_link_to_datasource_reset"
+ sdm.InitString RID_RESXLS_COST_Issue__Graphics___frames_in_header_footer_tend_to_be_misplaced, "RID_RESXLS_COST_Issue__Graphics___frames_in_header_footer_tend_to_be_misplaced"
+ sdm.InitString RID_RESXLS_COST_Issue__Incorrect_password_entered, "RID_RESXLS_COST_Issue__Incorrect_password_entered"
+ sdm.InitString RID_RESXLS_COST_Issue__Information_relating_to_the_data_source_is_lost_in_migration, "RID_RESXLS_COST_Issue__Information_relating_to_the_data_source_is_lost_in_migration"
+ sdm.InitString RID_RESXLS_COST_Issue__Invalid_password_entered_Rerun_analysis, "RID_RESXLS_COST_Issue__Invalid_password_entered_Rerun_analysis"
+ sdm.InitString RID_RESXLS_COST_Issue__Lost_during_migration_No_StarOffice_equivalent, "RID_RESXLS_COST_Issue__Lost_during_migration_No_StarOffice_equivalent"
+ sdm.InitString RID_RESXLS_COST_Issue__Macros_from_old_workbook_versions_do_not_import_into_SO7, "RID_RESXLS_COST_Issue__Macros_from_old_workbook_versions_do_not_import_into_SO7"
+ sdm.InitString RID_RESXLS_COST_Issue__Modules_will_need_porting_to_StarOffice_Basic, "RID_RESXLS_COST_Issue__Modules_will_need_porting_to_StarOffice_Basic"
+ sdm.InitString RID_RESXLS_COST_Issue__Most_migrate_ok_but_do_not_roundtrip, "RID_RESXLS_COST_Issue__Most_migrate_ok_but_do_not_roundtrip"
+ sdm.InitString RID_RESXLS_COST_Issue__Movies_are_not_supported_by_SO7, "RID_RESXLS_COST_Issue__Movies_are_not_supported_by_SO7"
+ sdm.InitString RID_RESXLS_COST_Issue__Need_to_set_these_to_be_included_in_TOC_in_SO7, "RID_RESXLS_COST_Issue__Need_to_set_these_to_be_included_in_TOC_in_SO7"
+ sdm.InitString RID_RESXLS_COST_Issue__Password_protection_of_comments__tracked_changes_and_forms_is_lost, "RID_RESXLS_COST_Issue__Password_protection_of_comments__tracked_changes_and_forms_is_lost"
+ sdm.InitString RID_RESXLS_COST_Issue__Pivot_charts_are_not_supported_by_SO7, "RID_RESXLS_COST_Issue__Pivot_charts_are_not_supported_by_SO7"
+ sdm.InitString RID_RESXLS_COST_Issue__Presents_a_cross_platform_interoperability_issue, "RID_RESXLS_COST_Issue__Presents_a_cross_platform_interoperability_issue"
+ sdm.InitString RID_RESXLS_COST_Issue__Print_wide_pages_not_supported, "RID_RESXLS_COST_Issue__Print_wide_pages_not_supported"
+ sdm.InitString RID_RESXLS_COST_Issue__Shading_can_be_applied_to_fields_and_to_controls_separately_in_Word, "RID_RESXLS_COST_Issue__Shading_can_be_applied_to_fields_and_to_controls_separately_in_Word"
+ sdm.InitString RID_RESXLS_COST_Issue__Table_imported_as_text_as_no_StarOffice_equivalent, "RID_RESXLS_COST_Issue__Table_imported_as_text_as_no_StarOffice_equivalent"
+ sdm.InitString RID_RESXLS_COST_Issue__Tables_nested_in_tables_are_not_supported_by_SO7, "RID_RESXLS_COST_Issue__Tables_nested_in_tables_are_not_supported_by_SO7"
+ sdm.InitString RID_RESXLS_COST_Issue__Tabs_are_incorrect_after_migration, "RID_RESXLS_COST_Issue__Tabs_are_incorrect_after_migration"
+ sdm.InitString RID_RESXLS_COST_Issue__Text_form_fields_roundtrip_as_Fill_In_field, "RID_RESXLS_COST_Issue__Text_form_fields_roundtrip_as_Fill_In_field"
+ sdm.InitString RID_RESXLS_COST_Issue__Unsupported_formatting_set, "RID_RESXLS_COST_Issue__Unsupported_formatting_set"
+ sdm.InitString RID_RESXLS_COST_Issue__Unsupported_function_type, "RID_RESXLS_COST_Issue__Unsupported_function_type"
+ sdm.InitString RID_RESXLS_COST_Issue__Userform_controls_will_need_porting_to_StarOffice_Basic, "RID_RESXLS_COST_Issue__Userform_controls_will_need_porting_to_StarOffice_Basic"
+ sdm.InitString RID_RESXLS_COST_Issue__Userforms_controls_will_need_porting_to_StarOffice_Basic, "RID_RESXLS_COST_Issue__Userforms_controls_will_need_porting_to_StarOffice_Basic"
+ sdm.InitString RID_RESXLS_COST_Issue__Userforms_will_need_porting_to_StarOffice_Basic, "RID_RESXLS_COST_Issue__Userforms_will_need_porting_to_StarOffice_Basic"
+ sdm.InitString RID_RESXLS_COST_Issue__VBProject_is_password_protected_Remove_password__rerun_analysis, "RID_RESXLS_COST_Issue__VBProject_is_password_protected_Remove_password__rerun_analysis"
+ sdm.InitString RID_RESXLS_COST_Issue__Will_need_refreshing_in_SO7_External_datasources_and_functions_are_not_supported, "RID_RESXLS_COST_Issue__Will_need_refreshing_in_SO7_External_datasources_and_functions_are_not_supported"
+ sdm.InitString RID_RESXLS_COST_Issue__Workbook_protection_is_not_supported, "RID_RESXLS_COST_Issue__Workbook_protection_is_not_supported"
+ sdm.InitString RID_RESXLS_COST_Issue__Writer_cannot_correctly_display_cells_spanning_more_than_1_page, "RID_RESXLS_COST_Issue__Writer_cannot_correctly_display_cells_spanning_more_than_1_page"
+ sdm.InitString RID_RESXLS_COST_Issue_Category, "RID_RESXLS_COST_Issue_Category"
+ sdm.InitString RID_RESXLS_COST_Issue_Count, "RID_RESXLS_COST_Issue_Count"
+ sdm.InitString RID_RESXLS_COST_Issue_Type, "RID_RESXLS_COST_Issue_Type"
+ sdm.InitString RID_RESXLS_COST_Linked_OLE_Object, "RID_RESXLS_COST_Linked_OLE_Object"
+ sdm.InitString RID_RESXLS_COST_Mail_Merge_Datasource, "RID_RESXLS_COST_Mail_Merge_Datasource"
+ sdm.InitString RID_RESXLS_COST_Mail_Merge_Field, "RID_RESXLS_COST_Mail_Merge_Field"
+ sdm.InitString RID_RESXLS_COST_Major_Issue, "RID_RESXLS_COST_Major_Issue"
+ sdm.InitString RID_RESXLS_COST_MAX_SHEETS_WORKAROUND, "RID_RESXLS_COST_MAX_SHEETS_WORKAROUND"
+ sdm.InitString RID_RESXLS_COST_Maximum_Rows_Exceeded, "RID_RESXLS_COST_Maximum_Rows_Exceeded"
+ sdm.InitString RID_RESXLS_COST_Maximum_Sheets_Exceeded, "RID_RESXLS_COST_Maximum_Sheets_Exceeded"
+ sdm.InitString RID_RESXLS_COST_Migration_Issues_Costs, "RID_RESXLS_COST_Migration_Issues_Costs"
+ sdm.InitString RID_RESXLS_COST_Movie, "RID_RESXLS_COST_Movie"
+ sdm.InitString RID_RESXLS_COST_NESTED_TABLE_WORKAROUND, "RID_RESXLS_COST_NESTED_TABLE_WORKAROUND"
+ sdm.InitString RID_RESXLS_COST_Nested_Tables, "RID_RESXLS_COST_Nested_Tables"
+ sdm.InitString RID_RESXLS_COST_Not_Planned, "RID_RESXLS_COST_Not_Planned"
+ sdm.InitString RID_RESXLS_COST_Notes_And_Handouts, "RID_RESXLS_COST_Notes_And_Handouts"
+ sdm.InitString RID_RESXLS_COST_Number_Of_External_References, "RID_RESXLS_COST_Number_Of_External_References"
+ sdm.InitString RID_RESXLS_COST_Number_Of_Lines, "RID_RESXLS_COST_Number_Of_Lines"
+ sdm.InitString RID_RESXLS_COST_Number_of_Lines_in_Unique_Modules, "RID_RESXLS_COST_Number_of_Lines_in_Unique_Modules"
+ sdm.InitString RID_RESXLS_COST_Number_of_Modules, "RID_RESXLS_COST_Number_of_Modules"
+ sdm.InitString RID_RESXLS_COST_Number_of_Unique_Modules, "RID_RESXLS_COST_Number_of_Unique_Modules"
+ sdm.InitString RID_RESXLS_COST_Numbering_Reference, "RID_RESXLS_COST_Numbering_Reference"
+ sdm.InitString RID_RESXLS_COST_Numbering_Reference_Comment, "RID_RESXLS_COST_Numbering_Reference_Comment"
+ sdm.InitString RID_RESXLS_COST_Object_In_Header_Footer, "RID_RESXLS_COST_Object_In_Header_Footer"
+ sdm.InitString RID_RESXLS_COST_Objects_And_Graphics, "RID_RESXLS_COST_Objects_And_Graphics"
+ sdm.InitString RID_RESXLS_COST_Objects_Graphics_And_Frames, "RID_RESXLS_COST_Objects_Graphics_And_Frames"
+ sdm.InitString RID_RESXLS_COST_Objects_Graphics_And_Textboxes, "RID_RESXLS_COST_Objects_Graphics_And_Textboxes"
+ sdm.InitString RID_RESXLS_COST_Old_Workbook_Version, "RID_RESXLS_COST_Old_Workbook_Version"
+ sdm.InitString RID_RESXLS_COST_OLE_Control, "RID_RESXLS_COST_OLE_Control"
+ sdm.InitString RID_RESXLS_COST_OLECONTR_COST, "RID_RESXLS_COST_OLECONTR_COST"
+ sdm.InitString RID_RESXLS_COST_Page_Setup, "RID_RESXLS_COST_Page_Setup"
+ sdm.InitString RID_RESXLS_COST_Password_Protected, "RID_RESXLS_COST_Password_Protected"
+ sdm.InitString RID_RESXLS_COST_Password_Protection, "RID_RESXLS_COST_Password_Protection"
+ sdm.InitString RID_RESXLS_COST_Pivot, "RID_RESXLS_COST_Pivot"
+ sdm.InitString RID_RESXLS_COST_Planned_SO8, "RID_RESXLS_COST_Planned_SO8"
+ sdm.InitString RID_RESXLS_COST_Portability, "RID_RESXLS_COST_Portability"
+ sdm.InitString RID_RESXLS_COST_PowerPoint, "RID_RESXLS_COST_PowerPoint"
+ sdm.InitString RID_RESXLS_COST_PowerPoint_Totals, "RID_RESXLS_COST_PowerPoint_Totals"
+ sdm.InitString RID_RESXLS_COST_Prepared_Issue_Count, "RID_RESXLS_COST_Prepared_Issue_Count"
+ sdm.InitString RID_RESXLS_COST_Prepared_Savings__min, "RID_RESXLS_COST_Prepared_Savings__min"
+ sdm.InitString RID_RESXLS_COST_Properties___Module__Class_or_UserForm, "RID_RESXLS_COST_Properties___Module__Class_or_UserForm"
+ sdm.InitString RID_RESXLS_COST_Remove_password_to_open, "RID_RESXLS_COST_Remove_password_to_open"
+ sdm.InitString RID_RESXLS_COST_Remove_the_invalid_characters_from_the_worksheet_name, "RID_RESXLS_COST_Remove_the_invalid_characters_from_the_worksheet_name"
+ sdm.InitString RID_RESXLS_COST_Rerun_analysis_with_correct_password, "RID_RESXLS_COST_Rerun_analysis_with_correct_password"
+ sdm.InitString RID_RESXLS_COST_Reset_link_to_Data_Base_having_setup_a_Datasource_in_SO7, "RID_RESXLS_COST_Reset_link_to_Data_Base_having_setup_a_Datasource_in_SO7"
+ sdm.InitString RID_RESXLS_COST_set_cost_factor_if_the_macro_has_to_be_ported_off_Windows, "RID_RESXLS_COST_set_cost_factor_if_the_macro_has_to_be_ported_off_Windows"
+ sdm.InitString RID_RESXLS_COST_Save_workbook_as_a_new_workbook_version, "RID_RESXLS_COST_Save_workbook_as_a_new_workbook_version"
+ sdm.InitString RID_RESXLS_COST_Setup_Datasource_in_SO7_using_Tools__Datasource, "RID_RESXLS_COST_Setup_Datasource_in_SO7_using_Tools__Datasource"
+ sdm.InitString RID_RESXLS_COST_Sheet_Chart, "RID_RESXLS_COST_Sheet_Chart"
+ sdm.InitString RID_RESXLS_COST_Status, "RID_RESXLS_COST_Status"
+ sdm.InitString RID_RESXLS_COST_Table_Of_Authorities, "RID_RESXLS_COST_Table_Of_Authorities"
+ sdm.InitString RID_RESXLS_COST_Table_Of_Authorities_Field, "RID_RESXLS_COST_Table_Of_Authorities_Field"
+ sdm.InitString RID_RESXLS_COST_Table_Of_Contents, "RID_RESXLS_COST_Table_Of_Contents"
+ sdm.InitString RID_RESXLS_COST_Tables, "RID_RESXLS_COST_Tables"
+ sdm.InitString RID_RESXLS_COST_TOC_ISSUE_WORKAROUND, "RID_RESXLS_COST_TOC_ISSUE_WORKAROUND"
+ sdm.InitString RID_RESXLS_COST_Total_Cost___MD, "RID_RESXLS_COST_Total_Cost___MD"
+ sdm.InitString RID_RESXLS_COST_User_Error, "RID_RESXLS_COST_User_Error"
+ sdm.InitString RID_RESXLS_COST_User_Forms_Control_Count, "RID_RESXLS_COST_User_Forms_Control_Count"
+ sdm.InitString RID_RESXLS_COST_User_Forms_Control_Type_Count, "RID_RESXLS_COST_User_Forms_Control_Type_Count"
+ sdm.InitString RID_RESXLS_COST_User_Forms_Count, "RID_RESXLS_COST_User_Forms_Count"
+ sdm.InitString RID_RESXLS_COST_VBA_Macros, "RID_RESXLS_COST_VBA_Macros"
+ sdm.InitString RID_RESXLS_COST_Word, "RID_RESXLS_COST_Word"
+ sdm.InitString RID_RESXLS_COST_Word_Totals, "RID_RESXLS_COST_Word_Totals"
+ sdm.InitString RID_RESXLS_COST_Work_Around, "RID_RESXLS_COST_Work_Around"
+ sdm.InitString RID_RESXLS_COST_Workaround_Remove_protection_before_importing, "RID_RESXLS_COST_Workaround_Remove_protection_before_importing"
+ sdm.InitString RID_RESXLS_COST_WorkbookProtection, "RID_RESXLS_COST_WorkbookProtection"
+ sdm.InitString RID_RESXLS_DP_Accessed, "RID_RESXLS_DP_Accessed"
+ sdm.InitString RID_RESXLS_DP_All_Analysed_Documents___Properties, "RID_RESXLS_DP_All_Analysed_Documents___Properties"
+ sdm.InitString RID_RESXLS_DP_Application, "RID_RESXLS_DP_Application"
+ sdm.InitString RID_RESXLS_DP_Based_on_Template, "RID_RESXLS_DP_Based_on_Template"
+ sdm.InitString RID_RESXLS_DP_Costs, "RID_RESXLS_DP_Costs"
+ sdm.InitString RID_RESXLS_DP_Created, "RID_RESXLS_DP_Created"
+ sdm.InitString RID_RESXLS_DP_Document_Details, "RID_RESXLS_DP_Document_Details"
+ sdm.InitString RID_RESXLS_DP_Document_Issue_Costs, "RID_RESXLS_DP_Document_Issue_Costs"
+ sdm.InitString RID_RESXLS_DP_Document_Migration_Issues, "RID_RESXLS_DP_Document_Migration_Issues"
+ sdm.InitString RID_RESXLS_DP_Document_Name, "RID_RESXLS_DP_Document_Name"
+ sdm.InitString RID_RESXLS_DP_Document_Name_and_Path, "RID_RESXLS_DP_Document_Name_and_Path"
+ sdm.InitString RID_RESXLS_DP_Issues_Complex_count, "RID_RESXLS_DP_Issues_Complex_count"
+ sdm.InitString RID_RESXLS_DP_Last_Saved_By, "RID_RESXLS_DP_Last_Saved_By"
+ sdm.InitString RID_RESXLS_DP_Lines_of_Macro_Code, "RID_RESXLS_DP_Lines_of_Macro_Code"
+ sdm.InitString RID_RESXLS_DP_Macro_Issues, "RID_RESXLS_DP_Macro_Issues"
+ sdm.InitString RID_RESXLS_DP_Macro_Migration_Costs, "RID_RESXLS_DP_Macro_Migration_Costs"
+ sdm.InitString RID_RESXLS_DP_Macro_Migration_Issues, "RID_RESXLS_DP_Macro_Migration_Issues"
+ sdm.InitString RID_RESXLS_DP_Migration_Issues, "RID_RESXLS_DP_Migration_Issues"
+ sdm.InitString RID_RESXLS_DP_Minor_Issues, "RID_RESXLS_DP_Minor_Issues"
+ sdm.InitString RID_RESXLS_DP_Modified, "RID_RESXLS_DP_Modified"
+ sdm.InitString RID_RESXLS_DP_Pages_Sheets_Slides, "RID_RESXLS_DP_Pages_Sheets_Slides"
+ sdm.InitString RID_RESXLS_DP_Prepareable_Issues_Costs, "RID_RESXLS_DP_Prepareable_Issues_Costs"
+ sdm.InitString RID_RESXLS_DP_Prepared_Issues, "RID_RESXLS_DP_Prepared_Issues"
+ sdm.InitString RID_RESXLS_DP_Printed, "RID_RESXLS_DP_Printed"
+ sdm.InitString RID_RESXLS_DP_Revision, "RID_RESXLS_DP_Revision"
+ sdm.InitString RID_RESXLS_DP_User_Form_Count, "RID_RESXLS_DP_User_Form_Count"
+ sdm.InitString RID_RESXLS_ID_All_Documents_with_Issues___Issue_Details, "RID_RESXLS_ID_All_Documents_with_Issues___Issue_Details"
+ sdm.InitString RID_RESXLS_ID_Application, "RID_RESXLS_ID_Application"
+ sdm.InitString RID_RESXLS_ID_Column__Left, "RID_RESXLS_ID_Column__Left"
+ sdm.InitString RID_RESXLS_ID_Document_Name, "RID_RESXLS_ID_Document_Name"
+ sdm.InitString RID_RESXLS_ID_Document_Name_and_Path, "RID_RESXLS_ID_Document_Name_and_Path"
+ sdm.InitString RID_RESXLS_ID_Issue_Category, "RID_RESXLS_ID_Issue_Category"
+ sdm.InitString RID_RESXLS_ID_Issue_Details, "RID_RESXLS_ID_Issue_Details"
+ sdm.InitString RID_RESXLS_ID_Issue_Type, "RID_RESXLS_ID_Issue_Type"
+ sdm.InitString RID_RESXLS_ID_Line__Row__Top, "RID_RESXLS_ID_Line__Row__Top"
+ sdm.InitString RID_RESXLS_ID_Location, "RID_RESXLS_ID_Location"
+ sdm.InitString RID_RESXLS_ID_Location_Type, "RID_RESXLS_ID_Location_Type"
+ sdm.InitString RID_RESXLS_OV_3_to_6_months, "RID_RESXLS_OV_3_to_6_months"
+ sdm.InitString RID_RESXLS_OV_6_to_12_months, "RID_RESXLS_OV_6_to_12_months"
+ sdm.InitString RID_RESXLS_OV_Complex, "RID_RESXLS_OV_Complex"
+ sdm.InitString RID_RESXLS_OV_Cost_estimates_for_migration, "RID_RESXLS_OV_Cost_estimates_for_migration"
+ sdm.InitString RID_RESXLS_OV_Costs, "RID_RESXLS_OV_Costs"
+ sdm.InitString RID_RESXLS_OV_Docs_with_DocumentMigrationIssues, "RID_RESXLS_OV_Docs_with_DocumentMigrationIssues"
+ sdm.InitString RID_RESXLS_OV_Document_Migration_Costs, "RID_RESXLS_OV_Document_Migration_Costs"
+ sdm.InitString RID_RESXLS_OV_Document_Modification_Dates, "RID_RESXLS_OV_Document_Modification_Dates"
+ sdm.InitString RID_RESXLS_OV_Document_Type, "RID_RESXLS_OV_Document_Type"
+ sdm.InitString RID_RESXLS_OV_Documents_with_Macro_Migration_Issues, "RID_RESXLS_OV_Documents_with_Macro_Migration_Issues"
+ sdm.InitString RID_RESXLS_OV_Excel, "RID_RESXLS_OV_Excel"
+ sdm.InitString RID_RESXLS_OV_Excel_Costs, "RID_RESXLS_OV_Excel_Costs"
+ sdm.InitString RID_RESXLS_OV_Excel_Spreadsheet, "RID_RESXLS_OV_Excel_Spreadsheet"
+ sdm.InitString RID_RESXLS_OV_Excel_Template, "RID_RESXLS_OV_Excel_Template"
+ sdm.InitString RID_RESXLS_OV_GREATER_THAN_1_year, "RID_RESXLS_OV_GREATER_THAN_1_year"
+ sdm.InitString RID_RESXLS_OV_Last_Modified, "RID_RESXLS_OV_Last_Modified"
+ sdm.InitString RID_RESXLS_OV_LESS_3_months, "RID_RESXLS_OV_LESS_3_months"
+ sdm.InitString RID_RESXLS_OV_LESS_THAN3MONTHS, "RID_RESXLS_OV_LESS_THAN3MONTHS"
+ sdm.InitString RID_RESXLS_OV_Macro_Migration_Costs, "RID_RESXLS_OV_Macro_Migration_Costs"
+ sdm.InitString RID_RESXLS_OV_Medium, "RID_RESXLS_OV_Medium"
+ sdm.InitString RID_RESXLS_OV_Minor, "RID_RESXLS_OV_Minor"
+ sdm.InitString RID_RESXLS_OV_None, "RID_RESXLS_OV_None"
+ sdm.InitString RID_RESXLS_OV_Number, "RID_RESXLS_OV_Number"
+ sdm.InitString RID_RESXLS_OV_Number_of_Documents_Analyzed, "RID_RESXLS_OV_Number_of_Documents_Analyzed"
+ sdm.InitString RID_RESXLS_OV_NumberOfDocs, "RID_RESXLS_OV_NumberOfDocs"
+ sdm.InitString RID_RESXLS_OV_Potential_savings_macro_conversion, "RID_RESXLS_OV_Potential_savings_macro_conversion"
+ sdm.InitString RID_RESXLS_OV_Potential_savings_prepared_docs, "RID_RESXLS_OV_Potential_savings_prepared_docs"
+ sdm.InitString RID_RESXLS_OV_PowerPoint, "RID_RESXLS_OV_PowerPoint"
+ sdm.InitString RID_RESXLS_OV_PowerPoint_Costs, "RID_RESXLS_OV_PowerPoint_Costs"
+ sdm.InitString RID_RESXLS_OV_PowerPoint_Document, "RID_RESXLS_OV_PowerPoint_Document"
+ sdm.InitString RID_RESXLS_OV_PowerPoint_Template, "RID_RESXLS_OV_PowerPoint_Template"
+ sdm.InitString RID_RESXLS_OV_Simple, "RID_RESXLS_OV_Simple"
+ sdm.InitString RID_RESXLS_OV_Total, "RID_RESXLS_OV_Total"
+ sdm.InitString RID_RESXLS_OV_Totals, "RID_RESXLS_OV_Totals"
+ sdm.InitString RID_RESXLS_OV_Word, "RID_RESXLS_OV_Word"
+ sdm.InitString RID_RESXLS_OV_Word_Costs, "RID_RESXLS_OV_Word_Costs"
+ sdm.InitString RID_RESXLS_OV_Word_Document, "RID_RESXLS_OV_Word_Document"
+ sdm.InitString RID_RESXLS_OV_Word_Template, "RID_RESXLS_OV_Word_Template"
+ sdm.InitString RID_RESXLS_PP_Action_Settings, "RID_RESXLS_PP_Action_Settings"
+ sdm.InitString RID_RESXLS_PP_Application, "RID_RESXLS_PP_Application"
+ sdm.InitString RID_RESXLS_PP_Content___Document_Properties, "RID_RESXLS_PP_Content___Document_Properties"
+ sdm.InitString RID_RESXLS_PP_Document_Name_and_Path, "RID_RESXLS_PP_Document_Name_and_Path"
+ sdm.InitString RID_RESXLS_PP_Fields, "RID_RESXLS_PP_Fields"
+ sdm.InitString RID_RESXLS_PP_Format, "RID_RESXLS_PP_Format"
+ sdm.InitString RID_RESXLS_PP_Notes___Handouts, "RID_RESXLS_PP_Notes___Handouts"
+ sdm.InitString RID_RESXLS_PP_Objects__Graphics___Textboxes, "RID_RESXLS_PP_Objects__Graphics___Textboxes"
+ sdm.InitString RID_RESXLS_PP_Portability, "RID_RESXLS_PP_Portability"
+ sdm.InitString RID_RESXLS_PP_PowerPoint_Documents_with_Issues___Issue_Summary, "RID_RESXLS_PP_PowerPoint_Documents_with_Issues___Issue_Summary"
+ sdm.InitString RID_RESXLS_PP_PowerPoint_Presentation_Name, "RID_RESXLS_PP_PowerPoint_Presentation_Name"
+ sdm.InitString RID_RESXLS_PP_VBA_Macros, "RID_RESXLS_PP_VBA_Macros"
+ sdm.InitString RID_RESXLS_RD_All_Documents_with_Macros___Reference_Details, "RID_RESXLS_RD_All_Documents_with_Macros___Reference_Details"
+ sdm.InitString RID_RESXLS_RD_Application, "RID_RESXLS_RD_Application"
+ sdm.InitString RID_RESXLS_RD_Description, "RID_RESXLS_RD_Description"
+ sdm.InitString RID_RESXLS_RD_Document_Name, "RID_RESXLS_RD_Document_Name"
+ sdm.InitString RID_RESXLS_RD_Document_Name_and_Path, "RID_RESXLS_RD_Document_Name_and_Path"
+ sdm.InitString RID_RESXLS_RD_Location, "RID_RESXLS_RD_Location"
+ sdm.InitString RID_RESXLS_RD_Reference, "RID_RESXLS_RD_Reference"
+ sdm.InitString RID_RESXLS_RD_Reference_Details, "RID_RESXLS_RD_Reference_Details"
+ sdm.InitString RID_RESXLS_WI_Application, "RID_RESXLS_WI_Application"
+ sdm.InitString RID_RESXLS_WI_Changes_and_Reviewing, "RID_RESXLS_WI_Changes_and_Reviewing"
+ sdm.InitString RID_RESXLS_WI_Content___Document_Properties, "RID_RESXLS_WI_Content___Document_Properties"
+ sdm.InitString RID_RESXLS_WI_Controls, "RID_RESXLS_WI_Controls"
+ sdm.InitString RID_RESXLS_WI_Document_Name_and_Path, "RID_RESXLS_WI_Document_Name_and_Path"
+ sdm.InitString RID_RESXLS_WI_Fields, "RID_RESXLS_WI_Fields"
+ sdm.InitString RID_RESXLS_WI_Format, "RID_RESXLS_WI_Format"
+ sdm.InitString RID_RESXLS_WI_Index_and_References, "RID_RESXLS_WI_Index_and_References"
+ sdm.InitString RID_RESXLS_WI_Objects__Graphics____Frames, "RID_RESXLS_WI_Objects__Graphics____Frames"
+ sdm.InitString RID_RESXLS_WI_Portability, "RID_RESXLS_WI_Portability"
+ sdm.InitString RID_RESXLS_WI_Tables, "RID_RESXLS_WI_Tables"
+ sdm.InitString RID_RESXLS_WI_VBA_Macros, "RID_RESXLS_WI_VBA_Macros"
+ sdm.InitString RID_RESXLS_WI_Word_Document_Name, "RID_RESXLS_WI_Word_Document_Name"
+ sdm.InitString RID_RESXLS_WI_Word_Documents_with_Issues___Issue_Summary, "RID_RESXLS_WI_Word_Documents_with_Issues___Issue_Summary"
+ sdm.InitString RID_RESXLS_XL_Application, "RID_RESXLS_XL_Application"
+ sdm.InitString RID_RESXLS_XL_Changes___Reviewing, "RID_RESXLS_XL_Changes___Reviewing"
+ sdm.InitString RID_RESXLS_XL_Charts___Tables, "RID_RESXLS_XL_Charts___Tables"
+ sdm.InitString RID_RESXLS_XL_Excel_Documents_with_Issues___Issue_Summary, "RID_RESXLS_XL_Excel_Documents_with_Issues___Issue_Summary"
+ sdm.InitString RID_RESXLS_XL_Excel_Spreadsheet_Name, "RID_RESXLS_XL_Excel_Spreadsheet_Name"
+ sdm.InitString RID_RESXLS_XL_Format, "RID_RESXLS_XL_Format"
+ sdm.InitString RID_RESXLS_XL_Functions, "RID_RESXLS_XL_Functions"
+ sdm.InitString RID_RESXLS_XL_Objects___Graphics, "RID_RESXLS_XL_Objects___Graphics"
+
+ sdm.InitString RID_RESXLS_COST_DB_Query, "RID_RESXLS_COST_DB_Query"
+ sdm.InitString RID_RESXLS_COST_DB_Query_Comment, "RID_RESXLS_COST_DB_Query_Comment"
+ sdm.InitString RID_RESXLS_COST_LineStyle, "RID_RESXLS_COST_LineStyle"
+ sdm.InitString RID_RESXLS_COST_LineStyle_Comment, "RID_RESXLS_COST_LineStyle_Comment"
+ sdm.InitString RID_RESXLS_COST_Numbering, "RID_RESXLS_COST_Numbering"
+ sdm.InitString RID_RESXLS_COST_Numbering_Comment, "RID_RESXLS_COST_Numbering_Comment"
+ sdm.InitString RID_RESXLS_COST_Template, "RID_RESXLS_COST_Template"
+ sdm.InitString RID_RESXLS_COST_Template_Comment, "RID_RESXLS_COST_Template_Comment"
+ sdm.InitString RID_RESXLS_COST_DATEDIF_Note, "RID_RESXLS_COST_DATEDIF_Note"
+ sdm.InitString RID_RESXLS_COST_Tabstop, "RID_RESXLS_COST_Tabstop"
+ sdm.InitString RID_RESXLS_COST_Tabstop_Comment, "RID_RESXLS_COST_Tabstop_Comment"
+ sdm.InitString RID_RESXLS_COST_Transparent, "RID_RESXLS_COST_Transparent"
+ sdm.InitString RID_RESXLS_COST_Transparent_Comment, "RID_RESXLS_COST_Transparent_Comment"
+ sdm.InitString RID_RESXLS_COST_GradientStyle, "RID_RESXLS_COST_GradientStyle"
+ sdm.InitString RID_RESXLS_COST_GradientStyle_Comment, "RID_RESXLS_COST_GradientStyle_Comment"
+ sdm.InitString RID_RESXLS_COST_GradientStyle_Note, "RID_RESXLS_COST_GradientStyle_Note"
+ sdm.InitString RID_RESXLS_COST_Hyperlink, "RID_RESXLS_COST_Hyperlink"
+ sdm.InitString RID_RESXLS_COST_Hyperlink_Comment, "RID_RESXLS_COST_Hyperlink_Comment"
+ sdm.InitString RID_RESXLS_COST_HyperlinkSplit, "RID_RESXLS_COST_HyperlinkSplit"
+ sdm.InitString RID_RESXLS_COST_HyperlinkSplit_Comment, "RID_RESXLS_COST_HyperlinkSplit_Comment"
+ sdm.InitString RID_RESXLS_COST_Background, "RID_RESXLS_COST_Background"
+ sdm.InitString RID_RESXLS_COST_Background_Comment, "RID_RESXLS_COST_Background_Comment"
+
+End Sub
diff --git a/migrationanalysis/src/driver_docs/sources/word/ApplicationSpecific.bas b/migrationanalysis/src/driver_docs/sources/word/ApplicationSpecific.bas
new file mode 100644
index 000000000000..884c874230f6
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/word/ApplicationSpecific.bas
@@ -0,0 +1,156 @@
+Attribute VB_Name = "ApplicationSpecific"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+'** Issue Categories
+Public Const CID_INFORMATION_REFS = 0
+Public Const CID_CHANGES_AND_REVIEWING = 1 'no issue logged
+Public Const CID_CONTENT_AND_DOCUMENT_PROPERTIES = 2
+Public Const CID_CONTROLS = 3 'no issue logged
+Public Const CID_FIELDS = 4
+Public Const CID_FORMAT = 5
+Public Const CID_INDEX_AND_REFERENCES = 6
+Public Const CID_OBJECTS_GRAPHICS_FRAMES = 7
+Public Const CID_PORTABILITY = 8
+Public Const CID_TABLES = 9
+Public Const CID_VBA_MACROS = 10
+Public Const CID_WRITING_AIDS = 11
+Public Const CTOTAL_CATEGORIES = 11
+
+'** Word - XML Issue and SubIssue strings
+Public Const CSTR_ISSUE_CHANGES_AND_REVIEWING = "ChangesAndReviewing"
+Public Const CSTR_ISSUE_CONTROLS = "Controls"
+Public Const CSTR_ISSUE_FIELDS = "Fields"
+Public Const CSTR_ISSUE_INDEX_AND_REFERENCES = "IndexesAndReferences"
+Public Const CSTR_ISSUE_TABLES = "Tables"
+
+Public Const CSTR_SUBISSUE_APPEARANCE = "Appearance"
+Public Const CSTR_SUBISSUE_BORDER_STYLES = "BorderStyles"
+Public Const CSTR_SUBISSUE_CELL_SPAN_PAGE = "CellSpanningPage"
+Public Const CSTR_SUBISSUE_COMMENT = "Comment"
+Public Const CSTR_SUBISSUE_CUSTOM_BULLET_LIST = "CustomBulletList"
+Public Const CSTR_SUBISSUE_FORM_FIELD = "FormField"
+Public Const CSTR_SUBISSUE_MAILMERGE_DATASOURCE = "MailMergeDatasource"
+Public Const CSTR_SUBISSUE_MAILMERGE_FIELD = "MailMergeField"
+Public Const CSTR_SUBISSUE_NESTED_TABLES = "NestedTables"
+Public Const CSTR_SUBISSUE_TABLE_OF_AUTHORITIES = "TableOfAuthorities"
+Public Const CSTR_SUBISSUE_TABLE_OF_AUTHORITIES_FIELD = "TableOfAuthoritiesField"
+Public Const CSTR_SUBISSUE_TABLE_OF_CONTENTS = "TableOfContents"
+'** END Word - XML Issue and SubIssue strings
+
+Public Const CAPPNAME_WORD = "Word"
+Public Const CAPPNAME_WORD_DOC = ".doc"
+Public Const CAPPNAME_WORD_DOT = ".dot"
+
+Public Const CAPPNAME_EXCEL = "Excel"
+Public Const CAPPNAME_EXCEL_DOC = ".xls"
+Public Const CAPPNAME_EXCEL_DOT = ".xlt"
+
+Public Const CAPPNAME_POWERPOINT = "PowerPoint"
+Public Const CAPPNAME_PP_DOC = ".ppt"
+Public Const CAPPNAME_PP_DOT = ".pot"
+
+Public CAPP_DOCPROP_LOCATION As String
+'Public Const CAPP_DOCPROP_LOCATION = RID_STR_COMMON_RESULTS_LOCATION_TYPE_WORKBOOK
+'Public Const CAPP_DOCPROP_LOCATION = RID_STR_COMMON_RESULTS_LOCATION_TYPE_PRESENTATION
+
+Public Const CAPP_XMLDOCPROP_LOCATION = "Document"
+'Public Const CAPP_XMLDOCPROP_LOCATION = "Workbook"
+'Public Const CAPP_XMLDOCPROP_LOCATION = "Presentation"
+
+Public Const CTHIS_DOCUMENT = "ThisDocument"
+Public Const CTOPLEVEL_PROJECT = "Project"
+
+Public Function getAppSpecificDocExt() As String
+ getAppSpecificDocExt = CAPPNAME_WORD_DOC
+End Function
+Public Function getAppSpecificTemplateExt() As String
+ getAppSpecificTemplateExt = CAPPNAME_WORD_DOT
+End Function
+Public Function getAppSpecificPath() As String
+ getAppSpecificPath = ActiveDocument.path
+End Function
+Public Function getAppSpecificApplicationName() As String
+ getAppSpecificApplicationName = CAPPNAME_WORD
+End Function
+
+Public Function getAppSpecificCustomDocProperties(currDoc As Document) As DocumentProperties
+ Set getAppSpecificCustomDocProperties = currDoc.CustomDocumentProperties
+End Function
+Public Function getAppSpecificCommentBuiltInDocProperty(currDoc As Document) As DocumentProperty
+ Set getAppSpecificCommentBuiltInDocProperty = currDoc.BuiltInDocumentProperties(wdPropertyComments)
+End Function
+
+Public Function getAppSpecificVBProject(currDoc As Document) As VBProject
+ Set getAppSpecificVBProject = currDoc.VBProject
+End Function
+
+Public Function getAppSpecificOLEClassType(aShape As Shape) As String
+ Dim objType As String
+
+ If aShape.OLEFormat.ProgID = "" Then
+ objType = aShape.OLEFormat.ClassType
+ Else
+ objType = aShape.OLEFormat.ProgID
+ End If
+
+ getAppSpecificOLEClassType = objType
+End Function
+
+Public Sub SetAppToMinimized()
+ Application.WindowState = wdWindowStateMinimize
+ Application.Visible = False
+End Sub
+
+Public Sub LocalizeResources()
+ Dim wrdStrings As StringDataManager
+ Set wrdStrings = New StringDataManager
+
+ wrdStrings.InitStringData (GetResourceDataFileName(ThisDocument.path))
+ LoadCommonStrings wrdStrings
+ LoadWordStrings wrdStrings
+ LoadResultsStrings wrdStrings
+ Set wrdStrings = Nothing
+
+ 'SetWordDriverText
+End Sub
+
+' Set the loaded string variable into the fields in the document
+Private Sub SetWordDriverText()
+ On Error Resume Next
+ CAPP_DOCPROP_LOCATION = RID_STR_COMMON_RESULTS_LOCATION_TYPE_DOCUMENT
+ ThisDocument.FormFields.item("RID_STR_WDVR_SOANA").Result = RID_STR_WDVR_SOANA
+ ThisDocument.FormFields.item("RID_STR_WDVR_INTRO").Result = RID_STR_WDVR_INTRO
+ ThisDocument.FormFields.item("RID_STR_WDVR_TITLE").Result = RID_STR_WDVR_TITLE
+ ThisDocument.FormFields.item("RID_STR_WDVR_PURPO").Result = RID_STR_WDVR_PURPO
+ ThisDocument.FormFields.item("RID_STR_WDVR_PARA1").Result = RID_STR_WDVR_PARA1
+ ThisDocument.FormFields.item("RID_STR_WDVR_ISSUE").Result = RID_STR_WDVR_ISSUE
+ ThisDocument.FormFields.item("RID_STR_WDVR_PARA2").Result = RID_STR_WDVR_PARA2
+End Sub
+
diff --git a/migrationanalysis/src/driver_docs/sources/word/MigrationAnalyser.cls b/migrationanalysis/src/driver_docs/sources/word/MigrationAnalyser.cls
new file mode 100644
index 000000000000..da95587ef5af
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/word/MigrationAnalyser.cls
@@ -0,0 +1,1522 @@
+VERSION 1.0 CLASS
+BEGIN
+ MultiUse = -1 'True
+END
+Attribute VB_Name = "MigrationAnalyser"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = False
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+'Class variables
+Private Enum HFIssueType
+ hfInline
+ hfShape
+ hfFrame
+End Enum
+
+Private Enum HFIssueLocation
+ hfHeader
+ hffooter
+End Enum
+
+
+Private Type ShapeInfo
+ top As Single
+ Height As Single
+End Type
+
+Private Type FrameInfo
+ Height As Single
+ VerticalPosition As Single
+End Type
+
+Private mAnalysis As DocumentAnalysis
+Private mOdd As Boolean
+Private mbFormFieldErrorLogged As Boolean
+Private mbRefFormFieldErrorLogged As Boolean
+
+'***ADDING-ISSUE: Use Following Skeleton as Guideline for Adding Issue
+' For complete list of all RID_STR_... for Issues (IssueType), SubIssues (SubType) and Attributes refer to:
+' word_res.bas and common_res.bas
+'
+' For complete list of all CID_... for Issue Categories(IssueID) and
+' CSTR_... for XML Issues (IssueTypeXML) and XML SubIssues (SubTypeXML) refer to:
+' ApplicationSpecific.bas and CommonMigrationAnalyser.bas
+'
+' You should not have to add any new Issue Categories or matching IssueTypes, only new SubIssues
+Sub Analyze_SKELETON()
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_SKELETON"
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_VBA_MACROS 'Issue Category
+ .IssueType = RID_STR_COMMON_ISSUE_VBA_MACROS 'Issue String
+ .SubType = RID_STR_COMMON_SUBISSUE_PROPERTIES 'SubIssue String
+ .Location = .CLocationDocument 'Location string
+
+ .IssueTypeXML = CSTR_ISSUE_VBA_MACROS 'Non localised XML Issue String
+ .SubTypeXML = CSTR_SUBISSUE_PROPERTIES 'Non localised XML SubIssue String
+ .locationXML = .CXMLLocationDocument 'Non localised XML location
+
+ .SubLocation = 0 'if not set will default to RID_STR_NOT_AVAILABLE_SHORTHAND
+ .Line = 0 'if not set will default to RID_STR_NOT_AVAILABLE_SHORTHAND
+ .column = 0 'if not set will default to RID_STR_NOT_AVAILABLE_SHORTHAND
+
+ ' Add as many Attribute Value pairs as needed
+ ' Note: following must always be true - Attributes.Count = Values.Count
+ .Attributes.Add "AAA"
+ .Values.Add "foobar"
+
+ ' Use AddIssueDetailsNote to add notes to the Issue Details if required
+ ' Public Sub AddIssueDetailsNote(myIssue As IssueInfo, noteNum As Long, noteStr As String, _
+ ' Optional preStr As String = RID_STR_COMMON_NOTE_PRE)
+ ' Where preStr is prepended to the output, with "Note" as the default
+ AddIssueDetailsNote myIssue, 0, RID_STR_COMMON_NOTE_DOCUMENT_PROPERTIES_LOST
+
+ 'Only put this in if you have a preparation function added for this issue in CommonPreparation
+ 'or Preparation - NUll can be replaced with any variant if you want to pass info to the Prepare fnc
+ Call DoPreparation(mAnalysis, myIssue, "", Null, Null)
+
+ mAnalysis.IssuesCountArray(CID_VBA_MACROS) = _
+ mAnalysis.IssuesCountArray(CID_VBA_MACROS) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub DoAnalyse(fileName As String, userFormTypesDict As Scripting.Dictionary, _
+ startDir As String, storeToDir As String, fso As FileSystemObject)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "DoAnalyse"
+ mAnalysis.name = fileName
+ Dim aDoc As Document
+ Dim bUnprotectError As Boolean
+ mAnalysis.TotalIssueTypes = CTOTAL_CATEGORIES
+ mbFormFieldErrorLogged = False
+ mbRefFormFieldErrorLogged = False
+
+ 'Turn off any AutoExce macros before loading the Word doc
+ On Error Resume Next ' Ignore errors on setting
+ WordBasic.DisableAutoMacros 1
+ On Error GoTo HandleErrors
+
+ Dim myPassword As String
+ myPassword = GetDefaultPassword
+
+ 'Always skip password protected documents
+ 'If IsSkipPasswordDocs() Then
+ Dim aPass As String
+ If myPassword <> "" Then
+ aPass = myPassword
+ Else
+ aPass = "xoxoxoxoxo"
+ End If
+
+ On Error Resume Next
+ Set aDoc = Documents.Open(fileName, False, False, False, _
+ aPass, aPass, False, aPass, aPass, wdOpenFormatAuto, _
+ msoEncodingAutoDetect, False)
+ If Err.Number = 5408 Then
+ ' if password protected, try open readonly next
+ Set aDoc = Documents.Open(fileName, False, True, False, _
+ aPass, aPass, False, aPass, aPass, wdOpenFormatAuto, _
+ msoEncodingAutoDetect, False)
+ End If
+ If Err.Number = 5408 Then
+ HandleProtectedDocInvalidPassword mAnalysis, _
+ "User entered Invalid Document Password, further analysis not possible", fso
+ Analyze_Password_Protection True, False
+ GoTo FinalExit
+ ElseIf (Err.Number <> 0) Then
+ GoTo HandleErrors
+ End If
+
+ On Error GoTo HandleErrors
+
+ If aDoc Is Nothing Then GoTo FinalExit
+
+ 'Do Analysis
+ Analyze_Password_Protection aDoc.HasPassword, aDoc.WriteReserved
+ Analyze_Document_Protection aDoc
+
+ If aDoc.ProtectionType <> wdNoProtection Then
+ If myPassword <> "" Then
+ aDoc.Unprotect (myPassword)
+ Else
+ aDoc.Unprotect
+ End If
+ End If
+
+ 'Set Doc Properties
+ SetDocProperties mAnalysis, aDoc, fso
+
+ContinueFromUnprotectError:
+
+ Analyze_Tables_TablesInTables aDoc
+ Analyze_Tables_Borders aDoc
+ Analyze_TOA aDoc
+ If Not bUnprotectError Then
+ Analyze_FieldAndFormFieldIssues aDoc
+ End If
+ Analyze_OLEEmbedded aDoc
+ Analyze_MailMerge_DataSource aDoc
+ Analyze_Macros mAnalysis, userFormTypesDict, aDoc
+ 'Analyze_Numbering aDoc, mAnalysis
+ 'Analyze_NumberingTabs aDoc, mAnalysis
+
+ ' Doc Preparation only
+ ' Save document with any prepared issues under <storeToDir>\prepared\<source doc name>
+ If mAnalysis.PreparableIssuesCount > 0 And CheckDoPrepare Then
+ Dim preparedFullPath As String
+ preparedFullPath = GetPreparedFullPath(mAnalysis.name, startDir, storeToDir, fso)
+ If preparedFullPath <> "" Then
+ If fso.FileExists(preparedFullPath) Then
+ fso.DeleteFile preparedFullPath, True
+ End If
+ If fso.FolderExists(fso.GetParentFolderName(preparedFullPath)) Then
+ aDoc.SaveAs preparedFullPath
+ End If
+ End If
+ End If
+
+ 'DebugMacroInfo
+
+FinalExit:
+
+ If Not aDoc Is Nothing Then 'If Not IsEmpty(aDoc) Then
+ aDoc.Close (False)
+ End If
+ Set aDoc = Nothing
+
+ Exit Sub
+
+HandleErrors:
+ ' MsgBox currentFunctionName & " : " & fileName & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ ' Handle Password error on Doc Open, Modify and Cancel
+ If Err.Number = 5408 Or Err.Number = 4198 Then
+ WriteDebug currentFunctionName & " : " & fileName & ": " & _
+ "User entered Invalid Document Password - " & Err.Number & " " & Err.Description & " " & Err.Source
+ HandleProtectedDocInvalidPassword mAnalysis, _
+ "User entered Invalid Document Password, further analysis not possible", fso
+ Resume FinalExit
+ ElseIf Err.Number = 5485 Then
+ ' Handle Password error on Unprotect Doc
+ WriteDebug currentFunctionName & " : " & fileName & ": " & _
+ "User entered Invalid Document Part Password, Analysis of doc will continue but will skip analysis of:" & _
+ "Forms, Comments, Headers & Footers and Table cell spanning issues - " & Err.Number & " " & Err.Description & " " & Err.Source
+ HandleProtectedDocInvalidPassword mAnalysis, _
+ "User entered Invalid Document Part Password, Analysis of doc will continue but will skip analysis of:" & vbLf & _
+ "Forms, Comments, Headers & Footers and Table cell spanning issues", fso
+ bUnprotectError = True
+ 'wdAllowOnlyComments, wdAllowOnlyFormFields, wdAllowOnlyRevisions
+ Resume ContinueFromUnprotectError
+ End If
+ mAnalysis.Application = RID_STR_COMMON_CANNOT_OPEN
+ WriteDebug currentFunctionName & " : " & fileName & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub DebugMacroInfo()
+ MsgBox "TotalNumLines: " & mAnalysis.MacroTotalNumLines & vbLf & _
+ "NumUserForms: " & mAnalysis.MacroNumUserForms & vbLf & _
+ "NumUserFormControls: " & mAnalysis.MacroNumUserFormControls & vbLf & _
+ "NumUserFormControlTypes: " & mAnalysis.MacroNumUserFormControlTypes & vbLf & _
+ "NumExternalRefs: " & mAnalysis.MacroNumExternalRefs & vbLf & _
+ "MacroNumFieldsUsingMacros: " & mAnalysis.MacroNumFieldsUsingMacros & vbLf & _
+ "NumOLEControls: " & mAnalysis.MacroNumOLEControls & vbLf & _
+ "MacroOverallClass: " & getDocOverallMacroClassAsString(mAnalysis.MacroOverallClass)
+End Sub
+
+Sub SetDocProperties(docAnalysis As DocumentAnalysis, doc As Document, fso As FileSystemObject)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SetProperties"
+ Dim f As File
+ Set f = fso.GetFile(docAnalysis.name)
+
+ docAnalysis.PageCount = doc.ComputeStatistics(wdStatisticPages)
+ docAnalysis.Accessed = f.DateLastAccessed
+
+ On Error Resume Next 'Some apps may not support all props
+ docAnalysis.Application = getAppSpecificApplicationName & " " & Application.Version
+ 'docAnalysis.Application = doc.BuiltinDocumentProperties(wdPropertyAppName)
+ 'If InStr(docAnalysis.Application, "Microsoft") = 1 Then
+ ' docAnalysis.Application = Mid(docAnalysis.Application, Len("Microsoft") + 2)
+ 'End If
+ 'If InStr(Len(docAnalysis.Application) - 2, docAnalysis.Application, ".") = 0 Then
+ ' docAnalysis.Application = docAnalysis.Application & " " & Application.Version
+ 'End If
+
+ docAnalysis.Created = _
+ doc.BuiltInDocumentProperties(wdPropertyTimeCreated)
+ docAnalysis.Modified = _
+ doc.BuiltInDocumentProperties(wdPropertyTimeLastSaved)
+ docAnalysis.Printed = _
+ doc.BuiltInDocumentProperties(wdPropertyTimeLastPrinted)
+ docAnalysis.SavedBy = _
+ doc.BuiltInDocumentProperties(wdPropertyLastAuthor)
+ docAnalysis.Revision = _
+ val(doc.BuiltInDocumentProperties(wdPropertyRevision))
+ docAnalysis.Template = _
+ fso.GetFileName(doc.BuiltInDocumentProperties(wdPropertyTemplate))
+
+FinalExit:
+ Set f = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+'Limitation: Detect first level table in tables, does not detect further nesting
+'Can do so if required
+Sub Analyze_Tables_TablesInTables(currDoc As Document)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Tables_TablesInTables"
+ Dim myTopTable As Table
+ Dim myInnerTable As Table
+ Dim myIssue As IssueInfo
+
+ For Each myTopTable In currDoc.Tables
+ For Each myInnerTable In myTopTable.Tables
+ Dim logString As String
+ Dim myRng As Range
+ Dim startpage As Long
+ Dim startRow As Long
+ Dim StartColumn As Long
+ Dim details As String
+
+ Set myIssue = New IssueInfo
+ Set myRng = myInnerTable.Range
+ myRng.start = myRng.End
+ startpage = myRng.Information(wdActiveEndPageNumber)
+ startRow = myRng.Information(wdStartOfRangeRowNumber)
+ StartColumn = myRng.Information(wdStartOfRangeColumnNumber)
+
+ With myIssue
+ .IssueID = CID_TABLES
+ .IssueType = RID_STR_WORD_ISSUE_TABLES
+ .SubType = RID_STR_WORD_SUBISSUE_NESTED_TABLES
+ .Location = .CLocationPage
+ .SubLocation = startpage
+
+ .IssueTypeXML = CSTR_ISSUE_TABLES
+ .SubTypeXML = CSTR_SUBISSUE_NESTED_TABLES
+ .locationXML = .CXMLLocationPage
+
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_OUTER_TABLE
+ .Values.Add myTopTable.Rows.count & "x" & myTopTable.Columns.count
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_INNER_TABLE
+ .Values.Add myInnerTable.Rows.count & "x" & myInnerTable.Columns.count
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_START_ROW
+ .Values.Add startRow
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_START_COL
+ .Values.Add StartColumn
+ AddIssueDetailsNote myIssue, 0, RID_STR_WORD_NOTE_NESTED_TABLE_WILL_BE_LOST
+
+ mAnalysis.IssuesCountArray(CID_TABLES) = _
+ mAnalysis.IssuesCountArray(CID_TABLES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ Set myRng = Nothing
+ Next
+ Next
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub Analyze_Document_Protection(currDoc As Document)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Document_Protection"
+ If currDoc.ProtectionType = wdNoProtection Then
+ Exit Sub
+ End If
+
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_COMMON_SUBISSUE_DOCUMENT_PARTS_PROTECTION
+ .Location = .CLocationDocument
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_DOCUMENT_PARTS_PROTECTION
+ .locationXML = .CXMLLocationDocument
+
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_PROTECTION
+ Select Case currDoc.ProtectionType
+ Case wdAllowOnlyComments
+ .Values.Add RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_COMMENTS
+ Case wdAllowOnlyFormFields
+ .Values.Add RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_FORM_FIELDS
+ Case wdAllowOnlyRevisions
+ .Values.Add RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_REVISIONS
+ Case Else
+ .Values.Add RID_STR_COMMON_ATTRIBUTE_UNKNOWN
+ End Select
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Password_Protection(bHasPassword As Boolean, bWriteReserved As Boolean)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Password_Protection"
+ Dim myIssue As IssueInfo
+
+ If bHasPassword Or bWriteReserved Then
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_COMMON_SUBISSUE_PASSWORDS_PROTECTION
+ .Location = .CLocationDocument
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_PASSWORDS_PROTECTION
+ .locationXML = .CXMLLocationDocument
+
+ If bHasPassword Then
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_PASSWORD_TO_OPEN
+ .Values.Add RID_STR_WORD_ATTRIBUTE_SET
+ End If
+ If bWriteReserved Then
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_PASSWORD_TO_MODIFY
+ .Values.Add RID_STR_WORD_ATTRIBUTE_SET
+ End If
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+ End If
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_OLEEmbedded(currDoc As Document)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_OLEEmbedded"
+
+ ' Handle Inline Shapes
+ Dim aILShape As InlineShape
+ For Each aILShape In currDoc.InlineShapes
+ Analyze_OLEEmbeddedSingleInlineShape aILShape
+ Next aILShape
+
+ ' Handle Shapes
+ Dim aShape As Shape
+ For Each aShape In currDoc.Shapes
+ Analyze_OLEEmbeddedSingleShape mAnalysis, aShape, _
+ Selection.Information(wdActiveEndPageNumber)
+ Analyze_Lines mAnalysis, aShape, _
+ Selection.Information(wdActiveEndPageNumber)
+ Analyze_Transparency mAnalysis, aShape, _
+ Selection.Information(wdActiveEndPageNumber)
+ Analyze_Gradients mAnalysis, aShape, _
+ Selection.Information(wdActiveEndPageNumber)
+ Next aShape
+
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+
+'WdInlineShapeType constants:
+'wdInlineShapeEmbeddedOLEObject, wdInlineShapeHorizontalLine, wdInlineShapeLinkedOLEObject,
+'wdInlineShapeLinkedPicture, wdInlineShapeLinkedPictureHorizontalLine, wdInlineShapeOLEControlObject,
+'wdInlineShapeOWSAnchor, wdInlineShapePicture, wdInlineShapePictureBullet,
+'wdInlineShapePictureHorizontalLine, wdInlineShapeScriptAnchor
+
+Sub Analyze_OLEEmbeddedSingleInlineShape(aILShape As InlineShape)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_OLEEmbeddedSingleInlineShape"
+ Dim myIssue As IssueInfo
+ Dim bOleObject As Boolean
+ Dim TypeAsString As String
+ Dim XMLTypeAsString As String
+ Dim objName As String
+
+ bOleObject = (aILShape.Type = wdInlineShapeEmbeddedOLEObject) Or _
+ (aILShape.Type = wdInlineShapeLinkedOLEObject) Or _
+ (aILShape.Type = wdInlineShapeOLEControlObject)
+
+ If Not bOleObject Then Exit Sub
+
+ aILShape.Select
+ Select Case aILShape.Type
+ Case wdInlineShapeOLEControlObject
+ TypeAsString = RID_STR_COMMON_OLE_CONTROL
+ XMLTypeAsString = CSTR_SUBISSUE_OLE_CONTROL
+ Case wdInlineShapeEmbeddedOLEObject
+ TypeAsString = RID_STR_COMMON_OLE_EMBEDDED
+ XMLTypeAsString = CSTR_SUBISSUE_OLE_EMBEDDED
+ Case wdInlineShapeLinkedOLEObject
+ TypeAsString = RID_STR_COMMON_OLE_LINKED
+ XMLTypeAsString = CSTR_SUBISSUE_OLE_LINKED
+ Case Else
+ TypeAsString = RID_STR_COMMON_OLE_UNKNOWN
+ XMLTypeAsString = CSTR_SUBISSUE_OLE_UNKNOWN
+ End Select
+
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_PORTABILITY
+ .IssueType = RID_STR_COMMON_ISSUE_PORTABILITY
+ .SubType = TypeAsString
+ .Location = .CLocationPage
+ .SubLocation = Selection.Information(wdActiveEndPageNumber)
+
+ .IssueTypeXML = CSTR_ISSUE_PORTABILITY
+ .SubTypeXML = XMLTypeAsString
+ .locationXML = .CXMLLocationPage
+
+ .Line = Selection.Information(wdFirstCharacterLineNumber)
+ .column = Selection.Information(wdFirstCharacterColumnNumber)
+
+ DoEvents
+ If aILShape.Type = wdInlineShapeEmbeddedOLEObject Or _
+ aILShape.Type = wdInlineShapeOLEControlObject Then
+
+ 'If Object is invalid can get automation server hanging
+ Dim tmpStr As String
+ On Error Resume Next
+ tmpStr = aILShape.OLEFormat.Object
+ If Err.Number = 0 Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_OBJECT_TYPE
+ .Values.Add aILShape.OLEFormat.ProgID
+ Else
+ Err.Clear
+ tmpStr = aILShape.OLEFormat.ClassType
+ If Err.Number = 0 Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_OBJECT_TYPE
+ .Values.Add aILShape.OLEFormat.ClassType
+ Else
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_OBJECT_TYPE
+ .Values.Add RID_STR_COMMON_NA
+ End If
+ End If
+
+ If aILShape.Type = wdInlineShapeOLEControlObject Then
+ mAnalysis.MacroNumOLEControls = 1 + mAnalysis.MacroNumOLEControls
+ End If
+
+ objName = aILShape.OLEFormat.Object.name
+ If Err.Number = 0 Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_OBJECT_NAME
+ .Values.Add objName
+ End If
+ On Error GoTo HandleErrors
+ End If
+ If aILShape.Type = wdInlineShapeLinkedOLEObject Then
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_SOURCE
+ .Values.Add aILShape.LinkFormat.SourceFullName
+ End If
+
+ mAnalysis.IssuesCountArray(CID_PORTABILITY) = _
+ mAnalysis.IssuesCountArray(CID_PORTABILITY) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebugLevelTwo currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+'Appears to be picked up by other OLE analysis code - the Shapes are actually field codes
+'So I get double reporting if I use this as well.
+Sub Analyze_OLEFields(myField As Field)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_OLEFields"
+ Dim myIssue As IssueInfo
+ Dim bOleObject As Boolean
+ Dim TypeAsString As String
+ Dim XMLTypeAsString As String
+
+ bOleObject = (myField.Type = wdFieldOCX)
+
+ If Not bOleObject Then Exit Sub
+
+ myField.Select
+ Select Case myField.Type
+ Case wdFieldLink
+ TypeAsString = RID_STR_COMMON_OLE_FIELD_LINK
+ XMLTypeAsString = CSTR_SUBISSUE_OLE_FIELD_LINK
+ Case Else
+ TypeAsString = RID_STR_COMMON_OLE_UNKNOWN
+ XMLTypeAsString = CSTR_SUBISSUE_OLE_UNKNOWN
+ End Select
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_PORTABILITY
+ .IssueType = RID_STR_COMMON_ISSUE_PORTABILITY
+ .SubType = TypeAsString
+ .Location = .CLocationPage
+ .SubLocation = Selection.Information(wdActiveEndPageNumber)
+
+ .IssueTypeXML = CSTR_ISSUE_PORTABILITY
+ .SubTypeXML = XMLTypeAsString
+ .locationXML = .CXMLLocationPage
+
+ .Line = Selection.Information(wdFirstCharacterLineNumber)
+ .column = Selection.Information(wdFirstCharacterColumnNumber)
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_OBJECT_TYPE
+ .Values.Add myField.OLEFormat.ClassType
+
+ If myField.Type = wdFieldLink Then
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_LINK
+ .Values.Add myField.LinkFormat.SourceFullName
+ End If
+ mAnalysis.IssuesCountArray(CID_PORTABILITY) = _
+ mAnalysis.IssuesCountArray(CID_PORTABILITY) + 1
+ End With
+ mAnalysis.Issues.Add myIssue
+
+ Set myIssue = Nothing
+
+ Exit Sub
+
+HandleErrors:
+ Set myIssue = Nothing
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Sub Analyze_MailMergeField(myField As Field)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_MailMergeField"
+ Dim myIssue As IssueInfo
+ Dim TypeAsString As String
+ Dim bProblemMailMergeField As Boolean
+
+ bProblemMailMergeField = _
+ (myField.Type = wdFieldFillIn) Or _
+ (myField.Type = wdFieldAsk) Or _
+ (myField.Type = wdFieldMergeRec) Or _
+ (myField.Type = wdFieldMergeField) Or _
+ (myField.Type = wdFieldNext) Or _
+ (myField.Type = wdFieldRevisionNum) Or _
+ (myField.Type = wdFieldSequence) Or _
+ (myField.Type = wdFieldAutoNum) Or _
+ (myField.Type = wdFieldAutoNumOutline) Or _
+ (myField.Type = wdFieldAutoNumLegal)
+
+ If bProblemMailMergeField Then
+ 'Some of the following are numbering fields and need to be broken out into a seperate function. See migration guide.
+
+ Select Case myField.Type
+ Case wdFieldFillIn
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_FILL_IN
+ Case wdFieldAsk
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_ASK
+ Case wdFieldMergeRec
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_MERGE_RECORDS
+ Case wdFieldMergeField
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_MERGE_FIELDS
+ Case wdFieldNext
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_NEXT
+ Case wdFieldRevisionNum
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_REVISION_NUMBER
+ Case wdFieldSequence
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_SEQUENCE
+ Case wdFieldAutoNum
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER
+ Case wdFieldAutoNumOutline
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER_OUTLINE
+ Case wdFieldAutoNumLegal
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER_LEGAL
+ Case Else
+ TypeAsString = RID_STR_WORD_ENUMERATION_MAILMERGE_FIELD_NAME_NOT_KNOWN
+ End Select
+
+ Set myIssue = New IssueInfo
+ myField.Select
+ With myIssue
+ .IssueID = CID_FIELDS
+ .IssueType = RID_STR_WORD_ISSUE_FIELDS
+ .SubType = RID_STR_WORD_SUBISSUE_MAILMERGE_FIELD
+ .Location = .CLocationPage
+
+ .IssueTypeXML = CSTR_ISSUE_FIELDS
+ .SubTypeXML = CSTR_SUBISSUE_MAILMERGE_FIELD
+ .locationXML = .CXMLLocationPage
+
+ .SubLocation = Selection.Information(wdActiveEndPageNumber)
+ .Line = Selection.Information(wdFirstCharacterLineNumber)
+ .column = Selection.Information(wdFirstCharacterColumnNumber)
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add TypeAsString
+ If myField.Code.Text <> "" Then
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_TEXT
+ .Values.Add myField.Code.Text
+ End If
+
+ mAnalysis.IssuesCountArray(CID_FIELDS) = _
+ mAnalysis.IssuesCountArray(CID_FIELDS) + 1
+ End With
+ mAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ End If
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+'Get field DS Info
+Sub Analyze_MailMerge_DataSource(currDoc As Document)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_MailMerge_DataSource"
+ ' There may be no mail merge in the document
+ If (currDoc.MailMerge.DataSource.Type = wdNoMergeInfo) Then
+ Exit Sub
+ End If
+
+ 'Dim issue As SimpleAnalysisInfo
+ If (currDoc.MailMerge.DataSource.Type <> wdNoMergeInfo) Then
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_CONTENT_AND_DOCUMENT_PROPERTIES
+ .IssueType = RID_STR_COMMON_ISSUE_CONTENT_AND_DOCUMENT_PROPERTIES
+ .SubType = RID_STR_WORD_SUBISSUE_MAILMERGE_DATASOURCE
+ .Location = .CLocationDocument
+
+ .IssueTypeXML = CSTR_ISSUE_CONTENT_DOCUMENT_PROPERTIES
+ .SubTypeXML = CSTR_SUBISSUE_MAILMERGE_DATASOURCE
+ .locationXML = .CXMLLocationDocument
+
+ .Attributes.Add RID_STR_COMMON_ATTRIBUTE_NAME
+ .Values.Add currDoc.MailMerge.DataSource.name
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_DATASOURCE
+ .Values.Add currDoc.MailMerge.DataSource.Type
+
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) = _
+ mAnalysis.IssuesCountArray(CID_CONTENT_AND_DOCUMENT_PROPERTIES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ End If
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Function getFormFieldTypeAsString(fieldType As WdFieldType)
+ Dim Str As String
+
+ Select Case fieldType
+ Case wdFieldFormCheckBox
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_CHECK_BOX
+ Case wdFieldFormDropDown
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_DROP_DOWN
+ Case wdFieldFormTextInput
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_TEXT
+ Case Else
+ Str = RID_STR_WORD_ENUMERATION_UNKNOWN
+ End Select
+
+ getFormFieldTypeAsString = Str
+End Function
+Function getTextFormFieldTypeAsString(fieldType As WdTextFormFieldType)
+ Dim Str As String
+
+ Select Case fieldType
+ Case wdCalculationText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_CALCULATION
+ Case wdCurrentDateText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_CURRENT_DATE
+ Case wdCurrentTimeText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_CURRENT_TIME
+ Case wdDateText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_DATE
+ Case wdNumberText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_NUMBER
+ Case wdRegularText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_REGULAR
+ Case Else
+ Str = RID_STR_WORD_ENUMERATION_UNKNOWN
+ End Select
+
+ getTextFormFieldTypeAsString = Str
+End Function
+Function getTextFormFieldDefaultAsString(fieldType As WdTextFormFieldType)
+ Dim Str As String
+
+ Select Case fieldType
+ Case wdCalculationText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_EXPRESSION
+ Case wdCurrentDateText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_DATE
+ Case wdCurrentTimeText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_TIME
+ Case wdDateText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_DATE
+ Case wdNumberText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_NUMBER
+ Case wdRegularText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_TEXT
+ Case Else
+ Str = RID_STR_WORD_ENUMERATION_UNKNOWN
+ End Select
+
+ getTextFormFieldDefaultAsString = Str
+End Function
+Function getTextFormFieldFormatAsString(fieldType As WdTextFormFieldType)
+ Dim Str As String
+
+ Select Case fieldType
+ Case wdCalculationText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_NUMBER
+ Case wdCurrentDateText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_DATE
+ Case wdCurrentTimeText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_TIME
+ Case wdDateText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_DATE
+ Case wdNumberText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_NUMBER
+ Case wdRegularText
+ Str = RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_TEXT
+ Case Else
+ Str = RID_STR_WORD_ENUMERATION_UNKNOWN
+ End Select
+
+ getTextFormFieldFormatAsString = Str
+End Function
+
+Sub Analyze_FieldAndFormFieldIssues(currDoc As Document)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_FormFields"
+ Dim myIssue As IssueInfo
+
+ 'Analysze all Fields in doc
+ Dim myField As Field
+
+ For Each myField In currDoc.Fields
+ 'Analyze Mail Merge Fields
+ Analyze_MailMergeField myField
+
+ 'Analyze TOA Fields
+ Analyze_TOAField myField
+ Next myField
+
+ 'Analyze FormField doc issues
+ If currDoc.FormFields.count = 0 Then GoTo FinalExit
+
+ If (currDoc.FormFields.Shaded) Then
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_FIELDS
+ .IssueType = RID_STR_WORD_ISSUE_FIELDS
+ .SubType = RID_STR_WORD_SUBISSUE_APPEARANCE
+ .Location = .CLocationDocument
+
+ .IssueTypeXML = CSTR_ISSUE_FIELDS
+ .SubTypeXML = CSTR_SUBISSUE_APPEARANCE
+ .locationXML = .CXMLLocationDocument
+
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_GREYED
+ .Values.Add RID_STR_WORD_TRUE
+ mAnalysis.IssuesCountArray(CID_FIELDS) = _
+ mAnalysis.IssuesCountArray(CID_FIELDS) + 1
+ End With
+ mAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ End If
+
+ 'Analyse all FormFields in doc
+ Dim myFormField As FormField
+
+ For Each myFormField In currDoc.FormFields
+ Analyze_FormFieldIssue myFormField
+ Next myFormField
+
+FinalExit:
+ Set myIssue = Nothing
+ Set myFormField = Nothing
+ Exit Sub
+
+HandleErrors:
+
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_FormFieldIssue(myFormField As FormField)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_FormFieldIssue"
+ Dim myIssue As IssueInfo
+ Dim bCheckBoxIssues As Boolean
+ Dim bFormFieldIssues As Boolean
+
+ bCheckBoxIssues = False
+ If (myFormField.Type = wdFieldFormCheckBox) Then
+ If myFormField.CheckBox.AutoSize Then
+ bCheckBoxIssues = True
+ End If
+ End If
+
+ bFormFieldIssues = bCheckBoxIssues
+
+ If Not bFormFieldIssues Then GoTo FinalExit
+
+ myFormField.Select
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_FIELDS
+ .IssueType = RID_STR_WORD_ISSUE_FIELDS
+ .SubType = RID_STR_WORD_SUBISSUE_FORM_FIELD
+ .Location = .CLocationPage
+
+ .IssueTypeXML = CSTR_ISSUE_FIELDS
+ .SubTypeXML = CSTR_SUBISSUE_FORM_FIELD
+ .locationXML = .CXMLLocationPage
+
+ .SubLocation = Selection.Information(wdActiveEndPageNumber)
+ .Line = Selection.Information(wdFirstCharacterLineNumber)
+ .column = Selection.Information(wdFirstCharacterColumnNumber)
+ myIssue.Attributes.Add RID_STR_COMMON_ATTRIBUTE_TYPE
+ myIssue.Values.Add getFormFieldTypeAsString(myFormField.Type)
+ End With
+
+ 'Checkbox Issues
+ If (myFormField.Type = wdFieldFormCheckBox) Then
+ 'AutoSize CheckBoxes
+ If myFormField.CheckBox.AutoSize Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_AUTOSIZE
+ myIssue.Values.Add RID_STR_WORD_TRUE
+ End If
+ End If
+
+ 'TextInput Issues
+ If myFormField.Type = wdFieldFormTextInput Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_TEXT_FORM_FIELD_TYPE
+ myIssue.Values.Add getTextFormFieldTypeAsString(myFormField.TextInput.Type)
+ Dim bLostType As Boolean
+ bLostType = False
+ If (myFormField.TextInput.Type = wdCalculationText) Or _
+ (myFormField.TextInput.Type = wdCurrentDateText) Or _
+ (myFormField.TextInput.Type = wdCurrentTimeText) Then
+ AddIssueDetailsNote myIssue, 0, getTextFormFieldTypeAsString(myFormField.TextInput.Type) & _
+ " " & RID_STR_WORD_NOTE_FORM_FIELD_TYPE_LOST
+ bLostType = True
+ End If
+
+ If (myFormField.TextInput.Format <> "") Then
+ myIssue.Attributes.Add getTextFormFieldFormatAsString(myFormField.TextInput.Type)
+ myIssue.Values.Add myFormField.TextInput.Format
+ End If
+
+ 'Default text
+ If (myFormField.TextInput.Default <> "") Then
+ myIssue.Attributes.Add getTextFormFieldDefaultAsString(myFormField.TextInput.Type)
+ myIssue.Values.Add myFormField.TextInput.Default
+ End If
+
+ 'Maximum text
+ If (myFormField.TextInput.Width <> 0) Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_MAX_LENGTH
+ myIssue.Values.Add myFormField.TextInput.Width
+ End If
+
+ 'Fill-in disabled
+ If (myFormField.Enabled = False) And (Not bLostType) Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_FILLIN_ENABLED
+ myIssue.Values.Add RID_STR_WORD_FALSE
+ End If
+ End If
+
+ 'Help Key(F1)
+ If (myFormField.OwnHelp And myFormField.HelpText <> "") Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_HELP_KEY_F1_OWN_TEXT
+ myIssue.Values.Add myFormField.HelpText
+ ElseIf ((Not myFormField.OwnHelp) And myFormField.HelpText <> "") Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_HELP_KEY_F1_AUTO_TEXT
+ myIssue.Values.Add myFormField.HelpText
+ End If
+
+ 'StatusHelp
+ If (myFormField.OwnStatus And myFormField.StatusText <> "") Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_STATUS_BAR_HELP_OWN_TEXT
+ myIssue.Values.Add myFormField.StatusText
+ ElseIf ((Not myFormField.OwnStatus) And myFormField.StatusText <> "") Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_STATUS_BAR_HELP_AUTO_TEXT
+ myIssue.Values.Add myFormField.StatusText
+ End If
+
+ 'Macros
+ If (myFormField.EntryMacro <> "") Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_ENTRY_MACRO
+ myIssue.Values.Add myFormField.EntryMacro
+ End If
+ If (myFormField.ExitMacro <> "") Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_EXIT_MACRO
+ myIssue.Values.Add myFormField.ExitMacro
+ End If
+ If (myFormField.EntryMacro <> "") Or (myFormField.ExitMacro <> "") Then
+ mAnalysis.MacroNumFieldsUsingMacros = 1 + mAnalysis.MacroNumFieldsUsingMacros
+ End If
+
+ 'LockedField
+ If (myFormField.Enabled = False) And (myFormField.Type <> wdFieldFormTextInput) Then
+ myIssue.Attributes.Add RID_STR_WORD_ATTRIBUTE_FORM_FIELD_LOCKED
+ myIssue.Values.Add RID_STR_WORD_TRUE
+ End If
+
+ mAnalysis.IssuesCountArray(CID_FIELDS) = _
+ mAnalysis.IssuesCountArray(CID_FIELDS) + 1
+
+ mAnalysis.Issues.Add myIssue
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ 'Log first occurence for this doc
+ If Not mbFormFieldErrorLogged Then
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ mbFormFieldErrorLogged = True
+ End If
+ Resume FinalExit
+End Sub
+
+
+Sub Analyze_TOA(currDoc As Document)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_TOA"
+
+ Dim toa As TableOfAuthorities
+ Dim myIssue As IssueInfo
+ Dim myRng As Range
+
+ For Each toa In currDoc.TablesOfAuthorities
+ Set myRng = toa.Range
+ myRng.start = myRng.End
+ Set myIssue = New IssueInfo
+ myRng.Select
+
+ Dim TabLeaderAsString As String
+ Select Case toa.TabLeader
+ Case wdTabLeaderDashes
+ TabLeaderAsString = RID_STR_WORD_ENUMERATION_INDEX_LEADER_DASHES
+ Case wdTabLeaderDots
+ TabLeaderAsString = RID_STR_WORD_ENUMERATION_INDEX_LEADER_DOTS
+ Case wdTabLeaderHeavy
+ TabLeaderAsString = RID_STR_WORD_ENUMERATION_INDEX_LEADER_HEAVY
+ Case wdTabLeaderLines
+ TabLeaderAsString = RID_STR_WORD_ENUMERATION_INDEX_LEADER_LINES
+ Case wdTabLeaderMiddleDot
+ TabLeaderAsString = RID_STR_WORD_ENUMERATION_INDEX_LEADER_MIDDLEDOT
+ Case wdTabLeaderSpaces
+ TabLeaderAsString = RID_STR_WORD_ENUMERATION_INDEX_LEADER_SPACES
+ Case Else
+ TabLeaderAsString = RID_STR_WORD_ENUMERATION_UNKNOWN
+ End Select
+
+ Dim FormatAsString As String
+ Select Case currDoc.TablesOfAuthorities.Format
+ Case wdTOAClassic
+ FormatAsString = RID_STR_WORD_ENUMERATION_INDEX_TABLES_CLASSIC
+ Case wdTOADistinctive
+ FormatAsString = RID_STR_WORD_ENUMERATION_INDEX_TABLES_DISTINCTIVE
+ Case wdTOAFormal
+ FormatAsString = RID_STR_WORD_ENUMERATION_INDEX_TABLES_FORMAL
+ Case wdTOASimple
+ FormatAsString = RID_STR_WORD_ENUMERATION_INDEX_TABLES_SIMPLE
+ Case wdTOATemplate
+ FormatAsString = RID_STR_WORD_ENUMERATION_INDEX_TABLES_FROM_TEMPLATE
+ Case Else
+ FormatAsString = RID_STR_WORD_ENUMERATION_UNKNOWN
+ End Select
+
+ With myIssue
+ .IssueID = CID_INDEX_AND_REFERENCES
+ .IssueType = RID_STR_WORD_ISSUE_INDEX_AND_REFERENCES
+ .SubType = RID_STR_WORD_SUBISSUE_TABLE_OF_AUTHORITIES
+ .Location = .CLocationPage
+
+ .IssueTypeXML = CSTR_ISSUE_INDEX_AND_REFERENCES
+ .SubTypeXML = CSTR_SUBISSUE_TABLE_OF_AUTHORITIES
+ .locationXML = .CXMLLocationPage
+
+ .SubLocation = myRng.Information(wdActiveEndPageNumber)
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_LEADER
+ .Values.Add TabLeaderAsString
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_WORD_NOTE_TOA_MIGRATE_AS_PLAIN_TEXT
+
+ mAnalysis.IssuesCountArray(CID_INDEX_AND_REFERENCES) = _
+ mAnalysis.IssuesCountArray(CID_INDEX_AND_REFERENCES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ Set myRng = Nothing
+ Next
+FinalExit:
+ Set myIssue = Nothing
+ Set myRng = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_TOAField(myField As Field)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_TOAField"
+
+ Dim toa As TableOfAuthorities
+ Dim myIssue As IssueInfo
+
+ If myField.Type = wdFieldTOAEntry Then
+ Set myIssue = New IssueInfo
+ myField.Select
+
+ With myIssue
+ .IssueID = CID_FIELDS
+ .IssueType = RID_STR_WORD_ISSUE_FIELDS
+ .SubType = RID_STR_WORD_SUBISSUE_TABLE_OF_AUTHORITIES_FIELD
+ .Location = .CLocationPage
+
+ .IssueTypeXML = CSTR_ISSUE_FIELDS
+ .SubTypeXML = CSTR_SUBISSUE_TABLE_OF_AUTHORITIES_FIELD
+ .locationXML = .CXMLLocationPage
+
+ .SubLocation = Selection.Information(wdActiveEndPageNumber)
+ .Line = Selection.Information(wdFirstCharacterLineNumber)
+ .column = Selection.Information(wdFirstCharacterColumnNumber)
+
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_FIELD_TEXT
+ .Values.Add myField.Code.Text
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_WORD_NOTE_TOA_FIELD_LOST_ON_ROUNDTRIP
+
+ mAnalysis.IssuesCountArray(CID_FIELDS) = _
+ mAnalysis.IssuesCountArray(CID_FIELDS) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ End If
+
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Tables_Borders(currDoc As Document)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Tables_Borders"
+ Dim myIssue As IssueInfo
+ Set myIssue = New IssueInfo
+ Dim aTable As Table
+ Dim invalidBorders As String
+
+ For Each aTable In currDoc.Tables
+ invalidBorders = GetInvalidBorder(aTable)
+ If invalidBorders <> "" Then
+ aTable.Range.Select
+ Set myIssue = New IssueInfo
+ With myIssue
+ .IssueID = CID_TABLES
+ .IssueType = RID_STR_WORD_ISSUE_TABLES
+ .SubType = RID_STR_WORD_SUBISSUE_BORDER_STYLES
+ .Location = .CLocationPage
+
+ .IssueTypeXML = CSTR_ISSUE_TABLES
+ .SubTypeXML = CSTR_SUBISSUE_BORDER_STYLES
+ .locationXML = .CXMLLocationPage
+
+ .SubLocation = Selection.Information(wdActiveEndPageNumber)
+ .Line = Selection.Information(wdFirstCharacterLineNumber)
+ .column = Selection.Information(wdFirstCharacterColumnNumber)
+
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_BORDERS_NOT_DISPLAYING
+ .Values.Add invalidBorders
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_WORD_NOTE_TABLE_BORDER
+
+ mAnalysis.IssuesCountArray(CID_TABLES) = mAnalysis.IssuesCountArray(CID_TABLES) + 1
+ End With
+
+ mAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ End If
+ Next aTable
+FinalExit:
+ Set myIssue = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+Function GetInvalidBorder(aTable As Table) As String
+
+ Dim theResult As String
+ theResult = ""
+
+ If IsInvalidBorderStyle(aTable.Borders(wdBorderTop).LineStyle) Then
+ theResult = theResult + "Top, "
+ End If
+ If IsInvalidBorderStyle(aTable.Borders(wdBorderBottom).LineStyle) Then
+ theResult = theResult + "Bottom, "
+ End If
+ If IsInvalidBorderStyle(aTable.Borders(wdBorderDiagonalDown).LineStyle) Then
+ theResult = theResult + "Down Diagonal, "
+ End If
+ If IsInvalidBorderStyle(aTable.Borders(wdBorderDiagonalUp).LineStyle) Then
+ theResult = theResult + "Up Diagonal, "
+ End If
+ If IsInvalidBorderStyle(aTable.Borders(wdBorderHorizontal).LineStyle) Then
+ theResult = theResult + "Horizontal, "
+ End If
+ If IsInvalidBorderStyle(aTable.Borders(wdBorderLeft).LineStyle) Then
+ theResult = theResult + "Left, "
+ End If
+ If IsInvalidBorderStyle(aTable.Borders(wdBorderRight).LineStyle) Then
+ theResult = theResult + "Right, "
+ End If
+ If IsInvalidBorderStyle(aTable.Borders(wdBorderVertical).LineStyle) Then
+ theResult = theResult + "Vertical, "
+ End If
+
+ If theResult <> "" Then
+ theResult = Left(theResult, (Len(theResult) - 2)) + "."
+ End If
+
+ GetInvalidBorder = theResult
+End Function
+
+Function IsInvalidBorderStyle(aStyle As WdLineStyle) As Boolean
+
+ Dim IsInvalid As Boolean
+
+ Select Case aStyle
+ Case wdLineStyleDot, wdLineStyleDashSmallGap, wdLineStyleDashLargeGap, wdLineStyleDashDot, _
+ wdLineStyleDashDotDot, wdLineStyleTriple, wdLineStyleThinThickThinSmallGap, wdLineStyleThinThickMedGap, _
+ wdLineStyleThickThinMedGap, wdLineStyleThinThickThinMedGap, wdLineStyleThinThickLargeGap, _
+ wdLineStyleThickThinLargeGap, wdLineStyleThinThickThinLargeGap, wdLineStyleSingleWavy, _
+ wdLineStyleDoubleWavy, wdLineStyleDashDotStroked, wdLineStyleEmboss3D, wdLineStyleEngrave3D
+ IsInvalid = True
+ Case Else
+ IsInvalid = False
+ End Select
+
+ IsInvalidBorderStyle = IsInvalid
+
+End Function
+
+Private Sub Class_Initialize()
+ Set mAnalysis = New DocumentAnalysis
+End Sub
+Private Sub Class_Terminate()
+ Set mAnalysis = Nothing
+End Sub
+
+Public Property Get Results() As DocumentAnalysis
+ Set Results = mAnalysis
+End Property
+
+Sub Analyze_NumberingTabs(currDoc As Document, docAnalysis As DocumentAnalysis)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_NumberingTabs"
+
+ Dim tb As TabStop
+ Dim customTabPos As Single
+ Dim tabs As Integer
+ Dim listLvl As Long
+ Dim tp As Single
+ Dim bHasAlignmentProblem As Boolean
+ Dim bHasTooManyTabs As Boolean
+ Dim myIssue As IssueInfo
+ Dim p As Object
+
+ bHasAlignmentProblem = False
+ bHasTooManyTabs = False
+
+ For Each p In currDoc.ListParagraphs
+ tabs = 0
+ For Each tb In p.TabStops
+ If tb.customTab Then
+ tabs = tabs + 1
+ customTabPos = tb.Position
+ End If
+ Next
+
+ If tabs = 1 Then
+ listLvl = p.Range.ListFormat.ListLevelNumber
+ tp = p.Range.ListFormat.ListTemplate.ListLevels.item(listLvl).TabPosition
+ If (p.Range.ListFormat.ListTemplate.ListLevels.item(listLvl).Alignment <> _
+ wdListLevelAlignLeft) Then
+ ' ERROR: alignment problem
+ bHasAlignmentProblem = True
+ End If
+
+ If tp <> customTabPos Then
+ p.Range.InsertBefore ("XXXXX")
+ End If
+ 'OK - at least heuristically
+ Else
+ 'ERROR: too many tabs
+ bHasTooManyTabs = True
+ End If
+ Next
+
+ If (bHasAlignmentProblem) Then
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_INDEX_AND_REFERENCES
+ .IssueType = RID_STR_WORD_ISSUE_INDEX_AND_REFERENCES
+ .SubType = RID_STR_WORD_SUBISSUE_NUMBERING_TAB_ALIGNMENT
+ .Location = .CLocationDocument 'Location string
+
+ .IssueTypeXML = CSTR_ISSUE_INDEX_AND_REFERENCES
+ .SubTypeXML = CSTR_SUBISSUE_NUMBERING_TAB_ALIGNMENT
+ .locationXML = .CXMLLocationDocument
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_WORD_NOTE_NUMBERING_TAB_ALIGNMENT
+
+ docAnalysis.IssuesCountArray(CID_INDEX_AND_REFERENCES) = _
+ docAnalysis.IssuesCountArray(CID_INDEX_AND_REFERENCES) + 1
+ End With
+ docAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ End If
+
+ If (bHasTooManyTabs) Then
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_INDEX_AND_REFERENCES
+ .IssueType = RID_STR_WORD_ISSUE_INDEX_AND_REFERENCES
+ .SubType = RID_STR_WORD_SUBISSUE_NUMBERING_TAB_OVERFLOW
+ .Location = .CLocationDocument 'Location string
+
+ .IssueTypeXML = CSTR_ISSUE_INDEX_AND_REFERENCES
+ .SubTypeXML = CSTR_SUBISSUE_NUMBERING_TAB_OVERFLOW
+ .locationXML = .CXMLLocationDocument
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_WORD_NOTE_NUMBERING_TAB_OVERFLOW
+
+ docAnalysis.IssuesCountArray(CID_INDEX_AND_REFERENCES) = _
+ docAnalysis.IssuesCountArray(CID_INDEX_AND_REFERENCES) + 1
+ End With
+ docAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Set myIssue = Nothing
+ Resume FinalExit
+End Sub
+
+Sub Analyze_Numbering(currDoc As Document, docAnalysis As DocumentAnalysis)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Analyze_Numbering"
+
+ Dim myIssue As IssueInfo
+ Dim nFormatProblems As Integer
+ Dim nAlignmentProblems As Integer
+ nFormatProblems = 0
+ nAlignmentProblems = 0
+
+ Dim lt As ListTemplate
+ Dim lvl As ListLevel
+ Dim I, l_, p1, p2, v1, v2 As Integer
+ Dim display_levels As Integer
+ Dim fmt, prefix, postfix, res As String
+
+ For Each lt In currDoc.ListTemplates
+ l_ = 0
+ For Each lvl In lt.ListLevels
+ l_ = l_ + 1
+ 'Selection.TypeText Text:="List Number Format " + lvl.NumberFormat
+ 'Apply Heuristic
+ fmt = lvl.NumberFormat
+ p1 = InStr(fmt, "%")
+ p2 = InStrRev(fmt, "%")
+ v1 = val(Mid(fmt, p1 + 1, 1))
+ v2 = val(Mid(fmt, p2 + 1, 1))
+ display_levels = v2 - v1 + 1
+ prefix = Mid(fmt, 1, p1 - 1)
+ postfix = Mid(fmt, p2 + 2)
+ 'Check Heuristic
+ res = prefix
+ For I = 2 To display_levels
+ res = "%" + Trim(Str(l_ - I + 1)) + "." + res
+ Next
+ res = res + "%" + Trim(Str(l_)) + postfix
+ If (StrComp(res, fmt) <> 0) Then
+ nFormatProblems = nFormatProblems + 1
+ 'Selection.TypeText Text:="Label Problem: NumberFormat=" + fmt + " Heuristic=" + res
+ End If
+
+ 'check alignment
+ If (lvl.NumberPosition <> wdListLevelAlignLeft) Then
+ nAlignmentProblems = nAlignmentProblems + 1
+ 'Selection.TypeText Text:="Number alignment problem"
+ End If
+ Next
+ Next
+
+ If (nFormatProblems > 0) Then
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_INDEX_AND_REFERENCES
+ .IssueType = RID_STR_WORD_ISSUE_INDEX_AND_REFERENCES
+ .SubType = RID_STR_WORD_SUBISSUE_NUMBERING_FORMAT
+ .Location = .CLocationDocument 'Location string
+
+ .IssueTypeXML = CSTR_ISSUE_INDEX_AND_REFERENCES
+ .SubTypeXML = CSTR_SUBISSUE_NUMBERING_FORMAT
+ .locationXML = .CXMLLocationDocument
+
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_COUNT
+ .Values.Add nFormatProblems
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_WORD_NOTE_NUMBERING_FORMAT
+
+ docAnalysis.IssuesCountArray(CID_INDEX_AND_REFERENCES) = _
+ docAnalysis.IssuesCountArray(CID_INDEX_AND_REFERENCES) + 1
+ End With
+ docAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ End If
+
+ If (nAlignmentProblems > 0) Then
+ Set myIssue = New IssueInfo
+
+ With myIssue
+ .IssueID = CID_INDEX_AND_REFERENCES
+ .IssueType = RID_STR_WORD_ISSUE_INDEX_AND_REFERENCES
+ .SubType = RID_STR_WORD_SUBISSUE_NUMBERING_ALIGNMENT
+ .Location = .CLocationDocument 'Location string
+
+ .IssueTypeXML = CSTR_ISSUE_INDEX_AND_REFERENCES
+ .SubTypeXML = CSTR_SUBISSUE_NUMBERING_ALIGNMENT
+ .locationXML = .CXMLLocationDocument
+
+ .Attributes.Add RID_STR_WORD_ATTRIBUTE_COUNT
+ .Values.Add nAlignmentProblems
+
+ AddIssueDetailsNote myIssue, 0, RID_STR_WORD_NOTE_NUMBERING_ALIGNMENT
+
+ docAnalysis.IssuesCountArray(CID_INDEX_AND_REFERENCES) = _
+ docAnalysis.IssuesCountArray(CID_INDEX_AND_REFERENCES) + 1
+ End With
+ docAnalysis.Issues.Add myIssue
+ Set myIssue = Nothing
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & mAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Set myIssue = Nothing
+ Resume FinalExit
+End Sub
+
diff --git a/migrationanalysis/src/driver_docs/sources/word/Preparation.bas b/migrationanalysis/src/driver_docs/sources/word/Preparation.bas
new file mode 100644
index 000000000000..11ec18ed7b94
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/word/Preparation.bas
@@ -0,0 +1,151 @@
+Attribute VB_Name = "Preparation"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+Option Explicit
+
+Function Prepare_HeaderFooter_GraphicFrames(docAnalysis As DocumentAnalysis, myIssue As IssueInfo, _
+ var As Variant, currDoc As Document) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Prepare_HeaderFooter_GraphicFrames"
+
+ Dim myPrepInfo As PrepareInfo
+ Set myPrepInfo = var
+
+ Dim smove As Long
+ Dim temp As Single
+ Dim ELength As Single
+ Dim PageHeight As Single
+ Dim Snum As Integer
+ Dim Fnum As Integer
+ Dim I As Integer
+ Dim myshape As Shape
+ Dim shapetop() As Single
+ Dim temptop As Single
+
+ With currDoc.ActiveWindow 'change to printview
+ If .View.SplitSpecial = wdPaneNone Then
+ .ActivePane.View.Type = wdPrintView
+ Else
+ .Panes(2).Close
+ .ActivePane.View.Type = wdPrintView
+ .View.Type = wdPrintView
+ End If
+ End With
+
+ PageHeight = currDoc.PageSetup.PageHeight
+ PageHeight = PageHeight / 2
+
+ Selection.GoTo what:=wdGoToPage, Which:=wdGoToAbsolute, _
+ count:=myPrepInfo.HF_OnPage
+ currDoc.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
+
+ Snum = myPrepInfo.HF_Shapes.count
+ If Snum <> 0 Then
+ ReDim shapetop(Snum)
+ ReDim top(Snum)
+ I = 0
+ For Each myshape In myPrepInfo.HF_Shapes
+ If myshape.Type = msoPicture Then
+ If myshape.RelativeVerticalPosition <> wdRelativeVerticalPositionPage Then
+ shapetop(I) = myshape.top + myshape.Anchor.Information(wdVerticalPositionRelativeToPage)
+ Else
+ shapetop(I) = myshape.top
+ End If
+ ElseIf myshape.Type = msoTextBox Then
+ myshape.TextFrame.TextRange.Select
+
+ shapetop(I) = Selection.Information(wdVerticalPositionRelativeToPage)
+ End If
+ I = I + 1
+ Next myshape
+ End If
+
+ currDoc.Content.Select
+ Selection.GoTo what:=wdGoToPage, Which:=wdGoToAbsolute, _
+ count:=myPrepInfo.HF_OnPage 'set frametop might change the selection position
+
+ If myPrepInfo.HF_inheader Then
+ currDoc.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
+ Selection.MoveStart
+ ELength = 0
+ While ELength < myPrepInfo.HF_extendLength
+ Selection.TypeParagraph
+ ELength = ELength + Selection.Characters.First.Font.Size
+ Wend
+ Else
+ currDoc.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
+ Selection.MoveStart
+ ELength = 0
+ While ELength < myPrepInfo.HF_extendLength
+ Selection.TypeParagraph
+ ELength = ELength + Selection.Characters.First.Font.Size
+ Wend
+ End If
+
+ If Snum <> 0 Then
+ I = 0
+ For Each myshape In myPrepInfo.HF_Shapes
+ If myshape.Type = msoPicture Then
+ If myshape.RelativeVerticalPosition <> wdRelativeVerticalPositionPage Then
+ temptop = myshape.top + myshape.Anchor.Information(wdVerticalPositionRelativeToPage)
+ Else
+ temptop = myshape.top
+ End If
+ ElseIf myshape.Type = msoTextBox Then
+ myshape.TextFrame.TextRange.Select
+
+ temptop = Selection.Information(wdVerticalPositionRelativeToPage)
+ End If
+ Selection.GoTo what:=wdGoToPage, Which:=wdGoToAbsolute, _
+ count:=myPrepInfo.HF_OnPage
+ If myPrepInfo.HF_inheader Then
+ currDoc.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
+ Else
+ currDoc.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
+ End If
+ Selection.HeaderFooter.Shapes(myshape.name).Select
+ Selection.ShapeRange.IncrementTop shapetop(I) - temptop
+ I = I + 1
+ Next myshape
+ End If
+ ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
+ Prepare_HeaderFooter_GraphicFrames = True
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & docAnalysis.name & ": " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+'Stub for Excel Prepare SheetName
+Function Prepare_WorkbookVersion() As Boolean
+ Prepare_WorkbookVersion = False
+End Function
+
+
diff --git a/migrationanalysis/src/driver_docs/sources/word/ThisDocument.cls b/migrationanalysis/src/driver_docs/sources/word/ThisDocument.cls
new file mode 100644
index 000000000000..a8547bd850ad
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/word/ThisDocument.cls
@@ -0,0 +1,52 @@
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Public wrdStrings As StringDataManager
+
+Private Sub Document_Open()
+ Set wrdStrings = New stringDataManager
+
+ wrdStrings.InitStringData (GetResourceDataFileName(ThisDocument.Path))
+ LoadCommonStrings wrdStrings
+ LoadWordStrings wrdStrings
+ LoadResultsStrings wrdStrings
+ SetWordDriverText
+ Set wrdString = Nothing
+End Sub
+
+' Set the loaded string variable into the fields in the document
+Private Sub SetWordDriverText()
+ On Error Resume Next
+ CAPP_DOCPROP_LOCATION = RID_STR_COMMON_RESULTS_LOCATION_TYPE_DOCUMENT
+ ThisDocument.FormFields.item("RID_STR_WDVR_SOANA").Result = RID_STR_WDVR_SOANA
+ ThisDocument.FormFields.item("RID_STR_WDVR_INTRO").Result = RID_STR_WDVR_INTRO
+ ThisDocument.FormFields.item("RID_STR_WDVR_TITLE").Result = RID_STR_WDVR_TITLE
+ ThisDocument.FormFields.item("RID_STR_WDVR_PURPO").Result = RID_STR_WDVR_PURPO
+ ThisDocument.FormFields.item("RID_STR_WDVR_PARA1").Result = RID_STR_WDVR_PARA1
+ ThisDocument.FormFields.item("RID_STR_WDVR_ISSUE").Result = RID_STR_WDVR_ISSUE
+ ThisDocument.FormFields.item("RID_STR_WDVR_PARA2").Result = RID_STR_WDVR_PARA2
+End Sub
diff --git a/migrationanalysis/src/driver_docs/sources/word/word_res.bas b/migrationanalysis/src/driver_docs/sources/word/word_res.bas
new file mode 100644
index 000000000000..7356353e3fe2
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/sources/word/word_res.bas
@@ -0,0 +1,289 @@
+Attribute VB_Name = "word_res"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+'Word Strings
+
+Public RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_COMMENTS As String
+Public RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_FORM_FIELDS As String
+Public RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_REVISIONS As String
+Public RID_STR_WORD_ATTRIBUTE_AUTHOR As String
+Public RID_STR_WORD_ATTRIBUTE_BORDERS_NOT_DISPLAYING As String
+Public RID_STR_WORD_ATTRIBUTE_DATASOURCE As String
+Public RID_STR_WORD_ATTRIBUTE_FIELD_TEXT As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_AUTOSIZE As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_ENTRY_MACRO As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_EXIT_MACRO As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_FILLIN_ENABLED As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_GREYED As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_HELP_KEY_F1_AUTO_TEXT As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_HELP_KEY_F1_OWN_TEXT As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_LOCKED As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_MAX_LENGTH As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_STATUS_BAR_HELP_AUTO_TEXT As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_STATUS_BAR_HELP_OWN_TEXT As String
+Public RID_STR_WORD_ATTRIBUTE_FORM_FIELD_TEXT_FORM_FIELD_TYPE As String
+Public RID_STR_WORD_ATTRIBUTE_FOOTER As String
+Public RID_STR_WORD_ATTRIBUTE_HEADER As String
+Public RID_STR_WORD_ATTRIBUTE_FRAME As String
+Public RID_STR_WORD_ATTRIBUTE_GRAPHIC As String
+Public RID_STR_WORD_ATTRIBUTE_OBJECT_HEIGHT_GT_H As String
+Public RID_STR_WORD_ATTRIBUTE_OBJECT_HEIGHT_GT_F As String
+Public RID_STR_WORD_ATTRIBUTE_NUM_OF_GRAPHIC As String
+Public RID_STR_WORD_ATTRIBUTE_OBJECT_LOCATED_BELOW_HEADER As String
+Public RID_STR_WORD_ATTRIBUTE_NUM_OF_FRAME As String
+Public RID_STR_WORD_ATTRIBUTE_GRAPHICTYPE As String
+Public RID_STR_WORD_ATTRIBUTE_INLINESHAPE As String
+Public RID_STR_WORD_ATTRIBUTE_INNER_TABLE As String
+Public RID_STR_WORD_ATTRIBUTE_LEADER As String
+Public RID_STR_WORD_ATTRIBUTE_LINK As String
+Public RID_STR_WORD_ATTRIBUTE_LOCATION As String
+Public RID_STR_WORD_ATTRIBUTE_NUMBER_CUSTOM_PARAGRAPHS As String
+Public RID_STR_WORD_ATTRIBUTE_OUTER_TABLE As String
+Public RID_STR_WORD_ATTRIBUTE_PASSWORD_TO_MODIFY As String
+Public RID_STR_WORD_ATTRIBUTE_PASSWORD_TO_OPEN As String
+Public RID_STR_WORD_ATTRIBUTE_PROTECTION As String
+Public RID_STR_WORD_ATTRIBUTE_SET As String
+Public RID_STR_WORD_ATTRIBUTE_START_COL As String
+Public RID_STR_WORD_ATTRIBUTE_START_ROW As String
+Public RID_STR_WORD_ATTRIBUTE_TEXT As String
+Public RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_ISSUE As String
+Public RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_NOT_MIGRATE_CLEAN As String
+Public RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_NOT_ROUNDTRIP_CLEAN As String
+Public RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FROM_TEMPLATE_WITH_LEVEL As String
+Public RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FROM_TEMPLATE_TAB_DOTS As String
+Public RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FORMAL_WITH_LEVEL As String
+Public RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_CLASSIC_WITH_LEVEL As String
+Public RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_DISTINCTIVE_WITH_LEVEL As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_CALCULATION As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_CHECK_BOX As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_CURRENT_DATE As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_CURRENT_TIME As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_DATE As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_DATE As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_EXPRESSION As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_NUMBER As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_TEXT As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_TIME As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_DROP_DOWN As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_DATE As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_NUMBER As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_TEXT As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_TIME As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_NUMBER As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_REGULAR As String
+Public RID_STR_WORD_ENUMERATION_FORM_FIELD_TEXT As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_ASK As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER_LEGAL As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER_OUTLINE As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_FIELD_NAME_NOT_KNOWN As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_FILL_IN As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_MERGE_RECORDS As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_MERGE_FIELDS As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_NEXT As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_REVISION_NUMBER As String
+Public RID_STR_WORD_ENUMERATION_MAILMERGE_SEQUENCE As String
+Public RID_STR_WORD_ENUMERATION_INDEX_TABLES_CLASSIC As String
+Public RID_STR_WORD_ENUMERATION_INDEX_TABLES_DISTINCTIVE As String
+Public RID_STR_WORD_ENUMERATION_INDEX_TABLES_FANCY As String
+Public RID_STR_WORD_ENUMERATION_INDEX_TABLES_FORMAL As String
+Public RID_STR_WORD_ENUMERATION_INDEX_TABLES_MODERN As String
+Public RID_STR_WORD_ENUMERATION_INDEX_TABLES_SIMPLE As String
+Public RID_STR_WORD_ENUMERATION_INDEX_TABLES_FROM_TEMPLATE As String
+Public RID_STR_WORD_ENUMERATION_INDEX_LEADER_DASHES As String
+Public RID_STR_WORD_ENUMERATION_INDEX_LEADER_DOTS As String
+Public RID_STR_WORD_ENUMERATION_INDEX_LEADER_HEAVY As String
+Public RID_STR_WORD_ENUMERATION_INDEX_LEADER_LINES As String
+Public RID_STR_WORD_ENUMERATION_INDEX_LEADER_MIDDLEDOT As String
+Public RID_STR_WORD_ENUMERATION_INDEX_LEADER_SPACES As String
+Public RID_STR_WORD_ENUMERATION_UNKNOWN As String
+Public RID_STR_WORD_FALSE As String
+Public RID_STR_WORD_TRUE As String
+Public RID_STR_WORD_ISSUE_FIELDS As String
+Public RID_STR_WORD_ISSUE_INDEX_AND_REFERENCES As String
+Public RID_STR_WORD_ISSUE_OBJECTS_GRAPHICS_AND_FRAMES As String
+Public RID_STR_WORD_ISSUE_TABLES As String
+Public RID_STR_WORD_NOTE_FORM_FIELD_ATTRIBUTES_LOST As String
+Public RID_STR_WORD_NOTE_FORM_FIELD_TYPE_LOST As String
+Public RID_STR_WORD_NOTE_NESTED_TABLE_WILL_BE_LOST As String
+Public RID_STR_WORD_NOTE_TABLE_BORDER As String
+Public RID_STR_WORD_NOTE_TOA_FIELD_LOST_ON_ROUNDTRIP As String
+Public RID_STR_WORD_NOTE_TOA_MIGRATE_AS_PLAIN_TEXT As String
+Public RID_STR_WORD_SUBISSUE_APPEARANCE As String
+Public RID_STR_WORD_SUBISSUE_BORDER_STYLES As String
+Public RID_STR_WORD_SUBISSUE_COMMENT As String
+Public RID_STR_WORD_SUBISSUE_CUSTOM_BULLET_LIST As String
+Public RID_STR_WORD_SUBISSUE_FORM_FIELD As String
+Public RID_STR_WORD_SUBISSUE_MAILMERGE_DATASOURCE As String
+Public RID_STR_WORD_SUBISSUE_MAILMERGE_FIELD As String
+Public RID_STR_WORD_SUBISSUE_NESTED_TABLES As String
+Public RID_STR_WORD_SUBISSUE_OBJECT_IN_HEADER_FOOTER As String
+Public RID_STR_WORD_SUBISSUE_TABLE_OF_AUTHORITIES As String
+Public RID_STR_WORD_SUBISSUE_TABLE_OF_AUTHORITIES_FIELD As String
+Public RID_STR_WORD_ATTRIBUTE_COUNT As String
+
+'Word Driver Strings
+Public RID_STR_WDVR_SOANA As String
+Public RID_STR_WDVR_INTRO As String
+Public RID_STR_WDVR_TITLE As String
+Public RID_STR_WDVR_PURPO As String
+Public RID_STR_WDVR_PARA1 As String
+Public RID_STR_WDVR_ISSUE As String
+Public RID_STR_WDVR_PARA2 As String
+
+Public Sub LoadWordStrings(sdm As StringDataManager)
+ 'Word Specific
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_COMMENTS, "RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_COMMENTS"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_FORM_FIELDS, "RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_FORM_FIELDS"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_REVISIONS, "RID_STR_WORD_ATTRIBUTE_ALLOW_ONLY_REVISIONS"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_AUTHOR, "RID_STR_WORD_ATTRIBUTE_AUTHOR"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_BORDERS_NOT_DISPLAYING, "RID_STR_WORD_ATTRIBUTE_BORDERS_NOT_DISPLAYING"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_DATASOURCE, "RID_STR_WORD_ATTRIBUTE_DATASOURCE"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FIELD_TEXT, "RID_STR_WORD_ATTRIBUTE_FIELD_TEXT"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_AUTOSIZE, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_AUTOSIZE"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_ENTRY_MACRO, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_ENTRY_MACRO"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_EXIT_MACRO, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_EXIT_MACRO"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_FILLIN_ENABLED, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_FILLIN_ENABLED"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_GREYED, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_GREYED"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_HELP_KEY_F1_AUTO_TEXT, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_HELP_KEY_F1_AUTO_TEXT"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_HELP_KEY_F1_OWN_TEXT, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_HELP_KEY_F1_OWN_TEXT"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_LOCKED, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_LOCKED"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_MAX_LENGTH, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_MAX_LENGTH"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_STATUS_BAR_HELP_AUTO_TEXT, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_STATUS_BAR_HELP_AUTO_TEXT"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_STATUS_BAR_HELP_OWN_TEXT, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_STATUS_BAR_HELP_OWN_TEXT"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FORM_FIELD_TEXT_FORM_FIELD_TYPE, "RID_STR_WORD_ATTRIBUTE_FORM_FIELD_TEXT_FORM_FIELD_TYPE"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FOOTER, "RID_STR_WORD_ATTRIBUTE_FOOTER"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_HEADER, "RID_STR_WORD_ATTRIBUTE_HEADER"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_FRAME, "RID_STR_WORD_ATTRIBUTE_FRAME"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_GRAPHIC, "RID_STR_WORD_ATTRIBUTE_GRAPHIC"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_OBJECT_HEIGHT_GT_H, "RID_STR_WORD_ATTRIBUTE_OBJECT_HEIGHT_GT_H"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_OBJECT_HEIGHT_GT_F, "RID_STR_WORD_ATTRIBUTE_OBJECT_HEIGHT_GT_F"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_NUM_OF_GRAPHIC, "RID_STR_WORD_ATTRIBUTE_NUM_OF_GRAPHIC"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_OBJECT_LOCATED_BELOW_HEADER, "RID_STR_WORD_ATTRIBUTE_OBJECT_LOCATED_BELOW_HEADER"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_NUM_OF_FRAME, "RID_STR_WORD_ATTRIBUTE_NUM_OF_FRAME"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_GRAPHICTYPE, "RID_STR_WORD_ATTRIBUTE_GRAPHICTYPE"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_INLINESHAPE, "RID_STR_WORD_ATTRIBUTE_INLINESHAPE"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_INNER_TABLE, "RID_STR_WORD_ATTRIBUTE_INNER_TABLE"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_LEADER, "RID_STR_WORD_ATTRIBUTE_LEADER"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_LINK, "RID_STR_WORD_ATTRIBUTE_LINK"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_LOCATION, "RID_STR_WORD_ATTRIBUTE_LOCATION"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_NUMBER_CUSTOM_PARAGRAPHS, "RID_STR_WORD_ATTRIBUTE_NUMBER_CUSTOM_PARAGRAPHS"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_OUTER_TABLE, "RID_STR_WORD_ATTRIBUTE_OUTER_TABLE"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_PASSWORD_TO_MODIFY, "RID_STR_WORD_ATTRIBUTE_PASSWORD_TO_MODIFY"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_PASSWORD_TO_OPEN, "RID_STR_WORD_ATTRIBUTE_PASSWORD_TO_OPEN"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_PROTECTION, "RID_STR_WORD_ATTRIBUTE_PROTECTION"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_SET, "RID_STR_WORD_ATTRIBUTE_SET"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_START_COL, "RID_STR_WORD_ATTRIBUTE_START_COL"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_START_ROW, "RID_STR_WORD_ATTRIBUTE_START_ROW"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_TEXT, "RID_STR_WORD_ATTRIBUTE_TEXT"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_ISSUE, "RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_ISSUE"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_NOT_MIGRATE_CLEAN, "RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_NOT_MIGRATE_CLEAN"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_NOT_ROUNDTRIP_CLEAN, "RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_NOT_ROUNDTRIP_CLEAN"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FROM_TEMPLATE_WITH_LEVEL, "RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FROM_TEMPLATE_WITH_LEVEL"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FROM_TEMPLATE_TAB_DOTS, "RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FROM_TEMPLATE_TAB_DOTS"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FORMAL_WITH_LEVEL, "RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_FORMAL_WITH_LEVEL"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_CLASSIC_WITH_LEVEL, "RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_CLASSIC_WITH_LEVEL"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_DISTINCTIVE_WITH_LEVEL, "RID_STR_WORD_ATTRIBUTE_TOC_FORMAT_DISTINCTIVE_WITH_LEVEL"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_CALCULATION, "RID_STR_WORD_ENUMERATION_FORM_FIELD_CALCULATION"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_CHECK_BOX, "RID_STR_WORD_ENUMERATION_FORM_FIELD_CHECK_BOX"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_CURRENT_DATE, "RID_STR_WORD_ENUMERATION_FORM_FIELD_CURRENT_DATE"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_CURRENT_TIME, "RID_STR_WORD_ENUMERATION_FORM_FIELD_CURRENT_TIME"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_DATE, "RID_STR_WORD_ENUMERATION_FORM_FIELD_DATE"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_DATE, "RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_DATE"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_EXPRESSION, "RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_EXPRESSION"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_NUMBER, "RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_NUMBER"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_TEXT, "RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_TEXT"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_TIME, "RID_STR_WORD_ENUMERATION_FORM_FIELD_DEFAULT_TIME"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_DROP_DOWN, "RID_STR_WORD_ENUMERATION_FORM_FIELD_DROP_DOWN"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_DATE, "RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_DATE"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_NUMBER, "RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_NUMBER"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_TEXT, "RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_TEXT"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_TIME, "RID_STR_WORD_ENUMERATION_FORM_FIELD_FORMAT_TIME"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_NUMBER, "RID_STR_WORD_ENUMERATION_FORM_FIELD_NUMBER"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_REGULAR, "RID_STR_WORD_ENUMERATION_FORM_FIELD_REGULAR"
+ sdm.InitString RID_STR_WORD_ENUMERATION_FORM_FIELD_TEXT, "RID_STR_WORD_ENUMERATION_FORM_FIELD_TEXT"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_ASK, "RID_STR_WORD_ENUMERATION_MAILMERGE_ASK"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER, "RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER_LEGAL, "RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER_LEGAL"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER_OUTLINE, "RID_STR_WORD_ENUMERATION_MAILMERGE_AUTO_NUMBER_OUTLINE"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_FIELD_NAME_NOT_KNOWN, "RID_STR_WORD_ENUMERATION_MAILMERGE_FIELD_NAME_NOT_KNOWN"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_FILL_IN, "RID_STR_WORD_ENUMERATION_MAILMERGE_FILL_IN"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_MERGE_RECORDS, "RID_STR_WORD_ENUMERATION_MAILMERGE_MERGE_RECORDS"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_MERGE_FIELDS, "RID_STR_WORD_ENUMERATION_MAILMERGE_MERGE_FIELDS"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_NEXT, "RID_STR_WORD_ENUMERATION_MAILMERGE_NEXT"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_REVISION_NUMBER, "RID_STR_WORD_ENUMERATION_MAILMERGE_REVISION_NUMBER"
+ sdm.InitString RID_STR_WORD_ENUMERATION_MAILMERGE_SEQUENCE, "RID_STR_WORD_ENUMERATION_MAILMERGE_SEQUENCE"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_TABLES_CLASSIC, "RID_STR_WORD_ENUMERATION_INDEX_TABLES_CLASSIC"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_TABLES_DISTINCTIVE, "RID_STR_WORD_ENUMERATION_INDEX_TABLES_DISTINCTIVE"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_TABLES_FANCY, "RID_STR_WORD_ENUMERATION_INDEX_TABLES_FANCY"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_TABLES_FORMAL, "RID_STR_WORD_ENUMERATION_INDEX_TABLES_FORMAL"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_TABLES_MODERN, "RID_STR_WORD_ENUMERATION_INDEX_TABLES_MODERN"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_TABLES_SIMPLE, "RID_STR_WORD_ENUMERATION_INDEX_TABLES_SIMPLE"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_TABLES_FROM_TEMPLATE, "RID_STR_WORD_ENUMERATION_INDEX_TABLES_FROM_TEMPLATE"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_LEADER_DASHES, "RID_STR_WORD_ENUMERATION_INDEX_LEADER_DASHES"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_LEADER_DOTS, "RID_STR_WORD_ENUMERATION_INDEX_LEADER_DOTS"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_LEADER_HEAVY, "RID_STR_WORD_ENUMERATION_INDEX_LEADER_HEAVY"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_LEADER_LINES, "RID_STR_WORD_ENUMERATION_INDEX_LEADER_LINES"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_LEADER_MIDDLEDOT, "RID_STR_WORD_ENUMERATION_INDEX_LEADER_MIDDLEDOT"
+ sdm.InitString RID_STR_WORD_ENUMERATION_INDEX_LEADER_SPACES, "RID_STR_WORD_ENUMERATION_INDEX_LEADER_SPACES"
+ sdm.InitString RID_STR_WORD_ENUMERATION_UNKNOWN, "RID_STR_WORD_ENUMERATION_UNKNOWN"
+ sdm.InitString RID_STR_WORD_FALSE, "RID_STR_WORD_FALSE"
+ sdm.InitString RID_STR_WORD_TRUE, "RID_STR_WORD_TRUE"
+ sdm.InitString RID_STR_WORD_ISSUE_FIELDS, "RID_STR_WORD_ISSUE_FIELDS"
+ sdm.InitString RID_STR_WORD_ISSUE_INDEX_AND_REFERENCES, "RID_STR_WORD_ISSUE_INDEX_AND_REFERENCES"
+ sdm.InitString RID_STR_WORD_ISSUE_OBJECTS_GRAPHICS_AND_FRAMES, "RID_STR_WORD_ISSUE_OBJECTS_GRAPHICS_AND_FRAMES"
+ sdm.InitString RID_STR_WORD_ISSUE_TABLES, "RID_STR_WORD_ISSUE_TABLES"
+ sdm.InitString RID_STR_WORD_NOTE_FORM_FIELD_ATTRIBUTES_LOST, "RID_STR_WORD_NOTE_FORM_FIELD_ATTRIBUTES_LOST"
+ sdm.InitString RID_STR_WORD_NOTE_FORM_FIELD_TYPE_LOST, "RID_STR_WORD_NOTE_FORM_FIELD_TYPE_LOST"
+ sdm.InitString RID_STR_WORD_NOTE_NESTED_TABLE_WILL_BE_LOST, "RID_STR_WORD_NOTE_NESTED_TABLE_WILL_BE_LOST"
+ sdm.InitString RID_STR_WORD_NOTE_TABLE_BORDER, "RID_STR_WORD_NOTE_TABLE_BORDER"
+ sdm.InitString RID_STR_WORD_NOTE_TOA_FIELD_LOST_ON_ROUNDTRIP, "RID_STR_WORD_NOTE_TOA_FIELD_LOST_ON_ROUNDTRIP"
+ sdm.InitString RID_STR_WORD_NOTE_TOA_MIGRATE_AS_PLAIN_TEXT, "RID_STR_WORD_NOTE_TOA_MIGRATE_AS_PLAIN_TEXT"
+ sdm.InitString RID_STR_WORD_SUBISSUE_APPEARANCE, "RID_STR_WORD_SUBISSUE_APPEARANCE"
+ sdm.InitString RID_STR_WORD_SUBISSUE_BORDER_STYLES, "RID_STR_WORD_SUBISSUE_BORDER_STYLES"
+ sdm.InitString RID_STR_WORD_SUBISSUE_COMMENT, "RID_STR_WORD_SUBISSUE_COMMENT"
+ sdm.InitString RID_STR_WORD_SUBISSUE_CUSTOM_BULLET_LIST, "RID_STR_WORD_SUBISSUE_CUSTOM_BULLET_LIST"
+ sdm.InitString RID_STR_WORD_SUBISSUE_FORM_FIELD, "RID_STR_WORD_SUBISSUE_FORM_FIELD"
+ sdm.InitString RID_STR_WORD_SUBISSUE_MAILMERGE_DATASOURCE, "RID_STR_WORD_SUBISSUE_MAILMERGE_DATASOURCE"
+ sdm.InitString RID_STR_WORD_SUBISSUE_MAILMERGE_FIELD, "RID_STR_WORD_SUBISSUE_MAILMERGE_FIELD"
+ sdm.InitString RID_STR_WORD_SUBISSUE_NESTED_TABLES, "RID_STR_WORD_SUBISSUE_NESTED_TABLES"
+ sdm.InitString RID_STR_WORD_SUBISSUE_OBJECT_IN_HEADER_FOOTER, "RID_STR_WORD_SUBISSUE_OBJECT_IN_HEADER_FOOTER"
+ sdm.InitString RID_STR_WORD_SUBISSUE_TABLE_OF_AUTHORITIES, "RID_STR_WORD_SUBISSUE_TABLE_OF_AUTHORITIES"
+ sdm.InitString RID_STR_WORD_SUBISSUE_TABLE_OF_AUTHORITIES_FIELD, "RID_STR_WORD_SUBISSUE_TABLE_OF_AUTHORITIES_FIELD"
+ sdm.InitString RID_STR_WORD_ATTRIBUTE_COUNT, "RID_STR_WORD_ATTRIBUTE_COUNT"
+
+ 'Word driver strings
+ sdm.InitString RID_STR_WDVR_SOANA, "RID_STR_WDVR_SOANA"
+ sdm.InitString RID_STR_WDVR_INTRO, "RID_STR_WDVR_INTRO"
+ sdm.InitString RID_STR_WDVR_TITLE, "RID_STR_WDVR_TITLE"
+ sdm.InitString RID_STR_WDVR_PURPO, "RID_STR_WDVR_PURPO"
+ sdm.InitString RID_STR_WDVR_PARA1, "RID_STR_WDVR_PARA1"
+ sdm.InitString RID_STR_WDVR_ISSUE, "RID_STR_WDVR_ISSUE"
+ sdm.InitString RID_STR_WDVR_PARA2, "RID_STR_WDVR_PARA2"
+End Sub
+
diff --git a/migrationanalysis/src/driver_docs/ulf2dat.pl b/migrationanalysis/src/driver_docs/ulf2dat.pl
new file mode 100644
index 000000000000..25b1fe2f7ebc
--- /dev/null
+++ b/migrationanalysis/src/driver_docs/ulf2dat.pl
@@ -0,0 +1,153 @@
+:
+eval 'exec perl -wS $0 ${1+"$@"}'
+ if 0;
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#***********************************************************************/
+
+
+#### script id #####
+
+( $script_name = $0 ) =~ s/^.*\b(\w+)\.pl$/$1/;
+
+$id_str = ' $Revision: 1.4.108.1 $ ';
+$id_str =~ /Revision:\s+(\S+)\s+\$/
+ ? ($script_rev = $1) : ($script_rev = "-");
+
+#########################
+# #
+# Globale Variablen #
+# #
+#########################
+
+use Encode;
+use Encode::Alias;
+
+
+my ($in_name, $ID, $new_ID);
+my ($help);
+
+print STDERR "$script_name -- Version: $script_rev\n" ;
+
+&get_options;
+
+if ( $help ) {
+ &usage();
+ exit 0;
+};
+
+
+open IN, "<$in_name" or die "Could not open $in_name for reading $! $^E";
+
+foreach $lang ( keys %files )
+{
+ open "F_$lang",">$files{$lang}" or die "Could not open $files{$lang} for writing $! $^E";
+ binmode "F_$lang";
+ $files{$lang} = "F_$lang";
+}
+
+%transunit = ();
+
+while ( <IN> )
+{
+ chomp;
+ $line = $_;
+ $line =~ s/\r$//;
+ # [RID_RESXLS_COST_Print_Area]
+ if ( $line =~ /^\[(.*)\]$/ )
+ {
+ $new_ID = $1;
+
+ write_transunit();
+ $ID = $new_ID;
+ %transunit = ();
+ }
+ # de = "Druckbereich"
+ elsif ( $line =~ /^(\S*)\s*=\s*\"(.*)\"$/ )
+ {
+ $lang = $1;
+ $string = $2;
+ $transunit{ $lang } = $string;
+ }
+ elsif ( $line !~ /^\s*$/ )
+ {
+ die "unknown lineformat in $in_name: $line\n";
+ }
+}
+write_transunit();
+
+
+sub write_transunit
+{
+ if ( ! $ID )
+ {
+ return;
+ }
+ foreach $lang ( keys %files )
+ {
+ my $string;
+ if ( defined $transunit{ $lang } )
+ {
+ $string = $transunit{ $lang };
+ }
+ else
+ {
+ $string = $transunit{ "en-US" };
+ }
+
+ my $dat_line = "$ID=$string";
+ Encode::from_to( $dat_line, "utf8", "UTF-16LE");
+ print { $files{$lang} } "$dat_line\015\000\012\000";
+ }
+}
+
+
+sub get_options {
+ my ($arg,$lang);
+
+ while ($arg = shift @ARGV) {
+ $arg =~ /^-i$/ and $in_name = shift @ARGV and next;
+ $arg =~ /^-help$/ and $help = 1 and next; #show help
+
+ $arg =~ /.*[\/\\]([^\/\\]*)\.dat$/;
+# $arg =~ /.*[/\]([^/\]*)\.dat$/;
+ $lang = $1;
+ print "got $lang = $arg\n";
+ $files{ $lang } = $arg;
+ }
+}
+
+
+
+sub usage {
+ print STDERR "\n\n";
+ print STDERR "Syntax: $script_name [-help|-i <ulf-filename>] <dat-filename> ... \n";
+ print STDERR "Example: $script_name -i strings.ulf en-US.dat de.dat\n";
+ print STDERR "Options:\n\n";
+ print STDERR " -i input ulf file\n";
+ print STDERR " -help print this help info\n\n";
+};
+
diff --git a/migrationanalysis/src/exe/LaunchDrivers.exe b/migrationanalysis/src/exe/LaunchDrivers.exe
new file mode 100644
index 000000000000..cf21a73a92fb
--- /dev/null
+++ b/migrationanalysis/src/exe/LaunchDrivers.exe
Binary files differ
diff --git a/migrationanalysis/src/exe/ProAnalysisWizard.exe b/migrationanalysis/src/exe/ProAnalysisWizard.exe
new file mode 100644
index 000000000000..1632d8ec9d52
--- /dev/null
+++ b/migrationanalysis/src/exe/ProAnalysisWizard.exe
Binary files differ
diff --git a/migrationanalysis/src/msokill/StdAfx.cpp b/migrationanalysis/src/msokill/StdAfx.cpp
new file mode 100644
index 000000000000..79d505fb449a
--- /dev/null
+++ b/migrationanalysis/src/msokill/StdAfx.cpp
@@ -0,0 +1,38 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// stdafx.cpp : source file that includes just the standard includes
+// msokill.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/migrationanalysis/src/msokill/StdAfx.h b/migrationanalysis/src/msokill/StdAfx.h
new file mode 100644
index 000000000000..1a26d751fd5d
--- /dev/null
+++ b/migrationanalysis/src/msokill/StdAfx.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+/*
+ *
+ * Description: Put MSO in a state where it can be closed using
+ * automation or kill it completely
+ *
+ */
+
+#if !defined(AFX_STDAFX_H__12149A50_72AF_409A_9B43_8ACCD98F50CE__INCLUDED_)
+#define AFX_STDAFX_H__12149A50_72AF_409A_9B43_8ACCD98F50CE__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
+
+#include <stdio.h>
+#pragma warning(push, 1)
+#include <windows.h>
+#pragma warning(pop)
+
+// TODO: reference additional headers your program requires here
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__12149A50_72AF_409A_9B43_8ACCD98F50CE__INCLUDED_)
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/migrationanalysis/src/msokill/makefile.mk b/migrationanalysis/src/msokill/makefile.mk
new file mode 100644
index 000000000000..bee81b00c775
--- /dev/null
+++ b/migrationanalysis/src/msokill/makefile.mk
@@ -0,0 +1,82 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME = migrationanalysis
+TARGET = msokill
+LIBTARGET = NO
+TARGETTYPE = CUI
+
+ENABLE_EXCEPTIONS = TRUE
+
+# --- Settings ------------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Allgemein -----------------------------------------------------------
+
+OBJFILES= $(OBJ)$/msokill.obj \
+ $(OBJ)$/StdAfx.obj
+
+# --- Targets ------------------------------------------------------
+
+UWINAPILIB=
+LIBSALCPPRT=
+
+APP1NOSAL= TRUE
+APP1TARGET= msokill
+
+STDLIB1=msi.lib\
+ shell32.lib\
+ oleaut32.lib\
+ gdi32.lib\
+ comdlg32.lib\
+ advapi32.lib\
+ comctl32.lib\
+ shlwapi.lib\
+ oledlg.lib\
+ ole32.lib\
+ uuid.lib\
+ oleacc.lib\
+ winspool.lib\
+
+APP1OBJS= $(OBJFILES)
+
+PAW_RES_DIR:=$(BIN)$/ProAnalysisWizard$/Resources
+PAW_RES_EXE:=$(PAW_RES_DIR)$/$(APP1TARGET).exe
+
+# --- setup --------------------------------------------------------------
+
+.INCLUDE : target.mk
+
+ALLTAR : $(PAW_RES_EXE)
+
+$(PAW_RES_EXE) : $(BIN)$/$$(@:f)
+ -$(MKDIRHIER) $(@:d)
+ $(COPY) $(BIN)$/$(@:f) $@
+
diff --git a/migrationanalysis/src/msokill/msokill.cpp b/migrationanalysis/src/msokill/msokill.cpp
new file mode 100644
index 000000000000..2125b3f773c7
--- /dev/null
+++ b/migrationanalysis/src/msokill/msokill.cpp
@@ -0,0 +1,261 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+/*
+ * Description: Put MSO in a state where it can be closed using
+ * automation or kill it completely
+ */
+
+#include "stdafx.h"
+#include <stdio.h>
+
+
+void KillOffice();
+BOOL KillAppFromWindow(HWND hWnd, char *appName);
+BOOL CloseActiveDialogs();
+void printUsage();
+
+//Callbacks used in closing
+BOOL CALLBACK CloseOfficeDlgProc(HWND hwndChild, LPARAM lParam);
+BOOL CALLBACK CountOfficeDlgProc(HWND hwndChild, LPARAM lParam);
+
+//Global counters for number of windows found
+int gWDDlgCount = 0;
+int gXLDlgCount = 0;
+int gPPDlgCount = 0;
+
+//Dialog window class names for excel, powerpoint and word
+//These are "Best guess" dialog names
+const char *pWordDlg2k = "bosa_sdm_Microsoft Word 9.0";
+const char *pWordDlg2k3 = "bosa_sdm_Microsoft Office Word";
+const char *pXLDlg2k = "bosa_sdm_XL9";
+const char *pPPDlg2k = "#32770";
+const char *pXLDlg2k3 = "bosa_sdm_XL9";
+const char *pPPDlg2k3 = "#32770";
+const char *pGenMSODlg = "bosa_sdm_Mso96";
+//consider adding - bosa_sdm_Mso96
+
+//Command Line Argument constants
+const char *ARG_HELP = "--help";
+const char *ARG_KILL = "--kill";
+const char *ARG_CLOSE = "--close";
+
+//Window class names for MSO apps - if we need to look at other office instances
+//then this list would need to be expanded
+#define NUM_WINDOWCLASSNAMES 4
+char *wndClassName[NUM_WINDOWCLASSNAMES] = {"OpusApp", "XLMAIN", "PP9FrameClass", "PP10FrameClass"};
+
+int main(int argc, char* argv[])
+{
+ if (argc < 2) {
+ printUsage();
+ return 0;
+ }
+
+ if (strcmpi(argv[1], ARG_HELP) == 0) {
+ printUsage();
+ return 0;
+ }
+
+ if (strcmpi(argv[1], ARG_KILL) == 0) {
+ KillOffice();
+ return 0;
+ }
+
+ if (strcmpi(argv[1], ARG_CLOSE) == 0) {
+ CloseActiveDialogs();
+ return 0;
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------
+ Find the MSO window if it is available and explictly kill it
+ MSO apps in this case are Excel, Word and PP
+ Use FindWindow Win32 API to detect if they are available
+
+ -------------------------------------------------------------*/
+void KillOffice() {
+ HWND hWnd;
+
+ for (int i=0;i<NUM_WINDOWCLASSNAMES;i++) {
+ int j = 0;
+ while (((hWnd = FindWindow(wndClassName[i], NULL )) != NULL) && (j < 10)) {
+ KillAppFromWindow(hWnd, wndClassName[i]);
+ j++;
+ }
+ }
+}
+
+/*--------------------------------------------------------------
+ Using window handle, get process handle and try to kill the
+ app. This may not be successful if you do not have enough
+ privileges to kill the app.
+
+ --------------------------------------------------------------*/
+BOOL KillAppFromWindow(
+ HWND hWnd,
+ char *
+#ifdef _DEBUG
+ appName
+#endif
+)
+{
+ BOOL bRet = TRUE;
+
+ if(hWnd == NULL) {
+ //The app doesn't appear to be running
+#ifdef _DEBUG
+ printf("App %s: window not found.\n,", appName);
+#endif
+ bRet = FALSE;
+ } else {
+ DWORD pid; // Variable to hold the process ID.
+ DWORD dThread; // Variable to hold (unused) thread ID.
+ dThread = GetWindowThreadProcessId(hWnd, &pid);
+ HANDLE hProcess; // Handle to existing process
+
+ hProcess = OpenProcess(SYNCHRONIZE | PROCESS_ALL_ACCESS, TRUE, pid);
+ if (hProcess == NULL) {
+#ifdef _DEBUG
+ printf("App %s : Failed to get process handle",appName);
+#endif
+ bRet = FALSE;
+ } else {
+ if (!TerminateProcess(hProcess, 0)) {
+ LPTSTR lpMsgBuf;
+ FormatMessage(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &lpMsgBuf, 0, NULL );
+ printf("%s\n", lpMsgBuf);
+ LocalFree( lpMsgBuf );
+ bRet = FALSE;
+ }
+#ifdef _DEBUG
+ else {
+ printf("Kill %s appears to be successful.\n", appName);
+ }
+#endif
+ }
+ }
+ return bRet;
+}
+
+/*--------------------------------------------------------------
+ Close the dialogs if possible based on their window class
+ Use the EnumChildWindows win32 api for this
+ --------------------------------------------------------------*/
+BOOL CloseActiveDialogs() {
+ char buff[1024];
+
+ gWDDlgCount = 0;
+ gXLDlgCount = 0;
+ gPPDlgCount = 0;
+
+ EnumChildWindows(GetDesktopWindow(), CloseOfficeDlgProc, (LPARAM) 0);
+ sprintf(buff, "Word: %d\tExcel: %d\tPP: %d", gWDDlgCount, gXLDlgCount, gPPDlgCount);
+ return TRUE;
+}
+
+/*--------------------------------------------------------------
+ Callback for EnumChildWindows that sends close message to
+ any dialogs that match window class of MSO dialogs
+
+ --------------------------------------------------------------*/
+BOOL CALLBACK CloseOfficeDlgProc(HWND hwndChild, LPARAM)
+{
+ //bosa_sdm_Microsoft Word 9.0
+ //bosa_sdm_XL9
+ //#32770 (Dialog)
+
+ char szBuff[4096];
+ if (GetClassName(hwndChild, szBuff, 4096) == 0) {
+
+ } else {
+ if ((strcmpi(szBuff, pWordDlg2k) == 0) || (strcmpi(szBuff, pWordDlg2k3) == 0)) {
+ gWDDlgCount++;
+ SendMessage(hwndChild, WM_CLOSE, 0, 0);
+ }
+ if (strcmpi(szBuff, pXLDlg2k) == 0) {
+ gXLDlgCount++;
+ SendMessage(hwndChild, WM_CLOSE, 0, 0);
+ }
+ if (strcmpi(szBuff, pPPDlg2k) == 0) {
+ gPPDlgCount++;
+ SendMessage(hwndChild, WM_CLOSE, 0, 0);
+ }
+ if (strcmpi(szBuff, pGenMSODlg) == 0) {
+ SendMessage(hwndChild, WM_CLOSE, 0, 0);
+ }
+ }
+
+ return TRUE;
+}
+
+
+/*--------------------------------------------------------------
+ Callback for EnumChildWindows that counts numnnber of
+ dialogs that match window class of MSO dialogs
+
+ --------------------------------------------------------------*/
+BOOL CALLBACK CountOfficeDlgProc(HWND hwndChild, LPARAM)
+{
+ char szBuff[4096];
+ if (GetClassName(hwndChild, szBuff, 4096) == 0) {
+
+ } else {
+ if ((strcmpi(szBuff, pWordDlg2k) == 0) || (strcmpi(szBuff, pWordDlg2k3) == 0)) {
+ gWDDlgCount++;
+ }
+ if (strcmpi(szBuff, pXLDlg2k) == 0) {
+ gXLDlgCount++;
+ }
+ if (strcmpi(szBuff, pPPDlg2k) == 0) {
+ gPPDlgCount++;
+ }
+ }
+
+ return TRUE;
+}
+
+/*--------------------------------------------------------------
+ Simple usage message...
+
+ -------------------------------------------------------------*/
+void printUsage() {
+ printf("Recovery Assistant Utility - try and put MSO apps in a recoverable state\n");
+ printf("Copyright Sun Microsystems 2008\n");
+ printf("Options:\n");
+ printf(" --help : This message\n");
+ printf(" --close: Attempt to close any open dialogs owned by \n");
+ printf(" MSO apps so Application.Quit() can succeed\n");
+ printf(" --kill : Kill any open MSO apps. Use with caution and only as a last resort\n\n");
+}
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/migrationanalysis/src/resources/analysis.dtd b/migrationanalysis/src/resources/analysis.dtd
new file mode 100644
index 000000000000..2a4482b65efe
--- /dev/null
+++ b/migrationanalysis/src/resources/analysis.dtd
@@ -0,0 +1,52 @@
+<!ELEMENT results ( document+ ) >
+<!ATTLIST results generated-by NMTOKEN #REQUIRED >
+<!ATTLIST results version CDATA #REQUIRED >
+<!ATTLIST results timestamp CDATA #REQUIRED >
+<!ATTLIST results type NMTOKEN #REQUIRED >
+
+<!ELEMENT document ( references?, issues? ) >
+<!ATTLIST document location CDATA #REQUIRED >
+<!ATTLIST document application CDATA #REQUIRED >
+<!ATTLIST document issues-count CDATA #IMPLIED >
+<!ATTLIST document pages CDATA #REQUIRED >
+<!ATTLIST document created CDATA #REQUIRED >
+<!ATTLIST document modified CDATA #REQUIRED >
+<!ATTLIST document accessed CDATA #REQUIRED >
+<!ATTLIST document printed CDATA #REQUIRED >
+<!ATTLIST document last-save-by CDATA #REQUIRED >
+<!ATTLIST document revision CDATA #REQUIRED >
+<!ATTLIST document based-on-template CDATA #REQUIRED >
+
+<!ELEMENT references ( reference+ ) >
+
+<!ELEMENT reference EMPTY >
+<!ATTLIST reference name CDATA #REQUIRED >
+<!ATTLIST reference description CDATA #REQUIRED >
+<!ATTLIST reference location CDATA #REQUIRED >
+<!ATTLIST reference type CDATA #REQUIRED >
+<!ATTLIST reference GUID CDATA #IMPLIED >
+<!ATTLIST reference is-broken CDATA #REQUIRED >
+<!ATTLIST reference builtin CDATA #REQUIRED >
+
+
+<!ELEMENT issues ( issue+ ) >
+
+<!ELEMENT issue ( location, details+ ) >
+<!ATTLIST issue category CDATA #REQUIRED >
+<!ATTLIST issue type CDATA #REQUIRED >
+<!ATTLIST issue prepared CDATA #REQUIRED >
+
+<!ELEMENT location ( property* ) >
+<!ATTLIST location type CDATA #REQUIRED >
+
+<!ELEMENT details ( (property+), (property | note)* ) >
+
+<!ELEMENT property EMPTY >
+<!ATTLIST property name CDATA #REQUIRED >
+<!ATTLIST property value CDATA #REQUIRED >
+
+<!ELEMENT note EMPTY >
+<!ATTLIST note index CDATA #REQUIRED >
+<!ATTLIST note value CDATA #REQUIRED >
+
+
diff --git a/migrationanalysis/src/resources/makefile.mk b/migrationanalysis/src/resources/makefile.mk
new file mode 100644
index 000000000000..574f5b966844
--- /dev/null
+++ b/migrationanalysis/src/resources/makefile.mk
@@ -0,0 +1,59 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=migrationanalysis
+TARGET=resources
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+PAW_DEST:=$(BIN)$/ProAnalysisWizard$/Resources
+PAW_RESULT:= $(PAW_DEST)$/results.xlt
+PAW_RESULTSRC:= results_paw.xlt
+
+ANALYSIS_DTD:=analysis.dtd
+PAW_ANALYSIS_DTD:=$(PAW_DEST)$/analysis.dtd
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+ALLTAR : $(PAW_RESULT) $(PAW_ANALYSIS_DTD)
+
+$(PAW_RESULT) : $(PAW_RESULTSRC)
+ -$(MKDIRHIER) $(@:d)
+ $(COPY) $(PAW_RESULTSRC) $@
+
+$(PAW_ANALYSIS_DTD) : $(ANALYSIS_DTD)
+ -$(MKDIRHIER) $(@:d)
+ $(COPY) $(ANALYSIS_DTD) $@
+
diff --git a/migrationanalysis/src/resources/results_paw.xlt b/migrationanalysis/src/resources/results_paw.xlt
new file mode 100644
index 000000000000..7ba5d5143d95
--- /dev/null
+++ b/migrationanalysis/src/resources/results_paw.xlt
Binary files differ
diff --git a/migrationanalysis/src/wizard/Analyse.bas b/migrationanalysis/src/wizard/Analyse.bas
new file mode 100644
index 000000000000..48c30ea9fcab
--- /dev/null
+++ b/migrationanalysis/src/wizard/Analyse.bas
@@ -0,0 +1,589 @@
+Attribute VB_Name = "Analyse"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+Private Const C_STAT_NOT_STARTED As Integer = 1
+Private Const C_STAT_RETRY As Integer = 2
+Private Const C_STAT_ERROR As Integer = 3
+Private Const C_STAT_DONE As Integer = 4
+Private Const C_STAT_ABORTED As Integer = 5
+
+Private Const C_MAX_RETRIES As Integer = 5
+Private Const C_ABORT_TIMEOUT As Integer = 30
+
+Private Const MAX_WAIT_TIME As Long = 600
+
+Private Const C_STAT_FINISHED As String = "finished"
+Private Const C_STAT_ANALYSED As String = "analysed="
+Private Const C_STAT_ANALYSING As String = "analysing="
+Private Const CSINGLE_FILE As String = "singlefile"
+Private Const CFILE_LIST As String = "filelist"
+Private Const CSTAT_FILE As String = "statfilename"
+Private Const CLAST_CHECKPOINT As String = "LastCheckpoint"
+Private Const CNEXT_FILE As String = "NextFile"
+Private Const C_ABORT_ANALYSIS As String = "AbortAnalysis"
+
+Private Const CAPPNAME_WORD As String = "word"
+Private Const CAPPNAME_EXCEL As String = "excel"
+Private Const CAPPNAME_POWERPOINT As String = "powerpoint"
+Private Const C_EXENAME_WORD As String = "winword.exe"
+Private Const C_EXENAME_EXCEL As String = "excel.exe"
+Private Const C_EXENAME_POWERPOINT As String = "powerpnt.exe"
+
+Const CNEW_RESULTS_FILE = "newresultsfile"
+Const C_LAUNCH_DRIVER = ".\resources\LaunchDrivers.exe"
+
+'from http://support.microsoft.com/kb/q129796
+
+Private Type STARTUPINFO
+ cb As Long
+ lpReserved As String
+ lpDesktop As String
+ lpTitle As String
+ dwX As Long
+ dwY As Long
+ dwXSize As Long
+ dwYSize As Long
+ dwXCountChars As Long
+ dwYCountChars As Long
+ dwFillAttribute As Long
+ dwFlags As Long
+ wShowWindow As Integer
+ cbReserved2 As Integer
+ lpReserved2 As Long
+ hStdInput As Long
+ hStdOutput As Long
+ hStdError As Long
+End Type
+
+Private Type PROCESS_INFORMATION
+ hProcess As Long
+ hThread As Long
+ dwProcessID As Long
+ dwThreadID As Long
+End Type
+
+Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
+ hHandle As Long, ByVal dwMilliseconds As Long) As Long
+
+Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
+ lpApplicationName As String, ByVal lpCommandLine As String, ByVal _
+ lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
+ ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
+ ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As String, _
+ lpStartupInfo As STARTUPINFO, lpProcessInformation As _
+ PROCESS_INFORMATION) As Long
+
+Private Declare Function CloseHandle Lib "kernel32" _
+ (ByVal hObject As Long) As Long
+
+Private Declare Function GetExitCodeProcess Lib "kernel32" _
+ (ByVal hProcess As Long, lpExitCode As Long) As Long
+
+Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, _
+ ByVal uExitCode As Long) As Long
+
+Private Const NORMAL_PRIORITY_CLASS = &H20&
+Private Const WAIT_TIMEOUT As Long = &H102
+Private Const ABORTED As Long = -2
+
+' from http://vbnet.mvps.org/index.html?code/system/toolhelpprocesses.htm
+Public Const TH32CS_SNAPPROCESS As Long = 2&
+Public Const MAX_PATH As Long = 260
+
+Public Type PROCESSENTRY32
+ dwSize As Long
+ cntUsage As Long
+ th32ProcessID As Long
+ th32DefaultHeapID As Long
+ th32ModuleID As Long
+ cntThreads As Long
+ th32ParentProcessID As Long
+ pcPriClassBase As Long
+ dwFlags As Long
+ szExeFile As String * MAX_PATH
+End Type
+
+Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" _
+ (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
+
+Public Declare Function ProcessFirst Lib "kernel32" _
+ Alias "Process32First" _
+ (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
+
+Public Declare Function ProcessNext Lib "kernel32" _
+ Alias "Process32Next" _
+ (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
+
+
+Public Function IsOfficeAppRunning(curApplication As String) As Boolean
+'DV: we need some error handling here
+ Dim hSnapShot As Long
+ Dim uProcess As PROCESSENTRY32
+ Dim success As Long
+ Dim bRet As Boolean
+ Dim bAppFound As Boolean
+ Dim exeName As String
+ Dim curExeName As String
+
+ bRet = True
+ On Error GoTo FinalExit
+
+ curExeName = LCase$(curApplication)
+
+ If (curExeName = CAPPNAME_WORD) Then
+ exeName = C_EXENAME_WORD
+ ElseIf (curExeName = CAPPNAME_EXCEL) Then
+ exeName = C_EXENAME_EXCEL
+ ElseIf (curExeName = CAPPNAME_POWERPOINT) Then
+ exeName = C_EXENAME_POWERPOINT
+ Else
+ GoTo FinalExit
+ End If
+
+ hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&)
+
+ If hSnapShot = -1 Then GoTo FinalExit
+
+ uProcess.dwSize = Len(uProcess)
+ success = ProcessFirst(hSnapShot, uProcess)
+ bAppFound = False
+
+ While ((success = 1) And Not bAppFound)
+ Dim i As Long
+ i = InStr(1, uProcess.szExeFile, Chr(0))
+ curExeName = LCase$(Left$(uProcess.szExeFile, i - 1))
+ If (curExeName = exeName) Then
+ bAppFound = True
+ Else
+ success = ProcessNext(hSnapShot, uProcess)
+ End If
+ Wend
+ bRet = bAppFound
+
+ Call CloseHandle(hSnapShot)
+
+FinalExit:
+ IsOfficeAppRunning = bRet
+
+End Function
+
+Private Sub CalculateProgress(statusFileName As String, fso As FileSystemObject, _
+ lastIndex As Long, docOffset As Long, _
+ myDocList As Collection)
+
+ On Error GoTo FinalExit
+
+ Dim curFile As String
+ Dim fileCont As TextStream
+ Dim myFile As file
+
+ If (fso.FileExists(statusFileName)) Then
+ Dim statLine As String
+
+ Set fileCont = fso.OpenTextFile(statusFileName, ForReading, False, TristateTrue)
+ statLine = fileCont.ReadLine
+
+ If (Left(statLine, Len(C_STAT_ANALYSED)) = C_STAT_ANALYSED) Then
+ curFile = Mid(statLine, Len(C_STAT_ANALYSED) + 1)
+ ElseIf (Left(statLine, Len(C_STAT_ANALYSING)) = C_STAT_ANALYSING) Then
+ curFile = Mid(statLine, Len(C_STAT_ANALYSING) + 1)
+ End If
+ End If
+
+ ' when we don't have a file, we will show the name of the last used file in
+ ' the progress window
+ If (curFile = "") Then curFile = myDocList.item(lastIndex)
+
+ If (GetDocumentIndex(curFile, myDocList, lastIndex)) Then
+ Set myFile = fso.GetFile(curFile)
+ Call ShowProgress.SP_UpdateProgress(myFile.Name, myFile.ParentFolder.path, lastIndex + docOffset)
+ End If
+
+FinalExit:
+ If Not (fileCont Is Nothing) Then fileCont.Close
+ Set fileCont = Nothing
+ Set myFile = Nothing
+
+End Sub
+
+Function CheckAliveStatus(statFileName As String, _
+ curApplication As String, _
+ lastDate As Date, _
+ fso As FileSystemObject) As Boolean
+
+ Dim isAlive As Boolean
+ Dim currDate As Date
+ Dim statFile As file
+ Dim testing As Long
+
+ isAlive = False
+
+ If Not fso.FileExists(statFileName) Then
+ currDate = Now()
+ If (val(DateDiff("s", lastDate, currDate)) > MAX_WAIT_TIME) Then
+ isAlive = False
+ Else
+ isAlive = True
+ End If
+ Else
+ Set statFile = fso.GetFile(statFileName)
+ currDate = statFile.DateLastModified
+ If (currDate > lastDate) Then
+ lastDate = currDate
+ isAlive = True
+ Else
+ currDate = Now()
+ If (lastDate >= currDate) Then ' There might be some inaccuracies in file and system dates
+ isAlive = True
+ ElseIf (val(DateDiff("s", lastDate, currDate)) > MAX_WAIT_TIME) Then
+ isAlive = False
+ Else
+ isAlive = IsOfficeAppRunning(curApplication)
+ End If
+ End If
+ End If
+
+ CheckAliveStatus = isAlive
+End Function
+
+Sub TerminateOfficeApps(fso As FileSystemObject, aParameter As String)
+
+ Dim msoKillFileName As String
+
+ msoKillFileName = fso.GetAbsolutePathName(".\resources\msokill.exe")
+ If fso.FileExists(msoKillFileName) Then
+ Shell msoKillFileName & aParameter
+ Else
+ End If
+End Sub
+
+Public Function launchDriver(statFileName As String, cmdLine As String, _
+ curApplication As String, fso As FileSystemObject, _
+ myDocList As Collection, myOffset As Long, _
+ myIniFilePath As String) As Long
+
+ Dim proc As PROCESS_INFORMATION
+ Dim start As STARTUPINFO
+ Dim ret As Long
+ Dim currDate As Date
+ Dim lastIndex As Long
+
+ currDate = Now()
+ lastIndex = 1
+
+ ' Initialize the STARTUPINFO structure:
+ start.cb = Len(start)
+
+ ' Start the shelled application:
+ ret = CreateProcessA(vbNullString, cmdLine$, 0&, 0&, 1&, _
+ NORMAL_PRIORITY_CLASS, 0&, vbNullString, start, proc)
+
+ ' Wait for the shelled application to finish:
+ Do
+ ret = WaitForSingleObject(proc.hProcess, 100)
+ If ret <> WAIT_TIMEOUT Then
+ Exit Do
+ End If
+ If Not CheckAliveStatus(statFileName, curApplication, currDate, fso) Then
+ ' Try to close open office dialogs and then wait a little bit
+ TerminateOfficeApps fso, " --close"
+ ret = WaitForSingleObject(proc.hProcess, 1000)
+
+ ' next try to kill all office programs and then wait a little bit
+ TerminateOfficeApps fso, " --kill"
+ ret = WaitForSingleObject(proc.hProcess, 1000)
+
+ ret = TerminateProcess(proc.hProcess, "0")
+ ret = WAIT_TIMEOUT
+ Exit Do
+ End If
+ If (ShowProgress.g_SP_Abort) Then
+ WriteToLog C_ABORT_ANALYSIS, True, myIniFilePath
+ Call HandleAbort(proc.hProcess, curApplication)
+ ret = ABORTED
+ Exit Do
+ End If
+ Call CalculateProgress(statFileName, fso, lastIndex, myOffset, myDocList)
+ DoEvents 'allow other processes
+ Loop While True
+
+ If (ret <> WAIT_TIMEOUT) And (ret <> ABORTED) Then
+ Call GetExitCodeProcess(proc.hProcess, ret&)
+ End If
+ Call CloseHandle(proc.hThread)
+ Call CloseHandle(proc.hProcess)
+ launchDriver = ret
+End Function
+
+Function CheckAnalyseStatus(statusFileName As String, _
+ lastFile As String, _
+ fso As FileSystemObject) As Integer
+
+ Dim currStatus As Integer
+ Dim fileCont As TextStream
+
+ If Not fso.FileExists(statusFileName) Then
+ currStatus = C_STAT_NOT_STARTED
+ Else
+ Dim statText As String
+ Set fileCont = fso.OpenTextFile(statusFileName, ForReading, False, TristateTrue)
+ statText = fileCont.ReadLine
+ If (statText = C_STAT_FINISHED) Then
+ currStatus = C_STAT_DONE
+ ElseIf (Left(statText, Len(C_STAT_ANALYSED)) = C_STAT_ANALYSED) Then
+ currStatus = C_STAT_RETRY
+ lastFile = Mid(statText, Len(C_STAT_ANALYSED) + 1)
+ ElseIf (Left(statText, Len(C_STAT_ANALYSING)) = C_STAT_ANALYSING) Then
+ currStatus = C_STAT_RETRY
+ lastFile = Mid(statText, Len(C_STAT_ANALYSING) + 1)
+ Else
+ currStatus = C_STAT_ERROR
+ End If
+ fileCont.Close
+ End If
+
+ CheckAnalyseStatus = currStatus
+End Function
+
+Function WriteDocsToAnalyze(myDocList As Collection, myApp As String, _
+ fso As FileSystemObject) As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteDocsToAnalyze"
+
+ Dim TempPath As String
+ Dim fileName As String
+ Dim fileContent As TextStream
+
+ fileName = ""
+ TempPath = fso.GetSpecialFolder(TemporaryFolder).path
+
+ If (TempPath = "") Then
+ TempPath = "."
+ End If
+
+ Dim vFileName As Variant
+ Dim Index As Long
+ Dim limit As Long
+
+ limit = myDocList.count
+ If (limit > 0) Then
+ fileName = fso.GetAbsolutePathName(TempPath & "\FileList" & myApp & ".txt")
+ Set fileContent = fso.OpenTextFile(fileName, ForWriting, True, TristateTrue)
+
+ For Index = 1 To limit
+ vFileName = myDocList(Index)
+ fileContent.WriteLine (vFileName)
+ Next
+
+ fileContent.Close
+ End If
+
+FinalExit:
+ Set fileContent = Nothing
+ WriteDocsToAnalyze = fileName
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+' This function looks for the given document name in the document collection
+' and returns TRUE and the position of the document in that collection if found,
+' FALSE otherwise
+Function GetDocumentIndex(myDocument As String, _
+ myDocList As Collection, _
+ lastIndex As Long) As Boolean
+
+ Dim currentFunctionName As String
+ currentFunctionName = "GetDocumentIndex"
+
+ On Error GoTo HandleErrors
+
+ Dim lastEntry As Long
+ Dim curIndex As Long
+ Dim curEntry As String
+ Dim entryFound As Boolean
+
+ entryFound = False
+ lastEntry = myDocList.count
+ curIndex = lastIndex
+
+ ' We start the search at the position of the last found
+ ' document
+ While Not entryFound And curIndex <= lastEntry
+ curEntry = myDocList.item(curIndex)
+ If (curEntry = myDocument) Then
+ lastIndex = curIndex
+ entryFound = True
+ Else
+ curIndex = curIndex + 1
+ End If
+ Wend
+
+ ' When we could not find the document, we start the search
+ ' from the beginning of the list
+ If Not entryFound Then
+ curIndex = 1
+ While Not entryFound And curIndex <= lastIndex
+ curEntry = myDocList.item(curIndex)
+ If (curEntry = myDocument) Then
+ lastIndex = curIndex
+ entryFound = True
+ Else
+ curIndex = curIndex + 1
+ End If
+ Wend
+ End If
+
+FinalExit:
+ GetDocumentIndex = entryFound
+ Exit Function
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function AnalyseList(myDocList As Collection, _
+ myApp As String, _
+ myIniFilePath As String, _
+ myOffset As Long, _
+ analysisAborted As Boolean) As Boolean
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "AnalyseList"
+
+ Dim cmdLine As String
+ Dim filelist As String
+ Dim statFileName As String
+ Dim finished As Boolean
+ Dim analyseStatus As Integer
+ Dim nRetries As Integer
+ Dim lastFile As String
+ Dim lastHandledFile As String
+ Dim launchStatus As Long
+ Dim fso As New FileSystemObject
+ Dim progressTitle As String
+
+ filelist = WriteDocsToAnalyze(myDocList, myApp, fso)
+ cmdLine = fso.GetAbsolutePathName(C_LAUNCH_DRIVER) & " " & myApp
+ finished = False
+
+ Dim TempPath As String
+ TempPath = fso.GetSpecialFolder(TemporaryFolder).path
+ If (TempPath = "") Then TempPath = "."
+ statFileName = fso.GetAbsolutePathName(TempPath & "\StatFile" & myApp & ".txt")
+ If (fso.FileExists(statFileName)) Then fso.DeleteFile (statFileName)
+
+ WriteToLog CFILE_LIST, filelist, myIniFilePath
+ WriteToLog CSTAT_FILE, statFileName, myIniFilePath
+ WriteToLog CLAST_CHECKPOINT, "", myIniFilePath
+ WriteToLog CNEXT_FILE, "", myIniFilePath
+ WriteToLog C_ABORT_ANALYSIS, "", myIniFilePath
+
+ ' In this loop we will restart the driver until we have finished the analysis
+ nRetries = 0
+ While Not finished And nRetries < C_MAX_RETRIES
+ launchStatus = launchDriver(statFileName, cmdLine, myApp, fso, _
+ myDocList, myOffset, myIniFilePath)
+ If (launchStatus = ABORTED) Then
+ finished = True
+ analyseStatus = C_STAT_ABORTED
+ analysisAborted = True
+ Else
+ analyseStatus = CheckAnalyseStatus(statFileName, lastHandledFile, fso)
+ End If
+ If (analyseStatus = C_STAT_DONE) Then
+ finished = True
+ ElseIf (analyseStatus = C_STAT_RETRY) Then
+ If (lastHandledFile = lastFile) Then
+ nRetries = nRetries + 1
+ Else
+ lastFile = lastHandledFile
+ nRetries = 1
+ End If
+ Else
+ nRetries = nRetries + 1
+ End If
+ Wend
+
+ If (analyseStatus = C_STAT_DONE) Then
+ AnalyseList = True
+ Else
+ AnalyseList = False
+ End If
+
+ 'The next driver should not overwrite this result file
+ WriteToLog CNEW_RESULTS_FILE, "False", myIniFilePath
+
+FinalExit:
+ Set fso = Nothing
+ Exit Function
+
+HandleErrors:
+ AnalyseList = False
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Sub HandleAbort(hProcess As Long, curApplication As String)
+
+ On Error Resume Next
+
+ Dim ret As Long
+ Dim curDate As Date
+ Dim stillWaiting As Boolean
+ Dim killApplication As Boolean
+ Dim waitTime As Long
+
+ curDate = Now()
+ stillWaiting = True
+ killApplication = False
+
+ While stillWaiting
+ stillWaiting = IsOfficeAppRunning(curApplication)
+ If (stillWaiting) Then
+ waitTime = val(DateDiff("s", curDate, Now()))
+ If (waitTime > C_ABORT_TIMEOUT) Then
+ stillWaiting = False
+ killApplication = True
+ End If
+ End If
+ Wend
+
+ If (killApplication) Then
+ ShowProgress.g_SP_AllowOtherDLG = True
+ TerminateMSO.Show vbModal, ShowProgress
+ End If
+
+ ret = TerminateProcess(hProcess, "0")
+End Sub
diff --git a/migrationanalysis/src/wizard/CollectedFiles.cls b/migrationanalysis/src/wizard/CollectedFiles.cls
new file mode 100644
index 000000000000..2dcc1a13e95c
--- /dev/null
+++ b/migrationanalysis/src/wizard/CollectedFiles.cls
@@ -0,0 +1,530 @@
+VERSION 1.0 CLASS
+BEGIN
+ MultiUse = -1 'True
+ Persistable = 0 'NotPersistable
+ DataBindingBehavior = 0 'vbNone
+ DataSourceBehavior = 0 'vbNone
+ MTSTransactionMode = 0 'NotAnMTSObject
+END
+Attribute VB_Name = "CollectedFiles"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = True
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = False
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+Option Explicit
+
+Private Const vbDot = 46
+Private Const MAX_PATH = 260
+Private Const INVALID_HANDLE_VALUE = -1
+Private Const vbBackslash = "\"
+Private Const ALL_FILES = "*.*"
+
+Private Type FILETIME
+ dwLowDateTime As Long
+ dwHighDateTime As Long
+End Type
+
+Private Type SYSTEMTIME
+ wYear As Integer
+ wMonth As Integer
+ wDayOfWeek As Integer
+ wDay As Integer
+ wHour As Integer
+ wMinute As Integer
+ wSecond As Integer
+ wMilliseconds As Integer
+End Type
+
+Private Type WIN32_FIND_DATA
+ dwFileAttributes As Long
+ ftCreationTime As FILETIME
+ ftLastAccessTime As FILETIME
+ ftLastWriteTime As FILETIME
+ nFileSizeHigh As Long
+ nFileSizeLow As Long
+ dwReserved0 As Long
+ dwReserved1 As Long
+ cFileName As String * MAX_PATH
+ cAlternate As String * 14
+End Type
+
+Private Type FILE_PARAMS
+ bRecurse As Boolean
+ nSearched As Long
+ sFileNameExt As String
+ sFileRoot As String
+End Type
+
+Private Declare Function SystemTimeToFileTime Lib "kernel32" _
+ (lpSystemTime As SYSTEMTIME, _
+ lpFileTime As FILETIME) As Long
+
+Private Declare Function CompareFileTime Lib "kernel32" _
+ (lpFileTime1 As FILETIME, _
+ lpFileTime2 As FILETIME) As Long
+
+Private Declare Function FindClose Lib "kernel32" _
+ (ByVal hFindFile As Long) As Long
+
+Private Declare Function FindFirstFile Lib "kernel32" _
+ Alias "FindFirstFileA" _
+ (ByVal lpFileName As String, _
+ lpFindFileData As WIN32_FIND_DATA) As Long
+
+Private Declare Function FindNextFile Lib "kernel32" _
+ Alias "FindNextFileA" _
+ (ByVal hFindFile As Long, _
+ lpFindFileData As WIN32_FIND_DATA) As Long
+
+Private Declare Function GetTickCount Lib "kernel32" () As Long
+
+Private Declare Function lstrlen Lib "kernel32" _
+ Alias "lstrlenW" (ByVal lpString As Long) As Long
+
+Private Declare Function PathMatchSpec Lib "shlwapi" _
+ Alias "PathMatchSpecW" _
+ (ByVal pszFileParam As Long, _
+ ByVal pszSpec As Long) As Long
+
+Private fp As FILE_PARAMS 'holds search parameters
+
+Private mWordFilesCol As Collection
+Private mExcelFilesCol As Collection
+Private mPPFilesCol As Collection
+
+Private mLessThan3 As Long
+Private mLessThan6 As Long
+Private mLessThan12 As Long
+Private mMoreThan12 As Long
+Private m3Months As FILETIME
+Private m6Months As FILETIME
+Private m12Months As FILETIME
+
+Private mDocCount As Long
+Private mDotCount As Long
+Private mXlsCount As Long
+Private mXltCount As Long
+Private mPptCount As Long
+Private mPotCount As Long
+Private mIgnoredDocs As Long
+Private mbDocSearch As Boolean
+Private mbDotSearch As Boolean
+Private mbXlsSearch As Boolean
+Private mbXltSearch As Boolean
+Private mbPptSearch As Boolean
+Private mbPotSearch As Boolean
+
+Private mWordDriverPath As String
+Private mExcelDriverPath As String
+Private mPPDriverPath As String
+
+Private Sub Class_Initialize()
+ Set mWordFilesCol = New Collection
+ Set mExcelFilesCol = New Collection
+ Set mPPFilesCol = New Collection
+End Sub
+Private Sub Class_Terminate()
+ Set mWordFilesCol = Nothing
+ Set mExcelFilesCol = Nothing
+ Set mPPFilesCol = Nothing
+End Sub
+
+Public Property Get DocCount() As Long
+ DocCount = mDocCount
+End Property
+Public Property Get DotCount() As Long
+ DotCount = mDotCount
+End Property
+Public Property Get XlsCount() As Long
+ XlsCount = mXlsCount
+End Property
+Public Property Get XltCount() As Long
+ XltCount = mXltCount
+End Property
+Public Property Get PptCount() As Long
+ PptCount = mPptCount
+End Property
+Public Property Get PotCount() As Long
+ PotCount = mPotCount
+End Property
+Public Property Get IgnoredDocCount() As Long
+ IgnoredDocCount = mIgnoredDocs
+End Property
+Public Property Get DocsLessThan3Months() As Long
+ DocsLessThan3Months = mLessThan3
+End Property
+Public Property Get DocsLessThan6Months() As Long
+ DocsLessThan6Months = mLessThan6
+End Property
+Public Property Get DocsLessThan12Months() As Long
+ DocsLessThan12Months = mLessThan12
+End Property
+Public Property Get DocsMoreThan12Months() As Long
+ DocsMoreThan12Months = mMoreThan12
+End Property
+
+Public Property Get WordFiles() As Collection
+ Set WordFiles = mWordFilesCol
+End Property
+Public Property Get ExcelFiles() As Collection
+ Set ExcelFiles = mExcelFilesCol
+End Property
+Public Property Get PowerPointFiles() As Collection
+ Set PowerPointFiles = mPPFilesCol
+End Property
+
+Public Function count() As Long
+ count = mWordFilesCol.count + mExcelFilesCol.count + mPPFilesCol.count
+End Function
+
+Public Function Search(rootDir As String, FileSpecs As Collection, IncludeSubdirs As Boolean, _
+ ignoreOld As Boolean, Months As Integer) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Search"
+
+ Dim tstart As Single 'timer var for this routine only
+ Dim tend As Single 'timer var for this routine only
+ Dim spec As Variant
+ Dim allSpecs As String
+ Dim fso As New FileSystemObject
+
+ Search = True
+
+ If FileSpecs.count = 0 Then Exit Function
+
+ If FileSpecs.count > 1 Then
+ For Each spec In FileSpecs
+ allSpecs = allSpecs & "; " & spec
+ SetSearchBoolean CStr(spec)
+ Next
+ Else
+ allSpecs = FileSpecs(1)
+ SetSearchBoolean CStr(FileSpecs(1))
+ End If
+
+ mWordDriverPath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CWORD_DRIVER_FILE)
+ mExcelDriverPath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CEXCEL_DRIVER_FILE)
+ mPPDriverPath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CPP_DRIVER_FILE)
+
+ With fp
+ .sFileRoot = QualifyPath(rootDir)
+ .sFileNameExt = allSpecs
+ .bRecurse = IncludeSubdirs
+ .nSearched = 0
+ End With
+
+ Load SearchDocs
+
+ ignoreOld = ignoreOld And InitFileTimes
+
+ Dim limDate As FILETIME
+ If ignoreOld Then
+ If Months = 3 Then
+ limDate = m3Months
+ ElseIf Months = 6 Then
+ limDate = m6Months
+ ElseIf Months = 12 Then
+ limDate = m12Months
+ Else
+ ignoreOld = False
+ End If
+ End If
+
+ 'tstart = GetTickCount()
+ Search = SearchForFiles(QualifyPath(rootDir), IncludeSubdirs, ignoreOld, limDate)
+ 'tend = GetTickCount()
+
+ Unload SearchDocs
+
+ 'Debug:
+ 'MsgBox "Specs " & allSpecs & vbLf & _
+ ' Format$(fp.nSearched, "###,###,###,##0") & vbLf & _
+ ' Format$(count, "###,###,###,##0") & vbLf & _
+ ' FormatNumber((tend - tstart) / 1000, 2) & " seconds"
+
+FinalExit:
+ Set fso = Nothing
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+Sub SetSearchBoolean(spec As String)
+
+ If spec = "*.doc" Then
+ mbDocSearch = True
+ End If
+ If spec = "*.dot" Then
+ mbDotSearch = True
+ End If
+ If spec = "*.xls" Then
+ mbXlsSearch = True
+ End If
+ If spec = "*.xlt" Then
+ mbXltSearch = True
+ End If
+ If spec = "*.ppt" Then
+ mbPptSearch = True
+ End If
+ If spec = "*.pot" Then
+ mbPotSearch = True
+ End If
+
+End Sub
+
+Private Function SearchForFiles(sRoot As String, bRecurse As Boolean, _
+ bIgnoreOld As Boolean, limDate As FILETIME) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SearchForFiles"
+
+ Dim WFD As WIN32_FIND_DATA
+ Dim hFile As Long
+ Dim path As String
+ Dim sFileName As String
+ Dim nTotal As Long
+
+ SearchForFiles = False
+
+ hFile = FindFirstFile(sRoot & ALL_FILES, WFD)
+
+ If hFile = INVALID_HANDLE_VALUE Then GoTo FinalExit
+
+ Do
+ If (SearchDocs.g_SD_Abort) Then GoTo FinalExit
+ sFileName = TrimNull(WFD.cFileName)
+ 'if a folder, and recurse specified, call
+ 'method again
+ If (WFD.dwFileAttributes And vbDirectory) Then
+ If (Asc(WFD.cFileName) <> vbDot) And bRecurse Then
+ SearchForFiles sRoot & sFileName & vbBackslash, bRecurse, bIgnoreOld, limDate
+ End If
+ Else
+ 'must be a file..
+ nTotal = mDocCount + mDotCount + mXlsCount + _
+ mXltCount + mPptCount + mPotCount
+ SearchDocs.SD_UpdateProgress str$(nTotal), sRoot
+ DoEvents
+
+ If mbDocSearch Then
+ If MatchSpec(WFD.cFileName, "*.doc") Then
+ path = sRoot & sFileName
+
+ 'If StrComp(path, mWordDriverPath, vbTextCompare) <> 0 Then
+ If Not MatchSpec(path, mWordDriverPath) Then
+ If (IsTooOld(WFD, limDate, bIgnoreOld)) Then
+ mIgnoredDocs = mIgnoredDocs + 1
+ Else
+ mDocCount = mDocCount + 1
+ mWordFilesCol.add path
+ End If
+ End If
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+ If mbDotSearch Then
+ If MatchSpec(WFD.cFileName, "*.dot") Then
+ If (IsTooOld(WFD, limDate, bIgnoreOld)) Then
+ mIgnoredDocs = mIgnoredDocs + 1
+ Else
+ mDotCount = mDotCount + 1
+ mWordFilesCol.add sRoot & sFileName
+ End If
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+ If mbXlsSearch Then
+ If MatchSpec(WFD.cFileName, "*.xls") Then
+ 'If StrComp(sFileName, CEXCEL_DRIVER_FILE, vbTextCompare) <> 0 Then
+ If Not MatchSpec(WFD.cFileName, CEXCEL_DRIVER_FILE) Then
+ If (IsTooOld(WFD, limDate, bIgnoreOld)) Then
+ mIgnoredDocs = mIgnoredDocs + 1
+ Else
+ mXlsCount = mXlsCount + 1
+ mExcelFilesCol.add sRoot & sFileName
+ End If
+ End If
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+ If mbXltSearch Then
+ If MatchSpec(WFD.cFileName, "*.xlt") Then
+ If (IsTooOld(WFD, limDate, bIgnoreOld)) Then
+ mIgnoredDocs = mIgnoredDocs + 1
+ Else
+ mXltCount = mXltCount + 1
+ mExcelFilesCol.add sRoot & sFileName
+ End If
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+ If mbPptSearch Then
+ If MatchSpec(WFD.cFileName, "*.ppt") Then
+ path = sRoot & sFileName
+ 'If StrComp(path, mPPDriverPath, vbTextCompare) <> 0 Then
+ If Not MatchSpec(path, mPPDriverPath) Then
+ If (IsTooOld(WFD, limDate, bIgnoreOld)) Then
+ mIgnoredDocs = mIgnoredDocs + 1
+ Else
+ mPptCount = mPptCount + 1
+ mPPFilesCol.add path
+ End If
+ End If
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+ If mbPotSearch Then
+ If MatchSpec(WFD.cFileName, "*.pot") Then
+ If (IsTooOld(WFD, limDate, bIgnoreOld)) Then
+ mIgnoredDocs = mIgnoredDocs + 1
+ Else
+ mPotCount = mPotCount + 1
+ mPPFilesCol.add sRoot & sFileName
+ End If
+ GoTo CONTINUE_LOOP
+ End If
+ End If
+
+ End If 'If WFD.dwFileAttributes
+
+CONTINUE_LOOP:
+ fp.nSearched = fp.nSearched + 1
+
+ Loop While FindNextFile(hFile, WFD)
+
+ SearchForFiles = True
+FinalExit:
+ Call FindClose(hFile)
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Private Function QualifyPath(sPath As String) As String
+
+ If Right$(sPath, 1) <> vbBackslash Then
+ QualifyPath = sPath & vbBackslash
+ Else: QualifyPath = sPath
+ End If
+
+End Function
+
+Private Function TrimNull(startstr As String) As String
+
+ TrimNull = Left$(startstr, lstrlen(StrPtr(startstr)))
+
+End Function
+
+Private Function MatchSpec(sFile As String, sSpec As String) As Boolean
+
+ MatchSpec = PathMatchSpec(StrPtr(sFile), StrPtr(sSpec))
+
+End Function
+
+Private Function IsTooOld(aWFD As WIN32_FIND_DATA, minDate As FILETIME, _
+ ignoreOld As Boolean) As Boolean
+
+ IsTooOld = False
+
+ Dim aFileTime As FILETIME
+
+ If (aWFD.ftLastWriteTime.dwHighDateTime <> 0) Then
+ aFileTime = aWFD.ftLastWriteTime
+ ElseIf (aWFD.ftCreationTime.dwHighDateTime <> 0) Then
+ aFileTime = aWFD.ftCreationTime
+ Else
+ ' No valid time found, don't ignore file
+ mLessThan3 = mLessThan3 + 1
+ Exit Function
+ End If
+
+ If (ignoreOld) Then
+ If (CompareFileTime(aFileTime, minDate) < 0) Then
+ IsTooOld = True
+ End If
+ End If
+
+ If (CompareFileTime(aWFD.ftLastWriteTime, m12Months) < 0) Then
+ mMoreThan12 = mMoreThan12 + 1
+ ElseIf (CompareFileTime(aWFD.ftLastWriteTime, m6Months) < 0) Then
+ mLessThan12 = mLessThan12 + 1
+ ElseIf (CompareFileTime(aWFD.ftLastWriteTime, m3Months) < 0) Then
+ mLessThan6 = mLessThan6 + 1
+ Else
+ mLessThan3 = mLessThan3 + 1
+ End If
+
+End Function
+
+Private Function BasicDateToFileTime(basDate As Date, _
+ fileDate As FILETIME) As Boolean
+
+ Dim sysDate As SYSTEMTIME
+ Dim retval As Long
+
+ sysDate.wYear = DatePart("yyyy", basDate)
+ sysDate.wMonth = DatePart("m", basDate)
+ sysDate.wDay = DatePart("d", basDate)
+ sysDate.wHour = DatePart("h", basDate)
+ sysDate.wMinute = DatePart("m", basDate)
+ retval = SystemTimeToFileTime(sysDate, fileDate)
+ If (retval = 0) Then
+ BasicDateToFileTime = False
+ Else
+ BasicDateToFileTime = True
+ End If
+End Function
+
+Private Function InitFileTimes() As Boolean
+
+ Dim nowDate As Date
+ Dim basDate As Date
+
+ InitFileTimes = True
+
+ nowDate = Now()
+ basDate = DateAdd("m", -3, nowDate)
+ If Not BasicDateToFileTime(basDate, m3Months) Then InitFileTimes = False
+
+ basDate = DateAdd("m", -6, nowDate)
+ If Not BasicDateToFileTime(basDate, m6Months) Then InitFileTimes = False
+
+ basDate = DateAdd("yyyy", -1, nowDate)
+ If Not BasicDateToFileTime(basDate, m12Months) Then InitFileTimes = False
+
+ mMoreThan12 = 0
+ mLessThan12 = 0
+ mLessThan6 = 0
+ mLessThan3 = 0
+
+End Function
diff --git a/migrationanalysis/src/wizard/DocAnalysisWizard.exe.manifest b/migrationanalysis/src/wizard/DocAnalysisWizard.exe.manifest
new file mode 100644
index 000000000000..911bdc94297d
--- /dev/null
+++ b/migrationanalysis/src/wizard/DocAnalysisWizard.exe.manifest
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="1.0.0.0"
+ processorArchitecture="X86"
+ name="SunMicrosystems.WinXPStyle.DocumentAnalysis"
+ type="win32"
+/>
+<description>Windows XP Style for Document Analysis Wizard</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="X86"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+</assembly> \ No newline at end of file
diff --git a/migrationanalysis/src/wizard/Get Directory Dialog.bas b/migrationanalysis/src/wizard/Get Directory Dialog.bas
new file mode 100644
index 000000000000..a4520bda67a0
--- /dev/null
+++ b/migrationanalysis/src/wizard/Get Directory Dialog.bas
@@ -0,0 +1,143 @@
+Attribute VB_Name = "BrowseDirectorysOnly"
+'/*************************************************************************
+' *
+' * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+' *
+' * Copyright 2000, 2010 Oracle and/or its affiliates.
+' *
+' * OpenOffice.org - a multi-platform office productivity suite
+' *
+' * This file is part of OpenOffice.org.
+' *
+' * OpenOffice.org is free software: you can redistribute it and/or modify
+' * it under the terms of the GNU Lesser General Public License version 3
+' * only, as published by the Free Software Foundation.
+' *
+' * OpenOffice.org is distributed in the hope that it will be useful,
+' * but WITHOUT ANY WARRANTY; without even the implied warranty of
+' * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' * GNU Lesser General Public License version 3 for more details
+' * (a copy is included in the LICENSE file that accompanied this code).
+' *
+' * You should have received a copy of the GNU Lesser General Public License
+' * version 3 along with OpenOffice.org. If not, see
+' * <http://www.openoffice.org/license.html>
+' * for a copy of the LGPLv3 License.
+' *
+' ************************************************************************/
+
+' Modified as BIF_STATUSTEXT overflows for nested folders so is no longer
+' shown.
+
+'=====================================================================================
+' Browse for a Folder using SHBrowseForFolder API function with a callback
+' function BrowseCallbackProc.
+'
+' This Extends the functionality that was given in the
+' MSDN Knowledge Base article Q179497 "HOWTO: Select a Directory
+' Without the Common Dialog Control".
+'
+' After reading the MSDN knowledge base article Q179378 "HOWTO: Browse for
+' Folders from the Current Directory", I was able to figure out how to add
+' a callback function that sets the starting directory and displays the
+' currently selected path in the "Browse For Folder" dialog.
+'
+'
+' Stephen Fonnesbeck
+' steev@xmission.com
+' http://www.xmission.com/~steev
+' Feb 20, 2000
+'
+'=====================================================================================
+' Usage:
+'
+' Dim folder As String
+' folder = BrowseForFolder(Me, "Select A Directory", "C:\startdir\anywhere")
+' If Len(folder) = 0 Then Exit Sub 'User Selected Cancel
+'
+'=====================================================================================
+
+Option Explicit
+
+Private Const BIF_STATUSTEXT = &H4&
+Private Const BIF_RETURNONLYFSDIRS = 1
+Private Const BIF_DONTGOBELOWDOMAIN = 2
+Private Const MAX_PATH = 260
+
+Private Const WM_USER = &H400
+Private Const BFFM_INITIALIZED = 1
+Private Const BFFM_SELCHANGED = 2
+Private Const BFFM_SETSELECTION = (WM_USER + 102)
+
+Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
+Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
+Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
+Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
+
+Private Type BrowseInfo
+ hWndOwner As Long
+ pIDLRoot As Long
+ pszDisplayName As Long
+ lpszTitle As Long
+ ulFlags As Long
+ lpfnCallback As Long
+ lParam As Long
+ iImage As Long
+End Type
+
+Private m_CurrentDirectory As String 'The current directory
+'
+
+Public Function BrowseForFolder(owner As Form, Title As String, StartDir As String) As String
+ 'Opens a Treeview control that displays the directories in a computer
+
+ Dim lpIDList As Long
+ Dim szTitle As String
+ Dim sBuffer As String
+ Dim tBrowseInfo As BrowseInfo
+ m_CurrentDirectory = StartDir & vbNullChar
+
+ szTitle = Title
+ With tBrowseInfo
+ .hWndOwner = owner.hWnd
+ .lpszTitle = lstrcat(szTitle, "")
+ .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN '+ BIF_STATUSTEXT
+ .lpfnCallback = GetAddressofFunction(AddressOf BrowseCallbackProc) 'get address of function.
+ End With
+
+ lpIDList = SHBrowseForFolder(tBrowseInfo)
+ If (lpIDList) Then
+ sBuffer = Space(MAX_PATH)
+ SHGetPathFromIDList lpIDList, sBuffer
+ sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
+ BrowseForFolder = sBuffer
+ Else
+ BrowseForFolder = ""
+ End If
+
+End Function
+
+Private Function BrowseCallbackProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal lp As Long, ByVal pData As Long) As Long
+
+ Dim lpIDList As Long
+ Dim ret As Long
+ Dim sBuffer As String
+
+ On Error Resume Next 'Sugested by MS to prevent an error from
+ 'propagating back into the calling process.
+
+ Select Case uMsg
+
+ Case BFFM_INITIALIZED
+ Call SendMessage(hWnd, BFFM_SETSELECTION, 1, m_CurrentDirectory)
+
+ End Select
+
+ BrowseCallbackProc = 0
+
+End Function
+
+' This function allows you to assign a function pointer to a vaiable.
+Private Function GetAddressofFunction(add As Long) As Long
+ GetAddressofFunction = add
+End Function
diff --git a/migrationanalysis/src/wizard/IniSupport.bas b/migrationanalysis/src/wizard/IniSupport.bas
new file mode 100644
index 000000000000..81347eccab56
--- /dev/null
+++ b/migrationanalysis/src/wizard/IniSupport.bas
@@ -0,0 +1,269 @@
+Attribute VB_Name = "IniSupport"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+Option Explicit
+
+Private Declare Function GetPrivateProfileString Lib "kernel32" _
+ Alias "GetPrivateProfileStringA" _
+ (ByVal lpSectionName As String, _
+ ByVal lpKeyName As Any, _
+ ByVal lpDefault As String, _
+ ByVal lpReturnedString As String, _
+ ByVal nSize As Long, _
+ ByVal lpFileName As String) As Long
+
+Private Declare Function WritePrivateProfileString Lib "kernel32" _
+ Alias "WritePrivateProfileStringA" _
+ (ByVal lpSectionName As String, _
+ ByVal lpKeyName As Any, _
+ ByVal lpString As Any, _
+ ByVal lpFileName As String) As Long
+
+
+Public Function ProfileGetItem(lpSectionName As String, _
+ lpKeyName As String, _
+ defaultValue As String, _
+ inifile As String) As String
+
+'Retrieves a value from an ini file corresponding
+'to the section and key name passed.
+
+ Dim success As Long
+ Dim nSize As Long
+ Dim ret As String
+
+ 'call the API with the parameters passed.
+ 'The return value is the length of the string
+ 'in ret, including the terminating null. If a
+ 'default value was passed, and the section or
+ 'key name are not in the file, that value is
+ 'returned. If no default value was passed (""),
+ 'then success will = 0 if not found.
+
+ 'Pad a string large enough to hold the data.
+ ret = Space$(2048)
+ nSize = Len(ret)
+ success = GetPrivateProfileString(lpSectionName, _
+ lpKeyName, _
+ defaultValue, _
+ ret, _
+ nSize, _
+ inifile)
+
+ If success Then
+ ProfileGetItem = Left$(ret, success)
+ End If
+
+End Function
+
+
+Public Sub ProfileDeleteItem(lpSectionName As String, _
+ lpKeyName As String, _
+ inifile As String)
+
+'this call will remove the keyname and its
+'corresponding value from the section specified
+'in lpSectionName. This is accomplished by passing
+'vbNullString as the lpValue parameter. For example,
+'assuming that an ini file had:
+' [Colours]
+' Colour1=Red
+' Colour2=Blue
+' Colour3=Green
+'
+'and this sub was called passing "Colour2"
+'as lpKeyName, the resulting ini file
+'would contain:
+' [Colours]
+' Colour1=Red
+' Colour3=Green
+
+ Call WritePrivateProfileString(lpSectionName, _
+ lpKeyName, _
+ vbNullString, _
+ inifile)
+
+End Sub
+
+
+Public Sub ProfileDeleteSection(lpSectionName As String, _
+ inifile As String)
+
+'this call will remove the entire section
+'corresponding to lpSectionName. This is
+'accomplished by passing vbNullString
+'as both the lpKeyName and lpValue parameters.
+'For example, assuming that an ini file had:
+' [Colours]
+' Colour1=Red
+' Colour2=Blue
+' Colour3=Green
+'
+'and this sub was called passing "Colours"
+'as lpSectionName, the resulting Colours
+'section in the ini file would be deleted.
+
+ Call WritePrivateProfileString(lpSectionName, _
+ vbNullString, _
+ vbNullString, _
+ inifile)
+
+End Sub
+
+Private Function StripNulls(startStrg As String) As String
+
+'take a string separated by nulls, split off 1 item, and shorten the string
+'so the next item is ready for removal.
+'The passed string must have a terminating null for this function to work correctly.
+'If you remain in a loop, check this first!
+
+ Dim pos As Long
+ Dim item As String
+
+ pos = InStr(1, startStrg, Chr$(0))
+
+ If pos Then
+
+ item = Mid$(startStrg, 1, pos - 1)
+ startStrg = Mid$(startStrg, pos + 1, Len(startStrg))
+ StripNulls = item
+
+ End If
+
+End Function
+
+Public Function ProfileLoadList(lst As ComboBox, _
+ lpSectionName As String, _
+ inifile As String) As Long
+ Dim success As Long
+ Dim c As Long
+ Dim nSize As Long
+ Dim KeyData As String
+ Dim lpKeyName As String
+ Dim ret As String
+
+ ' call the API passing lpKeyName = null. This causes
+ ' the API to return a list of all keys under that section.
+ ' Pad the passed string large enough to hold the data.
+ ret = Space$(2048)
+ nSize = Len(ret)
+ success = GetPrivateProfileString( _
+ lpSectionName, vbNullString, "", ret, nSize, inifile)
+
+ ' The returned string is a null-separated list of key names,
+ ' terminated by a pair of null characters.
+ ' If the Get call was successful, success holds the length of the
+ ' string in ret up to but not including that second terminating null.
+ ' The ProfileGetItem function below extracts each key item using the
+ ' nulls as markers, so trim off the terminating null.
+ If success Then
+
+ 'trim terminating null and trailing spaces
+ ret = Left$(ret, success)
+
+ 'with the resulting string extract each element
+ Do Until ret = ""
+ 'strip off an item (i.e. "Item1", "Item2")
+ lpKeyName = StripNulls(ret)
+
+ 'pass the lpKeyName received to a routine that
+ 'again calls GetPrivateProfileString, this
+ 'time passing the real key name. Returned
+ 'is the value associated with that key,
+ 'ie the "Apple" corresponding to the ini
+ 'entry "Item1=Apple"
+ KeyData = ProfileGetItem( _
+ lpSectionName, lpKeyName, "", inifile)
+
+ 'add the item retruned to the listbox
+ lst.AddItem KeyData
+ Loop
+
+ End If
+
+ 'return the number of items as an
+ 'indicator of success
+ ProfileLoadList = lst.ListCount
+End Function
+
+Public Function ProfileLoadDict(dict As Scripting.Dictionary, _
+ lpSectionName As String, _
+ inifile As String) As Long
+ Dim success As Long
+ Dim c As Long
+ Dim nSize As Long
+ Dim KeyData As String
+ Dim lpKeyName As String
+ Dim ret As String
+
+ ' call the API passing lpKeyName = null. This causes
+ ' the API to return a list of all keys under that section.
+ ' Pad the passed string large enough to hold the data.
+ ret = Space$(2048)
+ nSize = Len(ret)
+ success = GetPrivateProfileString( _
+ lpSectionName, vbNullString, "", ret, nSize, inifile)
+
+ ' The returned string is a null-separated list of key names,
+ ' terminated by a pair of null characters.
+ ' If the Get call was successful, success holds the length of the
+ ' string in ret up to but not including that second terminating null.
+ ' The ProfileGetItem function below extracts each key item using the
+ ' nulls as markers, so trim off the terminating null.
+ If success Then
+
+ 'trim terminating null and trailing spaces
+ ret = Left$(ret, success)
+
+ 'with the resulting string extract each element
+ Do Until ret = ""
+ 'strip off an item (i.e. "Item1", "Item2")
+ lpKeyName = StripNulls(ret)
+
+ 'pass the lpKeyName received to a routine that
+ 'again calls GetPrivateProfileString, this
+ 'time passing the real key name. Returned
+ 'is the value associated with that key,
+ 'ie the "Apple" corresponding to the ini
+ 'entry "Item1=Apple"
+ KeyData = ProfileGetItem( _
+ lpSectionName, lpKeyName, "", inifile)
+
+ dict.add lpKeyName, KeyData
+ Loop
+
+ End If
+
+ ProfileLoadDict = dict.count
+End Function
+
+
+
+
+
+
+
diff --git a/migrationanalysis/src/wizard/LaunchDrivers.vbp b/migrationanalysis/src/wizard/LaunchDrivers.vbp
new file mode 100644
index 000000000000..ac94808700dd
--- /dev/null
+++ b/migrationanalysis/src/wizard/LaunchDrivers.vbp
@@ -0,0 +1,42 @@
+Type=Exe
+Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE Automation
+Reference=*\G{00020813-0000-0000-C000-000000000046}#1.3#0#C:\Program Files\Microsoft Office\Office\EXCEL9.OLB#Microsoft Excel 9.0 Object Library
+Reference=*\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.1#0#C:\Program Files\Microsoft Office\Office\mso9.dll#Microsoft Office 9.0 Object Library
+Reference=*\G{91493440-5A91-11CF-8700-00AA0060263B}#2.6#0#C:\Program Files\Microsoft Office\Office\msppt9.olb#Microsoft PowerPoint 9.0 Object Library
+Reference=*\G{00020905-0000-0000-C000-000000000046}#8.1#0#C:\Program Files\Microsoft Office\Office\MSWORD9.OLB#Microsoft Word 9.0 Object Library
+Reference=*\G{420B2830-E718-11CF-893D-00A0C9054228}#1.0#0#C:\WINDOWS\system32\scrrun.dll#Microsoft Scripting Runtime
+Module=RunServer; ..\..\src\wizard\RunServer.bas
+Startup="Sub Main"
+HelpFile=""
+Title="LaunchDrivers"
+ExeName32="LaunchDrivers.exe"
+Path32="..\bin"
+Command32=""
+Name="LaunchDrivers"
+HelpContextID="0"
+CompatibleMode="0"
+MajorVer=2
+MinorVer=0
+RevisionVer=000
+AutoIncrementVer=0
+ServerSupportFiles=0
+VersionCompanyName="OpenOffice.org"
+VersionLegalCopyright="Copyright 2000, 2010 Oracle and/or its affiliates."
+CompilationType=0
+OptimizationType=0
+FavorPentiumPro(tm)=0
+CodeViewDebugInfo=0
+NoAliasing=0
+BoundsCheck=0
+OverflowCheck=0
+FlPointCheck=0
+FDIVCheck=0
+UnroundedFP=0
+StartMode=0
+Unattended=0
+Retained=0
+ThreadPerObject=0
+MaxNumberOfThreads=1
+
+[MS Transaction Server]
+AutoRefresh=1
diff --git a/migrationanalysis/src/wizard/LaunchDrivers.vbw b/migrationanalysis/src/wizard/LaunchDrivers.vbw
new file mode 100644
index 000000000000..af96d226e68a
--- /dev/null
+++ b/migrationanalysis/src/wizard/LaunchDrivers.vbw
@@ -0,0 +1 @@
+RunServer = 22, 22, 301, 626, Z
diff --git a/migrationanalysis/src/wizard/OOo3_Analysis.ico b/migrationanalysis/src/wizard/OOo3_Analysis.ico
new file mode 100644
index 000000000000..d12f42d2f868
--- /dev/null
+++ b/migrationanalysis/src/wizard/OOo3_Analysis.ico
Binary files differ
diff --git a/migrationanalysis/src/wizard/OOo_AnalysisBitmap.png b/migrationanalysis/src/wizard/OOo_AnalysisBitmap.png
new file mode 100644
index 000000000000..6d852d90c5ae
--- /dev/null
+++ b/migrationanalysis/src/wizard/OOo_AnalysisBitmap.png
Binary files differ
diff --git a/migrationanalysis/src/wizard/Office10Issues.bas b/migrationanalysis/src/wizard/Office10Issues.bas
new file mode 100644
index 000000000000..11196a153290
--- /dev/null
+++ b/migrationanalysis/src/wizard/Office10Issues.bas
@@ -0,0 +1,361 @@
+Attribute VB_Name = "Office10Issues"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+'Disable Option Explicit so this will compile on earlier Office versions
+'Option Explicit
+Public Declare Function RegCloseKey Lib "advapi32.dll" _
+ (ByVal hKey As Long) As Long
+Public Declare Function RegQueryValueEx Lib "advapi32.dll" _
+ Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
+ ByVal lpReserved As Long, lpType As Long, lpData As Any, _
+ lpcbData As Long) As Long
+Public Declare Function RegSetValueEx Lib "advapi32.dll" _
+ Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _
+ ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, _
+ ByVal cbData As Long) As Long
+Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal _
+ hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass _
+ As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes _
+ As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
+Public Declare Function RegOpenKey Lib "advapi32.dll" _
+ Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
+ phkResult As Long) As Long
+Public Declare Function RegCreateKey Lib "advapi32.dll" _
+ Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
+ phkResult As Long) As Long
+Public Declare Function RegDeleteValue Lib "advapi32.dll" _
+ Alias "RegDeleteValueA" (ByVal hKey As Long, _
+ ByVal lpValueName As String) As Long
+Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal _
+ hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired _
+ As Long, phkResult As Long) As Long
+
+Type SECURITY_ATTRIBUTES
+ nLength As Long
+ lpSecurityDescriptor As Long
+ bInheritHandle As Long
+End Type
+
+Enum RegHive
+ 'HKEY_CLASSES_ROOT = &H80000000
+ HK_CR = &H80000000
+ HKEY_CURRENT_USER = &H80000001
+ HK_CU = &H80000001
+ HKEY_LOCAL_MACHINE = &H80000002
+ HK_LM = &H80000002
+ HKEY_USERS = &H80000003
+ HK_US = &H80000003
+ HKEY_CURRENT_CONFIG = &H80000005
+ HK_CC = &H80000005
+ HKEY_DYN_DATA = &H80000006
+ HK_DD = &H80000006
+End Enum
+
+Enum RegType
+ REG_SZ = 1 'Unicode nul terminated string
+ REG_BINARY = 3 'Free form binary
+ REG_DWORD = 4 '32-bit number
+End Enum
+
+Const ERROR_SUCCESS = 0
+Const KEY_WRITE = &H20006
+Const APP_EXCEL = "Excel"
+Const APP_WORD = "Word"
+Const APP_PP = "PowerPoint"
+
+Public Function CreateRegKey(hKey As RegHive, strPath As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CreateRegKey"
+
+ Dim heKey As Long
+ Dim secattr As SECURITY_ATTRIBUTES ' security settings for the key
+ Dim subkey As String ' name of the subkey to create or open
+ Dim neworused As Long ' receives flag for if the key was created or opened
+ Dim stringbuffer As String ' the string to put into the registry
+ Dim retval As Long ' return value
+
+ ' Set the name of the new key and the default security settings
+ secattr.nLength = Len(secattr)
+ secattr.lpSecurityDescriptor = 0
+ secattr.bInheritHandle = 1
+
+ retval = RegCreateKeyEx(hKey, strPath, 0, "", 0, KEY_WRITE, _
+ secattr, heKey, neworused)
+ If retval = 0 Then
+ retval = RegCloseKey(hKey)
+ Exit Function
+ End If
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Public Function CreateRegKey2(hKey As RegHive, strPath As String) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CreateRegKey"
+ CreateRegKey2 = 0
+
+ Dim heKey As Long
+ Dim secattr As SECURITY_ATTRIBUTES ' security settings for the key
+ Dim subkey As String ' name of the subkey to create or open
+ Dim neworused As Long ' receives flag for if the key was created or opened
+ Dim stringbuffer As String ' the string to put into the registry
+ Dim retval As Long ' return value
+
+ ' Set the name of the new key and the default security settings
+ secattr.nLength = Len(secattr)
+ secattr.lpSecurityDescriptor = 0
+ secattr.bInheritHandle = 1
+
+ retval = RegCreateKeyEx(hKey, strPath, 0, "", 0, KEY_WRITE, _
+ secattr, heKey, neworused)
+ If retval = ERROR_SUCCESS Then
+ CreateRegKey2 = heKey
+ Exit Function
+ End If
+
+FinalExit:
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ CreateRegKey2 = 0
+ GoTo FinalExit
+End Function
+
+
+Public Function GetRegLong(ByVal hKey As RegHive, ByVal strPath As String, ByVal strValue As String) As Long
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetRegLong"
+
+ Dim lRegResult As Long
+ Dim lValueType As Long
+ Dim lBuffer As Long
+ Dim lDataBufferSize As Long
+ Dim hCurKey As Long
+
+ GetRegLong = 0
+ lRegResult = RegOpenKey(hKey, strPath, hCurKey)
+ lDataBufferSize = 4 '4 bytes = 32 bits = long
+
+ lRegResult = RegQueryValueEx(hCurKey, strValue, 0, REG_DWORD, lBuffer, lDataBufferSize)
+ If lRegResult = ERROR_SUCCESS Then
+ GetRegLong = lBuffer
+ End If
+ lRegResult = RegCloseKey(hCurKey)
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Public Function SaveRegLong(ByVal hKey As RegHive, ByVal strPath As String, ByVal strValue As String, ByVal lData As Long)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SaveRegLong"
+
+ Const NumofByte = 4
+ Dim hCurKey As Long
+ Dim lRegResult As Long
+
+ lRegResult = RegCreateKey(hKey, strPath, hCurKey)
+ lRegResult = RegSetValueEx(hCurKey, strValue, 0&, REG_DWORD, lData, NumofByte)
+ If lRegResult = ERROR_SUCCESS Then
+ lRegResult = RegCloseKey(hCurKey)
+ Exit Function
+ End If
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+
+Public Function GiveAccessToMacroProject(application As String, sVersion As String, oldvalue As Long) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SaveRegLong"
+ GiveAccessToMacroProject = False
+
+ Const OfficePath = "Software\Policies\Microsoft\Office\"
+ Const security = "\Security"
+ Const AccessVBOM = "AccessVBOM"
+ Const AccessVBOMValue = 1
+ Dim subpath As String
+ Dim RegistryValue As Long
+
+ subpath = OfficePath & sVersion & "\" & application & security
+ CreateRegKey HKEY_CURRENT_USER, subpath
+ RegistryValue = GetRegLong(HKEY_CURRENT_USER, subpath, AccessVBOM)
+ oldvalue = RegistryValue
+ SaveRegLong HKEY_CURRENT_USER, subpath, AccessVBOM, AccessVBOMValue
+ GiveAccessToMacroProject = True
+ Exit Function
+
+HandleErrors:
+ GiveAccessToMacroProject = False
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Public Function SetDefaultRegValue(application As String, sVersion As String, sValue As Long)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SaveRegLong"
+
+ Const OfficePath = "Software\Policies\Microsoft\Office\"
+ Const security = "\Security"
+ Const AccessVBOM = "AccessVBOM"
+ Dim subpath As String
+
+ subpath = OfficePath & sVersion & "\" & application & security
+ SaveRegLong HKEY_CURRENT_USER, subpath, AccessVBOM, sValue
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+Public Function DeleteRegValue(application As String, sVersion As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "SaveRegLong"
+
+ Const OfficePath = "Software\Policies\Microsoft\Office\"
+ Const security = "\Security"
+ Const AccessVBOM = "AccessVBOM"
+ Dim subpath As String
+ Dim retval As Long
+ Dim hKey As Long
+
+ subpath = OfficePath & sVersion & "\" & application & security
+ retval = RegOpenKeyEx(HKEY_CURRENT_USER, subpath, 0, KEY_WRITE, hKey)
+ If retval = ERROR_SUCCESS Then
+ retval = RegDeleteValue(hKey, AccessVBOM)
+ retval = RegCloseKey(hKey)
+ Exit Function
+ End If
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+End Function
+
+Public Function CheckForAccesToWordVBProject1(wrd As Word.application, RestoreValue As Long) As Boolean
+ On Error Resume Next
+ CheckForAccesToWordVBProject1 = True
+ RestoreValue = -1
+ If val(wrd.Version) < 10# Then Exit Function
+
+ Set myProject = wrd.ActiveDocument.VBProject
+ If Err.Number <> 0 Then
+ Dim RegValue As Long
+ If GiveAccessToMacroProject(APP_WORD, wrd.Version, RegValue) Then
+ CheckForAccesToWordVBProject1 = True
+ RestoreValue = RegValue
+ Else
+ CheckForAccesToWordVBProject1 = False
+ End If
+ End If
+
+End Function
+Public Function CheckForAccesToWordVBProject(wrd As Word.application) As Boolean
+ On Error Resume Next
+ CheckForAccesToWordVBProject = True
+ If val(wrd.Version) < 10# Then Exit Function
+
+ Set myProject = wrd.ActiveDocument.VBProject
+ If Err.Number <> 0 Then
+ CheckForAccesToWordVBProject = False
+ End If
+
+End Function
+Public Function CheckForAccesToExcelVBProject1(xl As Excel.application, RestoreValue As Long) As Boolean
+ On Error Resume Next
+ CheckForAccesToExcelVBProject1 = True
+ RestoreValue = -1
+ If val(xl.Version) < 10# Then Exit Function
+
+ Dim displayAlerts As Boolean
+ displayAlerts = xl.displayAlerts
+ xl.displayAlerts = False
+ Set myProject = xl.ActiveWorkbook.VBProject
+ If Err.Number <> 0 Then
+ Dim RegValue As Long
+ If GiveAccessToMacroProject(APP_EXCEL, xl.Version, RegValue) Then
+ CheckForAccesToExcelVBProject1 = True
+ RestoreValue = RegValue
+ Else
+ CheckForAccesToExcelVBProject1 = False
+ End If
+ End If
+ xl.displayAlerts = displayAlerts
+
+End Function
+Public Function CheckForAccesToExcelVBProject(xl As Excel.application) As Boolean
+ On Error Resume Next
+ CheckForAccesToExcelVBProject = True
+ If val(xl.Version) < 10# Then Exit Function
+
+ Dim displayAlerts As Boolean
+ displayAlerts = xl.displayAlerts
+ xl.displayAlerts = False
+ Set myProject = xl.ActiveWorkbook.VBProject
+ If Err.Number <> 0 Then
+ CheckForAccesToExcelVBProject = False
+ End If
+ xl.displayAlerts = displayAlerts
+
+End Function
+Public Function CheckForAccesToPPVBProject1(pp As PowerPoint.application, pres As PowerPoint.Presentation, RestoreValue As Long) As Boolean
+ On Error Resume Next
+ CheckForAccesToPPVBProject1 = True
+ RestoreValue = -1
+ If val(pp.Version) < 10# Then Exit Function
+
+ Set myProject = pres.VBProject
+ If Err.Number <> 0 Then
+ Dim RegValue As Long
+ If GiveAccessToMacroProject(APP_PP, pp.Version, RegValue) Then
+ CheckForAccesToPPVBProject1 = True
+ RestoreValue = RegValue
+ Else
+ CheckForAccesToPPVBProject1 = False
+ End If
+ End If
+End Function
+
+Public Function CheckForAccesToPPVBProject(pp As PowerPoint.application, pres As PowerPoint.Presentation) As Boolean
+ On Error Resume Next
+ CheckForAccesToPPVBProject = True
+ If val(pp.Version) < 10# Then Exit Function
+
+ Set myProject = pres.VBProject
+ If Err.Number <> 0 Then
+ CheckForAccesToPPVBProject = False
+ End If
+End Function
diff --git a/migrationanalysis/src/wizard/ProAnalysisWizard.vbp b/migrationanalysis/src/wizard/ProAnalysisWizard.vbp
new file mode 100644
index 000000000000..982f96631d5a
--- /dev/null
+++ b/migrationanalysis/src/wizard/ProAnalysisWizard.vbp
@@ -0,0 +1,65 @@
+Type=Exe
+Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\WINDOWS\System32\stdole2.tlb#Standard OLE Types
+Reference=*\G{EF404E00-EDA6-101A-8DAF-00DD010F7EBB}#5.0#0#..\..\..\..\..\Program Files\Microsoft Visual Studio\VB98\VB6EXT.OLB#Microsoft Visual Basic Extensibility
+Reference=*\G{AC0714F2-3D04-11D1-AE7D-00A0C90F26F4}#1.0#0#..\..\..\..\..\Program Files\Common Files\Designer\MSADDNDR.DLL#Add-In Designer/Instance Control Library
+Reference=*\G{00025E01-0000-0000-C000-000000000046}#4.0#0#..\..\..\..\..\Program Files\Common Files\Microsoft Shared\DAO\DAO350.DLL#Microsoft DAO 3.51 Object Library
+Reference=*\G{420B2830-E718-11CF-893D-00A0C9054228}#1.0#0#..\..\..\..\..\WINDOWS\System32\scrrun.dll#Microsoft Scripting Runtime
+Reference=*\G{00020813-0000-0000-C000-000000000046}#1.3#0#..\..\..\..\..\Program Files\Microsoft Office\Office\EXCEL9.OLB#Microsoft Excel 9.0 Object Library
+Reference=*\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.1#0#..\..\..\..\..\Program Files\Microsoft Office\Office\mso9.dll#Microsoft Office 9.0 Object Library
+Reference=*\G{00020905-0000-0000-C000-000000000046}#8.1#0#..\..\..\..\..\Program Files\Microsoft Office\Office\MSWORD9.OLB#Microsoft Word 9.0 Object Library
+Reference=*\G{91493440-5A91-11CF-8700-00AA0060263B}#2.6#0#..\..\..\..\..\Program Files\Microsoft Office\Office\msppt9.olb#Microsoft PowerPoint 9.0 Object Library
+Module=modWizard; ..\..\..\src\wizard\Wizard.bas
+Form=..\..\..\src\wizard\Wizard.frm
+Designer=..\..\..\src\wizard\Wizard.Dsr
+Module=BrowseDirectorysOnly; ..\..\..\src\wizard\Get Directory Dialog.bas
+Class=CollectedFiles; ..\..\..\src\wizard\CollectedFiles.cls
+Module=IniSupport; ..\..\..\src\wizard\IniSupport.bas
+Module=Utilities; ..\..\..\src\wizard\Utilities.bas
+Module=Office10Issues; ..\..\..\src\wizard\Office10Issues.bas
+Module=Analyse; ..\..\..\src\wizard\Analyse.bas
+Form=..\..\..\src\wizard\ScanFolders.frm
+Form=..\..\..\src\wizard\SearchDocs.frm
+Form=..\..\..\src\wizard\Terminate.frm
+Object={86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCT2.OCX
+Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; mscomctl.ocx
+IconForm="frmWizard"
+Startup="frmWizard"
+HelpFile=""
+Title="Professional Analysis Wizard"
+ExeName32="ProAnalysisWizard.exe"
+Path32="..\..\bin\ProAnalysisWizard"
+Command32=""
+Name="ProAnalysisWizard"
+HelpContextID="0"
+Description="Professional Analysis Wizard"
+CompatibleMode="0"
+MajorVer=2
+MinorVer=0
+RevisionVer=000
+AutoIncrementVer=0
+ServerSupportFiles=0
+VersionComments="A tool for analyzing issues and working around some of them when migrating documents from Microsoft Office"
+VersionCompanyName="OpenOffice.org"
+VersionFileDescription="ProAnalysisWizard.exe"
+VersionLegalCopyright="Copyright 2000, 2010 Oracle and/or its affiliates."
+VersionProductName="ProAnalysisWizard"
+CondComp="VB5 = 1 : PREPARATION = 1"
+CompilationType=-1
+OptimizationType=0
+FavorPentiumPro(tm)=0
+CodeViewDebugInfo=-1
+NoAliasing=0
+BoundsCheck=0
+OverflowCheck=0
+FlPointCheck=0
+FDIVCheck=0
+UnroundedFP=0
+StartMode=0
+Unattended=0
+Retained=0
+ThreadPerObject=0
+MaxNumberOfThreads=1
+DebugStartupOption=0
+
+[MS Transaction Server]
+AutoRefresh=1
diff --git a/migrationanalysis/src/wizard/RunServer.bas b/migrationanalysis/src/wizard/RunServer.bas
new file mode 100644
index 000000000000..9c8f4ab88184
--- /dev/null
+++ b/migrationanalysis/src/wizard/RunServer.bas
@@ -0,0 +1,199 @@
+Attribute VB_Name = "RunServer"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+
+Option Explicit
+
+Private Declare Function WritePrivateProfileString Lib "kernel32" _
+ Alias "WritePrivateProfileStringA" _
+ (ByVal lpSectionName As String, _
+ ByVal lpKeyName As Any, _
+ ByVal lpString As Any, _
+ ByVal lpFileName As String) As Long
+
+Const CWORD_DRIVER = "_OOoDocAnalysisWordDriver.doc"
+Const CEXCEL_DRIVER = "_OOoDocAnalysisExcelDriver.xls"
+Const CPP_DRIVER = "_OOoDocAnalysisPPTDriver.ppt"
+
+Const CWORD_APP = "word"
+Const CEXCEL_APP = "excel"
+Const CPP_APP = "pp"
+
+Const CSTART_FILE = "PAW_Start_Analysis"
+Const CSTOP_FILE = "PAW_Stop_Analysis"
+
+Sub Main()
+
+ Dim serverType As String
+ serverType = LCase(Command$)
+ If (serverType <> CWORD_APP) And (serverType <> CEXCEL_APP) And (serverType <> CPP_APP) Then
+ MsgBox "Unknown server type: " & serverType
+ GoTo FinalExit
+ End If
+
+ Dim fso As New FileSystemObject
+ Dim driverName As String
+
+ If (serverType = CWORD_APP) Then
+ driverName = fso.GetAbsolutePathName(".\" & CWORD_DRIVER)
+ ElseIf (serverType = CEXCEL_APP) Then
+ driverName = fso.GetAbsolutePathName(".\" & CEXCEL_DRIVER)
+ ElseIf (serverType = CPP_APP) Then
+ driverName = fso.GetAbsolutePathName(".\" & CPP_DRIVER)
+ End If
+
+ If Not fso.FileExists(driverName) Then
+ If (serverType = CWORD_APP) Then
+ driverName = fso.GetAbsolutePathName(".\Resources\" & CWORD_DRIVER)
+ ElseIf (serverType = CEXCEL_APP) Then
+ driverName = fso.GetAbsolutePathName(".\Resources\" & CEXCEL_DRIVER)
+ ElseIf (serverType = CPP_APP) Then
+ driverName = fso.GetAbsolutePathName(".\Resources\" & CPP_DRIVER)
+ End If
+ End If
+
+ If Not fso.FileExists(driverName) Then
+ WriteToLog fso, "ALL", "LaunchDrivers: Could not find: " & driverName
+ GoTo FinalExit
+ End If
+
+ If (serverType = CWORD_APP) Then
+ OpenWordDriverDoc fso, driverName
+ ElseIf (serverType = CEXCEL_APP) Then
+ OpenExcelDriverDoc fso, driverName
+ ElseIf (serverType = CPP_APP) Then
+ OpenPPDriverDoc fso, driverName
+ End If
+
+FinalExit:
+
+ Set fso = Nothing
+End Sub
+
+Sub OpenWordDriverDoc(fso As FileSystemObject, driverName As String)
+
+ Dim wrdApp As Word.Application
+ Dim wrdDriverDoc As Word.Document
+
+ On Error GoTo HandleErrors
+
+ Set wrdApp = New Word.Application
+ Set wrdDriverDoc = wrdApp.Documents.Open(driverName)
+
+ wrdApp.Run ("AnalysisTool.AnalysisDriver.AnalyseDirectory")
+ If Err.Number <> 0 Then
+ WriteToLog fso, CWORD_APP, "OpenWordDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
+ End If
+
+ wrdDriverDoc.Close wdDoNotSaveChanges
+ wrdApp.Quit False
+
+FinalExit:
+ Set wrdDriverDoc = Nothing
+ Set wrdApp = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteToLog fso, CWORD_APP, "OpenWordDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub OpenExcelDriverDoc(fso As FileSystemObject, driverName As String)
+
+ Dim excelApp As Excel.Application
+ Dim excelDriverDoc As Excel.Workbook
+
+ On Error GoTo HandleErrors
+
+ Set excelApp = New Excel.Application
+ Set excelDriverDoc = Excel.Workbooks.Open(driverName)
+ excelApp.Run ("AnalysisTool.AnalysisDriver.AnalyseDirectory")
+
+ If Err.Number <> 0 Then
+ WriteToLog fso, CEXCEL_APP, "OpenExcelDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
+ End If
+
+ excelDriverDoc.Close False
+ excelApp.Quit
+
+FinalExit:
+ Set excelDriverDoc = Nothing
+ Set excelApp = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteToLog fso, CEXCEL_APP, "OpenExcelDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub OpenPPDriverDoc(fso As FileSystemObject, driverName As String)
+
+ Dim ppApp As PowerPoint.Application
+ Dim ppDriverDoc As PowerPoint.Presentation
+ Dim ppDummy(0) As Variant
+
+ On Error GoTo HandleErrors
+
+ Set ppApp = New PowerPoint.Application
+ ppApp.Visible = msoTrue
+ Set ppDriverDoc = ppApp.Presentations.Open(driverName) ', msoTrue, msoFalse, msoFalse)
+ ppApp.Run ("AnalysisDriver.AnalyseDirectory")
+
+ If Err.Number <> 0 Then
+ WriteToLog fso, CPP_APP, "OpenPPDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
+ End If
+
+ ppDriverDoc.Close
+ ppApp.Quit
+
+FinalExit:
+ Set ppDriverDoc = Nothing
+ Set ppApp = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteToLog fso, CPP_APP, "OpenPPDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub WriteToLog(fso As FileSystemObject, currApp As String, errMsg As String)
+
+ On Error Resume Next
+
+ Static ErrCount As Long
+ Dim logFileName As String
+ Dim tempPath As String
+
+ tempPath = fso.GetSpecialFolder(TemporaryFolder).Path
+ If (tempPath = "") Then tempPath = "."
+ logFileName = fso.GetAbsolutePathName(tempPath & "\LauchDrivers.log")
+ ErrCount = ErrCount + 1
+
+ Call WritePrivateProfileString("ERRORS", currApp & "_log" & ErrCount, _
+ errMsg, logFileName)
+End Sub
+
diff --git a/migrationanalysis/src/wizard/ScanFolders.frm b/migrationanalysis/src/wizard/ScanFolders.frm
new file mode 100644
index 000000000000..4c725f5dbeb3
--- /dev/null
+++ b/migrationanalysis/src/wizard/ScanFolders.frm
@@ -0,0 +1,157 @@
+VERSION 5.00
+Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.ocx"
+Begin VB.Form ShowProgress
+ BorderStyle = 1 'Fixed Single
+ Caption = "Looking for Files"
+ ClientHeight = 2160
+ ClientLeft = 2505
+ ClientTop = 2325
+ ClientWidth = 7110
+ ControlBox = 0 'False
+ LinkTopic = "Form1"
+ MaxButton = 0 'False
+ MinButton = 0 'False
+ ScaleHeight = 2160
+ ScaleWidth = 7110
+ ShowInTaskbar = 0 'False
+ Visible = 0 'False
+ Begin MSComctlLib.ProgressBar ScanProgress
+ Height = 255
+ Left = 120
+ TabIndex = 2
+ Top = 1400
+ Width = 5500
+ _ExtentX = 9710
+ _ExtentY = 450
+ _Version = 393216
+ Appearance = 1
+ End
+ Begin VB.CommandButton AbortScan
+ Cancel = -1 'True
+ Caption = "Cancel"
+ CausesValidation= 0 'False
+ Height = 375
+ Left = 2880
+ TabIndex = 1
+ Top = 1760
+ Width = 1455
+ End
+ Begin VB.Label Label6
+ Caption = "X / Y"
+ Height = 195
+ Left = 5760
+ TabIndex = 7
+ Top = 1430
+ Width = 1200
+ End
+ Begin VB.Label Label5
+ Caption = "Label5"
+ Height = 440
+ Left = 120
+ TabIndex = 6
+ Top = 120
+ Width = 6870
+ End
+ Begin VB.Label Label4
+ Caption = "Label4"
+ Height = 195
+ Left = 120
+ TabIndex = 5
+ Top = 995
+ Width = 1155
+ End
+ Begin VB.Label Label3
+ Caption = "Label3"
+ Height = 195
+ Left = 120
+ TabIndex = 4
+ Top = 680
+ Width = 1155
+ End
+ Begin VB.Label Label2
+ Caption = "Label2"
+ Height = 195
+ Left = 1395
+ TabIndex = 3
+ Top = 995
+ Width = 5595
+ End
+ Begin VB.Label Label1
+ Caption = "Label1"
+ Height = 195
+ Left = 1395
+ TabIndex = 0
+ Top = 680
+ Width = 5595
+ End
+End
+Attribute VB_Name = "ShowProgress"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+Option Explicit
+
+Private Declare Function GetTickCount Lib "kernel32" () As Long
+
+Private Const C_MIN_WAIT_TIME As Long = 0
+Private Const C_MIN_UPDATE_TIME As Long = 100
+
+Private g_SP_StartTime As Long
+Private g_SP_LastUpdate As Long
+
+Public g_SP_Abort As Boolean
+Public g_SP_AllowOtherDLG As Boolean
+
+Public Sub SP_Init(maxIndex As Long)
+ g_SP_Abort = False
+ g_SP_AllowOtherDLG = False
+ g_SP_StartTime = GetTickCount()
+ g_SP_LastUpdate = g_SP_StartTime
+
+ ShowProgress.Visible = False
+ ShowProgress.Caption = GetResString(PROGRESS_CAPTION)
+
+ Label3.Caption = GetResString(PROGRESS_PATH_LABEL)
+ Label4.Caption = GetResString(PROGRESS_FILE_LABEL)
+ Label5.Caption = GetResString(PROGRESS_INFO_LABEL)
+ ScanProgress.Max = maxIndex
+
+ ShowProgress.Top = frmWizard.Top + 3200
+ ShowProgress.Left = frmWizard.Left + 500
+End Sub
+
+Public Sub SP_UpdateProgress(curObject As String, curParent As String, _
+ curIndex As Long)
+
+ Dim currTicks As Long
+ currTicks = GetTickCount()
+
+ ScanProgress.value = curIndex
+
+ If (Not ShowProgress.Visible) Then
+ If (currTicks - g_SP_StartTime > C_MIN_WAIT_TIME) Then
+ ShowProgress.Visible = True
+ End If
+ End If
+ If (currTicks - g_SP_LastUpdate > C_MIN_UPDATE_TIME) Then
+ g_SP_LastUpdate = currTicks
+ Label1.Caption = curParent
+ Label2.Caption = curObject
+ Label6.Caption = "(" & str$(curIndex) & "/" & str$(ScanProgress.Max) & ")"
+ End If
+End Sub
+
+Private Sub AbortScan_Click()
+ g_SP_Abort = True
+ Label5.Caption = GetResString(PROGRESS_WAIT_LABEL)
+ AbortScan.Caption = GetResString(PROGRESS_ABORTING)
+ AbortScan.Enabled = False
+End Sub
+
+Private Sub Form_Deactivate()
+ If Not g_SP_AllowOtherDLG Then
+ ShowProgress.ZOrder (0)
+ End If
+End Sub
+
diff --git a/migrationanalysis/src/wizard/SearchDocs.frm b/migrationanalysis/src/wizard/SearchDocs.frm
new file mode 100644
index 000000000000..571f8a23cc9b
--- /dev/null
+++ b/migrationanalysis/src/wizard/SearchDocs.frm
@@ -0,0 +1,124 @@
+VERSION 5.00
+Begin VB.Form SearchDocs
+ BorderStyle = 3 'Fixed Dialog
+ Caption = "Looking for Files"
+ ClientHeight = 1830
+ ClientLeft = 2505
+ ClientTop = 2325
+ ClientWidth = 7110
+ ControlBox = 0 'False
+ LinkTopic = "Form1"
+ MaxButton = 0 'False
+ MinButton = 0 'False
+ ScaleHeight = 1830
+ ScaleWidth = 7110
+ ShowInTaskbar = 0 'False
+ Visible = 0 'False
+ Begin VB.CommandButton AbortScan
+ Cancel = -1 'True
+ Caption = "Cancel"
+ CausesValidation= 0 'False
+ Height = 375
+ Left = 2880
+ TabIndex = 1
+ Top = 1350
+ Width = 1455
+ End
+ Begin VB.Label Label5
+ Caption = "Label5"
+ Height = 440
+ Left = 120
+ TabIndex = 5
+ Top = 120
+ Width = 6870
+ WordWrap = -1 'True
+ End
+ Begin VB.Label Label4
+ Caption = "gefundene Dokumente:"
+ Height = 195
+ Left = 120
+ TabIndex = 4
+ Top = 960
+ Width = 1800
+ End
+ Begin VB.Label Label3
+ Caption = "Pfad:"
+ Height = 195
+ Left = 120
+ TabIndex = 3
+ Top = 680
+ Width = 1800
+ End
+ Begin VB.Label Label2
+ Caption = "Label2"
+ Height = 195
+ Left = 2040
+ TabIndex = 2
+ Top = 995
+ Width = 5595
+ End
+ Begin VB.Label Label1
+ Caption = "Label1"
+ Height = 195
+ Left = 2040
+ TabIndex = 0
+ Top = 680
+ Width = 5595
+ End
+End
+Attribute VB_Name = "SearchDocs"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+Option Explicit
+
+Private Declare Function GetTickCount Lib "kernel32" () As Long
+
+Private Const C_MIN_WAIT_TIME As Long = 1000
+Private Const C_MIN_UPDATE_TIME As Long = 100
+
+Private g_SD_StartTime As Long
+Private g_SD_LastUpdate As Long
+
+Public g_SD_Abort As Boolean
+
+Private Sub Form_Load()
+
+ g_SD_Abort = False
+ g_SD_StartTime = GetTickCount()
+ g_SD_LastUpdate = g_SD_StartTime
+
+ SearchDocs.Visible = False
+ SearchDocs.Caption = GetResString(SEARCH_CAPTION)
+
+ Label3.Caption = GetResString(SEARCH_PATH_LABEL)
+ Label4.Caption = GetResString(SEARCH_FOUND_LABEL)
+ Label5.Caption = GetResString(SEARCH_INFO_LABEL)
+End Sub
+
+Public Sub SD_UpdateProgress(curObject As String, curParent As String)
+
+ Dim currTicks As Long
+ currTicks = GetTickCount()
+
+ If (Not SearchDocs.Visible) Then
+ If (currTicks - g_SD_StartTime > C_MIN_WAIT_TIME) Then
+ SearchDocs.Visible = True
+ End If
+ End If
+ If (currTicks - g_SD_LastUpdate > C_MIN_UPDATE_TIME) Then
+ g_SD_LastUpdate = currTicks
+ Label1.Caption = curParent
+ Label2.Caption = curObject
+ End If
+End Sub
+
+Private Sub AbortScan_Click()
+ g_SD_Abort = True
+End Sub
+
+Private Sub Form_Deactivate()
+ SearchDocs.ZOrder (0)
+End Sub
+
diff --git a/migrationanalysis/src/wizard/Terminate.frm b/migrationanalysis/src/wizard/Terminate.frm
new file mode 100644
index 000000000000..c196528fbd11
--- /dev/null
+++ b/migrationanalysis/src/wizard/Terminate.frm
@@ -0,0 +1,81 @@
+VERSION 5.00
+Begin VB.Form TerminateMSO
+ BorderStyle = 3 'Fixed Dialog
+ Caption = "Dialog Caption"
+ ClientHeight = 2280
+ ClientLeft = 3165
+ ClientTop = 2835
+ ClientWidth = 6030
+ ControlBox = 0 'False
+ LinkTopic = "Form1"
+ MaxButton = 0 'False
+ MinButton = 0 'False
+ ScaleHeight = 2280
+ ScaleWidth = 6030
+ ShowInTaskbar = 0 'False
+ Begin VB.CommandButton NoButton
+ Cancel = -1 'True
+ Caption = "No"
+ CausesValidation= 0 'False
+ Default = -1 'True
+ Height = 375
+ Left = 4560
+ TabIndex = 0
+ Top = 1800
+ Width = 1215
+ End
+ Begin VB.CommandButton YesButton
+ Caption = "Yes"
+ CausesValidation= 0 'False
+ Height = 375
+ Left = 3120
+ TabIndex = 1
+ Top = 1800
+ Width = 1215
+ End
+ Begin VB.Label Info
+ Caption = "Label1"
+ Height = 1455
+ Left = 120
+ TabIndex = 2
+ Top = 120
+ Width = 5775
+ End
+End
+Attribute VB_Name = "TerminateMSO"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+Option Explicit
+
+Const CR_STR = "<CR>"
+
+Private Sub Form_Activate()
+ NoButton.Default = True
+End Sub
+
+Private Sub Form_Load()
+
+ TerminateMSO.Top = frmWizard.Top + 3000
+ TerminateMSO.Left = frmWizard.Left + 1000
+
+ TerminateMSO.Caption = GetResString(TERMINATE_CAPTION)
+ Info.Caption = ReplaceTopicTokens(GetResString(TERMINATE_INFO), CR_STR, Chr(13))
+ YesButton.Caption = GetResString(TERMINATE_YES)
+ NoButton.Caption = GetResString(TERMINATE_NO)
+ NoButton.Default = True
+End Sub
+
+Private Sub YesButton_Click()
+ Dim fso As New FileSystemObject
+ TerminateOfficeApps fso, " --kill"
+ TerminateMSO.Hide
+ Set fso = Nothing
+End Sub
+
+Private Sub NoButton_Click()
+ TerminateMSO.Hide
+End Sub
+
+
diff --git a/migrationanalysis/src/wizard/Utilities.bas b/migrationanalysis/src/wizard/Utilities.bas
new file mode 100644
index 000000000000..163435563c33
--- /dev/null
+++ b/migrationanalysis/src/wizard/Utilities.bas
@@ -0,0 +1,552 @@
+Attribute VB_Name = "Utilities"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+Option Explicit
+
+Public Const LOCALE_ILANGUAGE As Long = &H1 'language id
+Public Const LOCALE_SLANGUAGE As Long = &H2 'localized name of lang
+Public Const LOCALE_SENGLANGUAGE As Long = &H1001 'English name of lang
+Public Const LOCALE_SABBREVLANGNAME As Long = &H3 'abbreviated lang name
+Public Const LOCALE_SNATIVELANGNAME As Long = &H4 'native name of lang
+Public Const LOCALE_ICOUNTRY As Long = &H5 'country code
+Public Const LOCALE_SCOUNTRY As Long = &H6 'localized name of country
+Public Const LOCALE_SENGCOUNTRY As Long = &H1002 'English name of country
+Public Const LOCALE_SABBREVCTRYNAME As Long = &H7 'abbreviated country name
+Public Const LOCALE_SNATIVECTRYNAME As Long = &H8 'native name of country
+Public Const LOCALE_SINTLSYMBOL As Long = &H15 'intl monetary symbol
+Public Const LOCALE_IDEFAULTLANGUAGE As Long = &H9 'def language id
+Public Const LOCALE_IDEFAULTCOUNTRY As Long = &HA 'def country code
+Public Const LOCALE_IDEFAULTCODEPAGE As Long = &HB 'def oem code page
+Public Const LOCALE_IDEFAULTANSICODEPAGE As Long = &H1004 'def ansi code page
+Public Const LOCALE_IDEFAULTMACCODEPAGE As Long = &H1011 'def mac code page
+
+Public Const LOCALE_IMEASURE As Long = &HD '0 = metric, 1 = US
+Public Const LOCALE_SSHORTDATE As Long = &H1F 'short date format string
+
+'#if(WINVER >= &H0400)
+Public Const LOCALE_SISO639LANGNAME As Long = &H59 'ISO abbreviated language name
+Public Const LOCALE_SISO3166CTRYNAME As Long = &H5A 'ISO abbreviated country name
+'#endif /* WINVER >= as long = &H0400 */
+
+'#if(WINVER >= &H0500)
+Public Const LOCALE_SNATIVECURRNAME As Long = &H1008 'native name of currency
+Public Const LOCALE_IDEFAULTEBCDICCODEPAGE As Long = &H1012 'default ebcdic code page
+Public Const LOCALE_SSORTNAME As Long = &H1013 'sort name
+'#endif /* WINVER >= &H0500 */
+
+Public Const CSTR_LOG_FILE_NAME = "analysis.log"
+
+Public Declare Function GetThreadLocale Lib "kernel32" () As Long
+
+Public Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
+Public Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
+Public Declare Function GetUserDefaultLangID Lib "kernel32" () As Long
+Public Declare Function GetSystemDefaultLangID Lib "kernel32" () As Long
+
+Public Declare Function GetLocaleInfo Lib "kernel32" _
+ Alias "GetLocaleInfoA" _
+ (ByVal Locale As Long, _
+ ByVal LCType As Long, _
+ ByVal lpLCData As String, _
+ ByVal cchData As Long) As Long
+
+Private Const VER_PLATFORM_WIN32s = 0
+Private Const VER_PLATFORM_WIN32_WINDOWS = 1
+Private Const VER_PLATFORM_WIN32_NT = 2
+
+Private Type OSVERSIONINFO
+ OSVSize As Long 'size, in bytes, of this data structure
+ dwVerMajor As Long 'ie NT 3.51, dwVerMajor = 3; NT 4.0, dwVerMajor = 4.
+ dwVerMinor As Long 'ie NT 3.51, dwVerMinor = 51; NT 4.0, dwVerMinor= 0.
+ dwBuildNumber As Long 'NT: build number of the OS
+ 'Win9x: build number of the OS in low-order word.
+ ' High-order word contains major & minor ver nos.
+ PlatformID As Long 'Identifies the operating system platform.
+ szCSDVersion As String * 128 'NT: string, such as "Service Pack 3"
+ 'Win9x: string providing arbitrary additional information
+End Type
+
+Public Type RGB_WINVER
+ PlatformID As Long
+ VersionName As String
+ VersionNo As String
+ ServicePack As String
+ BuildNo As String
+End Type
+
+'defined As Any to support OSVERSIONINFO and OSVERSIONINFOEX
+Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
+ (lpVersionInformation As Any) As Long
+
+Private Declare Function GetDesktopWindow Lib "user32" () As Long
+
+Private Declare Function ShellExecute Lib "shell32" _
+ Alias "ShellExecuteA" _
+ (ByVal hWnd As Long, _
+ ByVal lpOperation As String, _
+ ByVal lpFile As String, _
+ ByVal lpParameters As String, _
+ ByVal lpDirectory As String, _
+ ByVal nShowCmd As Long) As Long
+
+Public Const SW_SHOWNORMAL As Long = 1
+Public Const SW_SHOWMAXIMIZED As Long = 3
+Public Const SW_SHOWDEFAULT As Long = 10
+Public Const SE_ERR_NOASSOC As Long = 31
+
+Public Const CNO_OPTIONAL_PARAM = "_NoOptionalParam_"
+Private Declare Function WritePrivateProfileString Lib "kernel32" _
+ Alias "WritePrivateProfileStringA" _
+ (ByVal lpSectionName As String, _
+ ByVal lpKeyName As Any, _
+ ByVal lpString As Any, _
+ ByVal lpFileName As String) As Long
+
+
+Public Const HKEY_LOCAL_MACHINE As Long = &H80000002
+Public Const HKEY_CLASSES_ROOT = &H80000000
+Private Const ERROR_MORE_DATA = 234
+Private Const ERROR_SUCCESS As Long = 0
+Private Const KEY_QUERY_VALUE As Long = &H1
+Private Const KEY_ENUMERATE_SUB_KEYS As Long = &H8
+Private Const KEY_NOTIFY As Long = &H10
+Private Const STANDARD_RIGHTS_READ As Long = &H20000
+Private Const SYNCHRONIZE As Long = &H100000
+Private Const KEY_READ As Long = ((STANDARD_RIGHTS_READ Or _
+ KEY_QUERY_VALUE Or _
+ KEY_ENUMERATE_SUB_KEYS Or _
+ KEY_NOTIFY) And _
+ (Not SYNCHRONIZE))
+
+Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _
+ Alias "RegOpenKeyExA" _
+ (ByVal hKey As Long, _
+ ByVal lpSubKey As String, _
+ ByVal ulOptions As Long, _
+ ByVal samDesired As Long, _
+ phkResult As Long) As Long
+
+Private Declare Function RegQueryValueEx Lib "advapi32.dll" _
+ Alias "RegQueryValueExA" _
+ (ByVal hKey As Long, _
+ ByVal lpValueName As String, _
+ ByVal lpReserved As Long, _
+ lpType As Long, _
+ lpData As Any, _
+ lpcbData As Long) As Long
+
+Private Declare Function RegCloseKey Lib "advapi32.dll" _
+ (ByVal hKey As Long) As Long
+
+Private Declare Function lstrlenW Lib "kernel32" _
+ (ByVal lpString As Long) As Long
+
+Private Type ShortItemId
+ cb As Long
+ abID As Byte
+End Type
+
+Private Type ITEMIDLIST
+ mkid As ShortItemId
+End Type
+
+Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
+ (ByVal pidl As Long, ByVal pszPath As String) As Long
+
+Private Declare Function SHGetSpecialFolderLocation Lib _
+ "shell32.dll" (ByVal hWndOwner As Long, ByVal nFolder _
+ As Long, pidl As ITEMIDLIST) As Long
+
+
+Public Function IsWin98Plus() As Boolean
+ 'returns True if running Windows 2000 or later
+ Dim osv As OSVERSIONINFO
+
+ osv.OSVSize = Len(osv)
+
+ If GetVersionEx(osv) = 1 Then
+
+ Select Case osv.PlatformID 'win 32
+ Case VER_PLATFORM_WIN32s:
+ IsWin98Plus = False
+ Exit Function
+ Case VER_PLATFORM_WIN32_NT: 'win nt, 2000, xp
+ IsWin98Plus = True
+ Exit Function
+ Case VER_PLATFORM_WIN32_WINDOWS:
+ Select Case osv.dwVerMinor
+ Case 0: 'win95
+ IsWin98Plus = False
+ Exit Function
+ Case 90: 'Windows ME
+ IsWin98Plus = True
+ Exit Function
+ Case 10: ' Windows 98
+ If osv.dwBuildNumber >= 2222 Then 'second edition
+ IsWin98Plus = True
+ Exit Function
+ Else
+ IsWin98Plus = False
+ Exit Function
+ End If
+ End Select
+ Case Else
+ IsWin98Plus = False
+ Exit Function
+ End Select
+
+ End If
+
+End Function
+
+Public Function GetWinVersion(WIN As RGB_WINVER) As String
+
+'returns a structure (RGB_WINVER)
+'filled with OS information
+
+ #If Win32 Then
+
+ Dim osv As OSVERSIONINFO
+ Dim pos As Integer
+ Dim sVer As String
+ Dim sBuild As String
+
+ osv.OSVSize = Len(osv)
+
+ If GetVersionEx(osv) = 1 Then
+
+ 'PlatformId contains a value representing the OS
+ WIN.PlatformID = osv.PlatformID
+
+ Select Case osv.PlatformID
+ Case VER_PLATFORM_WIN32s: WIN.VersionName = "Win32s"
+ Case VER_PLATFORM_WIN32_NT: WIN.VersionName = "Windows NT"
+
+ Select Case osv.dwVerMajor
+ Case 4: WIN.VersionName = "Windows NT"
+ Case 5:
+ Select Case osv.dwVerMinor
+ Case 0: WIN.VersionName = "Windows 2000"
+ Case 1: WIN.VersionName = "Windows XP"
+ End Select
+ End Select
+
+ Case VER_PLATFORM_WIN32_WINDOWS:
+
+ 'The dwVerMinor bit tells if its 95 or 98.
+ Select Case osv.dwVerMinor
+ Case 0: WIN.VersionName = "Windows 95"
+ Case 90: WIN.VersionName = "Windows ME"
+ Case Else: WIN.VersionName = "Windows 98"
+ End Select
+
+ End Select
+
+
+ 'Get the version number
+ WIN.VersionNo = osv.dwVerMajor & "." & osv.dwVerMinor
+
+ 'Get the build
+ WIN.BuildNo = (osv.dwBuildNumber And &HFFFF&)
+
+ 'Any additional info. In Win9x, this can be
+ '"any arbitrary string" provided by the
+ 'manufacturer. In NT, this is the service pack.
+ pos = InStr(osv.szCSDVersion, Chr$(0))
+ If pos Then
+ WIN.ServicePack = Left$(osv.szCSDVersion, pos - 1)
+ End If
+
+ End If
+
+ #Else
+
+ 'can only return that this does not
+ 'support the 32 bit call, so must be Win3x
+ WIN.VersionName = "Windows 3.x"
+ #End If
+ GetWinVersion = WIN.VersionName
+
+End Function
+
+Public Sub RunShellExecute(sTopic As String, _
+ sFile As Variant, _
+ sParams As Variant, _
+ sDirectory As Variant, _
+ nShowCmd As Long)
+
+ Dim hWndDesk As Long
+ Dim success As Long
+
+ 'the desktop will be the
+ 'default for error messages
+ hWndDesk = GetDesktopWindow()
+
+ 'execute the passed operation
+ success = ShellExecute(hWndDesk, sTopic, sFile, sParams, sDirectory, nShowCmd)
+
+ 'This is optional. Uncomment the three lines
+ 'below to have the "Open With.." dialog appear
+ 'when the ShellExecute API call fails
+ If success = SE_ERR_NOASSOC Then
+ Call Shell("rundll32.exe shell32.dll,OpenAs_RunDLL " & sFile, vbNormalFocus)
+ End If
+
+End Sub
+
+Public Sub WriteToLog(key As String, value As String, _
+ Optional path As String = CNO_OPTIONAL_PARAM, _
+ Optional section As String = WIZARD_NAME)
+
+ Static logFile As String
+
+ If logFile = "" Then
+ logFile = GetLogFilePath
+ End If
+
+ If path = "" Then
+ Exit Sub
+ End If
+
+ If path = CNO_OPTIONAL_PARAM Then
+ path = logFile
+ End If
+ Call WritePrivateProfileString(section, key, value, path)
+End Sub
+
+Public Sub WriteDebug(value As String)
+ Static ErrCount As Long
+ Static logFile As String
+ Static debugLevel As Long
+
+ If logFile = "" Then
+ logFile = GetLogFilePath
+ End If
+
+ Dim sSection As String
+ sSection = WIZARD_NAME & "Debug"
+
+ Call WritePrivateProfileString(sSection, "Analysis" & "_debug" & ErrCount, _
+ value, logFile)
+ ErrCount = ErrCount + 1
+End Sub
+
+Public Function GetDebug(section As String, key As String) As String
+ Static logFile As String
+
+ If logFile = "" Then
+ logFile = GetLogFilePath
+ End If
+
+ GetDebug = ProfileGetItem(section, key, "", logFile)
+End Function
+
+Public Function GetUserLocaleInfo(ByVal dwLocaleID As Long, ByVal dwLCType As Long) As String
+
+ Dim sReturn As String
+ Dim r As Long
+
+ 'call the function passing the Locale type
+ 'variable to retrieve the required size of
+ 'the string buffer needed
+ r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
+
+ 'if successful..
+ If r Then
+
+ 'pad the buffer with spaces
+ sReturn = Space$(r)
+
+ 'and call again passing the buffer
+ r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
+
+ 'if successful (r > 0)
+ If r Then
+
+ 'r holds the size of the string
+ 'including the terminating null
+ GetUserLocaleInfo = Left$(sReturn, r - 1)
+
+ End If
+
+ End If
+
+End Function
+
+Public Function GetRegistryInfo(sHive As String, sSubKey As String, sKey As String) As String
+ GetRegistryInfo = ""
+ Dim hKey As Long
+
+ hKey = OpenRegKey(sHive, sSubKey)
+
+ If hKey <> 0 Then
+ GetRegistryInfo = GetRegValue(hKey, sKey)
+
+ 'the opened key must be closed
+ Call RegCloseKey(hKey)
+ End If
+End Function
+
+
+Private Function GetRegValue(hSubKey As Long, sKeyName As String) As String
+
+ Dim lpValue As String 'value retrieved
+ Dim lpcbData As Long 'length of retrieved string
+
+ 'if valid
+ If hSubKey <> 0 Then
+
+ 'Pass an zero-length string to
+ 'obtain the required buffer size
+ 'required to return the result.
+ 'If the key passed exists, the call
+ 'will return error 234 (more data)
+ 'and lpcbData will indicate the
+ 'required buffer size (including
+ 'the terminating null).
+ lpValue = ""
+ lpcbData = 0
+ If RegQueryValueEx(hSubKey, _
+ sKeyName, _
+ 0&, _
+ 0&, _
+ ByVal lpValue, _
+ lpcbData) = ERROR_MORE_DATA Then
+
+ lpValue = Space$(lpcbData)
+
+ 'retrieve the desired value
+ If RegQueryValueEx(hSubKey, _
+ sKeyName, _
+ 0&, _
+ 0&, _
+ ByVal lpValue, _
+ lpcbData) = ERROR_SUCCESS Then
+
+ GetRegValue = TrimNull(lpValue)
+
+ End If 'If RegQueryValueEx (second call)
+ End If 'If RegQueryValueEx (first call)
+ End If 'If hSubKey
+
+End Function
+
+Private Function OpenRegKey(ByVal hKey As Long, _
+ ByVal lpSubKey As String) As Long
+ Dim hSubKey As Long
+ Dim retval As Long
+
+ retval = RegOpenKeyEx(hKey, lpSubKey, _
+ 0, KEY_READ, hSubKey)
+
+ If retval = ERROR_SUCCESS Then
+ OpenRegKey = hSubKey
+ End If
+End Function
+
+
+Private Function TrimNull(startstr As String) As String
+
+ TrimNull = Left$(startstr, lstrlenW(StrPtr(startstr)))
+
+End Function
+
+Function GetLogFilePath() As String
+
+ Dim fso As New FileSystemObject
+ Dim TempPath As String
+
+ TempPath = fso.GetSpecialFolder(TemporaryFolder).path
+
+ If (TempPath = "") Then
+ TempPath = "."
+ End If
+
+ GetLogFilePath = fso.GetAbsolutePathName(TempPath & "\" & CSTR_LOG_FILE_NAME)
+End Function
+
+Function GetIniFilePath() As String
+
+ Dim fso As New FileSystemObject
+ Dim AppDataDir As String
+
+ AppDataDir = GetAppDataFolder
+ If (AppDataDir = "") Then
+ AppDataDir = CBASE_RESOURCE_DIR
+ Else
+ If Not fso.FolderExists(AppDataDir) Then
+ fso.CreateFolder (AppDataDir)
+ End If
+ AppDataDir = AppDataDir & "\Sun"
+ If Not fso.FolderExists(AppDataDir) Then
+ fso.CreateFolder (AppDataDir)
+ End If
+ AppDataDir = AppDataDir & "\AnalysisWizard"
+ If Not fso.FolderExists(AppDataDir) Then
+ fso.CreateFolder (AppDataDir)
+ End If
+ End If
+
+ GetIniFilePath = fso.GetAbsolutePathName(AppDataDir & "\" & CANALYSIS_INI_FILE)
+End Function
+
+' This function returns the Application Data Folder Path
+Function GetAppDataFolder() As String
+ Dim idlstr As Long
+ Dim sPath As String
+ Dim IDL As ITEMIDLIST
+ Const NOERROR = 0
+ Const MAX_LENGTH = 260
+ Const CSIDL_APPDATA = &H1A
+
+ On Error GoTo Err_GetFolder
+
+ ' Fill the idl structure with the specified folder item.
+ idlstr = SHGetSpecialFolderLocation(0, CSIDL_APPDATA, IDL)
+
+ If idlstr = NOERROR Then
+ ' Get the path from the idl list, and return
+ ' the folder with a slash at the end.
+ sPath = Space$(MAX_LENGTH)
+ idlstr = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)
+ If idlstr Then
+ GetAppDataFolder = Left$(sPath, InStr(sPath, Chr$(0)) - 1)
+ End If
+ End If
+
+Exit_GetFolder:
+ Exit Function
+
+Err_GetFolder:
+ MsgBox "An Error was Encountered" & Chr(13) & Err.Description, _
+ vbCritical Or vbOKOnly
+ Resume Exit_GetFolder
+
+End Function
+
+
+
diff --git a/migrationanalysis/src/wizard/Wizard.DCA b/migrationanalysis/src/wizard/Wizard.DCA
new file mode 100644
index 000000000000..56ef0d79e381
--- /dev/null
+++ b/migrationanalysis/src/wizard/Wizard.DCA
Binary files differ
diff --git a/migrationanalysis/src/wizard/Wizard.Dsr b/migrationanalysis/src/wizard/Wizard.Dsr
new file mode 100644
index 000000000000..7b031dc5b048
--- /dev/null
+++ b/migrationanalysis/src/wizard/Wizard.Dsr
@@ -0,0 +1,79 @@
+VERSION 5.00
+Begin {AC0714F6-3D04-11D1-AE7D-00A0C90F26F4} Wizard
+ ClientHeight = 7470
+ ClientLeft = 1740
+ ClientTop = 1545
+ ClientWidth = 6585
+ _ExtentX = 11615
+ _ExtentY = 13176
+ _Version = 393216
+ DisplayName = "AnalysisWizard"
+ AppName = "Visual Basic"
+ AppVer = "Visual Basic 6.0"
+ LoadName = "Command Line / Startup"
+ LoadBehavior = 5
+ RegLocation = "HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0"
+ CmdLineSupport = -1 'True
+End
+Attribute VB_Name = "Wizard"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = True
+Attribute VB_PredeclaredId = False
+Attribute VB_Exposed = False
+Option Explicit
+
+Dim mcbMenuCommandBar As Office.CommandBarControl 'command bar object
+Public WithEvents MenuHandler As CommandBarEvents 'command bar event handler
+Attribute MenuHandler.VB_VarHelpID = -1
+Dim mfrmWizard As frmWizard
+Dim VBInstance As VBIDE.VBE
+
+
+'------------------------------------------------------
+'this method adds the Add-In to the VB menu
+'it is called by the VB addin manager
+'------------------------------------------------------
+Private Sub AddinInstance_OnConnection(ByVal application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)
+ On Error GoTo error_handler
+
+ Set VBInstance = application
+
+ If ConnectMode = ext_cm_External Then
+ 'Used by the wizard toolbar to start this wizard
+ LoadMe
+ Else
+ Set mcbMenuCommandBar = AddToAddInCommandBar(VBInstance, LoadResString(15), LoadResPicture(5000, 0))
+ 'sink the event
+ Set Me.MenuHandler = VBInstance.Events.CommandBarEvents(mcbMenuCommandBar)
+ End If
+
+ Exit Sub
+
+error_handler:
+ MsgBox Err.Description
+End Sub
+
+'------------------------------------------------------
+'this method removes the Add-In from the VB menu
+'it is called by the VB addin manager
+'------------------------------------------------------
+Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
+ 'delete the command bar entry
+ mcbMenuCommandBar.Delete
+End Sub
+
+'this event fires when the menu is clicked in the IDE
+Private Sub MenuHandler_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
+ LoadMe
+End Sub
+
+Private Sub LoadMe()
+ Set mfrmWizard = New frmWizard
+ 'pass the vb instance to the wizard module
+ Set mfrmWizard.VBInst = VBInstance
+ 'load and show the form
+ mfrmWizard.Show vbModal
+ Set mfrmWizard = Nothing
+End Sub
+
+
diff --git a/migrationanalysis/src/wizard/Wizard.FRX b/migrationanalysis/src/wizard/Wizard.FRX
new file mode 100644
index 000000000000..20c068343090
--- /dev/null
+++ b/migrationanalysis/src/wizard/Wizard.FRX
Binary files differ
diff --git a/migrationanalysis/src/wizard/Wizard.bas b/migrationanalysis/src/wizard/Wizard.bas
new file mode 100644
index 000000000000..93bd7a849178
--- /dev/null
+++ b/migrationanalysis/src/wizard/Wizard.bas
@@ -0,0 +1,651 @@
+Attribute VB_Name = "modWizard"
+'/*************************************************************************
+' *
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+' ************************************************************************/
+Option Explicit
+
+Global Const WIZARD_NAME = "Analysis"
+
+'Implementation details - not required for localisation
+Public Const CWORD_DRIVER_FILE = "_OOoDocAnalysisWordDriver.doc"
+Public Const CEXCEL_DRIVER_FILE = "_OOoDocAnalysisExcelDriver.xls"
+Public Const CPP_DRIVER_FILE = "_OOoDocAnalysisPPTDriver.ppt"
+Public Const CRESULTS_TEMPLATE_FILE = "results.xlt"
+Public Const CISSUES_LIST_FILE = "issues.list"
+Public Const CANALYSIS_INI_FILE = "analysis.ini"
+Public Const CLAUNCH_DRIVERS_EXE = "LaunchDrivers.exe"
+Public Const CMSO_KILL_EXE = "msokill.exe"
+Public Const CRESOURCE_DLL = "Resources.dll"
+
+' Preparation String ID's from DocAnalysisWizard.rc
+Public Const RID_STR_ENG_TITLE_PREP_ID = 1030
+Public Const RID_STR_ENG_SIDEBAR_ANALYZE_PREP_ID = 1074
+
+Public Const RID_STR_ENG_INTRODUCTION_INTRO1_PREP_ID = 1131
+Public Const RID_STR_ENG_INTRODUCTION_INTRO2_PREP_ID = 1132
+Public Const RID_STR_ENG_INTRODUCTION_INTRO3_PREP_ID = 1134
+
+Public Const RID_STR_ENG_DOCUMENTS_CHOOSE_DOCUMENTS_PREP_ID = 1230
+Public Const RID_STR_ENG_DOCUMENTS_CHOOSE_DOC_TYPES_PREP_ID = 1236
+Public Const RID_STR_ENG_DOCUMENTS_INCLUDE_SUBDIRECTORIES_PREP_ID = 1232
+
+Public Const RID_STR_IGNORE_OLDER_CB_ID = 1231
+Public Const RID_STR_IGNORE_OLDER_3_MONTHS_ID = 1233
+Public Const RID_STR_IGNORE_OLDER_6_MONTHS_ID = 1234
+Public Const RID_STR_IGNORE_OLDER_12_MONTHS_ID = 1235
+
+Public Const RID_STR_ENG_RESULTS_CHOOSE_OPTIONS_PREP_ID = 1330
+Public Const RID_STR_ENG_RESULTS_ANALYSIS_XLS_PREP_ID = 1332
+
+Public Const RID_STR_ENG_ANALYZE_NUM_DOCS_PREP_ID = 1431
+Public Const RID_STR_ENG_ANALYZE_SETUP_COMPLETE_PREP_ID = 1430
+Public Const RID_STR_ENG_ANALYZE_IGNORED_DOCS_ID = 1435
+Public Const RID_STR_ENG_ANALYZE_START_ID = 1413
+Public Const RID_STR_ENG_ANALYZE_COMPLETED_ID = 1412
+Public Const RID_STR_ENG_ANALYZE_VIEW_NOW_ID = 1414
+Public Const RID_STR_ENG_ANALYZE_VIEW_LATER_ID = 1415
+Public Const RID_STR_ENG_ANALYSE_NOT_RUN = 1416
+
+Public Const RID_STR_ENG_OTHER_PLEASE_REFER_TO_README_PREP_ID = 1838
+Public Const RID_STR_ENG_OTHER_XML_RESULTS_PREP_ID = 1845
+Public Const RID_STR_ENG_OTHER_PREPARE_PROMPT_PREP_ID = 1846
+Public Const RID_STR_ENG_OTHER_PREPARE_COMPLETED_PREP_ID = 1847
+
+'Resource Strings Codes
+' NOTE: to make a resource the default it must be the first string table inserted
+' in the resource table - if it is not, just create several new string tables and
+' copy what you want as default into the first new one you create, copy the others
+' then delete the originals.
+'
+' To provide same string table for all English variants or all German variants
+' I have added code to set LANG_BASE_ID dependent on current locale
+' Refer to p.414 VBA in a Nutshell, Lomax
+' I now have a single string table with each lang variant suitably offset:
+' New locale - increase ofsets by 1000 - refer to DocAnalysisWizard.rc
+'
+' English - eng - Start at 1000
+' German - ger - Start at 2000
+' BrazilianPortugese - por - Start at 4000
+' French - fre - Start at 5000
+' Italian - ita - Start at 6000
+' Spanish - spa - Start at 7000
+' Swedish - swe - Start at 8000
+
+
+' String ID's must match those in DocAnalysisWizard.rc
+Const LANG_BASE_ID = 1000
+Const INTERNAL_RESOURCE_BASE_ID = LANG_BASE_ID + 800
+
+' Setup Doc Preparation specific strings
+#If PREPARATION Then
+Global Const gBoolPreparation = True
+
+Public Const TITLE_ID = RID_STR_ENG_TITLE_PREP_ID
+Public Const CHK_SUBDIRS_ID = RID_STR_ENG_DOCUMENTS_INCLUDE_SUBDIRECTORIES_PREP_ID
+Public Const SETUP_ANALYSIS_XLS_ID = RID_STR_ENG_RESULTS_ANALYSIS_XLS_PREP_ID
+Public Const ANALYZE_TOTAL_NUM_DOCS_ID = RID_STR_ENG_ANALYZE_NUM_DOCS_PREP_ID
+Public Const XML_RESULTS_ID = RID_STR_ENG_OTHER_XML_RESULTS_PREP_ID
+
+#Else
+Global Const gBoolPreparation = False
+
+Public Const TITLE_ID = LANG_BASE_ID + 0
+Public Const CHK_SUBDIRS_ID = LANG_BASE_ID + 202
+Public Const SETUP_ANALYSIS_XLS_ID = LANG_BASE_ID + 302
+Public Const ANALYZE_TOTAL_NUM_DOCS_ID = LANG_BASE_ID + 401
+Public Const XML_RESULTS_ID = INTERNAL_RESOURCE_BASE_ID + 15
+#End If
+
+Public Const PRODUCTNAME_ID = LANG_BASE_ID + 1
+Public Const LBL_STEPS_ID = LANG_BASE_ID + 40
+Public Const INTRO1_ID = LANG_BASE_ID + 101
+
+Public Const ANALYZE_DOCUMENTS_ID = LANG_BASE_ID + 402
+Public Const ANALYZE_TEMPLATES_ID = LANG_BASE_ID + 403
+Public Const ANALYZE_DOCUMENTS_XLS_ID = LANG_BASE_ID + 408
+Public Const ANALYZE_DOCUMENTS_PPT_ID = LANG_BASE_ID + 409
+Public Const RUNBTN_START_ID = LANG_BASE_ID + 404
+Public Const PREPAREBTN_START_ID = LANG_BASE_ID + 411
+
+Public Const README_FILE_ID = INTERNAL_RESOURCE_BASE_ID + 5 'Readme.doc
+Public Const BROWSE_FOR_DOC_DIR_ID = INTERNAL_RESOURCE_BASE_ID + 6
+Public Const BROWSE_FOR_RES_DIR_ID = INTERNAL_RESOURCE_BASE_ID + 7
+Public Const RUNBTN_RUNNING_ID = INTERNAL_RESOURCE_BASE_ID + 10
+
+Public Const PROGRESS_CAPTION = INTERNAL_RESOURCE_BASE_ID + 20
+Public Const PROGRESS_ABORTING = INTERNAL_RESOURCE_BASE_ID + 21
+Public Const PROGRESS_PATH_LABEL = INTERNAL_RESOURCE_BASE_ID + 22
+Public Const PROGRESS_FILE_LABEL = INTERNAL_RESOURCE_BASE_ID + 23
+Public Const PROGRESS_INFO_LABEL = INTERNAL_RESOURCE_BASE_ID + 24
+Public Const PROGRESS_WAIT_LABEL = INTERNAL_RESOURCE_BASE_ID + 25
+
+Public Const SEARCH_PATH_LABEL = PROGRESS_PATH_LABEL
+Public Const SEARCH_CAPTION = INTERNAL_RESOURCE_BASE_ID + 26
+Public Const SEARCH_INFO_LABEL = INTERNAL_RESOURCE_BASE_ID + 27
+Public Const SEARCH_FOUND_LABEL = INTERNAL_RESOURCE_BASE_ID + 28
+
+Public Const TERMINATE_CAPTION = INTERNAL_RESOURCE_BASE_ID + 30
+Public Const TERMINATE_INFO = INTERNAL_RESOURCE_BASE_ID + 31
+Public Const TERMINATE_YES = INTERNAL_RESOURCE_BASE_ID + 32
+Public Const TERMINATE_NO = INTERNAL_RESOURCE_BASE_ID + 33
+
+'Error Resource Strings Codes
+Const ERROR_BASE_ID = LANG_BASE_ID + 900
+Public Const ERR_MISSING_RESULTS_DOC = ERROR_BASE_ID + 0
+Public Const ERR_NO_DOC_DIR = ERROR_BASE_ID + 1
+Public Const ERR_NO_DOC_TYPES = ERROR_BASE_ID + 2
+Public Const ERR_NO_RES_DIR = ERROR_BASE_ID + 3
+Public Const ERR_CREATE_DIR = ERROR_BASE_ID + 4
+Public Const ERR_MISSING_RESULTS_TEMPLATE = ERROR_BASE_ID + 5
+Public Const ERR_MISSING_EXCEL_DRIVER = ERROR_BASE_ID + 6
+Public Const ERR_EXCEL_DRIVER_CRASH = ERROR_BASE_ID + 7
+Public Const ERR_MISSING_WORD_DRIVER = ERROR_BASE_ID + 8
+Public Const ERR_WORD_DRIVER_CRASH = ERROR_BASE_ID + 9
+Public Const ERR_MISSING_README = ERROR_BASE_ID + 10
+Public Const ERR_MISSING_PP_DRIVER = ERROR_BASE_ID + 11
+Public Const ERR_PP_DRIVER_CRASH = ERROR_BASE_ID + 12
+Public Const ERR_SUPPORTED_VERSION = ERROR_BASE_ID + 13
+Public Const ERR_ISSUES_VERSION_MISMATCH = ERROR_BASE_ID + 14
+Public Const ERR_ISSUES_LIST_MISSING = ERROR_BASE_ID + 15
+Public Const ERR_SUPPORTED_OSVERSION = ERROR_BASE_ID + 16
+Public Const ERR_OPEN_RESULTS_SPREADSHEET = ERROR_BASE_ID + 17
+Public Const ERR_EXCEL_OPEN = ERROR_BASE_ID + 18
+Public Const ERR_NO_ACCESS_TO_VBPROJECT = ERROR_BASE_ID + 19
+Public Const ERR_AUTOMATION_FAILURE = ERROR_BASE_ID + 20
+Public Const ERR_NO_RESULTS_DIRECTORY = ERROR_BASE_ID + 21
+Public Const ERR_CREATE_FILE = ERROR_BASE_ID + 22
+Public Const ERR_XML_RESULTS_ONLY = ERROR_BASE_ID + 23
+Public Const ERR_NOT_INSTALLED = ERROR_BASE_ID + 24
+Public Const ERR_CDROM_NOT_ALLOWED = ERROR_BASE_ID + 25
+Public Const ERR_CDROM_NOT_READY = ERROR_BASE_ID + 26
+Public Const ERR_NO_WRITE_TO_READ_ONLY_FOLDER = ERROR_BASE_ID + 27
+Public Const ERR_APPLICATION_IN_USE = ERROR_BASE_ID + 28
+Public Const ERR_MISSING_IMPORTANT_FILE = ERROR_BASE_ID + 29
+
+
+Private Const LOCALE_ILANGUAGE As Long = &H1 'language id
+Private Const LOCALE_SLANGUAGE As Long = &H2 'localized name of language
+Private Const LOCALE_SENGLANGUAGE As Long = &H1001 'English name of language
+Private Const LOCALE_SABBREVLANGNAME As Long = &H3 'abbreviated language name
+Private Const LOCALE_SCOUNTRY As Long = &H6 'localized name of country
+Private Const LOCALE_SENGCOUNTRY As Long = &H1002 'English name of country
+Private Const LOCALE_SABBREVCTRYNAME As Long = &H7 'abbreviated country name
+Private Const LOCALE_SISO639LANGNAME As Long = &H59 'ISO abbreviated language name
+Private Const LOCALE_SISO3166CTRYNAME As Long = &H5A 'ISO abbreviated country name
+
+Private Const LOCALE_JAPAN As Long = &H411
+Private Const LOCALE_KOREA As Long = &H412
+Private Const LOCALE_ZH_CN As Long = &H404
+Private Const LOCALE_ZH_TW As Long = &H804
+
+Private Const RES_PREFIX = ".\Resources\Resources.dll"
+
+Declare Function GetLocaleInfo Lib "kernel32" Alias _
+"GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, _
+ByVal cchData As Long) As Long
+
+Declare Function WritePrivateProfileString& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal fileName$)
+Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
+Private Declare Function LoadString Lib "user32" Alias "LoadStringA" _
+ (ByVal hInstance As Long, ByVal wID As Long, ByVal lpBuffer As String, _
+ ByVal nBufferMax As Long) As Long
+
+'WinHelp Commands
+'Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hWnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Long) As Long
+'Public Const HELP_QUIT = &H2 ' Terminate help
+'Public Const HELP_CONTENTS = &H3& ' Display index/contents
+'Public Const HELP_CONTEXT = &H1 ' Display topic in ulTopic
+'Public Const HELP_INDEX = &H3 ' Display index
+
+Public Const CBASE_RESOURCE_DIR = ".\resources"
+Private mStrTrue As String
+Private mLocaleDir As String
+Private ghInst As Long
+
+
+Function getLocaleDir() As String
+ If mLocaleDir = "" Then
+ getLocaleLangBaseIDandSetLocaleDir
+ End If
+ getLocaleDir = mLocaleDir
+End Function
+
+Public Function GetLocaleLanguage() As String
+ Dim lReturn As Long
+ Dim lLocID As Long
+ Dim sData As String
+ Dim lDataLen As Long
+
+ lDataLen = 0
+ lReturn = GetLocaleInfo(lLocID, LOCALE_SENGLANGUAGE, sData, lDataLen)
+ sData = String(lReturn, 0) & vbNullChar
+ lDataLen = lReturn
+ lReturn = GetLocaleInfo(lLocID, LOCALE_SENGLANGUAGE, sData, lDataLen)
+
+End Function
+
+Function getLocaleLangBaseIDandSetLocaleDir() As Integer
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "getLocaleLangBaseIDandSetLocaleDir"
+
+ Dim baseID As Long
+ Dim bUseLocale As Boolean
+ Dim fso As FileSystemObject
+ Set fso = New FileSystemObject
+
+ Dim isoLangStr As String
+ Dim isoCountryStr As String
+ Dim langStr As String
+
+ Dim userLCID As Long
+ userLCID = GetUserDefaultLCID()
+ Dim sysLCID As Long
+ sysLCID = GetSystemDefaultLCID()
+
+ isoLangStr = GetUserLocaleInfo(sysLCID, LOCALE_SISO639LANGNAME)
+ isoCountryStr = GetUserLocaleInfo(sysLCID, LOCALE_SISO3166CTRYNAME)
+ langStr = GetUserLocaleInfo(sysLCID, LOCALE_SENGLANGUAGE)
+
+ baseID = 0
+ mLocaleDir = ""
+
+ If fso.FileExists(fso.GetAbsolutePathName("debug.ini")) Then
+ Dim overrideLangStr As String
+ overrideLangStr = ProfileGetItem("debug", "langoverride", "", fso.GetAbsolutePathName("debug.ini"))
+ If overrideLangStr <> "" Then
+ Debug.Print "Overriding language " & isoLangStr & " with " & overrideLangStr & "\n"
+ isoLangStr = overrideLangStr
+ End If
+ End If
+
+ 'check for locale dirs in following order:
+ ' CBASE_RESOURCE_DIR & "\" & isoLangStr
+ ' CBASE_RESOURCE_DIR & "\" & isoLangStr & "-" & isoCountryStr
+ ' CBASE_RESOURCE_DIR & "\" & "eng"
+ 'If fso.FolderExists(fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & isoLangStr)) Then
+ ' mLocaleDir = CBASE_RESOURCE_DIR & "\" & isoLangStr
+ ' baseID = getBaseID(isoLangStr)
+ 'ElseIf fso.FolderExists(fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & isoLangStr & "-" & isoCountryStr)) Then
+ ' mLocaleDir = CBASE_RESOURCE_DIR & "\" & isoLangStr & "-" & isoCountryStr
+ ' baseID = getBaseID(isoLangStr & "-" & isoCountryStr)
+ 'Else
+ mLocaleDir = CBASE_RESOURCE_DIR
+ baseID = 1000
+ 'End If
+
+ getLocaleLangBaseIDandSetLocaleDir = CInt(baseID)
+
+FinalExit:
+ Set fso = Nothing
+
+ Exit Function
+
+HandleErrors:
+ Debug.Print currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+'--------------------------------------------------------------------------
+'this sub must be executed from the immediate window
+'it will add the entry to VBADDIN.INI if it doesn't already exist
+'so that the add-in is on available next time VB is loaded
+'--------------------------------------------------------------------------
+Sub AddToINI()
+ Debug.Print WritePrivateProfileString("Add-Ins32", WIZARD_NAME & ".Wizard", "0", "VBADDIN.INI")
+End Sub
+
+Function GetResString(nRes As Integer) As String
+ Dim sTmp As String
+ Dim sRes As String * 1024
+ Dim sRetStr As String
+ Dim nRet As Long
+
+ Do
+ 'sTmp = LoadResString(nRes)
+ nRet = LoadString(ghInst, nRes, sRes, 1024)
+ sTmp = Left$(sRes, nRet)
+
+ If Right(sTmp, 1) = "_" Then
+ sRetStr = sRetStr + VBA.Left(sTmp, Len(sTmp) - 1)
+ Else
+ sRetStr = sRetStr + sTmp
+ End If
+ nRes = nRes + 1
+ Loop Until Right(sTmp, 1) <> "_"
+ GetResString = sRetStr
+
+End Function
+
+Function GetField(sBuffer As String, sSep As String) As String
+ Dim p As Integer
+
+ p = InStr(sBuffer & sSep, sSep)
+ GetField = VBA.Left(sBuffer, p - 1)
+ sBuffer = Mid(sBuffer, p + Len(sSep))
+
+End Function
+' Parts of the following code are from:
+' http://support.microsoft.com/default.aspx?scid=kb;en-us;232625&Product=vb6
+
+Private Function GetCharSet(sCdpg As String) As Integer
+ Select Case sCdpg
+ Case "932" ' Japanese
+ GetCharSet = 128
+ Case "936" ' Simplified Chinese
+ GetCharSet = 134
+ Case "949" ' Korean
+ GetCharSet = 129
+ Case "950" ' Traditional Chinese
+ GetCharSet = 136
+ Case "1250" ' Eastern Europe
+ GetCharSet = 238
+ Case "1251" ' Russian
+ GetCharSet = 204
+ Case "1252" ' Western European Languages
+ GetCharSet = 0
+ Case "1253" ' Greek
+ GetCharSet = 161
+ Case "1254" ' Turkish
+ GetCharSet = 162
+ Case "1255" ' Hebrew
+ GetCharSet = 177
+ Case "1256" ' Arabic
+ GetCharSet = 178
+ Case "1257" ' Baltic
+ GetCharSet = 186
+ Case Else
+ GetCharSet = 0
+ End Select
+End Function
+
+Private Function StripNullTerminator(sCP As String)
+ Dim posNull As Long
+ posNull = InStr(sCP, Chr$(0))
+ StripNullTerminator = Left$(sCP, posNull - 1)
+End Function
+
+Private Function GetResourceDataFileName() As String
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "GetResourceDataFileName"
+
+ Dim fileName As String
+ Dim fso As FileSystemObject
+ Set fso = New FileSystemObject
+
+ GetResourceDataFileName = fso.GetAbsolutePathName(RES_PREFIX)
+
+ GoTo FinalExit
+
+ ' use the following code when we have one resource file for each language
+ Dim isoLangStr As String
+ Dim isoCountryStr As String
+
+ Dim userLCID As Long
+ userLCID = GetUserDefaultLangID()
+ Dim sysLCID As Long
+ sysLCID = GetSystemDefaultLangID()
+
+ isoLangStr = GetUserLocaleInfo(userLCID, LOCALE_SISO639LANGNAME)
+ isoCountryStr = GetUserLocaleInfo(userLCID, LOCALE_SISO3166CTRYNAME)
+
+ 'check for locale data in following order:
+ ' user language
+ ' isoLangStr & "_" & isoCountryStr & ".dll"
+ ' isoLangStr & ".dll"
+ ' system language
+ ' isoLangStr & "_" & isoCountryStr & ".dll"
+ ' isoLangStr & ".dll"
+ ' "en_US" & ".dll"
+
+ fileName = fso.GetAbsolutePathName(RES_PREFIX & isoLangStr & "-" & isoCountryStr & ".dll")
+ If fso.FileExists(fileName) Then
+ GetResourceDataFileName = fileName
+ Else
+ fileName = fso.GetAbsolutePathName(RES_PREFIX & isoLangStr & ".dll")
+ If fso.FileExists(fileName) Then
+ GetResourceDataFileName = fileName
+ Else
+ isoLangStr = GetUserLocaleInfo(sysLCID, LOCALE_SISO639LANGNAME)
+ isoCountryStr = GetUserLocaleInfo(sysLCID, LOCALE_SISO3166CTRYNAME)
+
+ fileName = fso.GetAbsolutePathName(RES_PREFIX & isoLangStr & "-" & isoCountryStr & ".dll")
+ If fso.FileExists(fileName) Then
+ GetResourceDataFileName = fileName
+ Else
+ fileName = fso.GetAbsolutePathName(RES_PREFIX & isoLangStr & ".dll")
+ If fso.FileExists(fileName) Then
+ GetResourceDataFileName = fileName
+ Else
+ GetResourceDataFileName = fso.GetAbsolutePathName(RES_PREFIX & "en-US.dll")
+ End If
+ End If
+ End If
+ End If
+FinalExit:
+ Set fso = Nothing
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Sub LoadResStrings(frm As Form)
+ Dim ctl As Control
+ Dim obj As Object
+
+ Dim LCID As Long, X As Long
+ Dim sCodePage As String
+ Dim nCharSet As Integer
+ Dim currentFunctionName As String
+ currentFunctionName = "LoadResStrings"
+
+ On Error GoTo HandleErrors
+ ghInst = LoadLibrary(GetResourceDataFileName())
+
+ On Error Resume Next
+
+ sCodePage = String$(16, " ")
+ LCID = GetThreadLocale() 'Get Current locale
+
+ X = GetLocaleInfo(LCID, LOCALE_IDEFAULTANSICODEPAGE, _
+ sCodePage, Len(sCodePage)) 'Get code page
+ sCodePage = StripNullTerminator(sCodePage)
+ nCharSet = GetCharSet(sCodePage) 'Convert code page to charset
+
+ 'set the form's caption
+ If IsNumeric(frm.Tag) Then
+ frm.Caption = LoadResString(CInt(frm.Tag))
+ End If
+
+ 'set the controls' captions using the caption
+ 'property for menu items and the Tag property
+ 'for all other controls
+ For Each ctl In frm.Controls
+ Err = 0
+ If (nCharSet <> 0) Then
+ ctl.Font.Charset = nCharSet
+ End If
+ If TypeName(ctl) = "Menu" Then
+ If IsNumeric(ctl.Caption) Then
+ ctl.Caption = LoadResString(CInt(ctl.Caption))
+ End If
+ ElseIf TypeName(ctl) = "TabStrip" Then
+ For Each obj In ctl.Tabs
+ If IsNumeric(obj.Tag) Then
+ obj.Caption = LoadResString(CInt(obj.Tag))
+ End If
+ 'check for a tooltip
+ If IsNumeric(obj.ToolTipText) Then
+ If Err = 0 Then
+ obj.ToolTipText = LoadResString(CInt(obj.ToolTipText))
+ End If
+ End If
+ Next
+ ElseIf TypeName(ctl) = "Toolbar" Then
+ For Each obj In ctl.Buttons
+ If IsNumeric(obj.Tag) Then
+ obj.ToolTipText = LoadResString(CInt(obj.Tag))
+ End If
+ Next
+ ElseIf TypeName(ctl) = "ListView" Then
+ For Each obj In ctl.ColumnHeaders
+ If IsNumeric(obj.Tag) Then
+ obj.Text = LoadResString(CInt(obj.Tag))
+ End If
+ Next
+ ElseIf TypeName(ctl) = "TextBox" Then
+ If IsNumeric(ctl.Tag) Then
+ ctl.Text = LoadResString(CInt(ctl.Tag))
+ End If
+ Else
+ If IsNumeric(ctl.Tag) Then
+ ctl.Caption = GetResString(CInt(ctl.Tag))
+ End If
+ 'check for a tooltip
+ If IsNumeric(ctl.ToolTipText) Then
+ If Err = 0 Then
+ ctl.ToolTipText = LoadResString(CInt(ctl.ToolTipText))
+ End If
+ End If
+ End If
+ Next
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+
+End Sub
+
+'==================================================
+'Purpose: Replace the sToken string(s) in
+' res file string for correct placement
+' of localized tokens
+'
+'Inputs: sString = String to search and replace in
+' sToken = token to replace
+' sReplacement = String to replace token with
+'
+'Outputs: New string with token replaced throughout
+'==================================================
+Function ReplaceTopicTokens(sString As String, _
+ sToken As String, _
+ sReplacement As String) As String
+ On Error Resume Next
+
+ Dim p As Integer
+ Dim sTmp As String
+
+ sTmp = sString
+ Do
+ p = InStr(sTmp, sToken)
+ If p Then
+ sTmp = VBA.Left(sTmp, p - 1) + sReplacement + Mid(sTmp, p + Len(sToken))
+ End If
+ Loop While p
+
+
+ ReplaceTopicTokens = sTmp
+
+End Function
+'==================================================
+'Purpose: Replace the sToken1 and sToken2 strings in
+' res file string for correct placement
+' of localized tokens
+'
+'Inputs: sString = String to search and replace in
+' sToken1 = 1st token to replace
+' sReplacement1 = 1st String to replace token with
+' sToken2 = 2nd token to replace
+' sReplacement2 = 2nd String to replace token with
+'
+'Outputs: New string with token replaced throughout
+'==================================================
+Function ReplaceTopic2Tokens(sString As String, _
+ sToken1 As String, _
+ sReplacement1 As String, _
+ sToken2 As String, _
+ sReplacement2 As String) As String
+ On Error Resume Next
+
+ ReplaceTopic2Tokens = _
+ ReplaceTopicTokens(ReplaceTopicTokens(sString, sToken1, sReplacement1), _
+ sToken2, sReplacement2)
+End Function
+
+
+Public Function GetResData(sResName As String, sResType As String) As String
+ Dim sTemp As String
+ Dim p As Integer
+
+ sTemp = StrConv(LoadResData(sResName, sResType), vbUnicode)
+ p = InStr(sTemp, vbNullChar)
+ If p Then sTemp = VBA.Left$(sTemp, p - 1)
+ GetResData = sTemp
+End Function
+
+Function AddToAddInCommandBar(VBInst As Object, sCaption As String, oBitmap As Object) As Object 'Office.CommandBarControl
+ On Error GoTo AddToAddInCommandBarErr
+
+ Dim c As Integer
+ Dim cbMenuCommandBar As Object 'Office.CommandBarControl 'command bar object
+ Dim cbMenu As Object
+
+ 'see if we can find the Add-Ins menu
+ Set cbMenu = VBInst.CommandBars("Add-Ins")
+ If cbMenu Is Nothing Then
+ 'not available so we fail
+ Exit Function
+ End If
+
+ 'add it to the command bar
+ Set cbMenuCommandBar = cbMenu.Controls.add(1)
+ c = cbMenu.Controls.count - 1
+ If cbMenu.Controls(c).BeginGroup And _
+ Not cbMenu.Controls(c - 1).BeginGroup Then
+ 'this s the first addin being added so it needs a separator
+ cbMenuCommandBar.BeginGroup = True
+ End If
+ 'set the caption
+ cbMenuCommandBar.Caption = sCaption
+ 'undone:set the onaction (required at this point)
+ cbMenuCommandBar.OnAction = "hello"
+ 'copy the icon to the clipboard
+ Clipboard.SetData oBitmap
+ 'set the icon for the button
+ cbMenuCommandBar.PasteFace
+
+ Set AddToAddInCommandBar = cbMenuCommandBar
+
+ Exit Function
+AddToAddInCommandBarErr:
+
+End Function
+
diff --git a/migrationanalysis/src/wizard/Wizard.frm b/migrationanalysis/src/wizard/Wizard.frm
new file mode 100644
index 000000000000..ebb955386c68
--- /dev/null
+++ b/migrationanalysis/src/wizard/Wizard.frm
@@ -0,0 +1,3453 @@
+VERSION 5.00
+Begin VB.Form frmWizard
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 1 'Fixed Single
+ Caption = "OpenOffice.org Document Analysis Wizard"
+ ClientHeight = 5520
+ ClientLeft = 1965
+ ClientTop = 1815
+ ClientWidth = 8175
+ BeginProperty Font
+ Name = "Arial"
+ Size = 8.25
+ Charset = 0
+ Weight = 400
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Icon = "Wizard.frx":0000
+ KeyPreview = -1 'True
+ LinkTopic = "Form1"
+ LockControls = -1 'True
+ MaxButton = 0 'False
+ MinButton = 0 'False
+ ScaleHeight = 5520
+ ScaleWidth = 8175
+ Tag = "1000"
+ Begin VB.Frame fraStep
+ BorderStyle = 0 'None
+ Caption = "Introduction"
+ ClipControls = 0 'False
+ Enabled = 0 'False
+ BeginProperty Font
+ Name = "MS Sans Serif"
+ Size = 8.25
+ Charset = 0
+ Weight = 400
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 4905
+ Index = 0
+ Left = -10000
+ TabIndex = 25
+ Tag = "1000"
+ Top = 0
+ Width = 8235
+ Begin VB.PictureBox Picture4
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 4935
+ Index = 0
+ Left = 0
+ ScaleHeight = 4935
+ ScaleWidth = 2565
+ TabIndex = 2
+ TabStop = 0 'False
+ Top = 0
+ Width = 2565
+ Begin VB.PictureBox Picture10
+ Height = 735
+ Left = 2580
+ ScaleHeight = 735
+ ScaleWidth = 30
+ TabIndex = 68
+ TabStop = 0 'False
+ Top = 2610
+ Width = 30
+ End
+ Begin VB.PictureBox Picture6
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 1485
+ Left = 150
+ ScaleHeight = 1485
+ ScaleWidth = 2355
+ TabIndex = 67
+ TabStop = 0 'False
+ Top = 3390
+ Width = 2355
+ Begin VB.PictureBox Picture1
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 1200
+ Index = 0
+ Left = 200
+ Picture = "Wizard.frx":482C2
+ ScaleHeight = 1200
+ ScaleWidth = 1980
+ TabIndex = 7
+ TabStop = 0 'False
+ Tag = "1060"
+ Top = 300
+ Width = 1980
+ End
+ End
+ Begin VB.Label lblStep1_4
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "4. Analyze"
+ ForeColor = &H00BF4F59&
+ Height = 195
+ Left = 120
+ TabIndex = 89
+ Tag = "1044"
+ Top = 1800
+ Width = 2140
+ End
+ Begin VB.Line Line2
+ BorderColor = &H00808080&
+ Index = 2
+ X1 = 2550
+ X2 = 2550
+ Y1 = 0
+ Y2 = 4920
+ End
+ Begin VB.Line Line3
+ Index = 1
+ X1 = 120
+ X2 = 2280
+ Y1 = 480
+ Y2 = 480
+ End
+ Begin VB.Label Label7
+ BackColor = &H00EED3C2&
+ Caption = "1. Introduction"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 1
+ Left = 120
+ TabIndex = 11
+ Tag = "1041"
+ Top = 720
+ Width = 2140
+ End
+ Begin VB.Label Label8
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "3. Results"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 1
+ Left = 120
+ TabIndex = 9
+ Tag = "1043"
+ Top = 1440
+ Width = 2140
+ End
+ Begin VB.Label Label9
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "2. Documents"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 1
+ Left = 120
+ TabIndex = 10
+ Tag = "1042"
+ Top = 1080
+ Width = 2140
+ End
+ Begin VB.Label Label12
+ BackStyle = 0 'Transparent
+ Caption = "Steps"
+ BeginProperty Font
+ Name = "Arial"
+ Size = 8.25
+ Charset = 0
+ Weight = 700
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 255
+ Index = 1
+ Left = 120
+ TabIndex = 8
+ Tag = "1040"
+ Top = 240
+ Width = 2115
+ End
+ End
+ Begin VB.PictureBox Picture8
+ Appearance = 0 'Flat
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 4935
+ Left = 2400
+ ScaleHeight = 4935
+ ScaleWidth = 5925
+ TabIndex = 3
+ TabStop = 0 'False
+ Top = -30
+ Width = 5925
+ Begin VB.CheckBox chkShowIntro
+ Caption = "Do not show this introduction again"
+ Enabled = 0 'False
+ Height = 315
+ Left = 690
+ MaskColor = &H00000000&
+ TabIndex = 6
+ Tag = "1103"
+ Top = 4890
+ Visible = 0 'False
+ Width = 3810
+ End
+ Begin VB.Label lblIntroduction1
+ AutoSize = -1 'True
+ Caption = $"Wizard.frx":4F8B8
+ Height = 585
+ Left = 690
+ TabIndex = 93
+ Tag = "1101"
+ Top = 750
+ Width = 4890
+ WordWrap = -1 'True
+ End
+ Begin VB.Label lblIntroduction3
+ AutoSize = -1 'True
+ Caption = "The wizard will remain on screen while the analysis is carried out."
+ Height = 195
+ Left = 690
+ TabIndex = 0
+ Tag = "1104"
+ Top = 2670
+ Width = 4845
+ WordWrap = -1 'True
+ End
+ Begin VB.Label lblIntroduction2
+ AutoSize = -1 'True
+ Caption = "You will be able to select which documents you want to analyze as well as where you want the results to the analysis to be saved. "
+ Height = 390
+ Left = 690
+ TabIndex = 1
+ Tag = "1102"
+ Top = 1800
+ Width = 4875
+ WordWrap = -1 'True
+ End
+ Begin VB.Label Label12
+ BackStyle = 0 'Transparent
+ Caption = "Introduction"
+ BeginProperty Font
+ Name = "Arial"
+ Size = 8.25
+ Charset = 0
+ Weight = 700
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 255
+ Index = 2
+ Left = 450
+ TabIndex = 5
+ Tag = "1100"
+ Top = 270
+ Width = 4000
+ End
+ End
+ End
+ Begin VB.Frame fraStep
+ BorderStyle = 0 'None
+ Caption = "Setup"
+ Enabled = 0 'False
+ BeginProperty Font
+ Name = "MS Sans Serif"
+ Size = 8.25
+ Charset = 0
+ Weight = 400
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 4905
+ Index = 1
+ Left = -10000
+ TabIndex = 32
+ Tag = "2000"
+ Top = 0
+ Width = 8235
+ Begin VB.PictureBox Picture4
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 4905
+ Index = 1
+ Left = 0
+ ScaleHeight = 4905
+ ScaleWidth = 2565
+ TabIndex = 61
+ TabStop = 0 'False
+ Top = 0
+ Width = 2565
+ Begin VB.PictureBox Picture1
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 1200
+ Index = 1
+ Left = 350
+ Picture = "Wizard.frx":4F971
+ ScaleHeight = 1200
+ ScaleWidth = 1980
+ TabIndex = 62
+ TabStop = 0 'False
+ Tag = "1060"
+ Top = 3690
+ Width = 1980
+ End
+ Begin VB.Label lblStep2_4
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "4. Analyze"
+ ForeColor = &H00BF4F59&
+ Height = 195
+ Left = 120
+ TabIndex = 90
+ Tag = "1044"
+ Top = 1800
+ Width = 2140
+ End
+ Begin VB.Line Line2
+ BorderColor = &H00808080&
+ Index = 1
+ X1 = 2550
+ X2 = 2550
+ Y1 = 0
+ Y2 = 4920
+ End
+ Begin VB.Label Label12
+ BackStyle = 0 'Transparent
+ Caption = "Steps"
+ BeginProperty Font
+ Name = "Arial"
+ Size = 8.25
+ Charset = 0
+ Weight = 700
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 255
+ Index = 3
+ Left = 120
+ TabIndex = 66
+ Tag = "1040"
+ Top = 240
+ Width = 1335
+ End
+ Begin VB.Label Label9
+ BackColor = &H00EED3C2&
+ Caption = "2. Documents"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 2
+ Left = 120
+ TabIndex = 65
+ Tag = "1042"
+ Top = 1080
+ Width = 2140
+ End
+ Begin VB.Label Label8
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "3. Results"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 2
+ Left = 120
+ TabIndex = 64
+ Tag = "1043"
+ Top = 1440
+ Width = 2140
+ End
+ Begin VB.Label Label7
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "1. Introduction"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 2
+ Left = 120
+ TabIndex = 63
+ Tag = "1041"
+ Top = 720
+ Width = 2140
+ End
+ Begin VB.Line Line3
+ Index = 2
+ X1 = 120
+ X2 = 2280
+ Y1 = 480
+ Y2 = 480
+ End
+ End
+ Begin VB.PictureBox Picture7
+ Appearance = 0 'Flat
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 4725
+ Left = 2580
+ ScaleHeight = 4725
+ ScaleWidth = 5535
+ TabIndex = 58
+ TabStop = 0 'False
+ Top = 0
+ Width = 5535
+ Begin VB.ComboBox cbIgnoreOld
+ Height = 330
+ ItemData = "Wizard.frx":56F67
+ Left = 3950
+ List = "Wizard.frx":56F74
+ Style = 2 'Dropdown List
+ TabIndex = 99
+ Top = 1570
+ Width = 1215
+ End
+ Begin VB.CheckBox chkIgnoreOld
+ Caption = "Ignore documents older than"
+ Height = 225
+ Left = 450
+ TabIndex = 98
+ Top = 1600
+ Width = 3400
+ End
+ Begin VB.CheckBox chkWordDoc
+ Caption = "Documents (*.doc)"
+ Height = 225
+ Left = 2160
+ TabIndex = 19
+ Tag = "1208"
+ Top = 2600
+ Value = 1 'Checked
+ Width = 3200
+ End
+ Begin VB.CheckBox chkWordTemplate
+ Caption = "Templates (*.dot)"
+ Height = 225
+ Left = 2160
+ TabIndex = 20
+ Tag = "1209"
+ Top = 2900
+ Width = 3200
+ End
+ Begin VB.CheckBox chkPPTemplate
+ Caption = "Templates (*.pot)"
+ Height = 225
+ Left = 2160
+ TabIndex = 24
+ Tag = "1215"
+ Top = 4400
+ Width = 3200
+ End
+ Begin VB.CheckBox chkPPDoc
+ Caption = "Presentations (*.ppt)"
+ Height = 225
+ Left = 2160
+ TabIndex = 23
+ Tag = "1214"
+ Top = 4100
+ Width = 3200
+ End
+ Begin VB.CheckBox chkExcelDoc
+ Caption = "Spreadsheets (*.xls)"
+ Height = 225
+ Left = 2160
+ TabIndex = 21
+ Tag = "1211"
+ Top = 3350
+ Width = 3200
+ End
+ Begin VB.CheckBox chkExcelTemplate
+ Caption = "Templates (*.xlt)"
+ Height = 225
+ Left = 2160
+ TabIndex = 22
+ Tag = "1212"
+ Top = 3650
+ Width = 3200
+ End
+ Begin VB.CommandButton btnBrowseDirInput
+ Caption = "..."
+ Height = 315
+ Left = 4740
+ TabIndex = 17
+ Top = 900
+ Width = 400
+ End
+ Begin VB.TextBox txtInputDir
+ Height = 315
+ Left = 450
+ TabIndex = 16
+ Tag = "1205"
+ Text = "C:\"
+ Top = 900
+ Width = 4155
+ End
+ Begin VB.CheckBox chkIncludeSubdirs
+ Caption = "Include subdirectories in the analysis"
+ Height = 225
+ Left = 450
+ TabIndex = 18
+ Tag = "1202"
+ Top = 1300
+ Width = 4965
+ End
+ Begin VB.Label lblDocTypes
+ Caption = "Document types to analyze"
+ Height = 225
+ Left = 450
+ TabIndex = 95
+ Tag = "1206"
+ Top = 2250
+ Width = 4905
+ End
+ Begin VB.Label lblChooseDocs
+ AutoSize = -1 'True
+ Caption = "Choose the documents you want to analyze"
+ BeginProperty Font
+ Name = "Arial"
+ Size = 8.25
+ Charset = 0
+ Weight = 700
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 195
+ Left = 300
+ TabIndex = 94
+ Tag = "1200"
+ Top = 240
+ Width = 5115
+ WordWrap = -1 'True
+ End
+ Begin VB.Label Label13
+ AutoSize = -1 'True
+ Caption = "PowerPoint"
+ Height = 225
+ Index = 2
+ Left = 690
+ TabIndex = 74
+ Tag = "1213"
+ Top = 4100
+ Width = 1245
+ WordWrap = -1 'True
+ End
+ Begin VB.Label Label13
+ AutoSize = -1 'True
+ Caption = "Excel"
+ Height = 225
+ Index = 1
+ Left = 690
+ TabIndex = 73
+ Tag = "1210"
+ Top = 3350
+ Width = 1245
+ WordWrap = -1 'True
+ End
+ Begin VB.Label Label13
+ AutoSize = -1 'True
+ Caption = "Word"
+ Height = 225
+ Index = 0
+ Left = 690
+ TabIndex = 72
+ Tag = "1207"
+ Top = 2600
+ Width = 1245
+ WordWrap = -1 'True
+ End
+ Begin VB.Label Label1
+ Caption = "Location of Microsoft Office documents"
+ Height = 200
+ Left = 450
+ TabIndex = 59
+ Tag = "1201"
+ Top = 600
+ Width = 4935
+ End
+ End
+ End
+ Begin VB.Frame fraStep
+ BorderStyle = 0 'None
+ Caption = "Options"
+ Enabled = 0 'False
+ BeginProperty Font
+ Name = "MS Sans Serif"
+ Size = 8.25
+ Charset = 0
+ Weight = 400
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 4905
+ Index = 2
+ Left = -10000
+ TabIndex = 33
+ Tag = "2002"
+ Top = 0
+ Width = 8235
+ Begin VB.PictureBox Picture11
+ BorderStyle = 0 'None
+ Height = 555
+ Left = 7260
+ ScaleHeight = 555
+ ScaleWidth = 705
+ TabIndex = 75
+ Top = 1890
+ Width = 705
+ Begin VB.CommandButton btnBrowseDirOut
+ Caption = "..."
+ Height = 375
+ Left = 90
+ TabIndex = 28
+ Top = 90
+ Width = 495
+ End
+ End
+ Begin VB.TextBox txtResultsName
+ Height = 375
+ Left = 3030
+ TabIndex = 26
+ Tag = "1302"
+ Text = "Analysis Results.xls"
+ Top = 1140
+ Width = 3045
+ End
+ Begin VB.TextBox txtOutputDir
+ Height = 375
+ Left = 3030
+ TabIndex = 27
+ Top = 1980
+ Width = 4185
+ End
+ Begin VB.PictureBox Picture5
+ Appearance = 0 'Flat
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 1365
+ Left = 3300
+ ScaleHeight = 1365
+ ScaleWidth = 4635
+ TabIndex = 57
+ TabStop = 0 'False
+ Top = 3210
+ Width = 4635
+ Begin VB.OptionButton rdbResultsPrompt
+ Caption = "Ask me before overwriting"
+ Height = 435
+ Left = 0
+ TabIndex = 29
+ Tag = "1312"
+ Top = 0
+ Value = -1 'True
+ Width = 4485
+ End
+ Begin VB.OptionButton rdbResultsOverwrite
+ Caption = "Overwrite without asking me"
+ Height = 435
+ Left = 0
+ TabIndex = 30
+ Tag = "1313"
+ Top = 450
+ Width = 4455
+ End
+ Begin VB.OptionButton rdbResultsAppend
+ Caption = "Append the new results to the existing results"
+ Height = 675
+ Left = 0
+ TabIndex = 31
+ Tag = "1314"
+ Top = 780
+ Visible = 0 'False
+ Width = 4515
+ End
+ End
+ Begin VB.Frame Frame3
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 0 'None
+ Enabled = 0 'False
+ ForeColor = &H0099A8AC&
+ Height = 5175
+ Index = 0
+ Left = 0
+ TabIndex = 39
+ Top = 0
+ Width = 2535
+ Begin VB.PictureBox Picture1
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 1200
+ Index = 3
+ Left = 350
+ Picture = "Wizard.frx":56F97
+ ScaleHeight = 1200
+ ScaleWidth = 1980
+ TabIndex = 40
+ TabStop = 0 'False
+ Top = 3690
+ Width = 1980
+ End
+ Begin VB.Label lblStep3_4
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "4. Analyze"
+ ForeColor = &H00BF4F59&
+ Height = 195
+ Left = 120
+ TabIndex = 91
+ Tag = "1044"
+ Top = 1800
+ Width = 2140
+ End
+ Begin VB.Label Label12
+ BackStyle = 0 'Transparent
+ Caption = "Steps"
+ BeginProperty Font
+ Name = "Arial"
+ Size = 8.25
+ Charset = 0
+ Weight = 700
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 255
+ Index = 0
+ Left = 120
+ TabIndex = 53
+ Tag = "1040"
+ Top = 240
+ Width = 1335
+ End
+ Begin VB.Label Label9
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "2. Documents"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 0
+ Left = 120
+ TabIndex = 43
+ Tag = "1042"
+ Top = 1080
+ Width = 2140
+ End
+ Begin VB.Label Label8
+ BackColor = &H00EED3C2&
+ Caption = "3. Results"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 0
+ Left = 120
+ TabIndex = 42
+ Tag = "1043"
+ Top = 1440
+ Width = 2140
+ End
+ Begin VB.Label Label7
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "1. Introduction"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 0
+ Left = 120
+ TabIndex = 41
+ Tag = "1041"
+ Top = 720
+ Width = 2140
+ End
+ Begin VB.Line Line3
+ Index = 0
+ X1 = 120
+ X2 = 2280
+ Y1 = 480
+ Y2 = 480
+ End
+ End
+ Begin VB.Label Label3
+ Caption = "File name for the results spreadsheet"
+ Height = 195
+ Left = 3030
+ TabIndex = 71
+ Tag = "1301"
+ Top = 840
+ Width = 4785
+ End
+ Begin VB.Label lblResultsLocation
+ Caption = "Location"
+ Height = 195
+ Left = 3030
+ TabIndex = 70
+ Tag = "1304"
+ Top = 1710
+ Width = 4755
+ End
+ Begin VB.Label Label13
+ AutoSize = -1 'True
+ Caption = "If results already exisit under the same name and location:"
+ Height = 195
+ Index = 5
+ Left = 3030
+ TabIndex = 38
+ Tag = "1311"
+ Top = 2730
+ Width = 4230
+ WordWrap = -1 'True
+ End
+ Begin VB.Line Line2
+ BorderColor = &H00808080&
+ Index = 0
+ X1 = 2550
+ X2 = 2550
+ Y1 = 0
+ Y2 = 4920
+ End
+ Begin VB.Label lblChooseResults
+ AutoSize = -1 'True
+ Caption = "Choose where and how to save the analysis results"
+ BeginProperty Font
+ Name = "Arial"
+ Size = 8.25
+ Charset = 0
+ Weight = 700
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 195
+ Left = 2880
+ TabIndex = 37
+ Tag = "1300"
+ Top = 240
+ Width = 5055
+ WordWrap = -1 'True
+ End
+ End
+ Begin VB.Frame fraStep
+ BorderStyle = 0 'None
+ Caption = "Analyze"
+ Enabled = 0 'False
+ BeginProperty Font
+ Name = "MS Sans Serif"
+ Size = 8.25
+ Charset = 0
+ Weight = 400
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 4905
+ Index = 3
+ Left = 0
+ TabIndex = 34
+ Tag = "3000"
+ Top = 0
+ Width = 2.45745e5
+ Begin VB.PictureBox Picture12
+ Appearance = 0 'Flat
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 4905
+ Left = 10020
+ ScaleHeight = 4905
+ ScaleWidth = 8175
+ TabIndex = 69
+ TabStop = 0 'False
+ Top = 0
+ Width = 8175
+ End
+ Begin VB.CommandButton btnPrepare
+ Caption = "Prepare"
+ Enabled = 0 'False
+ Height = 375
+ Left = 3340
+ TabIndex = 97
+ Tag = "1411"
+ Top = 4410
+ Visible = 0 'False
+ Width = 4000
+ End
+ Begin VB.CommandButton btnRunAnalysis
+ Caption = "Run"
+ Height = 375
+ Left = 3340
+ TabIndex = 35
+ Tag = "1404"
+ Top = 3410
+ Width = 4000
+ End
+ Begin VB.CommandButton btnViewResults
+ Caption = "View"
+ Enabled = 0 'False
+ Height = 375
+ Left = 3340
+ TabIndex = 36
+ Tag = "1406"
+ Top = 3910
+ Width = 4000
+ End
+ Begin VB.Frame Frame3
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 0 'None
+ Enabled = 0 'False
+ ForeColor = &H0099A8AC&
+ Height = 5175
+ Index = 3
+ Left = 0
+ TabIndex = 44
+ Top = 0
+ Width = 2535
+ Begin VB.PictureBox Picture4
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 1575
+ Index = 2
+ Left = 150
+ ScaleHeight = 1575
+ ScaleWidth = 2385
+ TabIndex = 55
+ TabStop = 0 'False
+ Top = 3390
+ Width = 2385
+ Begin VB.PictureBox Picture1
+ Appearance = 0 'Flat
+ BackColor = &H80000005&
+ BorderStyle = 0 'None
+ ForeColor = &H80000008&
+ Height = 1200
+ Index = 2
+ Left = 200
+ Picture = "Wizard.frx":5E58D
+ ScaleHeight = 1200
+ ScaleWidth = 2475
+ TabIndex = 56
+ TabStop = 0 'False
+ Tag = "1060"
+ Top = 300
+ Width = 2480
+ End
+ End
+ Begin VB.Label lblStep4_4
+ BackColor = &H00EED3C2&
+ Caption = "4. Analyze"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Left = 120
+ TabIndex = 92
+ Tag = "1044"
+ Top = 1800
+ Width = 2140
+ End
+ Begin VB.Label Label12
+ BackStyle = 0 'Transparent
+ Caption = "Steps"
+ BeginProperty Font
+ Name = "Arial"
+ Size = 8.25
+ Charset = 0
+ Weight = 700
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 255
+ Index = 5
+ Left = 120
+ TabIndex = 54
+ Tag = "1040"
+ Top = 240
+ Width = 1335
+ End
+ Begin VB.Label Label9
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "2. Documents"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 3
+ Left = 120
+ TabIndex = 47
+ Tag = "1042"
+ Top = 1080
+ Width = 2140
+ End
+ Begin VB.Label Label8
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "3. Results"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 3
+ Left = 120
+ TabIndex = 46
+ Tag = "1043"
+ Top = 1440
+ Width = 2140
+ End
+ Begin VB.Label Label7
+ BackColor = &H00EED3C2&
+ BackStyle = 0 'Transparent
+ Caption = "1. Introduction"
+ ForeColor = &H00BF4F59&
+ Height = 255
+ Index = 3
+ Left = 120
+ TabIndex = 45
+ Tag = "1041"
+ Top = 720
+ Width = 2140
+ End
+ Begin VB.Line Line3
+ Index = 3
+ X1 = 120
+ X2 = 2280
+ Y1 = 480
+ Y2 = 480
+ End
+ End
+ Begin VB.Label lblSkippedOld
+ Caption = "Skipped <TOPIC> documets, because they were too old"
+ Height = 195
+ Left = 3180
+ TabIndex = 60
+ Top = 2880
+ Width = 4935
+ End
+ Begin VB.Label lblSetupDone
+ AutoSize = -1 'True
+ Caption = "Run the analysis and view the results"
+ BeginProperty Font
+ Name = "Arial"
+ Size = 8.25
+ Charset = 0
+ Weight = 700
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ Height = 195
+ Left = 2880
+ TabIndex = 96
+ Tag = "1400"
+ Top = 240
+ Width = 4905
+ WordWrap = -1 'True
+ End
+ Begin VB.Label lblNumPPT
+ Caption = "<TOPIC> Presentations"
+ Height = 255
+ Left = 4620
+ TabIndex = 88
+ Tag = "1409"
+ Top = 2280
+ Width = 3375
+ End
+ Begin VB.Label lblNumPOT
+ Caption = "<TOPIC> Templates"
+ Height = 255
+ Left = 4620
+ TabIndex = 87
+ Tag = "1403"
+ Top = 2550
+ Width = 3375
+ End
+ Begin VB.Label lblNumXLS
+ Caption = "<TOPIC> Spreadsheets"
+ Height = 255
+ Left = 4620
+ TabIndex = 86
+ Tag = "1408"
+ Top = 1680
+ Width = 3375
+ End
+ Begin VB.Label lblNumXLT
+ Caption = "<TOPIC> Templates"
+ Height = 255
+ Left = 4620
+ TabIndex = 85
+ Tag = "1403"
+ Top = 1950
+ Width = 3375
+ End
+ Begin VB.Label Label16
+ AutoSize = -1 'True
+ Caption = "PowerPoint"
+ Height = 195
+ Left = 3360
+ TabIndex = 82
+ Tag = "1213"
+ Top = 2280
+ Width = 1095
+ WordWrap = -1 'True
+ End
+ Begin VB.Label Label13
+ Caption = "Word"
+ Height = 705
+ Index = 10
+ Left = 0
+ TabIndex = 81
+ Tag = "1207"
+ Top = 0
+ Width = 1245
+ End
+ Begin VB.Label Label13
+ Caption = "Excel"
+ Height = 705
+ Index = 9
+ Left = 0
+ TabIndex = 80
+ Tag = "1210"
+ Top = 810
+ Width = 1245
+ End
+ Begin VB.Label Label13
+ Caption = "PowerPoint"
+ Height = 585
+ Index = 8
+ Left = 0
+ TabIndex = 79
+ Tag = "1213"
+ Top = 1620
+ Width = 1245
+ End
+ Begin VB.Label Label13
+ Caption = "Word"
+ Height = 585
+ Index = 7
+ Left = 0
+ TabIndex = 78
+ Tag = "1207"
+ Top = 0
+ Width = 1245
+ End
+ Begin VB.Label Label13
+ Caption = "Excel"
+ Height = 585
+ Index = 6
+ Left = 0
+ TabIndex = 77
+ Tag = "1210"
+ Top = 810
+ Width = 1245
+ End
+ Begin VB.Label Label13
+ Caption = "PowerPoint"
+ Height = 465
+ Index = 4
+ Left = 0
+ TabIndex = 76
+ Tag = "1213"
+ Top = 1620
+ Width = 1245
+ End
+ Begin VB.Label lblNumTemplates
+ Caption = "<TOPIC> Templates"
+ Height = 255
+ Left = 4620
+ TabIndex = 52
+ Tag = "1403"
+ Top = 1350
+ Width = 3375
+ End
+ Begin VB.Label lblNumDocs
+ Caption = "<TOPIC> Documents"
+ Height = 255
+ Left = 4620
+ TabIndex = 51
+ Tag = "1402"
+ Top = 1080
+ Width = 3375
+ End
+ Begin VB.Line Line6
+ BorderColor = &H00808080&
+ X1 = 2640
+ X2 = 8040
+ Y1 = 3270
+ Y2 = 3270
+ End
+ Begin VB.Label Label15
+ AutoSize = -1 'True
+ Caption = "Excel"
+ Height = 195
+ Left = 3360
+ TabIndex = 50
+ Tag = "1210"
+ Top = 1680
+ Width = 1095
+ WordWrap = -1 'True
+ End
+ Begin VB.Label Label14
+ AutoSize = -1 'True
+ Caption = "Word"
+ Height = 195
+ Left = 3360
+ TabIndex = 49
+ Tag = "1207"
+ Top = 1080
+ Width = 1110
+ WordWrap = -1 'True
+ End
+ Begin VB.Label lblTotalNumDocs
+ AutoSize = -1 'True
+ Caption = "A total of <TOPIC> documents will be analyzed:"
+ Height = 195
+ Left = 3180
+ TabIndex = 48
+ Tag = "1401"
+ Top = 660
+ Width = 4800
+ WordWrap = -1 'True
+ End
+ Begin VB.Line Line2
+ BorderColor = &H00808080&
+ Index = 3
+ X1 = 2550
+ X2 = 2550
+ Y1 = 0
+ Y2 = 4920
+ End
+ End
+ Begin VB.PictureBox picNav
+ Align = 2 'Align Bottom
+ Appearance = 0 'Flat
+ BorderStyle = 0 'None
+ BeginProperty Font
+ Name = "MS Sans Serif"
+ Size = 8.25
+ Charset = 0
+ Weight = 400
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ ForeColor = &H80000008&
+ Height = 570
+ Left = 0
+ ScaleHeight = 570
+ ScaleWidth = 8175
+ TabIndex = 4
+ TabStop = 0 'False
+ Top = 4950
+ Width = 8175
+ Begin VB.CommandButton cmdNav
+ Caption = "Finish"
+ Height = 312
+ Index = 4
+ Left = 5325
+ MaskColor = &H00000000&
+ TabIndex = 14
+ Tag = "1023"
+ Top = 120
+ Width = 1320
+ End
+ Begin VB.CommandButton cmdNav
+ Caption = "Next >>"
+ Height = 312
+ Index = 3
+ Left = 3870
+ MaskColor = &H00000000&
+ TabIndex = 13
+ Tag = "1022"
+ Top = 120
+ Width = 1320
+ End
+ Begin VB.CommandButton cmdNav
+ Caption = "<< Back"
+ Height = 312
+ Index = 2
+ Left = 2535
+ MaskColor = &H00000000&
+ TabIndex = 12
+ Tag = "1021"
+ Top = 120
+ Width = 1320
+ End
+ Begin VB.CommandButton cmdNav
+ Cancel = -1 'True
+ Caption = "Cancel"
+ Height = 312
+ Index = 1
+ Left = 6750
+ MaskColor = &H00000000&
+ TabIndex = 15
+ Tag = "1024"
+ Top = 120
+ Width = 1320
+ End
+ End
+ Begin VB.Label Label18
+ Caption = "<TOPIC> Documents"
+ Height = 255
+ Left = 0
+ TabIndex = 84
+ Top = 0
+ Width = 2085
+ WordWrap = -1 'True
+ End
+ Begin VB.Label Label17
+ Caption = "<TOPIC> Templates"
+ Height = 255
+ Left = 0
+ TabIndex = 83
+ Top = 390
+ Width = 3615
+ WordWrap = -1 'True
+ End
+ Begin VB.Line Line4
+ BorderColor = &H00808080&
+ X1 = 0
+ X2 = 8160
+ Y1 = 4920
+ Y2 = 4920
+ End
+End
+Attribute VB_Name = "frmWizard"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+' *******************************************************************************
+' *
+' * Copyright 2000, 2010 Oracle and/or its affiliates. All rights reserved. Use of this
+' * product is subject to license terms.
+' *
+' *******************************************************************************
+
+Option Explicit
+
+Const TOPIC_STR = "<TOPIC>"
+Const TOPIC2_STR = "<TOPIC2>"
+Const CR_STR = "<CR>"
+Const CDEBUG_LEVEL_DEFAULT = 1 'Will output all Debug output to analysis.log file
+Const CSUPPORTED_VERSION = 9#
+
+Const NUM_STEPS = 4
+
+Const CAPPNAME_WORD = "Word"
+Const CAPPNAME_EXCEL = "Excel"
+Const CAPPNAME_POWERPOINT = "PowerPoint"
+Const CANALYZING = "Analyzing"
+
+Const BTN_CANCEL = 1
+Const BTN_BACK = 2
+Const BTN_NEXT = 3
+Const BTN_FINISH = 4
+
+Const STEP_INTRO = 0
+Const STEP_1 = 1
+Const STEP_2 = 2
+Const STEP_FINISH = 3
+
+Const DIR_NONE = 0
+Const DIR_BACK = 1
+Const DIR_NEXT = 2
+
+Const CPRODUCTNAME_STR = "<PRODUCTNAME>"
+
+Const CSTR_ANALYSIS_LOG_DONE = "Done"
+
+Const CINPUT_DIR = "indir"
+Const COUTPUT_DIR = "outdir"
+Const CRESULTS_FILE = "resultsfile"
+Const CLOG_FILE = "logfile"
+Const CRESULTS_TEMPLATE = "resultstemplate"
+Const CRESULTS_EXIST = "resultsexist"
+Const CPROMPT_FILE = "promptfile"
+Const COVERWRITE_FILE = "overwritefile"
+Const CAPPEND_FILE = "appendfile"
+Const CNEW_RESULTS_FILE = "newresultsfile"
+Const CINCLUDE_SUBDIRS = "includesubdirs"
+Const CDEBUG_LEVEL = "debuglevel"
+Const CTYPE_WORDDOC = "typeworddoc"
+Const CTYPE_WORDDOT = "typeworddot"
+Const CTYPE_EXCELDOC = "typeexceldoc"
+Const CTYPE_EXCELDOT = "typeexceldot"
+Const CTYPE_PPDOC = "typepowerpointdoc"
+Const CTYPE_PPDOT = "typepowerpointdot"
+Const COUTPUT_TYPE = "outputtype"
+Const COUTPUT_TYPE_XLS = "xls"
+Const COUTPUT_TYPE_XML = "xml"
+Const COUTPUT_TYPE_BOTH = "both"
+Const CVERSION = "version"
+Const CDOPREPARE = "prepare"
+Const CTITLE = "title"
+Const CIGNORE_OLD_DOCS = "ignoreolddocuments"
+Const CISSUE_LIMIT = "issuesmonthlimit"
+Const CISSUE_LIMIT_DAW = 6
+Private mIssueLimit As Integer
+Const CDEFAULT_PASSWORD = "defaultpassword"
+Const CSTR_TEST_PASSWORD = "test"
+Private mDefaultPassword As String
+
+Const CLAST_CHECKPOINT As String = "LastCheckpoint"
+Const CNEXT_FILE As String = "NextFile"
+Const C_ABORT_ANALYSIS As String = "AbortAnalysis"
+
+Const CNUMBER_TOTAL_DOCS = "total_numberdocs"
+Const CNUMBER_DOCS_DOC = "numberdocs_doc"
+Const CNUMBER_TEMPLATES_DOT = "numbertemplates_dot"
+Const CNUMBER_DOCS_XLS = "numberdocs_xls"
+Const CNUMBER_TEMPLATES_XLT = "numbertemplates_xlt"
+Const CNUMBER_DOCS_PPT = "numberdocs_ppt"
+Const CNUMBER_TEMPLATES_POT = "numbertemplates_pot"
+Const CSTART_TIME = "start"
+Const CEND_TIME = "end"
+Const CELAPSED_TIME = "time_for_analysis"
+Const CWINVERSION = "win_version"
+Const CUSER_LOCALE_INFO = "user_locale"
+Const CSYS_LOCALE_INFO = "system_locale"
+Const CWORD_VERSION = "word_ver"
+Const CEXCEL_VERSION = "excel_ver"
+Const CPOWERPOINT_VERSION = "powerpoint_ver"
+Const CNOT_INSTALLED = "not installed"
+
+Const CRESULTS_FILE_EXTENSION = ".xls"
+Const CCONFIG_BACKUP_EXT = "_bak"
+Const CDEFAULT_README_NAME = "UserGuide"
+
+Const C_DOCS_LESS_3_MONTH = "DocumentsYoungerThan3Month"
+Const C_DOCS_LESS_6_MONTH = "DocumentsYoungerThan6Month"
+Const C_DOCS_LESS_12_MONTH = "DocumentsYoungerThan12Month"
+Const C_DOCS_MORE_12_MONTH = "DocumentsOlderThan12Month"
+
+'module level vars
+Dim mnCurStep As Integer
+Dim mbTrue As Boolean
+Dim mbFalse As Boolean
+Dim mLblSteps As String
+Dim mChbSubdirs As String
+
+Dim mWordDocCount As Long
+Dim mExcelDocCount As Long
+Dim mPPDocCount As Long
+
+Dim mWordTemplateCount As Long
+Dim mExcelTemplateCount As Long
+Dim mPPTemplateCount As Long
+Dim mTotalDocCount As Long
+Dim mIgnoredDocCount As Long
+
+Public VBInst As VBIDE.VBE
+Dim mbFinishOK As Boolean
+Dim mbAllowExit As Boolean
+Private mStrTrue As String
+Private mLogFilePath As String
+Private mDebugLevel As String
+Private mIniFilePath As String
+Private mbDocCountCurrent As Boolean
+Private mbDoPrepare As Boolean
+
+Dim mDocFiles As CollectedFiles
+
+Private Declare Sub InitCommonControls Lib "comctl32" ()
+Private Declare Function GetTickCount Lib "kernel32" () As Long
+Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
+
+Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
+
+Private Declare Function FormatMessage Lib "kernel32" Alias _
+ "FormatMessageA" (ByVal dwFlags As Long, lpSource As Long, _
+ ByVal dwMessageId As Long, ByVal dwLanguageId As Long, _
+ ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Any) As Long
+
+
+Private Const HKEY_CURRENT_USER As Long = &H80000001
+Private Const HKEY_LOCAL_MACHINE As Long = &H80000002
+
+Const WORD_APP = "word"
+Const EXCEL_APP = "excel"
+Const PP_APP = "pp"
+Const REG_KEY_APP_PATH = "Software\Microsoft\Windows\CurrentVersion\App Paths\"
+
+
+Function GetAppPath(myApp As String) As String
+ Dim myPath As String
+
+ If (myApp = WORD_APP) Then
+ myPath = GetRegistryInfo(HKEY_LOCAL_MACHINE, REG_KEY_APP_PATH & "winword.exe", "")
+ ElseIf (myApp = EXCEL_APP) Then
+ myPath = GetRegistryInfo(HKEY_LOCAL_MACHINE, REG_KEY_APP_PATH & "excel.exe", "")
+ ElseIf (myApp = PP_APP) Then
+ myPath = GetRegistryInfo(HKEY_LOCAL_MACHINE, REG_KEY_APP_PATH & "powerpnt.exe", "")
+ Else
+ MsgBox "Unknown application: " & myApp, vbCritical
+ Exit Function
+ End If
+
+ If (myPath = "") Then
+ If (myApp = WORD_APP) Then
+ myPath = GetRegistryInfo(HKEY_CURRENT_USER, REG_KEY_APP_PATH & "winword.exe", "")
+ ElseIf (myApp = EXCEL_APP) Then
+ myPath = GetRegistryInfo(HKEY_CURRENT_USER, REG_KEY_APP_PATH & "excel.exe", "")
+ ElseIf (myApp = PP_APP) Then
+ myPath = GetRegistryInfo(HKEY_CURRENT_USER, REG_KEY_APP_PATH & "powerpnt.exe", "")
+ End If
+ End If
+
+ GetAppPath = myPath
+End Function
+
+Function GetDriverDoc(myApp As String) As String
+ Dim myPath As String
+ Dim errStr As String
+ Dim fso As New FileSystemObject
+
+ If (myApp = WORD_APP) Then
+ myPath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CWORD_DRIVER_FILE)
+ ElseIf (myApp = EXCEL_APP) Then
+ myPath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CEXCEL_DRIVER_FILE)
+ ElseIf (myApp = PP_APP) Then
+ myPath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CPP_DRIVER_FILE)
+ Else
+ MsgBox "Unknown application: " & myApp, vbCritical
+ GoTo FinalExit
+ End If
+
+ If Not fso.FileExists(myPath) Then
+ errStr = ReplaceTopic2Tokens(GetResString(ERR_MISSING_WORD_DRIVER), _
+ TOPIC_STR, myPath, CR_STR, Chr(13))
+ WriteDebug errStr
+ MsgBox errStr, vbCritical
+ GoTo FinalExit
+ End If
+
+ GetDriverDoc = myPath
+
+FinalExit:
+ Set fso = Nothing
+End Function
+
+
+
+
+Private Function AutomationMessageText(lCode As Long) As String
+ Dim sRtrnCode As String
+ Dim lRet As Long
+
+ sRtrnCode = Space$(256)
+ lRet = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0&, lCode, 0&, _
+ sRtrnCode, 256&, 0&)
+ If lRet > 0 Then
+ AutomationMessageText = Left(sRtrnCode, lRet)
+ Else
+ AutomationMessageText = "Error not found."
+ End If
+
+End Function
+
+Private Sub btnBrowseDirInput_Click()
+ Dim folder As String
+ Dim StartDir As String
+
+ If Len(txtInputDir.Text) > 0 Then
+ StartDir = txtInputDir.Text
+ End If
+
+ folder = BrowseForFolder(Me, GetResString(BROWSE_FOR_DOC_DIR_ID), StartDir)
+ If Len(folder) = 0 Then
+ Exit Sub 'User Selected Cancel
+ End If
+ txtInputDir.Text = folder
+ txtInputDir.ToolTipText = folder
+
+ If Len(txtOutputDir.Text) = 0 Then
+ txtOutputDir.Text = folder
+ txtOutputDir.ToolTipText = folder
+ End If
+End Sub
+
+Private Sub btnBrowseDirOut_Click()
+ Dim folder As String
+ Dim StartDir As String
+
+ If Len(txtOutputDir.Text) > 0 Then
+ StartDir = txtOutputDir.Text
+ End If
+
+ folder = BrowseForFolder(Me, GetResString(BROWSE_FOR_RES_DIR_ID), StartDir)
+ If Len(folder) = 0 Then
+ Exit Sub 'User Selected Cancel
+ End If
+ txtOutputDir.Text = folder
+ txtOutputDir.ToolTipText = folder
+End Sub
+
+Private Sub btnPrepare_Click()
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "btnPrepare_Click"
+
+ mbDoPrepare = True
+ mbAllowExit = True
+
+ btnViewResults.Enabled = False
+ btnRunAnalysis.Enabled = False
+ btnPrepare.Enabled = False
+
+ cmdNav(BTN_CANCEL).Enabled = False
+ cmdNav(BTN_BACK).Enabled = False
+ cmdNav(BTN_NEXT).Enabled = False
+ cmdNav(BTN_FINISH).Enabled = False
+ btnPrepare.Caption = GetResString(RUNBTN_RUNNING_ID)
+
+ Dim str As String
+
+ If RunAnalysis(True) Then
+ cmdNav(BTN_FINISH).Enabled = True
+ btnRunAnalysis.Enabled = True
+ btnViewResults.Enabled = True
+ btnPrepare.Enabled = True
+ btnViewResults.SetFocus
+ str = ReplaceTopic2Tokens(GetResString(RID_STR_ENG_OTHER_PREPARE_COMPLETED_PREP_ID), _
+ TOPIC_STR, getOutputDir, CR_STR, Chr(13))
+ MsgBox str, vbInformation
+ Else
+ cmdNav(BTN_FINISH).Enabled = False
+ btnRunAnalysis.Enabled = True
+ btnViewResults.Enabled = False
+ btnPrepare.Enabled = False
+ End If
+
+FinalExit:
+ mbDoPrepare = False
+ cmdNav(BTN_CANCEL).Enabled = True
+ cmdNav(BTN_BACK).Enabled = True
+ cmdNav(BTN_NEXT).Enabled = False
+ btnPrepare.Caption = GetResString(PREPAREBTN_START_ID)
+ Exit Sub
+
+HandleErrors:
+ cmdNav(BTN_FINISH).Enabled = False
+ btnRunAnalysis.Enabled = True
+ btnViewResults.Enabled = False
+ btnPrepare.Enabled = False
+
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+
+Private Sub cmdNav_Click(Index As Integer)
+ On Error GoTo HandleError
+ Dim currentFunctionName As String
+ currentFunctionName = "cmdNav_Click"
+ Dim nAltStep As Integer
+ Dim rc As Long
+ Dim fso As Scripting.FileSystemObject
+
+ Select Case Index
+ Case BTN_CANCEL
+ 'Copy backup configuration file over existing
+ If fso Is Nothing Then
+ Set fso = New Scripting.FileSystemObject
+ End If
+ If fso.FileExists(mIniFilePath & CCONFIG_BACKUP_EXT) Then
+ DeleteFile mIniFilePath
+ AttemptToCopyFile mIniFilePath & CCONFIG_BACKUP_EXT, mIniFilePath
+ End If
+ Set mDocFiles = Nothing
+
+ Unload Me
+
+ Case BTN_BACK
+ nAltStep = mnCurStep - 1
+ SetStep nAltStep, DIR_BACK
+
+ Case BTN_NEXT
+ nAltStep = mnCurStep + 1
+ SetStep nAltStep, DIR_NEXT
+
+ Case BTN_FINISH
+ If (Not mbAllowExit) Then
+ Dim str As String
+ Dim response As Integer
+
+ str = ReplaceTopicTokens(GetResString(RID_STR_ENG_ANALYSE_NOT_RUN), CR_STR, Chr(13))
+ response = MsgBox(str, vbOKCancel + vbInformation)
+ If response = vbOK Then ' User chose Ok.
+ mbAllowExit = True
+ End If
+ End If
+
+ If (mbAllowExit) Then
+ DeleteFile mIniFilePath & CCONFIG_BACKUP_EXT
+ Set mDocFiles = Nothing
+ Unload Me
+ End If
+ End Select
+
+FinalExit:
+ Set fso = Nothing
+ Exit Sub
+
+HandleError:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+
+ Resume FinalExit
+End Sub
+
+Private Sub btnRunAnalysis_Click()
+ On Error GoTo HandleErrors
+ Dim bViewResults As Boolean
+ Dim str As String
+ Dim response As Integer
+
+ btnViewResults.Enabled = False
+ btnRunAnalysis.Enabled = False
+ btnPrepare.Enabled = False
+ bViewResults = False
+ mbAllowExit = True
+
+ cmdNav(BTN_CANCEL).Enabled = False
+ cmdNav(BTN_BACK).Enabled = False
+ cmdNav(BTN_NEXT).Enabled = False
+ cmdNav(BTN_FINISH).Enabled = False
+ btnRunAnalysis.Caption = GetResString(RUNBTN_RUNNING_ID)
+
+ If RunAnalysis(False) Then
+ cmdNav(BTN_FINISH).Enabled = True
+ btnRunAnalysis.Enabled = True
+ btnViewResults.Enabled = True
+ btnPrepare.Enabled = True
+ btnViewResults.SetFocus
+ btnRunAnalysis.Caption = GetResString(RUNBTN_START_ID)
+
+ str = ReplaceTopicTokens(GetResString(RID_STR_ENG_ANALYZE_COMPLETED_ID), CR_STR, Chr(13))
+ response = MsgBox(str, vbOKCancel + vbInformation)
+ If response = vbOK Then ' User chose Ok.
+ bViewResults = True
+ End If
+ Else
+ btnRunAnalysis.Enabled = True
+ btnViewResults.Enabled = False
+ btnPrepare.Enabled = False
+ End If
+
+FinalExit:
+ cmdNav(BTN_CANCEL).Enabled = True
+ cmdNav(BTN_BACK).Enabled = True
+ cmdNav(BTN_NEXT).Enabled = False
+ btnRunAnalysis.Caption = GetResString(RUNBTN_START_ID)
+
+ If bViewResults Then
+ btnViewResults_Click
+ End If
+
+ Exit Sub
+
+HandleErrors:
+ cmdNav(BTN_FINISH).Enabled = False
+ btnRunAnalysis.Enabled = True
+ btnViewResults.Enabled = False
+ btnPrepare.Enabled = False
+ WriteDebug "Document Analysis: View Analysis Results" & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Private Sub btnViewResults_Click()
+ On Error GoTo HandleErrors
+ Dim resultsFile As String
+ Dim fso As New FileSystemObject
+ Dim str As String
+
+ mbAllowExit = True
+
+ resultsFile = getOutputDir & "\" & txtResultsName.Text
+
+ If GetIniSetting(COUTPUT_TYPE) = COUTPUT_TYPE_XML Or _
+ GetIniSetting(COUTPUT_TYPE) = COUTPUT_TYPE_BOTH Then
+
+ Dim base As String
+ Dim path As String
+ base = fso.GetParentFolderName(resultsFile) & "\" & fso.GetBaseName(txtResultsName.Text)
+ If CheckWordDocsToAnalyze Then
+ path = base & "_" & CAPPNAME_WORD & "." & COUTPUT_TYPE_XML
+ End If
+ If CheckExcelDocsToAnalyze Then
+ If path <> "" Then path = path & vbLf
+ path = path & base & "_" & CAPPNAME_EXCEL & "." & COUTPUT_TYPE_XML
+ End If
+ If CheckPPDocsToAnalyze Then
+ If path <> "" Then path = path & vbLf
+ path = path & base & "_" & CAPPNAME_POWERPOINT & "." & COUTPUT_TYPE_XML
+ End If
+
+ str = ReplaceTopic2Tokens(GetResString(XML_RESULTS_ID), _
+ TOPIC_STR, path, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbInformation
+ If GetIniSetting(COUTPUT_TYPE) = COUTPUT_TYPE_XML Then
+ Resume FinalExit
+ End If
+ End If
+
+ If Not fso.FileExists(resultsFile) Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_MISSING_RESULTS_DOC), _
+ TOPIC_STR, resultsFile, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ Resume FinalExit
+ End If
+
+ Dim xl As Excel.application
+ Set xl = New Excel.application
+ xl.Visible = True
+ xl.Workbooks.Open resultsFile
+
+FinalExit:
+ Set xl = Nothing
+ Set fso = Nothing
+
+ Exit Sub
+HandleErrors:
+ WriteDebug "Document Analysis: View Analysis Results" & Err.Number & " " & Err.Description & " " & Err.Source
+End Sub
+
+Private Sub Form_Activate()
+ Dim currentFunctionName As String
+ Dim missingFile As String
+ currentFunctionName = "Form_Activate"
+ On Error GoTo HandleErrors
+
+ If Not CheckNeededFiles(missingFile) Then
+ Dim str As String
+ str = ReplaceTopic2Tokens(GetResString(ERR_MISSING_WORD_DRIVER), _
+ TOPIC_STR, missingFile, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+
+ End 'Exit application - some needed files are missing
+ End If
+
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ GoTo FinalExit
+End Sub
+
+Private Sub Form_Initialize()
+ Dim currentFunctionName As String
+ currentFunctionName = "Form_Initialize"
+ On Error GoTo ErrorHandler
+ Call InitCommonControls 'Use Windows XP Visual Style
+
+FinalExit:
+ Exit Sub
+
+ErrorHandler:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ GoTo FinalExit
+End Sub
+
+Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
+ If KeyCode = vbKeyF1 Then
+ 'cmdNav_Click BTN_HELP
+ End If
+End Sub
+
+Private Sub Form_Load()
+ Const COS_CHECK = "oscheck"
+
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "Form_Load"
+
+ Dim fso As New FileSystemObject
+ Dim i As Integer
+ 'init all vars
+ mbFinishOK = False
+ mbTrue = True
+ mbFalse = False
+
+ mLogFilePath = GetLogFilePath
+ mIniFilePath = GetIniFilePath
+ mbDocCountCurrent = False
+ mbDoPrepare = False
+ mbAllowExit = False
+
+ 'Check OS before running
+ Dim bOSCheck As Boolean
+ bOSCheck = IIf(GetIniSetting(COS_CHECK) = "False", False, True)
+
+ If bOSCheck Then
+ If Not IsWin98Plus Then
+ Dim str As String
+ Dim winVer As RGB_WINVER
+ str = ReplaceTopic2Tokens(GetResString(ERR_SUPPORTED_OSVERSION), _
+ TOPIC_STR, GetWinVersion(winVer), CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+
+ End 'Exit application - unsupported OS
+ End If
+ Else
+ Err.Clear
+ WriteDebug "IsWin2000Plus OS Check bypassed by analysis.ini oscheck=False setting"
+ End If
+
+
+ For i = 0 To NUM_STEPS - 1
+ fraStep(i).Left = -10000
+ Next
+
+ 'Load All string info for Form
+ LoadResStrings Me
+
+ frmWizard.Caption = ReplaceTopicTokens(GetResString(TITLE_ID), CPRODUCTNAME_STR, _
+ GetResString(PRODUCTNAME_ID))
+ lblIntroduction1.Caption = ReplaceTopicTokens(GetResString(INTRO1_ID), CPRODUCTNAME_STR, _
+ GetResString(PRODUCTNAME_ID))
+ mLblSteps = GetResString(LBL_STEPS_ID)
+ mChbSubdirs = GetResString(CHK_SUBDIRS_ID)
+
+ ' Setup Doc Preparation specific strings
+ If gBoolPreparation Then
+ ' Steps
+ lblStep1_4.Caption = GetResString(RID_STR_ENG_SIDEBAR_ANALYZE_PREP_ID)
+ lblStep2_4.Caption = GetResString(RID_STR_ENG_SIDEBAR_ANALYZE_PREP_ID)
+ lblStep3_4.Caption = GetResString(RID_STR_ENG_SIDEBAR_ANALYZE_PREP_ID)
+ lblStep4_4.Caption = GetResString(RID_STR_ENG_SIDEBAR_ANALYZE_PREP_ID)
+
+ ' Preparation - Step 1. Introduction
+ lblIntroduction1.Caption = ReplaceTopicTokens(GetResString(RID_STR_ENG_INTRODUCTION_INTRO1_PREP_ID), CPRODUCTNAME_STR, _
+ GetResString(PRODUCTNAME_ID))
+ lblIntroduction2.Caption = GetResString(RID_STR_ENG_INTRODUCTION_INTRO2_PREP_ID)
+ lblIntroduction3.Caption = GetResString(RID_STR_ENG_INTRODUCTION_INTRO3_PREP_ID)
+
+ ' Preparation - Step 2. Documents
+ lblChooseDocs.Caption = GetResString(RID_STR_ENG_DOCUMENTS_CHOOSE_DOCUMENTS_PREP_ID)
+ lblDocTypes.Caption = GetResString(RID_STR_ENG_DOCUMENTS_CHOOSE_DOC_TYPES_PREP_ID)
+ 'mChbSubdirs = GetResString(RID_STR_ENG_DOCUMENTS_INCLUDE_SUBDIRECTORIES_PREP_ID)
+ chkIgnoreOld.Caption = GetResString(RID_STR_IGNORE_OLDER_CB_ID)
+
+ cbIgnoreOld.Clear
+ cbIgnoreOld.AddItem (GetResString(RID_STR_IGNORE_OLDER_3_MONTHS_ID))
+ cbIgnoreOld.AddItem (GetResString(RID_STR_IGNORE_OLDER_6_MONTHS_ID))
+ cbIgnoreOld.AddItem (GetResString(RID_STR_IGNORE_OLDER_12_MONTHS_ID))
+ cbIgnoreOld.ListIndex = 0
+
+ ' Preparation - Step 3. Results
+ lblChooseResults.Caption = GetResString(RID_STR_ENG_RESULTS_CHOOSE_OPTIONS_PREP_ID)
+ txtResultsName.Text = GetResString(RID_STR_ENG_RESULTS_ANALYSIS_XLS_PREP_ID)
+
+ 'Show Append option
+ rdbResultsAppend.Visible = True
+
+ ' Preparation - Step 4. Analysis
+ lblSetupDone.Caption = GetResString(RID_STR_ENG_ANALYZE_SETUP_COMPLETE_PREP_ID)
+ btnPrepare.Visible = True
+ Else
+ ' The next line is a work around for a wrong translated string and should be removed
+ ' when RID_STR_ENG_RESULTS_CHOOSE_OPTIONS has been corrected
+ lblChooseResults.Caption = GetResString(RID_STR_ENG_RESULTS_CHOOSE_OPTIONS_PREP_ID)
+ mDefaultPassword = IIf(GetIniSetting(CDEFAULT_PASSWORD) = "", _
+ CSTR_TEST_PASSWORD, GetIniSetting(CDEFAULT_PASSWORD))
+ End If
+
+ SetStep 0, DIR_NEXT
+ Dim tmpStr As String
+
+ 'Setup Params
+ tmpStr = GetIniSetting(CINPUT_DIR)
+ If tmpStr <> "" Then
+ txtInputDir.Text = tmpStr
+ txtInputDir.ToolTipText = tmpStr
+ End If
+ tmpStr = GetIniSetting(COUTPUT_DIR)
+ If tmpStr <> "" Then
+ If Right(tmpStr, 1) = ":" And Len(tmpStr) = 2 Then
+ tmpStr = tmpStr & "\"
+ End If
+ txtOutputDir.Text = tmpStr
+ txtOutputDir.ToolTipText = tmpStr
+ End If
+ tmpStr = GetIniSetting(CRESULTS_FILE)
+ If tmpStr <> "" Then txtResultsName.Text = tmpStr
+
+ rdbResultsPrompt.value = False
+ rdbResultsOverwrite.value = False
+ rdbResultsAppend.value = False
+ Dim resultsSetting As String
+ resultsSetting = GetIniSetting(CRESULTS_EXIST)
+ If resultsSetting = CPROMPT_FILE Then
+ rdbResultsPrompt.value = True
+ ElseIf resultsSetting = CAPPEND_FILE Then
+ rdbResultsAppend.value = True
+ Else
+ rdbResultsOverwrite.value = True
+ End If
+
+ chkWordDoc.value = IIf(GetIniSetting(CTYPE_WORDDOC) = CStr(True), vbChecked, 0)
+ chkWordTemplate.value = IIf(GetIniSetting(CTYPE_WORDDOT) = CStr(True), vbChecked, 0)
+ chkExcelDoc.value = IIf(GetIniSetting(CTYPE_EXCELDOC) = CStr(True), vbChecked, 0)
+ chkExcelTemplate.value = IIf(GetIniSetting(CTYPE_EXCELDOT) = CStr(True), vbChecked, 0)
+ chkPPDoc.value = IIf(GetIniSetting(CTYPE_PPDOC) = CStr(True), vbChecked, 0)
+ chkPPTemplate.value = IIf(GetIniSetting(CTYPE_PPDOT) = CStr(True), vbChecked, 0)
+ chkIncludeSubdirs.value = IIf(GetIniSetting(CINCLUDE_SUBDIRS) = CStr(True), vbChecked, 0)
+ mDebugLevel = IIf(GetIniSetting(CDEBUG_LEVEL) = "", CDEBUG_LEVEL_DEFAULT, GetIniSetting(CDEBUG_LEVEL))
+ chkIgnoreOld.value = IIf(GetIniSetting(CIGNORE_OLD_DOCS) = CStr(True), vbChecked, 0)
+
+ mIssueLimit = IIf(GetIniSetting(CISSUE_LIMIT) = "", CISSUE_LIMIT_DAW, GetIniSetting(CISSUE_LIMIT))
+ If (mIssueLimit <= 3) Then
+ cbIgnoreOld.ListIndex = 0
+ ElseIf (mIssueLimit <= 6) Then
+ cbIgnoreOld.ListIndex = 1
+ Else
+ cbIgnoreOld.ListIndex = 2
+ End If
+
+ 'Always ensure at least one doc type is selected on startup
+ If (chkWordDoc.value <> vbChecked) And _
+ (chkWordTemplate.value <> vbChecked) And _
+ (chkExcelDoc.value <> vbChecked) And _
+ (chkExcelTemplate.value <> vbChecked) And _
+ (chkPPDoc.value <> vbChecked) And _
+ (chkPPTemplate.value <> vbChecked) Then
+
+ chkWordDoc.value = vbChecked
+ End If
+
+FinalExit:
+ Set fso = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Private Sub SetStep(nStep As Integer, nDirection As Integer)
+ On Error GoTo HandleError
+ Const driveTypeIsCDROM = 4
+ Dim val As String
+ Dim fso As Scripting.FileSystemObject
+ Set fso = New Scripting.FileSystemObject
+ Dim drive
+
+
+ mbDocCountCurrent = False
+
+ Select Case nStep
+ Case STEP_INTRO
+ 'MsgBox "Enter Intro"
+ Case STEP_1
+ 'Leave Introduction
+ 'Workaround - resource bug for SubDir checkbox, have to set it explicitly
+ chkIncludeSubdirs.Caption = mChbSubdirs
+ Case STEP_2
+ 'Leave Documents
+
+ Set drive = fso.GetDrive(fso.GetDriveName(txtInputDir.Text))
+ If drive.DriveType = driveTypeIsCDROM Then
+ If Not drive.IsReady Then
+ MsgBox GetResString(ERR_CDROM_NOT_READY), vbCritical
+ Exit Sub
+ End If
+ End If
+
+ If txtInputDir.Text = "" Or Not fso.FolderExists(txtInputDir.Text) Then ' fso.FolderExists() has replaced dir()
+ MsgBox ReplaceTopicTokens(GetResString(ERR_NO_DOC_DIR), _
+ CR_STR, Chr(13)), vbCritical
+ Exit Sub
+ End If
+
+ If Not CheckUserChosenDocsToAnalyze Then
+ MsgBox GetResString(ERR_NO_DOC_TYPES), vbCritical
+ Exit Sub
+ End If
+ 'Expand directory name only without path to full path
+ txtInputDir.Text = fso.GetAbsolutePathName(txtInputDir.Text)
+
+ If txtOutputDir.Text = "" Then
+ txtOutputDir.Text = txtInputDir.Text
+ End If
+
+ mbFinishOK = False
+
+ 'Workaround - label resource bug for Steps, have to set it explicitly
+ Label12(0).Caption = mLblSteps
+ Label12(5).Caption = mLblSteps
+ Case STEP_FINISH
+ 'Leave Results
+ If Not CheckResultsDir(getOutputDir) Then
+ Exit Sub
+ End If
+
+ 'Expand directory name only without path to full path
+ txtOutputDir.Text = fso.GetAbsolutePathName(txtOutputDir)
+
+ 'Check Results file is there and has a valid extension
+ If fso.GetBaseName(txtResultsName.Text) = "" Then
+ txtResultsName.Text = GetResString(SETUP_ANALYSIS_XLS_ID)
+ End If
+ txtResultsName.Text = fso.GetBaseName(txtResultsName.Text) & CRESULTS_FILE_EXTENSION
+
+ Screen.MousePointer = vbHourglass
+ DeleteFile mLogFilePath
+ Set mDocFiles = Nothing
+ If Not CheckNumberDocsToAnalyze Then
+ Screen.MousePointer = vbDefault
+ Exit Sub
+ End If
+
+ Screen.MousePointer = vbDefault
+
+ btnRunAnalysis.Enabled = True
+
+ If GetNumberOfDocsToAnalyze = 0 Then
+ btnRunAnalysis.Enabled = False
+ End If
+
+ 'Backup configuration
+ If Not AttemptToCopyFile(mIniFilePath, mIniFilePath & CCONFIG_BACKUP_EXT) Then
+ Exit Sub
+ End If
+
+ 'Save current Wizard Settings
+ WriteWizardSettingsToLog mIniFilePath
+
+ 'If results file already exists, enable View and Prepare
+ If fso.FileExists(getOutputDir & "\" & txtResultsName.Text) Then
+ btnViewResults.Enabled = True
+ btnPrepare.Enabled = True
+ End If
+
+ mbFinishOK = True
+ End Select
+
+ 'move to new step
+ fraStep(mnCurStep).Enabled = False
+ fraStep(nStep).Left = 0
+ If nStep <> mnCurStep Then
+ fraStep(mnCurStep).Left = -10000
+ fraStep(mnCurStep).Enabled = False
+ End If
+ fraStep(nStep).Enabled = True
+
+ SetNavBtns nStep
+ Exit Sub
+
+FinalExit:
+ Set fso = Nothing
+ Set drive = Nothing
+ Exit Sub
+
+HandleError:
+ Screen.MousePointer = vbDefault
+ WriteDebug "Document Analysis: SetStep() " & Err.Number & " " & Err.Description & " " & Err.Source
+
+ Resume FinalExit
+End Sub
+
+Function CheckResultsDir(resultsDir As String) As Boolean
+ On Error GoTo HandleError
+ Dim fso As Scripting.FileSystemObject
+ Set fso = New Scripting.FileSystemObject
+ Const driveTypeIsCDROM = 4
+ Const readOnlyFolderRemainder = 1
+ Dim drive
+ CheckResultsDir = False
+
+ If resultsDir = "" Then
+ MsgBox ReplaceTopicTokens(GetResString(ERR_NO_RESULTS_DIRECTORY), _
+ CR_STR, Chr(13)), vbCritical
+ CheckResultsDir = False
+ Exit Function
+ End If
+
+ Set drive = fso.GetDrive(fso.GetDriveName(resultsDir))
+ If drive.DriveType = driveTypeIsCDROM Then 'If CD-ROM Drive Then
+ Dim Msg1 As String
+ Msg1 = ReplaceTopic2Tokens(GetResString(ERR_CREATE_FILE), _
+ TOPIC_STR, txtResultsName.Text, CR_STR, Chr(13))
+ MsgBox Msg1, vbCritical
+ CheckResultsDir = False
+ Exit Function
+ End If
+
+
+ If Not fso.FolderExists(resultsDir) Then
+ Dim Msg, Style, response
+
+ Msg = ReplaceTopicTokens(GetResString(ERR_NO_RES_DIR), CR_STR, Chr(13))
+ Style = vbYesNo + vbQuestion + vbDefaultButton1 ' Define buttons.
+
+ response = MsgBox(Msg, Style)
+ If response = vbYes Then ' User chose Yes.
+ If Not CreateDir(getOutputDir) Then
+ CheckResultsDir = False
+ Exit Function
+ End If
+ Else ' User chose No.
+ CheckResultsDir = False
+ Exit Function
+ End If
+ End If
+
+ Dim testFile As String
+ testFile = resultsDir & "\" & fso.GetTempName
+ Do While fso.FileExists(testFile)
+ testFile = resultsDir & "\" & fso.GetTempName
+ Loop
+
+ On Error GoTo HandleReadOnly
+ Dim aText As TextStream
+ Set aText = fso.CreateTextFile(testFile, False, False)
+ aText.WriteLine ("Dies ist ein Test.")
+ aText.Close
+ fso.DeleteFile (testFile)
+
+' GetAttr doesn't work reliable ( returns read only for 'my Documents' and rw for read only network folder
+' If ((GetAttr(resultsDir) Mod 2) = readOnlyFolderRemainder) Then 'If the attribute is odd then the folder is read-only
+' MsgBox GetResString(ERR_NO_WRITE_TO_READ_ONLY_FOLDER), vbCritical
+' CheckResultsDir = False
+' Exit Function
+' End If
+
+ CheckResultsDir = True
+
+ Exit Function
+HandleError:
+ WriteDebug "Document Analysis: CheckResultsDir() " & Err.Number & " " & Err.Description & " " & Err.Source
+ CheckResultsDir = False
+ Exit Function
+HandleReadOnly:
+ Dim str As String
+ str = ReplaceTopic2Tokens(GetResString(ERR_CREATE_FILE), _
+ TOPIC_STR, txtResultsName.Text, CR_STR, Chr(13))
+ MsgBox str, vbCritical
+ CheckResultsDir = False
+ Exit Function
+End Function
+
+Function CheckUserChosenDocsToAnalyze() As Boolean
+ CheckUserChosenDocsToAnalyze = Not ((chkWordDoc.value <> vbChecked) And (chkWordTemplate.value <> vbChecked) And _
+ (chkExcelDoc.value <> vbChecked) And (chkExcelTemplate.value <> vbChecked) And _
+ (chkPPDoc.value <> vbChecked) And (chkPPTemplate.value <> vbChecked))
+End Function
+
+Function AttemptToCopyFile(Source As String, dest As String) As Boolean
+ On Error GoTo HandleErrors
+ Dim fso As Scripting.FileSystemObject
+ Set fso = New Scripting.FileSystemObject
+
+ If fso.FileExists(Source) Then
+ fso.CopyFile Source, dest
+ End If
+
+ 'True if no source or copy succeded
+ AttemptToCopyFile = True
+
+FinalExit:
+ Set fso = Nothing
+ Exit Function
+
+HandleErrors:
+ AttemptToCopyFile = False
+ Dim str As String
+ str = ReplaceTopic2Tokens(GetResString(ERR_CREATE_FILE), _
+ TOPIC_STR, mIniFilePath & CCONFIG_BACKUP_EXT, CR_STR, Chr(13))
+ Resume FinalExit
+
+End Function
+
+Function CreateDir(dir As String) As Boolean
+ On Error GoTo HandleErrors
+ Dim fso As Scripting.FileSystemObject
+ Set fso = New Scripting.FileSystemObject
+
+ fso.CreateFolder (dir)
+
+ CreateDir = True
+
+FinalExit:
+ Set fso = Nothing
+ Exit Function
+
+HandleErrors:
+ Dim str As String
+ str = ReplaceTopic2Tokens(GetResString(ERR_CREATE_DIR), _
+ TOPIC_STR, dir, CR_STR, Chr(13))
+ Select Case Err.Number
+ Case 76
+ WriteDebug str
+ MsgBox str, vbCritical
+ CreateDir = False
+ Case 58
+ 'Don't care if it exists already
+ CreateDir = True
+ Case Else
+ WriteDebug str
+ MsgBox str, vbCritical
+ CreateDir = False
+ End Select
+ Resume FinalExit
+
+End Function
+Private Sub SetNavBtns(nStep As Integer)
+ mnCurStep = nStep
+
+ If mnCurStep = 0 Then
+ cmdNav(BTN_BACK).Enabled = False
+ cmdNav(BTN_NEXT).Enabled = True
+ ElseIf mnCurStep = NUM_STEPS - 1 Then
+ cmdNav(BTN_NEXT).Enabled = False
+ cmdNav(BTN_BACK).Enabled = True
+ Else
+ cmdNav(BTN_BACK).Enabled = True
+ cmdNav(BTN_NEXT).Enabled = True
+ End If
+
+ If mbFinishOK Then
+ cmdNav(BTN_FINISH).Enabled = True
+ Else
+ cmdNav(BTN_FINISH).Enabled = False
+ End If
+End Sub
+Function CheckForSupportedApp(app As String, lowerVerLimit As Long) As Boolean
+ Dim appRegStr As String
+ Dim appVer As Long
+ appRegStr = GetRegistryInfo(HKEY_CLASSES_ROOT, app & ".Application\CurVer", "")
+ appVer = val(Right(appRegStr, Len(appRegStr) - Len(app & ".Application.")))
+ If appVer >= lowerVerLimit Then
+ CheckForSupportedApp = True
+ Else
+ CheckForSupportedApp = False
+ End If
+End Function
+Function GetAppVersion(app As String) As Long
+ Dim appRegStr As String
+ Dim appVer As Long
+ appRegStr = GetRegistryInfo(HKEY_CLASSES_ROOT, app & ".Application\CurVer", "")
+ GetAppVersion = val(Right(appRegStr, Len(appRegStr) - Len(app & ".Application.")))
+End Function
+Function GetInstalledApp(app As String) As String
+ GetInstalledApp = GetRegistryInfo(HKEY_CLASSES_ROOT, app & ".Application\CurVer", "")
+End Function
+
+Sub WriteInfoToApplicationLog(wordAppStr As String, excelAppStr As String, ppAppStr As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteInfoToApplicationLog"
+
+ Dim userLCID As Long
+ userLCID = GetUserDefaultLCID()
+ Dim sysLCID As Long
+ sysLCID = GetSystemDefaultLCID()
+
+ WriteToLog CWORD_VERSION, IIf(wordAppStr <> "", wordAppStr, CNOT_INSTALLED)
+ WriteToLog CEXCEL_VERSION, IIf(excelAppStr <> "", excelAppStr, CNOT_INSTALLED)
+ WriteToLog CPOWERPOINT_VERSION, IIf(ppAppStr <> "", ppAppStr, CNOT_INSTALLED)
+
+ WriteToLog CUSER_LOCALE_INFO, _
+ "langid: " & GetUserLocaleInfo(userLCID, LOCALE_ILANGUAGE) & ": " & _
+ GetUserLocaleInfo(userLCID, LOCALE_SENGLANGUAGE) & _
+ "-" & GetUserLocaleInfo(userLCID, LOCALE_SENGCOUNTRY) & _
+ " abrv: " & GetUserLocaleInfo(userLCID, LOCALE_SISO639LANGNAME) & _
+ "-" & GetUserLocaleInfo(userLCID, LOCALE_SISO3166CTRYNAME) & _
+ " sdate: " & GetUserLocaleInfo(userLCID, LOCALE_SSHORTDATE)
+
+ WriteToLog CSYS_LOCALE_INFO, _
+ "langid: " & GetUserLocaleInfo(sysLCID, LOCALE_ILANGUAGE) & ": " & _
+ GetUserLocaleInfo(sysLCID, LOCALE_SENGLANGUAGE) & _
+ "-" & GetUserLocaleInfo(sysLCID, LOCALE_SENGCOUNTRY) & _
+ " abrv: " & GetUserLocaleInfo(sysLCID, LOCALE_SISO639LANGNAME) & _
+ "-" & GetUserLocaleInfo(sysLCID, LOCALE_SISO3166CTRYNAME) & _
+ " sdate: " & GetUserLocaleInfo(userLCID, LOCALE_SSHORTDATE)
+
+ Dim myWinVer As RGB_WINVER
+ GetWinVersion myWinVer
+ WriteToLog CWINVERSION, myWinVer.VersionName & " " & myWinVer.VersionNo & _
+ " " & myWinVer.ServicePack & _
+ " build " & myWinVer.BuildNo
+ WriteToLog CNUMBER_TOTAL_DOCS, CStr(mTotalDocCount)
+ WriteToLog CNUMBER_DOCS_DOC, CStr(mWordDocCount)
+ WriteToLog CNUMBER_TEMPLATES_DOT, CStr(mWordTemplateCount)
+ WriteToLog CNUMBER_DOCS_XLS, CStr(mExcelDocCount)
+ WriteToLog CNUMBER_TEMPLATES_XLT, CStr(mExcelTemplateCount)
+ WriteToLog CNUMBER_DOCS_PPT, CStr(mPPDocCount)
+ WriteToLog CNUMBER_TEMPLATES_POT, CStr(mPPTemplateCount)
+FinalExit:
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Function CheckTemplatePath(sMigrationResultsTemplatePath As String, fso As FileSystemObject) As Boolean
+ If Not fso.FileExists(sMigrationResultsTemplatePath) Then
+ Dim str As String
+ str = ReplaceTopic2Tokens(GetResString(ERR_MISSING_RESULTS_TEMPLATE), _
+ TOPIC_STR, sMigrationResultsTemplatePath, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ CheckTemplatePath = False
+ Else
+ CheckTemplatePath = True
+ End If
+End Function
+
+Function RunAnalysis(bDoPrepare) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "RunAnalysis"
+ Dim tstart As Single 'timer var for this routine only
+ Dim tend As Single 'timer var for this routine only
+ Dim fso As New FileSystemObject
+ Dim wordAppStr As String
+ Dim excelAppStr As String
+ Dim ppAppStr As String
+ Dim sMigrationResultsTemplatePath As String
+ Dim startDate As Variant
+ Dim bSuccess
+
+ bSuccess = True
+ startDate = Now
+ tstart = GetTickCount()
+
+ app.OleRequestPendingMsgText = GetResString(RUNBTN_RUNNING_ID)
+ app.OleRequestPendingMsgTitle = frmWizard.Caption
+
+ wordAppStr = GetInstalledApp(CAPPNAME_WORD)
+ excelAppStr = GetInstalledApp(CAPPNAME_EXCEL)
+ ppAppStr = GetInstalledApp(CAPPNAME_POWERPOINT)
+ 'Write locale, version info and settings to the Application log
+ WriteInfoToApplicationLog wordAppStr, excelAppStr, ppAppStr
+
+ 'Check for template
+ sMigrationResultsTemplatePath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CRESULTS_TEMPLATE_FILE)
+ If Not CheckTemplatePath(sMigrationResultsTemplatePath, fso) Then
+ bSuccess = False
+ GoTo FinalExit
+ End If
+
+ 'Check for installed Apps
+ If Not CheckInstalledApps(wordAppStr, excelAppStr, ppAppStr) Then
+ bSuccess = False
+ GoTo FinalExit
+ End If
+
+ If bDoPrepare Then
+ 'Show MsgBox ( to give apps some time to quit )
+ Dim strMsgBox As String
+ Dim response As Integer
+
+ strMsgBox = ReplaceTopic2Tokens(GetResString(RID_STR_ENG_OTHER_PREPARE_PROMPT_PREP_ID), _
+ TOPIC_STR, getOutputDir & "\" & txtResultsName.Text, TOPIC2_STR, getOutputDir)
+ strMsgBox = ReplaceTopicTokens(strMsgBox, CR_STR, Chr(13))
+ response = MsgBox(strMsgBox, Buttons:=vbOKCancel + vbInformation)
+
+ If response <> vbOK Then
+ bSuccess = False
+ GoTo FinalExit
+ End If
+ End If
+
+ 'Write Wizard Setting to Application log
+ WriteWizardSettingsToLog mLogFilePath
+
+ 'Write to Analysis ini file - used by driver docs
+ WriteCommonParamsToLog sMigrationResultsTemplatePath, mLogFilePath, mIniFilePath, fso
+
+ Screen.MousePointer = vbHourglass
+ ' Doc Counts are setup by CheckNumberDocsToAnalyze() when user moves to Analysis Panel
+ ' Takes account of user Options selected and inspects source directory
+ Dim analysisAborted As Boolean
+ analysisAborted = False
+
+ SetupInputVariables mLogFilePath, fso
+
+ Load ShowProgress
+ Call ShowProgress.SP_Init(mDocFiles.WordFiles.count + _
+ mDocFiles.ExcelFiles.count + _
+ mDocFiles.PowerPointFiles.count)
+
+ Dim myOffset As Long
+ myOffset = 0
+ If (mDocFiles.WordFiles.count > 0) Then
+ bSuccess = AnalyseList(mDocFiles.WordFiles, "word", mIniFilePath, myOffset, analysisAborted)
+ 'bSuccess = RunWordAnalysis(sMigrationResultsTemplatePath, mLogFilePath, fso)
+ End If
+
+ myOffset = mDocFiles.WordFiles.count
+ If ((mDocFiles.ExcelFiles.count > 0) And (Not analysisAborted)) Then
+ bSuccess = bSuccess And _
+ AnalyseList(mDocFiles.ExcelFiles, "excel", mIniFilePath, myOffset, analysisAborted)
+ 'bSuccess = RunExcelAnalysis(sMigrationResultsTemplatePath, mLogFilePath, fso)
+ End If
+
+ myOffset = myOffset + mDocFiles.ExcelFiles.count
+ If ((mDocFiles.PowerPointFiles.count > 0) And (Not analysisAborted)) Then
+ bSuccess = bSuccess And _
+ AnalyseList(mDocFiles.PowerPointFiles, "pp", mIniFilePath, myOffset, analysisAborted)
+ 'bSuccess = RunPPAnalysis(sMigrationResultsTemplatePath, mLogFilePath, fso)
+ End If
+
+ SetupInputVariables mLogFilePath, fso
+
+ tend = GetTickCount()
+ WriteToLog CELAPSED_TIME, (FormatNumber((tend - tstart) / 1000, 0) & " seconds: ") & _
+ (FormatNumber((tend - tstart), 0) & " miliseconds")
+
+FinalExit:
+ Unload ShowProgress
+ Screen.MousePointer = vbDefault
+ WriteToLog CSTART_TIME, CDate(startDate)
+ WriteToLog CEND_TIME, Now
+ Set fso = Nothing
+
+ RunAnalysis = bSuccess
+ Exit Function
+
+HandleErrors:
+ bSuccess = False
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function CheckInstalledApps(wordAppStr As String, excelAppStr As String, ppAppStr As String) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ Dim str As String
+ currentFunctionName = "CheckInstalledApps"
+
+ Dim missingInstalledApps As String
+ Dim unsupportedApps As String
+ Dim runningApps As String
+ Dim bSuccess As Boolean
+
+ bSuccess = False
+
+ If mWordDocCount > 0 Or mWordTemplateCount > 0 Then
+ If wordAppStr = "" Then 'Word not installed
+ missingInstalledApps = CAPPNAME_WORD
+ ElseIf Not CheckForSupportedApp(CAPPNAME_WORD, CSUPPORTED_VERSION) Then
+ unsupportedApps = CAPPNAME_WORD
+ ElseIf IsOfficeAppRunning(CAPPNAME_WORD) Then
+ runningApps = CAPPNAME_WORD
+ End If
+ End If
+
+ If excelAppStr = "" Then
+ If missingInstalledApps <> "" Then missingInstalledApps = missingInstalledApps & ", "
+ missingInstalledApps = missingInstalledApps & CAPPNAME_EXCEL
+ ElseIf Not CheckForSupportedApp(CAPPNAME_EXCEL, CSUPPORTED_VERSION) Then
+ If unsupportedApps <> "" Then unsupportedApps = unsupportedApps & ", "
+ unsupportedApps = unsupportedApps & CAPPNAME_EXCEL
+ ElseIf IsOfficeAppRunning(CAPPNAME_EXCEL) Then
+ If runningApps <> "" Then runningApps = runningApps & ", "
+ runningApps = runningApps & CAPPNAME_EXCEL
+ End If
+
+ If mPPDocCount > 0 Or mPPTemplateCount > 0 Then
+ If ppAppStr = "" Then 'PP not installed
+ If missingInstalledApps <> "" Then missingInstalledApps = missingInstalledApps & ", "
+ missingInstalledApps = missingInstalledApps & CAPPNAME_POWERPOINT
+ ElseIf Not CheckForSupportedApp(CAPPNAME_POWERPOINT, CSUPPORTED_VERSION) Then
+ If unsupportedApps <> "" Then unsupportedApps = unsupportedApps & ", "
+ unsupportedApps = unsupportedApps & CAPPNAME_POWERPOINT
+ ElseIf IsOfficeAppRunning(CAPPNAME_POWERPOINT) Then
+ If runningApps <> "" Then runningApps = runningApps & ", "
+ runningApps = runningApps & CAPPNAME_POWERPOINT
+ End If
+ End If
+
+ If missingInstalledApps <> "" Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_NOT_INSTALLED), _
+ TOPIC_STR, missingInstalledApps, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ GoTo FinalExit
+ End If
+
+ If unsupportedApps <> "" Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_SUPPORTED_VERSION), _
+ TOPIC_STR, unsupportedApps, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ GoTo FinalExit
+ End If
+
+ If runningApps <> "" Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_APPLICATION_IN_USE), _
+ TOPIC_STR, runningApps, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ GoTo FinalExit
+ End If
+
+ 'Check for Excel automation server
+ If CheckForExcel Then
+ str = ReplaceTopicTokens(GetResString(ERR_EXCEL_OPEN), _
+ CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ bSuccess = False
+ GoTo FinalExit
+ End If
+
+ bSuccess = True
+
+FinalExit:
+ CheckInstalledApps = bSuccess
+ Exit Function
+
+HandleErrors:
+ bSuccess = False
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function RunPPAnalysis(resultsTemplate As String, logFile As String, fsObject As FileSystemObject) As Boolean
+'DV: do we need this? get some error handling ideas here
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "RunPPAnalysis"
+ Const APP_PP = "PowerPoint"
+ Dim str As String
+ Dim bSuccess
+ bSuccess = False
+
+ If (chkPPDoc.value <> vbChecked) And (chkPPTemplate.value <> vbChecked) Then
+ RunPPAnalysis = True
+ Exit Function
+ End If
+
+ Dim sPPDriverDocPath As String
+
+ sPPDriverDocPath = fsObject.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CPP_DRIVER_FILE)
+ If Not fsObject.FileExists(sPPDriverDocPath) Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_MISSING_PP_DRIVER), _
+ TOPIC_STR, sPPDriverDocPath, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ bSuccess = False
+ GoTo FinalExit
+ End If
+
+ Dim pp As PowerPoint.application
+ Dim po As Object
+ Dim aPres As PowerPoint.Presentation
+ Dim RegValue As Long
+ Set po = GetObject(sPPDriverDocPath)
+ Set pp = po.application
+
+ If val(pp.Version) < CSUPPORTED_VERSION Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_SUPPORTED_VERSION), _
+ TOPIC_STR, pp.Version, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ bSuccess = False
+ GoTo FinalExit
+ End If
+
+ If Not CheckForAccesToPPVBProject(pp, aPres) Then
+ RegValue = -1
+ If Not GiveAccessToMacroProject(APP_PP, pp.Version, RegValue) Then
+ Dim Style, response
+ str = ReplaceTopic2Tokens(GetResString(ERR_NO_ACCESS_TO_VBPROJECT), _
+ TOPIC_STR, CAPPNAME_POWERPOINT, CR_STR, Chr(13))
+ WriteDebug str
+ Style = vbYesNo + vbQuestion + vbDefaultButton1
+
+ response = MsgBox(str, Style)
+ If response <> vbYes Then
+ bSuccess = False
+ GoTo FinalExit
+ End If
+ End If
+ End If
+
+ Set aPres = pp.Presentations(1)
+ Dim ppSlideHidden As PowerPoint.Slide
+ Set ppSlideHidden = aPres.Slides(2)
+
+ 'Setup Input Variables
+ 'SetupInputVariables resultsTemplate, logFile, fsObject, CAPPNAME_POWERPOINT
+
+ 'Run PowerPoint Analysis
+ pp.Run (fsObject.GetFileName(CBASE_RESOURCE_DIR & "\" & CPP_DRIVER_FILE) & "!AnalysisDriver.AnalyseDirectory")
+
+ bSuccess = True
+
+FinalExit:
+ 'Cannot seem to close it down from VB
+ 'Workaround is to close it in macro
+ '
+ 'If Not aPres Is Nothing Then
+ ' aPres.Saved = msoTrue
+ 'End If
+ 'If Not pp Is Nothing Then pp.Quit
+
+ 'Swallow error as we are closing down PP from macro
+ 'Does not seem to be possible to close it down from VB
+ On Error Resume Next
+ If RegValue <> -1 Then
+ SetDefaultRegValue APP_PP, pp.Version, RegValue
+ End If
+ If RegValue = 0 Then
+ DeleteRegValue APP_PP, pp.Version
+ End If
+
+ If Not pp Is Nothing Then
+ pp.Run (fsObject.GetFileName(CBASE_RESOURCE_DIR & "\" & CPP_DRIVER_FILE) & "!ApplicationSpecific.QuitPowerPoint")
+ End If
+
+
+ Set aPres = Nothing
+ Set pp = Nothing
+ Set po = Nothing
+
+ RunPPAnalysis = bSuccess
+ Exit Function
+
+HandleErrors:
+ bSuccess = False
+ Set pp = Nothing
+ Dim failedDoc As String
+
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+
+ failedDoc = GetDebug(CAPPNAME_POWERPOINT, CANALYZING)
+ If failedDoc = "" Or failedDoc = CSTR_ANALYSIS_LOG_DONE Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_AUTOMATION_FAILURE), _
+ TOPIC_STR, CAPPNAME_POWERPOINT, CR_STR, Chr(13))
+ Else
+ str = ReplaceTopic2Tokens(GetResString(ERR_PP_DRIVER_CRASH), _
+ TOPIC_STR, failedDoc, CR_STR, Chr(13))
+ End If
+
+ WriteDebug str
+ MsgBox str, vbCritical
+
+ Resume FinalExit
+End Function
+
+Sub SetupInputVariables(logFile As String, fso As FileSystemObject)
+ Dim bNewResultsFile As Boolean
+
+ bNewResultsFile = CheckCreateNewResultsFile(fso)
+
+ WriteToLog CNEW_RESULTS_FILE, IIf(bNewResultsFile, "True", "False"), mIniFilePath
+ WriteToLog CNEW_RESULTS_FILE, IIf(bNewResultsFile, "True", "False"), logFile
+End Sub
+
+
+
+Function RunExcelAnalysis(resultsTemplate As String, logFile As String, fsObject As FileSystemObject) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "RunExcelAnalysis"
+ Const APP_EXCEL = "Excel"
+ Dim str As String
+ Dim bSuccess
+ bSuccess = False
+
+ If (chkExcelDoc.value <> vbChecked) And (chkExcelTemplate.value <> vbChecked) Then
+ RunExcelAnalysis = True
+ Exit Function
+ End If
+
+ Dim xl As Excel.application
+ Dim aWb As Excel.Workbook
+ Dim sExcelDriverDocPath As String
+ Dim RegValue As Long
+
+ sExcelDriverDocPath = fsObject.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CEXCEL_DRIVER_FILE)
+ If Not fsObject.FileExists(sExcelDriverDocPath) Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_MISSING_EXCEL_DRIVER), _
+ TOPIC_STR, sExcelDriverDocPath, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ bSuccess = False
+ GoTo FinalExit
+ End If
+
+ Set xl = GetExcelInstance
+ If val(xl.Version) < CSUPPORTED_VERSION Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_SUPPORTED_VERSION), _
+ TOPIC_STR, xl.Version, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ bSuccess = False
+ GoTo FinalExit
+ End If
+
+ If Not CheckForAccesToExcelVBProject(xl) Then
+ RegValue = -1
+ If Not GiveAccessToMacroProject(APP_EXCEL, xl.Version, RegValue) Then
+ Dim Style, response
+ str = ReplaceTopic2Tokens(GetResString(ERR_NO_ACCESS_TO_VBPROJECT), _
+ TOPIC_STR, CAPPNAME_EXCEL, CR_STR, Chr(13))
+ WriteDebug str
+ Style = vbYesNo + vbQuestion + vbDefaultButton1
+
+ response = MsgBox(str, Style)
+ If response <> vbYes Then
+ bSuccess = False
+ GoTo FinalExit
+ End If
+ End If
+ End If
+
+ Set aWb = xl.Workbooks.Open(fileName:=sExcelDriverDocPath)
+ 'Setup Input Variables
+ 'SetupInputVariables resultsTemplate, logFile, fsObject, CAPPNAME_EXCEL
+
+ 'Run Excel Analysis
+ xl.Run ("AnalysisTool.AnalysisDriver.AnalyseDirectory")
+
+ bSuccess = True
+FinalExit:
+ If RegValue <> -1 Then
+ SetDefaultRegValue APP_EXCEL, xl.Version, RegValue
+ End If
+ If RegValue = 0 Then
+ DeleteRegValue APP_EXCEL, xl.Version
+ End If
+
+ If Not aWb Is Nothing Then
+ If xl.Workbooks.count = 1 Then
+ xl.Visible = False
+ End If
+ aWb.Close (False)
+ End If
+ Set aWb = Nothing
+
+ If Not xl Is Nothing Then
+ If xl.Workbooks.count = 0 Then
+ xl.Quit
+ End If
+ End If
+
+ Set xl = Nothing
+
+ RunExcelAnalysis = bSuccess
+ Exit Function
+
+HandleErrors:
+ bSuccess = False
+ Set aWb = Nothing
+ Set xl = Nothing
+ Dim failedDoc As String
+
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+
+ failedDoc = GetDebug(CAPPNAME_EXCEL, CANALYZING)
+ If failedDoc = "" Or failedDoc = CSTR_ANALYSIS_LOG_DONE Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_AUTOMATION_FAILURE), _
+ TOPIC_STR, CAPPNAME_EXCEL, CR_STR, Chr(13))
+ Else
+ str = ReplaceTopic2Tokens(GetResString(ERR_EXCEL_DRIVER_CRASH), _
+ TOPIC_STR, failedDoc, CR_STR, Chr(13))
+ End If
+
+ WriteDebug str
+ MsgBox str, vbCritical
+
+ On Error Resume Next
+ Resume FinalExit
+End Function
+
+Sub WriteWizardSettingsToLog(path As String)
+ '### DO NOT USE Boolean True/ False it is loaclised by the OS - use "True"/ "False"
+ WriteToLog CINPUT_DIR, getInputDir, path
+ WriteToLog CINCLUDE_SUBDIRS, IIf(chkIncludeSubdirs.value, "True", "False"), path
+ WriteToLog COUTPUT_DIR, getOutputDir, path
+ WriteToLog CRESULTS_FILE, txtResultsName.Text, path
+
+ WriteToLog CTYPE_WORDDOC, IIf(chkWordDoc.value, "True", "False"), path
+ WriteToLog CTYPE_WORDDOT, IIf(chkWordTemplate.value, "True", "False"), path
+ WriteToLog CTYPE_EXCELDOC, IIf(chkExcelDoc.value, "True", "False"), path
+ WriteToLog CTYPE_EXCELDOT, IIf(chkExcelTemplate.value, "True", "False"), path
+ WriteToLog CTYPE_PPDOC, IIf(chkPPDoc.value, "True", "False"), path
+ WriteToLog CTYPE_PPDOT, IIf(chkPPTemplate.value, "True", "False"), path
+
+ Dim resultsSetting As String
+ If rdbResultsPrompt.value Then
+ resultsSetting = CPROMPT_FILE
+ ElseIf rdbResultsAppend.value Then
+ resultsSetting = CAPPEND_FILE
+ Else
+ resultsSetting = COVERWRITE_FILE
+ End If
+ WriteToLog CRESULTS_EXIST, resultsSetting, path
+
+ WriteToLog CIGNORE_OLD_DOCS, IIf(chkIgnoreOld.value, "True", "False"), path
+ WriteToLog CISSUE_LIMIT, CStr(mIssueLimit), path
+
+ 'WriteToLog CVERSION, Version, path
+End Sub
+
+Sub WriteCommonParamsToLog(resultsTemplate As String, logFile As String, path As String, fso As Scripting.FileSystemObject)
+ WriteToLog CLOG_FILE, logFile, path
+ WriteToLog CRESULTS_TEMPLATE, resultsTemplate, path
+ WriteToLog CDEBUG_LEVEL, CLng(mDebugLevel), path
+ WriteToLog CDOPREPARE, IIf(mbDoPrepare, "True", "False"), path
+ WriteToLog CTITLE, frmWizard.Caption, path
+ WriteToLog CLAST_CHECKPOINT, ""
+ WriteToLog CNEXT_FILE, ""
+ WriteToLog C_ABORT_ANALYSIS, ""
+End Sub
+
+Function GetNumberOfDocsToAnalyze() As Long
+ Dim count As Long
+
+ count = 0
+
+ If CheckWordDocsToAnalyze Then
+ count = mWordDocCount + mWordTemplateCount
+ End If
+ If CheckExcelDocsToAnalyze Then
+ count = count + mExcelDocCount + mExcelTemplateCount
+ End If
+ If CheckPPDocsToAnalyze Then
+ count = count + mPPDocCount + mPPTemplateCount
+ End If
+
+ GetNumberOfDocsToAnalyze = count
+End Function
+
+Function CheckWordDocsToAnalyze() As Boolean
+
+ CheckWordDocsToAnalyze = mbDocCountCurrent And (chkWordDoc.value = vbChecked And mWordDocCount > 0) Or _
+ (chkWordTemplate.value = vbChecked And mWordTemplateCount > 0)
+End Function
+
+Function CheckExcelDocsToAnalyze() As Boolean
+ CheckExcelDocsToAnalyze = mbDocCountCurrent And (chkExcelDoc.value = vbChecked And mExcelDocCount > 0) Or _
+ (chkExcelTemplate.value = vbChecked And mExcelTemplateCount > 0)
+End Function
+
+Function CheckPPDocsToAnalyze() As Boolean
+ CheckPPDocsToAnalyze = mbDocCountCurrent And (chkPPDoc.value = vbChecked And mPPDocCount > 0) Or _
+ (chkPPTemplate.value = vbChecked And mPPTemplateCount > 0)
+End Function
+
+Function CheckNumberDocsToAnalyze() As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckNumberDocsToAnalyze"
+
+ Set mDocFiles = New CollectedFiles
+
+ Dim docSearchTypes As Collection
+ Set docSearchTypes = New Collection
+
+ mbDocCountCurrent = False
+
+ SetupDocSearchTypes docSearchTypes
+
+ If (cbIgnoreOld.ListIndex = 0) Then
+ mIssueLimit = 3
+ ElseIf (cbIgnoreOld.ListIndex = 1) Then
+ mIssueLimit = 6
+ Else
+ mIssueLimit = 12
+ End If
+
+ If Not mDocFiles.Search(rootDir:=getInputDir, FileSpecs:=docSearchTypes, _
+ IncludeSubdirs:=IIf(chkIncludeSubdirs.value, mbTrue, mbFalse), _
+ ignoreOld:=IIf(chkIgnoreOld.value, mbTrue, mbFalse), Months:=mIssueLimit) Then
+ CheckNumberDocsToAnalyze = False
+ GoTo FinalExit
+ End If
+
+ SetDocCountsFromFileSearch mDocFiles
+ WriteFileDateCountsToLog mDocFiles
+
+ 'WriteDocsToAnalyzeToLog mDocFiles 'UNCOMMENT Recovery - want to list out files to analyze
+
+ mbDocCountCurrent = True
+
+ lblNumDocs.Caption = ReplaceTopicTokens(GetResString(ANALYZE_DOCUMENTS_ID), TOPIC_STR, _
+ CStr(mWordDocCount))
+ lblNumTemplates.Caption = ReplaceTopicTokens(GetResString(ANALYZE_TEMPLATES_ID), TOPIC_STR, _
+ CStr(mWordTemplateCount))
+
+ lblNumXLS.Caption = ReplaceTopicTokens(GetResString(ANALYZE_DOCUMENTS_XLS_ID), TOPIC_STR, _
+ CStr(mExcelDocCount))
+ lblNumXLT.Caption = ReplaceTopicTokens(GetResString(ANALYZE_TEMPLATES_ID), TOPIC_STR, _
+ CStr(mExcelTemplateCount))
+
+ lblNumPPT.Caption = ReplaceTopicTokens(GetResString(ANALYZE_DOCUMENTS_PPT_ID), TOPIC_STR, _
+ CStr(mPPDocCount))
+ lblNumPOT.Caption = ReplaceTopicTokens(GetResString(ANALYZE_TEMPLATES_ID), TOPIC_STR, _
+ CStr(mPPTemplateCount))
+
+ lblTotalNumDocs.Caption = ReplaceTopicTokens(GetResString(ANALYZE_TOTAL_NUM_DOCS_ID), TOPIC_STR, _
+ CStr(mTotalDocCount))
+
+ If (mIgnoredDocCount > 0) Then
+ lblSkippedOld.Caption = ReplaceTopicTokens(GetResString(RID_STR_ENG_ANALYZE_IGNORED_DOCS_ID), _
+ TOPIC_STR, CStr(mIgnoredDocCount))
+ lblSkippedOld.Visible = True
+ Else
+ lblSkippedOld.Visible = False
+ End If
+
+ CheckNumberDocsToAnalyze = True
+
+FinalExit:
+ Set docSearchTypes = Nothing
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Sub SetDocCountsFromFileSearch(myDocFiles As CollectedFiles)
+ 'No Error handling required
+ mWordDocCount = myDocFiles.DocCount
+ mWordTemplateCount = myDocFiles.DotCount
+ mExcelDocCount = myDocFiles.XlsCount
+ mExcelTemplateCount = myDocFiles.XltCount
+ mPPDocCount = myDocFiles.PptCount
+ mPPTemplateCount = myDocFiles.PotCount
+ mTotalDocCount = mWordDocCount + mWordTemplateCount + mExcelDocCount + mExcelTemplateCount + _
+ mPPDocCount + mPPTemplateCount
+ mIgnoredDocCount = myDocFiles.IgnoredDocCount
+End Sub
+
+Sub SetupDocSearchTypes(docSearchTypes As Collection)
+ 'No Error handling required
+ If chkWordDoc.value Then docSearchTypes.add ("*.doc")
+ If chkWordTemplate.value Then docSearchTypes.add ("*.dot")
+ If chkExcelDoc.value Then docSearchTypes.add ("*.xls")
+ If chkExcelTemplate.value Then docSearchTypes.add ("*.xlt")
+ If chkPPDoc.value Then docSearchTypes.add ("*.ppt")
+ If chkPPTemplate.value Then docSearchTypes.add ("*.pot")
+End Sub
+
+Sub WriteDocsToAnalyzeToLog(myDocFiles As CollectedFiles)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteDocsToAnalyzeToLog"
+
+ Dim vFileName As Variant
+ Dim Index As Long
+ Dim limit As Long
+ limit = myDocFiles.WordFiles.count
+ For Index = 1 To limit
+ vFileName = myDocFiles.WordFiles(Index)
+ WriteToLog "Doc" & Index, CStr(vFileName), section:=(WIZARD_NAME & "ListFor" & CAPPNAME_WORD)
+ Next
+ limit = myDocFiles.ExcelFiles.count
+ For Index = 1 To limit
+ vFileName = myDocFiles.ExcelFiles(Index)
+ WriteToLog "Doc" & Index, CStr(vFileName), section:=(WIZARD_NAME & "ListFor" & CAPPNAME_EXCEL)
+ Next
+ limit = myDocFiles.PowerPointFiles.count
+ For Index = 1 To limit
+ vFileName = myDocFiles.PowerPointFiles(Index)
+ WriteToLog "Doc" & Index, CStr(vFileName), section:=(WIZARD_NAME & "ListFor" & CAPPNAME_POWERPOINT)
+ Next
+
+FinalExit:
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Sub WriteFileDateCountsToLog(myDocFiles As CollectedFiles)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "WriteFileDateCountsToLog"
+
+ WriteToLog C_DOCS_LESS_3_MONTH, CStr(myDocFiles.DocsLessThan3Months), mIniFilePath
+ WriteToLog C_DOCS_LESS_6_MONTH, CStr(myDocFiles.DocsLessThan6Months), mIniFilePath
+ WriteToLog C_DOCS_LESS_12_MONTH, CStr(myDocFiles.DocsLessThan12Months), mIniFilePath
+ WriteToLog C_DOCS_MORE_12_MONTH, CStr(myDocFiles.DocsMoreThan12Months), mIniFilePath
+
+FinalExit:
+ Exit Sub
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+
+Function RunWordAnalysis(resultsTemplate As String, logFile As String, fsObject As FileSystemObject) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "RunWordAnalysis"
+ Const APP_WORD = "Word"
+ Dim str As String
+ Dim bSuccess
+ bSuccess = False
+
+ Dim wrd As Word.application
+ Dim aDoc As Word.Document
+ Dim sWordDriverDocPath As String
+ Dim RegValue As Long
+
+ If (chkWordDoc.value <> vbChecked) And (chkWordTemplate.value <> vbChecked) Then
+ 'No Word doc filters selected
+ RunWordAnalysis = True
+ Exit Function
+ End If
+
+ sWordDriverDocPath = fsObject.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CWORD_DRIVER_FILE)
+ If Not fsObject.FileExists(sWordDriverDocPath) Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_MISSING_WORD_DRIVER), _
+ TOPIC_STR, sWordDriverDocPath, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ bSuccess = False
+ GoTo FinalExit
+ End If
+
+ Set wrd = New Word.application
+ If val(wrd.Version) < CSUPPORTED_VERSION Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_SUPPORTED_VERSION), _
+ TOPIC_STR, wrd.Version, CR_STR, Chr(13))
+ WriteDebug str
+ MsgBox str, vbCritical
+ bSuccess = False
+ GoTo FinalExit
+ End If
+
+ If Not CheckForAccesToWordVBProject(wrd) Then
+ RegValue = -1
+ If Not GiveAccessToMacroProject(APP_WORD, wrd.Version, RegValue) Then
+ Dim Style, response
+ str = ReplaceTopic2Tokens(GetResString(ERR_NO_ACCESS_TO_VBPROJECT), _
+ TOPIC_STR, CAPPNAME_WORD, CR_STR, Chr(13))
+ WriteDebug str
+ Style = vbYesNo + vbQuestion + vbDefaultButton1
+
+ response = MsgBox(str, Style)
+ If response <> vbYes Then
+ bSuccess = False
+ GoTo FinalExit
+ End If
+ End If
+ End If
+
+ Set aDoc = wrd.Documents.Open(fileName:=sWordDriverDocPath)
+ 'Clear out any doc vars
+ Dim MyObj As Variable
+ For Each MyObj In aDoc.Variables
+ MyObj.Delete
+ Next
+
+ 'Setup Input Variables
+ 'SetupInputVariables resultsTemplate, logFile, fsObject, CAPPNAME_WORD
+
+ wrd.Run ("AnalysisTool.AnalysisDriver.AnalyseDirectory")
+
+ wrd.Visible = False
+ bSuccess = True
+
+FinalExit:
+ If RegValue <> -1 Then
+ SetDefaultRegValue APP_WORD, wrd.Version, RegValue
+ End If
+ If RegValue = 0 Then
+ DeleteRegValue APP_WORD, wrd.Version
+ End If
+ If Not aDoc Is Nothing Then aDoc.Close (False)
+ Set aDoc = Nothing
+
+ If Not wrd Is Nothing Then wrd.Quit (False)
+ Set wrd = Nothing
+
+ RunWordAnalysis = bSuccess
+ Exit Function
+
+HandleErrors:
+ On Error Resume Next
+
+ bSuccess = False
+ Set aDoc = Nothing
+ Set wrd = Nothing
+
+ Dim failedDoc As String
+
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+
+ failedDoc = GetDebug(CAPPNAME_WORD, CANALYZING)
+ If failedDoc = "" Or failedDoc = CSTR_ANALYSIS_LOG_DONE Then
+ str = ReplaceTopic2Tokens(GetResString(ERR_AUTOMATION_FAILURE), _
+ TOPIC_STR, CAPPNAME_WORD, CR_STR, Chr(13))
+ Else
+ str = ReplaceTopic2Tokens(GetResString(ERR_WORD_DRIVER_CRASH), _
+ TOPIC_STR, failedDoc, CR_STR, Chr(13))
+ End If
+
+ WriteDebug str
+ MsgBox str, vbCritical
+
+ Resume FinalExit
+End Function
+
+Function stripLastBackslash(inputStr As String) As String
+ Const MIN_DIR_SIZE = 3
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "stripLastBackslash"
+
+ If Len(inputStr) > MIN_DIR_SIZE Then
+ Dim lastStrChar As String
+ lastStrChar = Right(inputStr, 1)
+ If lastStrChar = "\" Then
+ inputStr = Left(inputStr, Len(inputStr) - 1)
+ End If
+ End If
+ stripLastBackslash = inputStr
+
+ Exit Function
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ stripLastBackslash = inputStr
+End Function
+
+Function getInputDir() As String
+ getInputDir = stripLastBackslash(txtInputDir.Text)
+End Function
+
+Function getOutputDir() As String
+ Dim tmpStr As String
+
+ tmpStr = stripLastBackslash(txtOutputDir.Text)
+
+ 'Bug when specifying C:\
+ If tmpStr <> "" Then
+ If Right(tmpStr, 1) = "\" Then
+ tmpStr = Left(tmpStr, Len(tmpStr) - 1)
+ End If
+ End If
+ getOutputDir = tmpStr
+End Function
+
+Function CheckCreateNewResultsFile(fsObject As FileSystemObject) As Boolean
+ If Not fsObject.FileExists(getOutputDir & "\" & txtResultsName.Text) Then
+ 'No Results File - Create it
+ CheckCreateNewResultsFile = True
+ ElseIf rdbResultsAppend.value Then
+ 'Results File exists and user wants to append to it
+ CheckCreateNewResultsFile = False
+ Else
+ 'Results File exists and user has elected not to append
+ CheckCreateNewResultsFile = True
+ End If
+End Function
+
+Sub DeleteFile(file As String)
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "DeleteFile"
+ Dim fso As Scripting.FileSystemObject
+ Set fso = New Scripting.FileSystemObject
+ Dim filePath As String
+
+ filePath = fso.GetAbsolutePathName(file)
+ If fso.FileExists(filePath) Then
+ fso.DeleteFile filePath, True
+ End If
+
+FinalExit:
+ Set fso = Nothing
+ Exit Sub
+
+HandleErrors:
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Sub
+
+Public Property Get Version() As String
+ Version = app.Major & "." & app.Minor & "." & app.Revision
+End Property
+
+Function GetExcelInstance() As Excel.application
+ Dim xl As Excel.application
+ On Error Resume Next
+ 'Try and get an existing instance
+ Set xl = GetObject(, "Excel.Application")
+ If Err.Number = 429 Then
+ Set xl = CreateObject("Excel.Application")
+ ElseIf Err.Number <> 0 Then
+ Set xl = Nothing
+ MsgBox "Error: " & Err.Description
+ Exit Function
+ End If
+ Set GetExcelInstance = xl
+ Set xl = Nothing
+End Function
+
+Function CheckForAnalysisResultsWorkbook(analysisResultsName As String) As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckForAnalysisResultsWorkbook"
+
+ CheckForAnalysisResultsWorkbook = False
+
+ Dim xl As Excel.application
+ Set xl = GetExcelInstance
+
+ Dim aWb As Excel.Workbook
+ For Each aWb In xl.Workbooks
+
+ If aWb.Name = analysisResultsName Then
+ CheckForAnalysisResultsWorkbook = True
+ Exit For
+ End If
+ Next aWb
+
+FinalExit:
+ If Not xl Is Nothing Then
+ If xl.Workbooks.count = 0 Then
+ xl.Quit
+ End If
+ End If
+
+ Set xl = Nothing
+
+ Exit Function
+
+HandleErrors:
+ Set xl = Nothing
+
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Function CheckForExcel() As Boolean
+ On Error GoTo HandleErrors
+ Dim currentFunctionName As String
+ currentFunctionName = "CheckForExcel"
+
+ CheckForExcel = False
+
+ Dim xl As Excel.application
+ Set xl = GetExcelInstance
+
+
+ If xl.Workbooks.count > 0 Then
+ CheckForExcel = True
+ End If
+
+FinalExit:
+ If Not xl Is Nothing Then
+ If xl.Workbooks.count = 0 Then
+ xl.Quit
+ End If
+ End If
+
+ Set xl = Nothing
+
+ Exit Function
+
+HandleErrors:
+ Set xl = Nothing
+
+ WriteDebug currentFunctionName & " : " & Err.Number & " " & Err.Description & " " & Err.Source
+ Resume FinalExit
+End Function
+
+Public Function GetIniSetting(key As String) As String
+
+ If mIniFilePath = "" Or key = "" Then Exit Function
+
+ GetIniSetting = ProfileGetItem(WIZARD_NAME, key, "", mIniFilePath)
+End Function
+
+Sub WriteIniSetting(key As String, value As String)
+
+ If mIniFilePath = "" Or key = "" Then Exit Sub
+
+ Call WritePrivateProfileString(WIZARD_NAME, key, value, mIniFilePath)
+End Sub
+
+Private Sub lblSetupComplete_Click(Index As Integer)
+
+End Sub
+
+Private Function CheckNeededFiles(missingFile As String) As Boolean
+
+ Dim fso As New FileSystemObject
+ Dim filePath As String
+
+ CheckNeededFiles = False
+ filePath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CWORD_DRIVER_FILE)
+ If Not fso.FileExists(filePath) Then
+ missingFile = filePath
+ Exit Function
+ End If
+
+ filePath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CEXCEL_DRIVER_FILE)
+ If Not fso.FileExists(filePath) Then
+ missingFile = filePath
+ Exit Function
+ End If
+
+ filePath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CPP_DRIVER_FILE)
+ If Not fso.FileExists(filePath) Then
+ missingFile = filePath
+ Exit Function
+ End If
+
+ filePath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CLAUNCH_DRIVERS_EXE)
+ If Not fso.FileExists(filePath) Then
+ missingFile = filePath
+ Exit Function
+ End If
+
+ filePath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CMSO_KILL_EXE)
+ If Not fso.FileExists(filePath) Then
+ missingFile = filePath
+ Exit Function
+ End If
+
+ filePath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CRESULTS_TEMPLATE_FILE)
+ If Not fso.FileExists(filePath) Then
+ missingFile = filePath
+ Exit Function
+ End If
+
+ filePath = fso.GetAbsolutePathName(CBASE_RESOURCE_DIR & "\" & CRESOURCE_DLL)
+ If Not fso.FileExists(filePath) Then
+ missingFile = filePath
+ Exit Function
+ End If
+
+ CheckNeededFiles = True
+End Function
diff --git a/migrationanalysis/src/wizard/makefile.mk b/migrationanalysis/src/wizard/makefile.mk
new file mode 100644
index 000000000000..f421379a6aa3
--- /dev/null
+++ b/migrationanalysis/src/wizard/makefile.mk
@@ -0,0 +1,116 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=migrationanalysis
+TARGET=wizard
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+PAW_APPSDEST:=$(BIN)$/ProAnalysisWizard
+ALTERNATE_SRC:=..$/exe
+
+PAW_DATDEST:=$(PAW_APPSDEST)$/Resources
+
+PROJECTDEST:=$(BIN)$/ProAnalysisWizard
+RCFILES:=$(RES)$/$(TARGET).rc
+RESFILE:=$(RES)$/$(TARGET).res
+ULFFILES:=$(TARGET).ulf
+.IF "$(WITH_LANG)"!=""
+ULFDIR:=$(COMMONMISC)$/$(TARGET)
+.ELSE # "$(WITH_LANG)"!=""
+ULFDIR:=.
+.ENDIF # "$(WITH_LANG)"!=""
+MANIFEST:=$(RES)$/DocAnalysisWizard.exe.manifest
+
+LAUNCHER_APP:= $(BIN)$/LaunchDrivers.exe
+
+BASIC_APPS:= \
+ $(LAUNCHER_APP) \
+ $(PAW_APPSDEST)$/ProAnalysisWizard.exe
+
+BASIC_VBP:= \
+ $(BIN)$/LaunchDrivers.vbp \
+ $(PAW_APPSDEST)$/ProAnalysisWizard.vbp
+
+PAW_RES_DLLS:=$(PAW_DATDEST)$/Resources.dll
+PAW_LAUNCHER:=$(PAW_DATDEST)$/LaunchDrivers.exe
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+ALLTAR : $(BASIC_APPS) $(PAW_RES_DLLS) $(PAW_LAUNCHER)
+
+$(MANIFEST) : $$(@:f)
+ -$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+.IF "$(VB6_LOCATION)" != ""
+
+$(BASIC_VBP) : $$(@:b).vbp
+ -$(MKDIRHIER) $(@:d)
+ $(COPY) $(@:f) $@
+
+$(BASIC_APPS) : $(BASIC_VBP)
+ -$(MKDIRHIER) $(@:d)
+ cd $(@:d) && "$(VB6_LOCATION)$/vb6.exe" /m $(@:b).vbp
+
+$(PAW_LAUNCHER) : $(LAUNCHER_APP)
+ -$(MKDIRHIER) $(@:d)
+ $(COPY) $(LAUNCHER_APP) $@
+
+.ELSE # "$(VB6_LOCATION)" != ""
+
+$(BASIC_APPS) : $(ALTERNATE_SRC)$/$$(@:f)
+ @echo "------------------------------------"
+ @echo "No VB6 found: using prebuild wizards"
+ @echo "------------------------------------"
+ -$(MKDIRHIER) $(@:d)
+ $(COPY) $(ALTERNATE_SRC)$/$(@:f) $@
+
+$(PAW_LAUNCHER) : $(ALTERNATE_SRC)$/$$(@:f)
+ -$(MKDIRHIER) $(@:d)
+ $(COPY) $(ALTERNATE_SRC)$/$(@:f) $@
+
+.ENDIF # "$(VB6_LOCATION)" != ""
+
+# Generate the native Windows resource file
+# using lngconvex.exe
+
+$(RCFILES) : $(MANIFEST) $(ULFDIR)$/$(TARGET).ulf makefile.mk rcfooter.txt rcheader.txt rctmpl.txt
+ $(LNGCONVEX) -ulf $(ULFDIR)$/$(TARGET).ulf -rc $(RES)$/$(TARGET).rc -rct rctmpl.txt -rch rcheader.txt -rcf rcfooter.txt
+
+$(PAW_RES_DLLS) : $(RCFILES)
+ -$(MKDIRHIER) $(@:d)
+ link /NOENTRY /DLL /MACHINE:X86 /OUT:$@ $(RESFILE)
+
diff --git a/migrationanalysis/src/wizard/rcfooter.txt b/migrationanalysis/src/wizard/rcfooter.txt
new file mode 100644
index 000000000000..d3f5a12faa99
--- /dev/null
+++ b/migrationanalysis/src/wizard/rcfooter.txt
@@ -0,0 +1 @@
+
diff --git a/migrationanalysis/src/wizard/rcheader.txt b/migrationanalysis/src/wizard/rcheader.txt
new file mode 100644
index 000000000000..63c805d26604
--- /dev/null
+++ b/migrationanalysis/src/wizard/rcheader.txt
@@ -0,0 +1,17 @@
+//_START_OF_HEADER
+/////////////////////////////////////////////////////////////////////////////
+//
+// Document Analysis Wizard - Resources
+//
+
+#include "res_defines.h"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Required for Windows XP look and feel support
+//
+#define RT_MANIFEST 24
+
+1 RT_MANIFEST "DocAnalysisWizard.exe.manifest"
+
+
diff --git a/migrationanalysis/src/wizard/rctmpl.txt b/migrationanalysis/src/wizard/rctmpl.txt
new file mode 100644
index 000000000000..147db9f68378
--- /dev/null
+++ b/migrationanalysis/src/wizard/rctmpl.txt
@@ -0,0 +1,126 @@
+// String Table
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ RID_STR_ANALYZE_NUM_DOCS %ANALYZE_NUM_DOCS%
+ RID_STR_ANALYZE_RUN_TOOL %ANALYZE_RUN_TOOL%
+ RID_STR_ANALYZE_SETUP_COMPLETE %ANALYZE_SETUP_COMPLETE%
+ RID_STR_ANALYZE_VIEW_RESULTS %ANALYZE_VIEW_RESULTS%
+ RID_STR_ANALYZE_PREPARE_DOCS %ANALYZE_PREPARE_DOCS%
+ RID_STR_ANALYZE_START %ANALYZE_START%
+ RID_STR_ANALYZE_COMPLETED %ANALYZE_COMPLETED%
+ RID_STR_ANALYZE_VIEW_NOW %ANALYZE_VIEW_NOW%
+ RID_STR_ANALYZE_VIEW_LATER %ANALYZE_VIEW_LATER%
+ RID_STR_ANALYSE_NOT_RUN %ANALYSE_NOT_RUN%
+ RID_STR_ANALYZE_DOCUMENTS %ANALYZE_DOCUMENTS%
+ RID_STR_ANALYZE_TEMPLATES %ANALYZE_TEMPLATES%
+ RID_STR_ANALYZE_DOCUMENTS_XLS %ANALYZE_DOCUMENTS_XLS%
+ RID_STR_ANALYZE_DOCUMENTS_PPT %ANALYZE_DOCUMENTS_PPT%
+ RID_STR_ERROR_AUTOMATION_SERVER_FAILED %ERROR_AUTOMATION_SERVER_FAILED%
+ RID_STR_ERROR_CANNOT_CREATE_RESULTS_DIRECTORY %ERROR_CANNOT_CREATE_RESULTS_DIRECTORY%
+ RID_STR_ERROR_CHOOSE_DOCUMENT_TYPE %ERROR_CHOOSE_DOCUMENT_TYPE%
+ RID_STR_ERROR_CREATE_FILE %ERROR_CREATE_FILE%
+ RID_STR_ERROR_EXCEL_ANALYSIS_FAILED %ERROR_EXCEL_ANALYSIS_FAILED%
+ RID_STR_ERROR_EXCEL_OPEN %ERROR_EXCEL_OPEN%
+ RID_STR_ERROR_MACRO_SECURITY_SET %ERROR_MACRO_SECURITY_SET%
+ RID_STR_ERROR_MISSING_DOCUMENTS_DIRECTORY %ERROR_MISSING_DOCUMENTS_DIRECTORY%
+ RID_STR_ERROR_MISSING_EXCEL_DRIVER %ERROR_MISSING_EXCEL_DRIVER%
+ RID_STR_ERROR_MISSING_ISSUES_LIST %ERROR_MISSING_ISSUES_LIST%
+ RID_STR_ERROR_MISSING_MIGRATION_RESULTS %ERROR_MISSING_MIGRATION_RESULTS%
+ RID_STR_ERROR_MISSING_POWERPOINT_DRIVER %ERROR_MISSING_POWERPOINT_DRIVER%
+ RID_STR_ERROR_MISSING_README %ERROR_MISSING_README%
+ RID_STR_ERROR_MISSING_RESULTS_TEMPLATE %ERROR_MISSING_RESULTS_TEMPLATE%
+ RID_STR_ERROR_MISSING_WORD_DRIVER %ERROR_MISSING_WORD_DRIVER%
+ RID_STR_ERROR_MSOFFICE_9_REQUIRED %ERROR_MSOFFICE_9_REQUIRED%
+ RID_STR_ERROR_NO_RESULTS_DIRECTORY %ERROR_NO_RESULTS_DIRECTORY%
+ RID_STR_ERROR_POWERPOINT_ANALYSIS_FAILED %ERROR_POWERPOINT_ANALYSIS_FAILED%
+ RID_STR_ERROR_RESULTS_DIRECTORY_DOES_NOT_EXIST %ERROR_RESULTS_DIRECTORY_DOES_NOT_EXIST%
+ RID_STR_ERROR_RESULTS_SPREADSHEET_OPEN %ERROR_RESULTS_SPREADSHEET_OPEN%
+ RID_STR_ERROR_VERSION_MISMATCH %ERROR_VERSION_MISMATCH%
+ RID_STR_ERROR_WIN2000_REQUIRED %ERROR_WIN2000_REQUIRED%
+ RID_STR_ERROR_WORD_ANALYSIS_FAILED %ERROR_WORD_ANALYSIS_FAILED%
+ RID_STR_ERROR_APP_NOT_INSTALLED %ERROR_APP_NOT_INSTALLED%
+ RID_STR_ERROR_CDROM_NOT_ALLOWED %ERROR_CDROM_NOT_ALLOWED%
+ RID_STR_ERROR_CDROM_NOT_READY %ERROR_CDROM_NOT_READY%
+ RID_STR_ERROR_NO_WRITE_TO_READ_ONLY_FOLDER %ERROR_NO_WRITE_TO_READ_ONLY_FOLDER%
+ RID_STR_ERROR_APPLICATION_STILL_RUNNING %ERROR_APPLICATION_STILL_RUNNING%
+ RID_STR_ERROR_MISSING_IMPORTANT_FILE %ERROR_MISSING_IMPORTANT_FILE%
+ RID_STR_INTRODUCTION %INTRODUCTION%
+ RID_STR_INTRODUCTION_INTRO1 %INTRODUCTION_INTRO1%
+ RID_STR_INTRODUCTION_INTRO2 %INTRODUCTION_INTRO2%
+ RID_STR_INTRODUCTION_INTRO3 %INTRODUCTION_INTRO3%
+ RID_STR_NAVBAR_BACK_BTN %NAVBAR_BACK_BTN%
+ RID_STR_NAVBAR_EXIT_BTN %NAVBAR_EXIT_BTN%
+ RID_STR_NAVBAR_FINISH_BTN %NAVBAR_FINISH_BTN%
+ RID_STR_NAVBAR_HELP_BTN %NAVBAR_HELP_BTN%
+ RID_STR_NAVBAR_NEXT_BTN %NAVBAR_NEXT_BTN%
+ RID_STR_OTHER_APPLICATON_LOG_PATH %OTHER_APPLICATON_LOG_PATH%
+ RID_STR_OTHER_README_PATH %OTHER_README_PATH%
+ RID_STR_OTHER_RUNNING %OTHER_RUNNING%
+ RID_STR_OTHER_SELECT_ANALYZE_DIRECTORY %OTHER_SELECT_ANALYZE_DIRECTORY%
+ RID_STR_OTHER_SELECT_RESULTS_DIRECTORY %OTHER_SELECT_RESULTS_DIRECTORY%
+ RID_STR_OTHER_XML_RESULTS %OTHER_XML_RESULTS%
+ RID_STR_DOCUMENTS_CHOOSE_DOCUMENTS %DOCUMENTS_CHOOSE_DOCUMENTS%
+ RID_STR_DOCUMENTS_DOCUMENTS_DIRECTORY %DOCUMENTS_DOCUMENTS_DIRECTORY%
+ RID_STR_DOCUMENTS_INCLUDE_SUBDIRECTORIES %DOCUMENTS_INCLUDE_SUBDIRECTORIES%
+ RID_STR_DOCUMENTS_ROOT_C %DOCUMENTS_ROOT_C%
+ RID_STR_DOCUMENTS_CHOOSE_DOC_TYPES %DOCUMENTS_CHOOSE_DOC_TYPES%
+ RID_STR_DOCUMENTS_CHOOSE_DOC %DOCUMENTS_CHOOSE_DOC%
+ RID_STR_DOCUMENTS_CHOOSE_DOT %DOCUMENTS_CHOOSE_DOT%
+ RID_STR_DOCUMENTS_CHOOSE_EXCEL %DOCUMENTS_CHOOSE_EXCEL%
+ RID_STR_DOCUMENTS_CHOOSE_POT %DOCUMENTS_CHOOSE_POT%
+ RID_STR_DOCUMENTS_CHOOSE_POWERPOINT %DOCUMENTS_CHOOSE_POWERPOINT%
+ RID_STR_DOCUMENTS_CHOOSE_PPT %DOCUMENTS_CHOOSE_PPT%
+ RID_STR_DOCUMENTS_CHOOSE_WORD %DOCUMENTS_CHOOSE_WORD%
+ RID_STR_DOCUMENTS_CHOOSE_XLS %DOCUMENTS_CHOOSE_XLS%
+ RID_STR_DOCUMENTS_CHOOSE_XLT %DOCUMENTS_CHOOSE_XLT%
+ RID_STR_RESULTS_CHOOSE_OPTIONS %RESULTS_CHOOSE_OPTIONS%
+ RID_STR_RESULTS_RESULTS_SPREADSHEET %RESULTS_RESULTS_SPREADSHEET%
+ RID_STR_RESULTS_ANALYSIS_XLS %RESULTS_ANALYSIS_XLS%
+ RID_STR_RESULTS_RESULTS_DIRECTORY %RESULTS_RESULTS_DIRECTORY%
+ RID_STR_RESULTS_CHOOSE_SAVE_OPTIONS %RESULTS_CHOOSE_SAVE_OPTIONS%
+ RID_STR_RESULTS_CHOOSE_PROMPT %RESULTS_CHOOSE_PROMPT%
+ RID_STR_RESULTS_CHOOSE_OVERWRITE %RESULTS_CHOOSE_OVERWRITE%
+ RID_STR_RESULTS_CHOOSE_APPEND %RESULTS_CHOOSE_APPEND%
+ RID_STR_SIDEBAR_INTRODUCTION %SIDEBAR_INTRODUCTION%
+ RID_STR_SIDEBAR_DOCUMENTS %SIDEBAR_DOCUMENTS%
+ RID_STR_SIDEBAR_RESULTS %SIDEBAR_RESULTS%
+ RID_STR_SIDEBAR_ANALYZE %SIDEBAR_ANALYZE%
+ RID_STR_SIDEBAR_STEPS %SIDEBAR_STEPS%
+ RID_STR_TITLE %TITLE%
+ RID_STR_PRODUCTNAME %PRODUCTNAME%
+ RID_STR_TITLE_PREP %TITLE_PREP%
+ RID_STR_SIDEBAR_ANALYZE_PREP %SIDEBAR_ANALYZE_PREP%
+ RID_STR_INTRODUCTION_INTRO1_PREP %INTRODUCTION_INTRO1_PREP%
+ RID_STR_INTRODUCTION_INTRO2_PREP %INTRODUCTION_INTRO2_PREP%
+ RID_STR_INTRODUCTION_INTRO3_PREP %INTRODUCTION_INTRO3_PREP%
+ RID_STR_DOCUMENTS_CHOOSE_DOCUMENTS_PREP %DOCUMENTS_CHOOSE_DOCUMENTS_PREP%
+ RID_STR_DOCUMENTS_CHOOSE_DOC_TYPES_PREP %DOCUMENTS_CHOOSE_DOC_TYPES_PREP%
+ RID_STR_DOCUMENTS_INCLUDE_SUBDIRECTORIES_PREP %DOCUMENTS_INCLUDE_SUBDIRECTORIES_PREP%
+ RID_STR_IGNORE_OLDER_CB_ID %IGNORE_OLDER_CB_LABEL%
+ RID_STR_IGNORE_OLDER_3_MONTHS_ID %IGNORE_OLDER_3_MONTHS_TEXT%
+ RID_STR_IGNORE_OLDER_6_MONTHS_ID %IGNORE_OLDER_6_MONTHS_TEXT%
+ RID_STR_IGNORE_OLDER_12_MONTHS_ID %IGNORE_OLDER_12_MONTHS_TEXT%
+ RID_STR_RESULTS_CHOOSE_OPTIONS_PREP %RESULTS_CHOOSE_OPTIONS_PREP%
+ RID_STR_RESULTS_ANALYSIS_XLS_PREP %RESULTS_ANALYSIS_XLS_PREP%
+ RID_STR_ANALYZE_IGNORED_DOCS %ANALYZE_IGNORED_DOCS%
+ RID_STR_ANALYZE_NUM_DOCS_PREP %ANALYZE_NUM_DOCS_PREP%
+ RID_STR_ANALYZE_SETUP_COMPLETE_PREP %ANALYZE_SETUP_COMPLETE_PREP%
+ RID_STR_OTHER_PLEASE_REFER_TO_README_PREP %OTHER_PLEASE_REFER_TO_README_PREP%
+ RID_STR_OTHER_XML_RESULTS_PREP %OTHER_XML_RESULTS_PREP%
+ RID_STR_OTHER_PREPARE_PROMPT_PREP %OTHER_PREPARE_PROMPT_PREP%
+ RID_STR_OTHER_PREPARE_COMPLETED_PREP %OTHER_PREPARE_COMPLETED_PREP%
+ RID_STR_PROGRESS_CAPTION %PROGRESS_CAPTION%
+ RID_STR_PROGRESS_ABORTING %PROGRESS_ABORTING%
+ RID_STR_PROGRESS_PATH_LABEL %PROGRESS_PATH_LABEL%
+ RID_STR_PROGRESS_FILE_LABEL %PROGRESS_FILE_LABEL%
+ RID_STR_PROGRESS_INFO_LABEL %PROGRESS_INFO_LABEL%
+ RID_STR_PROGRESS_WAIT_LABEL %PROGRESS_WAIT_LABEL%
+ RID_STR_SEARCH_CAPTION %SEARCH_CAPTION%
+ RID_STR_SEARCH_INFO_LABEL %SEARCH_INFO_LABEL%
+ RID_STR_SEARCH_FOUND_LABEL %SEARCH_FOUND_LABEL%
+ RID_STR_TERMINATE_CAPTION %TERMINATE_CAPTION%
+ RID_STR_TERMINATE_INFO %TERMINATE_INFO%
+ RID_STR_TERMINATE_YES %TERMINATE_YES%
+ RID_STR_TERMINATE_NO %TERMINATE_NO%
+END
diff --git a/migrationanalysis/src/wizard/res_defines.h b/migrationanalysis/src/wizard/res_defines.h
new file mode 100644
index 000000000000..046e6fc71dc7
--- /dev/null
+++ b/migrationanalysis/src/wizard/res_defines.h
@@ -0,0 +1,153 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+#ifndef RES_DEFINES_H_INCLUDED
+#define RES_DEFINES_H_INCLUDED
+
+#define RID_STR_ANALYZE_SETUP_COMPLETE 1400
+#define RID_STR_ANALYZE_NUM_DOCS 1401
+#define RID_STR_ANALYZE_RUN_TOOL 1404
+#define RID_STR_ANALYZE_VIEW_RESULTS 1406
+#define RID_STR_ANALYZE_COMPLETED 1412
+#define RID_STR_ANALYZE_START 1413
+#define RID_STR_ANALYZE_VIEW_NOW 1414
+#define RID_STR_ANALYZE_VIEW_LATER 1415
+#define RID_STR_ANALYSE_NOT_RUN 1416
+
+#define RID_STR_ANALYZE_PREPARE_DOCS 1411
+
+#define RID_STR_ANALYZE_DOCUMENTS 1402
+#define RID_STR_ANALYZE_TEMPLATES 1403
+#define RID_STR_ANALYZE_DOCUMENTS_XLS 1408
+#define RID_STR_ANALYZE_DOCUMENTS_PPT 1409
+
+#define RID_STR_ERROR_AUTOMATION_SERVER_FAILED 1920
+#define RID_STR_ERROR_CANNOT_CREATE_RESULTS_DIRECTORY 1904
+#define RID_STR_ERROR_CHOOSE_DOCUMENT_TYPE 1902
+#define RID_STR_ERROR_CREATE_FILE 1922
+#define RID_STR_ERROR_EXCEL_ANALYSIS_FAILED 1907
+#define RID_STR_ERROR_EXCEL_OPEN 1918
+#define RID_STR_ERROR_MACRO_SECURITY_SET 1919
+#define RID_STR_ERROR_MISSING_DOCUMENTS_DIRECTORY 1901
+#define RID_STR_ERROR_MISSING_EXCEL_DRIVER 1906
+#define RID_STR_ERROR_MISSING_ISSUES_LIST 1915
+#define RID_STR_ERROR_MISSING_MIGRATION_RESULTS 1900
+#define RID_STR_ERROR_MISSING_POWERPOINT_DRIVER 1911
+#define RID_STR_ERROR_MISSING_README 1910
+#define RID_STR_ERROR_MISSING_RESULTS_TEMPLATE 1905
+#define RID_STR_ERROR_MISSING_WORD_DRIVER 1908
+#define RID_STR_ERROR_MSOFFICE_9_REQUIRED 1913
+#define RID_STR_ERROR_NO_RESULTS_DIRECTORY 1921
+#define RID_STR_ERROR_POWERPOINT_ANALYSIS_FAILED 1912
+#define RID_STR_ERROR_RESULTS_DIRECTORY_DOES_NOT_EXIST 1903
+#define RID_STR_ERROR_RESULTS_SPREADSHEET_OPEN 1917
+#define RID_STR_ERROR_VERSION_MISMATCH 1914
+#define RID_STR_ERROR_WIN2000_REQUIRED 1916
+#define RID_STR_ERROR_WORD_ANALYSIS_FAILED 1909
+#define RID_STR_ERROR_APP_NOT_INSTALLED 1924
+#define RID_STR_ERROR_CDROM_NOT_ALLOWED 1925
+#define RID_STR_ERROR_CDROM_NOT_READY 1926
+#define RID_STR_ERROR_NO_WRITE_TO_READ_ONLY_FOLDER 1927
+#define RID_STR_ERROR_APPLICATION_STILL_RUNNING 1928
+#define RID_STR_ERROR_MISSING_IMPORTANT_FILE 1929
+
+
+#define RID_STR_INTRODUCTION 1100
+#define RID_STR_INTRODUCTION_INTRO1 1101
+#define RID_STR_INTRODUCTION_INTRO2 1102
+#define RID_STR_INTRODUCTION_INTRO3 1104
+
+#define RID_STR_NAVBAR_BACK_BTN 1021
+#define RID_STR_NAVBAR_EXIT_BTN 1024
+#define RID_STR_NAVBAR_FINISH_BTN 1023
+#define RID_STR_NAVBAR_HELP_BTN 1020
+#define RID_STR_NAVBAR_NEXT_BTN 1022
+
+
+#define RID_STR_RESULTS_CHOOSE_OPTIONS 1300
+#define RID_STR_RESULTS_RESULTS_SPREADSHEET 1301
+#define RID_STR_RESULTS_ANALYSIS_XLS 1302
+#define RID_STR_RESULTS_RESULTS_DIRECTORY 1304
+#define RID_STR_RESULTS_CHOOSE_SAVE_OPTIONS 1311
+#define RID_STR_RESULTS_CHOOSE_PROMPT 1312
+#define RID_STR_RESULTS_CHOOSE_OVERWRITE 1313
+#define RID_STR_RESULTS_CHOOSE_APPEND 1314
+
+#define RID_STR_OTHER_APPLICATON_LOG_PATH 1812
+#define RID_STR_OTHER_RUNNING 1810
+#define RID_STR_OTHER_SELECT_ANALYZE_DIRECTORY 1806
+#define RID_STR_OTHER_SELECT_RESULTS_DIRECTORY 1807
+#define RID_STR_OTHER_XML_RESULTS 1815
+#define RID_STR_OTHER_README_PATH 1805
+
+#define RID_STR_DOCUMENTS_CHOOSE_DOCUMENTS 1200
+#define RID_STR_DOCUMENTS_DOCUMENTS_DIRECTORY 1201
+#define RID_STR_DOCUMENTS_INCLUDE_SUBDIRECTORIES 1202
+#define RID_STR_DOCUMENTS_ROOT_C 1205
+#define RID_STR_DOCUMENTS_CHOOSE_DOC_TYPES 1206
+#define RID_STR_DOCUMENTS_CHOOSE_WORD 1207
+#define RID_STR_DOCUMENTS_CHOOSE_DOC 1208
+#define RID_STR_DOCUMENTS_CHOOSE_DOT 1209
+#define RID_STR_DOCUMENTS_CHOOSE_EXCEL 1210
+#define RID_STR_DOCUMENTS_CHOOSE_XLS 1211
+#define RID_STR_DOCUMENTS_CHOOSE_XLT 1212
+#define RID_STR_DOCUMENTS_CHOOSE_POWERPOINT 1213
+#define RID_STR_DOCUMENTS_CHOOSE_PPT 1214
+#define RID_STR_DOCUMENTS_CHOOSE_POT 1215
+
+#define RID_STR_SIDEBAR_STEPS 1040
+#define RID_STR_SIDEBAR_INTRODUCTION 1041
+#define RID_STR_SIDEBAR_DOCUMENTS 1042
+#define RID_STR_SIDEBAR_RESULTS 1043
+#define RID_STR_SIDEBAR_ANALYZE 1044
+
+#define RID_STR_TITLE 1000
+#define RID_STR_PRODUCTNAME 1001
+
+
+// Preparation
+#define RID_STR_SIDEBAR_ANALYZE_PREP 1074
+#define RID_STR_TITLE_PREP 1030
+
+#define RID_STR_INTRODUCTION_INTRO1_PREP 1131
+#define RID_STR_INTRODUCTION_INTRO2_PREP 1132
+#define RID_STR_INTRODUCTION_INTRO3_PREP 1134
+
+#define RID_STR_DOCUMENTS_CHOOSE_DOCUMENTS_PREP 1230
+#define RID_STR_DOCUMENTS_INCLUDE_SUBDIRECTORIES_PREP 1232
+#define RID_STR_DOCUMENTS_CHOOSE_DOC_TYPES_PREP 1236
+
+#define RID_STR_IGNORE_OLDER_CB_ID 1231
+#define RID_STR_IGNORE_OLDER_3_MONTHS_ID 1233
+#define RID_STR_IGNORE_OLDER_6_MONTHS_ID 1234
+#define RID_STR_IGNORE_OLDER_12_MONTHS_ID 1235
+
+#define RID_STR_RESULTS_CHOOSE_OPTIONS_PREP 1330
+#define RID_STR_RESULTS_ANALYSIS_XLS_PREP 1332
+
+#define RID_STR_ANALYZE_NUM_DOCS_PREP 1431
+#define RID_STR_ANALYZE_SETUP_COMPLETE_PREP 1430
+#define RID_STR_ANALYZE_IGNORED_DOCS 1435
+
+#define RID_STR_OTHER_PLEASE_REFER_TO_README_PREP 1838
+#define RID_STR_OTHER_XML_RESULTS_PREP 1845
+#define RID_STR_OTHER_PREPARE_PROMPT_PREP 1846
+#define RID_STR_OTHER_PREPARE_COMPLETED_PREP 1847
+
+// Progress
+#define RID_STR_PROGRESS_CAPTION 1820
+#define RID_STR_PROGRESS_ABORTING 1821
+#define RID_STR_PROGRESS_PATH_LABEL 1822
+#define RID_STR_PROGRESS_FILE_LABEL 1823
+#define RID_STR_PROGRESS_INFO_LABEL 1824
+#define RID_STR_PROGRESS_WAIT_LABEL 1825
+
+#define RID_STR_SEARCH_CAPTION 1826
+#define RID_STR_SEARCH_INFO_LABEL 1827
+#define RID_STR_SEARCH_FOUND_LABEL 1828
+
+#define RID_STR_TERMINATE_CAPTION 1830
+#define RID_STR_TERMINATE_INFO 1831
+#define RID_STR_TERMINATE_YES 1832
+#define RID_STR_TERMINATE_NO 1833
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/migrationanalysis/src/wizard/wizard.ulf b/migrationanalysis/src/wizard/wizard.ulf
new file mode 100644
index 000000000000..116b1b61b7b9
--- /dev/null
+++ b/migrationanalysis/src/wizard/wizard.ulf
@@ -0,0 +1,352 @@
+[%ANALYZE_NUM_DOCS%]
+en-US = "A total of <TOPIC> documents will be analyzed:"
+
+[%ANALYZE_RUN_TOOL%]
+en-US = "Run analysis"
+
+[%ANALYZE_SETUP_COMPLETE%]
+en-US = "Run the analysis and view the results"
+
+[%ANALYZE_VIEW_RESULTS%]
+en-US = "View results"
+
+[%ANALYZE_PREPARE_DOCS%]
+en-US = "Prepare Documents for Migration"
+
+[%ANALYZE_START%]
+en-US = "The analysis will now be carried out on <TOPIC> documents.<CR><CR>Please note this may take some time as each document must be opened<CR>in order to analyze it.<CR><CR>A message will appear when the analysis is complete."
+
+[%ANALYZE_COMPLETED%]
+en-US = "The analysis has been completed successfully.<CR><CR>Click on OK to see the results now."
+
+[%ANALYZE_VIEW_NOW%]
+en-US = "View Now"
+
+[%ANALYZE_VIEW_LATER%]
+en-US = "View Later"
+
+[%ANALYSE_NOT_RUN%]
+en-US = "The document analysis has not been run yet.<CR><CR>Click on OK to leave wizard now.<CR>Press 'Cancel' button to return to the Wizard. Then press 'Run Analysis' button to start the analysis."
+
+[%ANALYZE_DOCUMENTS%]
+en-US = "<TOPIC> Documents"
+
+[%ANALYZE_TEMPLATES%]
+en-US = "<TOPIC> Templates"
+
+[%ANALYZE_DOCUMENTS_XLS%]
+en-US = "<TOPIC> Spreadsheets"
+
+[%ANALYZE_DOCUMENTS_PPT%]
+en-US = "<TOPIC> Presentations"
+
+[%ERROR_AUTOMATION_SERVER_FAILED%]
+en-US = "<TOPIC> The analysis failed to connect to the <TOPIC> automation server.<CR><CR>Please ensure that all instances of <TOPIC> are closed before rerunning the analysis<CR>and check that the machine has sufficient free memory to run the analysis.<CR><CR>If necessary use the Task Manager to remove any frozen instances of <TOPIC>,<CR>using the Applications Tab - End Task"
+
+[%ERROR_CANNOT_CREATE_RESULTS_DIRECTORY%]
+en-US = "Can't create the directory: <CR><TOPIC><CR><CR>Check that you are creating only a single directory at the lowest level and <CR>that you can write to this disk and <CR>that it is not full."
+
+[%ERROR_CHOOSE_DOCUMENT_TYPE%]
+en-US = "Please choose at least one document type to analyze."
+
+[%ERROR_CREATE_FILE%]
+en-US = "Can't create the file: <CR><TOPIC><CR><CR>Please check that you have write permission to this directory."
+
+[%ERROR_EXCEL_ANALYSIS_FAILED%]
+en-US = "Excel Analysis Failed on document: <CR><CR><TOPIC><CR><CR>Please remove this file from the Documents Directory and ensure that all instances of Excel<CR>are closed before rerunning the analysis<CR><CR>If necessary use the Task Manager to remove any frozen instances of Excel,<CR>using the Applications Tab - End Task"
+
+[%ERROR_EXCEL_OPEN%]
+en-US = "The wizard cannot run the analysis if Excel is open. The wizard needs<CR>exclusive access to Excel in order to create the results spreadsheet.<CR><CR>Please close Excel so the analysis can be run."
+
+[%ERROR_MACRO_SECURITY_SET%]
+en-US = "Unable to detect or analyze <TOPIC> macros due to the following <TOPIC> macro security setting:<CR> <TOPIC> main menu:<CR> Tools-> Macro-> Security...<CR> Trusted Sources tab:<CR> Trust access to Visual Basic Project - unchecked<CR>To analyze macros you must check this checkbox before running the analysis.<CR><CR>Do you wish to continue the analysis without detecting and analyzing <TOPIC> macros?"
+
+[%ERROR_MISSING_DOCUMENTS_DIRECTORY%]
+en-US = "Documents Directory does not exist.<CR><CR>Please choose another directory."
+
+[%ERROR_MISSING_EXCEL_DRIVER%]
+en-US = "Missing Excel Analysis Driver Spreadsheet: <CR><TOPIC><CR><CR>Please reinstall the application."
+
+[%ERROR_MISSING_ISSUES_LIST%]
+en-US = "Missing issues list:<CR><TOPIC><CR><CR>Please reinstall the application."
+
+[%ERROR_MISSING_MIGRATION_RESULTS%]
+en-US = "Missing Analysis Results Document: <CR><TOPIC><CR><CR>Please check that you have write permissions on the <CR>results directory and rerun the analysis.<CR>"
+
+[%ERROR_MISSING_POWERPOINT_DRIVER%]
+en-US = "Missing PowerPoint Analysis Driver Document: <CR><TOPIC><CR><CR>Please reinstall the application."
+
+[%ERROR_MISSING_README%]
+en-US = "Missing Help Documentation: <CR><TOPIC><CR><CR>Please reinstall the application."
+
+[%ERROR_MISSING_RESULTS_TEMPLATE%]
+en-US = "Missing Results Template: <CR><TOPIC><CR><CR>Please reinstall the application."
+
+[%ERROR_MISSING_WORD_DRIVER%]
+en-US = "Missing Word Analysis Driver Document: <CR><TOPIC><CR><CR>Please reinstall the application."
+
+[%ERROR_MSOFFICE_9_REQUIRED%]
+en-US = "The wizard requires Microsoft Office version 9.0 or above to be installed.<CR><CR>The currently installed version <TOPIC> is not supported."
+
+[%ERROR_NO_RESULTS_DIRECTORY%]
+en-US = "Results Directory has not been specified.<CR><CR>Please enter a results directory."
+
+[%ERROR_POWERPOINT_ANALYSIS_FAILED%]
+en-US = "PowerPoint Analysis Failed on document: <CR><CR><TOPIC><CR><CR>Please remove this file from the Documents Directory and ensure that all instances of PowerPoint<CR>are closed before rerunning the analysis<CR><CR>If necessary use the Task Manager to remove any frozen instances of PowerPoint,<CR>using the Applications Tab - End Task"
+
+[%ERROR_RESULTS_DIRECTORY_DOES_NOT_EXIST%]
+en-US = "Results Directory does not exist.<CR><CR>Do you want to create the directory?"
+
+[%ERROR_RESULTS_SPREADSHEET_OPEN%]
+en-US = "The wizard needs to write to the results spreadsheet:<CR><TOPIC><CR><CR>Excel currently has this spreadsheet open. It must be closed before the analysis can be run.<CR><CR>If Excel does not appear to be running please check the Task Manager and remove any Excel.exe processes."
+
+[%ERROR_VERSION_MISMATCH%]
+en-US = "There is a version mismatch between the Wizard [<TOPIC>] and the Issues list [<TOPIC2>]<CR>used to cutomize the reporting of minor issues.<CR><CR>Please contact support."
+
+[%ERROR_WIN2000_REQUIRED%]
+en-US = "To run this wizard, Windows 2000 or newer is required.<CR><CR>The current operating system <TOPIC> is not supported."
+
+[%ERROR_WORD_ANALYSIS_FAILED%]
+en-US = "Word Analysis Failed on document: <CR><CR><TOPIC><CR><CR>Please remove this file from the Documents Directory and ensure that all instances of Word<CR>are closed before rerunning the analysis<CR><CR>If necessary use the Task Manager to remove any frozen instances of Word,<CR>using the Applications Tab - End Task"
+
+[%ERROR_APP_NOT_INSTALLED%]
+en-US = "The wizard requires Microsoft <TOPIC> version 9.0 or above to be installed.<CR><CR>Please install and rerun the analysis."
+
+[%ERROR_APPLICATION_STILL_RUNNING%]
+en-US = "The following applications are still running: <TOPIC>.<CR><CR>Please ensure that all instances of <TOPIC> are closed before rerunning the analysis.<CR><CR>If necessary use the Task Manager to remove any frozen instances of <TOPIC>,<CR>using the Applications Tab - End Task"
+
+[%ERROR_MISSING_IMPORTANT_FILE%]
+en-US = "A file needed for analyzing is missing: <CR><TOPIC><CR><CR>Please reinstall the application."
+
+[%INTRODUCTION%]
+en-US = "Introduction"
+
+[%INTRODUCTION_INTRO1%]
+en-US = "The <PRODUCTNAME> Document Analysis Wizard is for you to use to automatically analyze a collection of Microsoft Office documents for issues relevant to a migration to <PRODUCTNAME>."
+
+[%INTRODUCTION_INTRO2%]
+en-US = "You will be able to select which documents you want to analyze as well as where you want the results of the analysis to be saved."
+
+[%INTRODUCTION_INTRO3%]
+en-US = "The wizard will remain on screen while the analysis is carried out."
+
+[%NAVBAR_BACK_BTN%]
+en-US = "<< Back"
+
+[%NAVBAR_EXIT_BTN%]
+en-US = "Cancel"
+
+[%NAVBAR_FINISH_BTN%]
+en-US = "Finish"
+
+[%NAVBAR_HELP_BTN%]
+en-US = "Help"
+
+[%NAVBAR_NEXT_BTN%]
+en-US = "Next >>"
+
+[%OTHER_README_PATH%]
+en-US = "UserGuide_en-US.pdf"
+
+[%OTHER_RUNNING%]
+en-US = "Running ..."
+
+[%OTHER_SELECT_ANALYZE_DIRECTORY%]
+en-US = "Select a Directory to Analyze"
+
+[%OTHER_SELECT_RESULTS_DIRECTORY%]
+en-US = "Select a Directory for Analysis Results"
+
+[%OTHER_XML_RESULTS%]
+en-US = "Analysis Results have been output in XML format to: <CR><TOPIC>"
+
+[%DOCUMENTS_CHOOSE_DOCUMENTS%]
+en-US = "Choose the documents you want to analyze"
+
+[%DOCUMENTS_DOCUMENTS_DIRECTORY%]
+en-US = "Location of Microsoft Office documents"
+
+[%DOCUMENTS_INCLUDE_SUBDIRECTORIES%]
+en-US = "Include subdirectories in the analysis"
+
+[%DOCUMENTS_ROOT_C%]
+en-US = "C:\\"
+
+[%DOCUMENTS_CHOOSE_DOC_TYPES%]
+en-US = "Document types to analyze:"
+
+[%DOCUMENTS_CHOOSE_DOC%]
+en-US = "Documents (*.doc)"
+
+[%DOCUMENTS_CHOOSE_DOT%]
+en-US = "Templates (*.dot)"
+
+[%DOCUMENTS_CHOOSE_EXCEL%]
+en-US = "Excel"
+
+[%DOCUMENTS_CHOOSE_POT%]
+en-US = "Templates (*.pot)"
+
+[%DOCUMENTS_CHOOSE_POWERPOINT%]
+en-US = "PowerPoint"
+
+[%DOCUMENTS_CHOOSE_PPT%]
+en-US = "Presentations (*.ppt)"
+
+[%DOCUMENTS_CHOOSE_WORD%]
+en-US = "Word"
+
+[%DOCUMENTS_CHOOSE_XLS%]
+en-US = "Spreadsheets (*.xls)"
+
+[%DOCUMENTS_CHOOSE_XLT%]
+en-US = "Templates (*.xlt)"
+
+[%RESULTS_CHOOSE_OPTIONS%]
+en-US = "Choose where and how to save the results"
+
+[%RESULTS_RESULTS_SPREADSHEET%]
+en-US = "File name for the results spreadsheet"
+
+[%RESULTS_ANALYSIS_XLS%]
+en-US = "Analysis Results.xls"
+
+[%RESULTS_RESULTS_DIRECTORY%]
+en-US = "Location"
+
+[%RESULTS_CHOOSE_SAVE_OPTIONS%]
+en-US = "If results already exist under the same name and location:"
+
+[%RESULTS_CHOOSE_PROMPT%]
+en-US = "Ask me before overwriting"
+
+[%RESULTS_CHOOSE_OVERWRITE%]
+en-US = "Overwrite without asking me"
+
+[%RESULTS_CHOOSE_APPEND%]
+en-US = "Append the new results to the existing results"
+
+[%SIDEBAR_INTRODUCTION%]
+en-US = "1. Introduction"
+
+[%SIDEBAR_DOCUMENTS%]
+en-US = "2. Documents"
+
+[%SIDEBAR_RESULTS%]
+en-US = "3. Results"
+
+[%SIDEBAR_ANALYZE%]
+en-US = "4. Analysis"
+
+[%SIDEBAR_STEPS%]
+en-US = "Steps"
+
+[%TITLE%]
+en-US = "<PRODUCTNAME> Document Analysis Wizard"
+
+[%PRODUCTNAME%]
+en-US = "OpenOffice.org"
+
+[%TITLE_PREP%]
+en-US = "<PRODUCTNAME> Professional Analysis Wizard"
+
+[%SIDEBAR_ANALYZE_PREP%]
+en-US = "4. Analysis"
+
+[%INTRODUCTION_INTRO1_PREP%]
+en-US = "The <PRODUCTNAME> Professional Analysis Wizard is for you to use to automatically analyze a collection of Microsoft Office documents for issues relevant to a migration to <PRODUCTNAME>."
+
+[%INTRODUCTION_INTRO2_PREP%]
+en-US = "You will be able to select which documents you want to analyze as well as where you want the results of the analysis to be saved."
+
+[%INTRODUCTION_INTRO3_PREP%]
+en-US = "Where a workaround is available for a migration issue, the wizard will enable you to prepare a modified copy of the original document in which the migration issue has been resolved."
+
+[%DOCUMENTS_CHOOSE_DOCUMENTS_PREP%]
+en-US = "Choose the documents you want to analyze"
+
+[%DOCUMENTS_CHOOSE_DOC_TYPES_PREP%]
+en-US = "Document types to analyze:"
+
+[%IGNORE_OLDER_CB_LABEL%]
+en-US = "Ignore documents older than:"
+
+[%IGNORE_OLDER_3_MONTHS_TEXT%]
+en-US = "3 months"
+
+[%IGNORE_OLDER_6_MONTHS_TEXT%]
+en-US = "6 months"
+
+[%IGNORE_OLDER_12_MONTHS_TEXT%]
+en-US = "12 months"
+
+[%DOCUMENTS_INCLUDE_SUBDIRECTORIES_PREP%]
+en-US = "Include subdirectories in the analysis"
+
+[%RESULTS_CHOOSE_OPTIONS_PREP%]
+en-US = "Choose where and how to save the results"
+
+[%RESULTS_ANALYSIS_XLS_PREP%]
+en-US = "Analysis Results.xls"
+
+[%ANALYZE_NUM_DOCS_PREP%]
+en-US = "A total of <TOPIC> documents will be analyzed:"
+
+[%ANALYZE_IGNORED_DOCS%]
+en-US = "Skipped <TOPIC> documents because they were to old."
+
+[%ANALYZE_SETUP_COMPLETE_PREP%]
+en-US = "Run the analysis and view the results"
+
+[%OTHER_PLEASE_REFER_TO_README_PREP%]
+en-US = "<PRODUCTNAME> Professional Analysis Wizard <TOPIC><CR><CR>For help please refer to the User Guide in<CR>the install directory."
+
+[%OTHER_XML_RESULTS_PREP%]
+en-US = "Analysis Results have been output in XML format to: <CR><TOPIC>"
+
+[%OTHER_PREPARE_PROMPT_PREP%]
+en-US = "Prepare any documents that have Preparable Document Issues, listed in the results spreadsheet:<CR> <TOPIC><CR><CR>Prepared documents will be saved under:<CR> <TOPIC2>\prepared<CR><CR>Source documents will not be modified."
+
+[%OTHER_PREPARE_COMPLETED_PREP%]
+en-US = "Preparation completed successfully.<CR><CR>Prepared documents have been saved under:<CR><TOPIC>\prepared"
+
+[%PROGRESS_CAPTION%]
+en-US = "Analysing Microsoft Office Documents"
+
+[%PROGRESS_ABORTING%]
+en-US = "Aborting"
+
+[%PROGRESS_PATH_LABEL%]
+en-US = "Path:"
+
+[%PROGRESS_FILE_LABEL%]
+en-US = "File:"
+
+[%PROGRESS_INFO_LABEL%]
+en-US = "Please wait while wizard is analysing Microsoft Office documents."
+
+[%PROGRESS_WAIT_LABEL%]
+en-US = "Please wait while wizard is aborting the analysis."
+
+[%SEARCH_CAPTION%]
+en-US = "Scanning for Microsoft Office Documents"
+
+[%SEARCH_INFO_LABEL%]
+en-US = "Please wait while wizard is scanning for Microsoft Office documents."
+
+[%SEARCH_FOUND_LABEL%]
+en-US = "Documents found:"
+
+[%TERMINATE_CAPTION%]
+en-US = "Application not Responding"
+
+[%TERMINATE_INFO%]
+en-US = "The Microsoft Office application, used for the analysis, is currently not responding and could not be closed. Microsoft Office needs to be closed before the Wizard could start a new analysis.<CR><CR>Do you want to abort this application?<CR><CR>Please note that unsaved data of this application will be lost."
+
+[%TERMINATE_YES%]
+en-US = "Yes"
+
+[%TERMINATE_NO%]
+en-US = "No"
+
+
diff --git a/migrationanalysis/util/delzip b/migrationanalysis/util/delzip
new file mode 100644
index 000000000000..594f345bdece
--- /dev/null
+++ b/migrationanalysis/util/delzip
@@ -0,0 +1 @@
+ECHO is off
diff --git a/migrationanalysis/util/makefile.mk b/migrationanalysis/util/makefile.mk
new file mode 100644
index 000000000000..550af0ab40f9
--- /dev/null
+++ b/migrationanalysis/util/makefile.mk
@@ -0,0 +1,53 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=migrationanalysis
+TARGET=paw
+
+no_common_build_zip=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+ZIPFLAGS =
+ZIP1DIR = $(BIN)$/ProAnalysisWizard
+ZIP1TARGET = MigrationAnalysis
+ZIP1LIST = ProAnalysisWizard.exe Resources$/* Resources$/lang$/*
+
+ZIP2DIR = $(BIN)$/ProAnalysisWizard
+ZIP2TARGET = ProAnalysisWizard
+ZIP2LIST = Resources$/* Resources$/lang$/*
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/mysqlc/prj/build.lst b/mysqlc/prj/build.lst
new file mode 100644
index 000000000000..3cbb4e66d88a
--- /dev/null
+++ b/mysqlc/prj/build.lst
@@ -0,0 +1,3 @@
+mc mysqlc : solenv MYSQLCPPCONN:mysqlcppconn offapi cppu soltools cppuhelper readlicense_oo NULL
+ch mysqlc usr1 - all mc_mkout NULL
+mc mysqlc\source nmake - all mc_source NULL
diff --git a/mysqlc/prj/d.lst b/mysqlc/prj/d.lst
new file mode 100644
index 000000000000..a173c3593672
--- /dev/null
+++ b/mysqlc/prj/d.lst
@@ -0,0 +1,4 @@
+# Extensions
+
+..\%__SRC%\bin\*.oxt %_DEST%\bin\*.oxt
+
diff --git a/mysqlc/source/DataAccess.xcu b/mysqlc/source/DataAccess.xcu
new file mode 100644
index 000000000000..1c70d36f1680
--- /dev/null
+++ b/mysqlc/source/DataAccess.xcu
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:node xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="DataAccess" oor:package="org.openoffice.Office">
+ <node oor:name="UserDefinedDriverSettings">
+ <node oor:name="org.openoffice.comp.connectivity.mysql_native.Driver" oor:op="replace">
+ <prop oor:name="DriverName">
+ <value>org.openoffice.comp.connectivity.mysql_native.Driver</value>
+ </prop>
+ <prop oor:name="DriverPageDisplayName">
+ <value>MySQL native driver</value>
+ </prop>
+ <prop oor:name="DriverTypeDisplayName">
+ <value>MySQL native driver</value>
+ </prop>
+ <prop oor:name="DriverDsnPrefix">
+ <value>sdbc:mysqlc:</value>
+ </prop>
+ </node>
+ </node>
+</oor:node>
diff --git a/mysqlc/source/README b/mysqlc/source/README
new file mode 100644
index 000000000000..1166dde27971
--- /dev/null
+++ b/mysqlc/source/README
@@ -0,0 +1,65 @@
+---------- Status -------------------------------------------------------------
+
+The code is on a PREVIEW level. PREVIEW means pre-alpha.
+
+---------- Requirements -------------------------------------------------------
+
+The MySQL driver for OpenOffice.org (MySQL Connector/OpenOffice.org - C/OOo)
+requires two external libraries to be build:
+
+ 1) The MySQL Client Library (libmysql)
+ 2) The MySQL Connector/C++ Library (libmysqlcppcon)
+
+At the time of writing neither of the two libraries are part of the CWS!
+Before you can build the MySQL driver for OpenOffice.org you must install
+the two required libraries on your system before you can compile the driver.
+
+You need the two libraries because the MySQL driver for OpenOffice.org
+does not feature an implementation of the MySQL Client Server
+communication protocol. The protocol implementation is part of the MySQL
+Client Library. And the SDBC(X) style OpenOffice.org driver is implemented as a
+wrapper of the MySQL Connector/C++ Library which implements a JDBC interface and
+in turn uses the C based MySQL Client Library.
+
+1) MySQL Client Library (libmysql)
+
+The MySQL Client Library (libmysql) is part of the MySQL Server. You need to
+download and install the MySQL Server. Use a binary distribution of
+MySQL 5.0.x or MySQL 5.1.x. Check the MySQL manual for instructions, e.g.
+for Unix:
+
+ http://dev.mysql.com/doc/refman/5.1/en/installing-binary.html
+
+The typical installation path of the libmysql.so on Unix is
+/usr/local/mysql/lib/mysql/ .
+
+2) MySQL Connector/C++ (libmysqlcppcon)
+
+Download and install the latest version of the MySQL Connector/C++, see
+http://forge.mysql.com/wiki/Connector_C++ . Check out the source
+from the bzr repository.
+
+3) Tweaking library paths
+
+At the time of writing you might have to *manually* tweak library paths and
+library names by patching makefile.mk. This is a temporary hack. The makefile
+will be improved later.
+
+However, for the moment check the makefile.mk if the compilation fails due to
+"missing" libraries (= libraries not found). For example, check the following
+settings:
+
+ MYSQL_INCDIR=/usr/local/include
+ MYSQL_LIBDIR=/usr/local/lib
+ [...]
+ MYSQL_INCDIR=/usr/local/include
+ MYSQL_LIBDIR=/usr/local/lib
+ [...]
+ MYSQL_INC=-I$(MYSQL_INCDIR)
+ MYSQL_LIB=-L$(MYSQL_LIBDIR) -lmysqlclient -rdynamic -lz -lcrypt -lnsl -lm
+ MYSQL_LIBFILE=$(MYSQL_LIBDIR)$/libmysqlclient.so.16
+ MYSQL_CPPCONN_LIBFILE=$(MYSQL_LIBDIR)$/libmysqlcppconn.so
+ [...]
+
+A common issue is libmysqlclient.so.15 vs. libmysqlclient.so.16 .
+
diff --git a/mysqlc/source/delzip b/mysqlc/source/delzip
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/mysqlc/source/delzip
diff --git a/mysqlc/source/description.xml b/mysqlc/source/description.xml
new file mode 100755
index 000000000000..4980e27256a7
--- /dev/null
+++ b/mysqlc/source/description.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description xmlns="http://openoffice.org/extensions/description/2006" xmlns:d="http://openoffice.org/extensions/description/2006"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <identifier value="UPDATED_IDENTIFIER"/>
+ <version value="#VERSION#" />
+ <platform value="UPDATED_SUPPORTED_PLATFORM" />
+ <display-name>
+ <name lang="en-US">#TITLE#</name>
+ </display-name>
+ <dependencies>
+ <OpenOffice.org-minimal-version value="3.1" d:name="OpenOffice.org 3.1"/>
+ </dependencies>
+ <publisher>
+ <name xlink:href="http://www.oracle.com/us/products/applications/open-office" lang="en">Oracle</name>
+ </publisher>
+ <icon>
+ <default xlink:href="images/extension_32.png" />
+ </icon>
+ <extension-description>
+ <src lang="#LANG#" xlink:href="description/description_#LANG#.txt"/>
+ </extension-description>
+</description>
diff --git a/mysqlc/source/description/description_de.txt b/mysqlc/source/description/description_de.txt
new file mode 100644
index 000000000000..acdaea342571
--- /dev/null
+++ b/mysqlc/source/description/description_de.txt
@@ -0,0 +1 @@
+Verbindet OpenOffice.org direkt mit MySQL-Servern \ No newline at end of file
diff --git a/mysqlc/source/description/description_en-US.txt b/mysqlc/source/description/description_en-US.txt
new file mode 100755
index 000000000000..a8ddd5985cfc
--- /dev/null
+++ b/mysqlc/source/description/description_en-US.txt
@@ -0,0 +1 @@
+The MySQL Connector for OpenOffice.org installs a native MySQL database driver. It is faster, seamless integrated, easier to administrate and there is no need to install and setup a JDBC or ODBC driver separately. It was never easier to use MySQL databases in OpenOffice.org Base.
diff --git a/mysqlc/source/description/description_es.txt b/mysqlc/source/description/description_es.txt
new file mode 100644
index 000000000000..9e04c85fbd84
--- /dev/null
+++ b/mysqlc/source/description/description_es.txt
@@ -0,0 +1 @@
+Conecta OpenOffice.org directamente con los servidores de MySQL \ No newline at end of file
diff --git a/mysqlc/source/description/description_fr.txt b/mysqlc/source/description/description_fr.txt
new file mode 100644
index 000000000000..ca3073273834
--- /dev/null
+++ b/mysqlc/source/description/description_fr.txt
@@ -0,0 +1 @@
+Connexion directe d'OpenOffice.org avec les serveurs MySQL. \ No newline at end of file
diff --git a/mysqlc/source/description/description_hu.txt b/mysqlc/source/description/description_hu.txt
new file mode 100644
index 000000000000..0b60de706018
--- /dev/null
+++ b/mysqlc/source/description/description_hu.txt
@@ -0,0 +1 @@
+Közvetlen kapcsolatot teremt az OpenOffice.org és a MySQL-kiszolgálók között. \ No newline at end of file
diff --git a/mysqlc/source/description/description_it.txt b/mysqlc/source/description/description_it.txt
new file mode 100644
index 000000000000..36326e214bf6
--- /dev/null
+++ b/mysqlc/source/description/description_it.txt
@@ -0,0 +1 @@
+Consente la connessione diretta tra OpenOffice.org e i server MySQL \ No newline at end of file
diff --git a/mysqlc/source/description/description_ja.txt b/mysqlc/source/description/description_ja.txt
new file mode 100644
index 000000000000..3d6a70eb9489
--- /dev/null
+++ b/mysqlc/source/description/description_ja.txt
@@ -0,0 +1 @@
+OpenOffice.org ã‚’ MySQL サーãƒãƒ¼ã¨ç›´æŽ¥ã«æŽ¥ç¶šã•ã›ã‚‹ \ No newline at end of file
diff --git a/mysqlc/source/description/description_ko.txt b/mysqlc/source/description/description_ko.txt
new file mode 100644
index 000000000000..6b4ca29be8ce
--- /dev/null
+++ b/mysqlc/source/description/description_ko.txt
@@ -0,0 +1 @@
+MySQL 서버를 통해 OpenOffice.orgì— ì§ì ‘ 연결합니다. \ No newline at end of file
diff --git a/mysqlc/source/description/description_nl.txt b/mysqlc/source/description/description_nl.txt
new file mode 100644
index 000000000000..1405fd0b2ff1
--- /dev/null
+++ b/mysqlc/source/description/description_nl.txt
@@ -0,0 +1 @@
+Verbindt OpenOffice.org direct met MySQL Servers \ No newline at end of file
diff --git a/mysqlc/source/description/description_pl.txt b/mysqlc/source/description/description_pl.txt
new file mode 100644
index 000000000000..03e0f23bbc99
--- /dev/null
+++ b/mysqlc/source/description/description_pl.txt
@@ -0,0 +1 @@
+Laczy witryne OpenOffice.org bezposrednio z systemem MySQL Servers \ No newline at end of file
diff --git a/mysqlc/source/description/description_pt-BR.txt b/mysqlc/source/description/description_pt-BR.txt
new file mode 100644
index 000000000000..21d3ba28a5da
--- /dev/null
+++ b/mysqlc/source/description/description_pt-BR.txt
@@ -0,0 +1 @@
+Conecta o OpenOffice.org diretamente aos servidores MySQL \ No newline at end of file
diff --git a/mysqlc/source/description/description_pt.txt b/mysqlc/source/description/description_pt.txt
new file mode 100644
index 000000000000..1f05c487e03e
--- /dev/null
+++ b/mysqlc/source/description/description_pt.txt
@@ -0,0 +1 @@
+Liga o OpenOffice.org directamente aos servidores MySQL \ No newline at end of file
diff --git a/mysqlc/source/description/description_ru.txt b/mysqlc/source/description/description_ru.txt
new file mode 100644
index 000000000000..633b2c9514df
--- /dev/null
+++ b/mysqlc/source/description/description_ru.txt
@@ -0,0 +1 @@
+Подключает OpenOffice.org напрÑмую к Ñерверам MySQL
diff --git a/mysqlc/source/description/description_sv.txt b/mysqlc/source/description/description_sv.txt
new file mode 100644
index 000000000000..d7fc80975763
--- /dev/null
+++ b/mysqlc/source/description/description_sv.txt
@@ -0,0 +1 @@
+Ansluter OpenOffice.org direkt till MySQL-servrarna \ No newline at end of file
diff --git a/mysqlc/source/description/description_zh-CN.txt b/mysqlc/source/description/description_zh-CN.txt
new file mode 100644
index 000000000000..c38bc47a41a8
--- /dev/null
+++ b/mysqlc/source/description/description_zh-CN.txt
@@ -0,0 +1 @@
+å°† OpenOffice.org 与 MySQL æœåŠ¡å™¨ç›´æŽ¥ç›¸è¿ž \ No newline at end of file
diff --git a/mysqlc/source/description/description_zh-TW.txt b/mysqlc/source/description/description_zh-TW.txt
new file mode 100644
index 000000000000..de628909d369
--- /dev/null
+++ b/mysqlc/source/description/description_zh-TW.txt
@@ -0,0 +1 @@
+å°‡ OpenOffice.org 直接連線至 MySQL 伺æœå™¨ \ No newline at end of file
diff --git a/mysqlc/source/exports.dxp b/mysqlc/source/exports.dxp
new file mode 100644
index 000000000000..51703a04666a
--- /dev/null
+++ b/mysqlc/source/exports.dxp
@@ -0,0 +1,2 @@
+component_writeInfo
+component_getFactory
diff --git a/mysqlc/source/makefile.mk b/mysqlc/source/makefile.mk
new file mode 100644
index 000000000000..9af646c0f383
--- /dev/null
+++ b/mysqlc/source/makefile.mk
@@ -0,0 +1,312 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..
+PRJNAME=mysqlc
+
+.INCLUDE : $(PRJ)$/version.mk
+
+TARGET=mysqlc
+ENABLE_EXCEPTIONS=TRUE
+LIBTARGET=NO
+EXTENSIONNAME:=mysql-connector-ooo
+
+EXTERNAL_WARNINGS_NOT_ERRORS = TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+#-------------------------------------------------------------------
+
+#---- extension version
+EXTENSION_VERSION_BASE=$(MYSQLC_VERSION_MAJOR).$(MYSQLC_VERSION_MINOR).$(MYSQLC_VERSION_MICRO)
+ EXTENSION_VERSION=$(EXTENSION_VERSION_BASE)
+
+#---- extension title package name
+.IF "$(MYSQLC_STATUS)" == "final"
+ EXTENSION_TITLE:=$(MYSQLC_TITLE)
+ EXTENSION_ZIPNAME:=$(EXTENSIONNAME)
+.ELSE
+ EXTENSION_TITLE:=$(MYSQLC_TITLE) ($(MYSQLC_STATUS))
+ EXTENSION_ZIPNAME:=$(EXTENSIONNAME)
+.ENDIF
+
+#-------------------------------------------------------------------
+
+# set default symbol visibility / scope to hidden
+.IF "$(COMNAME)" == "gcc3"
+.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
+ CFLAGS += -fvisibility=hidden
+.ENDIF # HAVE_GCC_VISIBILITY_FEATURE
+.ENDIF # gcc3
+
+.IF "$(COMNAME)" == "sunpro5"
+.IF "$(CCNUMVER)" >= "00050005"
+ CFLAGS += -xldscope=hidden
+.ENDIF # 5.5
+.ENDIF # sunpro5
+
+#-------------------------------------------------------------------
+
+# The headers delivered from C/C++ have a habit of putting a ";" after the closing bracked of a namespace, which
+# yields a warning with Solaris' compiler. Until this is fixed in C/C++, silence this warning
+.IF "$(OS)" == "SOLARIS"
+ CFLAGSWARNCXX+=,wemptydecl
+ CFLAGSWARNCXX:=$(CFLAGSWARNCXX:s/ ,/,/)
+.ENDIF
+
+#-------------------------------------------------------------------
+.IF "$(ENABLE_MYSQLC)" != "YES"
+@all:
+ @echo "Mysql native driver extension build disabled."
+.ENDIF
+
+# use the static version
+.IF "$(GUI)"=="WNT"
+ MYSQL_LIBDIR=$(LIBMYSQL_PATH)$/lib
+ MYSQL_INCDIR=$(LIBMYSQL_PATH)$/include
+.ELSE
+ .IF "$(SYSTEM_MYSQL)" != "YES"
+ MYSQL_LIBDIR=$(LIBMYSQL_PATH)$/lib
+ MYSQL_INCDIR=$(LIBMYSQL_PATH)$/include
+ .ENDIF
+.ENDIF
+
+.IF "$(SYSTEM_MYSQL)" == "YES"
+CFLAGS+=-DSYSTEM_MYSQL
+.ENDIF
+
+.IF "$(SYSTEM_MYSQL_CPPCONN)" == "YES"
+CFLAGS+=-DSYSTEM_MYSQL_CPPCONN
+.ENDIF
+
+CDEFS+=-DCPPDBC_EXPORTS -DCPPCONN_LIB_BUILD
+.IF "$(SYSTEM_MYSQL_CPPCONN)" != "YES"
+CDEFS += -DCPPCONN_LIB=\"$(DLLPRE)mysqlcppconn$(DLLPOST)\"
+.ELSE
+CDEFS += -DCPPCONN_LIB=\"$(shell readlink /usr/lib/libmysqlcppconn.so)\"
+.ENDIF
+
+# --------------- MySQL settings ------------------
+.IF "$(GUI)"=="WNT"
+ MYSQL_INC=-I$(SOLARINCDIR)$/mysqlcppconn -I$(SOLARINCDIR)$/mysqlcppconn/cppconn -I$(MYSQL_INCDIR)
+ MYSQL_LIB=$(MYSQL_LIBDIR)$/libmysql.lib
+ MYSQL_LIBFILE=$(MYSQL_LIBDIR)$/libmysql.dll
+ MYSQL_CPPCONNFILE=$(SOLARBINDIR)$/$(DLLPRE)mysqlcppconn$(DLLPOST)
+.ELSE
+ .IF "$(SYSTEM_MYSQL)" != "YES"
+ MYSQL_INC+=-I$(MYSQL_INCDIR)
+ .IF "$(OS)"=="MACOSX"
+ MYSQL_LIBFILE=$(MYSQL_LIBDIR)$/$(DLLPRE)mysql.16$(DLLPOST)
+ .ELSE
+ MYSQL_LIBFILE=$(MYSQL_LIBDIR)$/$(DLLPRE)mysql$(DLLPOST).16
+ .ENDIF
+
+ # checkdll will complain if we do not point it to the libmysql lib
+ EXTRALIBPATHS=-L$(MYSQL_LIBDIR)
+ .ENDIF
+
+ .IF "$(SYSTEM_MYSQL_CPPCONN)" != "YES"
+ .IF "$(OS)"=="MACOSX" || "$(OS)" == "SOLARIS"
+ MYSQL_LIB+=-lz -lm
+ .ELSE
+ MYSQL_LIB+=-rdynamic -lz -lcrypt -lnsl -lm
+ .ENDIF
+ MYSQL_CPPCONNFILE=$(SOLARLIBDIR)$/$(DLLPRE)mysqlcppconn$(DLLPOST)
+ .ELSE
+ MYSQL_CPPCONN_LIB+=-lmysqlcppconn
+ .ENDIF
+.ENDIF
+
+.IF "$(SYSTEM_MYSQL_CPPCONN)" != "YES"
+ MYSQL_INC+=-I$(SOLARINCDIR)$/mysqlcppconn -I$(SOLARINCDIR)$/mysqlcppconn/cppconn
+.ENDIF
+
+CFLAGS+=-I..$/..$/inc $(MYSQL_INC) \
+ -DMYSQLC_VERSION_MAJOR=$(MYSQLC_VERSION_MAJOR) \
+ -DMYSQLC_VERSION_MINOR=$(MYSQLC_VERSION_MINOR) \
+ -DMYSQLC_VERSION_MICRO=$(MYSQLC_VERSION_MICRO) \
+ $(MYSQL_DEFINES)
+
+# provide the name of the MySQL client lib to the C++ code
+.IF "$(SYSTEM_MYSQL)" != "YES"
+CDEFS += -DMYSQL_LIB=\"$(MYSQL_LIBFILE:f)\"
+.ENDIF
+
+#--------------------------------------------------
+
+SHL1DLLPRE=
+SHL1TARGET=$(TARGET).uno
+LIB1TARGET=$(SLB)$/$(SHL1TARGET).lib
+LIB1OBJFILES= \
+ $(SLO)$/mysqlc_driver.obj \
+ $(SLO)$/mysqlc_services.obj \
+ $(SLO)$/mysqlc_connection.obj \
+ $(SLO)$/mysqlc_resultset.obj \
+ $(SLO)$/mysqlc_resultsetmetadata.obj \
+ $(SLO)$/mysqlc_statement.obj \
+ $(SLO)$/mysqlc_preparedstatement.obj \
+ $(SLO)$/mysqlc_databasemetadata.obj \
+ $(SLO)$/mysqlc_types.obj \
+ $(SLO)$/mysqlc_general.obj \
+ $(SLO)$/mysqlc_propertyids.obj
+
+SHL1STDLIBS= \
+ $(MYSQL_LIB) \
+ $(MYSQL_CPPCONN_LIB) \
+ $(CPPULIB) \
+ $(SALLIB) \
+ $(SALHELPERLIB) \
+ $(CPPUHELPERLIB)
+
+SHL1VERSIONMAP=$(TARGET).map
+SHL1LIBS= $(LIB1TARGET)
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+SHL1RPATH=OXT
+DEF1NAME= $(SHL1TARGET)
+
+# create Extension -----------------------------
+
+# DESCRIPTION_SRC is the source file which is copied into the extension
+# It is defaulted to "description.xml", but we want to pre-process it, so we use an intermediate
+# file
+DESCRIPTION_SRC = $(MISC)$/description.xml
+
+COMPONENT_XCU=\
+ registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu
+
+COMPONENT_MERGED_XCU= \
+ $(foreach,i,$(COMPONENT_XCU) $(EXTENSIONDIR)$/$i)
+
+COMPONENT_LIBRARY = \
+ $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST)
+
+COMPONENT_MYSQL_LIBFILE = \
+ $(EXTENSIONDIR)$/$(MYSQL_LIBFILE:f)
+
+COMPONENT_MYSQL_CPPCONN_FILE=\
+ $(EXTENSIONDIR)$/$(MYSQL_CPPCONNFILE:f)
+
+COMPONENT_LIBRARIES=\
+ $(COMPONENT_LIBRARY)
+
+COMPONENT_IMAGES= \
+ $(EXTENSIONDIR)$/images$/extension_32.png
+
+# ........ component description ........
+# one file for each WITH_LANG token
+DESC_LANGS=$(WITH_LANG)
+.IF "$(DESC_LANGS)" == ""
+ DESC_LANGS=en-US
+.ENDIF
+COMPONENT_DESCRIPTIONS=$/$(foreach,lang,$(DESC_LANGS) description$/description_$(lang).txt)
+COMPONENT_DESCRIPTIONS_PACKDEP= \
+ $(foreach,i,$(COMPONENT_DESCRIPTIONS) $(EXTENSIONDIR)$/$i)
+
+# WITH_LANG might contain languages which we actually do not have a description for (yet)
+# Find those, and treat the specially
+
+# first, find those locales which we actually have a description file for
+EXISTING_DESCRIPTIONS=$(foreach,i,$(shell $(FIND) .$/description -name "description_*.txt") $(i:f))
+EXISTING_LANGS=$(foreach,i,$(EXISTING_DESCRIPTIONS) $(i:s,description_,,:s,.txt,,))
+
+# then, create a version of WITH_LANG where we stripped all those locales
+EXISTING_LANGS_NORMALIZED=$(strip $(EXISTING_LANGS))
+EXISTING_LANGS_NORMALIZED:=+$(EXISTING_LANGS_NORMALIZED:s/ /+/)+
+MISSING_LANGS=$(foreach,lang,$(WITH_LANG) $(eq,$(EXISTING_LANGS_NORMALIZED:s/+$(lang)+//),$(EXISTING_LANGS_NORMALIZED) $(lang) ))
+
+# ........ dependencies for packaging the extension ........
+EXTENSION_PACKDEPS=makefile.mk $(COMPONENT_IMAGES) $(COMPONENT_DESCRIPTIONS_PACKDEP) $(COMPONENT_MERGED_XCU)
+
+.IF "$(SYSTEM_MYSQL)" != "YES"
+EXTENSION_PACKDEPS+=$(COMPONENT_MYSQL_LIBFILE)
+.ENDIF
+
+.IF "$(SYSTEM_MYSQL_CPPCONN)" != "YES"
+EXTENSION_PACKDEPS+=$(COMPONENT_MYSQL_CPPCONN_FILE)
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+.INCLUDE : extension_pre.mk
+.INCLUDE : target.mk
+.INCLUDE : extension_post.mk
+
+$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+# existing descriptions: just copy
+$(EXTENSIONDIR)$/description$/%.txt: .$/description$/%.txt
+ @@-$(MKDIRHIER) $(@:d)
+ @$(COPY) $< $@ > $(NULLDEV)
+
+# xcu files: copy
+# the following is a hack for now - need to find out the generic mechanism later
+
+$(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu : .$/registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu
+ @@-$(MKDIRHIER) $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/DataAccess
+ @$(COPY) $< $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/DataAccess$/Drivers.xcu > $(NULLDEV)
+
+# non-existing descriptions: copy from the English version
+.IF "$(strip $(MISSING_LANGS))" != ""
+$(foreach,i,$(MISSING_LANGS) $(EXTENSIONDIR)$/description$/description_$i.txt): .$/description$/description_en-US.txt
+ @echo ------ WARNING: .$/description$/$(@:f) not found, falling back to English description
+ @@-$(MKDIRHIER) $(@:d)
+ @$(COPY) $< $@ > $(NULLDEV)
+.ENDIF
+
+$(DESCRIPTION_SRC): description.xml
+ +-$(RM) $@
+ $(TYPE) description.xml | $(SED) "s/#VERSION#/$(EXTENSION_VERSION)/" | $(SED) "s,#TITLE#,$(EXTENSION_TITLE)," > $@
+
+.IF "$(SYSTEM_MYSQL)" != "YES"
+# --- the MySQL client lib needs to be copied
+$(COMPONENT_MYSQL_LIBFILE): $(MYSQL_LIBFILE)
+ @@-$(MKDIRHIER) $(@:d)
+ @$(COPY) $< $@ > $(NULLDEV)
+ .IF "$(OS)" == "MACOSX"
+ install_name_tool -id @__________________________________________________OOO/$(MYSQL_LIBFILE:f) $@
+ .ENDIF
+.ENDIF
+
+.IF "$(SYSTEM_MYSQL_CPPCONN)" != "YES"
+# --- the MySQL cppconn lib needs to be copied
+$(COMPONENT_MYSQL_CPPCONN_FILE): $(MYSQL_CPPCONNFILE)
+ @@-$(MKDIRHIER) $(@:d)
+ @$(COPY) $< $@ > $(NULLDEV)
+ .IF "$(OS)" == "MACOSX"
+ install_name_tool -change $(MYSQL_LIBFILE:f) @loader_path/$(MYSQL_LIBFILE:f) $@
+ .ENDIF
+.ENDIF
+
+.IF "$(OS)" == "MACOSX"
+$(EXTENSION_TARGET): adjust_libmysql_path
+
+adjust_libmysql_path: $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST)
+ install_name_tool -change $(MYSQL_LIBFILE:f) @loader_path/$(MYSQL_LIBFILE:f) $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST)
+.ENDIF
diff --git a/mysqlc/source/manifest.xml b/mysqlc/source/manifest.xml
new file mode 100644
index 000000000000..107f6a878638
--- /dev/null
+++ b/mysqlc/source/manifest.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=native"
+ manifest:full-path="mysqlc.unoSHARED_EXTENSION"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="registry/data/org/openoffice/Office/DataAccess/Drivers.xcu"/>
+</manifest:manifest>
diff --git a/mysqlc/source/mysqlc.map b/mysqlc/source/mysqlc.map
new file mode 100644
index 000000000000..7c6d93f87852
--- /dev/null
+++ b/mysqlc/source/mysqlc.map
@@ -0,0 +1,7 @@
+UDK_3_0_0 {
+ global:
+ component_writeInfo;
+ component_getFactory;
+ local:
+ *;
+};
diff --git a/mysqlc/source/mysqlc.xml b/mysqlc/source/mysqlc.xml
new file mode 100644
index 000000000000..04e7d4ae708e
--- /dev/null
+++ b/mysqlc/source/mysqlc.xml
@@ -0,0 +1,79 @@
+<?xml version='1.0' encoding="UTF-8"?>
+<!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//W3C//DTD HTML 3.2//EN" "module-description.dtd">
+<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
+ <module-name>mysqlc</module-name>
+ <component-description>
+ <Author>Georg Richter</Author>
+ <Name>com.sun.star.comp.sdbc.mysqlc</Name>
+ <Description>
+ This is the implementation of the MySQL Connector/OO.org.
+ </Description>
+ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
+ <language>c++</language>
+ <status value="final"/>
+ <supported-service> com.sun.star.sdbc.Driver </supported-service>
+ <service-dependency> ... </service-dependency>
+ </component-description>
+ <project-build-dependency> cppuhelper </project-build-dependency>
+ <project-build-dependency> cppu </project-build-dependency>
+ <project-build-dependency> sal </project-build-dependency>
+
+ <runtime-module-dependency> cppuhelper </runtime-module-dependency>
+ <runtime-module-dependency> cppu1 </runtime-module-dependency>
+ <runtime-module-dependency> sal1 </runtime-module-dependency>
+
+ <type> com.sun.star.registry.XRegistryKey </type>
+ <type> com.sun.star.util.XCancellable </type>
+ <type> com.sun.star.util.XNumberFormatter </type>
+ <type> com.sun.star.uno.TypeClass </type>
+ <type> com.sun.star.uno.XWeak </type>
+ <type> com.sun.star.uno.XAggregation </type>
+ <type> com.sun.star.uno.XComponentContext </type>
+ <type> com.sun.star.beans.PropertyAttribute </type>
+ <type> com.sun.star.beans.XPropertyState </type>
+ <type> com.sun.star.beans.XPropertySet </type>
+ <type> com.sun.star.beans.PropertyValue </type>
+ <type> com.sun.star.beans.XMultiPropertySet </type>
+ <type> com.sun.star.beans.XFastPropertySet </type>
+ <type> com.sun.star.lang.XSingleServiceFactory </type>
+ <type> com.sun.star.lang.XTypeProvider </type>
+ <type> com.sun.star.lang.XSingleComponentFactory </type>
+ <type> com.sun.star.lang.EventObject </type>
+ <type> com.sun.star.lang.XComponent </type>
+ <type> com.sun.star.lang.IllegalArgumentException </type>
+ <type> com.sun.star.lang.DisposedException </type>
+ <type> com.sun.star.lang.XMultiServiceFactory </type>
+ <type> com.sun.star.lang.XServiceInfo </type>
+ <type> com.sun.star.lang.XUnoTunnel </type>
+ <type> com.sun.star.java.XJavaThreadRegister_11 </type>
+ <type> com.sun.star.java.XJavaVM </type>
+ <type> com.sun.star.sdbc.FetchDirection </type>
+ <type> com.sun.star.sdbc.XConnection </type>
+ <type> com.sun.star.sdbc.XStatement </type>
+ <type> com.sun.star.sdbc.XResultSet </type>
+ <type> com.sun.star.sdbc.XResultSetMetaDataSupplier</type>
+ <type> com.sun.star.sdbc.XColumnLocate </type>
+ <type> com.sun.star.sdbc.XResultSetUpdate </type>
+ <type> com.sun.star.sdbc.XWarningsSupplier </type>
+ <type> com.sun.star.sdbc.XRowUpdate </type>
+ <type> com.sun.star.sdbc.XMultipleResults </type>
+ <type> com.sun.star.sdbc.XBatchExecution </type>
+ <type> com.sun.star.sdbc.XPreparedBatchExecution </type>
+ <type> com.sun.star.sdbc.XParameters </type>
+ <type> com.sun.star.sdbc.XOutParameters </type>
+ <type> com.sun.star.sdbc.DriverPropertyInfo </type>
+ <type> com.sun.star.sdbc.SQLWarning </type>
+ <type> com.sun.star.sdbc.XRow </type>
+ <type> com.sun.star.sdbc.ColumnSearch </type>
+ <type> com.sun.star.sdbc.ColumnValue </type>
+ <type> com.sun.star.sdbc.DataType </type>
+ <type> com.sun.star.sdbc.XDriver </type>
+ <type> com.sun.star.sdbc.TransactionIsolation </type>
+ <type> com.sun.star.sdbc.ResultSetType </type>
+ <type> com.sun.star.sdbc.ResultSetConcurrency </type>
+ <type> com.sun.star.sdbcx.XRowLocate </type>
+ <type> com.sun.star.sdbcx.XDeleteRows </type>
+ <type> com.sun.star.sdbcx.CompareBookmark </type>
+ <type> com.sun.star.sdb.XColumnUpdate </type>
+ <type> com.sun.star.sdb.XColumn </type>
+</module-description>
diff --git a/mysqlc/source/mysqlc_connection.cxx b/mysqlc/source/mysqlc_connection.cxx
new file mode 100644
index 000000000000..3bb2ff74dfb0
--- /dev/null
+++ b/mysqlc/source/mysqlc_connection.cxx
@@ -0,0 +1,791 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#include "mysqlc_connection.hxx"
+#include "mysqlc_databasemetadata.hxx"
+
+
+#include "mysqlc_driver.hxx"
+#include "mysqlc_statement.hxx"
+#include "mysqlc_preparedstatement.hxx"
+#include "mysqlc_general.hxx"
+
+#include <cppconn/driver.h>
+#include <cppconn/connection.h>
+#include <cppconn/statement.h>
+#include <cppconn/metadata.h>
+#include <cppconn/exception.h>
+
+#include <com/sun/star/sdbc/ColumnValue.hpp>
+#include <com/sun/star/sdbc/XRow.hpp>
+#include <com/sun/star/sdbc/TransactionIsolation.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
+
+#include <osl/module.hxx>
+#include <osl/thread.h>
+#include <osl/file.h>
+#include <rtl/uri.hxx>
+#include <rtl/ustrbuf.hxx>
+
+using namespace connectivity::mysqlc;
+
+#include <stdio.h>
+
+//------------------------------------------------------------------------------
+using namespace com::sun::star::uno;
+using namespace com::sun::star::container;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::sdbc;
+using ::osl::MutexGuard;
+using ::rtl::OUString;
+
+
+#define MYSQLC_URI_PREFIX "sdbc:mysqlc:"
+
+
+/* {{{ OConnection::OConnection() -I- */
+OConnection::OConnection(MysqlCDriver& _rDriver, sql::Driver * _cppDriver)
+ :OMetaConnection_BASE(m_aMutex)
+ ,OSubComponent<OConnection, OConnection_BASE>((::cppu::OWeakObject*)&_rDriver, this)
+ ,m_xMetaData(NULL)
+ ,m_rDriver(_rDriver)
+ ,cppDriver(_cppDriver)
+ ,m_bClosed(sal_False)
+ ,m_bUseCatalog(sal_False)
+ ,m_bUseOldDateFormat(sal_False)
+{
+ OSL_TRACE("OConnection::OConnection");
+ m_rDriver.acquire();
+}
+/* }}} */
+
+
+/* {{{ OConnection::OConnection() -I- */
+OConnection::~OConnection()
+{
+ OSL_TRACE("OConnection::~OConnection");
+ if (!isClosed()) {
+ close();
+ }
+ m_rDriver.release();
+}
+/* }}} */
+
+
+/* {{{ OConnection::release() -I- */
+void SAL_CALL OConnection::release()
+ throw()
+{
+ OSL_TRACE("OConnection::release");
+ relase_ChildImpl();
+}
+/* }}} */
+
+#ifndef SYSTEM_MYSQL
+ extern "C" { void SAL_CALL thisModule() {} }
+#endif
+
+/* {{{ OConnection::construct() -I- */
+void OConnection::construct(const OUString& url, const Sequence< PropertyValue >& info)
+ throw(SQLException)
+{
+ OSL_TRACE("OConnection::construct");
+ MutexGuard aGuard(m_aMutex);
+
+ sal_Int32 nIndex;
+ sal_Bool bEmbedded = sal_False;
+ OUString token;
+ OUString aHostName(RTL_CONSTASCII_USTRINGPARAM("localhost"));
+ sal_Int32 nPort = 3306;
+ OUString aDbName;
+
+ m_settings.encoding = m_rDriver.getDefaultEncoding();
+ m_settings.quoteIdentifier = OUString();
+
+ // parse url. Url has the following format:
+ // external server: sdbc:mysqlc:[hostname]:[port]/[dbname]
+
+ if (!url.compareTo(OUString(RTL_CONSTASCII_USTRINGPARAM(MYSQLC_URI_PREFIX)), sizeof(MYSQLC_URI_PREFIX)-1)) {
+ nIndex = 12;
+ } else {
+ bEmbedded = sal_True;
+ nIndex = 20;
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OConnection::construct (embedded MySQL)", *this);
+ }
+
+ token = url.getToken(0, '/', nIndex);
+ if (token.getLength()) {
+ sal_Int32 nIndex1 = 0;
+ OUString hostandport = token.getToken(0,':', nIndex1);
+ if (hostandport.getLength()) {
+ aHostName = hostandport;
+ hostandport = token.getToken(0, ':', nIndex1);
+ if (hostandport.getLength() && nIndex1) {
+ nPort = hostandport.toInt32();
+ }
+ token = url.getToken(0, '/', nIndex);
+ if (token.getLength() && nIndex) {
+ aDbName = token;
+ }
+ }
+ }
+
+ // get user and password for mysql connection
+ const PropertyValue *pIter = info.getConstArray();
+ const PropertyValue *pEnd = pIter + info.getLength();
+ OUString aUser, aPass, sUnixSocket, sNamedPipe;
+ bool unixSocketPassed = false;
+ bool namedPipePassed = false;
+
+ m_settings.connectionURL = url;
+ for (;pIter != pEnd;++pIter) {
+ if (!pIter->Name.compareToAscii("user")) {
+ OSL_VERIFY( pIter->Value >>= aUser );
+ } else if (!pIter->Name.compareToAscii("password")) {
+ OSL_VERIFY( pIter->Value >>= aPass );
+ } else if (!pIter->Name.compareToAscii("LocalSocket")) {
+ OSL_VERIFY( pIter->Value >>= sUnixSocket );
+ unixSocketPassed = true;
+ } else if (!pIter->Name.compareToAscii("NamedPipe")) {
+ OSL_VERIFY( pIter->Value >>= sNamedPipe );
+ namedPipePassed = true;
+ } else if ( !pIter->Name.compareToAscii("PublicConnectionURL")) {
+ OSL_VERIFY( pIter->Value >>= m_settings.connectionURL );
+ } else if ( !pIter->Name.compareToAscii("NewURL")) { // legacy name for "PublicConnectionURL"
+ OSL_VERIFY( pIter->Value >>= m_settings.connectionURL );
+ }
+ }
+
+ if (bEmbedded == sal_False) {
+ try {
+ sql::ConnectOptionsMap connProps;
+ std::string host_str = OUStringToOString(aHostName, m_settings.encoding).getStr();
+ std::string user_str = OUStringToOString(aUser, m_settings.encoding).getStr();
+ std::string pass_str = OUStringToOString(aPass, m_settings.encoding).getStr();
+ std::string schema_str = OUStringToOString(aDbName, m_settings.encoding).getStr();
+ connProps["hostName"] = sql::ConnectPropertyVal(host_str);
+ connProps["userName"] = sql::ConnectPropertyVal(user_str);
+ connProps["password"] = sql::ConnectPropertyVal(pass_str);
+ connProps["schema"] = sql::ConnectPropertyVal(schema_str);
+ connProps["port"] = sql::ConnectPropertyVal((int)(nPort));
+ if (unixSocketPassed) {
+ sql::SQLString socket_str = OUStringToOString(sUnixSocket, m_settings.encoding).getStr();
+ connProps["socket"] = socket_str;
+ } else if (namedPipePassed) {
+ sql::SQLString pipe_str = OUStringToOString(sNamedPipe, m_settings.encoding).getStr();
+ connProps["socket"] = pipe_str;
+ }
+
+#ifndef SYSTEM_MYSQL
+ ::rtl::OUString sMySQLClientLib( RTL_CONSTASCII_USTRINGPARAM( MYSQL_LIB ) );
+
+ ::rtl::OUString moduleBase;
+ OSL_VERIFY( ::osl::Module::getUrlFromAddress( &thisModule, moduleBase ) );
+ ::rtl::OUString sMySQLClientLibURL;
+ try
+ {
+ sMySQLClientLibURL = ::rtl::Uri::convertRelToAbs( moduleBase, sMySQLClientLib.pData );
+ }
+ catch ( const ::rtl::MalformedUriException& e )
+ {
+ (void)e; // silence compiler
+ #if OSL_DEBUG_LEVEL > 0
+ ::rtl::OString sMessage( "OConnection::construct: malformed URI: " );
+ sMessage += ::rtl::OUStringToOString( e.getMessage(), osl_getThreadTextEncoding() );
+ OSL_FAIL( sMessage.getStr() );
+ #endif
+ }
+
+ ::rtl::OUString sMySQLClientLibPath;
+ osl_getSystemPathFromFileURL( sMySQLClientLibURL.pData, &sMySQLClientLibPath.pData );
+
+ sql::SQLString mysqlLib = ::rtl::OUStringToOString( sMySQLClientLibPath, osl_getThreadTextEncoding() ).getStr();
+ connProps["clientlib"] = mysqlLib;
+
+ OSL_TRACE("clientlib=%s", mysqlLib.c_str());
+#endif
+
+ OSL_TRACE("hostName=%s", host_str.c_str());
+ OSL_TRACE("port=%i", int(nPort));
+ OSL_TRACE("userName=%s", user_str.c_str());
+ OSL_TRACE("password=%s", pass_str.c_str());
+ OSL_TRACE("schema=%s", schema_str.c_str());
+
+ m_settings.cppConnection.reset(cppDriver->connect(connProps));
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+ } else {
+ // TODO: support for embedded server
+ }
+
+ m_settings.schema = aDbName;
+ OSL_TRACE("%s", OUStringToOString(m_settings.schema, getConnectionEncoding()).getStr());
+
+ // Check if the server is 4.1 or above
+ if (this->getMysqlVersion() < 40100) {
+ throw SQLException(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MySQL Connector/OO.org requires MySQL Server 4.1 or above" ) ),
+ *this,
+ ::rtl::OUString(),
+ 0,
+ Any());
+ }
+ std::auto_ptr<sql::Statement> stmt(m_settings.cppConnection->createStatement());
+ stmt->executeUpdate("SET session sql_mode='ANSI_QUOTES'");
+ stmt->executeUpdate("SET NAMES utf8");
+}
+/* }}} */
+
+
+// XServiceInfo
+IMPLEMENT_SERVICE_INFO(OConnection, "com.sun.star.sdbc.drivers.mysqlc.OConnection", "com.sun.star.sdbc.Connection")
+
+
+/* {{{ OConnection::createStatement() -I- */
+Reference< XStatement > SAL_CALL OConnection::createStatement()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::createStatement");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ // create a statement
+ Reference< XStatement > xReturn;
+ // the statement can only be executed once
+ try {
+ xReturn = new OStatement(this, m_settings.cppConnection->createStatement());
+ m_aStatements.push_back(WeakReferenceHelper(xReturn));
+ return xReturn;
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+ return xReturn;
+}
+/* }}} */
+
+
+/* {{{ OConnection::createStatement() -I- */
+Reference< XPreparedStatement > SAL_CALL OConnection::prepareStatement(const OUString& _sSql)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::prepareStatement");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+ const ::rtl::OUString sSqlStatement = transFormPreparedStatement( _sSql );
+
+ Reference< XPreparedStatement > xStatement;
+ try {
+ // create a statement
+ // the statement can only be executed more than once
+ xStatement = new OPreparedStatement(this,
+ m_settings.cppConnection->prepareStatement(OUStringToOString(sSqlStatement, getConnectionEncoding()).getStr()));
+ m_aStatements.push_back( WeakReferenceHelper( xStatement ) );
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+ return xStatement;
+}
+/* }}} */
+
+
+/* {{{ OConnection::prepareCall() -U- */
+Reference< XPreparedStatement > SAL_CALL OConnection::prepareCall(const OUString& /*_sSql*/ )
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::prepareCall");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OConnection::prepareCall", *this);
+ return Reference< XPreparedStatement >();
+}
+/* }}} */
+
+
+/* {{{ OConnection::nativeSQL() -I- */
+OUString SAL_CALL OConnection::nativeSQL(const OUString& _sSql)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::nativeSQL");
+ MutexGuard aGuard(m_aMutex);
+
+ const ::rtl::OUString sSqlStatement = transFormPreparedStatement( _sSql );
+ ::rtl::OUString sNativeSQL;
+ try {
+ sNativeSQL = mysqlc_sdbc_driver::convert(m_settings.cppConnection->nativeSQL(mysqlc_sdbc_driver::convert(sSqlStatement, getConnectionEncoding())),
+ getConnectionEncoding());
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+ return sNativeSQL;
+}
+/* }}} */
+
+
+/* {{{ OConnection::setAutoCommit() -I- */
+void SAL_CALL OConnection::setAutoCommit(sal_Bool autoCommit)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::setAutoCommit");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+ try {
+ m_settings.cppConnection->setAutoCommit(autoCommit == sal_True? true:false);
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OConnection::getAutoCommit() -I- */
+sal_Bool SAL_CALL OConnection::getAutoCommit()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::getAutoCommit");
+ // you have to distinguish which if you are in autocommit mode or not
+ // at normal case true should be fine here
+
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ sal_Bool autoCommit = sal_False;
+ try {
+ autoCommit = m_settings.cppConnection->getAutoCommit() == true ? sal_True : sal_False;
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+ return autoCommit;
+}
+/* }}} */
+
+
+/* {{{ OConnection::commit() -I- */
+void SAL_CALL OConnection::commit()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::commit");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+ try {
+ m_settings.cppConnection->commit();
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OConnection::rollback() -I- */
+void SAL_CALL OConnection::rollback()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::rollback");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+ try {
+ m_settings.cppConnection->rollback();
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OConnection::isClosed() -I- */
+sal_Bool SAL_CALL OConnection::isClosed()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::isClosed");
+ MutexGuard aGuard(m_aMutex);
+
+ // just simple -> we are close when we are disposed taht means someone called dispose(); (XComponent)
+ return (OConnection_BASE::rBHelper.bDisposed);
+}
+/* }}} */
+
+
+/* {{{ OConnection::createStatement() -I- */
+Reference< XDatabaseMetaData > SAL_CALL OConnection::getMetaData()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::getMetaData");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ Reference< XDatabaseMetaData > xMetaData = m_xMetaData;
+ if (!xMetaData.is()) {
+ try {
+ xMetaData = new ODatabaseMetaData(*this); // need the connection because it can return it
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+ m_xMetaData = xMetaData;
+ }
+
+ return xMetaData;
+}
+/* }}} */
+
+
+/* {{{ OConnection::createStatement() -I- */
+void SAL_CALL OConnection::setReadOnly(sal_Bool readOnly)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::setReadOnly");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ m_settings.readOnly = readOnly;
+}
+/* }}} */
+
+
+/* {{{ OConnection::createStatement() -I- */
+sal_Bool SAL_CALL OConnection::isReadOnly()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::isReadOnly");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ // return if your connection to readonly
+ return (m_settings.readOnly);
+}
+/* }}} */
+
+
+/* {{{ OConnection::createStatement() -I- */
+void SAL_CALL OConnection::setCatalog(const OUString& catalog)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::setCatalog");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ try {
+// m_settings.cppConnection->setCatalog(OUStringToOString(catalog, m_settings.encoding).getStr());
+ m_settings.cppConnection->setSchema(OUStringToOString(catalog, getConnectionEncoding()).getStr());
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OConnection::createStatement() -I- */
+OUString SAL_CALL OConnection::getCatalog()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::getCatalog");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ OUString catalog;
+ try {
+ catalog = mysqlc_sdbc_driver::convert(m_settings.cppConnection->getSchema(), getConnectionEncoding());
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+ return catalog;
+}
+/* }}} */
+
+
+/* {{{ OConnection::createStatement() -I- */
+void SAL_CALL OConnection::setTransactionIsolation(sal_Int32 level)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::setTransactionIsolation");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ sql::enum_transaction_isolation cpplevel = sql::TRANSACTION_SERIALIZABLE;
+
+ switch (level) {
+ case TransactionIsolation::READ_UNCOMMITTED:
+ cpplevel = sql::TRANSACTION_READ_UNCOMMITTED;
+ break;
+ case TransactionIsolation::READ_COMMITTED:
+ cpplevel = sql::TRANSACTION_READ_COMMITTED;
+ break;
+ case TransactionIsolation::REPEATABLE_READ:
+ cpplevel = sql::TRANSACTION_REPEATABLE_READ;
+ break;
+ case TransactionIsolation::SERIALIZABLE:
+ cpplevel = sql::TRANSACTION_SERIALIZABLE;
+ break;
+ case TransactionIsolation::NONE:
+ cpplevel = sql::TRANSACTION_SERIALIZABLE;
+ break;
+ default:;
+ /* XXX: Exception ?? */
+ }
+ try {
+ m_settings.cppConnection->setTransactionIsolation(cpplevel);
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OConnection::createStatement() -I- */
+sal_Int32 SAL_CALL OConnection::getTransactionIsolation()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::getTransactionIsolation");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ try {
+ switch (m_settings.cppConnection->getTransactionIsolation()) {
+ case sql::TRANSACTION_SERIALIZABLE: return TransactionIsolation::SERIALIZABLE;
+ case sql::TRANSACTION_REPEATABLE_READ: return TransactionIsolation::REPEATABLE_READ;
+ case sql::TRANSACTION_READ_COMMITTED: return TransactionIsolation::READ_COMMITTED;
+ case sql::TRANSACTION_READ_UNCOMMITTED: return TransactionIsolation::READ_UNCOMMITTED;
+ default:
+ ;
+ }
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+ return TransactionIsolation::NONE;
+}
+/* }}} */
+
+
+/* {{{ OConnection::getTypeMap() -I- */
+Reference<XNameAccess> SAL_CALL OConnection::getTypeMap()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::getTypeMap");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ Reference<XNameAccess > t;
+ {
+ t = m_typeMap;
+ }
+ return (t);
+}
+/* }}} */
+
+
+/* {{{ OConnection::setTypeMap() -I- */
+void SAL_CALL OConnection::setTypeMap(const Reference<XNameAccess >& typeMap)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::setTypeMap");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ m_typeMap = typeMap;
+}
+/* }}} */
+
+
+// XCloseable
+/* {{{ OConnection::close() -I- */
+void SAL_CALL OConnection::close()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::close");
+ /*
+ we need block, because the mutex is a local variable,
+ which will guard the block
+ */
+ {
+ // we just dispose us
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+ }
+ dispose();
+}
+/* }}} */
+
+
+// XWarningsSupplier
+/* {{{ OConnection::getWarnings() -I- */
+Any SAL_CALL OConnection::getWarnings()
+ throw(SQLException, RuntimeException)
+{
+ Any x = Any();
+ OSL_TRACE("OConnection::getWarnings");
+ // when you collected some warnings -> return it
+ return x;
+}
+/* }}} */
+
+
+/* {{{ OConnection::clearWarnings() -I- */
+void SAL_CALL OConnection::clearWarnings()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::clearWarnings");
+ // you should clear your collected warnings here#
+}
+/* }}} */
+
+
+/* {{{ OConnection::buildTypeInfo() -I- */
+void OConnection::buildTypeInfo()
+ throw(SQLException)
+{
+ OSL_TRACE("OConnection::buildTypeInfo");
+}
+/* }}} */
+
+
+/* {{{ OConnection::disposing() -I- */
+void OConnection::disposing()
+{
+ OSL_TRACE("OConnection::disposing");
+ // we noticed that we should be destroied in near future so we have to dispose our statements
+ MutexGuard aGuard(m_aMutex);
+
+ for (OWeakRefArray::iterator i = m_aStatements.begin(); i != m_aStatements.end() ; ++i) {
+ Reference< XComponent > xComp(i->get(), UNO_QUERY);
+ if (xComp.is()) {
+ xComp->dispose();
+ }
+ }
+ m_aStatements.clear();
+
+ m_bClosed = sal_True;
+ m_xMetaData = WeakReference< XDatabaseMetaData >();
+
+ dispose_ChildImpl();
+ OConnection_BASE::disposing();
+}
+/* }}} */
+
+
+/* ToDo - upcast the connection to MySQL_Connection and use ::getSessionVariable() */
+
+/* {{{ OConnection::getMysqlVariable() -I- */
+OUString OConnection::getMysqlVariable(const char *varname)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::getMysqlVariable");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ OUString ret;
+ ::rtl::OUStringBuffer aStatement;
+ aStatement.appendAscii( "SHOW SESSION VARIABLES LIKE '" );
+ aStatement.appendAscii( varname );
+ aStatement.append( sal_Unicode( '\'' ) );
+
+ try {
+ XStatement * stmt = new OStatement(this, m_settings.cppConnection->createStatement());
+ Reference< XResultSet > rs = stmt->executeQuery( aStatement.makeStringAndClear() );
+ if (rs.is() && rs->next()) {
+ Reference< XRow > xRow(rs, UNO_QUERY);
+ ret = xRow->getString(2);
+ }
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+
+ return ret;
+}
+/* }}} */
+
+
+/* {{{ OConnection::getMysqlVersion() -I- */
+sal_Int32 OConnection::getMysqlVersion()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OConnection::getMysqlVersion");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OConnection_BASE::rBHelper.bDisposed);
+
+ sal_Int32 version(0);
+ try {
+ version = 10000 * m_settings.cppConnection->getMetaData()->getDatabaseMajorVersion();
+ version += 100 * m_settings.cppConnection->getMetaData()->getDatabaseMinorVersion();
+ version += m_settings.cppConnection->getMetaData()->getDatabasePatchVersion();
+ } catch (sql::SQLException & e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getConnectionEncoding());
+ }
+ return version;
+}
+/* }}} */
+
+
+/* {{{ OConnection::sdbcColumnType() -I- */
+// TODO: Not used
+//sal_Int32 OConnection::sdbcColumnType(OUString typeName)
+//{
+// OSL_TRACE("OConnection::sdbcColumnType");
+// int i = 0;
+// while (mysqlc_types[i].typeName) {
+// if (OUString::createFromAscii(mysqlc_types[i].typeName).equals(
+// typeName.toAsciiUpperCase()))
+// {
+// return mysqlc_types[i].dataType;
+// }
+// i++;
+// }
+// return 0;
+//}
+// -----------------------------------------------------------------------------
+::rtl::OUString OConnection::transFormPreparedStatement(const ::rtl::OUString& _sSQL)
+{
+ ::rtl::OUString sSqlStatement = _sSQL;
+ if ( !m_xParameterSubstitution.is() ) {
+ try {
+ Sequence< Any > aArgs(1);
+ Reference< XConnection> xCon = this;
+ aArgs[0] <<= NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ActiveConnection")), makeAny(xCon));
+
+ m_xParameterSubstitution.set(m_rDriver.getFactory()->createInstanceWithArguments(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.ParameterSubstitution")),aArgs),UNO_QUERY);
+ } catch(const Exception&) {}
+ }
+ if ( m_xParameterSubstitution.is() ) {
+ try {
+ sSqlStatement = m_xParameterSubstitution->substituteVariables(sSqlStatement,sal_True);
+ } catch(const Exception&) { }
+ }
+ return sSqlStatement;
+}
+
+/* }}} */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_connection.hxx b/mysqlc/source/mysqlc_connection.hxx
new file mode 100644
index 000000000000..d3113ad4c569
--- /dev/null
+++ b/mysqlc/source/mysqlc_connection.hxx
@@ -0,0 +1,249 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef MYSQLC_CONNECTION_HXX
+#define MYSQLC_CONNECTION_HXX
+
+#include "mysqlc_subcomponent.hxx"
+#include "mysqlc_types.hxx"
+
+#include <boost/shared_ptr.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/sdbc/ColumnSearch.hpp>
+#include <com/sun/star/sdbc/ColumnValue.hpp>
+#include <com/sun/star/sdbc/DataType.hpp>
+#include <com/sun/star/sdbc/SQLWarning.hpp>
+#include <com/sun/star/sdbc/XConnection.hpp>
+#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
+#include <com/sun/star/util/XStringSubstitution.hpp>
+
+#include <cppconn/driver.h>
+
+#include <cppuhelper/compbase3.hxx>
+#include <cppuhelper/weakref.hxx>
+#include <rtl/string.hxx>
+
+#include <map>
+
+#define UNUSED_PARAM __attribute__((unused))
+
+namespace sql
+{
+ class SQLException;
+}
+
+namespace connectivity
+{
+ class OMetaConnection;
+ class ODatabaseMetaData;
+
+ namespace mysqlc
+ {
+ using ::rtl::OUString;
+ using ::com::sun::star::sdbc::SQLWarning;
+ using ::com::sun::star::sdbc::SQLException;
+ using ::com::sun::star::uno::RuntimeException;
+ typedef ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > my_XStatementRef;
+ typedef ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > my_XPreparedStatementRef;
+ typedef ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > my_XNameAccessRef;
+ typedef ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > my_XDatabaseMetaDataRef;
+
+ typedef ::cppu::WeakComponentImplHelper3< ::com::sun::star::sdbc::XConnection,
+ ::com::sun::star::sdbc::XWarningsSupplier,
+ ::com::sun::star::lang::XServiceInfo
+ > OMetaConnection_BASE;
+ struct ConnectionSettings
+ {
+ rtl_TextEncoding encoding;
+ std::auto_ptr<sql::Connection> cppConnection;
+ OUString schema;
+ OUString quoteIdentifier;
+ OUString connectionURL;
+ sal_Bool readOnly;
+ };
+
+ class MysqlCDriver;
+
+ typedef OMetaConnection_BASE OConnection_BASE;
+
+ typedef std::vector< ::com::sun::star::uno::WeakReferenceHelper > OWeakRefArray;
+
+ class OConnection : public OBase_Mutex,
+ public OConnection_BASE,
+ public connectivity::mysqlc::OSubComponent<OConnection, OConnection_BASE>
+ {
+ friend class connectivity::mysqlc::OSubComponent<OConnection, OConnection_BASE>;
+
+ private:
+ ConnectionSettings m_settings;
+
+ private:
+ ::com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > m_typeMap;
+ ::com::sun::star::uno::Reference< com::sun::star::util::XStringSubstitution > m_xParameterSubstitution;
+ protected:
+
+ //====================================================================
+ // Data attributes
+ //====================================================================
+ ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
+
+ OWeakRefArray m_aStatements; // vector containing a list
+ // of all the Statement objects
+ // for this Connection
+
+ SQLWarning m_aLastWarning; // Last SQLWarning generated by an operation
+ OUString m_aURL; // URL of connection
+ OUString m_sUser; // the user name
+ MysqlCDriver& m_rDriver; // Pointer to the owning driver object
+ sql::Driver* cppDriver;
+
+ sal_Bool m_bClosed;
+ sal_Bool m_bUseCatalog; // should we use the catalog on filebased databases
+ sal_Bool m_bUseOldDateFormat;
+
+
+ void buildTypeInfo() throw(SQLException);
+ public:
+ OUString getMysqlVariable(const char *varname)
+ throw(SQLException, RuntimeException);
+
+ sal_Int32 getMysqlVersion()
+ throw(SQLException, RuntimeException);
+
+ virtual void construct(const OUString& url,const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& info)
+ throw(SQLException);
+
+ OConnection(MysqlCDriver& _rDriver, sql::Driver * cppDriver);
+ virtual ~OConnection();
+
+ void closeAllStatements () throw(SQLException);
+
+
+ rtl_TextEncoding getConnectionEncoding() { return m_settings.encoding; }
+
+
+ // OComponentHelper
+ virtual void SAL_CALL disposing(void);
+
+ // XInterface
+ virtual void SAL_CALL release() throw();
+
+ // XServiceInfo
+ DECLARE_SERVICE_INFO();
+ // XConnection
+ my_XStatementRef SAL_CALL createStatement()
+ throw(SQLException, RuntimeException);
+
+ my_XPreparedStatementRef SAL_CALL prepareStatement(const OUString& sql)
+ throw(SQLException, RuntimeException);
+
+ my_XPreparedStatementRef SAL_CALL prepareCall(const OUString& sql)
+ throw(SQLException, RuntimeException);
+
+ OUString SAL_CALL nativeSQL(const OUString& sql)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setAutoCommit(sal_Bool autoCommit)
+ throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL getAutoCommit()
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL commit()
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL rollback()
+ throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL isClosed()
+ throw(SQLException, RuntimeException);
+
+ my_XDatabaseMetaDataRef SAL_CALL getMetaData()
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setReadOnly(sal_Bool readOnly)
+ throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL isReadOnly()
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setCatalog(const OUString& catalog)
+ throw(SQLException, RuntimeException);
+
+ OUString SAL_CALL getCatalog()
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setTransactionIsolation(sal_Int32 level)
+ throw(SQLException, RuntimeException);
+
+ sal_Int32 SAL_CALL getTransactionIsolation()
+ throw(SQLException, RuntimeException);
+
+ my_XNameAccessRef SAL_CALL getTypeMap()
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setTypeMap(const my_XNameAccessRef& typeMap)
+ throw(SQLException, RuntimeException);
+ // XCloseable
+ void SAL_CALL close()
+ throw(SQLException, RuntimeException);
+ // XWarningsSupplier
+ ::com::sun::star::uno::Any SAL_CALL getWarnings()
+ throw(SQLException, RuntimeException);
+ void SAL_CALL clearWarnings()
+ throw(SQLException, RuntimeException);
+
+ // TODO: Not used
+ //sal_Int32 sdbcColumnType(OUString typeName);
+ inline const ConnectionSettings& getConnectionSettings() const { return m_settings; }
+ ::rtl::OUString transFormPreparedStatement(const ::rtl::OUString& _sSQL);
+
+ // should we use the catalog on filebased databases
+ inline sal_Bool isCatalogUsed() const { return m_bUseCatalog; }
+ inline OUString getUserName() const { return m_sUser; }
+ inline const MysqlCDriver& getDriver() const { return m_rDriver;}
+ inline rtl_TextEncoding getTextEncoding() const { return m_settings.encoding; }
+
+ }; /* OConnection */
+ // TODO: Not used.
+ //inline OUString getPattern(OUString p) { return (p.getLength()) ? p : ASC2OU("%"); }
+ } /* mysqlc */
+} /* connectivity */
+#endif // MYSQLC_CONNECTION_HXX
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_databasemetadata.cxx b/mysqlc/source/mysqlc_databasemetadata.cxx
new file mode 100644
index 000000000000..fef3e5524f87
--- /dev/null
+++ b/mysqlc/source/mysqlc_databasemetadata.cxx
@@ -0,0 +1,2215 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+#include "mysqlc_databasemetadata.hxx"
+#include <com/sun/star/sdbc/DataType.hpp>
+#include <com/sun/star/sdbc/ResultSetType.hpp>
+#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
+#include <com/sun/star/sdbc/TransactionIsolation.hpp>
+#include <com/sun/star/sdbc/KeyRule.hpp>
+#include <com/sun/star/sdbc/Deferrability.hpp>
+#include <com/sun/star/sdbc/IndexType.hpp>
+#include <com/sun/star/sdbc/BestRowScope.hpp>
+#include <com/sun/star/sdbc/ColumnType.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+
+
+#include "mysqlc_general.hxx"
+#include "mysqlc_statement.hxx"
+#include "mysqlc_driver.hxx"
+#include "mysqlc_preparedstatement.hxx"
+
+#include <stdio.h>
+
+using namespace connectivity::mysqlc;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::sdbc;
+using ::rtl::OUString;
+using mysqlc_sdbc_driver::getStringFromAny;
+
+#include <cppconn/connection.h>
+#include <cppconn/resultset.h>
+#include <cppconn/metadata.h>
+#include <cppconn/statement.h>
+#include <cppconn/prepared_statement.h>
+
+#include <sal/macros.h>
+
+static std::string wild("%");
+
+using ::rtl::OUStringToOString;
+
+// -----------------------------------------------------------------------------
+void lcl_setRows_throw(const Reference< XResultSet >& _xResultSet,sal_Int32 _nType,const std::vector< std::vector< Any > >& _rRows)
+{
+ Reference< XInitialization> xIni(_xResultSet,UNO_QUERY);
+ Sequence< Any > aArgs(2);
+ aArgs[0] <<= _nType;
+
+ Sequence< Sequence< Any > > aRows(_rRows.size());
+
+ std::vector< std::vector< Any > >::const_iterator aIter = _rRows.begin();
+ Sequence< Any > * pRowsIter = aRows.getArray();
+ Sequence< Any > * pRowsEnd = pRowsIter + aRows.getLength();
+ for (; pRowsIter != pRowsEnd;++pRowsIter,++aIter) {
+ if (!aIter->empty()) {
+ Sequence<Any> aSeq(&(*aIter->begin()),aIter->size());
+ (*pRowsIter) = aSeq;
+ }
+ }
+ aArgs[1] <<= aRows;
+ xIni->initialize(aArgs);
+}
+
+
+/* {{{ ODatabaseMetaData::ODatabaseMetaData() -I- */
+ODatabaseMetaData::ODatabaseMetaData(OConnection& _rCon)
+ :m_rConnection(_rCon)
+ ,m_bUseCatalog(sal_True)
+ ,meta(_rCon.getConnectionSettings().cppConnection->getMetaData())
+ ,identifier_quote_string_set(false)
+{
+ OSL_TRACE("ODatabaseMetaData::ODatabaseMetaData");
+ if (!m_rConnection.isCatalogUsed())
+ {
+ osl_incrementInterlockedCount(&m_refCount);
+ m_bUseCatalog = !(usesLocalFiles() || usesLocalFilePerTable());
+ osl_decrementInterlockedCount(&m_refCount);
+ }
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::~ODatabaseMetaData() -I- */
+ODatabaseMetaData::~ODatabaseMetaData()
+{
+ OSL_TRACE("ODatabaseMetaData::~ODatabaseMetaData");
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
+OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, const std::string& (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ OUString stringMetaData;
+ try {
+ stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return stringMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
+OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, std::string (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ OUString stringMetaData;
+ try {
+ stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return stringMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
+OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, const sql::SQLString& (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ OUString stringMetaData;
+ try {
+ stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return stringMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getStringMetaData() -I- */
+OUString ODatabaseMetaData::impl_getStringMetaData(const sal_Char* _methodName, sql::SQLString (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ OUString stringMetaData;
+ try {
+ stringMetaData = mysqlc_sdbc_driver::convert((meta->*_Method)(), m_rConnection.getConnectionEncoding());
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return stringMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getInt32MetaData() -I- */
+sal_Int32 ODatabaseMetaData::impl_getInt32MetaData(const sal_Char* _methodName, unsigned int (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ sal_Int32 int32MetaData(0);
+ try {
+ int32MetaData = (meta->*_Method)();
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return int32MetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getBoolMetaData() -I- */
+sal_Bool ODatabaseMetaData::impl_getBoolMetaData(const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)() )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ sal_Bool boolMetaData(0);
+ try {
+ boolMetaData = (meta->*_Method)() ? sal_True : sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return boolMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getBoolMetaData() -I- */
+sal_Bool ODatabaseMetaData::impl_getBoolMetaData(const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)(int), sal_Int32 _arg )
+{
+ OSL_TRACE( "mysqlc::ODatabaseMetaData::%s", _methodName);
+ sal_Bool boolMetaData(0);
+ try {
+ boolMetaData = (meta->*_Method)( _arg ) ? sal_True : sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException(_methodName, *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException(_methodName, *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return boolMetaData;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::impl_getRSTypeMetaData() -I- */
+sal_Bool ODatabaseMetaData::impl_getRSTypeMetaData(const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)(int), sal_Int32 _resultSetType )
+{
+ int resultSetType(sql::ResultSet::TYPE_FORWARD_ONLY);
+ switch ( _resultSetType ) {
+ case ResultSetType::SCROLL_INSENSITIVE: resultSetType = sql::ResultSet::TYPE_SCROLL_INSENSITIVE; break;
+ case ResultSetType::SCROLL_SENSITIVE: resultSetType = sql::ResultSet::TYPE_SCROLL_SENSITIVE; break;
+ }
+
+ return impl_getBoolMetaData(_methodName, _Method, resultSetType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getCatalogSeparator() -I- */
+OUString SAL_CALL ODatabaseMetaData::getCatalogSeparator()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getCatalogSeparator", &sql::DatabaseMetaData::getCatalogSeparator);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxBinaryLiteralLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxBinaryLiteralLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxBinaryLiteralLength", &sql::DatabaseMetaData::getMaxBinaryLiteralLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxRowSize() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxRowSize()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxRowSize", &sql::DatabaseMetaData::getMaxRowSize);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxCatalogNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCatalogNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxCatalogNameLength", &sql::DatabaseMetaData::getMaxCatalogNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxCharLiteralLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCharLiteralLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxCharLiteralLength", &sql::DatabaseMetaData::getMaxCharLiteralLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnNameLength", &sql::DatabaseMetaData::getMaxColumnNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnsInIndex() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInIndex()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnsInIndex", &sql::DatabaseMetaData::getMaxColumnsInIndex);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxCursorNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxCursorNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxCursorNameLength", &sql::DatabaseMetaData::getMaxCursorNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxConnections() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxConnections()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxConnections", &sql::DatabaseMetaData::getMaxConnections);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnsInTable() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInTable()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnsInTable", &sql::DatabaseMetaData::getMaxColumnsInTable);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxStatementLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxStatementLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxStatementLength", &sql::DatabaseMetaData::getMaxStatementLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxTableNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxTableNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxTableNameLength", &sql::DatabaseMetaData::getMaxTableNameLength);
+}
+/* }}} */
+
+/* {{{ ODatabaseMetaData::getMaxTablesInSelect() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxTablesInSelect()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxTablesInSelect", &sql::DatabaseMetaData::getMaxTablesInSelect);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::doesMaxRowSizeIncludeBlobs() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::doesMaxRowSizeIncludeBlobs()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("doesMaxRowSizeIncludeBlobs", &sql::DatabaseMetaData::doesMaxRowSizeIncludeBlobs);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesLowerCaseQuotedIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesLowerCaseQuotedIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesLowerCaseQuotedIdentifiers", &sql::DatabaseMetaData::storesLowerCaseQuotedIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesLowerCaseIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesLowerCaseIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesLowerCaseIdentifiers", &sql::DatabaseMetaData::storesLowerCaseIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesMixedCaseQuotedIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesMixedCaseQuotedIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesMixedCaseQuotedIdentifiers", &sql::DatabaseMetaData::storesMixedCaseQuotedIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesMixedCaseIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesMixedCaseIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesMixedCaseIdentifiers", &sql::DatabaseMetaData::storesMixedCaseIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesUpperCaseQuotedIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesUpperCaseQuotedIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesUpperCaseQuotedIdentifiers", &sql::DatabaseMetaData::storesUpperCaseQuotedIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::storesUpperCaseIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::storesUpperCaseIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("storesUpperCaseIdentifiers", &sql::DatabaseMetaData::storesUpperCaseIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsAlterTableWithAddColumn() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsAlterTableWithAddColumn()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsAlterTableWithAddColumn", &sql::DatabaseMetaData::supportsAlterTableWithAddColumn);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsAlterTableWithDropColumn() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsAlterTableWithDropColumn()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsAlterTableWithDropColumn", &sql::DatabaseMetaData::supportsAlterTableWithDropColumn);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxIndexLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxIndexLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxIndexLength", &sql::DatabaseMetaData::getMaxIndexLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsNonNullableColumns() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsNonNullableColumns()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsNonNullableColumns", &sql::DatabaseMetaData::supportsNonNullableColumns);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getCatalogTerm() -I- */
+OUString SAL_CALL ODatabaseMetaData::getCatalogTerm()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getCatalogTerm", &sql::DatabaseMetaData::getCatalogTerm);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getIdentifierQuoteString() -I- */
+OUString SAL_CALL ODatabaseMetaData::getIdentifierQuoteString()
+ throw(SQLException, RuntimeException)
+{
+ if (identifier_quote_string_set == false) {
+ identifier_quote_string = impl_getStringMetaData("getIdentifierQuoteString", &sql::DatabaseMetaData::getIdentifierQuoteString);
+ identifier_quote_string_set = true;
+ }
+ return identifier_quote_string;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getExtraNameCharacters() -I- */
+OUString SAL_CALL ODatabaseMetaData::getExtraNameCharacters()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getExtraNameCharacters", &sql::DatabaseMetaData::getExtraNameCharacters);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsDifferentTableCorrelationNames() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsDifferentTableCorrelationNames()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsDifferentTableCorrelationNames", &sql::DatabaseMetaData::supportsDifferentTableCorrelationNames);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::isCatalogAtStart() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::isCatalogAtStart()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("isCatalogAtStart", &sql::DatabaseMetaData::isCatalogAtStart);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::dataDefinitionIgnoredInTransactions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionIgnoredInTransactions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("dataDefinitionIgnoredInTransactions", &sql::DatabaseMetaData::dataDefinitionIgnoredInTransactions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::dataDefinitionCausesTransactionCommit() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::dataDefinitionCausesTransactionCommit()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("dataDefinitionCausesTransactionCommit", &sql::DatabaseMetaData::dataDefinitionCausesTransactionCommit);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsDataManipulationTransactionsOnly() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsDataManipulationTransactionsOnly()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsDataManipulationTransactionsOnly", &sql::DatabaseMetaData::supportsDataManipulationTransactionsOnly);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsDataDefinitionAndDataManipulationTransactions", &sql::DatabaseMetaData::supportsDataDefinitionAndDataManipulationTransactions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsPositionedDelete() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsPositionedDelete()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsPositionedDelete", &sql::DatabaseMetaData::supportsPositionedDelete);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsPositionedUpdate() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsPositionedUpdate()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsPositionedUpdate", &sql::DatabaseMetaData::supportsPositionedUpdate);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOpenStatementsAcrossRollback() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossRollback()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOpenStatementsAcrossRollback", &sql::DatabaseMetaData::supportsOpenStatementsAcrossRollback);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOpenStatementsAcrossCommit() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenStatementsAcrossCommit()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOpenStatementsAcrossCommit", &sql::DatabaseMetaData::supportsOpenStatementsAcrossCommit);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOpenCursorsAcrossCommit() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossCommit()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOpenCursorsAcrossCommit", &sql::DatabaseMetaData::supportsOpenCursorsAcrossCommit);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOpenCursorsAcrossRollback() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOpenCursorsAcrossRollback()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOpenCursorsAcrossRollback", &sql::DatabaseMetaData::supportsOpenCursorsAcrossRollback);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsTransactionIsolationLevel() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactionIsolationLevel(sal_Int32 level)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsTransactionIsolationLevel", &sql::DatabaseMetaData::supportsTransactionIsolationLevel, level);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSchemasInDataManipulation() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInDataManipulation()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSchemasInDataManipulation", &sql::DatabaseMetaData::supportsSchemasInDataManipulation);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsANSI92FullSQL() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92FullSQL()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsANSI92FullSQL", &sql::DatabaseMetaData::supportsANSI92FullSQL);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsANSI92EntryLevelSQL() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92EntryLevelSQL()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsANSI92EntryLevelSQL", &sql::DatabaseMetaData::supportsANSI92EntryLevelSQL);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsIntegrityEnhancementFacility() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsIntegrityEnhancementFacility()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsIntegrityEnhancementFacility", &sql::DatabaseMetaData::supportsIntegrityEnhancementFacility);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSchemasInIndexDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInIndexDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSchemasInIndexDefinitions", &sql::DatabaseMetaData::supportsSchemasInIndexDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSchemasInTableDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInTableDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSchemasInTableDefinitions", &sql::DatabaseMetaData::supportsSchemasInTableDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCatalogsInTableDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInTableDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCatalogsInTableDefinitions", &sql::DatabaseMetaData::supportsCatalogsInTableDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCatalogsInIndexDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInIndexDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCatalogsInIndexDefinitions", &sql::DatabaseMetaData::supportsCatalogsInIndexDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCatalogsInDataManipulation() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInDataManipulation()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCatalogsInDataManipulation", &sql::DatabaseMetaData::supportsCatalogsInDataManipulation);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOuterJoins() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOuterJoins()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOuterJoins", &sql::DatabaseMetaData::supportsOuterJoins);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxStatements() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxStatements()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxStatements", &sql::DatabaseMetaData::getMaxStatements);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxProcedureNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxProcedureNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxProcedureNameLength", &sql::DatabaseMetaData::getMaxProcedureNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxSchemaNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxSchemaNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxSchemaNameLength", &sql::DatabaseMetaData::getMaxSchemaNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsTransactions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsTransactions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsTransactions", &sql::DatabaseMetaData::supportsTransactions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::allProceduresAreCallable() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::allProceduresAreCallable()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("allProceduresAreCallable", &sql::DatabaseMetaData::allProceduresAreCallable);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsStoredProcedures() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsStoredProcedures()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsStoredProcedures", &sql::DatabaseMetaData::supportsStoredProcedures);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSelectForUpdate() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSelectForUpdate()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSelectForUpdate", &sql::DatabaseMetaData::supportsSelectForUpdate);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::allTablesAreSelectable() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::allTablesAreSelectable()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("allTablesAreSelectable", &sql::DatabaseMetaData::allTablesAreSelectable);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::isReadOnly() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::isReadOnly()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("isReadOnly", &sql::DatabaseMetaData::isReadOnly);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::usesLocalFiles() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::usesLocalFiles()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("usesLocalFiles", &sql::DatabaseMetaData::usesLocalFiles);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::usesLocalFilePerTable() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::usesLocalFilePerTable()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("usesLocalFilePerTable", &sql::DatabaseMetaData::usesLocalFilePerTable);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsTypeConversion() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsTypeConversion()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsTypeConversion", &sql::DatabaseMetaData::supportsTypeConversion);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::nullPlusNonNullIsNull() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::nullPlusNonNullIsNull()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("nullPlusNonNullIsNull", &sql::DatabaseMetaData::nullPlusNonNullIsNull);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsColumnAliasing() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsColumnAliasing()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsColumnAliasing", &sql::DatabaseMetaData::supportsColumnAliasing);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsTableCorrelationNames() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsTableCorrelationNames()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsTableCorrelationNames", &sql::DatabaseMetaData::supportsTableCorrelationNames);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsConvert() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsConvert(sal_Int32 /* fromType */, sal_Int32 /* toType */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::supportsConvert");
+ try {
+ /* ToDo -> use supportsConvert( fromType, toType) */
+ return meta->supportsConvert()? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::supportsConvert", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::supportsConvert", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsExpressionsInOrderBy() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsExpressionsInOrderBy()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsExpressionsInOrderBy", &sql::DatabaseMetaData::supportsExpressionsInOrderBy);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsGroupBy() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupBy()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsGroupBy", &sql::DatabaseMetaData::supportsGroupBy);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsGroupByBeyondSelect() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupByBeyondSelect()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsGroupByBeyondSelect", &sql::DatabaseMetaData::supportsGroupByBeyondSelect);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsGroupByUnrelated() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsGroupByUnrelated()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsGroupByUnrelated", &sql::DatabaseMetaData::supportsGroupByUnrelated);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsMultipleTransactions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleTransactions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsMultipleTransactions", &sql::DatabaseMetaData::supportsMultipleTransactions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsMultipleResultSets() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMultipleResultSets()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsMultipleResultSets", &sql::DatabaseMetaData::supportsMultipleResultSets);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsLikeEscapeClause() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsLikeEscapeClause()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsLikeEscapeClause", &sql::DatabaseMetaData::supportsLikeEscapeClause);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsOrderByUnrelated() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsOrderByUnrelated()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsOrderByUnrelated", &sql::DatabaseMetaData::supportsOrderByUnrelated);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsUnion() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsUnion()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsUnion", &sql::DatabaseMetaData::supportsUnion);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsUnionAll() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsUnionAll()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsUnionAll", &sql::DatabaseMetaData::supportsUnionAll);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsMixedCaseIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMixedCaseIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsMixedCaseIdentifiers", &sql::DatabaseMetaData::supportsMixedCaseIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsMixedCaseQuotedIdentifiers() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMixedCaseQuotedIdentifiers()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsMixedCaseQuotedIdentifiers", &sql::DatabaseMetaData::supportsMixedCaseQuotedIdentifiers);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::nullsAreSortedAtEnd() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedAtEnd()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("nullsAreSortedAtEnd", &sql::DatabaseMetaData::nullsAreSortedAtEnd);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::nullsAreSortedAtStart() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedAtStart()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("nullsAreSortedAtStart", &sql::DatabaseMetaData::nullsAreSortedAtStart);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::nullsAreSortedHigh() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedHigh()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("nullsAreSortedHigh", &sql::DatabaseMetaData::nullsAreSortedHigh);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::nullsAreSortedLow() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::nullsAreSortedLow()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("nullsAreSortedLow", &sql::DatabaseMetaData::nullsAreSortedLow);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSchemasInProcedureCalls() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInProcedureCalls()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSchemasInProcedureCalls", &sql::DatabaseMetaData::supportsSchemasInProcedureCalls);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSchemasInPrivilegeDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSchemasInPrivilegeDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSchemasInPrivilegeDefinitions", &sql::DatabaseMetaData::supportsSchemasInPrivilegeDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCatalogsInProcedureCalls() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInProcedureCalls()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCatalogsInProcedureCalls", &sql::DatabaseMetaData::supportsCatalogsInProcedureCalls);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCatalogsInPrivilegeDefinitions() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCatalogsInPrivilegeDefinitions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCatalogsInPrivilegeDefinitions", &sql::DatabaseMetaData::supportsCatalogsInPrivilegeDefinitions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCorrelatedSubqueries() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCorrelatedSubqueries()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCorrelatedSubqueries", &sql::DatabaseMetaData::supportsCorrelatedSubqueries);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSubqueriesInComparisons() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInComparisons()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSubqueriesInComparisons", &sql::DatabaseMetaData::supportsSubqueriesInComparisons);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSubqueriesInExists() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInExists()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSubqueriesInExists", &sql::DatabaseMetaData::supportsSubqueriesInExists);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSubqueriesInIns() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInIns()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSubqueriesInIns", &sql::DatabaseMetaData::supportsSubqueriesInIns);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsSubqueriesInQuantifieds() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsSubqueriesInQuantifieds()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsSubqueriesInQuantifieds", &sql::DatabaseMetaData::supportsSubqueriesInQuantifieds);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsANSI92IntermediateSQL() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsANSI92IntermediateSQL()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsANSI92IntermediateSQL", &sql::DatabaseMetaData::supportsANSI92IntermediateSQL);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getURL() -I- */
+OUString SAL_CALL ODatabaseMetaData::getURL()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getURL");
+ return m_rConnection.getConnectionSettings().connectionURL;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getUserName() -I- */
+OUString SAL_CALL ODatabaseMetaData::getUserName()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getUserName", &sql::DatabaseMetaData::getUserName);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDriverName() -I- */
+OUString SAL_CALL ODatabaseMetaData::getDriverName()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getDriverName");
+ OUString aValue( RTL_CONSTASCII_USTRINGPARAM( "MySQL Connector/OO.org" ) );
+ return aValue;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDriverVersion() -I- */
+OUString SAL_CALL ODatabaseMetaData::getDriverVersion()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getDriverVersion");
+ static const OUString sVersion( RTL_CONSTASCII_USTRINGPARAM( "0.9.2" ) );
+ return sVersion;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDatabaseProductVersion() -I- */
+OUString SAL_CALL ODatabaseMetaData::getDatabaseProductVersion()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getDatabaseProductVersion", &sql::DatabaseMetaData::getDatabaseProductVersion);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDatabaseProductName() -I- */
+OUString SAL_CALL ODatabaseMetaData::getDatabaseProductName()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getDatabaseProductName", &sql::DatabaseMetaData::getDatabaseProductName);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getProcedureTerm() -I- */
+OUString SAL_CALL ODatabaseMetaData::getProcedureTerm()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getProcedureTerm", &sql::DatabaseMetaData::getProcedureTerm);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getSchemaTerm() -I- */
+OUString SAL_CALL ODatabaseMetaData::getSchemaTerm()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getSchemaTerm", &sql::DatabaseMetaData::getSchemaTerm);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDriverMajorVersion() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getDriverMajorVersion()
+ throw(RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getDriverMajorVersion");
+ return MYSQLC_VERSION_MAJOR;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDefaultTransactionIsolation() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getDefaultTransactionIsolation()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getDefaultTransactionIsolation");
+ try {
+ switch (meta->getDefaultTransactionIsolation()) {
+ case sql::TRANSACTION_SERIALIZABLE: return TransactionIsolation::SERIALIZABLE;
+ case sql::TRANSACTION_REPEATABLE_READ: return TransactionIsolation::REPEATABLE_READ;
+ case sql::TRANSACTION_READ_COMMITTED: return TransactionIsolation::READ_COMMITTED;
+ case sql::TRANSACTION_READ_UNCOMMITTED: return TransactionIsolation::READ_UNCOMMITTED;
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getDriverMajorVersion", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getDriverMajorVersion", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return TransactionIsolation::NONE;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getDriverMinorVersion() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getDriverMinorVersion()
+ throw(RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getDriverMinorVersion");
+ return MYSQLC_VERSION_MINOR;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getSQLKeywords() -I- */
+OUString SAL_CALL ODatabaseMetaData::getSQLKeywords()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getSQLKeywords", &sql::DatabaseMetaData::getSQLKeywords);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getSearchStringEscape() -I- */
+OUString SAL_CALL ODatabaseMetaData::getSearchStringEscape()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getSearchStringEscape", &sql::DatabaseMetaData::getSearchStringEscape);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getStringFunctions() -I- */
+OUString SAL_CALL ODatabaseMetaData::getStringFunctions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getStringFunctions", &sql::DatabaseMetaData::getStringFunctions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getTimeDateFunctions() -I- */
+OUString SAL_CALL ODatabaseMetaData::getTimeDateFunctions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getTimeDateFunctions", &sql::DatabaseMetaData::getTimeDateFunctions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getSystemFunctions() -I- */
+OUString SAL_CALL ODatabaseMetaData::getSystemFunctions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getSystemFunctions", &sql::DatabaseMetaData::getSystemFunctions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getNumericFunctions() -I- */
+OUString SAL_CALL ODatabaseMetaData::getNumericFunctions()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getStringMetaData("getNumericFunctions", &sql::DatabaseMetaData::getNumericFunctions);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsExtendedSQLGrammar() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsExtendedSQLGrammar()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsExtendedSQLGrammar", &sql::DatabaseMetaData::supportsExtendedSQLGrammar);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsCoreSQLGrammar() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsCoreSQLGrammar()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsCoreSQLGrammar", &sql::DatabaseMetaData::supportsCoreSQLGrammar);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsMinimumSQLGrammar() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsMinimumSQLGrammar()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsMinimumSQLGrammar", &sql::DatabaseMetaData::supportsMinimumSQLGrammar);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsFullOuterJoins() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsFullOuterJoins()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsFullOuterJoins", &sql::DatabaseMetaData::supportsFullOuterJoins);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsLimitedOuterJoins() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsLimitedOuterJoins()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsLimitedOuterJoins", &sql::DatabaseMetaData::supportsLimitedOuterJoins);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnsInGroupBy() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInGroupBy()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnsInGroupBy", &sql::DatabaseMetaData::getMaxColumnsInGroupBy);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnsInOrderBy() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInOrderBy()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnsInOrderBy", &sql::DatabaseMetaData::getMaxColumnsInOrderBy);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxColumnsInSelect() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxColumnsInSelect()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxColumnsInSelect", &sql::DatabaseMetaData::getMaxColumnsInSelect);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getMaxUserNameLength() -I- */
+sal_Int32 SAL_CALL ODatabaseMetaData::getMaxUserNameLength()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getInt32MetaData("getMaxUserNameLength", &sql::DatabaseMetaData::getMaxUserNameLength);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsResultSetType() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsResultSetType(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("supportsResultSetType", &sql::DatabaseMetaData::supportsResultSetType, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsResultSetConcurrency() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsResultSetConcurrency(sal_Int32 setType, sal_Int32 concurrency)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::supportsResultSetConcurrency");
+ /* TODO: Check this out */
+ try {
+ return meta->supportsResultSetConcurrency(setType, concurrency==com::sun::star::sdbc::TransactionIsolation::READ_COMMITTED?
+ sql::TRANSACTION_READ_COMMITTED:
+ (concurrency == com::sun::star::sdbc::TransactionIsolation::SERIALIZABLE?
+ sql::TRANSACTION_SERIALIZABLE:sql::TRANSACTION_SERIALIZABLE))? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::supportsResultSetConcurrency", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::supportsResultSetConcurrency", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::ownUpdatesAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::ownUpdatesAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("ownUpdatesAreVisible", &sql::DatabaseMetaData::ownUpdatesAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::ownDeletesAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::ownDeletesAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("ownDeletesAreVisible", &sql::DatabaseMetaData::ownDeletesAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::ownInsertsAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::ownInsertsAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("ownInsertsAreVisible", &sql::DatabaseMetaData::ownInsertsAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::othersUpdatesAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::othersUpdatesAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("othersUpdatesAreVisible", &sql::DatabaseMetaData::othersUpdatesAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::othersDeletesAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::othersDeletesAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("othersDeletesAreVisible", &sql::DatabaseMetaData::othersDeletesAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::othersInsertsAreVisible() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::othersInsertsAreVisible(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("othersInsertsAreVisible", &sql::DatabaseMetaData::othersInsertsAreVisible, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::updatesAreDetected() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::updatesAreDetected(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("updatesAreDetected", &sql::DatabaseMetaData::updatesAreDetected, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::deletesAreDetected() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::deletesAreDetected(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("deletesAreDetected", &sql::DatabaseMetaData::deletesAreDetected, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::insertsAreDetected() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::insertsAreDetected(sal_Int32 setType)
+ throw(SQLException, RuntimeException)
+{
+ return impl_getRSTypeMetaData("insertsAreDetected", &sql::DatabaseMetaData::insertsAreDetected, setType);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::supportsBatchUpdates() -I- */
+sal_Bool SAL_CALL ODatabaseMetaData::supportsBatchUpdates()
+ throw(SQLException, RuntimeException)
+{
+ return impl_getBoolMetaData("supportsBatchUpdates", &sql::DatabaseMetaData::supportsBatchUpdates);
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getConnection() -I- */
+Reference< XConnection > SAL_CALL ODatabaseMetaData::getConnection()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getConnection");
+ return (Reference< XConnection >)&m_rConnection;
+}
+/* }}} */
+
+
+/*
+ Here follow all methods which return(a resultset
+ the first methods is an example implementation how to use this resultset
+ of course you could implement it on your and you should do this because
+ the general way is more memory expensive
+*/
+
+/* {{{ ODatabaseMetaData::getTableTypes() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTableTypes()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getTableTypes");
+ const char * table_types[] = {"TABLE", "VIEW"};
+ sal_Int32 requiredVersion[] = {0, 50000};
+
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+
+ for (sal_uInt32 i = 0; i < 2; i++) {
+ if (m_rConnection.getMysqlVersion() >= requiredVersion[i]) {
+ std::vector< Any > aRow(1);
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(table_types[i], encoding)));
+ rRows.push_back(aRow);
+ }
+ }
+ lcl_setRows_throw(xResultSet, 5 ,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getTypeInfo() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getTypeInfo");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+
+ std::vector< std::vector< Any > > rRows;
+
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ unsigned int i = 0;
+ while (mysqlc_types[i].typeName) {
+ std::vector< Any > aRow(1);
+
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].typeName, encoding)));
+ aRow.push_back(makeAny(mysqlc_types[i].dataType));
+ aRow.push_back(makeAny(mysqlc_types[i].precision));
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].literalPrefix, encoding)));
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].literalSuffix, encoding)));
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].createParams, encoding)));
+ aRow.push_back(makeAny(mysqlc_types[i].nullable));
+ aRow.push_back(makeAny(mysqlc_types[i].caseSensitive));
+ aRow.push_back(makeAny(mysqlc_types[i].searchable));
+ aRow.push_back(makeAny(mysqlc_types[i].isUnsigned));
+ aRow.push_back(makeAny(mysqlc_types[i].fixedPrecScale));
+ aRow.push_back(makeAny(mysqlc_types[i].autoIncrement));
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(mysqlc_types[i].localTypeName, encoding)));
+ aRow.push_back(makeAny(mysqlc_types[i].minScale));
+ aRow.push_back(makeAny(mysqlc_types[i].maxScale));
+ aRow.push_back(makeAny(sal_Int32(0)));
+ aRow.push_back(makeAny(sal_Int32(0)));
+ aRow.push_back(makeAny(sal_Int32(10)));
+
+ rRows.push_back(aRow);
+ i++;
+ }
+
+ lcl_setRows_throw(xResultSet, 14, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getCatalogs() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getCatalogs()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getCatalogs");
+
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getCatalogs());
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getCatalogs", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getCatalogs", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 0, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getSchemas() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getSchemas()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getSchemas");
+
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getSchemas());
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ bool informationSchema = false;
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ sql::SQLString columnStringValue = rset->getString(i);
+ if (i == 1) { // TABLE_SCHEM
+ informationSchema = (0 == columnStringValue.compare("information_schema"));
+ }
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(columnStringValue, encoding)));
+ }
+ if (!informationSchema ) {
+ rRows.push_back(aRow);
+ }
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getSchemas", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getSchemas", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 1, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getColumnPrivileges() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumnPrivileges(
+ const Any& catalog,
+ const OUString& schema,
+ const OUString& table,
+ const OUString& columnNamePattern)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getColumnPrivileges");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr()),
+ cNamePattern(OUStringToOString(columnNamePattern, m_rConnection.getConnectionEncoding()).getStr());
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getColumnPrivileges(cat, sch, tab, cNamePattern.compare("")? cNamePattern:wild));
+
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getColumnPrivileges", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getColumnPrivileges", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 2, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getColumns() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumns(
+ const Any& catalog,
+ const OUString& schemaPattern,
+ const OUString& tableNamePattern,
+ const OUString& columnNamePattern)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getColumns");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
+ tNamePattern(OUStringToOString(tableNamePattern, m_rConnection.getConnectionEncoding()).getStr()),
+ cNamePattern(OUStringToOString(columnNamePattern, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ std::auto_ptr< sql::ResultSet> rset( meta->getColumns(cat,
+ sPattern.compare("")? sPattern:wild,
+ tNamePattern.compare("")? tNamePattern:wild,
+ cNamePattern.compare("")? cNamePattern:wild));
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ if (i == 5) { // ColumnType
+ sal_Int32 sdbc_type = mysqlc_sdbc_driver::mysqlToOOOType(atoi(rset->getString(i).c_str()));
+ aRow.push_back(makeAny(sdbc_type));
+ } else {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getColumns", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getColumns", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+ lcl_setRows_throw(xResultSet, 3, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getTables() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTables(
+ const Any& catalog,
+ const OUString& schemaPattern,
+ const OUString& tableNamePattern,
+ const Sequence< OUString >& types )
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getTables");
+ sal_Int32 nLength = types.getLength();
+
+ Reference< XResultSet > xResultSet(getOwnConnection().
+ getDriver().getFactory()->createInstance(
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
+ tNamePattern(OUStringToOString(tableNamePattern, m_rConnection.getConnectionEncoding()).getStr());
+
+ std::list<sql::SQLString> tabTypes;
+ for (const OUString *pStart = types.getConstArray(), *p = pStart, *pEnd = pStart + nLength; p != pEnd; ++p) {
+ tabTypes.push_back(OUStringToOString(*p, m_rConnection.getConnectionEncoding()).getStr());
+ }
+
+ try {
+ std::auto_ptr< sql::ResultSet> rset( meta->getTables(cat,
+ sPattern.compare("")? sPattern:wild,
+ tNamePattern.compare("")? tNamePattern:wild,
+ tabTypes));
+
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ bool informationSchema = false;
+ for (sal_uInt32 i = 1; (i <= columns) && !informationSchema; ++i) {
+ sql::SQLString columnStringValue = rset->getString(i);
+ if (i == 2) { // TABLE_SCHEM
+ informationSchema = ( 0 == columnStringValue.compare("information_schema"));
+ }
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(columnStringValue, encoding)));
+ }
+ if (!informationSchema) {
+ rRows.push_back(aRow);
+ }
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getTables", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getTables", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 4, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getProcedureColumns() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedureColumns(
+ const Any& /* catalog */,
+ const OUString& /* schemaPattern */,
+ const OUString& /* procedureNamePattern */,
+ const OUString& /* columnNamePattern */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getProcedureColumns");
+ // Currently there is no information available
+ return NULL;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getProcedures() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedures(
+ const Any& catalog,
+ const OUString& schemaPattern,
+ const OUString& procedureNamePattern)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getProcedures");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
+ pNamePattern(OUStringToOString(procedureNamePattern, m_rConnection.getConnectionEncoding()).getStr());
+
+
+ try {
+ std::auto_ptr< sql::ResultSet> rset( meta->getProcedures(cat,
+ sPattern.compare("")? sPattern:wild,
+ pNamePattern.compare("")? pNamePattern:wild));
+
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getProcedures", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getProcedures", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 7,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getVersionColumns() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getVersionColumns(
+ const Any& /* catalog */,
+ const OUString& /* schema */,
+ const OUString& /* table */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getVersionColumns");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+ lcl_setRows_throw(xResultSet, 16,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getExportedKeys() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getExportedKeys(
+ const Any& catalog ,
+ const OUString& schema ,
+ const OUString& table )
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getExportedKeys");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getExportedKeys(cat, sch, tab));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getExportedKeys", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getExportedKeys", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 8, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getImportedKeys() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getImportedKeys(
+ const Any& catalog,
+ const OUString& schema,
+ const OUString& table)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getImportedKeys");
+
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getImportedKeys(cat, sch, tab));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getImportedKeys", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getImportedKeys", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet,9,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getPrimaryKeys() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getPrimaryKeys(
+ const Any& catalog,
+ const OUString& schema,
+ const OUString& table)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getPrimaryKeys");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getPrimaryKeys(cat, sch, tab));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getPrimaryKeys", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getPrimaryKeys", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 10, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getIndexInfo() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getIndexInfo(
+ const Any& catalog,
+ const OUString& schema,
+ const OUString& table,
+ sal_Bool unique,
+ sal_Bool approximate)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getIndexInfo");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getIndexInfo(cat, sch, tab, unique, approximate));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getIndexInfo", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getIndexInfo", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 11, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getBestRowIdentifier() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getBestRowIdentifier(
+ const Any& catalog,
+ const OUString& schema,
+ const OUString& table,
+ sal_Int32 scope,
+ sal_Bool nullable)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getBestRowIdentifier");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sch(OUStringToOString(schema, m_rConnection.getConnectionEncoding()).getStr()),
+ tab(OUStringToOString(table, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getBestRowIdentifier(cat, sch, tab, scope, nullable));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getBestRowIdentifier", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getBestRowIdentifier", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet, 15, rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getTablePrivileges() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTablePrivileges(
+ const Any& catalog,
+ const OUString& schemaPattern,
+ const OUString& tableNamePattern)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getTablePrivileges");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string cat(catalog.hasValue()? OUStringToOString(getStringFromAny(catalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ sPattern(OUStringToOString(schemaPattern, m_rConnection.getConnectionEncoding()).getStr()),
+ tPattern(OUStringToOString(tableNamePattern, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ static bool fakeTablePrivileges = false;
+ if (fakeTablePrivileges) {
+ static const sal_Char* allPrivileges[] = {
+ "ALTER", "DELETE", "DROP", "INDEX", "INSERT", "LOCK TABLES", "SELECT", "UPDATE"
+ };
+ Any userName; userName <<= getUserName();
+ for (size_t i = 0; i < SAL_N_ELEMENTS( allPrivileges ); ++i) {
+ std::vector< Any > aRow;
+ aRow.push_back(makeAny( sal_Int32( i ) ));
+ aRow.push_back(catalog); // TABLE_CAT
+ aRow.push_back(makeAny( schemaPattern )); // TABLE_SCHEM
+ aRow.push_back(makeAny( tableNamePattern )); // TABLE_NAME
+ aRow.push_back(Any()); // GRANTOR
+ aRow.push_back(userName); // GRANTEE
+ aRow.push_back(makeAny( ::rtl::OUString::createFromAscii( allPrivileges[i] ) )); // PRIVILEGE
+ aRow.push_back(Any()); // IS_GRANTABLE
+
+ rRows.push_back(aRow);
+ }
+ } else {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getTablePrivileges(cat, sPattern.compare("")? sPattern:wild, tPattern.compare("")? tPattern:wild));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getTablePrivileges", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getTablePrivileges", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet,12,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getCrossReference() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getCrossReference(
+ const Any& primaryCatalog,
+ const OUString& primarySchema,
+ const OUString& primaryTable,
+ const Any& foreignCatalog,
+ const OUString& foreignSchema,
+ const OUString& foreignTable)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getCrossReference");
+ Reference< XResultSet > xResultSet(getOwnConnection().getDriver().getFactory()->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.comp.helper.DatabaseMetaDataResultSet"))),UNO_QUERY);
+ std::vector< std::vector< Any > > rRows;
+
+ std::string primaryCat(primaryCatalog.hasValue()? OUStringToOString(getStringFromAny(primaryCatalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ foreignCat(foreignCatalog.hasValue()? OUStringToOString(getStringFromAny(foreignCatalog), m_rConnection.getConnectionEncoding()).getStr():""),
+ pSchema(OUStringToOString(primarySchema, m_rConnection.getConnectionEncoding()).getStr()),
+ pTable(OUStringToOString(primaryTable, m_rConnection.getConnectionEncoding()).getStr()),
+ fSchema(OUStringToOString(foreignSchema, m_rConnection.getConnectionEncoding()).getStr()),
+ fTable(OUStringToOString(foreignTable, m_rConnection.getConnectionEncoding()).getStr());
+
+ try {
+ rtl_TextEncoding encoding = m_rConnection.getConnectionEncoding();
+ std::auto_ptr< sql::ResultSet> rset( meta->getCrossReference(primaryCat, pSchema, pTable, foreignCat, fSchema, fTable));
+ sql::ResultSetMetaData * rs_meta = rset->getMetaData();
+ sal_uInt32 columns = rs_meta->getColumnCount();
+ while (rset->next()) {
+ std::vector< Any > aRow(1);
+ for (sal_uInt32 i = 1; i <= columns; i++) {
+ aRow.push_back(makeAny(mysqlc_sdbc_driver::convert(rset->getString(i), encoding)));
+ }
+ rRows.push_back(aRow);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getCrossReference", *this);
+ } catch (sql::InvalidArgumentException) {
+ mysqlc_sdbc_driver::throwInvalidArgumentException("ODatabaseMetaData::getCrossReference", *this);
+ } catch (const sql::SQLException& e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_rConnection.getConnectionEncoding());
+ }
+
+ lcl_setRows_throw(xResultSet,13,rRows);
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ ODatabaseMetaData::getUDTs() -I- */
+Reference< XResultSet > SAL_CALL ODatabaseMetaData::getUDTs(
+ const Any& /* catalog */,
+ const OUString& /* schemaPattern */,
+ const OUString& /* typeNamePattern */,
+ const Sequence< sal_Int32 >& /* types */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("ODatabaseMetaData::getUDTs");
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("ODatabaseMetaData::getUDTs", *this);
+ return NULL;
+}
+/* }}} */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_databasemetadata.hxx b/mysqlc/source/mysqlc_databasemetadata.hxx
new file mode 100644
index 000000000000..03c6468b59a4
--- /dev/null
+++ b/mysqlc/source/mysqlc_databasemetadata.hxx
@@ -0,0 +1,238 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef CONNECTIVITY_SDATABASEMETADATA_HXX
+#define CONNECTIVITY_SDATABASEMETADATA_HXX
+
+#include "mysqlc_connection.hxx"
+
+#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
+#include <cppuhelper/implbase1.hxx>
+
+#include <cppconn/metadata.h>
+
+namespace connectivity
+{
+ namespace mysqlc
+ {
+ typedef ::com::sun::star::sdbc::SQLException my_SQLException;
+ typedef ::com::sun::star::uno::RuntimeException my_RuntimeException;
+ typedef ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > my_XResultSetRef;
+ using ::com::sun::star::uno::Any;
+ using ::rtl::OUString;
+
+ //**************************************************************
+ //************ Class: ODatabaseMetaData
+ //**************************************************************
+
+ typedef ::cppu::WeakImplHelper1< ::com::sun::star::sdbc::XDatabaseMetaData> ODatabaseMetaData_BASE;
+
+ class ODatabaseMetaData : public ODatabaseMetaData_BASE
+ {
+ OConnection& m_rConnection;
+ sal_Bool m_bUseCatalog;
+ protected:
+ sql::DatabaseMetaData * meta;
+ OUString identifier_quote_string;
+ bool identifier_quote_string_set;
+
+ private:
+ OUString impl_getStringMetaData( const sal_Char* _methodName, const std::string& (sql::DatabaseMetaData::*_Method)() );
+ OUString impl_getStringMetaData( const sal_Char* _methodName, std::string (sql::DatabaseMetaData::*_Method)() );
+ OUString impl_getStringMetaData( const sal_Char* _methodName, const sql::SQLString& (sql::DatabaseMetaData::*_Method)() );
+ OUString impl_getStringMetaData( const sal_Char* _methodName, sql::SQLString (sql::DatabaseMetaData::*_Method)() );
+ sal_Int32 impl_getInt32MetaData( const sal_Char* _methodName, unsigned int (sql::DatabaseMetaData::*_Method)() );
+ sal_Bool impl_getBoolMetaData( const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)() );
+ sal_Bool impl_getBoolMetaData( const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)(int), sal_Int32 _arg );
+ sal_Bool impl_getRSTypeMetaData( const sal_Char* _methodName, bool (sql::DatabaseMetaData::*_Method)(int), sal_Int32 _resultSetType );
+
+ public:
+ inline const OConnection& getOwnConnection() const { return m_rConnection; }
+
+ ODatabaseMetaData(OConnection& _rCon);
+ virtual ~ODatabaseMetaData();
+
+ // as I mentioned before this interface is really BIG
+ // XDatabaseMetaData
+ sal_Bool SAL_CALL allProceduresAreCallable() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL allTablesAreSelectable() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getURL() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getUserName() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL isReadOnly() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL nullsAreSortedHigh() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL nullsAreSortedLow() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL nullsAreSortedAtStart() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL nullsAreSortedAtEnd() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getDatabaseProductName() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getDatabaseProductVersion() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getDriverName() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getDriverVersion() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getDriverMajorVersion() throw(my_RuntimeException);
+ sal_Int32 SAL_CALL getDriverMinorVersion() throw(my_RuntimeException);
+ sal_Bool SAL_CALL usesLocalFiles() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL usesLocalFilePerTable() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsMixedCaseIdentifiers() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL storesUpperCaseIdentifiers() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL storesLowerCaseIdentifiers() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL storesMixedCaseIdentifiers() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsMixedCaseQuotedIdentifiers() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL storesUpperCaseQuotedIdentifiers() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL storesLowerCaseQuotedIdentifiers() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL storesMixedCaseQuotedIdentifiers() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getIdentifierQuoteString() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getSQLKeywords() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getNumericFunctions() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getStringFunctions() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getSystemFunctions() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getTimeDateFunctions() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getSearchStringEscape() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getExtraNameCharacters() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsAlterTableWithAddColumn() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsAlterTableWithDropColumn() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsColumnAliasing() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL nullPlusNonNullIsNull() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsTypeConversion() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsConvert(sal_Int32 fromType, sal_Int32 toType)
+ throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsTableCorrelationNames() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsDifferentTableCorrelationNames() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsExpressionsInOrderBy() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsOrderByUnrelated() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsGroupBy() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsGroupByUnrelated() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsGroupByBeyondSelect() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsLikeEscapeClause() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsMultipleResultSets() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsMultipleTransactions() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsNonNullableColumns() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsMinimumSQLGrammar() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsCoreSQLGrammar() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsExtendedSQLGrammar() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsANSI92EntryLevelSQL() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsANSI92IntermediateSQL() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsANSI92FullSQL() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsIntegrityEnhancementFacility()throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsOuterJoins() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsFullOuterJoins() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsLimitedOuterJoins() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getSchemaTerm() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getProcedureTerm() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getCatalogTerm() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL isCatalogAtStart() throw(my_SQLException, my_RuntimeException);
+ OUString SAL_CALL getCatalogSeparator() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsSchemasInDataManipulation() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsSchemasInProcedureCalls() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsSchemasInTableDefinitions() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsSchemasInIndexDefinitions() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsSchemasInPrivilegeDefinitions() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsCatalogsInDataManipulation() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsCatalogsInProcedureCalls() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsCatalogsInTableDefinitions() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsCatalogsInIndexDefinitions() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsCatalogsInPrivilegeDefinitions() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsPositionedDelete() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsPositionedUpdate() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsSelectForUpdate() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsStoredProcedures() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsSubqueriesInComparisons() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsSubqueriesInExists() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsSubqueriesInIns() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsSubqueriesInQuantifieds() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsCorrelatedSubqueries() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsUnion() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsUnionAll() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsOpenCursorsAcrossCommit() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsOpenCursorsAcrossRollback() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsOpenStatementsAcrossCommit() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsOpenStatementsAcrossRollback() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxBinaryLiteralLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxCharLiteralLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxColumnNameLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxColumnsInGroupBy() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxColumnsInIndex() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxColumnsInOrderBy() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxColumnsInSelect() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxColumnsInTable() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxConnections() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxCursorNameLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxIndexLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxSchemaNameLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxProcedureNameLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxCatalogNameLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxRowSize() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL doesMaxRowSizeIncludeBlobs() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxStatementLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxStatements() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxTableNameLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxTablesInSelect() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getMaxUserNameLength() throw(my_SQLException, my_RuntimeException);
+ sal_Int32 SAL_CALL getDefaultTransactionIsolation() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsTransactions() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsTransactionIsolationLevel(sal_Int32 level)
+ throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsDataDefinitionAndDataManipulationTransactions()
+ throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsDataManipulationTransactionsOnly()throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL dataDefinitionCausesTransactionCommit() throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL dataDefinitionIgnoredInTransactions() throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getProcedures(const Any& catalog, const OUString& schemaPattern, const OUString& procedureNamePattern) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getProcedureColumns(const Any& catalog, const OUString& schemaPattern, const OUString& procedureNamePattern, const OUString& columnNamePattern) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getTables(const Any& catalog, const OUString& schemaPattern, const OUString& tableNamePattern, const ::com::sun::star::uno::Sequence< OUString >& types) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getSchemas() throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getCatalogs() throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getTableTypes() throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getColumns(const Any& catalog, const OUString& schemaPattern, const OUString& tableNamePattern, const OUString& columnNamePattern) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getColumnPrivileges(const Any& catalog, const OUString& schema, const OUString& table, const OUString& columnNamePattern) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getTablePrivileges(const Any& catalog, const OUString& schemaPattern, const OUString& tableNamePattern) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getBestRowIdentifier(const Any& catalog, const OUString& schema, const OUString& table, sal_Int32 scope, sal_Bool nullable) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getVersionColumns(const Any& catalog, const OUString& schema, const OUString& table) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getPrimaryKeys(const Any& catalog, const OUString& schema, const OUString& table) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getImportedKeys(const Any& catalog, const OUString& schema, const OUString& table) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getExportedKeys(const Any& catalog, const OUString& schema, const OUString& table) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getCrossReference(const Any& primaryCatalog, const OUString& primarySchema, const OUString& primaryTable, const Any& foreignCatalog, const OUString& foreignSchema, const OUString& foreignTable) throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getTypeInfo() throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getIndexInfo(const Any& catalog, const OUString& schema, const OUString& table, sal_Bool unique, sal_Bool approximate) throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsResultSetType(sal_Int32 setType) throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsResultSetConcurrency(sal_Int32 setType, sal_Int32 concurrency) throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL ownUpdatesAreVisible(sal_Int32 setType) throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL ownDeletesAreVisible(sal_Int32 setType) throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL ownInsertsAreVisible(sal_Int32 setType) throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL othersUpdatesAreVisible(sal_Int32 setType)throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL othersDeletesAreVisible(sal_Int32 setType)throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL othersInsertsAreVisible(sal_Int32 setType)throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL updatesAreDetected(sal_Int32 setType) throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL deletesAreDetected(sal_Int32 setType) throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL insertsAreDetected(sal_Int32 setType) throw(my_SQLException, my_RuntimeException);
+ sal_Bool SAL_CALL supportsBatchUpdates() throw(my_SQLException, my_RuntimeException);
+ my_XResultSetRef SAL_CALL getUDTs(const Any& catalog, const OUString& schemaPattern, const OUString& typeNamePattern, const ::com::sun::star::uno::Sequence< sal_Int32 >& types) throw(my_SQLException, my_RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection() throw(my_SQLException, my_RuntimeException);
+ };
+ }
+}
+
+#endif // CONNECTIVITY_SDATABASEMETADATA_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_driver.cxx b/mysqlc/source/mysqlc_driver.cxx
new file mode 100644
index 000000000000..2b52a2e82f43
--- /dev/null
+++ b/mysqlc/source/mysqlc_driver.cxx
@@ -0,0 +1,366 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+#include "mysqlc_driver.hxx"
+#include "mysqlc_connection.hxx"
+#include "mysqlc_general.hxx"
+
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::sdbc;
+using namespace connectivity::mysqlc;
+using ::rtl::OUString;
+#include <stdio.h>
+
+#include <cppconn/exception.h>
+#ifdef SYSTEM_MYSQL_CPPCONN
+ #include <mysql_driver.h>
+#endif
+
+
+/* {{{ MysqlCDriver::MysqlCDriver() -I- */
+MysqlCDriver::MysqlCDriver(const Reference< XMultiServiceFactory >& _rxFactory)
+ : ODriver_BASE(m_aMutex)
+ ,m_xFactory(_rxFactory)
+#ifndef SYSTEM_MYSQL_CPPCONN
+ ,m_hCppConnModule( NULL )
+ ,m_bAttemptedLoadCppConn( false )
+#endif
+{
+ OSL_TRACE("MysqlCDriver::MysqlCDriver");
+ cppDriver = NULL;
+}
+/* }}} */
+
+
+/* {{{ MysqlCDriver::disposing() -I- */
+void MysqlCDriver::disposing()
+{
+ OSL_TRACE("MysqlCDriver::disposing");
+ ::osl::MutexGuard aGuard(m_aMutex);
+
+ // when driver will be destroied so all our connections have to be destroied as well
+ for (OWeakRefArray::iterator i = m_xConnections.begin(); m_xConnections.end() != i; ++i)
+ {
+ Reference< XComponent > xComp(i->get(), UNO_QUERY);
+ if (xComp.is()) {
+ xComp->dispose();
+ }
+ }
+ m_xConnections.clear();
+
+ ODriver_BASE::disposing();
+}
+/* }}} */
+
+
+// static ServiceInfo
+/* {{{ MysqlCDriver::getImplementationName_Static() -I- */
+OUString MysqlCDriver::getImplementationName_Static()
+ throw(RuntimeException)
+{
+ OSL_TRACE("MysqlCDriver::getImplementationName_Static");
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.sdbc.mysqlc.MysqlCDriver" ) );
+}
+/* }}} */
+
+
+/* {{{ MysqlCDriver::getSupportedServiceNames_Static() -I- */
+Sequence< OUString > MysqlCDriver::getSupportedServiceNames_Static()
+ throw(RuntimeException)
+{
+ OSL_TRACE("MysqlCDriver::getSupportedServiceNames_Static");
+ // which service is supported
+ // for more information @see com.sun.star.sdbc.Driver
+ Sequence< OUString > aSNS(1);
+ aSNS[0] = OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdbc.Driver"));
+ return aSNS;
+}
+/* }}} */
+
+
+/* {{{ MysqlCDriver::getImplementationName() -I- */
+OUString SAL_CALL MysqlCDriver::getImplementationName()
+ throw(RuntimeException)
+{
+ OSL_TRACE("MysqlCDriver::getImplementationName");
+ return getImplementationName_Static();
+}
+/* }}} */
+
+
+/* {{{ MysqlCDriver::supportsService() -I- */
+sal_Bool SAL_CALL MysqlCDriver::supportsService(const OUString& _rServiceName)
+ throw(RuntimeException)
+{
+ OSL_TRACE("MysqlCDriver::supportsService");
+ Sequence< OUString > aSupported(getSupportedServiceNames());
+ const OUString* pSupported = aSupported.getConstArray();
+ const OUString* pEnd = pSupported + aSupported.getLength();
+ for (;pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported){}
+
+ return (pSupported != pEnd);
+}
+/* }}} */
+
+
+/* {{{ MysqlCDriver::getSupportedServiceNames() -I- */
+Sequence< OUString > SAL_CALL MysqlCDriver::getSupportedServiceNames()
+ throw(RuntimeException)
+{
+ OSL_TRACE("MysqlCDriver::getSupportedServiceNames");
+ return getSupportedServiceNames_Static();
+}
+/* }}} */
+
+
+extern "C" { static void SAL_CALL thisModule() {} }
+
+void MysqlCDriver::impl_initCppConn_lck_throw()
+{
+#ifdef SYSTEM_MYSQL_CPPCONN
+ cppDriver = get_driver_instance();
+#else
+ if ( !m_bAttemptedLoadCppConn )
+ {
+ const ::rtl::OUString sModuleName(RTL_CONSTASCII_USTRINGPARAM( CPPCONN_LIB ));
+ m_hCppConnModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, 0 );
+ m_bAttemptedLoadCppConn = true;
+ }
+
+ // attempted to load - was it successful?
+ if ( !m_hCppConnModule )
+ {
+ OSL_FAIL( "MysqlCDriver::impl_initCppConn_lck_throw: could not load the " CPPCONN_LIB " library!");
+ throw SQLException(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unable to load the " CPPCONN_LIB " library." ) ),
+ *this,
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "08001" ) ), // "unable to connect"
+ 0,
+ Any()
+ );
+ }
+
+ // find the factory symbol
+ const ::rtl::OUString sSymbolName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "sql_mysql_get_driver_instance" ) );
+ typedef void* (* FGetMySQLDriver)();
+
+ const FGetMySQLDriver pFactoryFunction = (FGetMySQLDriver)( osl_getFunctionSymbol( m_hCppConnModule, sSymbolName.pData ) );
+ if ( !pFactoryFunction )
+ {
+ OSL_FAIL( "MysqlCDriver::impl_initCppConn_lck_throw: could not find the factory symbol in " CPPCONN_LIB "!");
+ throw SQLException(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( CPPCONN_LIB " is invalid: missing the driver factory function." ) ),
+ *this,
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "08001" ) ), // "unable to connect"
+ 0,
+ Any()
+ );
+ }
+
+ cppDriver = static_cast< sql::Driver* >( (*pFactoryFunction)() );
+#endif
+ if ( !cppDriver )
+ {
+ throw SQLException(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unable to obtain the MySQL_Driver instance from Connector/C++." ) ),
+ *this,
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "08001" ) ), // "unable to connect"
+ 0,
+ Any()
+ );
+ }
+}
+
+/* {{{ MysqlCDriver::connect() -I- */
+Reference< XConnection > SAL_CALL MysqlCDriver::connect(const OUString& url, const Sequence< PropertyValue >& info)
+ throw(SQLException, RuntimeException)
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ OSL_TRACE("MysqlCDriver::connect");
+ if (!acceptsURL(url)) {
+ return NULL;
+ }
+
+ if ( !cppDriver )
+ {
+ impl_initCppConn_lck_throw();
+ OSL_POSTCOND( cppDriver, "MySQLCDriver::connect: internal error." );
+ if ( !cppDriver )
+ throw RuntimeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MySQLCDriver::connect: internal error." ) ), *this );
+ }
+
+ Reference< XConnection > xConn;
+ // create a new connection with the given properties and append it to our vector
+ try {
+ OConnection* pCon = new OConnection(*this, cppDriver);
+ xConn = pCon;
+
+ pCon->construct(url,info);
+ m_xConnections.push_back(WeakReferenceHelper(*pCon));
+ }
+ catch (sql::SQLException &e)
+ {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, getDefaultEncoding());
+ }
+ return xConn;
+}
+/* }}} */
+
+
+/* {{{ MysqlCDriver::acceptsURL() -I- */
+sal_Bool SAL_CALL MysqlCDriver::acceptsURL(const OUString& url)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("MysqlCDriver::acceptsURL");
+ return (!url.compareTo(OUString(RTL_CONSTASCII_USTRINGPARAM("sdbc:mysqlc:")), sizeof("sdbc:mysqlc:")-1));
+}
+/* }}} */
+
+
+/* {{{ MysqlCDriver::getPropertyInfo() -I- */
+Sequence< DriverPropertyInfo > SAL_CALL MysqlCDriver::getPropertyInfo(const OUString& url, const Sequence< PropertyValue >& /* info */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("MysqlCDriver::getPropertyInfo");
+ if (acceptsURL(url)) {
+ ::std::vector< DriverPropertyInfo > aDriverInfo;
+
+ aDriverInfo.push_back(DriverPropertyInfo(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Hostname"))
+ ,OUString(RTL_CONSTASCII_USTRINGPARAM("Name of host"))
+ ,sal_True
+ ,OUString(RTL_CONSTASCII_USTRINGPARAM("localhost"))
+ ,Sequence< OUString >())
+ );
+ aDriverInfo.push_back(DriverPropertyInfo(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Port"))
+ ,OUString(RTL_CONSTASCII_USTRINGPARAM("Port"))
+ ,sal_True
+ ,OUString(RTL_CONSTASCII_USTRINGPARAM("3306"))
+ ,Sequence< OUString >())
+ );
+ return Sequence< DriverPropertyInfo >(&(aDriverInfo[0]),aDriverInfo.size());
+ }
+
+ return Sequence< DriverPropertyInfo >();
+}
+/* }}} */
+
+
+/* {{{ MysqlCDriver::getMajorVersion() -I- */
+sal_Int32 SAL_CALL MysqlCDriver::getMajorVersion()
+ throw(RuntimeException)
+{
+ OSL_TRACE("MysqlCDriver::getMajorVersion");
+ return MYSQLC_VERSION_MAJOR;
+}
+/* }}} */
+
+
+/* {{{ MysqlCDriver::getMinorVersion() -I- */
+sal_Int32 SAL_CALL MysqlCDriver::getMinorVersion()
+ throw(RuntimeException)
+{
+ OSL_TRACE("MysqlCDriver::getMinorVersion");
+ return MYSQLC_VERSION_MINOR;
+}
+/* }}} */
+
+
+namespace connectivity
+{
+namespace mysqlc
+{
+
+Reference< XInterface > SAL_CALL MysqlCDriver_CreateInstance(const Reference< XMultiServiceFactory >& _rxFactory)
+ throw(::com::sun::star::uno::Exception)
+{
+ return(*(new MysqlCDriver(_rxFactory)));
+}
+
+/* {{{ connectivity::mysqlc::release() -I- */
+void release(oslInterlockedCount& _refCount,
+ ::cppu::OBroadcastHelper& rBHelper,
+ Reference< XInterface >& _xInterface,
+ ::com::sun::star::lang::XComponent* _pObject)
+{
+ if (osl_decrementInterlockedCount(&_refCount) == 0) {
+ osl_incrementInterlockedCount(&_refCount);
+
+ if (!rBHelper.bDisposed && !rBHelper.bInDispose) {
+ // remember the parent
+ Reference< XInterface > xParent;
+ {
+ ::osl::MutexGuard aGuard(rBHelper.rMutex);
+ xParent = _xInterface;
+ _xInterface = NULL;
+ }
+
+ // First dispose
+ _pObject->dispose();
+
+ // only the alive ref holds the object
+ OSL_ASSERT(_refCount == 1);
+
+ // release the parent in the destructor
+ if (xParent.is()) {
+ ::osl::MutexGuard aGuard(rBHelper.rMutex);
+ _xInterface = xParent;
+ }
+ }
+ } else {
+ osl_incrementInterlockedCount(&_refCount);
+ }
+}
+/* }}} */
+
+
+
+/* {{{ connectivity::mysqlc::checkDisposed() -I- */
+void checkDisposed(sal_Bool _bThrow)
+ throw (DisposedException)
+{
+ if (_bThrow) {
+ throw DisposedException();
+ }
+}
+/* }}} */
+
+} /* mysqlc */
+} /* connectivity */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_driver.hxx b/mysqlc/source/mysqlc_driver.hxx
new file mode 100644
index 000000000000..97426243eba9
--- /dev/null
+++ b/mysqlc/source/mysqlc_driver.hxx
@@ -0,0 +1,117 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef MYSQLC_SDRIVER_HXX
+#define MYSQLC_SDRIVER_HXX
+
+#include "mysqlc_connection.hxx"
+
+#include <com/sun/star/sdbc/XDriver.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+
+#include <cppuhelper/compbase2.hxx>
+#include <cppconn/driver.h>
+#include <osl/module.h>
+
+namespace connectivity
+{
+ namespace mysqlc
+ {
+ using ::rtl::OUString;
+ using ::com::sun::star::sdbc::SQLException;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Exception;
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::Sequence;
+ Reference< ::com::sun::star::uno::XInterface > SAL_CALL MysqlCDriver_CreateInstance(const Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory) throw(Exception);
+
+ typedef ::cppu::WeakComponentImplHelper2< ::com::sun::star::sdbc::XDriver,
+ ::com::sun::star::lang::XServiceInfo > ODriver_BASE;
+
+ typedef void* (SAL_CALL * OMysqlCConnection_CreateInstanceFunction)(void* _pDriver);
+
+ class MysqlCDriver : public ODriver_BASE
+ {
+ protected:
+ Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xFactory;
+ ::osl::Mutex m_aMutex; // mutex is need to control member access
+ OWeakRefArray m_xConnections; // vector containing a list
+ // of all the Connection objects
+ // for this Driver
+#ifndef SYSTEM_MYSQL_CPPCONN
+ oslModule m_hCppConnModule;
+ bool m_bAttemptedLoadCppConn;
+#endif
+
+ sql::Driver * cppDriver;
+
+ public:
+
+ MysqlCDriver(const Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory);
+
+ // OComponentHelper
+ void SAL_CALL disposing(void);
+ // XInterface
+ static OUString getImplementationName_Static() throw(RuntimeException);
+ static Sequence< OUString > getSupportedServiceNames_Static() throw(RuntimeException);
+
+ // XServiceInfo
+ OUString SAL_CALL getImplementationName() throw(RuntimeException);
+ sal_Bool SAL_CALL supportsService(const OUString& ServiceName) throw(RuntimeException);
+ Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(RuntimeException);
+
+ // XDriver
+ Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL connect(const OUString& url, const Sequence< ::com::sun::star::beans::PropertyValue >& info)
+ throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL acceptsURL(const OUString& url) throw(SQLException, RuntimeException);
+ Sequence< ::com::sun::star::sdbc::DriverPropertyInfo > SAL_CALL getPropertyInfo(const OUString& url, const Sequence< ::com::sun::star::beans::PropertyValue >& info)
+ throw(SQLException, RuntimeException);
+
+ sal_Int32 SAL_CALL getMajorVersion() throw(RuntimeException);
+ sal_Int32 SAL_CALL getMinorVersion() throw(RuntimeException);
+
+ inline Reference< ::com::sun::star::lang::XMultiServiceFactory > getFactory() const { return m_xFactory; }
+
+ rtl_TextEncoding getDefaultEncoding() { return RTL_TEXTENCODING_UTF8; }
+
+ private:
+ void impl_initCppConn_lck_throw();
+ };
+ } /* mysqlc */
+} /* connectivity */
+
+#endif // MYSQLC_SDRIVER_HXX
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_general.cxx b/mysqlc/source/mysqlc_general.cxx
new file mode 100644
index 000000000000..fb55f0bce06b
--- /dev/null
+++ b/mysqlc/source/mysqlc_general.cxx
@@ -0,0 +1,175 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+#include "mysqlc_general.hxx"
+#include "mysqlc_resultsetmetadata.hxx"
+
+#include <cppconn/exception.h>
+#include <cppconn/datatype.h>
+
+using com::sun::star::sdbc::SQLException;
+
+using com::sun::star::uno::UNO_QUERY;
+using com::sun::star::uno::Reference;
+using com::sun::star::uno::XInterface;
+using com::sun::star::uno::Any;
+using ::rtl::OUString;
+
+namespace mysqlc_sdbc_driver
+{
+// -----------------------------------------------------------------------------
+void throwFeatureNotImplementedException( const sal_Char* _pAsciiFeatureName, const Reference< XInterface >& _rxContext, const Any* _pNextException )
+ throw (SQLException)
+{
+ const ::rtl::OUString sMessage = ::rtl::OUString::createFromAscii( _pAsciiFeatureName ) + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ": feature not implemented." ) );
+ throw SQLException(
+ sMessage,
+ _rxContext,
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HYC00")),
+ 0,
+ _pNextException ? *_pNextException : Any()
+ );
+}
+
+
+void throwInvalidArgumentException( const sal_Char* _pAsciiFeatureName, const Reference< XInterface >& _rxContext, const Any* _pNextException )
+ throw (SQLException)
+{
+ const ::rtl::OUString sMessage = ::rtl::OUString::createFromAscii( _pAsciiFeatureName ) + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ": invalid arguments." ) );
+ throw SQLException(
+ sMessage,
+ _rxContext,
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HYC00")),
+ 0,
+ _pNextException ? *_pNextException : Any()
+ );
+}
+
+void translateAndThrow(const ::sql::SQLException& _error, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _context, const rtl_TextEncoding encoding)
+{
+ throw SQLException(
+ convert(_error.what(), encoding),
+ _context,
+ convert(_error.getSQLState(), encoding),
+ _error.getErrorCode(),
+ Any()
+ );
+}
+
+
+OUString getStringFromAny(const Any& _rAny)
+{
+ OUString nReturn;
+ OSL_VERIFY( _rAny >>= nReturn );
+ return nReturn;
+}
+
+
+int mysqlToOOOType(int cppConnType)
+ throw ()
+{
+ switch (cppConnType) {
+ case sql::DataType::BIT:
+ return com::sun::star::sdbc::DataType::VARCHAR;
+
+ case sql::DataType::TINYINT:
+ return com::sun::star::sdbc::DataType::TINYINT;
+
+ case sql::DataType::SMALLINT:
+ return com::sun::star::sdbc::DataType::SMALLINT;
+
+ case sql::DataType::INTEGER:
+ return com::sun::star::sdbc::DataType::INTEGER;
+
+ case sql::DataType::BIGINT:
+ return com::sun::star::sdbc::DataType::BIGINT;
+
+ case sql::DataType::REAL:
+ return com::sun::star::sdbc::DataType::REAL;
+
+ case sql::DataType::DOUBLE:
+ return com::sun::star::sdbc::DataType::DOUBLE;
+
+ case sql::DataType::DECIMAL:
+ return com::sun::star::sdbc::DataType::DECIMAL;
+
+ case sql::DataType::CHAR:
+ return com::sun::star::sdbc::DataType::CHAR;
+
+ case sql::DataType::BINARY:
+ return com::sun::star::sdbc::DataType::BINARY;
+
+ case sql::DataType::ENUM:
+ case sql::DataType::SET:
+ case sql::DataType::VARCHAR:
+ return com::sun::star::sdbc::DataType::VARCHAR;
+
+ case sql::DataType::VARBINARY:
+ return com::sun::star::sdbc::DataType::VARBINARY;
+
+ case sql::DataType::LONGVARCHAR:
+ return com::sun::star::sdbc::DataType::LONGVARCHAR;
+
+ case sql::DataType::LONGVARBINARY:
+ return com::sun::star::sdbc::DataType::LONGVARBINARY;
+
+ case sql::DataType::TIMESTAMP:
+ return com::sun::star::sdbc::DataType::TIMESTAMP;
+
+ case sql::DataType::DATE:
+ return com::sun::star::sdbc::DataType::DATE;
+
+ case sql::DataType::TIME:
+ return com::sun::star::sdbc::DataType::TIME;
+
+ case sql::DataType::GEOMETRY:
+ return com::sun::star::sdbc::DataType::VARCHAR;
+
+ case sql::DataType::SQLNULL:
+ return com::sun::star::sdbc::DataType::SQLNULL;
+
+ case sql::DataType::UNKNOWN:
+ return com::sun::star::sdbc::DataType::VARCHAR;
+ }
+
+ OSL_FAIL( "mysqlToOOOType: unhandled case, falling back to VARCHAR" );
+ return com::sun::star::sdbc::DataType::VARCHAR;
+}
+
+
+::rtl::OUString convert(const ::std::string& _string, const rtl_TextEncoding encoding)
+{
+ return ::rtl::OUString( _string.c_str(), _string.size(), encoding );
+}
+
+::std::string convert(const ::rtl::OUString& _string, const rtl_TextEncoding encoding)
+{
+ return ::std::string( ::rtl::OUStringToOString( _string, encoding ).getStr() );
+}
+
+
+} /* namespace */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_general.hxx b/mysqlc/source/mysqlc_general.hxx
new file mode 100644
index 000000000000..92aef186db6a
--- /dev/null
+++ b/mysqlc/source/mysqlc_general.hxx
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef _MYSQLC_GENERAL_
+#define _MYSQLC_GENERAL_
+
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/sdbc/SQLException.hpp>
+
+#include <cppconn/exception.h>
+
+namespace mysqlc_sdbc_driver
+{
+ rtl::OUString getStringFromAny(const ::com::sun::star::uno::Any& _rAny);
+
+ void throwFeatureNotImplementedException(
+ const sal_Char* _pAsciiFeatureName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContext,
+ const ::com::sun::star::uno::Any* _pNextException = NULL
+ )
+ throw (::com::sun::star::sdbc::SQLException);
+
+ void throwInvalidArgumentException(
+ const sal_Char* _pAsciiFeatureName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContext,
+ const ::com::sun::star::uno::Any* _pNextException = NULL
+ )
+ throw (::com::sun::star::sdbc::SQLException);
+
+ void translateAndThrow(const ::sql::SQLException& _error, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _context, const rtl_TextEncoding encoding);
+
+ int mysqlToOOOType(int mysqlType) throw ();
+
+
+ ::rtl::OUString convert(const ::std::string& _string, const rtl_TextEncoding encoding);
+
+ ::std::string convert(const ::rtl::OUString& _string, const rtl_TextEncoding encoding);
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_preparedstatement.cxx b/mysqlc/source/mysqlc_preparedstatement.cxx
new file mode 100644
index 000000000000..50a2e97969f1
--- /dev/null
+++ b/mysqlc/source/mysqlc_preparedstatement.cxx
@@ -0,0 +1,943 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#include "mysqlc_general.hxx"
+#include "mysqlc_preparedstatement.hxx"
+#include "mysqlc_propertyids.hxx"
+#include "mysqlc_resultsetmetadata.hxx"
+
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/sdbc/DataType.hpp>
+
+#include <cppconn/connection.h>
+#include <cppconn/exception.h>
+#include <cppconn/parameter_metadata.h>
+#include <cppconn/prepared_statement.h>
+#include <cppconn/statement.h>
+#include <cppuhelper/typeprovider.hxx>
+#include <osl/diagnose.h>
+
+#include <stdio.h>
+
+using namespace connectivity::mysqlc;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::sdbc;
+using namespace com::sun::star::container;
+using namespace com::sun::star::io;
+using namespace com::sun::star::util;
+using ::osl::MutexGuard;
+using mysqlc_sdbc_driver::getStringFromAny;
+
+
+/* {{{ my_i_to_a() -I- */
+static inline char * my_i_to_a(char * buf, size_t buf_size, int a)
+{
+ snprintf(buf, buf_size, "%d", a);
+ return buf;
+}
+/* }}} */
+
+
+IMPLEMENT_SERVICE_INFO(OPreparedStatement,"com.sun.star.sdbcx.mysqlc.PreparedStatement","com.sun.star.sdbc.PreparedStatement");
+
+
+/* {{{ OPreparedStatement::OPreparedStatement() -I- */
+OPreparedStatement::OPreparedStatement(OConnection* _pConnection, sql::PreparedStatement * _cppPrepStmt)
+ :OCommonStatement(_pConnection, _cppPrepStmt)
+{
+ OSL_TRACE("OPreparedStatement::OPreparedStatement");
+ m_pConnection = _pConnection;
+ m_pConnection->acquire();
+
+ try {
+ m_paramCount = ((sql::PreparedStatement *)cppStatement)->getParameterMetaData()->getParameterCount();
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::~OPreparedStatement() -I- */
+OPreparedStatement::~OPreparedStatement()
+{
+ OSL_TRACE("OPreparedStatement::~OPreparedStatement");
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::acquire() -I- */
+void SAL_CALL OPreparedStatement::acquire()
+ throw()
+{
+ OSL_TRACE("OPreparedStatement::acquire");
+ OCommonStatement::acquire();
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::release() -I- */
+void SAL_CALL OPreparedStatement::release()
+ throw()
+{
+ OSL_TRACE("OPreparedStatement::release");
+ OCommonStatement::release();
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::queryInterface() -I- */
+Any SAL_CALL OPreparedStatement::queryInterface(const Type & rType)
+ throw(RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::queryInterface");
+ Any aRet = OCommonStatement::queryInterface(rType);
+ if (!aRet.hasValue()) {
+ aRet = OPreparedStatement_BASE::queryInterface(rType);
+ }
+ return (aRet);
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::getPropertySetInfo() -I- */
+Sequence< Type > SAL_CALL OPreparedStatement::getTypes()
+ throw(RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::getTypes");
+ return concatSequences(OPreparedStatement_BASE::getTypes(), OCommonStatement::getTypes());
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::getMetaData() -I- */
+Reference< XResultSetMetaData > SAL_CALL OPreparedStatement::getMetaData()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::getMetaData");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+
+ try {
+ if (!m_xMetaData.is()) {
+ m_xMetaData = new OResultSetMetaData(
+ ((sql::PreparedStatement *)cppStatement)->getMetaData(),
+ getOwnConnection()->getConnectionEncoding()
+ );
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+ return m_xMetaData;
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::close() -I- */
+void SAL_CALL OPreparedStatement::close()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::close");
+
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+
+ try {
+ clearWarnings();
+ clearParameters();
+ OCommonStatement::close();
+ } catch (SQLException) {
+ // If we get an error, ignore
+ }
+
+ // Remove this Statement object from the Connection object's
+ // list
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::execute() -I- */
+sal_Bool SAL_CALL OPreparedStatement::execute()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::execute");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+
+ sal_Bool success = sal_False;
+ try {
+ success = ((sql::PreparedStatement *)cppStatement)->execute()? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+ return success;
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::executeUpdate() -I- */
+sal_Int32 SAL_CALL OPreparedStatement::executeUpdate()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::executeUpdate");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+
+ sal_Int32 affectedRows = sal_False;
+ try {
+ affectedRows = ((sql::PreparedStatement *)cppStatement)->executeUpdate();
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+ return affectedRows;
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::getPropertySetInfo() -I- */
+void SAL_CALL OPreparedStatement::setString(sal_Int32 parameter, const OUString& x)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setString");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ try {
+ std::string stringie(::rtl::OUStringToOString(x, m_pConnection->getConnectionEncoding()).getStr());
+ ((sql::PreparedStatement *)cppStatement)->setString(parameter, stringie);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::clearParameters", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::getConnection() -I- */
+Reference< XConnection > SAL_CALL OPreparedStatement::getConnection()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::getConnection");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+
+ return (Reference< XConnection >)m_pConnection;
+}
+/* }}} */
+
+Reference< XResultSet > SAL_CALL OPreparedStatement::executeQuery(const OUString& sql)
+ throw(SQLException, RuntimeException)
+{
+ return OCommonStatement::executeQuery( sql );
+}
+
+sal_Int32 SAL_CALL OPreparedStatement::executeUpdate(const OUString& sql)
+ throw(SQLException, RuntimeException)
+{
+ return OCommonStatement::executeUpdate( sql );
+}
+
+sal_Bool SAL_CALL OPreparedStatement::execute( const OUString& sql )
+ throw(SQLException, RuntimeException)
+{
+ return OCommonStatement::execute( sql );
+}
+
+/* {{{ OPreparedStatement::executeQuery() -I- */
+Reference< XResultSet > SAL_CALL OPreparedStatement::executeQuery()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::executeQuery");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+
+ Reference< XResultSet > xResultSet;
+ try {
+ sql::ResultSet * res = ((sql::PreparedStatement *)cppStatement)->executeQuery();
+ xResultSet = new OResultSet(this, res, getOwnConnection()->getConnectionEncoding());
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setBoolean() -I- */
+void SAL_CALL OPreparedStatement::setBoolean(sal_Int32 parameter, sal_Bool x)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setBoolean");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setBoolean(parameter, x);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setBoolean", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setByte() -I- */
+void SAL_CALL OPreparedStatement::setByte(sal_Int32 parameter, sal_Int8 x)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setByte");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setInt(parameter, x);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setByte", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setDate() -I- */
+void SAL_CALL OPreparedStatement::setDate(sal_Int32 parameter, const Date& aData)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setDate");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ std::string dateStr;
+ char buf[20];
+ dateStr.append(my_i_to_a(buf, sizeof(buf)-1, aData.Year));
+ dateStr.append("-", 1);
+ dateStr.append(my_i_to_a(buf, sizeof(buf)-1, aData.Month));
+ dateStr.append("-", 1);
+ dateStr.append(my_i_to_a(buf, sizeof(buf)-1, aData.Day));
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setDateTime(parameter, dateStr);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setDate", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setTime() -I- */
+void SAL_CALL OPreparedStatement::setTime(sal_Int32 parameter, const Time& aVal)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setTime");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ std::string timeStr;
+ char buf[20];
+ timeStr.append(my_i_to_a(buf, sizeof(buf)-1, aVal.Hours));
+ timeStr.append(":", 1);
+ timeStr.append(my_i_to_a(buf, sizeof(buf)-1, aVal.Minutes));
+ timeStr.append(":", 1);
+ timeStr.append(my_i_to_a(buf, sizeof(buf)-1, aVal.Seconds));
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setDateTime(parameter, timeStr);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setTime", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setTimestamp() -I- */
+void SAL_CALL OPreparedStatement::setTimestamp(sal_Int32 parameter, const DateTime& aVal)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setTimestamp");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ std::string timeStr;
+ char buf[20];
+ timeStr.append(my_i_to_a(buf, sizeof(buf)-1, aVal.Year));
+ timeStr.append("-", 1);
+ timeStr.append(my_i_to_a(buf, sizeof(buf)-1, aVal.Month));
+ timeStr.append("-", 1);
+ timeStr.append(my_i_to_a(buf, sizeof(buf)-1, aVal.Day));
+
+ timeStr.append(" ", 1);
+
+ timeStr.append(my_i_to_a(buf, sizeof(buf)-1, aVal.Hours));
+ timeStr.append(":", 1);
+ timeStr.append(my_i_to_a(buf, sizeof(buf)-1, aVal.Minutes));
+ timeStr.append(":", 1);
+ timeStr.append(my_i_to_a(buf, sizeof(buf)-1, aVal.Seconds));
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setDateTime(parameter, timeStr);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setTimestamp", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setDouble() -I- */
+void SAL_CALL OPreparedStatement::setDouble(sal_Int32 parameter, double x)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setDouble");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setDouble(parameter, x);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setDouble", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setFloat() -I- */
+void SAL_CALL OPreparedStatement::setFloat(sal_Int32 parameter, float x)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setFloat");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setDouble(parameter, x);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setFloat", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setInt() -I- */
+void SAL_CALL OPreparedStatement::setInt(sal_Int32 parameter, sal_Int32 x)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setInt");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setInt(parameter, x);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setInt", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setLong() -I- */
+void SAL_CALL OPreparedStatement::setLong(sal_Int32 parameter, sal_Int64 aVal)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setLong");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setInt64(parameter, aVal);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setLong", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setNull() -I- */
+void SAL_CALL OPreparedStatement::setNull(sal_Int32 parameter, sal_Int32 sqlType)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setNull");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setNull(parameter, sqlType);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setNull", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setClob() -U- */
+void SAL_CALL OPreparedStatement::setClob(sal_Int32 parameter, const Reference< XClob >& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setClob");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setClob", *this);
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setBlob() -U- */
+void SAL_CALL OPreparedStatement::setBlob(sal_Int32 parameter, const Reference< XBlob >& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setBlob");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setBlob", *this);
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setArray() -U- */
+void SAL_CALL OPreparedStatement::setArray(sal_Int32 parameter, const Reference< XArray >& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setArray");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setArray", *this);
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setRef() -U- */
+void SAL_CALL OPreparedStatement::setRef(sal_Int32 parameter, const Reference< XRef >& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setRef");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setRef", *this);
+}
+/* }}} */
+
+namespace
+{
+ template < class COMPLEXTYPE >
+ bool impl_setObject( const Reference< XParameters >& _rxParam, sal_Int32 _parameterIndex, const Any& _value,
+ void ( SAL_CALL XParameters::*_Setter )( sal_Int32, const COMPLEXTYPE& ), bool _throwIfNotExtractable )
+ {
+ COMPLEXTYPE aValue;
+ if ( _value >>= aValue )
+ {
+ (_rxParam.get()->*_Setter)( _parameterIndex, aValue );
+ return true;
+ }
+
+ if ( _throwIfNotExtractable )
+ mysqlc_sdbc_driver::throwInvalidArgumentException( "OPreparedStatement::setObjectWithInfo", _rxParam );
+ return false;
+ }
+
+ template < class INTTYPE >
+ void impl_setObject( const Reference< XParameters >& _rxParam, sal_Int32 _parameterIndex, const Any& _value,
+ void ( SAL_CALL XParameters::*_Setter )( sal_Int32, INTTYPE ) )
+ {
+ sal_Int32 nValue(0);
+ if ( !( _value >>= nValue ) )
+ mysqlc_sdbc_driver::throwInvalidArgumentException( "OPreparedStatement::setObjectWithInfo", _rxParam );
+ (_rxParam.get()->*_Setter)( _parameterIndex, (INTTYPE)nValue );
+ }
+}
+
+/* {{{ OPreparedStatement::setObjectWithInfo() -U- */
+void SAL_CALL OPreparedStatement::setObjectWithInfo(sal_Int32 _parameterIndex, const Any& _value, sal_Int32 _targetSqlType, sal_Int32 /* scale */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setObjectWithInfo");
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ MutexGuard aGuard(m_aMutex);
+ checkParameterIndex( _parameterIndex );
+
+ if ( !_value.hasValue() )
+ {
+ setNull( _parameterIndex, _targetSqlType );
+ return;
+ }
+
+ switch ( _targetSqlType )
+ {
+ case DataType::DECIMAL:
+ case DataType::NUMERIC:
+ {
+ double nValue(0);
+ if ( _value >>= nValue )
+ {
+ setDouble( _parameterIndex, nValue );
+ break;
+ }
+ }
+ // run through
+
+ case DataType::CHAR:
+ case DataType::VARCHAR:
+ case DataType::LONGVARCHAR:
+ impl_setObject( this, _parameterIndex, _value, &XParameters::setString, true );
+ break;
+
+ case DataType::BIGINT:
+ {
+ sal_Int64 nValue = 0;
+ if ( !( _value >>= nValue ) )
+ mysqlc_sdbc_driver::throwInvalidArgumentException( "OPreparedStatement::setObjectWithInfo", *this );
+ setLong( _parameterIndex, nValue );
+ }
+ break;
+
+ case DataType::FLOAT:
+ case DataType::REAL:
+ {
+ float nValue = 0;
+ if ( _value >>= nValue )
+ {
+ setFloat(_parameterIndex,nValue);
+ break;
+ }
+ }
+ // run through if we couldn't set a float value
+
+ case DataType::DOUBLE:
+ {
+ double nValue(0);
+ if ( !( _value >>= nValue ) )
+ mysqlc_sdbc_driver::throwInvalidArgumentException( "OPreparedStatement::setObjectWithInfo", *this );
+ setDouble( _parameterIndex, nValue );
+ }
+ break;
+
+ case DataType::DATE:
+ impl_setObject( this, _parameterIndex, _value, &XParameters::setDate, true );
+ break;
+
+ case DataType::TIME:
+ impl_setObject( this, _parameterIndex, _value, &XParameters::setTime, true );
+ break;
+
+ case DataType::TIMESTAMP:
+ impl_setObject( this, _parameterIndex, _value, &XParameters::setTimestamp, true );
+ break;
+
+ case DataType::BINARY:
+ case DataType::VARBINARY:
+ case DataType::LONGVARBINARY:
+ {
+ if ( impl_setObject( this, _parameterIndex, _value, &XParameters::setBytes, false )
+ || impl_setObject( this, _parameterIndex, _value, &XParameters::setBlob, false )
+ || impl_setObject( this, _parameterIndex, _value, &XParameters::setClob, false )
+ )
+ break;
+
+ Reference< ::com::sun::star::io::XInputStream > xBinStream;
+ if ( _value >>= xBinStream )
+ {
+ setBinaryStream( _parameterIndex, xBinStream, xBinStream->available() );
+ break;
+ }
+
+ mysqlc_sdbc_driver::throwInvalidArgumentException( "OPreparedStatement::setObjectWithInfo", *this );
+ }
+ break;
+
+ case DataType::BIT:
+ case DataType::BOOLEAN:
+ {
+ bool bValue( false );
+ if ( _value >>= bValue )
+ {
+ setBoolean( _parameterIndex, bValue );
+ break;
+ }
+ sal_Int32 nValue( 0 );
+ if ( _value >>= nValue )
+ {
+ setBoolean( _parameterIndex, ( nValue != 0 ) );
+ break;
+ }
+ mysqlc_sdbc_driver::throwInvalidArgumentException( "OPreparedStatement::setObjectWithInfo", *this );
+ }
+ break;
+
+ case DataType::TINYINT:
+ impl_setObject( this, _parameterIndex, _value, &XParameters::setByte );
+ break;
+
+ case DataType::SMALLINT:
+ impl_setObject( this, _parameterIndex, _value, &XParameters::setShort );
+ break;
+
+ case DataType::INTEGER:
+ impl_setObject( this, _parameterIndex, _value, &XParameters::setInt );
+ break;
+
+ default:
+ mysqlc_sdbc_driver::throwInvalidArgumentException( "OPreparedStatement::setObjectWithInfo", *this );
+ break;
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setObjectNull() -U- */
+void SAL_CALL OPreparedStatement::setObjectNull(sal_Int32 parameter, sal_Int32 /* sqlType */, const OUString& /* typeName */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setObjectNull");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setObjectNull", *this);
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setObject() -U- */
+void SAL_CALL OPreparedStatement::setObject(sal_Int32 parameter, const Any& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setObject");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setObject", *this);
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setShort() -I- */
+void SAL_CALL OPreparedStatement::setShort(sal_Int32 parameter, sal_Int16 x)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setShort");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setInt(parameter, x);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setShort", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setBytes() -I- */
+void SAL_CALL OPreparedStatement::setBytes(sal_Int32 parameter, const Sequence< sal_Int8 >& x)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setBytes");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ std::string blobby((char *)x.getConstArray(), x.getLength());
+ try {
+ ((sql::PreparedStatement *)cppStatement)->setString(parameter, blobby);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setBytes", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setCharacterStream() -U- */
+void SAL_CALL OPreparedStatement::setCharacterStream(sal_Int32 parameter,
+ const Reference< XInputStream >& /* x */,
+ sal_Int32 /* length */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setCharacterStream");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setCharacterStream", *this);
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setBinaryStream() -U- */
+void SAL_CALL OPreparedStatement::setBinaryStream(sal_Int32 parameter,
+ const Reference< XInputStream >& /* x */,
+ sal_Int32 /* length */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::setBinaryStream");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+ checkParameterIndex(parameter);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::setBinaryStream", *this);
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::clearParameters() -I- */
+void SAL_CALL OPreparedStatement::clearParameters()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::clearParameters");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OPreparedStatement::rBHelper.bDisposed);
+
+ try {
+ ((sql::PreparedStatement *)cppStatement)->clearParameters();
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::clearParameters", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::clearBatch() -U- */
+void SAL_CALL OPreparedStatement::clearBatch()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::clearBatch");
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::clearBatch", *this);
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::addBatch() -U- */
+void SAL_CALL OPreparedStatement::addBatch()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::addBatch");
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OPreparedStatement::addBatch", *this);
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::executeBatch() -I- */
+Sequence< sal_Int32 > SAL_CALL OPreparedStatement::executeBatch()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OPreparedStatement::executeBatch");
+ Sequence< sal_Int32 > aRet= Sequence< sal_Int32 > ();
+ return aRet;
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::setFastPropertyValue_NoBroadcast() -I- */
+void OPreparedStatement::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue)
+ throw(Exception)
+{
+ OSL_TRACE("OPreparedStatement::setFastPropertyValue_NoBroadcast");
+ switch(nHandle)
+ {
+ case PROPERTY_ID_RESULTSETCONCURRENCY:
+ break;
+ case PROPERTY_ID_RESULTSETTYPE:
+ break;
+ case PROPERTY_ID_FETCHDIRECTION:
+ break;
+ case PROPERTY_ID_USEBOOKMARKS:
+ break;
+ default:
+ /* XXX: Recursion ?? */
+ OPreparedStatement::setFastPropertyValue_NoBroadcast(nHandle,rValue);
+ }
+}
+/* }}} */
+
+
+/* {{{ OPreparedStatement::checkParameterIndex() -I- */
+void OPreparedStatement::checkParameterIndex(sal_Int32 column)
+{
+ OSL_TRACE("OPreparedStatement::checkColumnIndex");
+ if (column < 1 || column > (sal_Int32) m_paramCount) {
+ OUString buf( RTL_CONSTASCII_USTRINGPARAM( "Parameter index out of range" ) );
+ throw SQLException(buf, *this, OUString(), 1, Any ());
+ }
+}
+/* }}} */
+
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_preparedstatement.hxx b/mysqlc/source/mysqlc_preparedstatement.hxx
new file mode 100644
index 000000000000..07846ca7cfb1
--- /dev/null
+++ b/mysqlc/source/mysqlc_preparedstatement.hxx
@@ -0,0 +1,183 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef CONNECTIVITY_SPREPAREDSTATEMENT_HXX
+#define CONNECTIVITY_SPREPAREDSTATEMENT_HXX
+#include "mysqlc_statement.hxx"
+#include "mysqlc_resultset.hxx"
+
+#include <com/sun/star/sdbc/XPreparedStatement.hpp>
+#include <com/sun/star/sdbc/XParameters.hpp>
+#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
+#include <com/sun/star/sdbc/XPreparedBatchExecution.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+
+#include <cppconn/prepared_statement.h>
+
+namespace connectivity
+{
+ namespace mysqlc
+ {
+ using ::com::sun::star::uno::Reference;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::Type;
+ using ::com::sun::star::sdbc::SQLException;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::sdbc::XResultSetMetaData;
+
+ class OBoundParam;
+ typedef ::cppu::ImplHelper5< ::com::sun::star::sdbc::XPreparedStatement,
+ ::com::sun::star::sdbc::XParameters,
+ ::com::sun::star::sdbc::XPreparedBatchExecution,
+ ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
+ ::com::sun::star::lang::XServiceInfo> OPreparedStatement_BASE;
+
+ class OPreparedStatement : public OCommonStatement,
+ public OPreparedStatement_BASE
+ {
+ protected:
+ unsigned int m_paramCount; // number of placeholders
+ sal_Int32 m_nNumParams; // Number of parameter markers for the prepared statement
+ Reference< XResultSetMetaData > m_xMetaData;
+
+ void checkParameterIndex(sal_Int32 parameter);
+
+ protected:
+ void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const Any& rValue)
+ throw (::com::sun::star::uno::Exception);
+ virtual ~OPreparedStatement();
+ public:
+ DECLARE_SERVICE_INFO();
+ OPreparedStatement(OConnection* _pConnection, sql::PreparedStatement * cppPrepStmt);
+
+ //XInterface
+ Any SAL_CALL queryInterface(const Type & rType) throw(RuntimeException);
+ void SAL_CALL acquire() throw();
+ void SAL_CALL release() throw();
+
+ //XTypeProvider
+ ::com::sun::star::uno::Sequence< Type > SAL_CALL getTypes()
+ throw(RuntimeException);
+
+ // XPreparedStatement
+ Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery() throw(SQLException, RuntimeException);
+ sal_Int32 SAL_CALL executeUpdate() throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL execute() throw(SQLException, RuntimeException);
+ Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection() throw(SQLException, RuntimeException);
+
+ // XStatement
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery(const OUString& sql)
+ throw(SQLException, RuntimeException);
+ sal_Int32 SAL_CALL executeUpdate(const OUString& sql)
+ throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL execute( const OUString& sql )
+ throw(SQLException, RuntimeException);
+
+ // XParameters
+ void SAL_CALL setNull(sal_Int32 parameter, sal_Int32 sqlType) throw(SQLException, RuntimeException);
+
+ void SAL_CALL setObjectNull(sal_Int32 parameter, sal_Int32 sqlType, const OUString& typeName)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setBoolean(sal_Int32 parameter, sal_Bool x) throw(SQLException, RuntimeException);
+
+ void SAL_CALL setByte(sal_Int32 parameter, sal_Int8 x) throw(SQLException, RuntimeException);
+
+ void SAL_CALL setShort(sal_Int32 parameter, sal_Int16 x) throw(SQLException, RuntimeException);
+
+ void SAL_CALL setInt(sal_Int32 parameter, sal_Int32 x) throw(SQLException, RuntimeException);
+
+ void SAL_CALL setLong(sal_Int32 parameter, sal_Int64 x) throw(SQLException, RuntimeException);
+
+ void SAL_CALL setFloat(sal_Int32 parameter, float x) throw(SQLException, RuntimeException);
+
+ void SAL_CALL setDouble(sal_Int32 parameter, double x) throw(SQLException, RuntimeException);
+
+ void SAL_CALL setString(sal_Int32 parameter, const OUString& x) throw(SQLException, RuntimeException);
+
+ void SAL_CALL setBytes(sal_Int32 parameter, const ::com::sun::star::uno::Sequence< sal_Int8 >& x)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setDate(sal_Int32 parameter, const ::com::sun::star::util::Date& x)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setTime(sal_Int32 parameter, const ::com::sun::star::util::Time& x)
+ throw(SQLException, RuntimeException);
+ void SAL_CALL setTimestamp(sal_Int32 parameter, const ::com::sun::star::util::DateTime& x)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setBinaryStream(sal_Int32 parameter, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setCharacterStream(sal_Int32 parameter, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setObject(sal_Int32 parameter, const Any& x) throw(SQLException, RuntimeException);
+
+ void SAL_CALL setObjectWithInfo(sal_Int32 parameter, const Any& x, sal_Int32 targetSqlType, sal_Int32 scale)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setRef(sal_Int32 parameter, const Reference< ::com::sun::star::sdbc::XRef >& x)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setBlob(sal_Int32 parameter, const Reference< ::com::sun::star::sdbc::XBlob >& x)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setClob(sal_Int32 parameter, const Reference< ::com::sun::star::sdbc::XClob >& x)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL setArray(sal_Int32 parameter, const Reference< ::com::sun::star::sdbc::XArray >& x)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL clearParameters() throw(SQLException, RuntimeException);
+
+ // XPreparedBatchExecution
+ void SAL_CALL addBatch() throw(SQLException, RuntimeException);
+ void SAL_CALL clearBatch() throw(SQLException, RuntimeException);
+ ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL executeBatch() throw(SQLException, RuntimeException);
+
+ // XCloseable
+ void SAL_CALL close() throw(SQLException, RuntimeException);
+
+ // XResultSetMetaDataSupplier
+ Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData()
+ throw(SQLException, RuntimeException);
+ };
+ } /* mysqlc */
+} /* connectivity */
+#endif // CONNECTIVITY_SPREPAREDSTATEMENT_HXX
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_propertyids.cxx b/mysqlc/source/mysqlc_propertyids.cxx
new file mode 100644
index 000000000000..54aa0737d9bb
--- /dev/null
+++ b/mysqlc/source/mysqlc_propertyids.cxx
@@ -0,0 +1,207 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#include <osl/diagnose.h>
+#include "mysqlc_propertyids.hxx"
+
+using ::rtl::OUString;
+
+namespace connectivity
+{
+namespace mysqlc
+{
+const sal_Char* getPROPERTY_QUERYTIMEOUT() { return "QueryTimeOut"; }
+const sal_Char* getPROPERTY_MAXFIELDSIZE() { return "MaxFieldSize"; }
+const sal_Char* getPROPERTY_MAXROWS() { return "MaxRows"; }
+const sal_Char* getPROPERTY_CURSORNAME() { return "CursorName"; }
+const sal_Char* getPROPERTY_RESULTSETCONCURRENCY() { return "ResultSetConcurrency"; }
+const sal_Char* getPROPERTY_RESULTSETTYPE() { return "ResultSetType"; }
+const sal_Char* getPROPERTY_FETCHDIRECTION() { return "FetchDirection"; }
+const sal_Char* getPROPERTY_FETCHSIZE() { return "FetchSize"; }
+const sal_Char* getPROPERTY_ESCAPEPROCESSING() { return "EscapeProcessing"; }
+const sal_Char* getPROPERTY_USEBOOKMARKS() { return "UseBookmarks"; }
+
+const sal_Char* getPROPERTY_NAME() { return "Name"; }
+const sal_Char* getPROPERTY_TYPE() { return "Type"; }
+const sal_Char* getPROPERTY_TYPENAME() { return "TypeName"; }
+const sal_Char* getPROPERTY_PRECISION() { return "Precision"; }
+const sal_Char* getPROPERTY_SCALE() { return "Scale"; }
+const sal_Char* getPROPERTY_ISNULLABLE() { return "IsNullable"; }
+const sal_Char* getPROPERTY_ISAUTOINCREMENT() { return "IsAutoIncrement"; }
+const sal_Char* getPROPERTY_ISROWVERSION() { return "IsRowVersion"; }
+const sal_Char* getPROPERTY_DESCRIPTION() { return "Description"; }
+const sal_Char* getPROPERTY_DEFAULTVALUE() { return "DefaultValue"; }
+
+const sal_Char* getPROPERTY_REFERENCEDTABLE() { return "ReferencedTable"; }
+const sal_Char* getPROPERTY_UPDATERULE() { return "UpdateRule"; }
+const sal_Char* getPROPERTY_DELETERULE() { return "DeleteRule"; }
+const sal_Char* getPROPERTY_CATALOG() { return "Catalog"; }
+const sal_Char* getPROPERTY_ISUNIQUE() { return "IsUnique"; }
+const sal_Char* getPROPERTY_ISPRIMARYKEYINDEX() { return "IsPrimaryKeyIndex"; }
+const sal_Char* getPROPERTY_ISCLUSTERED() { return "IsClustered"; }
+const sal_Char* getPROPERTY_ISASCENDING() { return "IsAscending"; }
+const sal_Char* getPROPERTY_SCHEMANAME() { return "SchemaName"; }
+const sal_Char* getPROPERTY_CATALOGNAME() { return "CatalogName"; }
+const sal_Char* getPROPERTY_COMMAND() { return "Command"; }
+const sal_Char* getPROPERTY_CHECKOPTION() { return "CheckOption"; }
+const sal_Char* getPROPERTY_PASSWORD() { return "Password"; }
+const sal_Char* getPROPERTY_RELATEDCOLUMN() { return "RelatedColumn"; }
+
+const sal_Char* getSTAT_INVALID_INDEX() { return "Invalid descriptor index"; }
+
+const sal_Char* getPROPERTY_FUNCTION() { return "Function"; }
+const sal_Char* getPROPERTY_TABLENAME() { return "TableName"; }
+const sal_Char* getPROPERTY_REALNAME() { return "RealName"; }
+const sal_Char* getPROPERTY_DBASEPRECISIONCHANGED() { return "DbasePrecisionChanged"; }
+const sal_Char* getPROPERTY_ISCURRENCY() { return "IsCurrency"; }
+const sal_Char* getPROPERTY_ISBOOKMARKABLE() { return "IsBookmarkable"; }
+
+const sal_Char* getPROPERTY_FORMATKEY() { return "FormatKey"; }
+const sal_Char* getPROPERTY_LOCALE() { return "Locale"; }
+
+const sal_Char* getPROPERTY_AUTOINCREMENTCREATION() { return "AutoIncrementCreation"; }
+const sal_Char* getPROPERTY_PRIVILEGES() { return "Privileges"; }
+ //============================================================
+ //= error messages
+ //============================================================
+const sal_Char* getERRORMSG_SEQUENCE() { return "Function sequence error"; }
+const sal_Char* getSQLSTATE_SEQUENCE() { return "HY010"; }
+const sal_Char* getSQLSTATE_GENERAL() { return "HY0000"; }
+const sal_Char* getSTR_DELIMITER() { return "/"; }
+
+
+
+/* {{{ OPropertyMap::~OPropertyMap() -I- */
+OPropertyMap::~OPropertyMap()
+{
+ ::std::map<sal_Int32 , rtl_uString*>::iterator aIter = m_aPropertyMap.begin();
+ for(; aIter != m_aPropertyMap.end(); ++aIter) {
+ if (aIter->second) {
+ rtl_uString_release(aIter->second);
+ }
+ }
+}
+/* }}} */
+
+
+/* {{{ OPropertyMap::getNameByIndex() -I- */
+OUString OPropertyMap::getNameByIndex(sal_Int32 idx) const
+{
+ OUString sRet;
+ ::std::map<sal_Int32 , rtl_uString*>::const_iterator aIter = m_aPropertyMap.find(idx);
+ if (aIter == m_aPropertyMap.end()) {
+ sRet = const_cast<OPropertyMap*>(this)->fillValue(idx);
+ } else {
+ sRet = aIter->second;
+ }
+ return sRet;
+}
+/* }}} */
+
+typedef const sal_Char * (*property_callback)();
+
+static const property_callback property_callbacks[PROPERTY_ID_LAST] =
+{
+ NULL, /* PROPERTY_ID_FIRST */
+ getPROPERTY_QUERYTIMEOUT,
+ getPROPERTY_MAXFIELDSIZE,
+ getPROPERTY_MAXROWS,
+ getPROPERTY_CURSORNAME,
+ getPROPERTY_RESULTSETCONCURRENCY,
+ getPROPERTY_RESULTSETTYPE,
+ getPROPERTY_FETCHDIRECTION,
+ getPROPERTY_FETCHSIZE,
+ getPROPERTY_ESCAPEPROCESSING,
+ getPROPERTY_USEBOOKMARKS,
+ // Column
+ getPROPERTY_NAME,
+ getPROPERTY_TYPE,
+ getPROPERTY_TYPENAME,
+ getPROPERTY_PRECISION,
+ getPROPERTY_SCALE,
+ getPROPERTY_ISNULLABLE,
+ getPROPERTY_ISAUTOINCREMENT,
+ getPROPERTY_ISROWVERSION,
+ getPROPERTY_DESCRIPTION,
+ getPROPERTY_DEFAULTVALUE,
+
+ getPROPERTY_REFERENCEDTABLE,
+ getPROPERTY_UPDATERULE,
+ getPROPERTY_DELETERULE,
+ getPROPERTY_CATALOG,
+ getPROPERTY_ISUNIQUE,
+ getPROPERTY_ISPRIMARYKEYINDEX,
+ getPROPERTY_ISCLUSTERED,
+ getPROPERTY_ISASCENDING,
+ getPROPERTY_SCHEMANAME,
+ getPROPERTY_CATALOGNAME,
+
+ getPROPERTY_COMMAND,
+ getPROPERTY_CHECKOPTION,
+ getPROPERTY_PASSWORD,
+ getPROPERTY_RELATEDCOLUMN,
+
+ getPROPERTY_FUNCTION,
+ getPROPERTY_TABLENAME,
+ getPROPERTY_REALNAME,
+ getPROPERTY_DBASEPRECISIONCHANGED,
+ getPROPERTY_ISCURRENCY,
+ getPROPERTY_ISBOOKMARKABLE,
+ getSTAT_INVALID_INDEX,
+ getERRORMSG_SEQUENCE,
+ getSQLSTATE_SEQUENCE,
+ getSQLSTATE_GENERAL,
+ getSTR_DELIMITER,
+ getPROPERTY_FORMATKEY,
+ getPROPERTY_LOCALE,
+ getPROPERTY_AUTOINCREMENTCREATION,
+ getPROPERTY_PRIVILEGES,
+};
+
+
+/* {{{ OPropertyMap::fillValue() -I- */
+OUString OPropertyMap::fillValue(sal_Int32 idx)
+{
+ rtl_uString* pStr = NULL;
+ rtl_uString_newFromAscii(&pStr, property_callbacks[idx]());
+ m_aPropertyMap[idx] = pStr;
+ return pStr;
+}
+/* }}} */
+
+} /* mysqlc */
+} /* connectivity */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_propertyids.hxx b/mysqlc/source/mysqlc_propertyids.hxx
new file mode 100644
index 000000000000..294ed509ee23
--- /dev/null
+++ b/mysqlc/source/mysqlc_propertyids.hxx
@@ -0,0 +1,138 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+#ifndef _CONNECTIVITY_PROPERTYIDS_HXX_
+#define _CONNECTIVITY_PROPERTYIDS_HXX_
+
+// this define has to be set to split the names into different dll's or so's
+// every dll has his own set of property names
+#ifndef _RTL_USTRING_
+#include <rtl/ustring.hxx>
+#endif
+#ifndef _MAP_
+#include <map>
+#endif
+
+namespace connectivity
+{
+namespace mysqlc
+{
+ class OPropertyMap
+ {
+ ::std::map<sal_Int32 , rtl_uString*> m_aPropertyMap;
+
+ ::rtl::OUString fillValue(sal_Int32 _nIndex);
+ public:
+ OPropertyMap()
+ {
+ }
+ ~OPropertyMap();
+ ::rtl::OUString getNameByIndex(sal_Int32 _nIndex) const;
+
+ static OPropertyMap& getPropMap()
+ {
+ static OPropertyMap s_aPropMap;
+ return s_aPropMap;
+ }
+ };
+
+
+ typedef const sal_Char* (*PVFN)();
+
+ struct UStringDescription
+ {
+ const sal_Char* pZeroTerminatedName;
+ sal_Int32 nLength;
+
+ UStringDescription(PVFN _fCharFkt);
+ operator ::rtl::OUString() const { return ::rtl::OUString(pZeroTerminatedName,nLength,RTL_TEXTENCODING_ASCII_US); }
+ ~UStringDescription();
+ private:
+ UStringDescription();
+ };
+
+
+enum
+{
+ PROPERTY_ID_FIRST = 0,
+ PROPERTY_ID_QUERYTIMEOUT,
+ PROPERTY_ID_MAXFIELDSIZE,
+ PROPERTY_ID_MAXROWS,
+ PROPERTY_ID_CURSORNAME,
+ PROPERTY_ID_RESULTSETCONCURRENCY,
+ PROPERTY_ID_RESULTSETTYPE,
+ PROPERTY_ID_FETCHDIRECTION,
+ PROPERTY_ID_FETCHSIZE,
+ PROPERTY_ID_ESCAPEPROCESSING,
+ PROPERTY_ID_USEBOOKMARKS,
+// Column
+ PROPERTY_ID_NAME,
+ PROPERTY_ID_TYPE,
+ PROPERTY_ID_TYPENAME,
+ PROPERTY_ID_PRECISION,
+ PROPERTY_ID_SCALE,
+ PROPERTY_ID_ISNULLABLE,
+ PROPERTY_ID_ISAUTOINCREMENT,
+ PROPERTY_ID_ISROWVERSION,
+ PROPERTY_ID_DESCRIPTION,
+ PROPERTY_ID_DEFAULTVALUE,
+
+ PROPERTY_ID_REFERENCEDTABLE,
+ PROPERTY_ID_UPDATERULE,
+ PROPERTY_ID_DELETERULE,
+ PROPERTY_ID_CATALOG,
+ PROPERTY_ID_ISUNIQUE,
+ PROPERTY_ID_ISPRIMARYKEYINDEX,
+ PROPERTY_ID_ISCLUSTERED,
+ PROPERTY_ID_ISASCENDING,
+ PROPERTY_ID_SCHEMANAME,
+ PROPERTY_ID_CATALOGNAME,
+
+ PROPERTY_ID_COMMAND,
+ PROPERTY_ID_CHECKOPTION,
+ PROPERTY_ID_PASSWORD,
+ PROPERTY_ID_RELATEDCOLUMN,
+
+ PROPERTY_ID_FUNCTION,
+ PROPERTY_ID_TABLENAME,
+ PROPERTY_ID_REALNAME,
+ PROPERTY_ID_DBASEPRECISIONCHANGED,
+ PROPERTY_ID_ISCURRENCY,
+ PROPERTY_ID_ISBOOKMARKABLE,
+
+ PROPERTY_ID_INVALID_INDEX,
+ PROPERTY_ID_ERRORMSG_SEQUENCE,
+ PROPERTY_ID_HY010,
+ PROPERTY_ID_HY0000,
+ PROPERTY_ID_DELIMITER,
+ PROPERTY_ID_FORMATKEY,
+ PROPERTY_ID_LOCALE,
+ PROPERTY_ID_IM001,
+
+ PROPERTY_ID_AUTOINCREMENTCREATION,
+
+ PROPERTY_ID_PRIVILEGES,
+
+ PROPERTY_ID_LAST
+};
+}/* mysqlc */
+}/* connectivity */
+
+//------------------------------------------------------------------------------
+#define DECL_PROP1IMPL(varname, type) \
+pProperties[nPos++] = Property(OPropertyMap::getPropMap().getNameByIndex(PROPERTY_ID_##varname), PROPERTY_ID_##varname, ::getCppuType(reinterpret_cast< type*>(NULL)),
+//------------------------------------------------------------------------------
+#define DECL_PROP0(varname, type) \
+ DECL_PROP1IMPL(varname, type) 0)
+//------------------------------------------------------------------------------
+#define DECL_BOOL_PROP1IMPL(varname) \
+ pProperties[nPos++] = Property(OPropertyMap::getPropMap().getNameByIndex(PROPERTY_ID_##varname), PROPERTY_ID_##varname, ::getBooleanCppuType(),
+//------------------------------------------------------------------------------
+#define DECL_BOOL_PROP0(varname) \
+ DECL_BOOL_PROP1IMPL(varname) 0)
+
+
+
+#endif // _CONNECTIVITY_PROPERTYIDS_HXX_
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_resultset.cxx b/mysqlc/source/mysqlc_resultset.cxx
new file mode 100644
index 000000000000..ca8f640d2452
--- /dev/null
+++ b/mysqlc/source/mysqlc_resultset.cxx
@@ -0,0 +1,1513 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#include "mysqlc_propertyids.hxx"
+#include "mysqlc_general.hxx"
+#include "mysqlc_resultset.hxx"
+#include "mysqlc_resultsetmetadata.hxx"
+
+#include <com/sun/star/sdbc/DataType.hpp>
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#include <com/sun/star/sdbcx/CompareBookmark.hpp>
+#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
+#include <com/sun/star/sdbc/ResultSetType.hpp>
+#include <com/sun/star/sdbc/FetchDirection.hpp>
+#include <cppuhelper/typeprovider.hxx>
+#include <com/sun/star/lang/DisposedException.hpp>
+
+using namespace connectivity::mysqlc;
+using namespace cppu;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::sdbc;
+using namespace com::sun::star::sdbcx;
+using namespace com::sun::star::container;
+using namespace com::sun::star::io;
+using namespace com::sun::star::util;
+using ::osl::MutexGuard;
+using ::rtl::OUString;
+
+#include <cppconn/resultset.h>
+#include <cppconn/resultset_metadata.h>
+
+#include <stdio.h>
+
+
+// IMPLEMENT_SERVICE_INFO(OResultSet,"com.sun.star.sdbcx.OResultSet","com.sun.star.sdbc.ResultSet");
+/* {{{ OResultSet::getImplementationName() -I- */
+OUString SAL_CALL OResultSet::getImplementationName()
+ throw (RuntimeException)
+{
+ OSL_TRACE("OResultSet::getImplementationName");
+ return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdbcx.mysqlc.ResultSet" ) );
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getSupportedServiceNames() -I- */
+Sequence< OUString > SAL_CALL OResultSet::getSupportedServiceNames()
+ throw(RuntimeException)
+{
+ OSL_TRACE("OResultSet::getSupportedServiceNames");
+ Sequence< OUString > aSupported(2);
+ aSupported[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdbc.ResultSet" ) );
+ aSupported[1] = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdbcx.ResultSet" ) );
+ return (aSupported);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::supportsService() -I- */
+sal_Bool SAL_CALL OResultSet::supportsService(const OUString& _rServiceName)
+ throw(RuntimeException)
+{
+ OSL_TRACE("OResultSet::supportsService");
+ Sequence< OUString > aSupported(getSupportedServiceNames());
+ const OUString* pSupported = aSupported.getConstArray();
+ const OUString* pEnd = pSupported + aSupported.getLength();
+ for (;pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported) {}
+
+ return (pSupported != pEnd);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::OResultSet() -I- */
+OResultSet::OResultSet(OCommonStatement * pStmt, sql::ResultSet * result, rtl_TextEncoding _encoding )
+ : OResultSet_BASE(m_aMutex)
+ ,OPropertySetHelper(OResultSet_BASE::rBHelper)
+ ,m_aStatement((OWeakObject*)pStmt)
+ ,m_xMetaData(NULL)
+ ,m_result(result)
+ ,fieldCount( 0 )
+ ,m_encoding( _encoding )
+{
+ OSL_TRACE("OResultSet::OResultSet");
+ try {
+ sql::ResultSetMetaData * rs_meta = m_result->getMetaData();
+ fieldCount = rs_meta->getColumnCount();
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+}
+/* }}} */
+
+
+/* {{{ OResultSet::~OResultSet() -I- */
+OResultSet::~OResultSet()
+{
+ OSL_TRACE("OResultSet::~OResultSet");
+}
+/* }}} */
+
+
+/* {{{ OResultSet::disposing() -I- */
+void OResultSet::disposing()
+{
+ OSL_TRACE("OResultSet::disposing");
+ OPropertySetHelper::disposing();
+
+ MutexGuard aGuard(m_aMutex);
+
+ m_aStatement = NULL;
+ m_xMetaData = NULL;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::queryInterface() -I- */
+Any SAL_CALL OResultSet::queryInterface(const Type & rType)
+ throw(RuntimeException)
+{
+ OSL_TRACE("OResultSet::queryInterface");
+ Any aRet = OPropertySetHelper::queryInterface(rType);
+ if (!aRet.hasValue()) {
+ aRet = OResultSet_BASE::queryInterface(rType);
+ }
+ return aRet;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getTypes() -I- */
+Sequence< Type > SAL_CALL OResultSet::getTypes()
+ throw(RuntimeException)
+{
+ OSL_TRACE("OResultSet::getTypes");
+ OTypeCollection aTypes( ::getCppuType((const Reference< XMultiPropertySet > *) NULL),
+ ::getCppuType((const Reference< XFastPropertySet > *) NULL),
+ ::getCppuType((const Reference< XPropertySet > *) NULL));
+
+ return concatSequences(aTypes.getTypes(), OResultSet_BASE::getTypes());
+}
+/* }}} */
+
+
+/* {{{ OResultSet::findColumn() -I- */
+sal_Int32 SAL_CALL OResultSet::findColumn(const OUString& columnName)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::findColumn");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ // find the first column with the name columnName
+ sql::ResultSetMetaData * meta = m_result->getMetaData();
+ for (sal_uInt32 i = 1; i <= fieldCount; i++) {
+ if (columnName.equalsIgnoreAsciiCaseAscii(meta->getColumnName(i).c_str())) {
+ /* SDBC knows them indexed from 1 */
+ return i;
+ }
+ }
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getBinaryStream() -U- */
+Reference< XInputStream > SAL_CALL OResultSet::getBinaryStream(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getBinaryStream");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::getBinaryStream", *this);
+ return NULL;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getCharacterStream() -U- */
+Reference< XInputStream > SAL_CALL OResultSet::getCharacterStream(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getCharacterStream");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::getCharacterStream", *this);
+ return NULL;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getBoolean() -I- */
+sal_Bool SAL_CALL OResultSet::getBoolean(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getBoolean");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ checkColumnIndex(column);
+ try {
+ return m_result->getBoolean(column)? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getByte() -I- */
+sal_Int8 SAL_CALL OResultSet::getByte(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getByte");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ checkColumnIndex(column);
+ try {
+ return m_result->getInt(column);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getBytes() -I- */
+Sequence< sal_Int8 > SAL_CALL OResultSet::getBytes(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getBytes");
+
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ MutexGuard aGuard(m_aMutex);
+
+
+ sql::SQLString val = m_result->getString(column);
+ if (!val.length()) {
+ return Sequence< sal_Int8>();
+ } else {
+ return Sequence< sal_Int8 > ((sal_Int8*)val.c_str(), val.length());
+ }
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getDate() -I- */
+Date SAL_CALL OResultSet::getDate(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getDate");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+
+ Date d;
+ try {
+ OUString dateString = getString(column);
+ OUString token;
+ sal_Int32 nIndex = 0, i=0;
+
+ do {
+ token = dateString.getToken (0, '-', nIndex);
+ switch (i) {
+ case 0:
+ d.Year = static_cast<sal_uInt16>(token.toInt32(10));
+ break;
+ case 1:
+ d.Month = static_cast<sal_uInt16>(token.toInt32(10));
+ break;
+ case 2:
+ d.Day = static_cast<sal_uInt16>(token.toInt32(10));
+ break;
+ default:;
+ }
+ i++;
+ } while (nIndex >= 0);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return d;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getDouble() -I- */
+double SAL_CALL OResultSet::getDouble(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getDouble");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ checkColumnIndex(column);
+ try {
+ return m_result->getDouble(column);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0.0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getFloat() -I- */
+float SAL_CALL OResultSet::getFloat(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getFloat");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ checkColumnIndex(column);
+ try {
+ return m_result->getDouble(column);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0.0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getInt() -I- */
+sal_Int32 SAL_CALL OResultSet::getInt(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getInt");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ checkColumnIndex(column);
+ try {
+ return m_result->getInt(column);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getRow() -I- */
+sal_Int32 SAL_CALL OResultSet::getRow()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getRow");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->getRow();
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getLong() -I- */
+sal_Int64 SAL_CALL OResultSet::getLong(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getLong");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ checkColumnIndex(column);
+ try {
+ return m_result->getInt64(column);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getMetaData() -I- */
+Reference< XResultSetMetaData > SAL_CALL OResultSet::getMetaData()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getMetaData");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ try {
+ if (!m_xMetaData.is()) {
+ m_xMetaData = new OResultSetMetaData(m_result->getMetaData(), m_encoding);
+ }
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return m_xMetaData;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getArray() -U- */
+Reference< XArray > SAL_CALL OResultSet::getArray(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getArray");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::getArray", *this);
+ return NULL;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getClob() -U- */
+Reference< XClob > SAL_CALL OResultSet::getClob(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getClob");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::getClob", *this);
+ return NULL;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getBlob() -U- */
+Reference< XBlob > SAL_CALL OResultSet::getBlob(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getBlob");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::getBlob", *this);
+ return NULL;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getRef() -U- */
+Reference< XRef > SAL_CALL OResultSet::getRef(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getRef");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::getRef", *this);
+ return NULL;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getObject() -U- */
+Any SAL_CALL OResultSet::getObject(sal_Int32 column, const Reference< XNameAccess >& /* typeMap */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getObject");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+
+ Any aRet= Any();
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::getObject", *this);
+ return aRet;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getShort() -I- */
+sal_Int16 SAL_CALL OResultSet::getShort(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getShort");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return (sal_Int16) m_result->getInt(column);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getString() -I- */
+OUString SAL_CALL OResultSet::getString(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getString");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ checkColumnIndex(column);
+
+ try {
+ sql::SQLString val = m_result->getString(column);
+ if (!m_result->wasNull()) {
+ return OUString( val.c_str(), val.length(), m_encoding );
+ } else {
+ return OUString();
+ }
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return OUString(); // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getTime() -I- */
+Time SAL_CALL OResultSet::getTime(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getTime");
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ MutexGuard aGuard(m_aMutex);
+
+ checkColumnIndex(column);
+ Time t;
+ OUString timeString = getString(column);
+ OUString token;
+ sal_Int32 nIndex, i=0;
+
+ nIndex = timeString.indexOf(' ') + 1;
+
+ do {
+ token = timeString.getToken (0, ':', nIndex);
+ switch (i) {
+ case 0:
+ t.Hours = static_cast<sal_uInt16>(token.toInt32(10));
+ break;
+ case 1:
+ t.Minutes = static_cast<sal_uInt16>(token.toInt32(10));
+ break;
+ case 2:
+ t.Seconds = static_cast<sal_uInt16>(token.toInt32(10));
+ break;
+ }
+ i++;
+ } while (nIndex >= 0);
+
+ return t;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getTimestamp() -I- */
+DateTime SAL_CALL OResultSet::getTimestamp(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getTimestamp");
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ MutexGuard aGuard(m_aMutex);
+
+ checkColumnIndex(column);
+ DateTime dt;
+ Date d = getDate(column);
+ Time t = getTime(column);
+
+ dt.Year = d.Year;
+ dt.Month = d.Month;
+ dt.Day = d.Day;
+ dt.Hours = t.Hours;
+ dt.Minutes = t.Minutes;
+ dt.Seconds = t.Seconds;
+ return dt;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::isBeforeFirst() -I- */
+sal_Bool SAL_CALL OResultSet::isBeforeFirst()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::isBeforeFirst");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->isBeforeFirst()? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::isAfterLast() -I- */
+sal_Bool SAL_CALL OResultSet::isAfterLast()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::isAfterLast");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->isAfterLast()? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::isFirst() -I- */
+sal_Bool SAL_CALL OResultSet::isFirst()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::isFirst");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->isFirst();
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::isLast() -I- */
+sal_Bool SAL_CALL OResultSet::isLast()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::isLast");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->isLast()? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::beforeFirst() -I- */
+void SAL_CALL OResultSet::beforeFirst()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::beforeFirst");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ m_result->beforeFirst();
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+}
+/* }}} */
+
+
+/* {{{ OResultSet::afterLast() -I- */
+void SAL_CALL OResultSet::afterLast()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::afterLast");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ m_result->afterLast();
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+}
+/* }}} */
+
+
+/* {{{ OResultSet::close() -I- */
+void SAL_CALL OResultSet::close() throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::close");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ m_result->close();
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+
+ dispose();
+}
+/* }}} */
+
+
+/* {{{ OResultSet::first() -I- */
+sal_Bool SAL_CALL OResultSet::first() throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::first");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->first()? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::last() -I- */
+sal_Bool SAL_CALL OResultSet::last()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::last");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->last()? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::absolute() -I- */
+sal_Bool SAL_CALL OResultSet::absolute(sal_Int32 row)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::absolute");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->absolute(row)? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::relative() -I- */
+sal_Bool SAL_CALL OResultSet::relative(sal_Int32 row)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::relative");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->relative(row)? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::previous() -I- */
+sal_Bool SAL_CALL OResultSet::previous()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::previous");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->previous()? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getStatement() -I- */
+Reference< XInterface > SAL_CALL OResultSet::getStatement()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getStatement");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ return m_aStatement.get();
+}
+/* }}} */
+
+
+/* {{{ OResultSet::rowDeleted() -I- */
+sal_Bool SAL_CALL OResultSet::rowDeleted()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::rowDeleted");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::rowInserted() -I- */
+sal_Bool SAL_CALL OResultSet::rowInserted()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::rowInserted");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::rowUpdated() -I- */
+sal_Bool SAL_CALL OResultSet::rowUpdated()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::rowUpdated");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::next() -I- */
+sal_Bool SAL_CALL OResultSet::next()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::next");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->next()? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::wasNull() -I- */
+sal_Bool SAL_CALL OResultSet::wasNull()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::wasNull");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ try {
+ return m_result->wasNull()? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; //fool
+}
+/* }}} */
+
+
+/* {{{ OResultSet::cancel() -I- */
+void SAL_CALL OResultSet::cancel()
+ throw(RuntimeException)
+{
+ OSL_TRACE("OResultSet::cancel");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::clearWarnings() -I- */
+void SAL_CALL OResultSet::clearWarnings()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::clearWarnings");
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getWarnings() -I- */
+Any SAL_CALL OResultSet::getWarnings()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getWarnings");
+ Any aRet= Any();
+ return aRet;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::insertRow() -I- */
+void SAL_CALL OResultSet::insertRow()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::insertRow");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ // you only have to implement this if you want to insert new rows
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::insertRow", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateRow() -I- */
+void SAL_CALL OResultSet::updateRow()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateRow");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ // only when you allow updates
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateRow", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::deleteRow() -I- */
+void SAL_CALL OResultSet::deleteRow()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::deleteRow");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::deleteRow", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::cancelRowUpdates() -I- */
+void SAL_CALL OResultSet::cancelRowUpdates()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::cancelRowUpdates");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::cancelRowUpdates", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::moveToInsertRow() -I- */
+void SAL_CALL OResultSet::moveToInsertRow()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::moveToInsertRow");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ // only when you allow insert's
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::moveToInsertRow", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::moveToCurrentRow() -I- */
+void SAL_CALL OResultSet::moveToCurrentRow()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::moveToCurrentRow");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateNull() -U- */
+void SAL_CALL OResultSet::updateNull(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateNull");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateNull", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateBoolean() -U- */
+void SAL_CALL OResultSet::updateBoolean(sal_Int32 column, sal_Bool /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateBoolean");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateBoolean", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateByte() -U- */
+void SAL_CALL OResultSet::updateByte(sal_Int32 column, sal_Int8 /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateByte");
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ MutexGuard aGuard(m_aMutex);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateByte", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateShort() -U- */
+void SAL_CALL OResultSet::updateShort(sal_Int32 column, sal_Int16 /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateShort");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateShort", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateInt() -U- */
+void SAL_CALL OResultSet::updateInt(sal_Int32 column, sal_Int32 /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateInt");
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ MutexGuard aGuard(m_aMutex);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateInt", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateLong() -U- */
+void SAL_CALL OResultSet::updateLong(sal_Int32 column, sal_Int64 /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateLong");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateLong", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateFloat() -U- */
+void SAL_CALL OResultSet::updateFloat(sal_Int32 column, float /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateFloat");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateFloat", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateDouble() -U- */
+void SAL_CALL OResultSet::updateDouble(sal_Int32 column, double /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateDouble");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateDouble", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateString() -U- */
+void SAL_CALL OResultSet::updateString(sal_Int32 column, const OUString& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateString");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateString", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateBytes() -U- */
+void SAL_CALL OResultSet::updateBytes(sal_Int32 column, const Sequence< sal_Int8 >& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateBytes");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateBytes", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateDate() -U- */
+void SAL_CALL OResultSet::updateDate(sal_Int32 column, const Date& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateDate");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateDate", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateTime() -U- */
+void SAL_CALL OResultSet::updateTime(sal_Int32 column, const Time& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateTime");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateTime", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateTimestamp() -U- */
+void SAL_CALL OResultSet::updateTimestamp(sal_Int32 column, const DateTime& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateTimestamp");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateTimestamp", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateBinaryStream() -U- */
+void SAL_CALL OResultSet::updateBinaryStream(sal_Int32 column, const Reference< XInputStream >& /* x */,
+ sal_Int32 /* length */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateBinaryStream");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateBinaryStream", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateCharacterStream() -U- */
+void SAL_CALL OResultSet::updateCharacterStream(sal_Int32 column, const Reference< XInputStream >& /* x */,
+ sal_Int32 /* length */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateCharacterStream");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateCharacterStream", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::refreshRow() -U- */
+void SAL_CALL OResultSet::refreshRow()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::refreshRow");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::refreshRow", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateObject() -U- */
+void SAL_CALL OResultSet::updateObject(sal_Int32 column, const Any& /* x */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateObject");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateObject", *this);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::updateNumericObject() -U- */
+void SAL_CALL OResultSet::updateNumericObject(sal_Int32 column, const Any& /* x */, sal_Int32 /* scale */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::updateNumericObject");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ checkColumnIndex(column);
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::updateNumericObject", *this);
+}
+/* }}} */
+
+
+// XRowLocate
+/* {{{ OResultSet::getBookmark() -U- */
+Any SAL_CALL OResultSet::getBookmark()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::getBookmark");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ Any aRet = Any();
+
+ // if you don't want to support bookmark you must remove the XRowLocate interface
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::getBookmark", *this);
+
+ return aRet;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::moveToBookmark() -U- */
+sal_Bool SAL_CALL OResultSet::moveToBookmark(const Any& /* bookmark */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::moveToBookmark");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::moveRelativeToBookmark() -U- */
+sal_Bool SAL_CALL OResultSet::moveRelativeToBookmark(const Any& /* bookmark */, sal_Int32 /* rows */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::moveRelativeToBookmark");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::moveRelativeToBookmark", *this);
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::compareBookmarks() -I- */
+sal_Int32 SAL_CALL OResultSet::compareBookmarks(const Any& /* n1 */, const Any& /* n2 */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::compareBookmarks");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::compareBookmarks", *this);
+
+ return CompareBookmark::NOT_EQUAL;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::hasOrderedBookmarks() -I- */
+sal_Bool SAL_CALL OResultSet::hasOrderedBookmarks()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::hasOrderedBookmarks");
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::hashBookmark() -U- */
+sal_Int32 SAL_CALL OResultSet::hashBookmark(const Any& /* bookmark */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::hashBookmark");
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::hashBookmark", *this);
+ return 0;
+}
+/* }}} */
+
+
+// XDeleteRows
+/* {{{ OResultSet::deleteRows() -U- */
+Sequence< sal_Int32 > SAL_CALL OResultSet::deleteRows(const Sequence< Any >& /* rows */)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::deleteRows");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
+ Sequence< sal_Int32 > aRet = Sequence< sal_Int32 >();
+
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSet::deleteRows", *this);
+ return aRet;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::createArrayHelper() -I- */
+IPropertyArrayHelper * OResultSet::createArrayHelper() const
+{
+ OSL_TRACE("OResultSet::createArrayHelper");
+ Sequence< Property > aProps(5);
+ Property* pProperties = aProps.getArray();
+ sal_Int32 nPos = 0;
+ DECL_PROP0(FETCHDIRECTION, sal_Int32);
+ DECL_PROP0(FETCHSIZE, sal_Int32);
+ DECL_BOOL_PROP1IMPL(ISBOOKMARKABLE) PropertyAttribute::READONLY);
+ DECL_PROP1IMPL(RESULTSETCONCURRENCY,sal_Int32) PropertyAttribute::READONLY);
+ DECL_PROP1IMPL(RESULTSETTYPE, sal_Int32) PropertyAttribute::READONLY);
+
+ return new OPropertyArrayHelper(aProps);
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getInfoHelper() -I- */
+IPropertyArrayHelper & OResultSet::getInfoHelper()
+{
+ OSL_TRACE("OResultSet::getInfoHelper");
+ return (*const_cast<OResultSet*>(this)->getArrayHelper());
+}
+/* }}} */
+
+
+/* {{{ OResultSet::convertFastPropertyValue() -I- */
+sal_Bool OResultSet::convertFastPropertyValue(Any & /* rConvertedValue */,
+ Any & /* rOldValue */,
+ sal_Int32 nHandle,
+ const Any& /* rValue */)
+ throw (::com::sun::star::lang::IllegalArgumentException)
+{
+ OSL_TRACE("OResultSet::convertFastPropertyValue");
+ switch (nHandle) {
+ case PROPERTY_ID_ISBOOKMARKABLE:
+ case PROPERTY_ID_CURSORNAME:
+ case PROPERTY_ID_RESULTSETCONCURRENCY:
+ case PROPERTY_ID_RESULTSETTYPE:
+ throw ::com::sun::star::lang::IllegalArgumentException();
+ case PROPERTY_ID_FETCHDIRECTION:
+ case PROPERTY_ID_FETCHSIZE:
+ default:
+ ;
+ }
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ OResultSet::setFastPropertyValue_NoBroadcast() -I- */
+void OResultSet::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const Any& /* rValue */)
+ throw (Exception)
+{
+ OSL_TRACE("OResultSet::setFastPropertyValue_NoBroadcast");
+ switch (nHandle) {
+ case PROPERTY_ID_ISBOOKMARKABLE:
+ case PROPERTY_ID_CURSORNAME:
+ case PROPERTY_ID_RESULTSETCONCURRENCY:
+ case PROPERTY_ID_RESULTSETTYPE:
+ throw Exception();
+ case PROPERTY_ID_FETCHDIRECTION:
+ break;
+ case PROPERTY_ID_FETCHSIZE:
+ break;
+ default:
+ ;
+ }
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getFastPropertyValue() -I- */
+void OResultSet::getFastPropertyValue(Any& _rValue, sal_Int32 nHandle) const
+{
+ OSL_TRACE("OResultSet::getFastPropertyValue");
+ switch (nHandle) {
+ case PROPERTY_ID_ISBOOKMARKABLE:
+ _rValue <<= sal_False;
+ break;
+ case PROPERTY_ID_CURSORNAME:
+ break;
+ case PROPERTY_ID_RESULTSETCONCURRENCY:
+ _rValue <<= ResultSetConcurrency::READ_ONLY;
+ break;
+ case PROPERTY_ID_RESULTSETTYPE:
+ _rValue <<= ResultSetType::SCROLL_INSENSITIVE;
+ break;
+ case PROPERTY_ID_FETCHDIRECTION:
+ _rValue <<= FetchDirection::FORWARD;
+ break;
+ case PROPERTY_ID_FETCHSIZE:
+ _rValue <<= sal_Int32(50);
+ break;
+ ;
+ default:
+ ;
+ }
+}
+/* }}} */
+
+
+/* {{{ OResultSet::acquire() -I- */
+void SAL_CALL OResultSet::acquire()
+ throw()
+{
+ OSL_TRACE("OResultSet::acquire");
+ OResultSet_BASE::acquire();
+}
+/* }}} */
+
+
+/* {{{ OResultSet::release() -I- */
+void SAL_CALL OResultSet::release()
+ throw()
+{
+ OSL_TRACE("OResultSet::release");
+ OResultSet_BASE::release();
+}
+/* }}} */
+
+
+/* {{{ OResultSet::getPropertySetInfo() -I- */
+::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL OResultSet::getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException)
+{
+ OSL_TRACE("OResultSet::getPropertySetInfo");
+ return (::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper()));
+}
+/* }}} */
+
+
+/* {{{ OResultSet::checkColumnIndex() -I- */
+void OResultSet::checkColumnIndex(sal_Int32 index)
+ throw (SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSet::checkColumnIndex");
+ if ((index < 1 || index > (int) fieldCount)) {
+ /* static object for efficiency or thread safety is a problem ? */
+ OUString buf( RTL_CONSTASCII_USTRINGPARAM( "index out of range" ) );
+ throw SQLException(buf, *this, OUString(), 1, Any());
+ }
+}
+/* }}} */
+
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_resultset.hxx b/mysqlc/source/mysqlc_resultset.hxx
new file mode 100644
index 000000000000..fbfa76b14990
--- /dev/null
+++ b/mysqlc/source/mysqlc_resultset.hxx
@@ -0,0 +1,288 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef MYSQLC_SRESULTSET_HXX
+#define MYSQLC_SRESULTSET_HXX
+
+#include "mysqlc_preparedstatement.hxx"
+#include "mysqlc_statement.hxx"
+#include "mysqlc_subcomponent.hxx"
+
+#include <com/sun/star/sdbc/XCloseable.hpp>
+#include <com/sun/star/sdbc/XColumnLocate.hpp>
+#include <com/sun/star/sdbc/XResultSet.hpp>
+#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
+#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
+#include <com/sun/star/sdbc/XRow.hpp>
+#include <com/sun/star/sdbc/XRowUpdate.hpp>
+#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
+#include <com/sun/star/sdbcx/XDeleteRows.hpp>
+#include <com/sun/star/sdbcx/XRowLocate.hpp>
+#include <com/sun/star/util/XCancellable.hpp>
+
+#include <cppuhelper/compbase12.hxx>
+
+
+namespace connectivity
+{
+ namespace mysqlc
+ {
+ using ::rtl::OUString;
+ using ::com::sun::star::sdbc::SQLException;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::com::sun::star::uno::Any;
+ typedef ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > my_XInputStreamRef;
+ typedef my_XNameAccessRef my_XNameAccessRef;
+
+ /*
+ ** OResultSet
+ */
+ typedef ::cppu::WeakComponentImplHelper12< ::com::sun::star::sdbc::XResultSet,
+ ::com::sun::star::sdbc::XRow,
+ ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
+ ::com::sun::star::util::XCancellable,
+ ::com::sun::star::sdbc::XWarningsSupplier,
+ ::com::sun::star::sdbc::XResultSetUpdate,
+ ::com::sun::star::sdbc::XRowUpdate,
+ ::com::sun::star::sdbcx::XRowLocate,
+ ::com::sun::star::sdbcx::XDeleteRows,
+ ::com::sun::star::sdbc::XCloseable,
+ ::com::sun::star::sdbc::XColumnLocate,
+ ::com::sun::star::lang::XServiceInfo> OResultSet_BASE;
+
+ class OResultSet : public OBase_Mutex,
+ public OResultSet_BASE,
+ public ::cppu::OPropertySetHelper,
+ public OPropertyArrayUsageHelper<OResultSet>
+ {
+ protected:
+ ::com::sun::star::uno::WeakReferenceHelper m_aStatement;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData> m_xMetaData;
+ sql::ResultSet *m_result;
+ unsigned int fieldCount;
+ rtl_TextEncoding m_encoding;
+ // OPropertyArrayUsageHelper
+ ::cppu::IPropertyArrayHelper* createArrayHelper() const;
+ // OPropertySetHelper
+ ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
+
+ sal_Bool SAL_CALL convertFastPropertyValue(Any & rConvertedValue, Any & rOldValue, sal_Int32 nHandle, const Any& rValue)
+ throw (::com::sun::star::lang::IllegalArgumentException);
+
+ void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const Any& rValue)
+ throw (::com::sun::star::uno::Exception);
+
+ void SAL_CALL getFastPropertyValue(Any& rValue, sal_Int32 nHandle) const;
+
+ // you can't delete objects of this type
+ virtual ~OResultSet();
+
+ public:
+ DECLARE_SERVICE_INFO();
+
+ OResultSet( OCommonStatement* pStmt, sql::ResultSet *result, rtl_TextEncoding _encoding );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > operator *()
+ {
+ return ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >(*(OResultSet_BASE*)this);
+ }
+
+ // ::cppu::OComponentHelper
+ void SAL_CALL disposing();
+
+ // XInterface
+ Any SAL_CALL queryInterface(const ::com::sun::star::uno::Type & rType)
+ throw(RuntimeException);
+
+ void SAL_CALL acquire() throw();
+ void SAL_CALL release() throw();
+
+ //XTypeProvider
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(RuntimeException);
+
+ // XPropertySet
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo()
+ throw(RuntimeException);
+
+ // XResultSet
+ sal_Bool SAL_CALL next() throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL isBeforeFirst() throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL isAfterLast() throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL isFirst() throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL isLast() throw(SQLException, RuntimeException);
+
+ void SAL_CALL beforeFirst() throw(SQLException, RuntimeException);
+ void SAL_CALL afterLast() throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL first() throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL last() throw(SQLException, RuntimeException);
+
+ sal_Int32 SAL_CALL getRow() throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL absolute(sal_Int32 row) throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL relative(sal_Int32 rows) throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL previous() throw(SQLException, RuntimeException);
+
+ void SAL_CALL refreshRow() throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL rowUpdated() throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL rowInserted() throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL rowDeleted() throw(SQLException, RuntimeException);
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getStatement()
+ throw(SQLException, RuntimeException);
+ // XRow
+ sal_Bool SAL_CALL wasNull() throw(SQLException, RuntimeException);
+
+ OUString SAL_CALL getString(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL getBoolean(sal_Int32 column) throw(SQLException, RuntimeException);
+ sal_Int8 SAL_CALL getByte(sal_Int32 column) throw(SQLException, RuntimeException);
+ sal_Int16 SAL_CALL getShort(sal_Int32 column) throw(SQLException, RuntimeException);
+ sal_Int32 SAL_CALL getInt(sal_Int32 column) throw(SQLException, RuntimeException);
+ sal_Int64 SAL_CALL getLong(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ float SAL_CALL getFloat(sal_Int32 column) throw(SQLException, RuntimeException);
+ double SAL_CALL getDouble(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes(sal_Int32 column)
+ throw(SQLException, RuntimeException);
+ ::com::sun::star::util::Date SAL_CALL getDate(sal_Int32 column)
+ throw(SQLException, RuntimeException);
+ ::com::sun::star::util::Time SAL_CALL getTime(sal_Int32 column)
+ throw(SQLException, RuntimeException);
+ ::com::sun::star::util::DateTime SAL_CALL getTimestamp(sal_Int32 column)
+ throw(SQLException, RuntimeException);
+
+ my_XInputStreamRef SAL_CALL getBinaryStream(sal_Int32 column)
+ throw(SQLException, RuntimeException);
+ my_XInputStreamRef SAL_CALL getCharacterStream(sal_Int32 column)
+ throw(SQLException, RuntimeException);
+
+ Any SAL_CALL getObject(sal_Int32 column, const my_XNameAccessRef& typeMap)
+ throw(SQLException, RuntimeException);
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef(sal_Int32 column)
+ throw(SQLException, RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob(sal_Int32 column)
+ throw(SQLException, RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob(sal_Int32 column)
+ throw(SQLException, RuntimeException);
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray(sal_Int32 column)
+ throw(SQLException, RuntimeException);
+
+ // XResultSetMetaDataSupplier
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData()
+ throw(SQLException, RuntimeException);
+
+ // XCancellable
+ void SAL_CALL cancel() throw(RuntimeException);
+
+ // XCloseable
+ void SAL_CALL close() throw(SQLException, RuntimeException);
+
+ // XWarningsSupplier
+ Any SAL_CALL getWarnings() throw(SQLException, RuntimeException);
+
+ void SAL_CALL clearWarnings() throw(SQLException, RuntimeException);
+
+ // XResultSetUpdate
+ void SAL_CALL insertRow() throw(SQLException, RuntimeException);
+ void SAL_CALL updateRow() throw(SQLException, RuntimeException);
+ void SAL_CALL deleteRow() throw(SQLException, RuntimeException);
+ void SAL_CALL cancelRowUpdates() throw(SQLException, RuntimeException);
+ void SAL_CALL moveToInsertRow() throw(SQLException, RuntimeException);
+ void SAL_CALL moveToCurrentRow() throw(SQLException, RuntimeException);
+
+ // XRowUpdate
+ void SAL_CALL updateNull(sal_Int32 column) throw(SQLException, RuntimeException);
+ void SAL_CALL updateBoolean(sal_Int32 column, sal_Bool x) throw(SQLException, RuntimeException);
+ void SAL_CALL updateByte(sal_Int32 column, sal_Int8 x) throw(SQLException, RuntimeException);
+ void SAL_CALL updateShort(sal_Int32 column, sal_Int16 x) throw(SQLException, RuntimeException);
+ void SAL_CALL updateInt(sal_Int32 column, sal_Int32 x) throw(SQLException, RuntimeException);
+ void SAL_CALL updateLong(sal_Int32 column, sal_Int64 x) throw(SQLException, RuntimeException);
+ void SAL_CALL updateFloat(sal_Int32 column, float x) throw(SQLException, RuntimeException);
+ void SAL_CALL updateDouble(sal_Int32 column, double x) throw(SQLException, RuntimeException);
+ void SAL_CALL updateString(sal_Int32 column, const OUString& x)
+ throw(SQLException, RuntimeException);
+ void SAL_CALL updateBytes(sal_Int32 column, const ::com::sun::star::uno::Sequence< sal_Int8 >& x)
+ throw(SQLException, RuntimeException);
+ void SAL_CALL updateDate(sal_Int32 column, const ::com::sun::star::util::Date& x)
+ throw(SQLException, RuntimeException);
+ void SAL_CALL updateTime(sal_Int32 column, const ::com::sun::star::util::Time& x)
+ throw(SQLException, RuntimeException);
+ void SAL_CALL updateTimestamp(sal_Int32 column, const ::com::sun::star::util::DateTime& x)
+ throw(SQLException, RuntimeException);
+ void SAL_CALL updateBinaryStream(sal_Int32 column, const my_XInputStreamRef& x, sal_Int32 length)
+ throw(SQLException, RuntimeException);
+ void SAL_CALL updateCharacterStream(sal_Int32 column, const my_XInputStreamRef& x, sal_Int32 length)
+ throw(SQLException, RuntimeException);
+ void SAL_CALL updateObject(sal_Int32 column, const Any& x)
+ throw(SQLException, RuntimeException);
+ void SAL_CALL updateNumericObject(sal_Int32 column, const Any& x, sal_Int32 scale)
+ throw(SQLException, RuntimeException);
+
+ // XColumnLocate
+ sal_Int32 SAL_CALL findColumn(const OUString& columnName)
+ throw(SQLException, RuntimeException);
+
+ // XRowLocate
+ Any SAL_CALL getBookmark() throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL moveToBookmark(const Any& bookmark)
+ throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL moveRelativeToBookmark(const Any& bookmark, sal_Int32 rows)
+ throw(SQLException, RuntimeException);
+ sal_Int32 SAL_CALL compareBookmarks(const Any& first, const Any& second)
+ throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL hasOrderedBookmarks() throw(SQLException, RuntimeException);
+ sal_Int32 SAL_CALL hashBookmark(const Any& bookmark)
+ throw(SQLException, RuntimeException);
+
+ // XDeleteRows
+ ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows(const ::com::sun::star::uno::Sequence< Any >& rows)
+ throw(SQLException, RuntimeException);
+
+ void checkColumnIndex(sal_Int32 index) throw(SQLException, RuntimeException);
+
+ private:
+ using ::cppu::OPropertySetHelper::getFastPropertyValue;
+ };
+ } /* mysqlc */
+} /* connectivity */
+#endif // CONNECTIVITY_SRESULTSET_HXX
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_resultsetmetadata.cxx b/mysqlc/source/mysqlc_resultsetmetadata.cxx
new file mode 100644
index 000000000000..22bbf637bad6
--- /dev/null
+++ b/mysqlc/source/mysqlc_resultsetmetadata.cxx
@@ -0,0 +1,466 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#include "mysqlc_resultsetmetadata.hxx"
+#include "mysqlc_general.hxx"
+#include "cppconn/exception.h"
+
+#include <rtl/ustrbuf.hxx>
+
+using namespace connectivity::mysqlc;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::sdbc;
+using ::rtl::OUString;
+
+// -------------------------------------------------------------------------
+OResultSetMetaData::~OResultSetMetaData()
+{
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getColumnDisplaySize() -I- */
+sal_Int32 SAL_CALL OResultSetMetaData::getColumnDisplaySize(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getColumnDisplaySize");
+
+ try {
+ meta->getColumnDisplaySize(column);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getColumnDisplaySize", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getColumnType() -I- */
+sal_Int32 SAL_CALL OResultSetMetaData::getColumnType(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getColumnType");
+ checkColumnIndex(column);
+
+ try {
+ return mysqlc_sdbc_driver::mysqlToOOOType(meta->getColumnType(column));
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0; // fool compiler
+}
+/* }}} */
+
+/*
+ XXX: This method doesn't throw exceptions at all.
+ Should it declare that it throws ?? What if throw() is removed?
+ Does it change the API, the open-close principle?
+*/
+/* {{{ OResultSetMetaData::getColumnCount() -I- */
+sal_Int32 SAL_CALL OResultSetMetaData::getColumnCount()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getColumnCount");
+ try {
+ return meta->getColumnCount();
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::isCaseSensitive() -I- */
+sal_Bool SAL_CALL OResultSetMetaData::isCaseSensitive(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::isCaseSensitive");
+ checkColumnIndex(column);
+
+ try {
+ return meta->isCaseSensitive(column);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getSchemaName() -I- */
+OUString SAL_CALL OResultSetMetaData::getSchemaName(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getSchemaName");
+ checkColumnIndex(column);
+
+ try {
+ return convert(meta->getSchemaName(column));
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return OUString(); // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getColumnName() -I- */
+OUString SAL_CALL OResultSetMetaData::getColumnName(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getColumnName");
+ checkColumnIndex(column);
+
+ try {
+ return convert( meta->getColumnName( column ) );
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return OUString(); // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getTableName() -I- */
+OUString SAL_CALL OResultSetMetaData::getTableName(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getTableName");
+ checkColumnIndex(column);
+
+ try {
+ return convert(meta->getTableName(column));
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return OUString(); // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getCatalogName() -I- */
+OUString SAL_CALL OResultSetMetaData::getCatalogName(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getCatalogName");
+ checkColumnIndex(column);
+
+ try {
+ return convert(meta->getCatalogName(column));
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return OUString(); // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getColumnTypeName() -I- */
+OUString SAL_CALL OResultSetMetaData::getColumnTypeName(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getColumnTypeName");
+ checkColumnIndex(column);
+
+ try {
+ return convert(meta->getColumnTypeName(column));
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return OUString(); // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getColumnLabel() -I- */
+OUString SAL_CALL OResultSetMetaData::getColumnLabel(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getColumnLabel");
+ checkColumnIndex(column);
+
+ try {
+ return convert(meta->getColumnLabel(column));
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return OUString(); // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getColumnServiceName() -I- */
+OUString SAL_CALL OResultSetMetaData::getColumnServiceName(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getColumnServiceName");
+ checkColumnIndex(column);
+
+ OUString aRet = OUString();
+ return aRet;
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::isCurrency() -I- */
+sal_Bool SAL_CALL OResultSetMetaData::isCurrency(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::isCurrency");
+ checkColumnIndex(column);
+
+ try {
+ return meta->isCurrency(column)? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::isAutoIncrement() -I- */
+sal_Bool SAL_CALL OResultSetMetaData::isAutoIncrement(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::isAutoIncrement");
+ checkColumnIndex(column);
+
+ try {
+ return meta->isAutoIncrement(column)? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::isSigned() -I- */
+sal_Bool SAL_CALL OResultSetMetaData::isSigned(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::isSigned");
+ checkColumnIndex(column);
+
+ try {
+ return meta->isSigned(column)? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getPrecision() -I- */
+sal_Int32 SAL_CALL OResultSetMetaData::getPrecision(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getPrecision");
+ checkColumnIndex(column);
+
+ try {
+ return meta->getPrecision(column);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getPrecision", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::getScale() -I- */
+sal_Int32 SAL_CALL OResultSetMetaData::getScale(sal_Int32 column)
+ throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::getScale");
+ checkColumnIndex(column);
+ try {
+ return meta->getScale(column);
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getScale", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return 0; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::isNullable() -I- */
+sal_Int32 SAL_CALL OResultSetMetaData::isNullable(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::isNullable");
+ checkColumnIndex(column);
+
+ try {
+ return meta->isNullable(column)? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::isSearchable() -I- */
+sal_Bool SAL_CALL OResultSetMetaData::isSearchable(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::isSearchable");
+ checkColumnIndex(column);
+
+ try {
+ return meta->isSearchable(column)? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::isReadOnly() -I- */
+sal_Bool SAL_CALL OResultSetMetaData::isReadOnly(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::isReadOnly");
+ checkColumnIndex(column);
+
+ try {
+ return meta->isReadOnly(column)? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::isDefinitelyWritable() -I- */
+sal_Bool SAL_CALL OResultSetMetaData::isDefinitelyWritable(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::isDefinitelyWritable");
+ checkColumnIndex(column);
+
+ try {
+ return meta->isDefinitelyWritable(column)? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::isWritable() -I- */
+sal_Bool SAL_CALL OResultSetMetaData::isWritable(sal_Int32 column)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::isWritable");
+ checkColumnIndex(column);
+
+ try {
+ return meta->isWritable(column)? sal_True:sal_False;
+ } catch (sql::MethodNotImplementedException) {
+ mysqlc_sdbc_driver::throwFeatureNotImplementedException("OResultSetMetaData::getMetaData", *this);
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_encoding);
+ }
+ return sal_False; // fool compiler
+}
+/* }}} */
+
+
+/* {{{ OResultSetMetaData::checkColumnIndex() -I- */
+void OResultSetMetaData::checkColumnIndex(sal_Int32 columnIndex)
+ throw (SQLException, RuntimeException)
+{
+ OSL_TRACE("OResultSetMetaData::checkColumnIndex");
+ if (columnIndex < 1 || columnIndex > (sal_Int32) meta->getColumnCount()) {
+
+ ::rtl::OUStringBuffer buf;
+ buf.appendAscii( "Column index out of range (expected 1 to " );
+ buf.append( sal_Int32( meta->getColumnCount() ) );
+ buf.appendAscii( ", got " );
+ buf.append( sal_Int32( columnIndex ) );
+ buf.append( sal_Unicode( '.' ) );
+ throw SQLException( buf.makeStringAndClear(), *this, OUString(), 1, Any() );
+ }
+}
+/* }}} */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_resultsetmetadata.hxx b/mysqlc/source/mysqlc_resultsetmetadata.hxx
new file mode 100644
index 000000000000..aad30a06d5da
--- /dev/null
+++ b/mysqlc/source/mysqlc_resultsetmetadata.hxx
@@ -0,0 +1,111 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef CONNECTIVITY_SRESULSETMETADATA_HXX
+#define CONNECTIVITY_SRESULSETMETADATA_HXX
+
+#include "mysqlc_connection.hxx"
+
+#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
+
+#include <cppuhelper/implbase1.hxx>
+#include <cppconn/resultset_metadata.h>
+
+namespace connectivity
+{
+ namespace mysqlc
+ {
+ using ::com::sun::star::sdbc::SQLException;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::rtl::OUString;
+ //**************************************************************
+ //************ Class: ResultSetMetaData
+ //**************************************************************
+ typedef ::cppu::WeakImplHelper1< ::com::sun::star::sdbc::XResultSetMetaData> OResultSetMetaData_BASE;
+
+ class OResultSetMetaData : public OResultSetMetaData_BASE
+ {
+ sql::ResultSetMetaData * meta;
+ rtl_TextEncoding m_encoding;
+ protected:
+ virtual ~OResultSetMetaData();
+ public:
+ OResultSetMetaData( sql::ResultSetMetaData * _meta, rtl_TextEncoding _encoding )
+ :meta(_meta)
+ ,m_encoding( _encoding )
+ {
+ }
+
+ inline ::rtl::OUString convert( const ::std::string& _string ) const
+ {
+ return ::rtl::OUString( _string.c_str(), _string.size(), m_encoding );
+ }
+
+ /// Avoid ambigous cast error from the compiler.
+ inline operator ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > () throw()
+ { return this; }
+
+ sal_Int32 SAL_CALL getColumnCount() throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL isAutoIncrement(sal_Int32 column) throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL isCaseSensitive(sal_Int32 column) throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL isSearchable(sal_Int32 column) throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL isCurrency(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ sal_Int32 SAL_CALL isNullable(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL isSigned(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ sal_Int32 SAL_CALL getColumnDisplaySize(sal_Int32 column)throw(SQLException, RuntimeException);
+
+ OUString SAL_CALL getColumnLabel(sal_Int32 column) throw(SQLException, RuntimeException);
+ OUString SAL_CALL getColumnName(sal_Int32 column) throw(SQLException, RuntimeException);
+ OUString SAL_CALL getSchemaName(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ sal_Int32 SAL_CALL getPrecision(sal_Int32 column) throw(SQLException, RuntimeException);
+ sal_Int32 SAL_CALL getScale(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ OUString SAL_CALL getTableName(sal_Int32 column) throw(SQLException, RuntimeException);
+ OUString SAL_CALL getCatalogName(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ sal_Int32 SAL_CALL getColumnType(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ OUString SAL_CALL getColumnTypeName(sal_Int32 column) throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL isReadOnly(sal_Int32 column) throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL isWritable(sal_Int32 column) throw(SQLException, RuntimeException);
+ sal_Bool SAL_CALL isDefinitelyWritable(sal_Int32 column)throw(SQLException, RuntimeException);
+
+ OUString SAL_CALL getColumnServiceName(sal_Int32 column)throw(SQLException, RuntimeException);
+
+ void checkColumnIndex(sal_Int32 columnIndex) throw (SQLException, RuntimeException);
+ };
+ }
+}
+
+#endif // CONNECTIVITY_SRESULSETMETADATA_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_services.cxx b/mysqlc/source/mysqlc_services.cxx
new file mode 100644
index 000000000000..90bbf68a1aca
--- /dev/null
+++ b/mysqlc/source/mysqlc_services.cxx
@@ -0,0 +1,171 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#include "mysqlc_driver.hxx"
+
+#include <cppuhelper/factory.hxx>
+#include <osl/diagnose.h>
+#include <rtl/ustrbuf.hxx>
+
+using namespace connectivity::mysqlc;
+using ::rtl::OUString;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::registry::XRegistryKey;
+using ::com::sun::star::lang::XSingleServiceFactory;
+using ::com::sun::star::lang::XMultiServiceFactory;
+
+typedef Reference< XSingleServiceFactory > (SAL_CALL *createFactoryFunc)
+ (
+ const Reference< XMultiServiceFactory > & rServiceManager,
+ const OUString & rComponentName,
+ ::cppu::ComponentInstantiation pCreateFunction,
+ const Sequence< OUString > & rServiceNames,
+ rtl_ModuleCount* _pTemp
+ );
+
+//***************************************************************************************
+//
+// Die vorgeschriebene C-API muss erfuellt werden!
+// Sie besteht aus drei Funktionen, die von dem Modul exportiert werden muessen.
+//
+
+//---------------------------------------------------------------------------------------
+void REGISTER_PROVIDER(
+ const OUString& aServiceImplName,
+ const Sequence< OUString>& Services,
+ const Reference< XRegistryKey > & xKey)
+{
+ ::rtl::OUStringBuffer aMainKeyName;
+ aMainKeyName.append( sal_Unicode( '/' ) );
+ aMainKeyName.append( aServiceImplName );
+ aMainKeyName.appendAscii( "/UNO/SERVICES" );
+
+ Reference< XRegistryKey > xNewKey( xKey->createKey( aMainKeyName.makeStringAndClear() ) );
+ OSL_ENSURE(xNewKey.is(), "SKELETON::component_writeInfo : could not create a registry key !");
+
+ for (sal_Int32 i = 0; i < Services.getLength(); ++i) {
+ xNewKey->createKey(Services[i]);
+ }
+}
+
+
+//---------------------------------------------------------------------------------------
+struct ProviderRequest
+{
+ Reference< XSingleServiceFactory > xRet;
+ Reference< XMultiServiceFactory > const xServiceManager;
+ OUString const sImplementationName;
+
+ ProviderRequest(
+ void* pServiceManager,
+ sal_Char const* pImplementationName
+ ) : xServiceManager(reinterpret_cast<XMultiServiceFactory*>(pServiceManager))
+ , sImplementationName(OUString::createFromAscii(pImplementationName))
+ {
+ }
+
+ /* {{{ CREATE_PROVIDER -I- */
+ inline sal_Bool CREATE_PROVIDER(
+ const OUString& Implname,
+ const Sequence< OUString > & Services,
+ ::cppu::ComponentInstantiation Factory,
+ createFactoryFunc creator
+ )
+ {
+ if (!xRet.is() && (Implname == sImplementationName)) {
+ try {
+ xRet = creator( xServiceManager, sImplementationName,Factory, Services,0);
+ } catch (...) {
+ }
+ }
+ return xRet.is();
+ }
+
+ void* getProvider() const { return xRet.get(); }
+};
+/* }}} */
+
+
+/* {{{ component_writeInfo -I- */
+extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo(void * /* pServiceManager */, void * pRegistryKey)
+{
+ if (pRegistryKey) {
+ try {
+ Reference< XRegistryKey > xKey(reinterpret_cast< XRegistryKey*>(pRegistryKey));
+
+ REGISTER_PROVIDER(
+ MysqlCDriver::getImplementationName_Static(),
+ MysqlCDriver::getSupportedServiceNames_Static(), xKey);
+
+ return sal_True;
+ } catch (::com::sun::star::registry::InvalidRegistryException& ) {
+ OSL_FAIL("SKELETON::component_writeInfo : could not create a registry key ! ## InvalidRegistryException !");
+ }
+ }
+ return sal_False;
+}
+/* }}} */
+
+
+/* {{{ component_getFactory -I- */
+extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory(
+ const sal_Char * pImplementationName,
+ void * pServiceManager,
+ void * /* pRegistryKey */)
+{
+ void* pRet = 0;
+ if (pServiceManager) {
+ ProviderRequest aReq(pServiceManager,pImplementationName);
+
+ aReq.CREATE_PROVIDER(
+ MysqlCDriver::getImplementationName_Static(),
+ MysqlCDriver::getSupportedServiceNames_Static(),
+ MysqlCDriver_CreateInstance, ::cppu::createSingleFactory)
+ ;
+
+ if(aReq.xRet.is()) {
+ aReq.xRet->acquire();
+ }
+
+ pRet = aReq.getProvider();
+ }
+
+ return pRet;
+};
+/* }}} */
+
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_statement.cxx b/mysqlc/source/mysqlc_statement.cxx
new file mode 100644
index 000000000000..9800e08e6660
--- /dev/null
+++ b/mysqlc/source/mysqlc_statement.cxx
@@ -0,0 +1,530 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+#include <stdio.h>
+#include "mysqlc_connection.hxx"
+#include "mysqlc_propertyids.hxx"
+#include "mysqlc_resultset.hxx"
+#include "mysqlc_statement.hxx"
+#include "mysqlc_general.hxx"
+
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/sdbc/FetchDirection.hpp>
+#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
+#include <com/sun/star/sdbc/ResultSetType.hpp>
+
+#include <cppconn/connection.h>
+#include <cppconn/exception.h>
+#include <cppconn/statement.h>
+#include <cppuhelper/typeprovider.hxx>
+#include <osl/diagnose.h>
+#include <osl/thread.h>
+
+#define USE_CPP_CONN 1
+
+using namespace connectivity::mysqlc;
+//------------------------------------------------------------------------------
+using namespace com::sun::star::uno;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::sdbc;
+using namespace com::sun::star::sdbcx;
+using namespace com::sun::star::container;
+using namespace com::sun::star::io;
+using namespace com::sun::star::util;
+using ::osl::MutexGuard;
+using ::rtl::OUString;
+
+#include <stdio.h>
+
+/* {{{ OConnection::OCommonStatement() -I- */
+OCommonStatement::OCommonStatement(OConnection* _pConnection, sql::Statement *_cppStatement)
+ :OCommonStatement_IBase(m_aMutex)
+ ,OPropertySetHelper(OCommonStatement_IBase::rBHelper)
+ ,OStatement_CBase( (::cppu::OWeakObject*)_pConnection, this )
+ ,m_pConnection(_pConnection)
+ ,cppStatement(_cppStatement)
+ ,rBHelper(OCommonStatement_IBase::rBHelper)
+{
+ OSL_TRACE("OCommonStatement::OCommonStatement");
+ m_pConnection->acquire();
+}
+/* }}} */
+
+
+/* {{{ OConnection::~OCommonStatement() -I- */
+OCommonStatement::~OCommonStatement()
+{
+ OSL_TRACE("OCommonStatement::~OCommonStatement");
+}
+/* }}} */
+
+
+/* {{{ OConnection::disposeResultSet() -I- */
+void OCommonStatement::disposeResultSet()
+{
+ OSL_TRACE("OCommonStatement::disposeResultSet");
+ // free the cursor if alive
+ delete cppStatement;
+ cppStatement = NULL;
+}
+/* }}} */
+
+
+/* {{{ OConnection::disposing() -I- */
+void OCommonStatement::disposing()
+{
+ OSL_TRACE("OCommonStatement::disposing");
+ MutexGuard aGuard(m_aMutex);
+
+ disposeResultSet();
+
+ if (m_pConnection) {
+ m_pConnection->release();
+ m_pConnection = NULL;
+ }
+ delete cppStatement;
+
+ dispose_ChildImpl();
+ OCommonStatement_IBase::disposing();
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::queryInterface() -I- */
+Any SAL_CALL OCommonStatement::queryInterface(const Type & rType)
+ throw(RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::queryInterface");
+ Any aRet = OCommonStatement_IBase::queryInterface(rType);
+ if (!aRet.hasValue()) {
+ aRet = OPropertySetHelper::queryInterface(rType);
+ }
+ return aRet;
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::getTypes() -I- */
+Sequence< Type > SAL_CALL OCommonStatement::getTypes()
+ throw(RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::getTypes");
+ ::cppu::OTypeCollection aTypes( ::getCppuType( (const Reference< XMultiPropertySet > *)0 ),
+ ::getCppuType( (const Reference< XFastPropertySet > *)0 ),
+ ::getCppuType( (const Reference< XPropertySet > *)0 ));
+
+ return concatSequences(aTypes.getTypes(), OCommonStatement_IBase::getTypes());
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::cancel() -I- */
+void SAL_CALL OCommonStatement::cancel()
+ throw(RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::cancel");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+ // cancel the current sql statement
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::close() -I- */
+void SAL_CALL OCommonStatement::close()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::close");
+ /*
+ We need a block for the checkDisposed call.
+ After the check we can call dispose() as we are not under lock ??
+ */
+ {
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+ }
+ dispose();
+}
+/* }}} */
+
+
+/* {{{ OStatement::clearBatch() -I- */
+void SAL_CALL OStatement::clearBatch()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OStatement::clearBatch");
+ // if you support batches clear it here
+}
+/* }}} */
+
+
+/* {{{ OStatement::execute() -I- */
+sal_Bool SAL_CALL OCommonStatement::execute(const OUString& sql)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::execute");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+ const ::rtl::OUString sSqlStatement = m_pConnection->transFormPreparedStatement( sql );
+
+ sal_Bool success = false;
+ try {
+ success = cppStatement->execute(OUStringToOString(sSqlStatement, m_pConnection->getConnectionSettings().encoding).getStr())? sal_True:sal_False;
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+ return success;
+}
+/* }}} */
+
+
+/* {{{ OStatement::executeQuery() -I- */
+Reference< XResultSet > SAL_CALL OCommonStatement::executeQuery(const OUString& sql)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::executeQuery");
+
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+ const ::rtl::OUString sSqlStatement = m_pConnection->transFormPreparedStatement(sql);
+
+ Reference< XResultSet > xResultSet;
+ try {
+ std::auto_ptr< sql::ResultSet > rset(cppStatement->executeQuery(OUStringToOString(sSqlStatement, m_pConnection->getConnectionEncoding()).getStr()));
+ xResultSet = new OResultSet(this, rset.get(), m_pConnection->getConnectionEncoding());
+ rset.release();
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ OStatement::getConnection() -I- */
+Reference< XConnection > SAL_CALL OCommonStatement::getConnection()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::getConnection");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+
+ // just return(our connection here
+ return ((Reference< XConnection >)m_pConnection);
+}
+/* }}} */
+
+
+/* {{{ OStatement::getUpdateCount() -I- */
+sal_Int32 SAL_CALL OCommonStatement::getUpdateCount()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::getUpdateCount");
+ return 0;
+}
+/* }}} */
+
+
+/* {{{ OStatement::queryInterface() -I- */
+Any SAL_CALL OStatement::queryInterface(const Type & rType)
+ throw(RuntimeException)
+{
+ OSL_TRACE("OStatement::queryInterface");
+ Any aRet = ::cppu::queryInterface(rType,static_cast< XBatchExecution*> (this));
+ if (!aRet.hasValue()) {
+ aRet = OCommonStatement::queryInterface(rType);
+ }
+ return (aRet);
+}
+/* }}} */
+
+
+/* {{{ OStatement::addBatch() -I- */
+void SAL_CALL OStatement::addBatch(const OUString& sql)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OStatement::addBatch");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+
+ m_aBatchList.push_back(sql);
+}
+/* }}} */
+
+
+/* {{{ OStatement::executeBatch() -I- */
+Sequence< sal_Int32 > SAL_CALL OStatement::executeBatch()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OStatement::executeBatch");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+
+ Sequence< sal_Int32 > aRet = Sequence< sal_Int32 >();
+ return aRet;
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::executeUpdate() -I- */
+sal_Int32 SAL_CALL OCommonStatement::executeUpdate(const OUString& sql)
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::executeUpdate");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+ const ::rtl::OUString sSqlStatement = m_pConnection->transFormPreparedStatement(sql);
+
+ sal_Int32 affectedRows = 0;
+ try {
+ affectedRows = cppStatement->executeUpdate(OUStringToOString(sSqlStatement, m_pConnection->getConnectionEncoding()).getStr());
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+ return affectedRows;
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::getResultSet() -I- */
+Reference< XResultSet > SAL_CALL OCommonStatement::getResultSet()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::getResultSet");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+
+ Reference< XResultSet > xResultSet;
+ try {
+ std::auto_ptr< sql::ResultSet > rset(cppStatement->getResultSet());
+ xResultSet = new OResultSet(this, rset.get(), m_pConnection->getConnectionEncoding());
+ rset.release();
+ } catch (sql::SQLException &e) {
+ mysqlc_sdbc_driver::translateAndThrow(e, *this, m_pConnection->getConnectionEncoding());
+ }
+ return xResultSet;
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::getMoreResults() -I- */
+sal_Bool SAL_CALL OCommonStatement::getMoreResults()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::getMoreResults");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+
+ // if your driver supports more than only one resultset
+ // and has one more at this moment return(true
+ return (sal_False);
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::getWarnings() -I- */
+Any SAL_CALL OCommonStatement::getWarnings()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::getWarnings");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+
+ return makeAny(m_aLastWarning);
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::clearWarnings() -I- */
+void SAL_CALL OCommonStatement::clearWarnings()
+ throw(SQLException, RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::clearWarnings");
+ MutexGuard aGuard(m_aMutex);
+ checkDisposed(rBHelper.bDisposed);
+
+ m_aLastWarning = SQLWarning();
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::createArrayHelper() -I- */
+::cppu::IPropertyArrayHelper* OCommonStatement::createArrayHelper( ) const
+{
+ OSL_TRACE("OCommonStatement::createArrayHelper");
+ // this properties are define by the service statement
+ // they must in alphabetic order
+ Sequence< Property > aProps(10);
+ Property* pProperties = aProps.getArray();
+ sal_Int32 nPos = 0;
+ DECL_PROP0(CURSORNAME, OUString);
+ DECL_BOOL_PROP0(ESCAPEPROCESSING);
+ DECL_PROP0(FETCHDIRECTION,sal_Int32);
+ DECL_PROP0(FETCHSIZE, sal_Int32);
+ DECL_PROP0(MAXFIELDSIZE,sal_Int32);
+ DECL_PROP0(MAXROWS, sal_Int32);
+ DECL_PROP0(QUERYTIMEOUT,sal_Int32);
+ DECL_PROP0(RESULTSETCONCURRENCY,sal_Int32);
+ DECL_PROP0(RESULTSETTYPE,sal_Int32);
+ DECL_BOOL_PROP0(USEBOOKMARKS);
+
+ return new ::cppu::OPropertyArrayHelper(aProps);
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::getInfoHelper() -I- */
+::cppu::IPropertyArrayHelper & OCommonStatement::getInfoHelper()
+{
+ OSL_TRACE("OCommonStatement::getInfoHelper");
+ return(*const_cast<OCommonStatement*>(this)->getArrayHelper());
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::convertFastPropertyValue() -I- */
+sal_Bool OCommonStatement::convertFastPropertyValue(
+ Any & /* rConvertedValue */, Any & /* rOldValue */,
+ sal_Int32 /* nHandle */, const Any& /* rValue */)
+ throw (IllegalArgumentException)
+{
+ OSL_TRACE("OCommonStatement::convertFastPropertyValue");
+ sal_Bool bConverted = sal_False;
+ // here we have to try to convert
+ return bConverted;
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::setFastPropertyValue_NoBroadcast() -I- */
+void OCommonStatement::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const Any& /* rValue */)
+ throw (Exception)
+{
+ OSL_TRACE("OCommonStatement::setFastPropertyValue_NoBroadcast");
+ // set the value to what ever is nescessary
+ switch (nHandle) {
+ case PROPERTY_ID_QUERYTIMEOUT:
+ case PROPERTY_ID_MAXFIELDSIZE:
+ case PROPERTY_ID_MAXROWS:
+ case PROPERTY_ID_CURSORNAME:
+ case PROPERTY_ID_RESULTSETCONCURRENCY:
+ case PROPERTY_ID_RESULTSETTYPE:
+ case PROPERTY_ID_FETCHDIRECTION:
+ case PROPERTY_ID_FETCHSIZE:
+ case PROPERTY_ID_ESCAPEPROCESSING:
+ case PROPERTY_ID_USEBOOKMARKS:
+ default:
+ ;
+ }
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::getFastPropertyValue() -I- */
+void OCommonStatement::getFastPropertyValue(Any& _rValue, sal_Int32 nHandle) const
+{
+ OSL_TRACE("OCommonStatement::getFastPropertyValue");
+ switch (nHandle) {
+ case PROPERTY_ID_QUERYTIMEOUT:
+ case PROPERTY_ID_MAXFIELDSIZE:
+ case PROPERTY_ID_MAXROWS:
+ case PROPERTY_ID_CURSORNAME:
+ case PROPERTY_ID_RESULTSETCONCURRENCY:
+ case PROPERTY_ID_RESULTSETTYPE:
+ case PROPERTY_ID_FETCHDIRECTION:
+ case PROPERTY_ID_FETCHSIZE:
+ case PROPERTY_ID_ESCAPEPROCESSING:
+ break;
+ case PROPERTY_ID_USEBOOKMARKS:
+ _rValue <<= sal_False;
+ break;
+ default:
+ ;
+ }
+}
+/* }}} */
+
+IMPLEMENT_SERVICE_INFO(OStatement,"com.sun.star.sdbcx.OStatement","com.sun.star.sdbc.Statement");
+
+/* {{{ OCommonStatement::acquire() -I- */
+void SAL_CALL OCommonStatement::acquire()
+ throw()
+{
+ OSL_TRACE("OCommonStatement::acquire");
+ OCommonStatement_IBase::acquire();
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::release() -I- */
+void SAL_CALL OCommonStatement::release()
+ throw()
+{
+ OSL_TRACE("OCommonStatement::release");
+ relase_ChildImpl();
+}
+/* }}} */
+
+
+/* {{{ OStatement::acquire() -I- */
+void SAL_CALL OStatement::acquire()
+ throw()
+{
+ OSL_TRACE("OStatement::acquire");
+ OCommonStatement::acquire();
+}
+/* }}} */
+
+
+/* {{{ OStatement::release() -I- */
+void SAL_CALL OStatement::release()
+ throw()
+{
+ OSL_TRACE("OStatement::release");
+ OCommonStatement::release();
+}
+/* }}} */
+
+
+/* {{{ OCommonStatement::getPropertySetInfo() -I- */
+Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL OCommonStatement::getPropertySetInfo()
+ throw(RuntimeException)
+{
+ OSL_TRACE("OCommonStatement::getPropertySetInfo");
+ return(::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper()));
+}
+/* }}} */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_statement.hxx b/mysqlc/source/mysqlc_statement.hxx
new file mode 100644
index 000000000000..8a4ad3b04a81
--- /dev/null
+++ b/mysqlc/source/mysqlc_statement.hxx
@@ -0,0 +1,190 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+#ifndef MYSQLC_STATEMENT_HXX
+#define MYSQLC_STATEMENT_HXX
+
+#include "mysqlc_connection.hxx"
+#include "mysqlc_subcomponent.hxx"
+
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/sdbc/SQLWarning.hpp>
+#include <com/sun/star/sdbc/XBatchExecution.hpp>
+#include <com/sun/star/sdbc/XCloseable.hpp>
+#include <com/sun/star/sdbc/XMultipleResults.hpp>
+#include <com/sun/star/sdbc/XStatement.hpp>
+#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
+#include <com/sun/star/util/XCancellable.hpp>
+
+#include <cppconn/statement.h>
+#include <cppuhelper/compbase5.hxx>
+#include <list>
+
+namespace connectivity
+{
+ namespace mysqlc
+ {
+ using ::com::sun::star::sdbc::SQLWarning;
+ using ::com::sun::star::sdbc::SQLException;
+ using ::com::sun::star::uno::Any;
+ using ::com::sun::star::uno::RuntimeException;
+ using ::rtl::OUString;
+
+ typedef ::cppu::WeakComponentImplHelper5< ::com::sun::star::sdbc::XStatement,
+ ::com::sun::star::sdbc::XWarningsSupplier,
+ ::com::sun::star::util::XCancellable,
+ ::com::sun::star::sdbc::XCloseable,
+ ::com::sun::star::sdbc::XMultipleResults> OCommonStatement_IBase;
+
+ class OCommonStatement;
+ typedef OSubComponent< OCommonStatement, OCommonStatement_IBase > OStatement_CBase;
+
+ //**************************************************************
+ //************ Class: OCommonStatement
+ // is a base class for the normal statement and for the prepared statement
+ //**************************************************************
+ class OCommonStatement :public OBase_Mutex
+ ,public OCommonStatement_IBase
+ ,public ::cppu::OPropertySetHelper
+ ,public OPropertyArrayUsageHelper<OCommonStatement>
+ ,public OStatement_CBase
+
+ {
+ friend class OSubComponent< OCommonStatement, OCommonStatement_IBase >;
+
+ private:
+ SQLWarning m_aLastWarning;
+
+ protected:
+ ::std::list< OUString> m_aBatchList;
+
+ OConnection* m_pConnection; // The owning Connection object
+
+ sql::Statement *cppStatement;
+
+ protected:
+ void disposeResultSet();
+
+ // OPropertyArrayUsageHelper
+ ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
+
+ // OPropertySetHelper
+ ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
+ sal_Bool SAL_CALL convertFastPropertyValue(Any & rConvertedValue, Any & rOldValue,
+ sal_Int32 nHandle, const Any& rValue)
+ throw (::com::sun::star::lang::IllegalArgumentException);
+
+ void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const Any& rValue)
+ throw(::com::sun::star::uno::Exception);
+
+ void SAL_CALL getFastPropertyValue(Any& rValue, sal_Int32 nHandle) const;
+ virtual ~OCommonStatement();
+
+ protected:
+ OCommonStatement(OConnection* _pConnection, sql::Statement *_cppStatement);
+
+ public:
+ ::cppu::OBroadcastHelper& rBHelper;
+ using OCommonStatement_IBase::operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >;
+
+ // OComponentHelper
+ void SAL_CALL disposing(void);
+
+ // XInterface
+ void SAL_CALL release() throw();
+
+ void SAL_CALL acquire() throw();
+
+ // XInterface
+ Any SAL_CALL queryInterface(const ::com::sun::star::uno::Type & rType)
+ throw(RuntimeException);
+
+ //XTypeProvider
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
+ throw(RuntimeException);
+
+ // XPropertySet
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo()
+ throw(RuntimeException);
+
+ // XStatement
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery(const OUString& sql)
+ throw(SQLException, RuntimeException);
+
+ sal_Int32 SAL_CALL executeUpdate(const OUString& sql)
+ throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL execute( const OUString& sql )
+ throw(SQLException, RuntimeException);
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection()
+ throw(SQLException, RuntimeException);
+
+ // XWarningsSupplier
+ Any SAL_CALL getWarnings() throw(SQLException, RuntimeException);
+
+ void SAL_CALL clearWarnings() throw(SQLException, RuntimeException);
+
+ // XCancellable
+ void SAL_CALL cancel() throw(RuntimeException);
+
+ // XCloseable
+ void SAL_CALL close() throw(SQLException, RuntimeException);
+
+ // XMultipleResults
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getResultSet()
+ throw(SQLException, RuntimeException);
+
+ sal_Int32 SAL_CALL getUpdateCount() throw(SQLException, RuntimeException);
+
+ sal_Bool SAL_CALL getMoreResults() throw(SQLException, RuntimeException);
+
+ // other methods
+ OConnection* getOwnConnection() const { return m_pConnection;}
+
+ private:
+ using ::cppu::OPropertySetHelper::getFastPropertyValue;
+ };
+
+
+ class OStatement : public OCommonStatement,
+ public ::com::sun::star::sdbc::XBatchExecution,
+ public ::com::sun::star::lang::XServiceInfo
+
+ {
+ protected:
+ virtual ~OStatement(){}
+
+ public:
+ // ein Konstruktor, der fuer das Returnen des Objektes benoetigt wird:
+ OStatement(OConnection* _pConnection, sql::Statement *_cppStatement) : OCommonStatement(_pConnection, _cppStatement) {}
+ DECLARE_SERVICE_INFO();
+
+ Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType )
+ throw(RuntimeException);
+
+ void SAL_CALL acquire() throw();
+ void SAL_CALL release() throw();
+
+ // XBatchExecution
+ void SAL_CALL addBatch(const OUString& sql)
+ throw(SQLException, RuntimeException);
+
+ void SAL_CALL clearBatch() throw(SQLException, RuntimeException);
+
+ ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL executeBatch()
+ throw(SQLException, RuntimeException);
+
+ };
+ }
+}
+#endif // MYSQLC_STATEMENT_HXX
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: noet sw=4 ts=4 fdm=marker
+ * vim<600: noet sw=4 ts=4
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_subcomponent.hxx b/mysqlc/source/mysqlc_subcomponent.hxx
new file mode 100644
index 000000000000..88eabe9c003d
--- /dev/null
+++ b/mysqlc/source/mysqlc_subcomponent.hxx
@@ -0,0 +1,241 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef _CONNECTIVITY_OSUBCOMPONENT_HXX_
+#define _CONNECTIVITY_OSUBCOMPONENT_HXX_
+
+#include <cppuhelper/weak.hxx>
+#include <cppuhelper/interfacecontainer.h>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <cppuhelper/propshlp.hxx>
+#include <osl/mutex.hxx>
+#include <osl/diagnose.h>
+
+namespace cppu {
+ class IPropertyArrayHelper;
+}
+
+namespace com
+{
+ namespace sun
+ {
+ namespace star
+ {
+ namespace lang
+ {
+ class XComponent;
+ }
+ }
+ }
+}
+namespace connectivity
+{
+
+ namespace mysqlc
+ {
+ void release(oslInterlockedCount& _refCount,
+ ::cppu::OBroadcastHelper& rBHelper,
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xInterface,
+ ::com::sun::star::lang::XComponent* _pObject);
+
+ void checkDisposed(sal_Bool _bThrow) throw (::com::sun::star::lang::DisposedException);
+ //************************************************************
+ // OSubComponent
+ //************************************************************
+ template <class SELF, class WEAK> class OSubComponent
+ {
+ protected:
+ // the parent must support the tunnel implementation
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xParent;
+ SELF* m_pDerivedImplementation;
+
+ public:
+ OSubComponent(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xParent,
+ SELF* _pDerivedImplementation)
+ :m_xParent(_xParent)
+ ,m_pDerivedImplementation(_pDerivedImplementation)
+ {
+ }
+
+ protected:
+ void dispose_ChildImpl()
+ {
+ ::osl::MutexGuard aGuard(m_pDerivedImplementation->rBHelper.rMutex);
+ m_xParent = NULL;
+ }
+ void relase_ChildImpl()
+ {
+ release(m_pDerivedImplementation->m_refCount,
+ m_pDerivedImplementation->rBHelper,
+ m_xParent,
+ m_pDerivedImplementation);
+
+ m_pDerivedImplementation->WEAK::release();
+ }
+ };
+
+
+ template <class TYPE>
+ class OPropertyArrayUsageHelper
+ {
+ protected:
+ static sal_Int32 s_nRefCount;
+ static ::cppu::IPropertyArrayHelper* s_pProps;
+ static ::osl::Mutex s_aMutex;
+
+ public:
+ OPropertyArrayUsageHelper();
+ virtual ~OPropertyArrayUsageHelper()
+ { // ARGHHHHHHH ..... would like to implement this in proparrhlp_impl.hxx (as we do with all other methods)
+ // but SUNPRO 5 compiler (linker) doesn't like this
+ ::osl::MutexGuard aGuard(s_aMutex);
+ OSL_ENSURE(s_nRefCount > 0, "OPropertyArrayUsageHelper::~OPropertyArrayUsageHelper : suspicious call : have a refcount of 0 !");
+ if (!--s_nRefCount)
+ {
+ delete s_pProps;
+ s_pProps = NULL;
+ }
+ }
+
+ /** call this in the getInfoHelper method of your derived class. The method returns the array helper of the
+ class, which is created if neccessary.
+ */
+ ::cppu::IPropertyArrayHelper* getArrayHelper();
+
+ protected:
+ /** used to implement the creation of the array helper which is shared amongst all instances of the class.
+ This method needs to be implemented in derived classes.
+ <BR>
+ The method gets called with s_aMutex acquired.
+ <BR>
+ as long as IPropertyArrayHelper has no virtual destructor, the implementation of ~OPropertyArrayUsageHelper
+ assumes that you created an ::cppu::OPropertyArrayHelper when deleting s_pProps.
+ @return an pointer to the newly created array helper. Must not be NULL.
+ */
+ virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const = 0;
+ };
+
+ template<class TYPE>
+ sal_Int32 OPropertyArrayUsageHelper< TYPE >::s_nRefCount = 0;
+
+ template<class TYPE>
+ ::cppu::IPropertyArrayHelper* OPropertyArrayUsageHelper< TYPE >::s_pProps = NULL;
+
+ template<class TYPE>
+ ::osl::Mutex OPropertyArrayUsageHelper< TYPE >::s_aMutex;
+
+ //------------------------------------------------------------------
+ template <class TYPE>
+ OPropertyArrayUsageHelper<TYPE>::OPropertyArrayUsageHelper()
+ {
+ ::osl::MutexGuard aGuard(s_aMutex);
+ ++s_nRefCount;
+ }
+
+ //------------------------------------------------------------------
+ template <class TYPE>
+ ::cppu::IPropertyArrayHelper* OPropertyArrayUsageHelper<TYPE>::getArrayHelper()
+ {
+ OSL_ENSURE(s_nRefCount, "OPropertyArrayUsageHelper::getArrayHelper : suspicious call : have a refcount of 0 !");
+ if (!s_pProps) {
+ ::osl::MutexGuard aGuard(s_aMutex);
+ if (!s_pProps) {
+ s_pProps = createArrayHelper();
+ OSL_ENSURE(s_pProps, "OPropertyArrayUsageHelper::getArrayHelper : createArrayHelper returned nonsense !");
+ }
+ }
+ return s_pProps;
+ }
+
+
+ class OBase_Mutex
+ {
+ public:
+ ::osl::Mutex m_aMutex;
+ };
+
+ namespace internal
+ {
+ template <class T>
+ void implCopySequence(const T* _pSource, T*& _pDest, sal_Int32 _nSourceLen)
+ {
+ for (sal_Int32 i=0; i<_nSourceLen; ++i, ++_pSource, ++_pDest)
+ *_pDest = *_pSource;
+ }
+ }
+ //-------------------------------------------------------------------------
+ /// concat two sequences
+ template <class T>
+ ::com::sun::star::uno::Sequence<T> concatSequences(const ::com::sun::star::uno::Sequence<T>& _rLeft, const ::com::sun::star::uno::Sequence<T>& _rRight)
+ {
+ sal_Int32 nLeft(_rLeft.getLength()), nRight(_rRight.getLength());
+ const T* pLeft = _rLeft.getConstArray();
+ const T* pRight = _rRight.getConstArray();
+
+ sal_Int32 nReturnLen(nLeft + nRight);
+ ::com::sun::star::uno::Sequence<T> aReturn(nReturnLen);
+ T* pReturn = aReturn.getArray();
+
+ internal::implCopySequence(pLeft, pReturn, nLeft);
+ internal::implCopySequence(pRight, pReturn, nRight);
+
+ return aReturn;
+ }
+
+
+#define DECLARE_SERVICE_INFO() \
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw (::com::sun::star::uno::RuntimeException); \
+ virtual sal_Bool SAL_CALL supportsService(const ::rtl::OUString& ServiceName) throw(::com::sun::star::uno::RuntimeException); \
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException) \
+
+#define IMPLEMENT_SERVICE_INFO(classname, implasciiname, serviceasciiname) \
+ ::rtl::OUString SAL_CALL classname::getImplementationName() throw (::com::sun::star::uno::RuntimeException) \
+ { \
+ return ::rtl::OUString::createFromAscii(implasciiname); \
+ } \
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL classname::getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException) \
+ { \
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(1); \
+ aSupported[0] = ::rtl::OUString::createFromAscii(serviceasciiname); \
+ return aSupported; \
+ } \
+ sal_Bool SAL_CALL classname::supportsService(const ::rtl::OUString& _rServiceName) throw(::com::sun::star::uno::RuntimeException) \
+ { \
+ Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames()); \
+ const ::rtl::OUString* pSupported = aSupported.getConstArray(); \
+ const ::rtl::OUString* pEnd = pSupported + aSupported.getLength(); \
+ for (;pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported) \
+ ; \
+ return pSupported != pEnd; \
+ } \
+
+
+ }
+}
+#endif // _CONNECTIVITY_OSUBCOMPONENT_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_types.cxx b/mysqlc/source/mysqlc_types.cxx
new file mode 100644
index 000000000000..a6a12b461ec5
--- /dev/null
+++ b/mysqlc/source/mysqlc_types.cxx
@@ -0,0 +1,791 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#include <stdio.h>
+#include <com/sun/star/sdbc/DataType.hpp>
+#include <com/sun/star/sdbc/ColumnValue.hpp>
+#include <com/sun/star/sdbc/ColumnSearch.hpp>
+#include "mysqlc_types.hxx"
+
+using namespace com::sun::star::sdbc;
+
+TypeInfoDef mysqlc_types[] = {
+
+ // ------------- MySQL-Type: BIT. SDBC-Type: Bit -------------
+ {
+ "BIT", // Typename
+ com::sun::star::sdbc::DataType::BIT, // sdbc-type
+ 1, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_True, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "BIT", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ------------ MySQL-Type: BOOL. SDBC-Type: Bit -------------
+ {
+ "BOOL", // Typename
+ com::sun::star::sdbc::DataType::BIT, // sdbc-type
+ 1, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_True, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "BOOL", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // --------- MySQL-Type: TINYINT SDBC-Type: TINYINT ----------
+ {
+ "TINYINT", // Typename
+ com::sun::star::sdbc::DataType::TINYINT, // sdbc-type
+ 3, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M)] [UNSIGNED] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_True, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "TINYINT", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: BIGINT SDBC-Type: BIGINT ----------
+ {
+ "BIGINT", // Typename
+ com::sun::star::sdbc::DataType::BIGINT, // sdbc-type
+ 19, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M)] [UNSIGNED] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_True, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "BIGINT", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: LONG VARBINARY SDBC-Type: LONGVARBINARY ----------
+ {
+ "LONG VARBINARY", // Typename
+ com::sun::star::sdbc::DataType::LONGVARBINARY, // sdbc-type
+ 16777215, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_True, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "LONG VARBINARY", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: MEDIUMBLOB SDBC-Type: LONGVARBINARY ----------
+ {
+ "MEDIUMBLOB", // Typename
+ com::sun::star::sdbc::DataType::LONGVARBINARY, // sdbc-type
+ 16777215, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_True, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "MEDIUMBLOB", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: LONGBLOB SDBC-Type: LONGVARBINARY ----------
+ {
+ "LONGBLOB", // Typename
+ com::sun::star::sdbc::DataType::LONGVARBINARY, // sdbc-type
+ 0xFFFFFFFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_True, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "LONGBLOB", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: BLOB SDBC-Type: LONGVARBINARY ----------
+ {
+ "BLOB", // Typename
+ com::sun::star::sdbc::DataType::LONGVARBINARY, // sdbc-type
+ 0xFFFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_True, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "BLOB", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: TINYBLOB SDBC-Type: LONGVARBINARY ----------
+ {
+ "TINYBLOB", // Typename
+ com::sun::star::sdbc::DataType::LONGVARBINARY, // sdbc-type
+ 0xFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_True, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "TINYBLOB", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: VARBINARY SDBC-Type: VARBINARY ----------
+ {
+ "VARBINARY", // Typename
+ com::sun::star::sdbc::DataType::VARBINARY, // sdbc-type
+ 0xFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "(M)", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_True, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "VARBINARY", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: BINARY SDBC-Type: BINARY ----------
+ {
+ "BINARY", // Typename
+ com::sun::star::sdbc::DataType::BINARY, // sdbc-type
+ 0xFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "(M)", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_True, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "VARBINARY", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: LONG VARCHAR SDBC-Type: LONG VARCHAR ----------
+ {
+ "LONG VARCHAR", // Typename
+ com::sun::star::sdbc::DataType::LONGVARCHAR, // sdbc-type
+ 0xFFFFFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "LONG VARCHAR", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: MEDIUMTEXT SDBC-Type: LONG VARCHAR ----------
+ {
+ "MEDIUMTEXT", // Typename
+ com::sun::star::sdbc::DataType::LONGVARCHAR, // sdbc-type
+ 0xFFFFFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "MEDIUMTEXT", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: LONGTEXT SDBC-Type: LONG VARCHAR ----------
+ {
+ "LONGTEXT", // Typename
+ com::sun::star::sdbc::DataType::LONGVARCHAR, // sdbc-type
+ 0xFFFFFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "LONGTEXT", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: TEXT SDBC-Type: LONG VARCHAR ----------
+ {
+ "TEXT", // Typename
+ com::sun::star::sdbc::DataType::LONGVARCHAR, // sdbc-type
+ 0xFFFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "TEXT", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: TINYTEXT SDBC-Type: LONG VARCHAR ----------
+ {
+ "TINYTEXT", // Typename
+ com::sun::star::sdbc::DataType::LONGVARCHAR, // sdbc-type
+ 0xFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "TINYTEXT", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: CHAR SDBC-Type: CHAR ----------
+ {
+ "CHAR", // Typename
+ com::sun::star::sdbc::DataType::CHAR, // sdbc-type
+ 0xFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "(M)", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "NUMERIC", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: DECIMAL SDBC-Type: DECIMAL ----------
+ {
+ "DECIMAL", // Typename
+ com::sun::star::sdbc::DataType::DECIMAL, // sdbc-type
+ 17, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M[,D])] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "DECIMAL", // local type name
+ -308, // minimum scale
+ 308, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: NUMERIC SDBC-Type: NUMERIC ----------
+ {
+ "NUMERIC", // Typename
+ com::sun::star::sdbc::DataType::NUMERIC, // sdbc-type
+ 17, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M[,D])] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "NUMERIC", // local type name
+ -308, // minimum scale
+ 308, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: INTEGER SDBC-Type: INTEGER ----------
+ {
+ "INTEGER", // Typename
+ com::sun::star::sdbc::DataType::INTEGER, // sdbc-type
+ 10, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M)] [UNSIGNED] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_True, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "INTEGER", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: INT SDBC-Type: INTEGER ----------
+ {
+ "INT", // Typename
+ com::sun::star::sdbc::DataType::INTEGER, // sdbc-type
+ 10, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M)] [UNSIGNED] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_True, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "INT", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: MEDIUMINT SDBC-Type: INTEGER ----------
+ {
+ "MEDIUMINT", // Typename
+ com::sun::star::sdbc::DataType::INTEGER, // sdbc-type
+ 7, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M)] [UNSIGNED] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_True, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "MEDIUMINT", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: SMALLINT SDBC-Type: INTEGER ----------
+ {
+ "SMALLINT", // Typename
+ com::sun::star::sdbc::DataType::SMALLINT, // sdbc-type
+ 5, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M)] [UNSIGNED] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_True, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "SMALLINT", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: FLOAT SDBC-Type: REAL ----------
+ {
+ "FLOAT", // Typename
+ com::sun::star::sdbc::DataType::REAL, // sdbc-type
+ 10, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M,D)] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "FLOAT", // local type name
+ -38, // minimum scale
+ 38, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: DOUBLE SDBC-Type: DOUBLE ----------
+ {
+ "DOUBLE", // Typename
+ com::sun::star::sdbc::DataType::DOUBLE, // sdbc-type
+ 17, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M,D)] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "DOUBLE", // local type name
+ -308, // minimum scale
+ 308, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: DOUBLE PRECISION SDBC-Type: DOUBLE ----------
+ {
+ "DOUBLE PRECISION", // Typename
+ com::sun::star::sdbc::DataType::DOUBLE, // sdbc-type
+ 17, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M,D)] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "DOUBLE PRECISION", // local type name
+ -308, // minimum scale
+ 308, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: REAL SDBC-Type: DOUBLE ----------
+ {
+ "REAL", // Typename
+ com::sun::star::sdbc::DataType::DOUBLE, // sdbc-type
+ 17, // Precision
+ "", // Literal prefix
+ "", // Literal suffix
+ "[(M,D)] [ZEROFILL]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_True, // auto_increment
+ "REAL", // local type name
+ -308, // minimum scale
+ 308, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: VARCHAR SDBC-Type: VARCHAR ----------
+ {
+ "VARCHAR", // Typename
+ com::sun::star::sdbc::DataType::VARCHAR, // sdbc-type
+ 255, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "(M)", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "VARCHAR", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: ENUM SDBC-Type: VARCHAR ----------
+ {
+ "ENUM", // Typename
+ com::sun::star::sdbc::DataType::VARCHAR, // sdbc-type
+ 0xFFFF, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "ENUM", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: SET SDBC-Type: VARCHAR ----------
+ {
+ "SET", // Typename
+ com::sun::star::sdbc::DataType::VARCHAR, // sdbc-type
+ 64, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "SET", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: DATE SDBC-Type: DATE ----------
+ {
+ "DATE", // Typename
+ com::sun::star::sdbc::DataType::DATE, // sdbc-type
+ 0, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "DATE", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: TIME SDBC-Type: TIME ----------
+ {
+ "TIME", // Typename
+ com::sun::star::sdbc::DataType::TIME, // sdbc-type
+ 0, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "TIME", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: DATETIME SDBC-Type: TIMESTAMP ----------
+ {
+ "DATETIME", // Typename
+ com::sun::star::sdbc::DataType::TIMESTAMP, // sdbc-type
+ 0, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "DATETIME", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: TIMESTAMP SDBC-Type: TIMESTAMP ----------
+ {
+ "TIMESTAMP", // Typename
+ com::sun::star::sdbc::DataType::TIMESTAMP, // sdbc-type
+ 0, // Precision
+ "'", // Literal prefix
+ "'", // Literal suffix
+ "[(M)]", // Create params
+ com::sun::star::sdbc::ColumnValue::NULLABLE, // nullable
+ sal_False, // case sensitive
+ com::sun::star::sdbc::ColumnSearch::FULL, // searchable
+ sal_False, // unsignable
+ sal_False, // fixed_prec_scale
+ sal_False, // auto_increment
+ "TIMESTAMP", // local type name
+ 0, // minimum scale
+ 0, // maximum scale
+ 0, // sql data type (unsued)
+ 0, // sql datetime sub (unsued)
+ 10 // num prec radix
+ },
+
+ // ----------- MySQL-Type: TIMESTAMP SDBC-Type: TIMESTAMP ----------
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ }
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/mysqlc_types.hxx b/mysqlc/source/mysqlc_types.hxx
new file mode 100644
index 000000000000..1a737bb6a487
--- /dev/null
+++ b/mysqlc/source/mysqlc_types.hxx
@@ -0,0 +1,55 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2008 by Sun Microsystems, Inc.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+************************************************************************/
+
+#ifndef MYSQLC_TYPES_HXX
+#define MYSQLC_TYPES_HXX
+
+struct TypeInfoDef {
+ const char *typeName;
+ sal_Int32 dataType;
+ sal_Int32 precision;
+ const char *literalPrefix;
+ const char *literalSuffix;
+ const char *createParams;
+ sal_Int16 nullable;
+ sal_Bool caseSensitive;
+ sal_Int16 searchable;
+ sal_Bool isUnsigned;
+ sal_Bool fixedPrecScale;
+ sal_Bool autoIncrement;
+ const char *localTypeName;
+ sal_Int32 minScale;
+ sal_Int32 maxScale;
+ sal_Int32 sqlDataType;
+ sal_Int32 sqlDateTimeSub;
+ sal_Int32 numPrecRadix;
+};
+
+extern TypeInfoDef mysqlc_types[];
+
+#endif /* MYSQLC_TYPES_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/mysqlc/source/registry/data/org/openoffice/Office/DataAccess/Drivers.xcu b/mysqlc/source/registry/data/org/openoffice/Office/DataAccess/Drivers.xcu
new file mode 100644
index 000000000000..d2fdefd74241
--- /dev/null
+++ b/mysqlc/source/registry/data/org/openoffice/Office/DataAccess/Drivers.xcu
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data oor:name="Drivers" oor:package="org.openoffice.Office.DataAccess" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <node oor:name="Installed">
+ <node oor:name="sdbc:mysqlc:*" oor:op="replace">
+ <prop oor:name="Driver">
+ <value>com.sun.star.comp.sdbc.mysqlc.MysqlCDriver</value>
+ </prop>
+ <prop oor:name="DriverTypeDisplayName" oor:type="xs:string">
+ <value xml:lang="en-US">MySQL (Connector/OOo)</value>
+ </prop>
+ <node oor:name="Properties">
+ <node oor:name="CharSet" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:string">
+ <value></value>
+ </prop>
+ </node>
+ <node oor:name="LocalSocket" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:string">
+ <value></value>
+ </prop>
+ </node>
+ <node oor:name="NamedPipe" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:string">
+ <value></value>
+ </prop>
+ </node>
+ </node>
+ <node oor:name="Features">
+ <node oor:name="UseKeywordAsBeforeAlias" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="IgnoreDriverPrivileges" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="DisplayVersionColumns" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="UseDOSLineEnds" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="BooleanComparisonMode" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="FormsCheckRequiredFields" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ </node>
+ <node oor:name="MetaData">
+ <node oor:name="SupportsTableCreation" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="Authentication" oor:op="replace">
+ <prop oor:name="Value" oor:type="xs:string">
+ <value>UserPassword</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/mysqlc/version.mk b/mysqlc/version.mk
new file mode 100644
index 000000000000..5713d5265258
--- /dev/null
+++ b/mysqlc/version.mk
@@ -0,0 +1,38 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+MYSQLC_VERSION_MAJOR=1
+MYSQLC_VERSION_MINOR=0
+MYSQLC_VERSION_MICRO=1
+
+# the title, as displayed in the Extension Manager
+MYSQLC_TITLE=MySQL Connector
+
+# the status of the extension
+# if this is different from "final", it will be appended to the title displayed in the Extension Manager
+# and also added to the file name of the resulting .oxt file
+MYSQLC_STATUS=final
diff --git a/nlpsolver/locale/NLPSolverCommon_ast.properties b/nlpsolver/locale/NLPSolverCommon_ast.properties
new file mode 100644
index 000000000000..e60e3059264c
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_ast.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Asumir variables non-negatives
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Tama\u00F1u del ensame
+NLPSolverCommon.Properties.LibrarySize=Tama\u00F1u de biblioteca
+NLPSolverCommon.Properties.LearningCycles=Ciclos de deprendimientu
+NLPSolverCommon.Properties.GuessVariableRange=Albidrar llendes variables
+NLPSolverCommon.Properties.VariableRangeThreshold=Intervalu de llendes variables (al albidrar)
+NLPSolverCommon.Properties.UseACRComparator=Usar el comparador ACR (en llugar del BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Usar puntu d'aniciu al debalu
+NLPSolverCommon.Properties.StagnationLimit=Llende d'estancamientu
+NLPSolverCommon.Properties.Tolerance=Tolerancia d'estancamientu
+NLPSolverCommon.Properties.EnhancedSolverStatus=Amosar est\u00E1u del resolvedor enant\u00E1u
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Tasa de conmutaci\u00F3n d'axente (Probabilid\u00E1 DE)
+NLPSolverCommon.Properties.DEFactor=DE: Factor d'escala (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: Probabilid\u00E1 de cruciamientu (0_1)
+NLPSolverCommon.Properties.PSC1=PS: Constante cognitiva
+NLPSolverCommon.Properties.PSC2=PS: Constante social
+NLPSolverCommon.Properties.PSWeight=PS: Coeficiente de restricci\u00F3n
+NLPSolverCommon.Properties.PSCL=PS: Probabilid\u00E1 de mutaci\u00F3n (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_ca.properties b/nlpsolver/locale/NLPSolverCommon_ca.properties
new file mode 100644
index 000000000000..b9c0bd9a7425
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_ca.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Assumeix variables no negatives
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Mida de l'eixam
+NLPSolverCommon.Properties.LibrarySize=Mida la biblioteca
+NLPSolverCommon.Properties.LearningCycles=Cicles d'aprenentatge
+NLPSolverCommon.Properties.GuessVariableRange=Estimaci\u00F3 dels l\u00EDmits de la variable
+NLPSolverCommon.Properties.VariableRangeThreshold=Llindar dels l\u00EDmits de la variable (en l'estimaci\u00F3)
+NLPSolverCommon.Properties.UseACRComparator=Usa el comparador ACR (en comptes del BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Utilitza un punt d'inici aleatori
+NLPSolverCommon.Properties.StagnationLimit=L\u00EDmit d'estagnaci\u00F3
+NLPSolverCommon.Properties.Tolerance=Toler\u00E0ncia d'estagnaci\u00F3
+NLPSolverCommon.Properties.EnhancedSolverStatus=Mostra l'estat millorat del solucionador
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Taxa d'intercanvi de l'agent (probabilitat de l'evoluci\u00F3 diferencial)
+NLPSolverCommon.Properties.DEFactor=ED: factor d'escala (0-1,2)
+NLPSolverCommon.Properties.DECR=ED: probabilitat d'encreuament (0-1)
+NLPSolverCommon.Properties.PSC1=EP: constant cognitiva
+NLPSolverCommon.Properties.PSC2=EP: constant social
+NLPSolverCommon.Properties.PSWeight=EP: coeficient de constricci\u00F3
+NLPSolverCommon.Properties.PSCL=EP: probabilitat de mutaci\u00F3 (0-0,005)
diff --git a/nlpsolver/locale/NLPSolverCommon_de.properties b/nlpsolver/locale/NLPSolverCommon_de.properties
new file mode 100644
index 000000000000..56108cd66cc5
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_de.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Nicht-negative Variablen voraussetzen
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Schwarmgr\u00F6\u00DFe
+NLPSolverCommon.Properties.LibrarySize=Gr\u00F6\u00DFe der Bibliothek
+NLPSolverCommon.Properties.LearningCycles=Lernzyklen
+NLPSolverCommon.Properties.GuessVariableRange=Variablengrenzen raten
+NLPSolverCommon.Properties.VariableRangeThreshold=Variablengrenzbereich (beim Raten)
+NLPSolverCommon.Properties.UseACRComparator=ACR Komparator (statt BCH) nutzen
+NLPSolverCommon.Properties.UseRandomStartingPoint=Zuf\u00E4lligen Startpunkt w\u00E4hlen
+NLPSolverCommon.Properties.StagnationLimit=Beendigungsgrenze
+NLPSolverCommon.Properties.Tolerance=Beendigungstoleranz
+NLPSolverCommon.Properties.EnhancedSolverStatus=Erweiterten Solver-Status anzeigen
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Agent Switch Rate (DE Wahrscheinlichkeit)
+NLPSolverCommon.Properties.DEFactor=DE: Skalierungsfaktor (0-1,2)
+NLPSolverCommon.Properties.DECR=DE: Crossover-Wahrscheinlichkeit (0-1)
+NLPSolverCommon.Properties.PSC1=PS: Kognitivit\u00E4tskonstante
+NLPSolverCommon.Properties.PSC2=PS: Sozialkonstante
+NLPSolverCommon.Properties.PSWeight=PS: Konstriktionskoeffizient
+NLPSolverCommon.Properties.PSCL=PS: Mutationswahrscheinlichkeit (0-0,005)
diff --git a/nlpsolver/locale/NLPSolverCommon_en_GB.properties b/nlpsolver/locale/NLPSolverCommon_en_GB.properties
new file mode 100644
index 000000000000..f5ff239dba8f
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_en_GB.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Assume Non-Negative Variables
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Size of Swarm
+NLPSolverCommon.Properties.LibrarySize=Size of Library
+NLPSolverCommon.Properties.LearningCycles=Learning Cycles
+NLPSolverCommon.Properties.GuessVariableRange=Variable Bounds Guessing
+NLPSolverCommon.Properties.VariableRangeThreshold=Variable Bounds Threshold (when guessing)
+NLPSolverCommon.Properties.UseACRComparator=Use ACR Comparator (instead of BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Use Random starting point
+NLPSolverCommon.Properties.StagnationLimit=Stagnation Limit
+NLPSolverCommon.Properties.Tolerance=Stagnation Tolerance
+NLPSolverCommon.Properties.EnhancedSolverStatus=Show enhanced solver status
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Agent Switch Rate (DE Probability)
+NLPSolverCommon.Properties.DEFactor=DE: Scaling Factor (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: Crossover Probability (0-1)
+NLPSolverCommon.Properties.PSC1=PS: Cognitive Constant
+NLPSolverCommon.Properties.PSC2=PS: Social Constant
+NLPSolverCommon.Properties.PSWeight=PS: Constriction Coefficient
+NLPSolverCommon.Properties.PSCL=PS: Mutation Probability (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_es.properties b/nlpsolver/locale/NLPSolverCommon_es.properties
new file mode 100644
index 000000000000..b1c20a2c717a
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_es.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Asumir variables no-negativas
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Tama\u00F1o del enjambre
+NLPSolverCommon.Properties.LibrarySize=Tama\u00F1o de la biblioteca
+NLPSolverCommon.Properties.LearningCycles=Ciclos de aprendizaje
+NLPSolverCommon.Properties.GuessVariableRange=Estimaci\u00F3n de los l\u00EDmites de las variables
+NLPSolverCommon.Properties.VariableRangeThreshold=Umbral de los l\u00EDmites de las variables (al estimar)
+NLPSolverCommon.Properties.UseACRComparator=Usar el comparador ACR (en vez del BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Usar un punto inicial aleatorio
+NLPSolverCommon.Properties.StagnationLimit=Limite de estancamiento
+NLPSolverCommon.Properties.Tolerance=Tolerancia de estancamiento
+NLPSolverCommon.Properties.EnhancedSolverStatus=Mostrar el estado extendido del solucionador
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Tasa de cambio del agente (probabilidad DE)
+NLPSolverCommon.Properties.DEFactor=DE: factor de escala (0-1,2)
+NLPSolverCommon.Properties.DECR=DE: Probabilidad de cruce (0-1)
+NLPSolverCommon.Properties.PSC1=PS: Constante cognitiva
+NLPSolverCommon.Properties.PSC2=PS: Constante social
+NLPSolverCommon.Properties.PSWeight=PS: Coeficiente de constricci\u00F3n
+NLPSolverCommon.Properties.PSCL=PS: Probabilidad de mutaci\u00F3n (0-0,005)
diff --git a/nlpsolver/locale/NLPSolverCommon_et.properties b/nlpsolver/locale/NLPSolverCommon_et.properties
new file mode 100644
index 000000000000..49a4bdfd5440
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_et.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Mittenegatiivsete muutujate eeldamine
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=S\u00FClemi suurus
+NLPSolverCommon.Properties.LibrarySize=Teegi suurus
+NLPSolverCommon.Properties.LearningCycles=\u00D5ppimists\u00FCklite arv
+NLPSolverCommon.Properties.GuessVariableRange=Muutujapiiride oletamine
+NLPSolverCommon.Properties.VariableRangeThreshold=Muutujapiiride l\u00E4vi (oletamisel)
+NLPSolverCommon.Properties.UseACRComparator=ACR komparaatori kasutamine (BCH asemel)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Juhusliku alguspunkti kasutamine
+NLPSolverCommon.Properties.StagnationLimit=Seisakuraja
+NLPSolverCommon.Properties.Tolerance=Seisakutolerants
+NLPSolverCommon.Properties.EnhancedSolverStatus=Lahendaja t\u00E4iendatud oleku kuvamine
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Agent Switch Rate (DE t\u00F5en\u00E4osus)
+NLPSolverCommon.Properties.DEFactor=DE: skaleerimistegur (0-1,2)
+NLPSolverCommon.Properties.DECR=DE: ristumist\u00F5en\u00E4osus (0-1)
+NLPSolverCommon.Properties.PSC1=PS: kognitiivsuskonstant
+NLPSolverCommon.Properties.PSC2=PS: sotsiaalkonstant
+NLPSolverCommon.Properties.PSWeight=PS: ahenemiskoefitsient
+NLPSolverCommon.Properties.PSCL=PS: mutatsioonit\u00F5en\u00E4osus (0-0,005)
diff --git a/nlpsolver/locale/NLPSolverCommon_fa.properties b/nlpsolver/locale/NLPSolverCommon_fa.properties
new file mode 100644
index 000000000000..b596522d935e
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_fa.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=\u0641\u0631\u0636 \u06A9\u0631\u062F\u0646 \u0645\u062A\u063A\u06CC\u0631\u0647\u0627\u06CC \u0646\u0627\u0645\u0646\u0641\u06CC
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=\u0627\u0646\u062F\u0627\u0632\u0647 \u062F\u0633\u062A\u0647
+NLPSolverCommon.Properties.LibrarySize=\u0627\u0646\u062F\u0627\u0632\u0647 \u06A9\u062A\u0627\u0628\u200C\u062E\u0627\u0646\u0647
+NLPSolverCommon.Properties.LearningCycles=\u0686\u0631\u062E\u0647\u200C\u0647\u0627\u06CC \u06CC\u0627\u062F\u200C\u06AF\u06CC\u0631\u06CC
+NLPSolverCommon.Properties.GuessVariableRange=\u062D\u062F\u0633 \u0632\u062F\u0646 \u06A9\u0631\u0627\u0646\u200C\u0647\u0627\u06CC \u0645\u062A\u063A\u06CC\u0631
+NLPSolverCommon.Properties.VariableRangeThreshold=\u0622\u0633\u062A\u0627\u0646\u0647 \u06A9\u0631\u0627\u0646\u200C\u0647\u0627\u06CC \u0645\u062A\u063A\u06CC\u0631 (\u062F\u0631 \u0632\u0645\u0627\u0646 \u062D\u062F\u0633 \u0632\u062F\u0646)
+NLPSolverCommon.Properties.UseACRComparator=\u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0627\u0632 \u0645\u0642\u0627\u06CC\u0633\u0647 \u06A9\u0646\u0646\u062F\u0647 ACR (\u0628\u0647\u200C\u062C\u0627\u06CC BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=\u0627\u0633\u062A\u0641\u0627\u062F\u0647 \u0627\u0632 \u0646\u0642\u0637\u0647 \u0622\u063A\u0627\u0632 \u062A\u0635\u0627\u062F\u0641\u06CC
+NLPSolverCommon.Properties.StagnationLimit=\u062D\u062F \u0627\u06CC\u0633\u062A\u0627\u06CC\u06CC
+NLPSolverCommon.Properties.Tolerance=\u062A\u062D\u0645\u0644 \u0627\u06CC\u0633\u062A\u0627\u06CC\u06CC
+NLPSolverCommon.Properties.EnhancedSolverStatus=\u0646\u0645\u0627\u06CC\u0634 \u0648\u0636\u0639\u06CC\u062A \u062D\u0644\u200C\u06A9\u0646\u0646\u062F\u0647 \u0628\u0647\u0628\u0648\u062F\u200C\u06CC\u0627\u0641\u062A\u0647
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=\u0646\u0631\u062E \u062A\u0639\u0648\u06CC\u0636 \u0639\u0627\u0645\u0644 (\u0627\u062D\u062A\u0645\u0627\u0644 DE)
+NLPSolverCommon.Properties.DEFactor=DE: \u0636\u0631\u06CC\u0628 \u0645\u0642\u06CC\u0627\u0633 (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: \u0627\u062D\u062A\u0645\u0627\u0644 \u062A\u0642\u0627\u0637\u0639 (0-1)
+NLPSolverCommon.Properties.PSC1=PS: \u062B\u0627\u0628\u062A \u0634\u0646\u0627\u062E\u062A
+NLPSolverCommon.Properties.PSC2=PS: \u062B\u0627\u0628\u062A \u0627\u062C\u062A\u0645\u0627\u0639\u06CC
+NLPSolverCommon.Properties.PSWeight=PS: \u0636\u0631\u06CC\u0628 \u0627\u0646\u0642\u0628\u0627\u0636
+NLPSolverCommon.Properties.PSCL=PS: \u0627\u062D\u062A\u0645\u0627\u0644 \u062F\u06AF\u0631\u06AF\u0648\u0646\u06CC (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_fi.properties b/nlpsolver/locale/NLPSolverCommon_fi.properties
new file mode 100644
index 000000000000..0bc8cbd84353
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_fi.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Oleta muuttujat ei-negatiivisiksi
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Parven koko
+NLPSolverCommon.Properties.LibrarySize=Kirjaston koko
+NLPSolverCommon.Properties.LearningCycles=Oppimissyklit
+NLPSolverCommon.Properties.GuessVariableRange=Arvaa muuttujien rajat
+NLPSolverCommon.Properties.VariableRangeThreshold=Muuttujarajojen kynnysarvo (arvaamalla)
+NLPSolverCommon.Properties.UseACRComparator=K\u00E4yt\u00E4 ACR-vertailijaa (BCH:n sijaan)
+NLPSolverCommon.Properties.UseRandomStartingPoint=K\u00E4yt\u00E4 satunnaista aloituspistett\u00E4
+NLPSolverCommon.Properties.StagnationLimit=Pys\u00E4htymisraja
+NLPSolverCommon.Properties.Tolerance=Pys\u00E4htymisen sieto
+NLPSolverCommon.Properties.EnhancedSolverStatus=N\u00E4yt\u00E4 ratkaisimen tila laajasti
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Agentin vaihtoaste (DE-todenn\u00E4k\u00F6isyys)
+NLPSolverCommon.Properties.DEFactor=DE: Skaalaustekij\u00E4 (0-1,2)
+NLPSolverCommon.Properties.DECR=DE: Sekoitustodenn\u00E4k\u00F6isyys (0-1)
+NLPSolverCommon.Properties.PSC1=PS: Kognitiivinen vakio
+NLPSolverCommon.Properties.PSC2=PS: Sosiaalinen vakio
+NLPSolverCommon.Properties.PSWeight=PS: Supistumispaino
+NLPSolverCommon.Properties.PSCL=PS: Mutaatiotodenn\u00E4k\u00F6isyys (0-0,005)
diff --git a/nlpsolver/locale/NLPSolverCommon_fr.properties b/nlpsolver/locale/NLPSolverCommon_fr.properties
new file mode 100644
index 000000000000..bf26078eb52c
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_fr.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Supposer des variables non n\u00E9gatives
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Taille de la colonie
+NLPSolverCommon.Properties.LibrarySize=Taille de la biblioth\u00E8que
+NLPSolverCommon.Properties.LearningCycles=Cycles d'apprentissage
+NLPSolverCommon.Properties.GuessVariableRange=Estimation des limites de la variable
+NLPSolverCommon.Properties.VariableRangeThreshold=Seuil des limites de la variable (lors de l'estimation)
+NLPSolverCommon.Properties.UseACRComparator=Utiliser le comparateur ACR (au lieu de BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Utiliser un point de d\u00E9part al\u00E9atoire
+NLPSolverCommon.Properties.StagnationLimit=Limite de stagnation
+NLPSolverCommon.Properties.Tolerance=Tol\u00E9rance de stagnation
+NLPSolverCommon.Properties.EnhancedSolverStatus=Afficher les statuts \u00E9tendus du solveur
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Taux de changement de l'agent (probabilit\u00E9 DE)
+NLPSolverCommon.Properties.DEFactor=DE : facteur d'\u00E9chelle (0-1,2)
+NLPSolverCommon.Properties.DECR=DE: probabilit\u00E9 de croisement (0-1)
+NLPSolverCommon.Properties.PSC1=PS : constante cognitive
+NLPSolverCommon.Properties.PSC2=PS : constante sociale
+NLPSolverCommon.Properties.PSWeight=PS : coefficient de r\u00E9duction
+NLPSolverCommon.Properties.PSCL=PS : probabilit\u00E9 de mutation (0-0,005)
diff --git a/nlpsolver/locale/NLPSolverCommon_gl.properties b/nlpsolver/locale/NLPSolverCommon_gl.properties
new file mode 100644
index 000000000000..a6d386acf132
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_gl.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Asumir vari\u00E1beis como non negativas
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Tama\u00F1o da colonia
+NLPSolverCommon.Properties.LibrarySize=Tama\u00F1o da biblioteca
+NLPSolverCommon.Properties.LearningCycles=Ciclos de aprendizaxe
+NLPSolverCommon.Properties.GuessVariableRange=Estimaci\u00F3n dos l\u00EDmites das vari\u00E1beis
+NLPSolverCommon.Properties.VariableRangeThreshold=Limiar dos l\u00EDmites das vari\u00E1beis (ao estimar)
+NLPSolverCommon.Properties.UseACRComparator=Utilizar o comparador ACR (no canto do BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Utilizar punto de inicio aleatorio
+NLPSolverCommon.Properties.StagnationLimit=L\u00EDmite de estancamento
+NLPSolverCommon.Properties.Tolerance=Tolerancia de estancamento
+NLPSolverCommon.Properties.EnhancedSolverStatus=Amosar o status estendido do solver
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Taxa de alternancia do axente (probabilidade DE)
+NLPSolverCommon.Properties.DEFactor=DE: Factor de escala (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: Probabilidade de cruzamento (0 - 1)
+NLPSolverCommon.Properties.PSC1=PS: Constante cognitiva
+NLPSolverCommon.Properties.PSC2=PS: Constante social
+NLPSolverCommon.Properties.PSWeight=PS: Coeficiente de constrici\u00F3n
+NLPSolverCommon.Properties.PSCL=PS: Probabilidade de mutaci\u00F3n (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_hu.properties b/nlpsolver/locale/NLPSolverCommon_hu.properties
new file mode 100644
index 000000000000..06e38d242ece
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_hu.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Nem negat\u00EDv v\u00E1ltoz\u00F3k felt\u00E9telez\u00E9se
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Popul\u00E1ci\u00F3 m\u00E9rete
+NLPSolverCommon.Properties.LibrarySize=K\u00F6nyvt\u00E1r m\u00E9rete
+NLPSolverCommon.Properties.LearningCycles=Tanul\u00E1si ciklusok
+NLPSolverCommon.Properties.GuessVariableRange=V\u00E1ltoz\u00F3 korl\u00E1tainak kital\u00E1l\u00E1sa
+NLPSolverCommon.Properties.VariableRangeThreshold=V\u00E1ltoz\u00F3 korl\u00E1tj\u00E1nak k\u00FCsz\u00F6be (kital\u00E1l\u00E1sn\u00E1l)
+NLPSolverCommon.Properties.UseACRComparator=ACR kompar\u00E1tor haszn\u00E1lata (BCH helyett)
+NLPSolverCommon.Properties.UseRandomStartingPoint=V\u00E9letlen kezd\u0151pont haszn\u00E1lata
+NLPSolverCommon.Properties.StagnationLimit=Stagn\u00E1l\u00E1si korl\u00E1t
+NLPSolverCommon.Properties.Tolerance=Stagn\u00E1l\u00E1si t\u0171r\u00E9shat\u00E1r
+NLPSolverCommon.Properties.EnhancedSolverStatus=A Megold\u00F3 r\u00E9szletes \u00E1llapota
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Egyed v\u00E1lt\u00E1si r\u00E1t\u00E1ja (DE val\u00F3sz\u00EDn\u0171s\u00E9g)
+NLPSolverCommon.Properties.DEFactor=DE: Sk\u00E1lafaktor (0\u20131,2)
+NLPSolverCommon.Properties.DECR=DE: Keresztez\u0151d\u00E9s val\u00F3sz\u00EDn\u0171s\u00E9ge (0\u20131)
+NLPSolverCommon.Properties.PSC1=PS: Kognit\u00EDv \u00E1lland\u00F3
+NLPSolverCommon.Properties.PSC2=PS: K\u00F6z\u00F6ss\u00E9gi \u00E1lland\u00F3
+NLPSolverCommon.Properties.PSWeight=PS: \u00D6sszeh\u00FAz\u00F3d\u00E1si egy\u00FCtthat\u00F3
+NLPSolverCommon.Properties.PSCL=PS: Mut\u00E1ci\u00F3 val\u00F3sz\u00EDn\u0171s\u00E9ge (0\u20130,005)
diff --git a/nlpsolver/locale/NLPSolverCommon_it.properties b/nlpsolver/locale/NLPSolverCommon_it.properties
new file mode 100644
index 000000000000..be424e808ba6
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_it.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Presumi variabili non-negative
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Dimensione dello sciame
+NLPSolverCommon.Properties.LibrarySize=Dimensione della libreria
+NLPSolverCommon.Properties.LearningCycles=Cicli di apprendimento
+NLPSolverCommon.Properties.GuessVariableRange=Calcolo approssimato limiti variabili
+NLPSolverCommon.Properties.VariableRangeThreshold=Soglia limiti variabili (durante il calcolo approssimato)
+NLPSolverCommon.Properties.UseACRComparator=Usa comparatore ACR (anzich\u00E9 BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Usa punto di avvio casuale
+NLPSolverCommon.Properties.StagnationLimit=Limite di stagnazione
+NLPSolverCommon.Properties.Tolerance=Tolleranza di stagnazione
+NLPSolverCommon.Properties.EnhancedSolverStatus=Mostra stato del risolutore avanzato
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Agent Switch Rate (probabilit\u00E0 DE)
+NLPSolverCommon.Properties.DEFactor=DE: Fattore di scala (0-1,2)
+NLPSolverCommon.Properties.DECR=DE: Probabilit\u00E0 di attraversamento (0-1)
+NLPSolverCommon.Properties.PSC1=PS: Costante cognitiva
+NLPSolverCommon.Properties.PSC2=PS: Costante sociale
+NLPSolverCommon.Properties.PSWeight=PS: Coefficiente di costrizione
+NLPSolverCommon.Properties.PSCL=PS: Probabilit\u00E0 di mutazione (0-0,005)
diff --git a/nlpsolver/locale/NLPSolverCommon_ja.properties b/nlpsolver/locale/NLPSolverCommon_ja.properties
new file mode 100644
index 000000000000..e1dec8966fe5
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_ja.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=\u975E\u8CA0\u306E\u5909\u6570\u3092\u4EEE\u5B9A\u3059\u308B
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=\u96C6\u56E3\u306E\u30B5\u30A4\u30BA
+NLPSolverCommon.Properties.LibrarySize=\u30E9\u30A4\u30D6\u30E9\u30EA\u306E\u30B5\u30A4\u30BA
+NLPSolverCommon.Properties.LearningCycles=\u5B66\u7FD2\u5468\u671F
+NLPSolverCommon.Properties.GuessVariableRange=\u5909\u6570\u7BC4\u56F2\u306E\u63A8\u6E2C
+NLPSolverCommon.Properties.VariableRangeThreshold=(\u63A8\u6E2C\u3059\u308B\u969B\u306E)\u5909\u6570\u7BC4\u56F2\u306E\u3057\u304D\u3044\u5024
+NLPSolverCommon.Properties.UseACRComparator=(BCH \u306E\u4EE3\u308F\u308A\u306B) ACR \u6BD4\u8F03\u5B50\u3092\u4F7F\u3046
+NLPSolverCommon.Properties.UseRandomStartingPoint=\u30E9\u30F3\u30C0\u30E0\u306A\u958B\u59CB\u70B9\u3092\u4F7F\u3046
+NLPSolverCommon.Properties.StagnationLimit=\u3088\u3069\u307F\u9650\u754C
+NLPSolverCommon.Properties.Tolerance=\u3088\u3069\u307F\u8A31\u5BB9\u8AA4\u5DEE
+NLPSolverCommon.Properties.EnhancedSolverStatus=\u88DC\u6B63\u3055\u308C\u305F\u30BD\u30EB\u30D0\u30FC\u306E\u72B6\u614B\u3092\u8868\u793A
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u30B9\u30A4\u30C3\u30C1\u30EC\u30FC\u30C8(DE \u78BA\u7387)
+NLPSolverCommon.Properties.DEFactor=DE: \u30B9\u30B1\u30FC\u30EB\u4FC2\u6570 (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: \u4EA4\u5DEE\u78BA\u7387 (0-1)
+NLPSolverCommon.Properties.PSC1=PS: \u8A8D\u8B58\u5B9A\u6570
+NLPSolverCommon.Properties.PSC2=PS: \u793E\u4F1A\u5B9A\u6570
+NLPSolverCommon.Properties.PSWeight=PS: \u5727\u7E2E\u4FC2\u6570
+NLPSolverCommon.Properties.PSCL=PS: \u7A81\u7136\u5909\u7570\u78BA\u7387 (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_ko.properties b/nlpsolver/locale/NLPSolverCommon_ko.properties
new file mode 100644
index 000000000000..9caa039c19ab
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_ko.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=\uC74C\uC218\uAC00 \uC544\uB2CC \uBCC0\uC218\uB97C \uAC00\uC815
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=\uBB34\uB9AC \uD06C\uAE30
+NLPSolverCommon.Properties.LibrarySize=\uB77C\uC774\uBE0C\uB7EC\uB9AC \uD06C\uAE30
+NLPSolverCommon.Properties.LearningCycles=\uD559\uC2B5 \uC8FC\uAE30
+NLPSolverCommon.Properties.GuessVariableRange=\uBCC0\uC218 \uBC94\uC704 \uCD94\uCE21
+NLPSolverCommon.Properties.VariableRangeThreshold=\uBCC0\uC218 \uBC94\uC704 \uC784\uACC4\uAC12 (\uCD94\uCE21\uC2DC)
+NLPSolverCommon.Properties.UseACRComparator=(BCH \uB300\uC2E0) ACR \uBE44\uAD50\uC790 \uC0AC\uC6A9
+NLPSolverCommon.Properties.UseRandomStartingPoint=\uC784\uC758\uC758 \uC2DC\uC791\uC810 \uC0AC\uC6A9
+NLPSolverCommon.Properties.StagnationLimit=\uC815\uCCB4 \uD55C\uACC4
+NLPSolverCommon.Properties.Tolerance=\uC2A4\uD0DC\uADF8\uB124\uC774\uC158 \uACF5\uCC28
+NLPSolverCommon.Properties.EnhancedSolverStatus=\uD5A5\uC0C1\uB41C \uD574\uCC3E\uAE30 \uC0C1\uD0DC \uD45C\uC2DC
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=\uC5D0\uC774\uC804\uD2B8 \uC804\uD658\uB960 (DE \uD655\uB960)
+NLPSolverCommon.Properties.DEFactor=DE: \uBE44\uB840 \uC778\uC790 (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: \uAD50\uCC28 \uD655\uB960 (0-1)
+NLPSolverCommon.Properties.PSC1=PS: \uC778\uC9C0 \uC0C1\uC218
+NLPSolverCommon.Properties.PSC2=PS: \uC0AC\uD68C \uC0C1\uC218
+NLPSolverCommon.Properties.PSWeight=PS: \uC555\uCD95 \uACC4\uC218
+NLPSolverCommon.Properties.PSCL=PS: \uBCC0\uC774 \uD655\uB960 (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_nb.properties b/nlpsolver/locale/NLPSolverCommon_nb.properties
new file mode 100644
index 000000000000..3b88d95b50f8
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_nb.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Assume Non-Negative Variables
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Size of Swarm
+NLPSolverCommon.Properties.LibrarySize=Bibliotekst\u00F8rrelse
+NLPSolverCommon.Properties.LearningCycles=Learning Cycles
+NLPSolverCommon.Properties.GuessVariableRange=Variable Bounds Guessing
+NLPSolverCommon.Properties.VariableRangeThreshold=Variable Bounds Threshold (when guessing)
+NLPSolverCommon.Properties.UseACRComparator=Use ACR Comparator (instead of BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Bruk tilfeldig startpunkt
+NLPSolverCommon.Properties.StagnationLimit=Stagnasjongrense
+NLPSolverCommon.Properties.Tolerance=Stagnasjongrense
+NLPSolverCommon.Properties.EnhancedSolverStatus=Vis forbedret l\u00F8serstatus
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Agent Switch Rate (DE Probability)
+NLPSolverCommon.Properties.DEFactor=DE: Scaling Factor (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: Crossover Probability (0-1)
+NLPSolverCommon.Properties.PSC1=PS: Cognitive Constant
+NLPSolverCommon.Properties.PSC2=PS: Social Constant
+NLPSolverCommon.Properties.PSWeight=PS: Constriction Coefficient
+NLPSolverCommon.Properties.PSCL=PS: Mutation Probability (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_nl.properties b/nlpsolver/locale/NLPSolverCommon_nl.properties
new file mode 100644
index 000000000000..8288734bd08f
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_nl.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Niet negatieve variabelen aannemen
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Grootte van Swarm
+NLPSolverCommon.Properties.LibrarySize=Grootte van de bibliotheek
+NLPSolverCommon.Properties.LearningCycles=Leercurve
+NLPSolverCommon.Properties.GuessVariableRange=Variabele grenzen raden
+NLPSolverCommon.Properties.VariableRangeThreshold=Begrenzing van variabelen (bij raden)
+NLPSolverCommon.Properties.UseACRComparator=ACR-vergelijking gebruiken (in plaats van BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Willekeurig beginpunt gebruiken
+NLPSolverCommon.Properties.StagnationLimit=Stagnatielimiet
+NLPSolverCommon.Properties.Tolerance=Stagnatietolerantie
+NLPSolverCommon.Properties.EnhancedSolverStatus=Verbeterde oplosserstatus tonen
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Schakelsnelheid van agent (DE-waarschijnlijkheid)
+NLPSolverCommon.Properties.DEFactor=DE: Schaalfactor (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: Overspraakwaarschijnlijkheid (0-1)
+NLPSolverCommon.Properties.PSC1=PS: Cognitieve constante
+NLPSolverCommon.Properties.PSC2=PS: Sociale constante
+NLPSolverCommon.Properties.PSWeight=PS: Beperkingsco\u00EBfficient
+NLPSolverCommon.Properties.PSCL=PS: Mutatiewaarschijnlijkheid (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_pt_BR.properties b/nlpsolver/locale/NLPSolverCommon_pt_BR.properties
new file mode 100644
index 000000000000..4ed7ac9b6377
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_pt_BR.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Assumir vari\u00E1veis como n\u00E3o negativas
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Tamanho da col\u00F4nia
+NLPSolverCommon.Properties.LibrarySize=Tamanho da biblioteca
+NLPSolverCommon.Properties.LearningCycles=Ciclos de aprendizagem
+NLPSolverCommon.Properties.GuessVariableRange=Estimativa dos limites da vari\u00E1vel
+NLPSolverCommon.Properties.VariableRangeThreshold=Piso dos limites da vari\u00E1vel (ao estimar)
+NLPSolverCommon.Properties.UseACRComparator=Utilizar comparador ACS (no lugar de BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Utilizar ponto inicial aleat\u00F3rio
+NLPSolverCommon.Properties.StagnationLimit=Limite de estagna\u00E7\u00E3o
+NLPSolverCommon.Properties.Tolerance=Toler\u00E2ncia de estagna\u00E7\u00E3o
+NLPSolverCommon.Properties.EnhancedSolverStatus=Mostrar estado aprimorado do solver
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Taxa de altern\u00E2ncia do agente (Probabilidade DE)
+NLPSolverCommon.Properties.DEFactor=DE: Fator de escala (0 - 1,2)
+NLPSolverCommon.Properties.DECR=DE: Probabilidade de crossover (0 - 1)
+NLPSolverCommon.Properties.PSC1=PS: Constante congnitiva
+NLPSolverCommon.Properties.PSC2=PF: Constante social
+NLPSolverCommon.Properties.PSWeight=PS: Coeficiente de constri\u00E7\u00E3o
+NLPSolverCommon.Properties.PSCL=PS: Probabilidade de muta\u00E7\u00E3o (0 - 0,005)
diff --git a/nlpsolver/locale/NLPSolverCommon_ro.properties b/nlpsolver/locale/NLPSolverCommon_ro.properties
new file mode 100644
index 000000000000..32bfe68822c0
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_ro.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Presupune variabile non negative
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=M\u0103rimea coloniei
+NLPSolverCommon.Properties.LibrarySize=M\u0103rimea bibliotecii
+NLPSolverCommon.Properties.LearningCycles=Cicli de \u00EEnv\u0103\u021Bare
+NLPSolverCommon.Properties.GuessVariableRange=Estimarea limitelor variabilei
+NLPSolverCommon.Properties.VariableRangeThreshold=Pragul limitelor variabilei (la estimare)
+NLPSolverCommon.Properties.UseACRComparator=Utilizeaz\u0103 comparatorul ACR (\u00EEn locul lui BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Utilizeaz\u0103 un punct de pornire aleator
+NLPSolverCommon.Properties.StagnationLimit=Limit\u0103 de stagnare
+NLPSolverCommon.Properties.Tolerance=Toleran\u021B\u0103 de stagnare
+NLPSolverCommon.Properties.EnhancedSolverStatus=Afi\u0219eaz\u0103 starea extins\u0103 a rezolvatorului
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Rata de schimbare a agentului (probabilitate DE)
+NLPSolverCommon.Properties.DEFactor=DE: factor de scalare (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: probabilitate de jonc\u021Biune (0-1)
+NLPSolverCommon.Properties.PSC1=PS: constant\u0103 cognitiv\u0103
+NLPSolverCommon.Properties.PSC2=PS: constant\u0103 social\u0103
+NLPSolverCommon.Properties.PSWeight=PS: coeficient de constric\u021Bie
+NLPSolverCommon.Properties.PSCL=PS: probabilitate de mutare (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_ru.properties b/nlpsolver/locale/NLPSolverCommon_ru.properties
new file mode 100644
index 000000000000..c240fed75797
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_ru.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=\u041F\u0440\u0438\u043D\u044F\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435 \u043A\u0430\u043A \u043D\u0435\u043E\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0435
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=\u0420\u0430\u0437\u043C\u0435\u0440 \u0440\u043E\u044F
+NLPSolverCommon.Properties.LibrarySize=\u0420\u0430\u0437\u043C\u0435\u0440 \u0431\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0438
+NLPSolverCommon.Properties.LearningCycles=\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439
+NLPSolverCommon.Properties.GuessVariableRange=\u041E\u0446\u0435\u043D\u043A\u0430 \u0433\u0440\u0430\u043D\u0438\u0446 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445
+NLPSolverCommon.Properties.VariableRangeThreshold=\u041F\u043E\u0440\u043E\u0433 \u0433\u0440\u0430\u043D\u0438\u0446 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445 (\u043F\u0440\u0438 \u043E\u0446\u0435\u043D\u043A\u0435)
+NLPSolverCommon.Properties.UseACRComparator=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u0435 ACR (\u0432\u043C\u0435\u0441\u0442\u043E BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0441\u043B\u0443\u0447\u0430\u0439\u043D\u0443\u044E \u043E\u0442\u043F\u0440\u0430\u0432\u043D\u0443\u044E \u0442\u043E\u0447\u043A\u0443
+NLPSolverCommon.Properties.StagnationLimit=\u041F\u0440\u0435\u0434\u0435\u043B \u0441\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438
+NLPSolverCommon.Properties.Tolerance=\u0414\u043E\u043F\u0443\u0441\u043A \u0441\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438
+NLPSolverCommon.Properties.EnhancedSolverStatus=\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u043E\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=\u0423\u0440\u043E\u0432\u0435\u043D\u044C \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0430\u0433\u0435\u043D\u0442\u0430 (DE \u0432\u0435\u0440\u043E\u044F\u0442\u043D\u043E\u0441\u0442\u044C)
+NLPSolverCommon.Properties.DEFactor=DE: \u041A\u043E\u044D\u0444\u0444\u0438\u0446\u0438\u0435\u043D\u0442 \u043C\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: \u0412\u0435\u0440\u043E\u044F\u0442\u043D\u043E\u0441\u0442\u044C \u043F\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043D\u0438\u044F (0-1)
+NLPSolverCommon.Properties.PSC1=PS: \u041A\u043E\u043D\u0433\u0438\u0442\u0438\u0432\u043D\u0430\u044F \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u0430
+NLPSolverCommon.Properties.PSC2=PS: \u0421\u043E\u0446\u0438\u0430\u043B\u044C\u043D\u0430\u044F \u043A\u043E\u043D\u0441\u0442\u0430\u043D\u0442\u0430
+NLPSolverCommon.Properties.PSWeight=PS: \u041A\u043E\u044D\u0444\u0444\u0438\u0446\u0438\u0435\u043D\u0442 \u0441\u0436\u0430\u0442\u0438\u044F
+NLPSolverCommon.Properties.PSCL=PS: \u0412\u0435\u0440\u043E\u044F\u0442\u043D\u043E\u0441\u0442\u044C \u043C\u0443\u0442\u0430\u0446\u0438\u0438 (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_sk.properties b/nlpsolver/locale/NLPSolverCommon_sk.properties
new file mode 100644
index 000000000000..11c987bed470
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_sk.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Predpoklada\u0165 nez\u00E1porn\u00E9 premenn\u00E9
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Ve\u013Ekos\u0165 roja
+NLPSolverCommon.Properties.LibrarySize=Ve\u013Ekos\u0165 kni\u017Enice
+NLPSolverCommon.Properties.LearningCycles=Cykly u\u010Denia
+NLPSolverCommon.Properties.GuessVariableRange=Odhadn\u00FA\u0165 ohrani\u010Denie premenn\u00FDch
+NLPSolverCommon.Properties.VariableRangeThreshold=Prahov\u00E1 hodnota ohrani\u010Denia premenn\u00FDch (pri odhade)
+NLPSolverCommon.Properties.UseACRComparator=Pou\u017Ei\u0165 kompar\u00E1tor ACR (namiesto BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Pou\u017Ei\u0165 n\u00E1hodn\u00FD \u0161tartovac\u00ED bod
+NLPSolverCommon.Properties.StagnationLimit=Hranica stagn\u00E1cie
+NLPSolverCommon.Properties.Tolerance=Tolerancia stagn\u00E1cie
+NLPSolverCommon.Properties.EnhancedSolverStatus=Uk\u00E1za\u0165 roz\u0161\u00EDren\u00FD status rie\u0161i\u010Da
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Agent Switch Rate (DE Probability)
+NLPSolverCommon.Properties.DEFactor=DE: Scaling Factor (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: Crossover Probability (0-1)
+NLPSolverCommon.Properties.PSC1=PS: Cognitive Constant
+NLPSolverCommon.Properties.PSC2=PS: Social Constant
+NLPSolverCommon.Properties.PSWeight=PS: koeficient stla\u010Denia
+NLPSolverCommon.Properties.PSCL=PS: Mutation Probability (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_sl.properties b/nlpsolver/locale/NLPSolverCommon_sl.properties
new file mode 100644
index 000000000000..8ef157c09c1a
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_sl.properties
@@ -0,0 +1,24 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Domnevaj nenegativne spremenljivke
+
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Velikost roja
+NLPSolverCommon.Properties.LibrarySize=Velikost knji\u017Enice
+NLPSolverCommon.Properties.LearningCycles=U\u010Dni cikli
+NLPSolverCommon.Properties.GuessVariableRange=Uganjevanje meja spremenljivk
+NLPSolverCommon.Properties.VariableRangeThreshold=Prag meja spremenljivk (pri uganjevanju)
+NLPSolverCommon.Properties.UseACRComparator=Uporabi primerjalnik ACR (namesto BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Uporabi naklju\u010Dno za\u010Detno to\u010Dko
+NLPSolverCommon.Properties.StagnationLimit=Meja stagnacije
+NLPSolverCommon.Properties.Tolerance=Toleranca stagnacije
+NLPSolverCommon.Properties.EnhancedSolverStatus=Poka\u017Ei podrobnej\u0161e stanje Re\u0161evalca
+
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Hitrost preklopa agenta (verjetnost DE)
+NLPSolverCommon.Properties.DEFactor=DE: faktor spremembe merila (0-1,2)
+NLPSolverCommon.Properties.DECR=DE: verjetnost prehajanja (0-1)
+NLPSolverCommon.Properties.PSC1=PS: kognitivna konstanta
+NLPSolverCommon.Properties.PSC2=PS: socialna konstanta
+NLPSolverCommon.Properties.PSWeight=PS: koeficient kr\u010Denja
+NLPSolverCommon.Properties.PSCL=PS: verjetnost mutacije (0-0,005)
diff --git a/nlpsolver/locale/NLPSolverCommon_tr.properties b/nlpsolver/locale/NLPSolverCommon_tr.properties
new file mode 100644
index 000000000000..87d2929d4f0f
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_tr.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=Negatif olmayan De\u011Fi\u015Fkenleri Varsay
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Y\u0131\u011F\u0131n\u0131n Boyutu
+NLPSolverCommon.Properties.LibrarySize=K\u00FCt\u00FCphanenin Boyutu
+NLPSolverCommon.Properties.LearningCycles=\u00D6\u011Frenme Evreleri
+NLPSolverCommon.Properties.GuessVariableRange=De\u011Fi\u015Fken \u00D6l\u00E7\u00FCs\u00FC Tahmini
+NLPSolverCommon.Properties.VariableRangeThreshold=De\u011Fi\u015Fken \u00D6l\u00E7\u00FCs\u00FC S\u0131n\u0131r\u0131 (tahmin ediyorken)
+NLPSolverCommon.Properties.UseACRComparator=ACR Kar\u015F\u0131la\u015Ft\u0131r\u0131c\u0131s\u0131n\u0131 kullan (BCH'nin yerine)
+NLPSolverCommon.Properties.UseRandomStartingPoint=Rasgele ba\u015Flama noktas\u0131 kullan
+NLPSolverCommon.Properties.StagnationLimit=Durgunluk S\u0131n\u0131r\u0131
+NLPSolverCommon.Properties.Tolerance=Durgunluk Tolerans\u0131
+NLPSolverCommon.Properties.EnhancedSolverStatus=Geli\u015Ftirilmi\u015F \u00E7\u00F6z\u00FCc\u00FC durumunu g\u00F6ster
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=Arac\u0131 Ge\u00E7i\u015F Oran\u0131 (DE Olas\u0131l\u0131\u011F\u0131)
+NLPSolverCommon.Properties.DEFactor=DE: \u00D6l\u00E7\u00FCleme Fakt\u00F6r\u00FC (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: A\u015Fma Olas\u0131l\u0131\u011F\u0131 (0-1)
+NLPSolverCommon.Properties.PSC1=PS: Bili\u015Fsel Sabit
+NLPSolverCommon.Properties.PSC2=PS: Sosyal Sabit
+NLPSolverCommon.Properties.PSWeight=PS: \u0130n\u015Fa Fakt\u00F6r\u00FC
+NLPSolverCommon.Properties.PSCL=PS: T\u00FCrde\u011Fi\u015Fim Olas\u0131l\u0131\u011F\u0131 (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_zh_CN.properties b/nlpsolver/locale/NLPSolverCommon_zh_CN.properties
new file mode 100644
index 000000000000..c2eb6f12e9ed
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_zh_CN.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=\u5047\u5B9A\u975E\u8D1F\u53D8\u91CF
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=Swam \u5C3A\u5BF8
+NLPSolverCommon.Properties.LibrarySize=\u5E93\u5C3A\u5BF8
+NLPSolverCommon.Properties.LearningCycles=\u5B66\u4E60\u5468\u671F
+NLPSolverCommon.Properties.GuessVariableRange=\u53D8\u91CF\u8FB9\u754C\u63A8\u6D4B
+NLPSolverCommon.Properties.VariableRangeThreshold=\u53D8\u91CF\u8FB9\u754C\u4E34\u754C (\u63A8\u6D4B\u65F6)
+NLPSolverCommon.Properties.UseACRComparator=\u4F7F\u7528 ACR \u6BD4\u8F83\u5668 (\u66FF\u4EE3 BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=\u4F7F\u7528\u968F\u673A\u8D77\u59CB\u70B9
+NLPSolverCommon.Properties.StagnationLimit=\u505C\u6EDE\u9650\u5236
+NLPSolverCommon.Properties.Tolerance=\u505C\u6EDE\u5BB9\u9650
+NLPSolverCommon.Properties.EnhancedSolverStatus=\u663E\u793A\u589E\u5F3A\u6C42\u89E3\u5668\u72B6\u6001
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=\u4EE3\u7406\u5207\u6362\u901F\u7387 (DE \u7387)
+NLPSolverCommon.Properties.DEFactor=DE: \u6BD4\u4F8B\u7CFB\u6570 (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: \u4EA4\u914D\u7387 (0-1)
+NLPSolverCommon.Properties.PSC1=PS: \u8BA4\u77E5\u5E38\u91CF
+NLPSolverCommon.Properties.PSC2=PS: \u793E\u4F1A\u5E38\u91CF
+NLPSolverCommon.Properties.PSWeight=PS: \u6536\u7F29\u7CFB\u6570
+NLPSolverCommon.Properties.PSCL=PS: \u7A81\u53D8\u7387 (0-0.005)
diff --git a/nlpsolver/locale/NLPSolverCommon_zh_TW.properties b/nlpsolver/locale/NLPSolverCommon_zh_TW.properties
new file mode 100644
index 000000000000..6001cca739a9
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverCommon_zh_TW.properties
@@ -0,0 +1,22 @@
+# x-no-translate
+#BaseNLPSolver
+NLPSolverCommon.Properties.AssumeNonNegative=\u5047\u8A2D\u975E\u8CA0\u503C\u8B8A\u6578
+#BaseEvolutionarySolver
+NLPSolverCommon.Properties.SwarmSize=\u7FA4\u5927\u5C0F
+NLPSolverCommon.Properties.LibrarySize=\u7A0B\u5F0F\u5EAB\u5927\u5C0F
+NLPSolverCommon.Properties.LearningCycles=\u5B78\u7FD2\u9031\u671F
+NLPSolverCommon.Properties.GuessVariableRange=\u8B8A\u6578\u7BC4\u570D\u731C\u6E2C
+NLPSolverCommon.Properties.VariableRangeThreshold=\u8B8A\u6578\u7BC4\u570D\u95BE\u503C (\u731C\u6E2C\u6642)
+NLPSolverCommon.Properties.UseACRComparator=\u4F7F\u7528 ACR \u6BD4\u8F03\u5B50 (\u66FF\u4EE3BCH)
+NLPSolverCommon.Properties.UseRandomStartingPoint=\u4F7F\u7528\u96A8\u6A5F\u8D77\u9EDE
+NLPSolverCommon.Properties.StagnationLimit=\u505C\u6EEF\u9650\u5236
+NLPSolverCommon.Properties.Tolerance=\u505C\u6EEF\u5BB9\u9650
+NLPSolverCommon.Properties.EnhancedSolverStatus=\u986F\u793A\u589E\u5F37\u89E3\u6C7A\u7A0B\u5F0F\u72C0\u614B
+#DEPS
+NLPSolverCommon.Properties.AgentSwitchRate=\u4EE3\u7406\u5207\u63DB\u901F\u7387 (DE \u6982\u7387)
+NLPSolverCommon.Properties.DEFactor=DE: \u6BD4\u4F8B\u7E2E\u653E\u4FC2\u6578 (0-1.2)
+NLPSolverCommon.Properties.DECR=DE: \u4EA4\u914D\u7387 (0-1)
+NLPSolverCommon.Properties.PSC1=PS: \u8A8D\u77E5\u5E38\u6578
+NLPSolverCommon.Properties.PSC2=PS: \u793E\u6703\u5E38\u6578
+NLPSolverCommon.Properties.PSWeight=PS: \u6536\u7E2E\u4FC2\u6578
+NLPSolverCommon.Properties.PSCL=PS: \u7A81\u8B8A\u6982\u7387
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_ast.properties b/nlpsolver/locale/NLPSolverStatusDialog_ast.properties
new file mode 100644
index 000000000000..7134369cd7a7
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_ast.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Est\u00E1u del resolvedor
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Soluci\u00F3n actual:
+NLPSolverStatusDialog.Controls.lblIteration=Iteraci\u00F3n:
+NLPSolverStatusDialog.Controls.lblStagnation=Estancamientu:
+NLPSolverStatusDialog.Controls.lblRuntime=Tiempu d'execuci\u00F3n:
+NLPSolverStatusDialog.Controls.btnStop=Aparar
+NLPSolverStatusDialog.Controls.btnOK=Aceutar
+NLPSolverStatusDialog.Controls.btnContinue=Siguir
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=S'alcanzaron les repeticiones m\u00E1ximes.
+NLPSolverStatusDialog.Message.StopStagnation=Procesu par\u00E1u por estancamientu.
+NLPSolverStatusDialog.Message.StopUser=Procesu par\u00E1u por aciu d'interrupci\u00F3n del usuariu.
+NLPSolverStatusDialog.Message.CurrentIteration=Procesu par\u00E1u na iteraci\u00F3n %d de %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanosegundos
+NLPSolverStatusDialog.Time.Microseconds=Microsegundos
+NLPSolverStatusDialog.Time.Milliseconds=Milisegundos
+NLPSolverStatusDialog.Time.Second=Segundu
+NLPSolverStatusDialog.Time.Seconds=Segundos
+NLPSolverStatusDialog.Time.Minute=Minutu
+NLPSolverStatusDialog.Time.Minutes=Minutos
+NLPSolverStatusDialog.Time.Hour=Hora
+NLPSolverStatusDialog.Time.Hours=Hores
+NLPSolverStatusDialog.Time.Day=D\u00EDa
+NLPSolverStatusDialog.Time.Days=D\u00EDes
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_ca.properties b/nlpsolver/locale/NLPSolverStatusDialog_ca.properties
new file mode 100644
index 000000000000..11f653c9b7d6
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_ca.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Estat del solucionador
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Soluci\u00F3 actual:
+NLPSolverStatusDialog.Controls.lblIteration=Iteraci\u00F3:
+NLPSolverStatusDialog.Controls.lblStagnation=Estagnaci\u00F3:
+NLPSolverStatusDialog.Controls.lblRuntime=Temps d'execuci\u00F3:
+NLPSolverStatusDialog.Controls.btnStop=Para
+NLPSolverStatusDialog.Controls.btnOK=D'acord
+NLPSolverStatusDialog.Controls.btnContinue=Continua
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=S'ha assolit el nombre m\u00E0xim d'iteracions.
+NLPSolverStatusDialog.Message.StopStagnation=El proc\u00E9s ha finalitzat a causa de l'estagnaci\u00F3.
+NLPSolverStatusDialog.Message.StopUser=El proc\u00E9s ha finalitzat a causa d'una interrupci\u00F3 de l'usuari.
+NLPSolverStatusDialog.Message.CurrentIteration=El proc\u00E9s ha finalitzat a la iteraci\u00F3 %d de %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanosegons
+NLPSolverStatusDialog.Time.Microseconds=Microsegons
+NLPSolverStatusDialog.Time.Milliseconds=Mil\u00B7lisegons
+NLPSolverStatusDialog.Time.Second=Segon
+NLPSolverStatusDialog.Time.Seconds=Segons
+NLPSolverStatusDialog.Time.Minute=Minut
+NLPSolverStatusDialog.Time.Minutes=Minuts
+NLPSolverStatusDialog.Time.Hour=Hora
+NLPSolverStatusDialog.Time.Hours=Hores
+NLPSolverStatusDialog.Time.Day=Dia
+NLPSolverStatusDialog.Time.Days=Dies
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_de.properties b/nlpsolver/locale/NLPSolverStatusDialog_de.properties
new file mode 100644
index 000000000000..ed263cd480e2
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_de.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Solverstatus
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Aktuelle L\u00F6sung:
+NLPSolverStatusDialog.Controls.lblIteration=Wiederholungen:
+NLPSolverStatusDialog.Controls.lblStagnation=Stagnation:
+NLPSolverStatusDialog.Controls.lblRuntime=Laufzeit:
+NLPSolverStatusDialog.Controls.btnStop=Unterbechen
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Fortsetzen
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Maximale Anzahl Iterationen erreicht.
+NLPSolverStatusDialog.Message.StopStagnation=Prozess durch Stagnation beendet.
+NLPSolverStatusDialog.Message.StopUser=Prozess durch Benutzer unterbrochen.
+NLPSolverStatusDialog.Message.CurrentIteration=Prozess bei Iteration %d von %d angehalten.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanosekunden
+NLPSolverStatusDialog.Time.Microseconds=Mikrosekunden
+NLPSolverStatusDialog.Time.Milliseconds=Millisekunden
+NLPSolverStatusDialog.Time.Second=Sekunde
+NLPSolverStatusDialog.Time.Seconds=Sekunden
+NLPSolverStatusDialog.Time.Minute=Minute
+NLPSolverStatusDialog.Time.Minutes=Minuten
+NLPSolverStatusDialog.Time.Hour=Stunde
+NLPSolverStatusDialog.Time.Hours=Stunden
+NLPSolverStatusDialog.Time.Day=Tag
+NLPSolverStatusDialog.Time.Days=Tage
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_en_GB.properties b/nlpsolver/locale/NLPSolverStatusDialog_en_GB.properties
new file mode 100644
index 000000000000..45edc4e4acec
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_en_GB.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Solver Status
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Current Solution:
+NLPSolverStatusDialog.Controls.lblIteration=Iteration:
+NLPSolverStatusDialog.Controls.lblStagnation=Stagnation:
+NLPSolverStatusDialog.Controls.lblRuntime=Run-time:
+NLPSolverStatusDialog.Controls.btnStop=Stop
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Continue
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Maximum iterations reached.
+NLPSolverStatusDialog.Message.StopStagnation=Process stopped due to stagnation.
+NLPSolverStatusDialog.Message.StopUser=Process stopped due to user interruption.
+NLPSolverStatusDialog.Message.CurrentIteration=Process stopped at iteration %d of %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanoseconds
+NLPSolverStatusDialog.Time.Microseconds=Microseconds
+NLPSolverStatusDialog.Time.Milliseconds=Milliseconds
+NLPSolverStatusDialog.Time.Second=Second
+NLPSolverStatusDialog.Time.Seconds=Seconds
+NLPSolverStatusDialog.Time.Minute=Minute
+NLPSolverStatusDialog.Time.Minutes=Minutes
+NLPSolverStatusDialog.Time.Hour=Hour
+NLPSolverStatusDialog.Time.Hours=Hours
+NLPSolverStatusDialog.Time.Day=Day
+NLPSolverStatusDialog.Time.Days=Days
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_es.properties b/nlpsolver/locale/NLPSolverStatusDialog_es.properties
new file mode 100644
index 000000000000..321af5257787
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_es.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Estado del solucionador
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Soluci\u00F3n actual:
+NLPSolverStatusDialog.Controls.lblIteration=Iteraci\u00F3n:
+NLPSolverStatusDialog.Controls.lblStagnation=Estancamiento:
+NLPSolverStatusDialog.Controls.lblRuntime=Tiempo de ejecuci\u00F3n:
+NLPSolverStatusDialog.Controls.btnStop=Detener
+NLPSolverStatusDialog.Controls.btnOK=Aceptar
+NLPSolverStatusDialog.Controls.btnContinue=Continuar
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Se alcanz\u00F3 la cantidad m\u00E1xima de iteraciones.
+NLPSolverStatusDialog.Message.StopStagnation=El proceso se detuvo debido al estancamiento.
+NLPSolverStatusDialog.Message.StopUser=El proceso se detuvo debido a la interrupci\u00F3n del usuario.
+NLPSolverStatusDialog.Message.CurrentIteration=El proceso se detuvo en la iteraci\u00F3n %d de %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanosegundos
+NLPSolverStatusDialog.Time.Microseconds=Microsegundos
+NLPSolverStatusDialog.Time.Milliseconds=Milisegundos
+NLPSolverStatusDialog.Time.Second=Segundo
+NLPSolverStatusDialog.Time.Seconds=Segundos
+NLPSolverStatusDialog.Time.Minute=Minuto
+NLPSolverStatusDialog.Time.Minutes=Minutos
+NLPSolverStatusDialog.Time.Hour=Hora
+NLPSolverStatusDialog.Time.Hours=Horas
+NLPSolverStatusDialog.Time.Day=D\u00EDa
+NLPSolverStatusDialog.Time.Days=D\u00EDas
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_et.properties b/nlpsolver/locale/NLPSolverStatusDialog_et.properties
new file mode 100644
index 000000000000..ffc1e7a1abb3
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_et.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Lahendaja olek
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Praegune lahendus:
+NLPSolverStatusDialog.Controls.lblIteration=Iteratsioon:
+NLPSolverStatusDialog.Controls.lblStagnation=Seisak:
+NLPSolverStatusDialog.Controls.lblRuntime=T\u00F6\u00F6 kestus:
+NLPSolverStatusDialog.Controls.btnStop=Peata
+NLPSolverStatusDialog.Controls.btnOK=Sobib
+NLPSolverStatusDialog.Controls.btnContinue=J\u00E4tka
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Saavutati iteratsioonide maksimaalne arv.
+NLPSolverStatusDialog.Message.StopStagnation=Protsess peatati seisaku t\u00F5ttu.
+NLPSolverStatusDialog.Message.StopUser=Kasutaja katkestas protsessi.
+NLPSolverStatusDialog.Message.CurrentIteration=Protsess peatati %d. iteratsioonil %d-st.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=nanosekundit
+NLPSolverStatusDialog.Time.Microseconds=mikrosekundit
+NLPSolverStatusDialog.Time.Milliseconds=millisekundit
+NLPSolverStatusDialog.Time.Second=sekund
+NLPSolverStatusDialog.Time.Seconds=sekundit
+NLPSolverStatusDialog.Time.Minute=minut
+NLPSolverStatusDialog.Time.Minutes=minutit
+NLPSolverStatusDialog.Time.Hour=tund
+NLPSolverStatusDialog.Time.Hours=tundi
+NLPSolverStatusDialog.Time.Day=p\u00E4ev
+NLPSolverStatusDialog.Time.Days=p\u00E4eva
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_fa.properties b/nlpsolver/locale/NLPSolverStatusDialog_fa.properties
new file mode 100644
index 000000000000..c59745ff1a6d
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_fa.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=\u0648\u0636\u0639\u06CC\u062A \u062D\u0644\u200C\u06A9\u0646\u0646\u062F\u0647
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=\u0631\u0627\u0647 \u062D\u0644 \u06A9\u0646\u0648\u0646\u06CC:
+NLPSolverStatusDialog.Controls.lblIteration=\u062A\u06A9\u0631\u0627\u0631:
+NLPSolverStatusDialog.Controls.lblStagnation=\u0631\u06A9\u0648\u062F:
+NLPSolverStatusDialog.Controls.lblRuntime=\u0632\u0645\u0627\u0646 \u0627\u062C\u0631\u0627:
+NLPSolverStatusDialog.Controls.btnStop=\u062A\u0648\u0642\u0641
+NLPSolverStatusDialog.Controls.btnOK=\u062A\u0623\u06CC\u06CC\u062F
+NLPSolverStatusDialog.Controls.btnContinue=\u0627\u062F\u0627\u0645\u0647
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=\u062D\u062F\u0627\u06A9\u062B\u0631 \u062A\u06A9\u0631\u0627\u0631\u0647\u0627 \u062D\u0627\u0635\u0644 \u0634\u062F\u0647 \u0627\u0633\u062A.
+NLPSolverStatusDialog.Message.StopStagnation=\u067E\u0631\u062F\u0627\u0632\u0634 \u0628\u0647\u200C\u0639\u0644\u062A \u0631\u06A9\u0648\u062F \u0645\u062A\u0648\u0642\u0641 \u0634\u062F.
+NLPSolverStatusDialog.Message.StopUser=\u067E\u0631\u062F\u0627\u0632\u0634 \u0628\u0647\u200C\u0639\u0644\u062A \u0642\u0637\u0639 \u062A\u0648\u0633\u0637 \u06A9\u0627\u0631\u0628\u0631 \u0645\u062A\u0648\u0642\u0641 \u0634\u062F.
+NLPSolverStatusDialog.Message.CurrentIteration=\u067E\u0631\u062F\u0627\u0632\u0634 \u062F\u0631 \u062A\u06A9\u0631\u0627\u0631 %d \u0627\u0632 %d \u0645\u062A\u0648\u0642\u0641 \u0634\u062F.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=\u0646\u0627\u0646\u0648\u062B\u0627\u0646\u06CC\u0647
+NLPSolverStatusDialog.Time.Microseconds=\u0645\u06CC\u06A9\u0631\u0648\u062B\u0627\u0646\u06CC\u0647
+NLPSolverStatusDialog.Time.Milliseconds=\u0645\u06CC\u0644\u06CC\u200C\u200E\u062B\u0627\u0646\u06CC\u0647
+NLPSolverStatusDialog.Time.Second=\u062B\u0627\u0646\u06CC\u0647
+NLPSolverStatusDialog.Time.Seconds=\u062B\u0627\u0646\u06CC\u0647\u200C\u0647\u0627
+NLPSolverStatusDialog.Time.Minute=\u062F\u0642\u06CC\u0642\u0647
+NLPSolverStatusDialog.Time.Minutes=\u062F\u0642\u0627\u06CC\u0642
+NLPSolverStatusDialog.Time.Hour=\u0633\u0627\u0639\u062A
+NLPSolverStatusDialog.Time.Hours=\u0633\u0627\u0639\u062A\u200C\u0647\u0627
+NLPSolverStatusDialog.Time.Day=\u0631\u0648\u0632
+NLPSolverStatusDialog.Time.Days=\u0631\u0648\u0632\u200C\u0647\u0627
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_fi.properties b/nlpsolver/locale/NLPSolverStatusDialog_fi.properties
new file mode 100644
index 000000000000..90945e372f2d
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_fi.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Ratkaisimen tila
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Nykyinen ratkaisu:
+NLPSolverStatusDialog.Controls.lblIteration=Iteraatio:
+NLPSolverStatusDialog.Controls.lblStagnation=Pys\u00E4htyneisyys:
+NLPSolverStatusDialog.Controls.lblRuntime=Ajoaika:
+NLPSolverStatusDialog.Controls.btnStop=Pys\u00E4yt\u00E4
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Jatka
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Maksimim\u00E4\u00E4r\u00E4 iteraatioita tehty.
+NLPSolverStatusDialog.Message.StopStagnation=Pys\u00E4htyneisyys pys\u00E4ytti prosessin.
+NLPSolverStatusDialog.Message.StopUser=K\u00E4ytt\u00E4j\u00E4n keskeytys pys\u00E4ytti prosessin.
+NLPSolverStatusDialog.Message.CurrentIteration=Prosessi pys\u00E4htynyt iteraatiossa %d/%d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=nanosekuntia
+NLPSolverStatusDialog.Time.Microseconds=mikrosekuntia
+NLPSolverStatusDialog.Time.Milliseconds=millisekuntia
+NLPSolverStatusDialog.Time.Second=sekunti
+NLPSolverStatusDialog.Time.Seconds=sekuntia
+NLPSolverStatusDialog.Time.Minute=minuutti
+NLPSolverStatusDialog.Time.Minutes=minuuttia
+NLPSolverStatusDialog.Time.Hour=tunti
+NLPSolverStatusDialog.Time.Hours=tuntia
+NLPSolverStatusDialog.Time.Day=p\u00E4iv\u00E4
+NLPSolverStatusDialog.Time.Days=p\u00E4iv\u00E4\u00E4
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_fr.properties b/nlpsolver/locale/NLPSolverStatusDialog_fr.properties
new file mode 100644
index 000000000000..bdd7028fbb3b
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_fr.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=\u00C9tat du solveur
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Solution actuelle :
+NLPSolverStatusDialog.Controls.lblIteration=It\u00E9ration :
+NLPSolverStatusDialog.Controls.lblStagnation=Stagnation :
+NLPSolverStatusDialog.Controls.lblRuntime=Dur\u00E9e d'ex\u00E9cution :
+NLPSolverStatusDialog.Controls.btnStop=Arr\u00EAter
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Continuer
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Maximum d'it\u00E9rations atteint.
+NLPSolverStatusDialog.Message.StopStagnation=Processus arr\u00EAt\u00E9 en raison de la stagnation.
+NLPSolverStatusDialog.Message.StopUser=Processus arr\u00EAt\u00E9 en raison de l'interruption par l'utilisateur.
+NLPSolverStatusDialog.Message.CurrentIteration=Processus arr\u00EAt\u00E9 \u00E0 l'it\u00E9ration %d de %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanosecondes
+NLPSolverStatusDialog.Time.Microseconds=Microsecondes
+NLPSolverStatusDialog.Time.Milliseconds=Millisecondes
+NLPSolverStatusDialog.Time.Second=Seconde
+NLPSolverStatusDialog.Time.Seconds=Secondes
+NLPSolverStatusDialog.Time.Minute=Minute
+NLPSolverStatusDialog.Time.Minutes=Minutes
+NLPSolverStatusDialog.Time.Hour=Heure
+NLPSolverStatusDialog.Time.Hours=Heures
+NLPSolverStatusDialog.Time.Day=Jour
+NLPSolverStatusDialog.Time.Days=Jours
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_gl.properties b/nlpsolver/locale/NLPSolverStatusDialog_gl.properties
new file mode 100644
index 000000000000..aad6987722b4
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_gl.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Status do solver
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Soluci\u00F3n actual:
+NLPSolverStatusDialog.Controls.lblIteration=Iteraci\u00F3n:
+NLPSolverStatusDialog.Controls.lblStagnation=Estancamento:
+NLPSolverStatusDialog.Controls.lblRuntime=Tempo de execuci\u00F3n:
+NLPSolverStatusDialog.Controls.btnStop=Alto
+NLPSolverStatusDialog.Controls.btnOK=Aceptar
+NLPSolverStatusDialog.Controls.btnContinue=Continuar
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Acadouse o n\u00FAmero m\u00E1ximo de iteraci\u00F3ns.
+NLPSolverStatusDialog.Message.StopStagnation=O proceso det\u00EDvose debido a estancamento
+NLPSolverStatusDialog.Message.StopUser=O proceso det\u00EDvose debido \u00E1 interrupci\u00F3n do usuario.
+NLPSolverStatusDialog.Message.CurrentIteration=O proceso det\u00EDvose na iteraci\u00F3n %d de %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanosegundos
+NLPSolverStatusDialog.Time.Microseconds=Microsegundos
+NLPSolverStatusDialog.Time.Milliseconds=Milisegundos
+NLPSolverStatusDialog.Time.Second=Segundo
+NLPSolverStatusDialog.Time.Seconds=Segundos
+NLPSolverStatusDialog.Time.Minute=Minuto
+NLPSolverStatusDialog.Time.Minutes=Minutos
+NLPSolverStatusDialog.Time.Hour=Hora
+NLPSolverStatusDialog.Time.Hours=Horas
+NLPSolverStatusDialog.Time.Day=D\u00EDa
+NLPSolverStatusDialog.Time.Days=D\u00EDas
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_hu.properties b/nlpsolver/locale/NLPSolverStatusDialog_hu.properties
new file mode 100644
index 000000000000..b2584b0a817d
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_hu.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=A Megold\u00F3 \u00E1llapota
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Jelenlegi megold\u00E1s:
+NLPSolverStatusDialog.Controls.lblIteration=Iter\u00E1ci\u00F3:
+NLPSolverStatusDialog.Controls.lblStagnation=Stagn\u00E1l\u00E1s:
+NLPSolverStatusDialog.Controls.lblRuntime=Fut\u00E1sid\u0151:
+NLPSolverStatusDialog.Controls.btnStop=Le\u00E1ll\u00EDt\u00E1s
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Folytat\u00E1s
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=El\u00E9rte a max. iter\u00E1ci\u00F3s l\u00E9p\u00E9st.
+NLPSolverStatusDialog.Message.StopStagnation=A folyamat le\u00E1llt, mert stagn\u00E1l.
+NLPSolverStatusDialog.Message.StopUser=A folyamat le\u00E1llt, mert a felhaszn\u00E1l\u00F3 megszak\u00EDtotta.
+NLPSolverStatusDialog.Message.CurrentIteration=A folyamat le\u00E1llt a(z) %d. / %d iter\u00E1ci\u00F3n\u00E1l.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=nanoszekundum
+NLPSolverStatusDialog.Time.Microseconds=mikroszekundum
+NLPSolverStatusDialog.Time.Milliseconds=ezredm\u00E1sodperc
+NLPSolverStatusDialog.Time.Second=m\u00E1sodperc
+NLPSolverStatusDialog.Time.Seconds=m\u00E1sodperc
+NLPSolverStatusDialog.Time.Minute=perc
+NLPSolverStatusDialog.Time.Minutes=perc
+NLPSolverStatusDialog.Time.Hour=\u00F3ra
+NLPSolverStatusDialog.Time.Hours=\u00F3ra
+NLPSolverStatusDialog.Time.Day=nap
+NLPSolverStatusDialog.Time.Days=nap
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_is.properties b/nlpsolver/locale/NLPSolverStatusDialog_is.properties
new file mode 100644
index 000000000000..74a8b69a0bc0
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_is.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Solver Status
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Current Solution:
+NLPSolverStatusDialog.Controls.lblIteration=\u00CDtrun:
+NLPSolverStatusDialog.Controls.lblStagnation=Stagnation:
+NLPSolverStatusDialog.Controls.lblRuntime=Runtime:
+NLPSolverStatusDialog.Controls.btnStop=St\u00F6\u00F0va
+NLPSolverStatusDialog.Controls.btnOK=\u00CD lagi
+NLPSolverStatusDialog.Controls.btnContinue=Halda \u00E1fram
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Mesta fj\u00F6lda \u00EDtrana er n\u00E1\u00F0.
+NLPSolverStatusDialog.Message.StopStagnation=Process stopped due to stagnation.
+NLPSolverStatusDialog.Message.StopUser=Process stopped due to user interruption.
+NLPSolverStatusDialog.Message.CurrentIteration=Process stopped at iteration %d of %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nan\u00F3sek\u00FAndur
+NLPSolverStatusDialog.Time.Microseconds=M\u00EDkr\u00F3sek\u00FAndur
+NLPSolverStatusDialog.Time.Milliseconds=Mill\u00EDsek\u00FAndur
+NLPSolverStatusDialog.Time.Second=Sek\u00FAnda
+NLPSolverStatusDialog.Time.Seconds=Sek\u00FAndur
+NLPSolverStatusDialog.Time.Minute=M\u00EDn\u00FAta
+NLPSolverStatusDialog.Time.Minutes=M\u00EDn\u00FAtur
+NLPSolverStatusDialog.Time.Hour=Klukkustund
+NLPSolverStatusDialog.Time.Hours=Klukkustundir
+NLPSolverStatusDialog.Time.Day=Dagur
+NLPSolverStatusDialog.Time.Days=Days
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_it.properties b/nlpsolver/locale/NLPSolverStatusDialog_it.properties
new file mode 100644
index 000000000000..fe147abe5516
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_it.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Stato del risolutore
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Soluzione attuale:
+NLPSolverStatusDialog.Controls.lblIteration=Iterazione:
+NLPSolverStatusDialog.Controls.lblStagnation=Stagnazione:
+NLPSolverStatusDialog.Controls.lblRuntime=Tempo di esecuzione:
+NLPSolverStatusDialog.Controls.btnStop=Interrompi
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Continua
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Numero massimo di iterazioni raggiunto.
+NLPSolverStatusDialog.Message.StopStagnation=Processo interrotto per stagnazione.
+NLPSolverStatusDialog.Message.StopUser=Processo interrotto dall'utente.
+NLPSolverStatusDialog.Message.CurrentIteration=Processo interrotto all'iterazione %d di %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanosecondi
+NLPSolverStatusDialog.Time.Microseconds=Microsecondi
+NLPSolverStatusDialog.Time.Milliseconds=Millisecondi
+NLPSolverStatusDialog.Time.Second=Secondo
+NLPSolverStatusDialog.Time.Seconds=Secondi
+NLPSolverStatusDialog.Time.Minute=Minuto
+NLPSolverStatusDialog.Time.Minutes=Minuti
+NLPSolverStatusDialog.Time.Hour=Ora
+NLPSolverStatusDialog.Time.Hours=Ore
+NLPSolverStatusDialog.Time.Day=Giorno
+NLPSolverStatusDialog.Time.Days=Giorni
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_ja.properties b/nlpsolver/locale/NLPSolverStatusDialog_ja.properties
new file mode 100644
index 000000000000..2210dd3d2ccc
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_ja.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=\u30BD\u30EB\u30D0\u30FC\u306E\u72B6\u614B
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=\u73FE\u5728\u306E\u89E3:
+NLPSolverStatusDialog.Controls.lblIteration=\u53CD\u5FA9:
+NLPSolverStatusDialog.Controls.lblStagnation=\u3088\u3069\u307F:
+NLPSolverStatusDialog.Controls.lblRuntime=\u5B9F\u884C\u6642\u9593:
+NLPSolverStatusDialog.Controls.btnStop=\u505C\u6B62
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=\u7D9A\u884C
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=\u53CD\u5FA9\u306E\u6700\u5927\u5024\u306B\u9054\u3057\u307E\u3057\u305F\u3002
+NLPSolverStatusDialog.Message.StopStagnation=\u3088\u3069\u307F\u304C\u539F\u56E0\u3067\u51E6\u7406\u3092\u505C\u6B62\u3057\u307E\u3057\u305F\u3002
+NLPSolverStatusDialog.Message.StopUser=\u30E6\u30FC\u30B6\u30FC\u306E\u5272\u308A\u8FBC\u307F\u306B\u3088\u3063\u3066\u51E6\u7406\u3092\u505C\u6B62\u3057\u307E\u3057\u305F\u3002
+NLPSolverStatusDialog.Message.CurrentIteration=\u53CD\u5FA9 %d \u56DE\u76EE(%d \u56DE\u4E2D)\u306B\u51E6\u7406\u3092\u505C\u6B62\u3057\u307E\u3057\u305F\u3002
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=\u30CA\u30CE\u79D2
+NLPSolverStatusDialog.Time.Microseconds=\u30DE\u30A4\u30AF\u30ED\u79D2
+NLPSolverStatusDialog.Time.Milliseconds=\u30DF\u30EA\u79D2
+NLPSolverStatusDialog.Time.Second=\u79D2
+NLPSolverStatusDialog.Time.Seconds=\u79D2
+NLPSolverStatusDialog.Time.Minute=\u5206
+NLPSolverStatusDialog.Time.Minutes=\u5206
+NLPSolverStatusDialog.Time.Hour=\u6642\u9593
+NLPSolverStatusDialog.Time.Hours=\u6642\u9593
+NLPSolverStatusDialog.Time.Day=\u65E5
+NLPSolverStatusDialog.Time.Days=\u65E5
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_ko.properties b/nlpsolver/locale/NLPSolverStatusDialog_ko.properties
new file mode 100644
index 000000000000..94c7e92d424f
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_ko.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=\uD574\uCC3E\uAE30 \uC0C1\uD0DC
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=\uD604\uC7AC \uD574:
+NLPSolverStatusDialog.Controls.lblIteration=\uD69F\uC218:
+NLPSolverStatusDialog.Controls.lblStagnation=\uC815\uCCB4:
+NLPSolverStatusDialog.Controls.lblRuntime=\uC2E4\uD589\uC2DC\uAC04:
+NLPSolverStatusDialog.Controls.btnStop=\uC815\uC9C0
+NLPSolverStatusDialog.Controls.btnOK=\uD655\uC778
+NLPSolverStatusDialog.Controls.btnContinue=\uACC4\uC18D
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=\uCD5C\uB300 \uD69F\uC218\uC5D0 \uB3C4\uB2EC\uD588\uC2B5\uB2C8\uB2E4.
+NLPSolverStatusDialog.Message.StopStagnation=\uC815\uCCB4\uB85C \uC778\uD558\uC5EC \uBA48\uCD98 \uAC83\uC744 \uCC98\uB9AC\uD569\uB2C8\uB2E4.
+NLPSolverStatusDialog.Message.StopUser=\uC0AC\uC6A9\uC790\uAC00 \uBA48\uCD98 \uAC83\uC744 \uCC98\uB9AC\uD569\uB2C8\uB2E4.
+NLPSolverStatusDialog.Message.CurrentIteration=%d / %d\uD68C \uC5D0\uC11C \uBA48\uCD98 \uAC83\uC744 \uCC98\uB9AC\uD569\uB2C8\uB2E4.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=\uB098\uB178 \uCD08
+NLPSolverStatusDialog.Time.Microseconds=\uB9C8\uC774\uD06C\uB85C \uCD08
+NLPSolverStatusDialog.Time.Milliseconds=\uBC00\uB9AC \uCD08
+NLPSolverStatusDialog.Time.Second=\uCD08
+NLPSolverStatusDialog.Time.Seconds=\uCD08
+NLPSolverStatusDialog.Time.Minute=\uBD84
+NLPSolverStatusDialog.Time.Minutes=\uBD84
+NLPSolverStatusDialog.Time.Hour=\uC2DC
+NLPSolverStatusDialog.Time.Hours=\uC2DC
+NLPSolverStatusDialog.Time.Day=\uC77C
+NLPSolverStatusDialog.Time.Days=\uC77C
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_nb.properties b/nlpsolver/locale/NLPSolverStatusDialog_nb.properties
new file mode 100644
index 000000000000..e1bdf3efcbfa
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_nb.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=L\u00F8sningstatus
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Gjeldende l\u00F8sning:
+NLPSolverStatusDialog.Controls.lblIteration=Gjentakelse:
+NLPSolverStatusDialog.Controls.lblStagnation=Stagnasjon:
+NLPSolverStatusDialog.Controls.lblRuntime=Kj\u00F8retid:
+NLPSolverStatusDialog.Controls.btnStop=Stopp
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Fortsett
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Prosess stoppet p\u00E5 grunn av stagnasjon.
+NLPSolverStatusDialog.Message.StopStagnation=Prosess stoppet av bruker.
+NLPSolverStatusDialog.Message.StopUser=Prosess stoppet av bruker.
+NLPSolverStatusDialog.Message.CurrentIteration=Prosessen stoppet p\u00E5 gjentakelse %d av %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanosekund
+NLPSolverStatusDialog.Time.Microseconds=Mikrosekund
+NLPSolverStatusDialog.Time.Milliseconds=Millisekund
+NLPSolverStatusDialog.Time.Second=Sekund
+NLPSolverStatusDialog.Time.Seconds=Sekunder
+NLPSolverStatusDialog.Time.Minute=Minutt
+NLPSolverStatusDialog.Time.Minutes=Minutter
+NLPSolverStatusDialog.Time.Hour=Timer
+NLPSolverStatusDialog.Time.Hours=Timer
+NLPSolverStatusDialog.Time.Day=Dag
+NLPSolverStatusDialog.Time.Days=Dager
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_nl.properties b/nlpsolver/locale/NLPSolverStatusDialog_nl.properties
new file mode 100644
index 000000000000..f5eab8c9da9d
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_nl.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Oplosserstatus
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Huidige oplossing:
+NLPSolverStatusDialog.Controls.lblIteration=Iteratie:
+NLPSolverStatusDialog.Controls.lblStagnation=Stagnatie:
+NLPSolverStatusDialog.Controls.lblRuntime=Looptijd:
+NLPSolverStatusDialog.Controls.btnStop=Stoppen
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Doorgaan
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Maximum aantal iteraties bereikt.
+NLPSolverStatusDialog.Message.StopStagnation=Proces is door stagnatie gestopt.
+NLPSolverStatusDialog.Message.StopUser=Proces is door de gebruiker gestopt.
+NLPSolverStatusDialog.Message.CurrentIteration=Proces is gestopt na iteratie %d van %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanoseconden
+NLPSolverStatusDialog.Time.Microseconds=Microseconden
+NLPSolverStatusDialog.Time.Milliseconds=Milliseconden
+NLPSolverStatusDialog.Time.Second=Seconde
+NLPSolverStatusDialog.Time.Seconds=Seconden
+NLPSolverStatusDialog.Time.Minute=Minuut
+NLPSolverStatusDialog.Time.Minutes=Minuten
+NLPSolverStatusDialog.Time.Hour=Uur
+NLPSolverStatusDialog.Time.Hours=Uren
+NLPSolverStatusDialog.Time.Day=Dag
+NLPSolverStatusDialog.Time.Days=Dagen
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_pt_BR.properties b/nlpsolver/locale/NLPSolverStatusDialog_pt_BR.properties
new file mode 100644
index 000000000000..44dae5603e76
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_pt_BR.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Estado do solver
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Solu\u00E7\u00E3o atual:
+NLPSolverStatusDialog.Controls.lblIteration=Itera\u00E7\u00E3o:
+NLPSolverStatusDialog.Controls.lblStagnation=Estagna\u00E7\u00E3o:
+NLPSolverStatusDialog.Controls.lblRuntime=Tempo de execu\u00E7\u00E3o:
+NLPSolverStatusDialog.Controls.btnStop=Parar
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Continuar
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=N\u00FAmero m\u00E1ximo de itera\u00E7\u00F5es atingido.
+NLPSolverStatusDialog.Message.StopStagnation=O processo parou por estagna\u00E7\u00E3o.
+NLPSolverStatusDialog.Message.StopUser=O processo parou por interrup\u00E7\u00E3o do usu\u00E1rio.
+NLPSolverStatusDialog.Message.CurrentIteration=O processo parou na itera\u00E7\u00E3o %d de %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanossegundos
+NLPSolverStatusDialog.Time.Microseconds=Microssegundos
+NLPSolverStatusDialog.Time.Milliseconds=Milissegundos
+NLPSolverStatusDialog.Time.Second=Segundo
+NLPSolverStatusDialog.Time.Seconds=Segundos
+NLPSolverStatusDialog.Time.Minute=Minuto
+NLPSolverStatusDialog.Time.Minutes=Minutos
+NLPSolverStatusDialog.Time.Hour=Hora
+NLPSolverStatusDialog.Time.Hours=Horas
+NLPSolverStatusDialog.Time.Day=Dia
+NLPSolverStatusDialog.Time.Days=Dias
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_ro.properties b/nlpsolver/locale/NLPSolverStatusDialog_ro.properties
new file mode 100644
index 000000000000..c3e842ec7c38
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_ro.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Starea rezolvatorului
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Solu\u021Bia curent\u0103:
+NLPSolverStatusDialog.Controls.lblIteration=Itera\u021Bie:
+NLPSolverStatusDialog.Controls.lblStagnation=Stagnare:
+NLPSolverStatusDialog.Controls.lblRuntime=Durat\u0103 de execu\u021Bie:
+NLPSolverStatusDialog.Controls.btnStop=Opre\u0219te
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Continu\u0103
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=S-a atins num\u0103rul maxim de itera\u021Bii.
+NLPSolverStatusDialog.Message.StopStagnation=Proces oprit din cauza stagn\u0103rii.
+NLPSolverStatusDialog.Message.StopUser=Proces oprit din cauza \u00EEntreruperii de c\u0103tre utilizator.
+NLPSolverStatusDialog.Message.CurrentIteration=Proces oprit la itera\u021Bia %d din %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanosecunde
+NLPSolverStatusDialog.Time.Microseconds=Microsecunde
+NLPSolverStatusDialog.Time.Milliseconds=Milisecunde
+NLPSolverStatusDialog.Time.Second=Secund\u0103
+NLPSolverStatusDialog.Time.Seconds=Secunde
+NLPSolverStatusDialog.Time.Minute=Minut
+NLPSolverStatusDialog.Time.Minutes=Minute
+NLPSolverStatusDialog.Time.Hour=Or\u0103
+NLPSolverStatusDialog.Time.Hours=Ore
+NLPSolverStatusDialog.Time.Day=Zi
+NLPSolverStatusDialog.Time.Days=Zile
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_ru.properties b/nlpsolver/locale/NLPSolverStatusDialog_ru.properties
new file mode 100644
index 000000000000..bbfed604c422
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_ru.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=\u0421\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=\u0422\u0435\u043A\u0443\u0449\u0435\u0435 \u0440\u0435\u0448\u0435\u043D\u0438\u0435:
+NLPSolverStatusDialog.Controls.lblIteration=\u0418\u0442\u0435\u0440\u0430\u0446\u0438\u044F:
+NLPSolverStatusDialog.Controls.lblStagnation=\u0421\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u044C:
+NLPSolverStatusDialog.Controls.lblRuntime=\u0412\u0440\u0435\u043C\u044F \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F:
+NLPSolverStatusDialog.Controls.btnStop=\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=\u0414\u043E\u0441\u0442\u0438\u0433\u043D\u0443\u0442 \u043C\u0430\u043A\u0441\u0438\u043C\u0443\u043C \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439.
+NLPSolverStatusDialog.Message.StopStagnation=\u041F\u0440\u043E\u0446\u0435\u0441\u0441 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u0438\u0437-\u0437\u0430 \u043F\u043B\u043E\u0445\u043E\u0439 \u0441\u0445\u043E\u0434\u0438\u043C\u043E\u0441\u0442\u0438.
+NLPSolverStatusDialog.Message.StopUser=\u041F\u0440\u043E\u0446\u0435\u0441\u0441 \u043F\u0440\u0435\u0440\u0432\u0430\u043D \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u043C.
+NLPSolverStatusDialog.Message.CurrentIteration=\u041F\u0440\u043E\u0446\u0435\u0441\u0441 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D \u043D\u0430 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 %d \u0438\u0437 %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=\u041D\u0430\u043D\u043E\u0441\u0435\u043A\u0443\u043D\u0434\u044B
+NLPSolverStatusDialog.Time.Microseconds=\u041C\u0438\u043A\u0440\u043E\u0441\u0435\u043A\u0443\u043D\u0434\u044B
+NLPSolverStatusDialog.Time.Milliseconds=\u041C\u0438\u043B\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u044B
+NLPSolverStatusDialog.Time.Second=\u0421\u0435\u043A\u0443\u043D\u0434\u0430
+NLPSolverStatusDialog.Time.Seconds=\u0421\u0435\u043A\u0443\u043D\u0434\u044B
+NLPSolverStatusDialog.Time.Minute=\u041C\u0438\u043D\u0443\u0442\u0430
+NLPSolverStatusDialog.Time.Minutes=\u041C\u0438\u043D\u0443\u0442\u044B
+NLPSolverStatusDialog.Time.Hour=\u0427\u0430\u0441
+NLPSolverStatusDialog.Time.Hours=\u0427\u0430\u0441\u044B
+NLPSolverStatusDialog.Time.Day=\u0414\u0435\u043D\u044C
+NLPSolverStatusDialog.Time.Days=\u0414\u043D\u0438
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_sk.properties b/nlpsolver/locale/NLPSolverStatusDialog_sk.properties
new file mode 100644
index 000000000000..bb2f0c741254
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_sk.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Stav rie\u0161i\u010Da
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Aktu\u00E1lne rie\u0161enie:
+NLPSolverStatusDialog.Controls.lblIteration=Iter\u00E1cia:
+NLPSolverStatusDialog.Controls.lblStagnation=Stagn\u00E1cia:
+NLPSolverStatusDialog.Controls.lblRuntime=Doba behu:
+NLPSolverStatusDialog.Controls.btnStop=Preru\u0161i\u0165
+NLPSolverStatusDialog.Controls.btnOK=OK
+NLPSolverStatusDialog.Controls.btnContinue=Pokra\u010Dova\u0165
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Dosiahnut\u00E9 maximum iter\u00E1ci\u00ED
+NLPSolverStatusDialog.Message.StopStagnation=Proces zastaven\u00FD pre stagn\u00E1ciu
+NLPSolverStatusDialog.Message.StopUser=Proces preru\u0161en\u00FD pou\u017E\u00EDvate\u013Eom
+NLPSolverStatusDialog.Message.CurrentIteration=Proces zastavil na %d iter\u00E1cii z %d.
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=nanosek\u00FAnd
+NLPSolverStatusDialog.Time.Microseconds=mikrosek\u00FAnd
+NLPSolverStatusDialog.Time.Milliseconds=milisek\u00FAnd
+NLPSolverStatusDialog.Time.Second=sekunda
+NLPSolverStatusDialog.Time.Seconds=sek\u00FAnd
+NLPSolverStatusDialog.Time.Minute=min\u00FAta
+NLPSolverStatusDialog.Time.Minutes=min\u00FAt
+NLPSolverStatusDialog.Time.Hour=hodina
+NLPSolverStatusDialog.Time.Hours=hod\u00EDn
+NLPSolverStatusDialog.Time.Day=de\u0148
+NLPSolverStatusDialog.Time.Days=dn\u00ED
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_sl.properties b/nlpsolver/locale/NLPSolverStatusDialog_sl.properties
new file mode 100644
index 000000000000..78d68c84252d
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_sl.properties
@@ -0,0 +1,31 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=Stanje Re\u0161evalca
+
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Trenutna re\u0161itev:
+NLPSolverStatusDialog.Controls.lblIteration=Iteracija:
+NLPSolverStatusDialog.Controls.lblStagnation=Stagnacija:
+NLPSolverStatusDialog.Controls.lblRuntime=\u010Cas izvajanja:
+NLPSolverStatusDialog.Controls.btnStop=Ustavi
+NLPSolverStatusDialog.Controls.btnOK=V redu
+NLPSolverStatusDialog.Controls.btnContinue=Nadaljuj
+
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=Dose\u017Eeno najve\u010Dje \u0161tevilo iteracij.
+NLPSolverStatusDialog.Message.StopStagnation=Zaradi stagnacije se je proces ustavil.
+NLPSolverStatusDialog.Message.StopUser=Zaradi prekinitve s strani uporabnika se je proces ustavil.
+NLPSolverStatusDialog.Message.CurrentIteration=Proces se je ustavil pri iteraciji %d od %d.
+
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=nanosekund
+NLPSolverStatusDialog.Time.Microseconds=mikrosekund
+NLPSolverStatusDialog.Time.Milliseconds=milisekund
+NLPSolverStatusDialog.Time.Second=sekunda
+NLPSolverStatusDialog.Time.Seconds=sekund
+NLPSolverStatusDialog.Time.Minute=minuta
+NLPSolverStatusDialog.Time.Minutes=minut
+NLPSolverStatusDialog.Time.Hour=ura
+NLPSolverStatusDialog.Time.Hours=ur
+NLPSolverStatusDialog.Time.Day=dan
+NLPSolverStatusDialog.Time.Days=dni \ No newline at end of file
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_tr.properties b/nlpsolver/locale/NLPSolverStatusDialog_tr.properties
new file mode 100644
index 000000000000..1570c061abff
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_tr.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=\u00C7\u00F6z\u00FCmleyici Durumu
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=Ge\u00E7erli \u00C7\u00F6z\u00FCm:
+NLPSolverStatusDialog.Controls.lblIteration=Tekrarlama:
+NLPSolverStatusDialog.Controls.lblStagnation=Durgunluk:
+NLPSolverStatusDialog.Controls.lblRuntime=\u00C7al\u0131\u015Fma zaman\u0131
+NLPSolverStatusDialog.Controls.btnStop=Dur
+NLPSolverStatusDialog.Controls.btnOK=Tamam
+NLPSolverStatusDialog.Controls.btnContinue=Devam Et
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=En fazla yinelemeye ula\u015F\u0131ld\u0131.
+NLPSolverStatusDialog.Message.StopStagnation=Durgunluk nedeniyle i\u015Flem durduruldu.
+NLPSolverStatusDialog.Message.StopUser=Kullan\u0131c\u0131 m\u00FCdahalesi nedeniyle i\u015Flem durduruldu.
+NLPSolverStatusDialog.Message.CurrentIteration=\u0130\u015Flem %d %d yinelemede durduruldu
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=Nanosaniye
+NLPSolverStatusDialog.Time.Microseconds=Mikrosaniyeler
+NLPSolverStatusDialog.Time.Milliseconds=Milisaniye
+NLPSolverStatusDialog.Time.Second=Saniye
+NLPSolverStatusDialog.Time.Seconds=Saniyeler
+NLPSolverStatusDialog.Time.Minute=Dakika
+NLPSolverStatusDialog.Time.Minutes=Dakika
+NLPSolverStatusDialog.Time.Hour=Saat
+NLPSolverStatusDialog.Time.Hours=Saat
+NLPSolverStatusDialog.Time.Day=G\u00FCn
+NLPSolverStatusDialog.Time.Days=G\u00FCn
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_zh_CN.properties b/nlpsolver/locale/NLPSolverStatusDialog_zh_CN.properties
new file mode 100644
index 000000000000..0a3d4e36231e
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_zh_CN.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=\u6C42\u89E3\u5668\u72B6\u6001
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=\u5F53\u524D\u89E3\u7B54:
+NLPSolverStatusDialog.Controls.lblIteration=\u8FED\u4EE3:
+NLPSolverStatusDialog.Controls.lblStagnation=\u505C\u6EDE:
+NLPSolverStatusDialog.Controls.lblRuntime=\u8FD0\u884C\u65F6\u95F4:
+NLPSolverStatusDialog.Controls.btnStop=\u505C\u6B62
+NLPSolverStatusDialog.Controls.btnOK=\u786E\u5B9A
+NLPSolverStatusDialog.Controls.btnContinue=\u7EE7\u7EED
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=\u8FBE\u5230\u6700\u5927\u8FED\u4EE3\u3002
+NLPSolverStatusDialog.Message.StopStagnation=\u5904\u7406\u56E0\u505C\u6EDE\u505C\u6B62\u3002
+NLPSolverStatusDialog.Message.StopUser=\u5904\u7406\u56E0\u7528\u6237\u4E2D\u65AD\u505C\u6B62\u3002
+NLPSolverStatusDialog.Message.CurrentIteration=\u5904\u7406\u505C\u6B62\u4E8E\u8FED\u4EE3 %d\uFF08\u5171 %d\uFF09\u3002
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=\u7EB3\u79D2
+NLPSolverStatusDialog.Time.Microseconds=\u5FAE\u79D2
+NLPSolverStatusDialog.Time.Milliseconds=\u6BEB\u79D2
+NLPSolverStatusDialog.Time.Second=\u79D2
+NLPSolverStatusDialog.Time.Seconds=\u79D2
+NLPSolverStatusDialog.Time.Minute=\u5206\u949F
+NLPSolverStatusDialog.Time.Minutes=\u5206\u949F
+NLPSolverStatusDialog.Time.Hour=\u5C0F\u65F6
+NLPSolverStatusDialog.Time.Hours=\u5C0F\u65F6
+NLPSolverStatusDialog.Time.Day=\u5929
+NLPSolverStatusDialog.Time.Days=\u5929
diff --git a/nlpsolver/locale/NLPSolverStatusDialog_zh_TW.properties b/nlpsolver/locale/NLPSolverStatusDialog_zh_TW.properties
new file mode 100644
index 000000000000..e1c3393c9d47
--- /dev/null
+++ b/nlpsolver/locale/NLPSolverStatusDialog_zh_TW.properties
@@ -0,0 +1,28 @@
+# x-no-translate
+#Dialog
+NLPSolverStatusDialog.Dialog.Caption=\u89E3\u6C7A\u7A0B\u5F0F\u72C0\u614B
+#Controls
+NLPSolverStatusDialog.Controls.lblSolution=\u76EE\u524D\u89E3\u7B54:
+NLPSolverStatusDialog.Controls.lblIteration=\u758A\u4EE3:
+NLPSolverStatusDialog.Controls.lblStagnation=\u505C\u6EEF:
+NLPSolverStatusDialog.Controls.lblRuntime=\u904B\u884C\u6642\u9593:
+NLPSolverStatusDialog.Controls.btnStop=\u505C\u6B62
+NLPSolverStatusDialog.Controls.btnOK=\u78BA\u5B9A
+NLPSolverStatusDialog.Controls.btnContinue=\u7E7C\u7E8C
+#Messages
+NLPSolverStatusDialog.Message.StopIteration=\u5DF2\u5230\u9054\u6700\u5927\u758A\u4EE3\u3002
+NLPSolverStatusDialog.Message.StopStagnation=\u8655\u7406\u56E0\u505C\u6EEF\u800C\u505C\u6B62\u3002
+NLPSolverStatusDialog.Message.StopUser=\u8655\u7406\u56E0\u4F7F\u7528\u8005\u4E2D\u65B7\u800C\u505C\u6B62\u3002
+NLPSolverStatusDialog.Message.CurrentIteration=\u8655\u7406\u505C\u6B62\u65BC\u758A\u4EE3 %d (\u5171 %d ) \u3002
+#Time formatting
+NLPSolverStatusDialog.Time.Nanoseconds=\u5948\u79D2
+NLPSolverStatusDialog.Time.Microseconds=\u5FAE\u79D2
+NLPSolverStatusDialog.Time.Milliseconds=\u6BEB\u79D2
+NLPSolverStatusDialog.Time.Second=\u79D2
+NLPSolverStatusDialog.Time.Seconds=\u79D2
+NLPSolverStatusDialog.Time.Minute=\u5206
+NLPSolverStatusDialog.Time.Minutes=\u5206
+NLPSolverStatusDialog.Time.Hour=\u6642
+NLPSolverStatusDialog.Time.Hours=\u6642
+NLPSolverStatusDialog.Time.Day=\u65E5
+NLPSolverStatusDialog.Time.Days=\u65E5
diff --git a/nlpsolver/makefile.mk b/nlpsolver/makefile.mk
new file mode 100644
index 000000000000..a7d099662691
--- /dev/null
+++ b/nlpsolver/makefile.mk
@@ -0,0 +1,68 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=.
+
+PRJNAME=nlpsolver
+TARGET=nlpsolver
+
+.IF "$(SOLAR_JAVA)"!=""
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+
+# --- Files --------------------------------------------------------
+
+TARFILE_MD5=90401bca927835b6fbae4a707ed187c8
+TARFILE_NAME=nlpsolver-0.9
+TARFILE_ROOTDIR=nlpsolver-0.9
+
+PATCH_FILES=nlpsolver-0.9.patch
+
+ANT_FLAGS+=-Dplatforms.JDK_1.5.home=$(JAVA_HOME) -Doffice.program.dir=$(SOLARBINDIR)
+
+CONFIGURE_ACTION=(cd ../../../../locale && $(GNUTAR) -cf - .) | (cd src/ && $(GNUTAR) xf -)
+
+.IF "$(JAVACISGCJ)"=="yes"
+JAVA_HOME=
+.EXPORT : JAVA_HOME
+BUILD_ACTION=$(ANT) $(ANT_FLAGS) -Dbuild.label="build-$(RSCREVISION)" -Dbuild.compiler=gcj uno-package
+.ELSE
+BUILD_ACTION=$(ANT) $(ANT_FLAGS) -Dbuild.label="build-$(RSCREVISION)" -Dplatforms.JDK_1.5.home=$(JAVA_HOME) -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER) uno-package
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.INCLUDE : tg_ext.mk
+
+.ELSE
+all:
+ @echo java disabled
+.ENDIF
diff --git a/nlpsolver/nlpsolver-0.9.patch b/nlpsolver/nlpsolver-0.9.patch
new file mode 100644
index 000000000000..4581eb7721fa
--- /dev/null
+++ b/nlpsolver/nlpsolver-0.9.patch
@@ -0,0 +1,62 @@
+--- misc/nlpsolver-0.9/nbproject/build-uno-impl.xml.old 2009-03-30 18:32:00.000000000 +0200
++++ misc/build/nlpsolver-0.9/nbproject/build-uno-impl.xml 2009-10-28 18:22:40.000000000 +0100
+@@ -197,7 +197,7 @@
+ <!-- enter the class path with external jars, if external jars exit and the user did not enter his own -->
+ <target name="-do-class-path" depends="-external-jars,-check-class-path" unless="class.path.exists">
+ <manifest file="${build.dir}/MANIFEST.MF" mode="update">
+- <attribute name="Class-Path" value="${external.jars}"/>
++ <attribute name="Class-Path" value="${external.jar.dir}/EvolutionarySolver.jar"/>
+ </manifest>
+ </target>
+ <target name="-check-class-path">
+--- misc/nlpsolver-0.9/nbproject/project.properties.old 2009-03-30 18:32:00.000000000 +0200
++++ misc/build/nlpsolver-0.9/nbproject/project.properties 2009-10-28 18:09:01.000000000 +0100
+@@ -27,8 +27,10 @@ file.reference.EvolutionarySolver.jar=Th
+ includes=**
+ jar.compress=false
+ javac.classpath=\
+- ${libs.StarOffice 9.classpath}:\
+- ${libs.OpenOffice.org 3.0.classpath}:\
++ ${solar.jar}/juh.jar:\
++ ${solar.jar}/jurt.jar:\
++ ${solar.jar}/ridl.jar:\
++ ${solar.jar}/unoil.jar:\
+ ${reference.EvolutionarySolver.jar}
+ # Space-separated list of extra javac options
+ javac.compilerargs=
+--- misc/nlpsolver-0.9/nbproject/build-impl.xml.old 2009-03-30 18:32:00.000000000 +0200
++++ misc/build/nlpsolver-0.9/nbproject/build-impl.xml 2009-10-28 18:19:53.000000000 +0100
+@@ -360,6 +360,8 @@ is divided into following sections:
+ -->
+ <target depends="init" name="deps-jar" unless="no.deps">
+ <ant antfile="${project.EvolutionarySolver}/build.xml" inheritall="false" target="jar"/>
++ <mkdir dir="${dist.dir}/${external.jar.dir}"/>
++ <copy file="${reference.EvolutionarySolver.jar}" todir="${dist.dir}/${external.jar.dir}"/>
+ </target>
+ <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
+ <target depends="init" name="-check-automatic-build">
+--- misc/nlpsolver-0.9/src/description.xml.old 2009-03-30 16:56:42.000000000 +0200
++++ misc/build/nlpsolver-0.9/src/description.xml 2009-10-28 18:29:13.000000000 +0100
+@@ -12,11 +12,6 @@
+ <extension-description>
+ <src lang="en" xlink:href="description/extensiondescription.txt"/>
+ </extension-description>
+- <registration>
+- <simple-license accept-by="admin" default-license-id="en">
+- <license-text lang="en" license-id="en" xlink:href="licenses/lgpl-3.0.txt"/>
+- </simple-license>
+- </registration>
+ <dependencies>
+ <OpenOffice.org-minimal-version xmlns:d="http://openoffice.org/extensions/description/2006" d:name="OpenOffice.org 3.0" value="3.0"/>
+ </dependencies>
+--- misc/build/nlpsolver-0.9/src/locale/NLPSolverCommon_en_US.properties.old 2009-03-30 18:20:06.000000000 +0200
++++ misc/build/nlpsolver-0.9/src/locale/NLPSolverCommon_en_US.properties 2010-12-18 22:08:47.084693100 +0100
+@@ -2,7 +2,7 @@
+ NLPSolverCommon.Properties.AssumeNonNegative=Assume Non-Negative Variables
+
+ #BaseEvolutionarySolver
+-NLPSolverCommon.Properties.SwarmSize=Size of Swam
++NLPSolverCommon.Properties.SwarmSize=Size of Swarm
+ NLPSolverCommon.Properties.LibrarySize=Size of Library
+ NLPSolverCommon.Properties.LearningCycles=Learning Cycles
+ NLPSolverCommon.Properties.GuessVariableRange=Variable Bounds Guessing
diff --git a/nlpsolver/prj/build.lst b/nlpsolver/prj/build.lst
new file mode 100644
index 000000000000..15554e7b6c40
--- /dev/null
+++ b/nlpsolver/prj/build.lst
@@ -0,0 +1,3 @@
+nlpsolver nlpsolver : javaunohelper unoil jurt NULL
+nlpsolver nlpsolver usr1 - all nlpsolver_mkout NULL
+nlpsolver nlpsolver nmake - all nlpsolver_nlpsolver NULL
diff --git a/nlpsolver/prj/d.lst b/nlpsolver/prj/d.lst
new file mode 100644
index 000000000000..5e5215fe6de3
--- /dev/null
+++ b/nlpsolver/prj/d.lst
@@ -0,0 +1 @@
+..\%__SRC%\misc\build\nlpsolver-0.9/dist\NLPSolver.oxt %_DEST%\bin\NLPSolver.oxt
diff --git a/reportbuilder/java/com/sun/star/report/DataRow.java b/reportbuilder/java/com/sun/star/report/DataRow.java
new file mode 100644
index 000000000000..8d255a516217
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/DataRow.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * This feeds data into the reporting engine, in case the data has been provided
+ * by the caller. The methods are a mix of TableModel methods and methods borrowed
+ * from the java.sql.ResultSet interface.
+ *
+ * The column and row index starts at 1 (as it is done in JDBC).
+ *
+ * @author Thomas Morgner
+ */
+public interface DataRow
+{
+
+ int getColumnCount() throws DataSourceException;
+
+ String getColumnName(int column) throws DataSourceException;
+
+ Object getObject(int column) throws DataSourceException;
+}
diff --git a/reportbuilder/java/com/sun/star/report/DataSource.java b/reportbuilder/java/com/sun/star/report/DataSource.java
new file mode 100644
index 000000000000..c786b8b6d5c4
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/DataSource.java
@@ -0,0 +1,48 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * This feeds data into the reporting engine, in case the data has been provided
+ * by the caller. The methods are a mix of TableModel methods and methods borrowed
+ * from the java.sql.ResultSet interface.
+ *
+ * The column and row index starts at 1 (as it is done in JDBC).
+ *
+ * @author Thomas Morgner
+ */
+public interface DataSource extends DataRow
+{
+
+ int getRowCount() throws DataSourceException;
+
+ boolean absolute(int row) throws DataSourceException;
+
+ boolean next() throws DataSourceException;
+
+ void close() throws DataSourceException;
+}
diff --git a/reportbuilder/java/com/sun/star/report/DataSourceException.java b/reportbuilder/java/com/sun/star/report/DataSourceException.java
new file mode 100644
index 000000000000..c513dd9344b5
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/DataSourceException.java
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * A general exception to indicate that there was an error while accessing the
+ * datasource.
+ *
+ * @author Thomas Morgner
+ */
+public class DataSourceException extends Exception
+{
+
+ /**
+ * Constructs a new exception with <code>null</code> as its detail message.
+ * The cause is not initialized, and may subsequently be initialized by a call
+ * to {@link #initCause}.
+ */
+ public DataSourceException()
+ {
+ super();
+ }
+
+ /**
+ * Constructs a new exception with the specified detail message. The cause is
+ * not initialized, and may subsequently be initialized by a call to {@link
+ * #initCause}.
+ *
+ * @param message the detail message. The detail message is saved for later
+ * retrieval by the {@link #getMessage()} method.
+ */
+ public DataSourceException(String message)
+ {
+ super(message);
+ }
+
+ /**
+ * Constructs a new exception with the specified detail message and cause.
+ * <p>Note that the detail message associated with <code>cause</code> is
+ * <i>not</i> automatically incorporated in this exception's detail message.
+ *
+ * @param message the detail message (which is saved for later retrieval by
+ * the {@link #getMessage()} method).
+ * @param cause the cause (which is saved for later retrieval by the {@link
+ * #getCause()} method). (A <tt>null</tt> value is permitted,
+ * and indicates that the cause is nonexistent or unknown.)
+ * @since 1.4
+ */
+ public DataSourceException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ /**
+ * Constructs a new exception with the specified cause and a detail message of
+ * <tt>(cause==null ? null : cause.toString())</tt> (which typically contains
+ * the class and detail message of <tt>cause</tt>). This constructor is useful
+ * for exceptions that are little more than wrappers for other throwables (for
+ * example, {@link PrivilegedActionException}).
+ *
+ * @param cause the cause (which is saved for later retrieval by the {@link
+ * #getCause()} method). (A <tt>null</tt> value is permitted,
+ * and indicates that the cause is nonexistent or unknown.)
+ * @since 1.4
+ */
+ public DataSourceException(Throwable cause)
+ {
+ super(cause);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/DataSourceFactory.java b/reportbuilder/java/com/sun/star/report/DataSourceFactory.java
new file mode 100644
index 000000000000..36b794a3599a
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/DataSourceFactory.java
@@ -0,0 +1,43 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import java.util.Map;
+
+/**
+ * Allows to query the data repository and returns a datasource for the
+ * specified name and parameters. The parameters-map can be null, if there
+ * are no parameters required.
+ *
+ * @author Thomas Morgner
+ */
+public interface DataSourceFactory
+{
+
+ public DataSource queryData(String name, Map parameter)
+ throws DataSourceException;
+}
diff --git a/reportbuilder/java/com/sun/star/report/ImageService.java b/reportbuilder/java/com/sun/star/report/ImageService.java
new file mode 100644
index 000000000000..d7224ed792eb
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ImageService.java
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import java.awt.Dimension;
+
+import java.io.InputStream;
+
+/**
+ *
+ * @author oj93728
+ */
+public interface ImageService
+{
+
+ /**
+ * @param image
+ * @return the mime-type of the image as string.
+ * @throws ReportExecutionException
+ */
+ String getMimeType(final InputStream image) throws ReportExecutionException;
+
+ /**
+ * @param image
+ * @return the mime-type of the image as string.
+ * @throws ReportExecutionException
+ */
+ String getMimeType(final byte[] image) throws ReportExecutionException;
+
+ /**
+ * @param image
+ * @returns the dimension in 100th mm.
+ *
+ * @throws ReportExecutionException
+ * @return*/
+ Dimension getImageSize(final InputStream image) throws ReportExecutionException;
+
+ /**
+ * @param image
+ * @returns the dimension in 100th mm.
+ *
+ * @throws ReportExecutionException
+ * @return*/
+ Dimension getImageSize(final byte[] image) throws ReportExecutionException;
+}
+
diff --git a/reportbuilder/java/com/sun/star/report/InputRepository.java b/reportbuilder/java/com/sun/star/report/InputRepository.java
new file mode 100644
index 000000000000..2e02abf591b7
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/InputRepository.java
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * This allows the job processor to load data from a repository. It is assumed,
+ * that all resource names are given as strings and furthermore, that the names
+ * identify a resource uniquely within the input repository.
+ *
+ * An input repository connects the report processing to the xml definitions.
+ * Unless defined otherwise, it is assumed, that the input-name is 'content.xml';
+ * possible other files are 'settings.xml' and 'styles.xml' (see the Oasis standard
+ * for details on these files and their contents).
+ *
+ * @author Thomas Morgner
+ */
+public interface InputRepository
+{
+
+ /**
+ * Returns a unique identifier for this repository. Two repositories accessing
+ * the same location should return the same id. The identifier must never
+ * be null.
+ *
+ * @return the repository id
+ */
+ Object getId();
+
+ InputStream createInputStream(final String name) throws IOException;
+
+ /** allows to acces sub repositories inside this repository
+ *
+ * @param name describes the path to the sub repository
+ * @return the sub repository
+ * @throws java.io.IOException when the sub repository doesn't exist.
+ */
+ InputRepository openInputRepository(final String name) throws IOException;
+
+ /**
+ * This returns an version number for the given resource. Return zero, if
+ * the resource is not versionable, else return a unique number for each version.
+ * As rule of thumb: Increase the version number by at least one for each change
+ * made to the resource.
+ *
+ * @param name the name of the resource
+ * @return the version number
+ */
+ long getVersion(final String name);
+
+ boolean exists(final String name);
+
+ boolean isReadable(final String name);
+
+ void closeInputRepository();
+
+ /** returns the URL of the database document
+ *
+ * @return the URL of the database document
+ */
+ String getRootURL();
+}
diff --git a/reportbuilder/java/com/sun/star/report/JobDefinitionException.java b/reportbuilder/java/com/sun/star/report/JobDefinitionException.java
new file mode 100644
index 000000000000..5623caf3d1a1
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/JobDefinitionException.java
@@ -0,0 +1,64 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * Creation-Date: 05.02.2006, 17:36:33
+ *
+ * @author Thomas Morgner
+ */
+public class JobDefinitionException extends RuntimeException
+{
+
+ /**
+ * Creates a StackableRuntimeException with no message and no parent.
+ */
+ public JobDefinitionException()
+ {
+ }
+
+ /**
+ * Creates an exception.
+ *
+ * @param message the exception message.
+ */
+ public JobDefinitionException(final String message)
+ {
+ super(message);
+ }
+
+ /**
+ * Creates an exception.
+ *
+ * @param message the exception message.
+ * @param ex the parent exception.
+ */
+ public JobDefinitionException(final String message, final Exception ex)
+ {
+ super(message, ex);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/JobProgressIndicator.java b/reportbuilder/java/com/sun/star/report/JobProgressIndicator.java
new file mode 100644
index 000000000000..06066a2ab757
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/JobProgressIndicator.java
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * Based on
+ * http://api.openoffice.org/docs/common/ref/com/sun/star/task/XStatusIndicator.html
+ *
+ * @author Thomas Morgner
+ */
+public interface JobProgressIndicator
+{
+
+ /**
+ * Updates the progress description.
+ *
+ * @param string the new description
+ */
+ void setText(String string);
+
+ /**
+ * Initializes the progress indicator and sets the progress description to
+ * the text given in the parameter <code>text</code>. The progress values
+ * passed to this indicator will not exceed the given <code>maxValue</code>.
+ * The value range of this indicator is set to 0 to <code>maxValue</code>
+ * Stopped indicators must ignore that call.
+ *
+ * @param string the progress description
+ * @param text
+ * @param maxValue the maximum value
+ * @see JobProgressIndicator#setText(String)
+ */
+ void start(String text, int maxValue);
+
+ /**
+ * Updates the value to the specified value. Invalid values must be ignored.
+ * Stopped indicators must ignore that call.
+ *
+ * @param value the new value that should be shown now. This must fit the
+ * range [0..maxValue] as defined in {@link JobProgressIndicator#start(String, int)}.
+ */
+ void setValue(int value);
+
+ /**
+ * Stop the progress. A progress indicator cannot be destructed before end()
+ * has been called.
+ */
+ void end();
+
+ /**
+ * Clear progress value and description. Calling of setValue(0) and
+ * setText("") should do the same. Stopped indicators must ignore this call.
+ */
+ void reset();
+}
diff --git a/reportbuilder/java/com/sun/star/report/JobProperties.java b/reportbuilder/java/com/sun/star/report/JobProperties.java
new file mode 100644
index 000000000000..c934451dfbac
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/JobProperties.java
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+public interface JobProperties
+{
+
+ void setProperty(String key, Object value)
+ throws JobDefinitionException;
+
+ Object getProperty(String key);
+
+ /**
+ * A type safe clone operation. We derive a copy of all properties,
+ * so that changes to the original job properties collection does not
+ * affect the copy.
+ *
+ * @return a copy.
+ */
+ JobProperties copy();
+}
diff --git a/reportbuilder/java/com/sun/star/report/OfficeToken.java b/reportbuilder/java/com/sun/star/report/OfficeToken.java
new file mode 100644
index 000000000000..2c25942f3762
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/OfficeToken.java
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class OfficeToken
+{
+
+ public static final String GRAPHIC = "graphic";
+ public static final String GRAPHICS = "Graphics";
+ public static final String GRAPHIC_PROPERTIES = "graphic-properties";
+ public static final String PARAGRAPH = "paragraph";
+ public static final String TRUE = "true";
+ public static final String FALSE = "false";
+ public static final String FRAME = "frame";
+ public static final String STYLE_NAME = "style-name";
+ public static final String BACKGROUND_COLOR = "background-color";
+ public static final String COVERED_TABLE_CELL = "covered-table-cell";
+ public static final String TABLE = "table";
+ public static final String TABLE_COLUMN = "table-column";
+ public static final String TABLE_COLUMNS = "table-columns";
+ public static final String TABLE_HEADER_COLUMNS = "table-header-columns";
+ public static final String TABLE_HEADER_ROWS = "table-header-rows";
+ public static final String TABLE_ROWS = "table-rows";
+ public static final String TABLE_ROW = "table-row";
+ public static final String TABLE_CELL = "table-cell";
+ public static final String P = "p";
+ public static final String OBJECT_OLE = "object-ole";
+ public static final String IMAGE = "image";
+ public static final String IMAGE_DATA = "image-data";
+ public static final String PRESERVE_IRI = "preserve-IRI";
+ public static final String SCALE = "scale";
+ public static final String NAME = "name";
+ public static final String SHAPES = "shapes";
+ public static final String ISOTROPIC = "isotropic";
+ public static final String ANISOTROPIC = "anisotropic";
+ public static final String NONE = "none";
+}
diff --git a/reportbuilder/java/com/sun/star/report/OutputRepository.java b/reportbuilder/java/com/sun/star/report/OutputRepository.java
new file mode 100644
index 000000000000..c5283b9c1325
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/OutputRepository.java
@@ -0,0 +1,71 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * A repository for writing. Providing a repository always assumes,
+ * that more than one stream can be written.
+ *
+ * @author Thomas Morgner
+ */
+public interface OutputRepository
+{
+
+ /**
+ * Creates an output stream for writing the data. If there is an entry with
+ * that name already contained in the repository, try to overwrite it.
+ *
+ * @param name
+ * the name of the output stream
+ * @param mimeType
+ * the mime type of the to-be-created output stream. Repository implementations which do not support
+ * associating a mime time with a stream might ignore this parameter.
+ * @return the outputstream
+ * @throws IOException if opening the stream fails
+ */
+ OutputStream createOutputStream(final String name, final String mimeType) throws IOException;
+
+ /** allows to acces sub repositories inside this repository
+ *
+ * @param name describes the path to the sub repository
+ * @param mimeType
+ * @return the sub repository
+ * @throws java.io.IOException when the sub repository doesn't exist.
+ */
+ OutputRepository openOutputRepository(final String name, final String mimeType) throws IOException;
+
+ boolean exists(final String name);
+
+ boolean existsStorage(final String name);
+
+ boolean isWritable(final String name);
+
+ void closeOutputRepository();
+}
diff --git a/reportbuilder/java/com/sun/star/report/ParameterMap.java b/reportbuilder/java/com/sun/star/report/ParameterMap.java
new file mode 100644
index 000000000000..0a5dfce9317b
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ParameterMap.java
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+public interface ParameterMap
+{
+
+ /**
+ * Adds a property to this properties collection. If a property with the given name
+ * exist, the property will be replaced with the new value. If the value is null, the
+ * property will be removed.
+ *
+ * @param key the property key.
+ * @param value the property value.
+ */
+ public void put(final String key, final Object value);
+
+ /**
+ * Retrieves the value stored for a key in this properties collection.
+ *
+ * @param key the property key.
+ * @return The stored value, or <code>null</code> if the key does not exist in this
+ * collection.
+ */
+ Object get(final String key);
+
+ /**
+ * Retrieves the value stored for a key in this properties collection, and returning the
+ * default value if the key was not stored in this properties collection.
+ *
+ * @param key the property key.
+ * @param defaultValue the default value to be returned when the key is not stored in
+ * this properties collection.
+ * @return The stored value, or the default value if the key does not exist in this
+ * collection.
+ */
+ Object get(final String key, final Object defaultValue);
+
+ String[] keys();
+
+ void clear();
+
+ int size();
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportAddIn.java b/reportbuilder/java/com/sun/star/report/ReportAddIn.java
new file mode 100644
index 000000000000..620955c98db7
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportAddIn.java
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * A report add-in defines a set of expressions, which can
+ * be used in the reporting.
+ *
+ * Each expression must provide meta-data to support GUI implementors.
+ * Expressions are assumed to be statefull, if they are not, they are
+ * free to be implemented as stateless expression.
+ */
+public interface ReportAddIn
+{
+
+ int getExpressionCount();
+
+ ReportExpression createExpression(int expression);
+
+ ReportExpressionMetaData getMetaData(int expression);
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportEngine.java b/reportbuilder/java/com/sun/star/report/ReportEngine.java
new file mode 100644
index 000000000000..2518cb1742f0
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportEngine.java
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * The job factory collects all required properties to build a reportJob
+ * object. Implementors should define a suitable set of properties to allow
+ * the configuration of the created report jobs.
+ *
+ * How these properties are collected is beyond the scope of this interface.
+ * For each type of Job, there should be separate job-factory (remote jobs
+ * vs. local jobs etc).
+ *
+ * @author Thomas Morgner
+ */
+public interface ReportEngine
+{
+
+ public ReportJobDefinition createJobDefinition();
+
+ public ReportEngineMetaData getMetaData();
+
+ /**
+ * Open points: How to define scheduling?
+ *
+ * @param definition
+ * @return the report job definition for the job description.
+ * @throws JobDefinitionException
+ */
+ public ReportJob createJob(ReportJobDefinition definition)
+ throws JobDefinitionException;
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportEngineMetaData.java b/reportbuilder/java/com/sun/star/report/ReportEngineMetaData.java
new file mode 100644
index 000000000000..25d39b732448
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportEngineMetaData.java
@@ -0,0 +1,59 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+public interface ReportEngineMetaData
+{
+
+ /**
+ * Checks, whether a certain output type is available.
+ * Feed the mime-type of the output type in and you'll get
+ * a true or false back.
+ *
+ * @param mimeType
+ * @return true, if the output type is supported; false otherwise.
+ */
+ boolean isOutputSupported(String mimeType);
+
+ /**
+ * Lists all supported output parameters for the given mime-type.
+ * This listing can be used to build a generic user interface for
+ * configuring a certain output.
+ *
+ * @param mimeType
+ * @return
+ */
+ String[] getOutputParameters(String mimeType);
+
+ Class getParameterType(String parameter);
+
+ boolean isMandatory(String parameter);
+
+ boolean isEnumeration(String parameter);
+
+ Object[] getEnumerationValues(String parameter);
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportEngineParameterNames.java b/reportbuilder/java/com/sun/star/report/ReportEngineParameterNames.java
new file mode 100644
index 000000000000..2796537f758a
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportEngineParameterNames.java
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * Making this enumeration typesafe and fully defined here would
+ * be nice, wouldn't it?
+ */
+public class ReportEngineParameterNames
+{
+
+ public static final String CONTENT_TYPE = "content-type";
+ public static final String INPUT_NAME = "input.name";
+ public static final String INPUT_REPOSITORY = "input.repository";
+ public static final String OUTPUT_NAME = "output.name";
+ public static final String OUTPUT_REPOSITORY = "output.repository";
+ public static final String INPUT_DATASOURCE_FACTORY = "input.datasource-factory";
+ public static final String IMAGE_SERVICE = "ImageService";
+ public static final String INPUT_REPORTJOB_FACTORY = "input.reportjob-factory";
+ public static final String INPUT_MASTER_COLUMNS = "input.master-columns";
+ public static final String INPUT_MASTER_VALUES = "input.master-values";
+ public static final String INPUT_DETAIL_COLUMNS = "input.detail-columns";
+ public static final String MIMETYPE = "output.mimetype";
+ public static final String AUTHOR = "Author";
+ public static final String TITLE = "Title";
+ public static final String MAXROWS = "MaxRows";
+
+ private ReportEngineParameterNames()
+ {
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportExecutionException.java b/reportbuilder/java/com/sun/star/report/ReportExecutionException.java
new file mode 100644
index 000000000000..6fc8fb1ac29f
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportExecutionException.java
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+public class ReportExecutionException extends Exception
+{
+
+ /**
+ * Constructs a new exception with <code>null</code> as its detail message. The cause is
+ * not initialized, and may subsequently be initialized by a call to {@link
+ * #initCause}.
+ */
+ public ReportExecutionException()
+ {
+ }
+
+ /**
+ * Constructs a new exception with the specified cause and a detail message of
+ * <tt>(cause==null ? null : cause.toString())</tt> (which typically contains the class
+ * and detail message of <tt>cause</tt>). This constructor is useful for exceptions that
+ * are little more than wrappers for other throwables (for example, {@link
+ * java.security.PrivilegedActionException}).
+ *
+ * @param cause the cause (which is saved for later retrieval by the {@link #getCause()}
+ * method). (A <tt>null</tt> value is permitted, and indicates that the
+ * cause is nonexistent or unknown.)
+ * @since 1.4
+ */
+ public ReportExecutionException(Throwable cause)
+ {
+ super(cause);
+ }
+
+ /**
+ * Constructs a new exception with the specified detail message. The cause is not
+ * initialized, and may subsequently be initialized by a call to {@link #initCause}.
+ *
+ * @param message the detail message. The detail message is saved for later retrieval by
+ * the {@link #getMessage()} method.
+ */
+ public ReportExecutionException(String message)
+ {
+ super(message);
+ }
+
+ /**
+ * Constructs a new exception with the specified detail message and cause. <p>Note that
+ * the detail message associated with <code>cause</code> is <i>not</i> automatically
+ * incorporated in this exception's detail message.
+ *
+ * @param message the detail message (which is saved for later retrieval by the {@link
+ * #getMessage()} method).
+ * @param cause the cause (which is saved for later retrieval by the {@link
+ * #getCause()} method). (A <tt>null</tt> value is permitted, and
+ * indicates that the cause is nonexistent or unknown.)
+ * @since 1.4
+ */
+ public ReportExecutionException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportExpression.java b/reportbuilder/java/com/sun/star/report/ReportExpression.java
new file mode 100644
index 000000000000..a828ee6ddba4
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportExpression.java
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * Expressions are simple computation components.
+ *
+ * Expressions are always assumed to be immutable. They are not allowed to
+ * change their state and it is not guaranteed, in which order they get called.
+ * If the expression has been called before, the last computed value will be
+ * available from the datarow.
+ *
+ * This construct allows us to write expressions in the form
+ * "Sum := Sum + Column".
+ *
+ * Multiple calls to getValue on the same expression instance must return the
+ * same value (assuming that the datarow passed in is the same).
+ */
+public interface ReportExpression
+{
+
+ void setParameters(Object[] parameters);
+
+ Object getParameters();
+
+ Object getValue(DataRow row);
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportExpressionMetaData.java b/reportbuilder/java/com/sun/star/report/ReportExpressionMetaData.java
new file mode 100644
index 000000000000..3223044d2270
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportExpressionMetaData.java
@@ -0,0 +1,47 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import java.util.Locale;
+
+public interface ReportExpressionMetaData
+{
+
+ int getParameterCount();
+
+ String getParameterName(int param);
+
+ String getParameterDisplayName(int param, Locale locale);
+
+ String getParameterDescription(int param, Locale locale);
+
+ String getName();
+
+ String getDisplayName(Locale l);
+
+ String getDescription(Locale l);
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportFunction.java b/reportbuilder/java/com/sun/star/report/ReportFunction.java
new file mode 100644
index 000000000000..24be767c1a71
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportFunction.java
@@ -0,0 +1,44 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * Functions are statefull computation components.
+ *
+ * Functions are allowed to have a state, but are considered
+ * immutable (the same is true for expressions). Functions are
+ * allowed to update their state on every call to 'advance', which
+ * signals, that the cursor has been moved.
+ *
+ * Functions have no way to 'reset' their state, if a reset is needed,
+ * the report engine is urged to query a new instance from the ReportAddin.
+ */
+public interface ReportFunction extends ReportExpression
+{
+
+ public ReportFunction advance(DataRow row);
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportJob.java b/reportbuilder/java/com/sun/star/report/ReportJob.java
new file mode 100644
index 000000000000..9bda7926f7d4
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportJob.java
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import java.io.IOException;
+
+/**
+ * This allows some simple job control. A job can be interrupted (or if it has
+ * not yet been started, canceled), and the job status can be queried (scheduled,
+ * running, finished).
+ *
+ * <table border="1">
+ * <tr>
+ * <th>JobStatus</th><th>running</th><th>finished</th>
+ * </tr>
+ * <tr>
+ * <td>Scheduled</td><td>false</td><td>false</td>
+ * </tr>
+ * <tr>
+ * <td>Running</td><td>true</td><td>false</td>
+ * </tr>
+ * <tr>
+ * <td>Finished</td><td>false</td><td>true</td>
+ * </tr>
+ * </table>
+ *
+ * @author Thomas Morgner
+ */
+public interface ReportJob
+{
+
+ /**
+ * Although we might want to run the job as soon as it has been
+ * created, sometimes it is wiser to let the user add some listeners
+ * first. If we execute at once, the user either has to deal with
+ * threading code or wont receive any progress information in single
+ * threaded environments.
+ * @throws java.io.IOException
+ * @throws ReportExecutionException
+ */
+ void execute()
+ throws ReportExecutionException, IOException;
+
+ /**
+ * Interrupt the job.
+ */
+ void interrupt();
+
+ /**
+ * Queries the jobs execution status.
+ *
+ * @return true, if the job is currently running, false otherwise.
+ */
+ boolean isRunning();
+
+ /**
+ * Queries the jobs result status.
+ *
+ * @return true, if the job is finished (or has been interrupted), false
+ * if the job waits for activation.
+ */
+ boolean isFinished();
+
+ void addProgressIndicator(JobProgressIndicator indicator);
+
+ void removeProgressIndicator(JobProgressIndicator indicator);
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportJobDefinition.java b/reportbuilder/java/com/sun/star/report/ReportJobDefinition.java
new file mode 100644
index 000000000000..89724ec20fe5
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportJobDefinition.java
@@ -0,0 +1,57 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+/**
+ * The report job is created by the report job factory and holds all properties
+ * required to complete the reporting task.
+ *
+ * @author Thomas Morgner
+ */
+public interface ReportJobDefinition
+{
+
+ /**
+ * The parameters of the root report definition. The report parameters are using
+ * by the query factory to parametrize the query statement.
+ *
+ * The query parameters for the subreports are defined using mappings, it would not
+ * make sense to define them here.
+ *
+ * @return a map containing the report parameters
+ */
+ ParameterMap getQueryParameters();
+
+ /**
+ * The report processing parameters control the behaviour of the report. There are
+ * several mandatory parameters, some optional and possibly some not-yet-understood
+ * parameters. Use the engine meta data to find out, which parameters are supported.
+ *
+ * @return the processing parameters
+ */
+ JobProperties getProcessingParameters();
+}
diff --git a/reportbuilder/java/com/sun/star/report/ReportJobFactory.java b/reportbuilder/java/com/sun/star/report/ReportJobFactory.java
new file mode 100644
index 000000000000..1771f0bedb22
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/ReportJobFactory.java
@@ -0,0 +1,41 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import com.sun.star.beans.NamedValue;
+import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.uno.Exception;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public interface ReportJobFactory
+{
+
+ ReportJob createReportJob(final NamedValue[] namedValue) throws IllegalArgumentException, ReportExecutionException, Exception;
+}
diff --git a/reportbuilder/java/com/sun/star/report/SDBCReportData.java b/reportbuilder/java/com/sun/star/report/SDBCReportData.java
new file mode 100644
index 000000000000..a759b1712fe9
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/SDBCReportData.java
@@ -0,0 +1,387 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import com.sun.star.beans.UnknownPropertyException;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.container.XIndexAccess;
+import com.sun.star.container.XNameAccess;
+import com.sun.star.lang.IndexOutOfBoundsException;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.sdb.XParametersSupplier;
+import com.sun.star.sdbc.DataType;
+import com.sun.star.sdbc.SQLException;
+import com.sun.star.sdbc.XResultSetMetaData;
+import com.sun.star.sdbc.XResultSetMetaDataSupplier;
+import com.sun.star.sdbc.XRow;
+import com.sun.star.sdbc.XRowSet;
+import com.sun.star.sdbcx.XColumnsSupplier;
+import com.sun.star.uno.Any;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.util.DateTime;
+import com.sun.star.util.Time;
+
+import java.sql.Timestamp;
+
+public class SDBCReportData implements DataSource
+{
+
+ private final XRowSet rowSet;
+ private final XRow row;
+ private int rowCount;
+ private XIndexAccess parameters;
+ private int firstParameterIndex = -1;
+ private int columnCount;
+ private final String[] columnNames;
+ private final int[] columnTypes;
+
+ public SDBCReportData(final XRowSet rowSet) throws SQLException
+ {
+ row = (XRow) UnoRuntime.queryInterface(XRow.class, rowSet);
+ this.rowSet = rowSet;
+
+ if (rowSet == null)
+ {
+ rowCount = 0;
+ columnCount = 0;
+ columnTypes = new int[1];
+ columnNames = new String[1];
+ }
+ else
+ {
+ final XParametersSupplier xSuppParams = (XParametersSupplier) UnoRuntime.queryInterface(
+ XParametersSupplier.class, rowSet);
+ if (xSuppParams != null)
+ {
+ parameters = xSuppParams.getParameters();
+ }
+
+ final XColumnsSupplier columnsSup = (XColumnsSupplier) UnoRuntime.queryInterface(XColumnsSupplier.class, rowSet);
+ final XNameAccess columns = columnsSup.getColumns();
+ final String[] columnNamesList = columns.getElementNames();
+ final XResultSetMetaDataSupplier sup = (XResultSetMetaDataSupplier) UnoRuntime.queryInterface(XResultSetMetaDataSupplier.class, rowSet);
+ final XResultSetMetaData resultSetMetaData = sup.getMetaData();
+
+ columnCount = resultSetMetaData.getColumnCount();
+ firstParameterIndex = columnCount + 1;
+ if (parameters != null)
+ {
+ columnCount += parameters.getCount();
+ }
+
+ columnTypes = new int[columnCount];
+ columnNames = new String[columnCount];
+
+ for (int i = 1; i <= columnCount; ++i)
+ {
+ if (i < firstParameterIndex)
+ {
+ columnNames[i - 1] = columnNamesList[i - 1];// resultSetMetaData.getColumnName(i);
+ columnTypes[i - 1] = resultSetMetaData.getColumnType(i);
+ }
+ else
+ {
+ try
+ {
+ final XPropertySet paramColumn = (XPropertySet) UnoRuntime.queryInterface(
+ XPropertySet.class, parameters.getByIndex(i - firstParameterIndex));
+ columnNames[i - 1] = (String) paramColumn.getPropertyValue("Name");
+ columnTypes[i - 1] = (Integer) paramColumn.getPropertyValue("Type");
+ }
+ catch (Exception e)
+ {
+ columnNames[i - 1] = "Error";
+ columnTypes[i - 1] = DataType.CHAR;
+ }
+ }
+ }
+
+ if (rowSet.last())
+ {
+ rowCount = rowSet.getRow();
+ rowSet.beforeFirst();
+ }
+ else
+ {
+ rowCount = 0;
+ }
+ }
+ }
+
+ public int getColumnCount() throws DataSourceException
+ {
+ return columnCount;
+ }
+
+ public int getRowCount()
+ {
+ return rowCount;
+ }
+
+ public String getColumnName(final int column) throws DataSourceException
+ {
+ return columnNames[column - 1];
+ }
+
+ public boolean absolute(final int row) throws DataSourceException
+ {
+ if (rowSet == null)
+ {
+ return false;
+ }
+ try
+ {
+ if (row == 0)
+ {
+ rowSet.beforeFirst();
+ return true;
+ }
+ return rowSet.absolute(row);
+ }
+ catch (SQLException e)
+ {
+ throw new DataSourceException(e.getMessage(), e);
+ }
+ }
+
+ public boolean next() throws DataSourceException
+ {
+ if (rowSet == null)
+ {
+ return false;
+ }
+ try
+ {
+ return rowSet.next();
+ }
+ catch (SQLException e)
+ {
+ throw new DataSourceException(e.getMessage(), e);
+ }
+ }
+
+ public void close() throws DataSourceException
+ {
+ }
+
+// public int getCurrentRow() throws DataSourceException
+// {
+// try
+// {
+// return rowSet.getRow();
+// }
+// catch (SQLException e)
+// {
+// throw new DataSourceException(e.getMessage(), e);
+// }
+// }
+ static private java.sql.Date getDate(final Object obj)
+ {
+ final java.sql.Date date;
+ if (obj instanceof com.sun.star.util.Date)
+ {
+ final com.sun.star.util.Date unodate = (com.sun.star.util.Date) obj;
+ date = java.sql.Date.valueOf(getDateString(unodate.Year, unodate.Month, unodate.Day).toString());
+ }
+ else
+ {
+ date = null;
+ }
+ return date;
+ }
+
+ private static StringBuffer getTimeString(final int hours, final int minutes, final int seconds)
+ {
+ final StringBuffer timeString = new StringBuffer();
+ if (hours < 10)
+ {
+ timeString.append('0');
+ }
+ timeString.append(hours);
+ timeString.append(':');
+ if (minutes < 10)
+ {
+ timeString.append('0');
+ }
+ timeString.append(minutes);
+ timeString.append(':');
+ if (seconds < 10)
+ {
+ timeString.append('0');
+ }
+ timeString.append(seconds);
+ return timeString;
+ }
+
+ static private StringBuffer getDateString(final int years, final int months, final int days)
+ {
+ final StringBuffer str = new StringBuffer();
+ str.append(years);
+ final StringBuffer str2 = new StringBuffer("0000");
+ str2.delete(0, str.length());
+ str.insert(0, str2);
+ str.append('-');
+ if (months < 10)
+ {
+ str.append('0');
+ }
+ str.append(months);
+ str.append('-');
+ if (days < 10)
+ {
+ str.append('0');
+ }
+ str.append(days);
+ return str;
+ }
+
+ static private java.sql.Time getTime(final Object obj)
+ {
+ final java.sql.Time time;
+ if (obj instanceof Time)
+ {
+ final Time unoTime = (Time) obj;
+ time = java.sql.Time.valueOf(getTimeString(unoTime.Hours, unoTime.Minutes, unoTime.Seconds).toString());
+ }
+ else
+ {
+ time = null;
+ }
+ return time;
+ }
+
+ static private Timestamp getTimestamp(final Object obj)
+ {
+ final Timestamp ts;
+ if (obj instanceof DateTime)
+ {
+ final DateTime unoTs = (DateTime) obj;
+ final StringBuffer str = getDateString(unoTs.Year, unoTs.Month, unoTs.Day);
+ str.append(' ');
+ str.append(getTimeString(unoTs.Hours, unoTs.Minutes, unoTs.Seconds));
+ str.append('.');
+ str.append(unoTs.HundredthSeconds);
+ ts = java.sql.Timestamp.valueOf(str.toString());
+ }
+ else
+ {
+ ts = null;
+ }
+ return ts;
+ }
+
+ public Object getObject(final int column) throws DataSourceException
+ {
+ if (rowSet == null)
+ {
+ return null;
+ }
+ try
+ {
+ final boolean isParameterValue = (parameters != null) && (column >= firstParameterIndex);
+ Object obj;
+ final boolean wasNull;
+ if (isParameterValue)
+ {
+ final XPropertySet paramCol = (XPropertySet) UnoRuntime.queryInterface(
+ XPropertySet.class, parameters.getByIndex(column - firstParameterIndex));
+ obj = paramCol.getPropertyValue("Value");
+ wasNull = obj == null;
+ }
+ else
+ {
+ obj = row.getObject(column, null);
+ wasNull = row.wasNull();
+ }
+
+ if (wasNull)
+ {
+ obj = null;
+ }
+ else
+ {
+ obj = convertObject(columnTypes[column - 1], obj);
+ }
+ return obj;
+ }
+ catch (SQLException ex)
+ {
+ throw new DataSourceException(ex.getMessage(), ex);
+ }
+ catch (UnknownPropertyException ex)
+ {
+ throw new DataSourceException(ex.getMessage(), ex);
+ }
+ catch (IndexOutOfBoundsException ex)
+ {
+ throw new DataSourceException(ex.getMessage(), ex);
+ }
+ catch (WrappedTargetException ex)
+ {
+ throw new DataSourceException(ex.getMessage(), ex);
+ }
+ }
+
+ private Object convertObject(final int type, final Object obj)
+ {
+ Object ret;
+ switch (type)
+ {
+ case DataType.DATE:
+ ret = getDate(obj);
+ break;
+ case DataType.TIME:
+ ret = getTime(obj);
+ break;
+ case DataType.TIMESTAMP:
+ ret = getTimestamp(obj);
+ break;
+ case DataType.DECIMAL:
+ case DataType.NUMERIC:
+ if (!(obj instanceof Any))
+ {
+ try
+ {
+ ret = new java.math.BigDecimal(String.valueOf(obj));
+ }
+ catch (NumberFormatException ex)
+ {
+ ret = obj;
+ }
+ }
+ else
+ {
+ ret = obj;
+ }
+ break;
+ default:
+ ret = obj;
+ break;
+ }
+ return ret;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/SDBCReportDataFactory.java b/reportbuilder/java/com/sun/star/report/SDBCReportDataFactory.java
new file mode 100644
index 000000000000..58ae07410da8
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/SDBCReportDataFactory.java
@@ -0,0 +1,591 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import com.sun.star.beans.PropertyVetoException;
+import com.sun.star.beans.UnknownPropertyException;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.container.NoSuchElementException;
+import com.sun.star.container.XIndexAccess;
+import com.sun.star.container.XNameAccess;
+import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.lang.IndexOutOfBoundsException;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.lang.XComponent;
+import com.sun.star.sdb.CommandType;
+import com.sun.star.sdb.XCompletedExecution;
+import com.sun.star.sdb.XParametersSupplier;
+import com.sun.star.sdb.XQueriesSupplier;
+import com.sun.star.sdb.XSingleSelectQueryComposer;
+import com.sun.star.sdb.tools.XConnectionTools;
+import com.sun.star.sdbc.SQLException;
+import com.sun.star.sdbc.XConnection;
+import com.sun.star.sdbc.XParameters;
+import com.sun.star.sdbc.XRowSet;
+import com.sun.star.task.XInteractionHandler;
+import com.sun.star.uno.Exception;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+
+import java.lang.reflect.Method;
+
+import java.math.BigDecimal;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+
+/**
+ * Very primitive implementation, just to show how this could be used ...
+ *
+ */
+public class SDBCReportDataFactory implements DataSourceFactory
+{
+
+ private static final String ESCAPEPROCESSING = "EscapeProcessing";
+
+ private class RowSetProperties
+ {
+
+ final Boolean escapeProcessing;
+ final int commandType;
+ final Integer maxRows;
+ final String command;
+ final String filter;
+
+ public RowSetProperties(final Boolean escapeProcessing, final int commandType, final String command, final String filter, final Integer maxRows)
+ {
+ this.escapeProcessing = escapeProcessing;
+ this.commandType = commandType;
+ this.command = command;
+ this.filter = filter;
+ this.maxRows = maxRows;
+ }
+
+ public boolean equals(Object obj)
+ {
+ if (obj == null)
+ {
+ return false;
+ }
+ if (getClass() != obj.getClass())
+ {
+ return false;
+ }
+ final RowSetProperties other = (RowSetProperties) obj;
+ if (this.escapeProcessing != other.escapeProcessing && (this.escapeProcessing == null || !this.escapeProcessing.equals(other.escapeProcessing)))
+ {
+ return false;
+ }
+ if (this.commandType != other.commandType)
+ {
+ return false;
+ }
+ if (this.maxRows != other.maxRows && (this.maxRows == null || !this.maxRows.equals(other.maxRows)))
+ {
+ return false;
+ }
+ if ((this.command == null) ? (other.command != null) : !this.command.equals(other.command))
+ {
+ return false;
+ }
+ if ((this.filter == null) ? (other.filter != null) : !this.filter.equals(other.filter))
+ {
+ return false;
+ }
+ return true;
+ }
+
+ public int hashCode()
+ {
+ int hash = 3;
+ hash = 59 * hash + (this.escapeProcessing != null ? this.escapeProcessing.hashCode() : 0);
+ hash = 59 * hash + this.commandType;
+ hash = 59 * hash + (this.maxRows != null ? this.maxRows.hashCode() : 0);
+ hash = 59 * hash + (this.command != null ? this.command.hashCode() : 0);
+ hash = 59 * hash + (this.filter != null ? this.filter.hashCode() : 0);
+ return hash;
+ }
+ }
+
+ class ParameterDefinition
+ {
+
+ int parameterCount = 0;
+ private ArrayList parameterIndex = new ArrayList();
+ }
+ private static final Log LOGGER = LogFactory.getLog(SDBCReportDataFactory.class);
+ public static final String COMMAND_TYPE = "command-type";
+ public static final String ESCAPE_PROCESSING = "escape-processing";
+ public static final String GROUP_EXPRESSIONS = "group-expressions";
+ public static final String MASTER_VALUES = "master-values";
+ public static final String MASTER_COLUMNS = "master-columns";
+ public static final String DETAIL_COLUMNS = "detail-columns";
+ public static final String UNO_FILTER = "Filter";
+ private static final String APPLY_FILTER = "ApplyFilter";
+ private static final String UNO_COMMAND = "Command";
+ private static final String UNO_ORDER = "Order";
+ private static final String UNO_APPLY_FILTER = "ApplyFilter";
+ private static final String UNO_COMMAND_TYPE = "CommandType";
+ private final XConnection connection;
+ private final XComponentContext m_cmpCtx;
+ private static final int FAILED = 0;
+ private static final int DONE = 1;
+ private static final int RETRIEVE_COLUMNS = 2;
+ private static final int RETRIEVE_OBJECT = 3;
+ private static final int HANDLE_QUERY = 4;
+ private static final int HANDLE_TABLE = 5;
+ private static final int HANDLE_SQL = 6;
+ private final Map rowSetProperties = new HashMap();
+ private final Map parameterMap = new HashMap();
+ private boolean rowSetCreated = false;
+
+ public SDBCReportDataFactory(final XComponentContext cmpCtx, final XConnection connection)
+ {
+ this.connection = connection;
+ m_cmpCtx = cmpCtx;
+ }
+
+ public DataSource queryData(final String command, final Map parameters) throws DataSourceException
+ {
+ try
+ {
+ if (command == null)
+ {
+ return new SDBCReportData(null);
+ }
+ int commandType = CommandType.COMMAND;
+ final String commandTypeValue = (String) parameters.get(COMMAND_TYPE);
+ if (commandTypeValue != null)
+ {
+ if ("query".equals(commandTypeValue))
+ {
+ commandType = CommandType.QUERY;
+ }
+ else if ("table".equals(commandTypeValue))
+ {
+ commandType = CommandType.TABLE;
+ }
+ else
+ {
+ commandType = CommandType.COMMAND;
+ }
+ }
+ final Boolean escapeProcessing = (Boolean) parameters.get(ESCAPE_PROCESSING);
+ final String filter = (String) parameters.get(UNO_FILTER);
+ final Integer maxRows = (Integer) parameters.get("MaxRows");
+ final RowSetProperties rowSetProps = new RowSetProperties(escapeProcessing, commandType, command, filter, maxRows);
+
+ final Object[] p = createRowSet(rowSetProps, parameters);
+ final XRowSet rowSet = (XRowSet) p[0];
+
+ if (command.length() != 0)
+ {
+ final ParameterDefinition paramDef = (ParameterDefinition) p[1];
+ fillParameter(parameters, rowSet, paramDef);
+ rowSetCreated = rowSetCreated && (maxRows == null || maxRows == 0);
+
+ final XCompletedExecution execute = (XCompletedExecution) UnoRuntime.queryInterface(XCompletedExecution.class, rowSet);
+ if (rowSetCreated && execute != null && paramDef.parameterCount > 0)
+ {
+ final XInteractionHandler handler = (XInteractionHandler) UnoRuntime.queryInterface(XInteractionHandler.class, m_cmpCtx.getServiceManager().createInstanceWithContext("com.sun.star.sdb.InteractionHandler", m_cmpCtx));
+ execute.executeWithCompletion(handler);
+ }
+ else
+ {
+ rowSet.execute();
+ }
+ }
+
+ rowSetCreated = false;
+ return new SDBCReportData(rowSet);
+ }
+ catch (Exception ex)
+ {
+ rowSetCreated = false;
+ throw new DataSourceException(ex.getMessage(), ex);
+ }
+ }
+
+ private String getOrderStatement(final int commandType, final String command, final List groupExpressions)
+ {
+ final StringBuffer order = new StringBuffer();
+ final int count = groupExpressions.size();
+ if (count != 0)
+ {
+ try
+ {
+ final String quote = connection.getMetaData().getIdentifierQuoteString();
+ final XComponent[] hold = new XComponent[1];
+ final XNameAccess columns = getFieldsByCommandDescriptor(commandType, command, hold);
+ if (columns != null)
+ {
+ for (int i = 0; i < count; i++)
+ {
+ final Object[] pair = (Object[]) groupExpressions.get(i);
+ String expression = (String) pair[0];
+
+ if (!expression.startsWith(quote) && columns.hasByName(expression))
+ {
+ XPropertySet column;
+ try
+ {
+ column = UnoRuntime.queryInterface(XPropertySet.class, columns.getByName(expression));
+ expression = quote + column.getPropertyValue("TableName") + quote + "." + quote + expression + quote;
+ }
+ catch (Exception ex)
+ {
+ Logger.getLogger(SDBCReportDataFactory.class.getName()).log(Level.SEVERE, null, ex);
+ expression = quote + expression + quote;
+ }
+ }
+ expression = expression.trim(); // Trim away white spaces
+
+ if (expression.length() > 0)
+ {
+ order.append(expression);
+ if (order.length() > 0)
+ {
+ order.append(' ');
+ }
+ final String sorting = (String) pair[1];
+ if (sorting == null || sorting.equals(OfficeToken.FALSE))
+ {
+ order.append("DESC");
+ }
+ if ((i + 1) < count)
+ {
+ order.append(", ");
+ }
+ }
+ }
+ }
+ }
+ catch (SQLException ex)
+ {
+ LOGGER.error("ReportProcessing failed", ex);
+ }
+ }
+ return order.toString();
+ }
+
+ private XNameAccess getFieldsByCommandDescriptor(final int commandType, final String command, final XComponent[] out) throws SQLException
+ {
+ final Class[] parameter = new Class[3];
+ parameter[0] = int.class;
+ parameter[1] = String.class;
+ parameter[2] = out.getClass();
+ final XConnectionTools tools = (XConnectionTools) UnoRuntime.queryInterface(XConnectionTools.class, connection);
+ try
+ {
+ tools.getClass().getMethod("getFieldsByCommandDescriptor", parameter);
+ return tools.getFieldsByCommandDescriptor(commandType, command, out);
+ }
+ catch (NoSuchMethodException ex)
+ {
+ }
+
+ throw new SQLException();
+ }
+
+ private XSingleSelectQueryComposer getComposer(final XConnectionTools tools,
+ final String command,
+ final int commandType)
+ {
+ final Class[] parameter = new Class[2];
+ parameter[0] = int.class;
+ parameter[1] = String.class;
+ try
+ {
+ final Object[] param = new Object[2];
+ param[0] = commandType;
+ param[1] = command;
+ final Method call = tools.getClass().getMethod("getComposer", parameter);
+ return (XSingleSelectQueryComposer) call.invoke(tools, param);
+ }
+ catch (NoSuchMethodException ex)
+ {
+ }
+ catch (IllegalAccessException ex)
+ {
+ // should not happen
+ // assert False
+ }
+ catch (java.lang.reflect.InvocationTargetException ex)
+ {
+ // should not happen
+ // assert False
+ }
+
+ return null;
+ }
+
+ private void fillParameter(final Map parameters,
+ final XRowSet rowSet, final ParameterDefinition paramDef)
+ throws SQLException,
+ UnknownPropertyException,
+ PropertyVetoException,
+ IllegalArgumentException,
+ WrappedTargetException
+ {
+ final ArrayList masterValues = (ArrayList) parameters.get(MASTER_VALUES);
+ if (masterValues != null && !masterValues.isEmpty())
+ {
+ final XParameters para = (XParameters) UnoRuntime.queryInterface(XParameters.class, rowSet);
+
+ for (int i = 0;
+ i < masterValues.size();
+ i++)
+ {
+ Object object = masterValues.get(i);
+ if (object instanceof BigDecimal)
+ {
+ object = ((BigDecimal) object).toString();
+ }
+ final Integer pos = (Integer) paramDef.parameterIndex.get(i);
+ para.setObject(pos + 1, object);
+ }
+ }
+ }
+
+ private final Object[] createRowSet(final RowSetProperties rowSetProps, final Map parameters)
+ throws Exception
+ {
+ final ArrayList detailColumns = (ArrayList) parameters.get(DETAIL_COLUMNS);
+ if (rowSetProperties.containsKey(rowSetProps) && detailColumns != null && !detailColumns.isEmpty())
+ {
+ return new Object[]
+ {
+ rowSetProperties.get(rowSetProps), parameterMap.get(rowSetProps)
+ };
+ }
+
+ rowSetCreated = true;
+ final XRowSet rowSet = (XRowSet) UnoRuntime.queryInterface(XRowSet.class, m_cmpCtx.getServiceManager().createInstanceWithContext("com.sun.star.sdb.RowSet", m_cmpCtx));
+ final XPropertySet rowSetProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, rowSet);
+
+ rowSetProp.setPropertyValue("ActiveConnection", connection);
+ rowSetProp.setPropertyValue(ESCAPEPROCESSING, rowSetProps.escapeProcessing);
+ rowSetProp.setPropertyValue(UNO_COMMAND_TYPE, Integer.valueOf(rowSetProps.commandType));
+ rowSetProp.setPropertyValue(UNO_COMMAND, rowSetProps.command);
+
+ if (rowSetProps.filter != null)
+ {
+ rowSetProp.setPropertyValue("Filter", rowSetProps.filter);
+ rowSetProp.setPropertyValue(APPLY_FILTER, Boolean.valueOf(rowSetProps.filter.length() != 0));
+ }
+ else
+ {
+ rowSetProp.setPropertyValue(APPLY_FILTER, Boolean.FALSE);
+ }
+
+ if (rowSetProps.maxRows != null)
+ {
+ rowSetProp.setPropertyValue("MaxRows", rowSetProps.maxRows);
+ }
+
+ final XConnectionTools tools = (XConnectionTools) UnoRuntime.queryInterface(XConnectionTools.class, connection);
+ fillOrderStatement(rowSetProps.command, rowSetProps.commandType, parameters, tools, rowSetProp);
+ final ParameterDefinition paramDef = createParameter(parameters, tools, rowSetProps, rowSet);
+
+ rowSetProperties.put(rowSetProps, rowSet);
+ parameterMap.put(rowSetProps, paramDef);
+
+ return new Object[]
+ {
+ rowSet, paramDef
+ };
+ }
+
+ private ParameterDefinition createParameter(final Map parameters,
+ final XConnectionTools tools,
+ RowSetProperties rowSetProps, final XRowSet rowSet)
+ throws SQLException,
+ UnknownPropertyException,
+ PropertyVetoException,
+ IllegalArgumentException,
+ WrappedTargetException
+ {
+ final ParameterDefinition paramDef = new ParameterDefinition();
+ final XSingleSelectQueryComposer composer = getComposer(tools, rowSetProps.command, rowSetProps.commandType);
+ if (composer != null)
+ {
+ final XPropertySet rowSetProp = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, rowSet);
+ if ((Boolean) rowSetProp.getPropertyValue(APPLY_FILTER))
+ {
+ composer.setFilter((String) rowSetProp.getPropertyValue("Filter"));
+ }
+ // get old parameter count
+ final ArrayList detailColumns = (ArrayList) parameters.get(DETAIL_COLUMNS);
+ final ArrayList handledColumns = new ArrayList();
+ final XParametersSupplier paraSup = (XParametersSupplier) UnoRuntime.queryInterface(XParametersSupplier.class, composer);
+ if (paraSup != null)
+ {
+ final XIndexAccess params = paraSup.getParameters();
+ if (params != null)
+ {
+ final int oldParameterCount = params.getCount();
+ paramDef.parameterCount = oldParameterCount;
+ if (detailColumns != null)
+ {
+ for (int i = 0; i < oldParameterCount; i++)
+ {
+ try
+ {
+ final XPropertySet parameter = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, params.getByIndex(i));
+ if (parameter != null)
+ {
+ final String name = (String) parameter.getPropertyValue("Name");
+ for (int j = 0; j < detailColumns.size(); j++)
+ {
+ if (name.equals(detailColumns.get(j)))
+ {
+ handledColumns.add(name);
+ paramDef.parameterIndex.add(i);
+ --paramDef.parameterCount;
+ break;
+ }
+ }
+ }
+ }
+ catch (IndexOutOfBoundsException ex)
+ {
+ Logger.getLogger(SDBCReportDataFactory.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+ }
+ }
+ }
+ final ArrayList masterValues = (ArrayList) parameters.get(MASTER_VALUES);
+ if (masterValues != null && !masterValues.isEmpty() && paramDef.parameterIndex.size() != detailColumns.size())
+ {
+ // Vector masterColumns = (Vector) parameters.get("master-columns");
+
+ // create the new filter
+ final String quote = connection.getMetaData().getIdentifierQuoteString();
+ final StringBuffer oldFilter = new StringBuffer();
+ oldFilter.append(composer.getFilter());
+ if (oldFilter.length() != 0)
+ {
+ oldFilter.append(" AND ");
+ }
+ int newParamterCounter = 1;
+ for (final Iterator it = detailColumns.iterator(); it.hasNext();
+ ++newParamterCounter)
+ {
+ final String detail = (String) it.next();
+ if (!handledColumns.contains(detail))
+ {
+ //String master = (String) masterIt.next();
+ oldFilter.append(quote);
+ oldFilter.append(detail);
+ oldFilter.append(quote);
+ oldFilter.append(" = :link_");
+ oldFilter.append(newParamterCounter);
+ if (it.hasNext())
+ {
+ oldFilter.append(" AND ");
+ }
+ paramDef.parameterIndex.add(newParamterCounter + paramDef.parameterCount - 1);
+ }
+ }
+
+ composer.setFilter(oldFilter.toString());
+
+ final String sQuery = composer.getQuery();
+ rowSetProp.setPropertyValue(UNO_COMMAND, sQuery);
+ rowSetProp.setPropertyValue(UNO_COMMAND_TYPE, Integer.valueOf(CommandType.COMMAND));
+ }
+ }
+ return paramDef;
+ }
+
+ void fillOrderStatement(final String command,
+ final int commandType, final Map parameters,
+ final XConnectionTools tools,
+ final XPropertySet rowSetProp)
+ throws SQLException,
+ UnknownPropertyException,
+ PropertyVetoException,
+ IllegalArgumentException,
+ WrappedTargetException,
+ NoSuchElementException
+ {
+ final StringBuffer order = new StringBuffer(getOrderStatement(commandType, command, (ArrayList) parameters.get(GROUP_EXPRESSIONS)));
+ if (order.length() > 0 && commandType != CommandType.TABLE)
+ {
+ String statement = command;
+ final XSingleSelectQueryComposer composer = getComposer(tools, command, commandType);
+ if (composer != null)
+ {
+ statement = composer.getQuery();
+ composer.setQuery(statement);
+ final String sOldOrder = composer.getOrder();
+ if (sOldOrder.length() > 0)
+ {
+ order.append(',');
+ order.append(sOldOrder);
+ composer.setOrder("");
+ statement = composer.getQuery();
+ }
+ }
+ else
+ {
+ if (commandType == CommandType.QUERY)
+ {
+ final XQueriesSupplier xSupplyQueries = (XQueriesSupplier) UnoRuntime.queryInterface(XQueriesSupplier.class, connection);
+ final XNameAccess queries = xSupplyQueries.getQueries();
+ if (queries.hasByName(command))
+ {
+ final XPropertySet prop = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, queries.getByName(command));
+ final Boolean escape = (Boolean) prop.getPropertyValue(ESCAPEPROCESSING);
+ rowSetProp.setPropertyValue(ESCAPEPROCESSING, escape);
+ final String queryCommand = (String) prop.getPropertyValue(UNO_COMMAND);
+ statement = "SELECT * FROM (" + queryCommand + ") AS \"__LibreOffice_report_result\"";
+ }
+
+ }
+ else
+ {
+ statement = "SELECT * FROM (" + command + ") AS \"__LibreOffice_report_result\"";
+ }
+ }
+ rowSetProp.setPropertyValue(UNO_COMMAND, statement);
+ rowSetProp.setPropertyValue(UNO_COMMAND_TYPE, Integer.valueOf(CommandType.COMMAND));
+ }
+ rowSetProp.setPropertyValue("Order", order.toString());
+ }
+}
+
diff --git a/reportbuilder/java/com/sun/star/report/SOImageService.java b/reportbuilder/java/com/sun/star/report/SOImageService.java
new file mode 100644
index 000000000000..6d67ebabc0d1
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/SOImageService.java
@@ -0,0 +1,189 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import com.sun.star.awt.Size;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.beans.UnknownPropertyException;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.beans.XPropertySetInfo;
+import com.sun.star.graphic.XGraphicProvider;
+import com.sun.star.io.IOException;
+import com.sun.star.io.XInputStream;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.lib.uno.adapter.ByteArrayToXInputStreamAdapter;
+import com.sun.star.lib.uno.adapter.InputStreamToXInputStreamAdapter;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+
+import java.awt.Dimension;
+
+import java.io.InputStream;
+
+
+/**
+ * @author oj93728
+ */
+public class SOImageService implements ImageService
+{
+
+ private final XGraphicProvider m_xGraphicProvider;
+
+ /**
+ * Creates a new instance of SOImageService
+ * @param xCompContext
+ * @throws ReportExecutionException
+ */
+ public SOImageService(final XComponentContext xCompContext)
+ throws ReportExecutionException, com.sun.star.uno.Exception
+ {
+ if (xCompContext == null)
+ {
+ throw new ReportExecutionException();
+ }
+
+
+ final XMultiComponentFactory m_xMCF = xCompContext.getServiceManager();
+ m_xGraphicProvider = (XGraphicProvider) UnoRuntime.queryInterface(XGraphicProvider.class,
+ m_xMCF.createInstanceWithContext("com.sun.star.graphic.GraphicProvider", xCompContext));
+
+ if (m_xGraphicProvider == null)
+ {
+ throw new ReportExecutionException("There is no graphic-provider available.");
+ }
+ }
+
+ public Dimension getImageSize(final InputStream image) throws ReportExecutionException
+ {
+ return getImageSize(new InputStreamToXInputStreamAdapter(image));
+ }
+
+ private Dimension getImageSize(final XInputStream image) throws ReportExecutionException
+ {
+ final Dimension dim = new Dimension();
+ try
+ {
+ final PropertyValue[] value = new PropertyValue[]
+ {
+ new PropertyValue()
+ };
+ // value[0] = new PropertyValue();
+ value[0].Name = "InputStream";
+ value[0].Value = image;
+
+ final XPropertySet xImage = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
+ m_xGraphicProvider.queryGraphic(value));
+
+ if (xImage != null)
+ {
+ final XPropertySetInfo xInfo = xImage.getPropertySetInfo();
+ if (xInfo.hasPropertyByName("Size100thMM"))
+ {
+ Size imageSize = (Size) xImage.getPropertyValue("Size100thMM");
+ dim.setSize(imageSize.Width, imageSize.Height);
+ if (dim.height == 0 && dim.width == 0)
+ {
+ imageSize = (Size) xImage.getPropertyValue("SizePixel");
+ final int dpi = java.awt.Toolkit.getDefaultToolkit().getScreenResolution();
+ final double fac = 2540 / (double) dpi;
+ dim.setSize(imageSize.Width * fac, imageSize.Height * fac);
+ }
+ }
+ else if (xInfo.hasPropertyByName("SizePixel"))
+ {
+ final Size imageSize = (Size) xImage.getPropertyValue("SizePixel");
+ final int dpi = java.awt.Toolkit.getDefaultToolkit().getScreenResolution();
+ final double fac = 2540 / dpi;
+ dim.setSize(imageSize.Width * fac, imageSize.Height * fac);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new ReportExecutionException("Failed to query Image-Size", ex);
+ }
+ return dim;
+ }
+
+ public Dimension getImageSize(final byte[] image) throws ReportExecutionException
+ {
+ return getImageSize(new ByteArrayToXInputStreamAdapter(image));
+ }
+
+ private String getMimeType(final XInputStream image) throws ReportExecutionException
+ {
+ try
+ {
+ final PropertyValue[] value = new PropertyValue[]
+ {
+ new PropertyValue()
+ };
+ value[0].Name = "InputStream";
+ value[0].Value = image;
+
+ final XPropertySet xImage = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,
+ m_xGraphicProvider.queryGraphic(value));
+
+ if (xImage != null)
+ {
+ final XPropertySetInfo xInfo = xImage.getPropertySetInfo();
+ if (xInfo.hasPropertyByName("MimeType"))
+ {
+ return (String) xImage.getPropertyValue("MimeType");
+ }
+ }
+ }
+ catch (UnknownPropertyException ex)
+ {
+ throw new ReportExecutionException();
+ }
+ catch (WrappedTargetException ex)
+ {
+ throw new ReportExecutionException();
+ }
+ catch (com.sun.star.lang.IllegalArgumentException ex)
+ {
+ throw new ReportExecutionException();
+ }
+ catch (IOException ex)
+ {
+ throw new ReportExecutionException();
+ }
+ return null;
+ }
+
+ public String getMimeType(final InputStream image) throws ReportExecutionException
+ {
+ return getMimeType(new InputStreamToXInputStreamAdapter(image));
+ }
+
+ public String getMimeType(final byte[] image) throws ReportExecutionException
+ {
+ return getMimeType(new ByteArrayToXInputStreamAdapter(image));
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/StorageRepository.java b/reportbuilder/java/com/sun/star/report/StorageRepository.java
new file mode 100644
index 000000000000..9bf610b70606
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/StorageRepository.java
@@ -0,0 +1,353 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report;
+
+import com.sun.star.beans.PropertyVetoException;
+import com.sun.star.beans.UnknownPropertyException;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.container.NoSuchElementException;
+import com.sun.star.embed.ElementModes;
+import com.sun.star.embed.InvalidStorageException;
+import com.sun.star.embed.XStorage;
+import com.sun.star.embed.XTransactedObject;
+import com.sun.star.io.XStream;
+import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.lib.uno.adapter.XInputStreamToInputStreamAdapter;
+import com.sun.star.lib.uno.adapter.XOutputStreamToOutputStreamAdapter;
+import com.sun.star.uno.UnoRuntime;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * A directory holds all the contents here.
+ *
+ *
+ * @author Ocke Janssen
+ */
+public class StorageRepository implements InputRepository, OutputRepository
+{
+
+ private static final Log LOGGER = LogFactory.getLog(SDBCReportDataFactory.class);
+ private static final String REPORT_PROCESSING_FAILED = "ReportProcessing failed";
+ private XStorage input;
+ private XStorage output;
+ private final String rootURL;
+
+ /**
+ *
+ * @param input
+ * @param output
+ * @param rootURL
+ * @throws java.io.IOException
+ */
+ public StorageRepository(final XStorage input, final XStorage output, final String rootURL)
+ {
+ this.input = input;
+ this.output = output;
+ this.rootURL = rootURL;
+
+ }
+
+ public StorageRepository(final XStorage storage, final boolean isOutput, final String rootURL)
+ {
+ this.rootURL = rootURL;
+ if (isOutput)
+ {
+ this.output = storage;
+ }
+ else
+ {
+ this.input = storage;
+ }
+ }
+
+ public InputStream createInputStream(final String name) throws IOException
+ {
+ if (input == null)
+ {
+ throw new IOException("input is NULL");
+ }
+ try
+ {
+ final XStream xStream = (XStream) UnoRuntime.queryInterface(XStream.class, input.openStreamElement(name, ElementModes.READ));
+ return new BufferedInputStream(new XInputStreamToInputStreamAdapter(xStream.getInputStream()), 102400);
+ }
+ catch (com.sun.star.uno.Exception e)
+ {
+ throw new IOException("createInputStream");
+ }
+ }
+
+ /**
+ * Creates an output stream for writing the data. If there is an entry with
+ * that name already contained in the repository, try to overwrite it.
+ *
+ * @param name
+ * @param mimeType
+ * @return the outputstream
+ * @throws IOException if opening the stream fails
+ */
+ public OutputStream createOutputStream(final String name, final String mimeType) throws IOException
+ {
+ if (output == null)
+ {
+ throw new IOException("output is NULL");
+ }
+ try
+ {
+ final XStream stream = output.openStreamElement(name, ElementModes.WRITE | ElementModes.TRUNCATE);
+ stream.getInputStream().closeInput();
+ if (mimeType != null)
+ {
+ final XPropertySet prop = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, stream);
+ prop.setPropertyValue("MediaType", mimeType);
+ }
+ return new BufferedOutputStream(new XOutputStreamToOutputStreamAdapter(stream.getOutputStream()), 204800);
+ }
+ catch (com.sun.star.uno.Exception e)
+ {
+ throw new IOException("createOutputStream");
+ }
+ }
+
+ public boolean exists(final String name)
+ {
+ try
+ {
+ return output.isStreamElement(name);
+ }
+ catch (InvalidStorageException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (NoSuchElementException e)
+ {
+ // We expect this exception, no need to log it.
+ }
+ return false;
+ }
+
+ public boolean isWritable(final String name)
+ {
+ return true;
+ }
+
+ public Object getId()
+ {
+ return "1";
+ }
+
+ public long getVersion(final String name)
+ {
+ return 1;
+ }
+
+ public boolean isReadable(final String name)
+ {
+ try
+ {
+ if (input != null)
+ {
+ return input.isStreamElement(name);
+ }
+ }
+ catch (InvalidStorageException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (NoSuchElementException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ return false;
+ }
+
+ public InputRepository openInputRepository(final String name) throws IOException
+ {
+ try
+ {
+ final String temp = shortenName(name);
+ if (!input.isStorageElement(temp))
+ {
+ throw new IOException();
+ }
+ final XStorage storage = (XStorage) UnoRuntime.queryInterface(XStorage.class, input.openStorageElement(temp, ElementModes.READ));
+ return new StorageRepository(storage, false, rootURL);
+ }
+ catch (NoSuchElementException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (WrappedTargetException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (InvalidStorageException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (com.sun.star.io.IOException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ throw new IOException();
+ }
+
+ final String shortenName(final String name)
+ {
+ final String temp;
+ if (name.startsWith("./"))
+ {
+ temp = name.substring(2);
+ }
+ else
+ {
+ temp = name;
+ }
+ return temp;
+ }
+
+ public OutputRepository openOutputRepository(final String name, final String mimeType) throws IOException
+ {
+ try
+ {
+ final String temp = shortenName(name);
+ final XStorage storage = (XStorage) UnoRuntime.queryInterface(XStorage.class, output.openStorageElement(temp, ElementModes.WRITE));
+ if (mimeType != null)
+ {
+ final XPropertySet prop = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, storage);
+ prop.setPropertyValue("MediaType", mimeType);
+ }
+ return new StorageRepository(storage, true, rootURL);
+ }
+ catch (UnknownPropertyException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (PropertyVetoException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (WrappedTargetException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (InvalidStorageException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (com.sun.star.io.IOException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+
+ throw new IOException();
+ }
+
+ public void closeInputRepository()
+ {
+ if (input != null)
+ {
+ input.dispose();
+ }
+ }
+
+ public void closeOutputRepository()
+ {
+ if (output != null)
+ {
+ try
+ {
+ final XTransactedObject obj = (XTransactedObject) UnoRuntime.queryInterface(XTransactedObject.class, output);
+ if (obj != null)
+ {
+ obj.commit();
+ }
+ }
+ catch (com.sun.star.io.IOException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (WrappedTargetException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ output.dispose();
+ }
+
+ }
+
+ public boolean existsStorage(final String name)
+ {
+ try
+ {
+ return output.isStorageElement(name);
+ }
+ catch (InvalidStorageException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException ex)
+ {
+ LOGGER.error(REPORT_PROCESSING_FAILED, ex);
+ }
+ catch (NoSuchElementException ex)
+ {
+ // We expect this exception, no need to log it.
+ }
+ return false;
+ }
+
+ public String getRootURL()
+ {
+ return rootURL;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/Author-Function.properties b/reportbuilder/java/com/sun/star/report/function/metadata/Author-Function.properties
new file mode 100644
index 000000000000..287c7155e5ed
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/Author-Function.properties
@@ -0,0 +1,30 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+display-name=AUTHOR
+description=Returns the author of the report.
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/Author-Function_en_US.properties b/reportbuilder/java/com/sun/star/report/function/metadata/Author-Function_en_US.properties
new file mode 100644
index 000000000000..287c7155e5ed
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/Author-Function_en_US.properties
@@ -0,0 +1,30 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+display-name=AUTHOR
+description=Returns the author of the report.
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/AuthorFunction.java b/reportbuilder/java/com/sun/star/report/function/metadata/AuthorFunction.java
new file mode 100644
index 000000000000..11eb9e038a60
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/AuthorFunction.java
@@ -0,0 +1,61 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.function.metadata;
+
+import com.sun.star.report.ReportEngineParameterNames;
+
+import org.pentaho.reporting.libraries.formula.EvaluationException;
+import org.pentaho.reporting.libraries.formula.FormulaContext;
+import org.pentaho.reporting.libraries.formula.LibFormulaErrorValue;
+import org.pentaho.reporting.libraries.formula.function.Function;
+import org.pentaho.reporting.libraries.formula.function.ParameterCallback;
+import org.pentaho.reporting.libraries.formula.lvalues.TypeValuePair;
+import org.pentaho.reporting.libraries.formula.typing.coretypes.TextType;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class AuthorFunction implements Function
+{
+
+ public String getCanonicalName()
+ {
+ return "AUTHOR";
+ }
+
+ public TypeValuePair evaluate(final FormulaContext context, final ParameterCallback parameters)
+ throws EvaluationException
+ {
+ if (parameters.getParameterCount() != 0)
+ {
+ throw new EvaluationException(LibFormulaErrorValue.ERROR_ARGUMENTS_VALUE);
+ }
+
+ return new TypeValuePair(TextType.TYPE, context.getConfiguration().getConfigProperty(ReportEngineParameterNames.AUTHOR));
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/AuthorFunctionDescription.java b/reportbuilder/java/com/sun/star/report/function/metadata/AuthorFunctionDescription.java
new file mode 100644
index 000000000000..f8c1032bfb16
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/AuthorFunctionDescription.java
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.function.metadata;
+
+import org.pentaho.reporting.libraries.formula.function.AbstractFunctionDescription;
+import org.pentaho.reporting.libraries.formula.function.FunctionCategory;
+import org.pentaho.reporting.libraries.formula.typing.Type;
+import org.pentaho.reporting.libraries.formula.typing.coretypes.TextType;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class AuthorFunctionDescription extends AbstractFunctionDescription
+{
+
+ public AuthorFunctionDescription()
+ {
+ super("AUTHOR", "com.sun.star.report.function.metadata.Author-Function");
+ }
+
+ public FunctionCategory getCategory()
+ {
+ return MetaDataFunctionCategory.CATEGORY;
+ }
+
+ public int getParameterCount()
+ {
+ return 0;
+ }
+
+ public Type getParameterType(final int position)
+ {
+ return null;
+ }
+
+ public Type getValueType()
+ {
+ return TextType.TYPE;
+ }
+
+ public boolean isParameterMandatory(final int position)
+ {
+ return false;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/MetaDataFunctionCategory.java b/reportbuilder/java/com/sun/star/report/function/metadata/MetaDataFunctionCategory.java
new file mode 100644
index 000000000000..8fa0e5d80ac5
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/MetaDataFunctionCategory.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.function.metadata;
+
+import org.pentaho.reporting.libraries.formula.function.AbstractFunctionCategory;
+import org.pentaho.reporting.libraries.formula.function.FunctionCategory;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class MetaDataFunctionCategory extends AbstractFunctionCategory
+{
+
+ public static final FunctionCategory CATEGORY = new MetaDataFunctionCategory();
+
+ private MetaDataFunctionCategory()
+ {
+ super("com.sun.star.report.function.metadata.category");
+ }
+}
+
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/Title-Function.properties b/reportbuilder/java/com/sun/star/report/function/metadata/Title-Function.properties
new file mode 100644
index 000000000000..aa0e5bdbd2a5
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/Title-Function.properties
@@ -0,0 +1,30 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+display-name=TITLE
+description=Returns the title of the report.
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/Title-Function_en_US.properties b/reportbuilder/java/com/sun/star/report/function/metadata/Title-Function_en_US.properties
new file mode 100644
index 000000000000..aa0e5bdbd2a5
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/Title-Function_en_US.properties
@@ -0,0 +1,30 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+display-name=TITLE
+description=Returns the title of the report.
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/TitleFunction.java b/reportbuilder/java/com/sun/star/report/function/metadata/TitleFunction.java
new file mode 100644
index 000000000000..55c3d6ff381c
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/TitleFunction.java
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.function.metadata;
+
+import com.sun.star.report.ReportEngineParameterNames;
+
+import org.pentaho.reporting.libraries.formula.EvaluationException;
+import org.pentaho.reporting.libraries.formula.FormulaContext;
+import org.pentaho.reporting.libraries.formula.LibFormulaErrorValue;
+import org.pentaho.reporting.libraries.formula.function.Function;
+import org.pentaho.reporting.libraries.formula.function.ParameterCallback;
+import org.pentaho.reporting.libraries.formula.lvalues.TypeValuePair;
+import org.pentaho.reporting.libraries.formula.typing.coretypes.TextType;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class TitleFunction implements Function
+{
+
+ public TitleFunction()
+ {
+ }
+
+ public String getCanonicalName()
+ {
+ return "TITLE";
+ }
+
+ public TypeValuePair evaluate(final FormulaContext context, final ParameterCallback parameters)
+ throws EvaluationException
+ {
+ if (parameters.getParameterCount() != 0)
+ {
+ throw new EvaluationException(LibFormulaErrorValue.ERROR_ARGUMENTS_VALUE);
+ }
+
+ return new TypeValuePair(TextType.TYPE, context.getConfiguration().getConfigProperty(ReportEngineParameterNames.TITLE));
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/TitleFunctionDescription.java b/reportbuilder/java/com/sun/star/report/function/metadata/TitleFunctionDescription.java
new file mode 100644
index 000000000000..7ed8a61bd06a
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/TitleFunctionDescription.java
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.function.metadata;
+
+import org.pentaho.reporting.libraries.formula.function.AbstractFunctionDescription;
+import org.pentaho.reporting.libraries.formula.function.FunctionCategory;
+import org.pentaho.reporting.libraries.formula.typing.Type;
+import org.pentaho.reporting.libraries.formula.typing.coretypes.TextType;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class TitleFunctionDescription extends AbstractFunctionDescription
+{
+
+ public TitleFunctionDescription()
+ {
+ super("TITLE", "com.sun.star.report.function.metadata.Title-Function");
+ }
+
+ public FunctionCategory getCategory()
+ {
+ return MetaDataFunctionCategory.CATEGORY;
+ }
+
+ public int getParameterCount()
+ {
+ return 0;
+ }
+
+ public Type getParameterType(final int position)
+ {
+ return null;
+ }
+
+ public Type getValueType()
+ {
+ return TextType.TYPE;
+ }
+
+ public boolean isParameterMandatory(final int position)
+ {
+ return false;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/category.properties b/reportbuilder/java/com/sun/star/report/function/metadata/category.properties
new file mode 100644
index 000000000000..9192d2fecf7c
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/category.properties
@@ -0,0 +1,30 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+display-name=Document Information
+description=Contains functions to access document information.
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/category_en_US.properties b/reportbuilder/java/com/sun/star/report/function/metadata/category_en_US.properties
new file mode 100644
index 000000000000..5de2933bb2ab
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/category_en_US.properties
@@ -0,0 +1,30 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+display-name=MetaData
+description=Contains functions about meta data
diff --git a/reportbuilder/java/com/sun/star/report/function/metadata/makefile.mk b/reportbuilder/java/com/sun/star/report/function/metadata/makefile.mk
new file mode 100644
index 000000000000..a2452646f2c7
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/function/metadata/makefile.mk
@@ -0,0 +1,66 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ = ..$/..$/..$/..$/..$/..$/..
+PRJNAME = reportbuilder
+TARGET= rpt_java_css_metadata
+PACKAGE = com$/sun$/star$/report$/function$/metadata
+
+# --- Settings -----------------------------------------------------
+.INCLUDE: settings.mk
+#----- compile .java files -----------------------------------------
+
+.IF "$(SYSTEM_JFREEREPORT)" == "YES"
+EXTRAJARFILES = $(LIBBASE_JAR) $(LIBFORMULA_JAR)
+.ELSE
+.INCLUDE : $(SOLARBINDIR)/jfreereport_version.mk
+JARFILES += \
+ libbase-$(LIBBASE_VERSION).jar \
+ libformula-$(LIBFORMULA_VERSION).jar
+.ENDIF
+
+JAVAFILES := AuthorFunction.java \
+ AuthorFunctionDescription.java \
+ TitleFunction.java \
+ TitleFunctionDescription.java \
+ MetaDataFunctionCategory.java
+
+COPYFILES := $(CLASSDIR)$/$(PACKAGE)$/category.properties \
+ $(CLASSDIR)$/$(PACKAGE)$/Title-Function.properties\
+ $(CLASSDIR)$/$(PACKAGE)$/category_en_US.properties \
+ $(CLASSDIR)$/$(PACKAGE)$/Author-Function.properties \
+ $(CLASSDIR)$/$(PACKAGE)$/Author-Function_en_US.properties \
+ $(CLASSDIR)$/$(PACKAGE)$/Title-Function_en_US.properties
+
+ALLTAR : $(COPYFILES)
+# --- Targets ------------------------------------------------------
+.INCLUDE : target.mk
+
+$(COPYFILES): $$(@:f)
+ +$(MKDIRHIER) $(CLASSDIR)$/$(PACKAGE)
+ +$(COPY) $< $@
+
diff --git a/reportbuilder/java/com/sun/star/report/makefile.mk b/reportbuilder/java/com/sun/star/report/makefile.mk
new file mode 100644
index 000000000000..1b96e9904ea0
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/makefile.mk
@@ -0,0 +1,74 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ = ..$/..$/..$/..$/..
+PRJNAME = reportbuilder
+TARGET=rpt_java_css
+PACKAGE = com$/sun$/star$/report
+
+# --- Settings -----------------------------------------------------
+.INCLUDE: settings.mk
+#----- compile .java files -----------------------------------------
+
+JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar
+.IF "$(SYSTEM_APACHE_COMMONS)" == "YES"
+EXTRAJARFILES = $(COMMONS_LOGGING_JAR)
+.ELSE
+JARFILES += commons-logging-1.1.1.jar
+.ENDIF
+
+JAVAFILES := DataRow.java\
+ DataSource.java\
+ DataSourceException.java\
+ DataSourceFactory.java\
+ InputRepository.java\
+ JobDefinitionException.java\
+ JobProgressIndicator.java\
+ JobProperties.java\
+ OutputRepository.java\
+ ParameterMap.java\
+ ReportAddIn.java\
+ ReportEngine.java\
+ ReportEngineMetaData.java\
+ ReportEngineParameterNames.java\
+ ReportExecutionException.java\
+ ReportExpression.java\
+ ReportExpressionMetaData.java\
+ ReportFunction.java\
+ ReportJob.java\
+ ReportJobFactory.java\
+ ReportJobDefinition.java\
+ ImageService.java\
+ SOImageService.java\
+ StorageRepository.java\
+ SDBCReportData.java\
+ SDBCReportDataFactory.java \
+ OfficeToken.java
+
+
+# --- Targets ------------------------------------------------------
+.INCLUDE : target.mk
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/DefaultNameGenerator.java b/reportbuilder/java/com/sun/star/report/pentaho/DefaultNameGenerator.java
new file mode 100644
index 000000000000..620ddcee98eb
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/DefaultNameGenerator.java
@@ -0,0 +1,156 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.report.OutputRepository;
+
+import java.io.IOException;
+
+
+public class DefaultNameGenerator
+{
+
+ private final OutputRepository outputRepository;
+
+ public DefaultNameGenerator(final OutputRepository outputRepository)
+ {
+ if (outputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ this.outputRepository = outputRepository;
+ }
+
+ public String generateName(final String namePrefix, final String mimeType)
+ throws IOException
+ {
+ return generateName(namePrefix, mimeType, true);
+ }
+
+ public String generateStorageName(final String namePrefix, final String mimeType)
+ throws IOException
+ {
+ return generateName(namePrefix, mimeType, false);
+ }
+
+ /**
+ * Generates a new, unique name for storing resources in the output repository. Assuming that proper synchronization
+ * has been applied, the generated name will be unique within that repository.
+ *
+ * @param namePrefix a user defined name for that resource.
+ * @param mimeType the mime type of the resource to be stored in the repository.
+ * @param isStream
+ * @return the generated, fully qualified name.
+ * @throws java.io.IOException
+ */
+ private String generateName(final String namePrefix, final String mimeType, final boolean isStream)
+ throws IOException
+ {
+ final String name;
+ if (namePrefix != null)
+ {
+ name = namePrefix;
+ }
+ else
+ {
+ name = "file";
+ }
+
+ StringBuffer firstFileName = new StringBuffer();
+ firstFileName.append(name);
+ final String suffix;
+ if (mimeType != null)
+ {
+ suffix = getSuffixForType(mimeType);
+ firstFileName.append('.');
+ firstFileName.append(suffix);
+ }
+ else
+ {
+ suffix = null;
+ }
+ String newName = firstFileName.toString();
+ boolean exists;
+ if (isStream)
+ {
+ exists = outputRepository.exists(newName);
+ }
+ else
+ {
+ exists = outputRepository.existsStorage(newName);
+ }
+ if (exists)
+ {
+ int counter = 0;
+ while (exists)
+ {
+ if (counter < 0) // wraparound should not happen..
+ {
+ throw new IOException();
+ }
+ firstFileName.delete(0, firstFileName.length());
+ firstFileName.append(name);
+ firstFileName.append(counter);
+ if (suffix != null)
+ {
+ firstFileName.append('.');
+ firstFileName.append(suffix);
+ }
+ newName = firstFileName.toString();
+ if (isStream)
+ {
+ exists = outputRepository.exists(newName);
+ }
+ else
+ {
+ exists = outputRepository.existsStorage(newName);
+ }
+ counter++;
+ }
+ }
+ return newName;
+ }
+
+ protected String getSuffixForType(final String mimeType)
+ {
+ if ("image/png".equals(mimeType))
+ {
+ return "png";
+ }
+ if ("image/jpeg".equals(mimeType))
+ {
+ return "jpg";
+ }
+ if ("image/gif".equals(mimeType))
+ {
+ return "gif";
+ }
+
+ // todo ... use a flexible mapping ...
+ return "dat";
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/Manifest.mf b/reportbuilder/java/com/sun/star/report/pentaho/Manifest.mf
new file mode 100644
index 000000000000..5d27005f2d65
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/Manifest.mf
@@ -0,0 +1,7 @@
+RegistrationClassName: com.sun.star.report.pentaho.SOReportJobFactory
+Class-Path: reportbuilderwizard.jar
+ flute-1.1.6.jar libserializer-1.1.6.jar libbase-1.1.6.jar
+ libfonts-1.1.6.jar libformula-1.1.7.jar liblayout-0.2.10.jar
+ libloader-1.1.6.jar librepository-1.1.6.jar libxml-1.1.7.jar
+ flow-engine-0.9.4.jar sac.jar commons-logging-1.1.1.jar
+UNO-Type-Path:
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/OfficeNamespaces.java b/reportbuilder/java/com/sun/star/report/pentaho/OfficeNamespaces.java
new file mode 100644
index 000000000000..823bf6540f47
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/OfficeNamespaces.java
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+/**
+ * Creation-Date: Feb 22, 2007, 1:53:29 PM
+ *
+ * @author Thomas Morgner
+ */
+public class OfficeNamespaces
+{
+
+ public static final String OFFICE_NS = "urn:oasis:names:tc:opendocument:xmlns:office:1.0";
+ public static final String TABLE_NS = "urn:oasis:names:tc:opendocument:xmlns:table:1.0";
+ public static final String TEXT_NS = "urn:oasis:names:tc:opendocument:xmlns:text:1.0";
+ public static final String STYLE_NS = "urn:oasis:names:tc:opendocument:xmlns:style:1.0";
+ public static final String DRAWING_NS = "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0";
+ public static final String FO_NS = "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0";
+ public static final String XLINK_NS = "http://www.w3.org/1999/xlink";
+ public static final String PURL_NS = "http://purl.org/dc/elements/1.1/";
+ public static final String META_NS = "urn:oasis:names:tc:opendocument:xmlns:meta:1.0";
+ public static final String DATASTYLE_NS = "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0";
+ public static final String SVG_NS = "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0";
+ public static final String CHART_NS = "urn:oasis:names:tc:opendocument:xmlns:chart:1.0";
+ public static final String CHARTOOO_NS = "http://openoffice.org/2010/chart";
+ public static final String DR3D_NS = "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0";
+ public static final String MATHML_NS = "http://www.w3.org/1998/Math/MathML";
+ public static final String FORM_NS = "urn:oasis:names:tc:opendocument:xmlns:form:1.0";
+ public static final String SCRIPT_NS = "urn:oasis:names:tc:opendocument:xmlns:script:1.0";
+ public static final String OO2004_NS = "http://openoffice.org/2004/office";
+ public static final String OOW2004_NS = "http://openoffice.org/2004/writer";
+ public static final String OOC2004_NS = "http://openoffice.org/2004/calc";
+ public static final String XML_EVENT_NS = "http://www.w3.org/2001/xml-events";
+ public static final String XFORMS_NS = "http://www.w3.org/2002/xforms";
+ public static final String XSD_NS = "http://www.w3.org/2001/XMLSchema";
+ public static final String XSI_NS = "http://www.w3.org/2001/XMLSchema-instance";
+ public static final String OOREPORT_NS = "http://openoffice.org/2005/report";
+ public static final String GRDDL_NS = "http://www.w3.org/2003/g/data-view#";
+ public static final String CONFIG = "urn:oasis:names:tc:opendocument:xmlns:config:1.0";
+ /**
+ * @deprecated
+ */
+ public static final String NUMBER_NS = DATASTYLE_NS;
+
+ private OfficeNamespaces()
+ {
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/PentahoFormulaContext.java b/reportbuilder/java/com/sun/star/report/pentaho/PentahoFormulaContext.java
new file mode 100644
index 000000000000..c68424de99c9
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/PentahoFormulaContext.java
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import org.pentaho.reporting.libraries.base.config.Configuration;
+import org.pentaho.reporting.libraries.formula.ContextEvaluationException;
+import org.pentaho.reporting.libraries.formula.FormulaContext;
+import org.pentaho.reporting.libraries.formula.LocalizationContext;
+import org.pentaho.reporting.libraries.formula.function.FunctionRegistry;
+import org.pentaho.reporting.libraries.formula.operators.OperatorFactory;
+import org.pentaho.reporting.libraries.formula.typing.Type;
+import org.pentaho.reporting.libraries.formula.typing.TypeRegistry;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class PentahoFormulaContext implements FormulaContext
+{
+
+ final private FormulaContext backend;
+ final private Configuration config;
+
+ public PentahoFormulaContext(final FormulaContext backend, final Configuration _config)
+ {
+ this.backend = backend;
+ config = _config;
+ }
+
+ public LocalizationContext getLocalizationContext()
+ {
+ return backend.getLocalizationContext();
+ }
+
+ public Configuration getConfiguration()
+ {
+ return config;
+ }
+
+ public FunctionRegistry getFunctionRegistry()
+ {
+ return backend.getFunctionRegistry();
+ }
+
+ public TypeRegistry getTypeRegistry()
+ {
+ return backend.getTypeRegistry();
+ }
+
+ public OperatorFactory getOperatorFactory()
+ {
+ return backend.getOperatorFactory();
+ }
+
+ public Type resolveReferenceType(final Object name) throws ContextEvaluationException
+ {
+ return backend.resolveReferenceType(name);
+ }
+
+ public Object resolveReference(final Object name) throws ContextEvaluationException
+ {
+ if (name == null)
+ {
+ throw new NullPointerException();
+ }
+ return backend.resolveReference(name);
+ }
+
+ public boolean isReferenceDirty(final Object name) throws ContextEvaluationException
+ {
+ return backend.isReferenceDirty(name);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportAddIn.java b/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportAddIn.java
new file mode 100644
index 000000000000..a4222fdaa3b3
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportAddIn.java
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.report.ReportAddIn;
+import com.sun.star.report.ReportExpression;
+import com.sun.star.report.ReportExpressionMetaData;
+import com.sun.star.report.pentaho.expressions.SumExpression;
+
+/**
+ * This class is a dummy implementation. Ignore it for now, we may extend this
+ * one later.
+ */
+public class PentahoReportAddIn implements ReportAddIn
+{
+
+ public PentahoReportAddIn()
+ {
+ }
+
+ public ReportExpression createExpression(final int expression)
+ {
+ return (expression == 0) ? new SumExpression() : null;
+ }
+
+ public int getExpressionCount()
+ {
+ return 1;
+ }
+
+ public ReportExpressionMetaData getMetaData(final int expression)
+ {
+ // todo implement me
+ return null;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportEngine.java b/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportEngine.java
new file mode 100644
index 000000000000..8ee9d8547363
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportEngine.java
@@ -0,0 +1,72 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.report.JobDefinitionException;
+import com.sun.star.report.ReportEngine;
+import com.sun.star.report.ReportEngineMetaData;
+import com.sun.star.report.ReportJob;
+import com.sun.star.report.ReportJobDefinition;
+import com.sun.star.report.util.DefaultReportJobDefinition;
+
+import org.jfree.report.JFreeReportBoot;
+
+public class PentahoReportEngine implements ReportEngine
+{
+
+ private final ReportEngineMetaData metaData;
+
+ public PentahoReportEngine()
+ {
+ JFreeReportBoot.getInstance().start();
+ this.metaData = new PentahoReportEngineMetaData();
+ }
+
+ public ReportEngineMetaData getMetaData()
+ {
+ return metaData;
+ }
+
+ public ReportJobDefinition createJobDefinition()
+ {
+ return new DefaultReportJobDefinition(metaData);
+ }
+
+ /**
+ * Open points: How to define scheduling?
+ *
+ * @return the report job definition for the job description.
+ *
+ * @throws com.sun.star.report.JobDefinitionException
+ *
+ */
+ public ReportJob createJob(final ReportJobDefinition definition)
+ throws JobDefinitionException
+ {
+ return new PentahoReportJob(definition);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportEngineMetaData.java b/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportEngineMetaData.java
new file mode 100644
index 000000000000..c32f490c9b73
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportEngineMetaData.java
@@ -0,0 +1,147 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.ReportEngineMetaData;
+import com.sun.star.report.ReportEngineParameterNames;
+import com.sun.star.report.ReportJobFactory;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.pentaho.reporting.libraries.base.util.HashNMap;
+
+
+public class PentahoReportEngineMetaData
+ implements ReportEngineMetaData
+{
+
+ public static final String OPENDOCUMENT_TEXT = "application/vnd.oasis.opendocument.text";
+ public static final String OPENDOCUMENT_SPREADSHEET = "application/vnd.oasis.opendocument.spreadsheet";
+ public static final String OPENDOCUMENT_CHART = "application/vnd.oasis.opendocument.chart";
+ public final static String CONTENT_TYPE = "content-type";
+ public static final String DEBUG = "raw/text+xml";
+ private final Set mandatoryParameters;
+ private final Map parameterTypes;
+ private final HashNMap enumerationValues;
+
+ public PentahoReportEngineMetaData()
+ {
+ mandatoryParameters = new HashSet();
+ mandatoryParameters.add(ReportEngineParameterNames.CONTENT_TYPE);
+ mandatoryParameters.add(ReportEngineParameterNames.INPUT_NAME);
+ mandatoryParameters.add(ReportEngineParameterNames.INPUT_REPOSITORY);
+ mandatoryParameters.add(ReportEngineParameterNames.OUTPUT_NAME);
+ mandatoryParameters.add(ReportEngineParameterNames.OUTPUT_REPOSITORY);
+ mandatoryParameters.add(ReportEngineParameterNames.INPUT_DATASOURCE_FACTORY);
+ mandatoryParameters.add(ReportEngineParameterNames.IMAGE_SERVICE);
+ mandatoryParameters.add(ReportEngineParameterNames.INPUT_REPORTJOB_FACTORY);
+ mandatoryParameters.add(ReportEngineParameterNames.INPUT_MASTER_COLUMNS);
+ mandatoryParameters.add(ReportEngineParameterNames.INPUT_MASTER_VALUES);
+ mandatoryParameters.add(ReportEngineParameterNames.INPUT_DETAIL_COLUMNS);
+ mandatoryParameters.add(ReportEngineParameterNames.AUTHOR);
+ mandatoryParameters.add(ReportEngineParameterNames.TITLE);
+ mandatoryParameters.add(ReportEngineParameterNames.MAXROWS);
+
+
+ parameterTypes = new HashMap();
+ parameterTypes.put(ReportEngineParameterNames.CONTENT_TYPE, String.class);
+ parameterTypes.put(ReportEngineParameterNames.INPUT_NAME, String.class);
+ parameterTypes.put(ReportEngineParameterNames.OUTPUT_NAME, String.class);
+ parameterTypes.put(ReportEngineParameterNames.INPUT_REPOSITORY, InputRepository.class);
+ parameterTypes.put(ReportEngineParameterNames.OUTPUT_REPOSITORY, OutputRepository.class);
+ parameterTypes.put(ReportEngineParameterNames.INPUT_DATASOURCE_FACTORY, DataSourceFactory.class);
+ parameterTypes.put(ReportEngineParameterNames.IMAGE_SERVICE, ImageService.class);
+ parameterTypes.put(ReportEngineParameterNames.INPUT_REPORTJOB_FACTORY, ReportJobFactory.class);
+ parameterTypes.put(ReportEngineParameterNames.INPUT_MASTER_COLUMNS, List.class);
+ parameterTypes.put(ReportEngineParameterNames.INPUT_MASTER_VALUES, List.class);
+ parameterTypes.put(ReportEngineParameterNames.INPUT_DETAIL_COLUMNS, List.class);
+ parameterTypes.put(ReportEngineParameterNames.AUTHOR, String.class);
+ parameterTypes.put(ReportEngineParameterNames.TITLE, String.class);
+ parameterTypes.put(ReportEngineParameterNames.MAXROWS, Integer.class);
+
+ enumerationValues = new HashNMap();
+ enumerationValues.add(CONTENT_TYPE,
+ PentahoReportEngineMetaData.OPENDOCUMENT_TEXT);
+ enumerationValues.add(CONTENT_TYPE,
+ PentahoReportEngineMetaData.OPENDOCUMENT_SPREADSHEET);
+ enumerationValues.add(CONTENT_TYPE,
+ PentahoReportEngineMetaData.OPENDOCUMENT_CHART);
+ enumerationValues.add(CONTENT_TYPE, PentahoReportEngineMetaData.DEBUG);
+ }
+
+ public Object[] getEnumerationValues(final String parameter)
+ {
+ return enumerationValues.toArray(parameter);
+ }
+
+ public Class getParameterType(final String parameter)
+ {
+ return (Class) parameterTypes.get(parameter);
+ }
+
+ public boolean isEnumeration(final String parameter)
+ {
+ return enumerationValues.containsKey(parameter);
+ }
+
+ /**
+ * Checks, whether a certain output type is available. Feed the mime-type of the output
+ * type in and you'll get a true or false back.
+ *
+ * @param mimeType
+ * @return true, if the output type is supported; false otherwise.
+ */
+ public boolean isOutputSupported(final String mimeType)
+ {
+ return enumerationValues.containsValue(CONTENT_TYPE, mimeType.toLowerCase());
+ }
+
+ /**
+ * Lists all supported output parameters for the given mime-type. This listing can be
+ * used to build a generic user interface for configuring a certain output.
+ *
+ * @param mimeType
+ * @return
+ */
+ public String[] getOutputParameters(final String mimeType)
+ {
+ return new String[0];
+ }
+
+ public boolean isMandatory(final String parameter)
+ {
+ return mandatoryParameters.contains(parameter);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportJob.java b/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportJob.java
new file mode 100644
index 000000000000..a30a97a1e7e1
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/PentahoReportJob.java
@@ -0,0 +1,419 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.JobDefinitionException;
+import com.sun.star.report.JobProgressIndicator;
+import com.sun.star.report.JobProperties;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.ParameterMap;
+import com.sun.star.report.ReportEngineParameterNames;
+import com.sun.star.report.ReportExecutionException;
+import com.sun.star.report.ReportJob;
+import com.sun.star.report.ReportJobDefinition;
+import com.sun.star.report.SDBCReportDataFactory;
+import com.sun.star.report.pentaho.loader.InputRepositoryLoader;
+import com.sun.star.report.pentaho.model.OfficeDetailSection;
+import com.sun.star.report.pentaho.model.OfficeDocument;
+import com.sun.star.report.pentaho.model.OfficeGroup;
+import com.sun.star.report.pentaho.model.OfficeReport;
+import com.sun.star.report.pentaho.output.chart.ChartRawReportProcessor;
+import com.sun.star.report.pentaho.output.spreadsheet.SpreadsheetRawReportProcessor;
+import com.sun.star.report.pentaho.output.text.TextRawReportProcessor;
+
+import java.io.IOException;
+
+import java.lang.Integer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.jfree.report.expressions.Expression;
+import org.jfree.report.expressions.FormulaExpression;
+import org.jfree.report.flow.DefaultReportJob;
+import org.jfree.report.flow.ReportProcessor;
+import org.jfree.report.flow.raw.XmlPrintReportProcessor;
+import org.jfree.report.structure.Node;
+import org.jfree.report.structure.Section;
+import org.jfree.report.util.ReportParameters;
+
+import org.pentaho.reporting.libraries.formula.lvalues.ContextLookup;
+import org.pentaho.reporting.libraries.formula.lvalues.FormulaFunction;
+import org.pentaho.reporting.libraries.formula.lvalues.LValue;
+import org.pentaho.reporting.libraries.formula.lvalues.Term;
+import org.pentaho.reporting.libraries.formula.parser.FormulaParser;
+import org.pentaho.reporting.libraries.formula.parser.ParseException;
+import org.pentaho.reporting.libraries.resourceloader.Resource;
+import org.pentaho.reporting.libraries.resourceloader.ResourceException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+
+
+/**
+ * ToDo: Allow interrupting of jobs and report the report progress
+ */
+public class PentahoReportJob implements ReportJob
+{
+
+ private static final Log LOGGER = LogFactory.getLog(PentahoReportJob.class);
+ private boolean finished;
+ private final List listeners;
+ private final DataSourceFactory dataSourceFactory;
+ private final OutputRepository outputRepository;
+ private final JobProperties jobProperties;
+ private OfficeDocument report;
+ private final ResourceManager resourceManager;
+ private final String outputName;
+ private final ImageService imageService;
+ private final InputRepository inputRepository;
+ private final ReportJobDefinition definition;
+ private final List masterValues;
+ private final List detailColumns;
+
+ public ReportJobDefinition getDefinition()
+ {
+ return definition;
+ }
+
+ public PentahoReportJob(final ReportJobDefinition definition)
+ throws JobDefinitionException
+ {
+ if (definition == null)
+ {
+ throw new NullPointerException();
+ }
+
+ this.definition = definition;
+ this.listeners = new ArrayList();
+ this.jobProperties = definition.getProcessingParameters().copy();
+
+ this.dataSourceFactory = (DataSourceFactory) jobProperties.getProperty(ReportEngineParameterNames.INPUT_DATASOURCE_FACTORY);
+ if (this.dataSourceFactory == null)
+ {
+ throw new JobDefinitionException("DataSourceFactory must not be null.");
+ }
+
+ this.outputRepository = (OutputRepository) jobProperties.getProperty(ReportEngineParameterNames.OUTPUT_REPOSITORY);
+ if (this.outputRepository == null)
+ {
+ throw new JobDefinitionException("OutputRepository must not be null.");
+ }
+
+ this.inputRepository =
+ (InputRepository) jobProperties.getProperty(ReportEngineParameterNames.INPUT_REPOSITORY);
+ if (inputRepository == null)
+ {
+ throw new JobDefinitionException("InputRepository must not be null.");
+ }
+
+ this.outputName = (String) jobProperties.getProperty(ReportEngineParameterNames.OUTPUT_NAME);
+ if (outputName == null)
+ {
+ throw new JobDefinitionException("OutputName must not be null");
+ }
+
+ this.imageService = (ImageService) jobProperties.getProperty(ReportEngineParameterNames.IMAGE_SERVICE);
+ if (imageService == null)
+ {
+ throw new JobDefinitionException("A valid image-service implementation must be given.");
+ }
+
+ this.masterValues = (ArrayList) jobProperties.getProperty(ReportEngineParameterNames.INPUT_MASTER_VALUES);
+ this.detailColumns = (ArrayList) jobProperties.getProperty(ReportEngineParameterNames.INPUT_DETAIL_COLUMNS);
+ Integer maxRows=(Integer) jobProperties.getProperty(ReportEngineParameterNames.MAXROWS);
+
+ this.resourceManager = new ResourceManager();
+ this.resourceManager.registerDefaults();
+ this.resourceManager.registerLoader(new InputRepositoryLoader(inputRepository));
+
+ try
+ {
+ this.report = parseReport(definition);
+ }
+ catch (ResourceException e)
+ {
+ throw new JobDefinitionException("Failed to parse the report.", e);
+ }
+ }
+
+ private OfficeDocument parseReport(final ReportJobDefinition definition)
+ throws ResourceException, JobDefinitionException
+ {
+ final String reportResource = (String) this.jobProperties.getProperty(ReportEngineParameterNames.INPUT_NAME);
+ if (reportResource == null)
+ {
+ throw new JobDefinitionException("Report definition name must be given");
+ }
+
+ final Resource res = resourceManager.createDirectly("sun:oo://" + reportResource, OfficeDocument.class);
+ final OfficeDocument tempReport = (OfficeDocument) res.getResource();
+ tempReport.setDataFactory(new StarReportDataFactory(dataSourceFactory));
+ tempReport.setJobProperties(definition.getProcessingParameters().copy());
+ final ReportParameters inputParameters = tempReport.getInputParameters();
+
+ final ParameterMap queryParameters = definition.getQueryParameters();
+ final String[] paramKeys = queryParameters.keys();
+ for (int i = 0; i < paramKeys.length; i++)
+ {
+ final String key = paramKeys[i];
+ inputParameters.put(key, queryParameters.get(key));
+ }
+
+ return tempReport;
+ }
+
+ public void addProgressIndicator(final JobProgressIndicator indicator)
+ {
+ listeners.add(indicator);
+ }
+
+ /**
+ * Interrupt the job.
+ */
+ public void interrupt()
+ {
+ // hey, not yet ..
+ }
+
+ /**
+ * Queries the jobs result status.
+ *
+ * @return true, if the job is finished (or has been interrupted), false if the job
+ * waits for activation.
+ */
+ public boolean isFinished()
+ {
+ return finished;
+ }
+
+ public void finish()
+ {
+ finished = true;
+ }
+
+ /**
+ * Queries the jobs execution status.
+ *
+ * @return true, if the job is currently running, false otherwise.
+ */
+ public boolean isRunning()
+ {
+ return !finished;
+ }
+
+ public void removeProgressIndicator(final JobProgressIndicator indicator)
+ {
+ listeners.remove(indicator);
+ }
+
+ private void collectGroupExpressions(final Node[] nodes, final List expressions, final FormulaParser parser, final Expression reportFunctions[])
+ {
+ for (int i = 0; i < nodes.length; i++)
+ {
+ final Node node = nodes[i];
+ if (node instanceof OfficeGroup)
+ {
+ final OfficeGroup group = (OfficeGroup) node;
+ final FormulaExpression exp = (FormulaExpression) group.getGroupingExpression();
+ if (exp == null)
+ {
+ continue;
+ }
+
+ try
+ {
+ final String expression = exp.getFormulaExpression();
+ if (expression == null)
+ {
+ continue;
+ }
+ final FormulaFunction function = (FormulaFunction) parser.parse(expression);
+ final LValue[] parameters = function.getChildValues();
+ if (parameters.length > 0)
+ {
+ String name = parameters[0].toString();
+ if (parameters[0] instanceof ContextLookup)
+ {
+ final ContextLookup context = (ContextLookup) parameters[0];
+ name = context.getName();
+ }
+ for (int j = 0; j < reportFunctions.length; j++)
+ {
+ if (reportFunctions[j] instanceof FormulaExpression)
+ {
+ final FormulaExpression reportExp = (FormulaExpression) reportFunctions[j];
+
+ if (reportExp.getName().equals(name))
+ {
+ LValue val = parser.parse(reportExp.getFormulaExpression());
+ while( !(val instanceof ContextLookup))
+ {
+ if (val instanceof Term)
+ {
+ val = ((Term)val).getHeadValue();
+ }
+ else if (val instanceof FormulaFunction)
+ {
+ final FormulaFunction reportFunction = (FormulaFunction) val;
+ val = reportFunction.getChildValues()[0];
+ }
+ }
+ if (val instanceof ContextLookup)
+ {
+ final ContextLookup context = (ContextLookup) val;
+ name = context.getName();
+ }
+ break;
+ }
+ }
+ }
+
+ final Object[] pair = new Object[2];
+ pair[0] = name;
+ pair[1] = group.getAttribute(OfficeNamespaces.OOREPORT_NS, "sort-ascending");
+ expressions.add(pair);
+ }
+ }
+ catch (ParseException ex)
+ {
+ LOGGER.error("ReportProcessing failed", ex);
+ }
+ }
+ else if (node instanceof OfficeDetailSection)
+ {
+ return;
+ }
+ if (node instanceof Section)
+ {
+ final Section section = (Section) node;
+ collectGroupExpressions(section.getNodeArray(), expressions, parser, reportFunctions);
+ }
+ }
+ }
+
+ private void setMetaDataProperties(DefaultReportJob job)
+ {
+ job.getConfiguration().setConfigProperty(ReportEngineParameterNames.AUTHOR, (String) jobProperties.getProperty(ReportEngineParameterNames.AUTHOR));
+ job.getConfiguration().setConfigProperty(ReportEngineParameterNames.TITLE, (String) jobProperties.getProperty(ReportEngineParameterNames.TITLE));
+ }
+
+ /**
+ * Although we might want to run the job as soon as it has been created, sometimes it is
+ * wiser to let the user add some listeners first. If we execute at once, the user
+ * either has to deal with threading code or wont receive any progress information in
+ * single threaded environments.
+ */
+ public void execute()
+ throws ReportExecutionException, IOException
+ {
+ final DefaultReportJob job = new DefaultReportJob(report);
+ setMetaDataProperties(job);
+ final String contentType = (String) jobProperties.getProperty(ReportEngineParameterNames.CONTENT_TYPE);
+ //noinspection OverlyBroadCatchBlock
+ try
+ {
+ final ReportParameters parameters = job.getParameters();
+
+ if (masterValues != null && detailColumns != null)
+ {
+ parameters.put(SDBCReportDataFactory.MASTER_VALUES, masterValues);
+ parameters.put(SDBCReportDataFactory.DETAIL_COLUMNS, detailColumns);
+ }
+
+ final Node[] nodes = report.getNodeArray();
+
+ final FormulaParser parser = new FormulaParser();
+ final ArrayList expressions = new ArrayList();
+ final OfficeReport officeReport = (OfficeReport) ((Section) nodes[0]).getNode(0);
+ final Section reportBody = (Section) officeReport.getBodySection();
+ collectGroupExpressions(reportBody.getNodeArray(), expressions, parser, officeReport.getExpressions());
+ parameters.put(SDBCReportDataFactory.GROUP_EXPRESSIONS, expressions);
+ final String command = (String) officeReport.getAttribute(OfficeNamespaces.OOREPORT_NS, "command");
+ final String commandType = (String) officeReport.getAttribute(OfficeNamespaces.OOREPORT_NS, SDBCReportDataFactory.COMMAND_TYPE);
+ final String escapeProcessing = (String) officeReport.getAttribute(OfficeNamespaces.OOREPORT_NS, SDBCReportDataFactory.ESCAPE_PROCESSING);
+ report.setQuery(command);
+ parameters.put(SDBCReportDataFactory.COMMAND_TYPE, commandType);
+ parameters.put(SDBCReportDataFactory.ESCAPE_PROCESSING, !("false".equals(escapeProcessing)));
+
+ final String filter = (String) officeReport.getAttribute(OfficeNamespaces.OOREPORT_NS, "filter");
+ parameters.put(SDBCReportDataFactory.UNO_FILTER, filter);
+
+ parameters.put(ReportEngineParameterNames.MAXROWS, report.getJobProperties().getProperty(ReportEngineParameterNames.MAXROWS));
+
+ final long startTime = System.currentTimeMillis();
+ final ReportProcessor rp = getProcessorForContentType(contentType);
+ rp.processReport(job);
+ job.close();
+ final long endTime = System.currentTimeMillis();
+ LOGGER.debug("Report processing time: " + (endTime - startTime));
+ }
+ catch (final Exception e)
+ {
+ String message = e.getMessage();
+ if (message == null || message.length() == 0)
+ {
+ message = "Failed to process the report";
+ }
+ throw new ReportExecutionException(message, e);
+ }
+
+ }
+
+ protected ReportProcessor getProcessorForContentType(final String mimeType)
+ throws ReportExecutionException
+ {
+ final ReportProcessor ret;
+
+ if (PentahoReportEngineMetaData.OPENDOCUMENT_SPREADSHEET.equals(mimeType))
+ {
+ ret = new SpreadsheetRawReportProcessor(inputRepository, outputRepository, outputName, imageService, dataSourceFactory);
+ }
+ else if (PentahoReportEngineMetaData.OPENDOCUMENT_TEXT.equals(mimeType))
+ {
+ ret = new TextRawReportProcessor(inputRepository, outputRepository, outputName, imageService, dataSourceFactory);
+ }
+ else if (PentahoReportEngineMetaData.OPENDOCUMENT_CHART.equals(mimeType))
+ {
+ ret = new ChartRawReportProcessor(inputRepository, outputRepository, outputName, imageService, dataSourceFactory);
+ }
+ else if (PentahoReportEngineMetaData.DEBUG.equals(mimeType))
+ {
+ ret = new XmlPrintReportProcessor(System.out, "ISO-8859-1");
+ }
+ else
+ {
+ throw new ReportExecutionException("Invalid mime-type");
+ }
+
+ return ret;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/SOFormulaOpCodeMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/SOFormulaOpCodeMapper.java
new file mode 100644
index 000000000000..f5d6d654aa0e
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/SOFormulaOpCodeMapper.java
@@ -0,0 +1,153 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.sheet.FormulaLanguage;
+import com.sun.star.sheet.FormulaMapGroup;
+import com.sun.star.sheet.FormulaOpCodeMapEntry;
+import com.sun.star.sheet.FormulaToken;
+
+import java.util.ArrayList;
+import java.util.Map;
+
+public final class SOFormulaOpCodeMapper extends WeakBase
+ implements com.sun.star.sheet.XFormulaOpCodeMapper, XServiceInfo
+{
+
+ private static final String __serviceName = "com.sun.star.report.pentaho.SOFormulaOpCodeMapper";
+ private final SOFormulaParser parser;
+ // attributes
+ final private int m_OpCodeExternal = 0;
+ final private int m_OpCodeUnknown = 0;
+
+ public SOFormulaOpCodeMapper(SOFormulaParser parser)
+ {
+ this.parser = parser;
+ }
+
+ // com.sun.star.sheet.XFormulaOpCodeMapper:
+ public int getOpCodeExternal()
+ {
+ return m_OpCodeExternal;
+ }
+
+ public int getOpCodeUnknown()
+ {
+ return m_OpCodeUnknown;
+ }
+
+ public com.sun.star.sheet.FormulaToken[] getMappings(String[] Names, int Language) throws com.sun.star.lang.IllegalArgumentException
+ {
+ if (Language != FormulaLanguage.ODFF)
+ {
+ throw new IllegalArgumentException();
+ }
+ final ArrayList token = new ArrayList();
+ final Map parserNames = parser.getNames();
+ for (int i = 0; i < Names.length; i++)
+ {
+ if (parserNames.containsKey(Names[i]))
+ {
+ token.add(((FormulaOpCodeMapEntry) parserNames.get(Names[i])).Token);
+ }
+
+ }
+ return (com.sun.star.sheet.FormulaToken[]) token.toArray(new FormulaToken[token.size()]);
+ }
+
+ public com.sun.star.sheet.FormulaOpCodeMapEntry[] getAvailableMappings(int Language, int Groups) throws com.sun.star.lang.IllegalArgumentException
+ {
+ if (Language != FormulaLanguage.ODFF)
+ {
+ throw new IllegalArgumentException();
+ }
+ final ArrayList token = new ArrayList();
+ if (Groups == FormulaMapGroup.SPECIAL)
+ {
+ return (com.sun.star.sheet.FormulaOpCodeMapEntry[]) parser.getSpecialOpCodes().toArray(new FormulaOpCodeMapEntry[parser.getSpecialOpCodes().size()]);
+ }
+ else
+ {
+ if ((Groups & FormulaMapGroup.ARRAY_SEPARATORS) != 0)
+ {
+ token.addAll(parser.getGroup(SOFormulaParser.ARRAY_SEPARATORS).values());
+ }
+ if ((Groups & FormulaMapGroup.SEPARATORS) != 0)
+ {
+ token.addAll(parser.getGroup(SOFormulaParser.SEPARATORS).values());
+ }
+ if ((Groups & FormulaMapGroup.ARRAY_SEPARATORS) != 0)
+ {
+ token.addAll(parser.getGroup(SOFormulaParser.ARRAY_SEPARATORS).values());
+ }
+ if ((Groups & FormulaMapGroup.UNARY_OPERATORS) != 0)
+ {
+ token.addAll(parser.getGroup(SOFormulaParser.UNARY_OPERATORS).values());
+ }
+ if ((Groups & FormulaMapGroup.BINARY_OPERATORS) != 0)
+ {
+ token.addAll(parser.getGroup(SOFormulaParser.BINARY_OPERATORS).values());
+ }
+ if ((Groups & FormulaMapGroup.FUNCTIONS) != 0)
+ {
+ token.addAll(parser.getGroup(SOFormulaParser.FUNCTIONS).values());
+ }
+ }
+
+ return (com.sun.star.sheet.FormulaOpCodeMapEntry[]) token.toArray(new FormulaOpCodeMapEntry[token.size()]);
+ }
+
+ public String getImplementationName()
+ {
+ return SOFormulaOpCodeMapper.class.getName();
+ }
+
+ public boolean supportsService(String sServiceName)
+ {
+ return sServiceName.equals(__serviceName);
+ }
+
+ public String[] getSupportedServiceNames()
+ {
+ return getServiceNames();
+ }
+
+ /**
+ * This method is a simple helper function to used in the static component initialisation functions as well as
+ * in getSupportedServiceNames.
+ * @return
+ */
+ public static String[] getServiceNames()
+ {
+ return new String[]
+ {
+ __serviceName
+ };
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/SOFormulaParser.java b/reportbuilder/java/com/sun/star/report/pentaho/SOFormulaParser.java
new file mode 100644
index 000000000000..4dbf435f28ec
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/SOFormulaParser.java
@@ -0,0 +1,446 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lib.uno.helper.ComponentBase;
+import com.sun.star.lib.uno.helper.PropertySetMixin;
+import com.sun.star.sheet.FormulaLanguage;
+import com.sun.star.sheet.FormulaMapGroup;
+import com.sun.star.sheet.FormulaMapGroupSpecialOffset;
+import com.sun.star.sheet.FormulaOpCodeMapEntry;
+import com.sun.star.sheet.FormulaToken;
+import com.sun.star.sheet.XFormulaOpCodeMapper;
+import com.sun.star.uno.Any;
+import com.sun.star.uno.Exception;
+import com.sun.star.uno.Type;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+
+import java.io.StringReader;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.pentaho.reporting.libraries.base.config.Configuration;
+import org.pentaho.reporting.libraries.formula.DefaultFormulaContext;
+import org.pentaho.reporting.libraries.formula.function.FunctionRegistry;
+import org.pentaho.reporting.libraries.formula.parser.FormulaParser;
+import org.pentaho.reporting.libraries.formula.parser.GeneratedFormulaParserConstants;
+import org.pentaho.reporting.libraries.formula.parser.GeneratedFormulaParserTokenManager;
+import org.pentaho.reporting.libraries.formula.parser.JavaCharStream;
+import org.pentaho.reporting.libraries.formula.parser.ParseException;
+import org.pentaho.reporting.libraries.formula.parser.Token;
+import org.pentaho.reporting.libraries.formula.parser.TokenMgrError;
+
+
+public final class SOFormulaParser extends ComponentBase
+ implements com.sun.star.report.meta.XFormulaParser, XServiceInfo
+{
+
+ public static final int SEPARATORS = 0;
+ public static final int ARRAY_SEPARATORS = 1;
+ public static final int UNARY_OPERATORS = 2;
+ public static final int BINARY_OPERATORS = 3;
+ public static final int FUNCTIONS = 4;
+ private final XComponentContext m_xContext;
+ private final PropertySetMixin m_prophlp;
+ private static final String __serviceName = "com.sun.star.report.meta.FormulaParser";
+ private static final String OPERATORS = "org.pentaho.reporting.libraries.formula.operators.";
+ // attributes
+ final private List m_OpCodeMap = new ArrayList();
+ private XFormulaOpCodeMapper formulaOpCodeMapper = null;
+ private final Map parserAllOpCodes = new HashMap();
+ private final Map parserNames = new HashMap();
+ private final Map[] groupOpCodes = new HashMap[5];
+ private final List specialOpCodes = new ArrayList();
+
+ public List getSpecialOpCodes()
+ {
+ return specialOpCodes;
+ }
+ private int ownTokenCounter = 1000;
+ private final FormulaOpCodeMapEntry opCodePush;
+ private final FormulaParser parser;
+
+ public SOFormulaParser(final XComponentContext context)
+ {
+
+ m_xContext = context;
+ final ClassLoader cl = java.lang.Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+
+ parser = new FormulaParser();
+ try
+ {
+ final XFormulaOpCodeMapper mapper = (XFormulaOpCodeMapper) UnoRuntime.queryInterface(XFormulaOpCodeMapper.class, m_xContext.getServiceManager().createInstanceWithContext("simple.formula.FormulaOpCodeMapperObj", m_xContext));
+ FormulaOpCodeMapEntry[] opCodes = mapper.getAvailableMappings(FormulaLanguage.ODFF, FormulaMapGroup.FUNCTIONS);
+ final DefaultFormulaContext defaultContext = new DefaultFormulaContext();
+ final FunctionRegistry functionRegistry = defaultContext.getFunctionRegistry();
+
+ String[] names = functionRegistry.getFunctionNames();
+ addOpCodes(names, opCodes, FUNCTIONS);
+ names = getOperators(defaultContext, OPERATORS);
+ opCodes = mapper.getAvailableMappings(FormulaLanguage.ODFF, FormulaMapGroup.UNARY_OPERATORS);
+ addOpCodes(names, opCodes, UNARY_OPERATORS);
+ opCodes = mapper.getAvailableMappings(FormulaLanguage.ODFF, FormulaMapGroup.BINARY_OPERATORS);
+ addOpCodes(names, opCodes, BINARY_OPERATORS);
+
+ names = GeneratedFormulaParserConstants.tokenImage.clone();
+ for (int i = 0; i < names.length; i++)
+ {
+ final String token = names[i];
+ if (token != null && token.length() > 0 && token.charAt(0) == '"')
+ {
+ names[i] = token.substring(1, token.length() - 1);
+ }
+ }
+ opCodes = mapper.getAvailableMappings(FormulaLanguage.ODFF, FormulaMapGroup.SEPARATORS);
+ addOpCodes(names, opCodes, SEPARATORS, false);
+
+ opCodes = mapper.getAvailableMappings(FormulaLanguage.ODFF, FormulaMapGroup.ARRAY_SEPARATORS);
+ addOpCodes(names, opCodes, ARRAY_SEPARATORS, false);
+
+ opCodes = mapper.getAvailableMappings(FormulaLanguage.ODFF, FormulaMapGroup.SPECIAL);
+
+ for (int i = 0; i < opCodes.length; i++)
+ {
+ final FormulaOpCodeMapEntry opCode = opCodes[i];
+ parserAllOpCodes.put(opCode.Token.OpCode, opCode);
+ specialOpCodes.add(opCode);
+ }
+ // addOpCodes(names, opCodes,SPECIAL,false);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ opCodePush = (FormulaOpCodeMapEntry) specialOpCodes.get(FormulaMapGroupSpecialOffset.PUSH);
+ Thread.currentThread().setContextClassLoader(cl);
+ // use the last parameter of the PropertySetMixin constructor
+ // for your optional attributes if necessary. See the documentation
+ // of the PropertySetMixin helper for further information.
+ // Ensure that your attributes are initialized correctly!
+ m_prophlp = new PropertySetMixin(m_xContext, this,
+ new Type(com.sun.star.report.meta.XFormulaParser.class), null);
+ }
+
+ // com.sun.star.sheet.XFormulaParser:
+ public com.sun.star.sheet.FormulaToken[] parseFormula(String aFormula, com.sun.star.table.CellAddress aReferencePos)
+ {
+ final ArrayList tokens = new ArrayList();
+ if (!"=".equals(aFormula))
+ {
+ String formula;
+ if (aFormula.charAt(0) == '=')
+ {
+ formula = aFormula.substring(1);
+ }
+ else
+ {
+ formula = aFormula;
+ }
+ final ArrayList images = new ArrayList();
+ try
+ {
+ int brackets = 0;
+ final GeneratedFormulaParserTokenManager tokenParser = new GeneratedFormulaParserTokenManager(new JavaCharStream(new StringReader(formula), 1, 1));
+ Token token = tokenParser.getNextToken();
+ while (token.kind != GeneratedFormulaParserConstants.EOF)
+ {
+ final FormulaToken formulaToken;
+ images.add(token.image);
+ final String upper = token.image.toUpperCase();
+ if (parserNames.containsKey(upper))
+ {
+ if ("(".equals(token.image))
+ {
+ brackets++;
+ }
+ else if (")".equals(token.image))
+ {
+ --brackets;
+ }
+ final FormulaOpCodeMapEntry opCode = (FormulaOpCodeMapEntry) parserNames.get(upper);
+ formulaToken = opCode.Token;
+ }
+ else if (token.kind == GeneratedFormulaParserConstants.WHITESPACE)
+ {
+ final FormulaOpCodeMapEntry opCode = (FormulaOpCodeMapEntry) specialOpCodes.get(FormulaMapGroupSpecialOffset.SPACES);
+ formulaToken = opCode.Token;
+ }
+ else
+ {
+ formulaToken = new FormulaToken();
+ formulaToken.OpCode = opCodePush.Token.OpCode;
+ formulaToken.Data = new Any(Type.STRING, token.image);
+ }
+
+ tokens.add(formulaToken);
+ token = tokenParser.getNextToken();
+ }
+ if (brackets > 0)
+ {
+ final FormulaOpCodeMapEntry opCode = (FormulaOpCodeMapEntry) parserNames.get(")");
+ while (brackets-- != 0)
+ {
+ formula = formula.concat(")");
+ images.add(")");
+ tokens.add(opCode.Token);
+ }
+
+ }
+
+ parser.parse(formula);
+ }
+ catch (ParseException ex)
+ {
+ boolean found = false;
+ // error occured so all token must be bad
+ for (int i = 0; i < tokens.size(); i++)
+ {
+ if (!found && ex.currentToken != null && images.get(i).equals(ex.currentToken.image))
+ {
+ found = true;
+ }
+ if (found)
+ {
+ final FormulaToken dest = new FormulaToken();
+ dest.OpCode = ((FormulaOpCodeMapEntry) specialOpCodes.get(FormulaMapGroupSpecialOffset.BAD)).Token.OpCode;
+ dest.Data = new Any(Type.STRING, images.get(i));
+ tokens.remove(i);
+ tokens.add(i, dest);
+ }
+ }
+ }
+ catch (java.lang.Exception e)
+ {
+ }
+ catch (TokenMgrError e)
+ {
+ }
+ }
+ return (FormulaToken[]) tokens.toArray(new FormulaToken[tokens.size()]);
+ }
+
+ public String printFormula(com.sun.star.sheet.FormulaToken[] aTokens, com.sun.star.table.CellAddress aReferencePos)
+ {
+ final StringBuffer ret = new StringBuffer();
+ for (int i = 0; i < aTokens.length; i++)
+ {
+ final FormulaToken formulaToken = aTokens[i];
+ if (formulaToken.OpCode == opCodePush.Token.OpCode && !formulaToken.Data.equals(Any.VOID))
+ {
+ ret.append(formulaToken.Data);
+ }
+ else if (parserAllOpCodes.containsKey(formulaToken.OpCode))
+ {
+ final FormulaOpCodeMapEntry opCode = (FormulaOpCodeMapEntry) parserAllOpCodes.get(formulaToken.OpCode);
+ if (opCode.Name.length() > 0)
+ {
+ ret.append(opCode.Name);
+ }
+ else if (!formulaToken.Data.equals(Any.VOID))
+ {
+ ret.append(formulaToken.Data);
+ }
+ }
+ }
+ return ret.toString();
+ }
+
+ // com.sun.star.beans.XPropertySet:
+ public com.sun.star.beans.XPropertySetInfo getPropertySetInfo()
+ {
+ return m_prophlp.getPropertySetInfo();
+ }
+
+ public void setPropertyValue(String aPropertyName, Object aValue) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.beans.PropertyVetoException, com.sun.star.lang.IllegalArgumentException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.setPropertyValue(aPropertyName, aValue);
+ }
+
+ public Object getPropertyValue(String aPropertyName) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ return m_prophlp.getPropertyValue(aPropertyName);
+ }
+
+ public void addPropertyChangeListener(String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.addPropertyChangeListener(aPropertyName, xListener);
+ }
+
+ public void removePropertyChangeListener(String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.removePropertyChangeListener(aPropertyName, xListener);
+ }
+
+ public void addVetoableChangeListener(String aPropertyName, com.sun.star.beans.XVetoableChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.addVetoableChangeListener(aPropertyName, xListener);
+ }
+
+ public void removeVetoableChangeListener(String aPropertyName, com.sun.star.beans.XVetoableChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.removeVetoableChangeListener(aPropertyName, xListener);
+ }
+
+ // com.sun.star.report.meta.XFormulaParser:
+ public com.sun.star.sheet.FormulaOpCodeMapEntry[] getOpCodeMap()
+ {
+ return (com.sun.star.sheet.FormulaOpCodeMapEntry[]) m_OpCodeMap.toArray(new FormulaOpCodeMapEntry[m_OpCodeMap.size()]);
+ }
+
+ public void setOpCodeMap(com.sun.star.sheet.FormulaOpCodeMapEntry[] the_value)
+ {
+// m_prophlp.prepareSet("OpCodeMap", null);
+// synchronized (this)
+// {
+// m_OpCodeMap.clear();
+// }
+ }
+
+ public String getImplementationName()
+ {
+ return SOFormulaParser.class.getName();
+ }
+
+ public boolean supportsService(String sServiceName)
+ {
+ return sServiceName.equals(__serviceName);
+ }
+
+ public String[] getSupportedServiceNames()
+ {
+ return getServiceNames();
+ }
+
+ /**
+ * This method is a simple helper function to used in the static component initialisation functions as well as
+ * in getSupportedServiceNames.
+ * @return
+ */
+ public static String[] getServiceNames()
+ {
+ return new String[]
+ {
+ __serviceName
+ };
+ }
+
+ public XFormulaOpCodeMapper getFormulaOpCodeMapper()
+ {
+ if (formulaOpCodeMapper == null)
+ {
+ formulaOpCodeMapper = new SOFormulaOpCodeMapper(this);
+ }
+
+ return formulaOpCodeMapper;
+ }
+
+ private void addOpCodes(String[] names, FormulaOpCodeMapEntry[] opCodes, int group)
+ {
+ addOpCodes(names, opCodes, group, true);
+ }
+
+ private void addOpCodes(String[] names, FormulaOpCodeMapEntry[] opCodes, int group, boolean add)
+ {
+ groupOpCodes[group] = new HashMap();
+ for (int j = 0; j < names.length; j++)
+ {
+ FormulaOpCodeMapEntry opCode = null;
+ int i = 0;
+ for (; i < opCodes.length; i++)
+ {
+ opCode = opCodes[i];
+ if (names[j].equals(opCode.Name))
+ {
+ break;
+ }
+ }
+ if (i >= opCodes.length)
+ {
+ if (!add)
+ {
+ continue;
+ }
+ final FormulaToken token = new FormulaToken(ownTokenCounter++, Any.VOID);
+ opCode = new FormulaOpCodeMapEntry(names[j], token);
+ }
+ parserNames.put(names[j], opCode);
+ parserAllOpCodes.put(opCode.Token.OpCode, opCode);
+ groupOpCodes[group].put(opCode.Token.OpCode, opCode);
+ }
+ }
+
+ public Map getNames()
+ {
+ return parserNames;
+ }
+
+ public Map getGroup(int group)
+ {
+ return groupOpCodes[group];
+ }
+
+ private String[] getOperators(DefaultFormulaContext defaultContext, final String _kind)
+ {
+ final ArrayList ops = new ArrayList();
+ final Configuration configuration = defaultContext.getConfiguration();
+ final Iterator iter = configuration.findPropertyKeys(_kind);
+ while (iter.hasNext())
+ {
+ final String configKey = (String) iter.next();
+ if (!configKey.endsWith(".class"))
+ {
+ continue;
+ }
+ final String operatorClass = configuration.getConfigProperty(configKey);
+ if (operatorClass == null)
+ {
+ continue;
+ }
+ if (operatorClass.length() == 0)
+ {
+ continue;
+ }
+ final String tokenKey = configKey.substring(0, configKey.length() - ".class".length()) + ".token";
+ final String token = configuration.getConfigProperty(tokenKey);
+ if (token == null)
+ {
+ continue;
+ }
+ ops.add(token.trim());
+ }
+ return (String[]) ops.toArray(new String[ops.size()]);
+ }
+}
+
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/SOFunctionManager.java b/reportbuilder/java/com/sun/star/report/pentaho/SOFunctionManager.java
new file mode 100644
index 000000000000..7a7c1e159bf7
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/SOFunctionManager.java
@@ -0,0 +1,172 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.container.NoSuchElementException;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lib.uno.helper.ComponentBase;
+import com.sun.star.report.meta.XFunctionCategory;
+import com.sun.star.report.meta.XFunctionDescription;
+import com.sun.star.report.meta.XFunctionManager;
+import com.sun.star.uno.XComponentContext;
+
+import org.pentaho.reporting.libraries.formula.DefaultFormulaContext;
+import org.pentaho.reporting.libraries.formula.function.FunctionCategory;
+import org.pentaho.reporting.libraries.formula.function.FunctionDescription;
+import org.pentaho.reporting.libraries.formula.function.FunctionRegistry;
+
+/**
+ * This class capsulates the class, that implements the minimal component, a factory for creating the service
+ * (<CODE>__getComponentFactory</CODE>) and a method, that writes the information into the given registry key
+ * (<CODE>__writeRegistryServiceInfo</CODE>).
+ */
+public final class SOFunctionManager extends ComponentBase implements XFunctionManager, XServiceInfo
+{
+
+ private final XComponentContext m_xContext;
+ /**
+ * The service name, that must be used to get an instance of this service.
+ */
+ private static final String __serviceName =
+ "com.sun.star.report.meta.FunctionManager";
+ final private FunctionCategory[] categories;
+ final private FunctionRegistry functionRegistry;
+ final private DefaultFormulaContext defaultContext;
+
+ public SOFunctionManager(XComponentContext context)
+ {
+ m_xContext = context;
+ final ClassLoader cl = java.lang.Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ defaultContext = new DefaultFormulaContext();
+ functionRegistry = defaultContext.getFunctionRegistry();
+ categories = functionRegistry.getCategories();
+ Thread.currentThread().setContextClassLoader(cl);
+
+ }
+
+ /**
+ * This method returns an array of all supported service names.
+ *
+ * @return Array of supported service names.
+ */
+ public String[] getSupportedServiceNames()
+ {
+ return getServiceNames();
+ }
+
+ /**
+ * This method is a simple helper function to used in the static component initialisation functions as well as
+ * in getSupportedServiceNames.
+ * @return
+ */
+ public static String[] getServiceNames()
+ {
+ return new String[]
+ {
+ __serviceName
+ };
+ }
+
+ /**
+ * This method returns true, if the given service will be supported by the component.
+ *
+ * @param sServiceName Service name.
+ * @return True, if the given service name will be supported.
+ */
+ public boolean supportsService(final String sServiceName)
+ {
+ return sServiceName.equals(__serviceName);
+ }
+
+ /**
+ * Return the class name of the component.
+ *
+ * @return Class name of the component.
+ */
+ public String getImplementationName()
+ {
+ return SOFunctionManager.class.getName();
+ }
+
+ // com.sun.star.container.XElementAccess:
+ public com.sun.star.uno.Type getElementType()
+ {
+ return new com.sun.star.uno.Type(XFunctionCategory.class);
+ }
+
+ public boolean hasElements()
+ {
+ return categories.length != 0;
+ }
+
+ // com.sun.star.container.XIndexAccess:
+ public int getCount()
+ {
+ return categories.length;
+ }
+
+ public Object getByIndex(int Index) throws com.sun.star.lang.IndexOutOfBoundsException, com.sun.star.lang.WrappedTargetException
+ {
+ return getCategory(Index);
+ }
+
+ // com.sun.star.report.meta.XFunctionManager:
+ public com.sun.star.report.meta.XFunctionCategory getCategory(int position) throws com.sun.star.lang.IndexOutOfBoundsException, com.sun.star.lang.WrappedTargetException
+ {
+ if (position >= categories.length)
+ {
+ throw new com.sun.star.lang.IndexOutOfBoundsException();
+ }
+ return new StarFunctionCategory(defaultContext, m_xContext, functionRegistry, position, categories[position]);
+ }
+
+ public XFunctionDescription getFunctionByName(String arg0) throws NoSuchElementException
+ {
+ final FunctionDescription func = functionRegistry.getMetaData(arg0);
+ if (func == null)
+ {
+ throw new NoSuchElementException();
+ }
+ int i = 0;
+ for (; i < categories.length; i++)
+ {
+ if (categories[i] == func.getCategory())
+ {
+ break;
+ }
+ }
+ try
+ {
+ return new StarFunctionDescription(defaultContext, m_xContext, getCategory(i), func);
+ }
+ catch (Exception ex)
+ {
+ }
+ return null;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/SOReportJobFactory.java b/reportbuilder/java/com/sun/star/report/pentaho/SOReportJobFactory.java
new file mode 100644
index 000000000000..b02c2010a14d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/SOReportJobFactory.java
@@ -0,0 +1,448 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.beans.NamedValue;
+import com.sun.star.beans.PropertyVetoException;
+import com.sun.star.beans.UnknownPropertyException;
+import com.sun.star.beans.XPropertyChangeListener;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.beans.XVetoableChangeListener;
+import com.sun.star.container.XChild;
+import com.sun.star.embed.XStorage;
+import com.sun.star.frame.XModel;
+import com.sun.star.lang.IllegalArgumentException;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.lang.XInitialization;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lang.XSingleComponentFactory;
+import com.sun.star.lib.uno.helper.Factory;
+import com.sun.star.lib.uno.helper.PropertySetMixin;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.registry.InvalidRegistryException;
+import com.sun.star.registry.InvalidValueException;
+import com.sun.star.registry.XRegistryKey;
+import com.sun.star.registry.XSimpleRegistry;
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.JobProperties;
+import com.sun.star.report.ReportEngineParameterNames;
+import com.sun.star.report.ReportExecutionException;
+import com.sun.star.report.ReportJob;
+import com.sun.star.report.ReportJobDefinition;
+import com.sun.star.report.ReportJobFactory;
+import com.sun.star.report.SDBCReportDataFactory;
+import com.sun.star.report.SOImageService;
+import com.sun.star.report.StorageRepository;
+import com.sun.star.report.XReportDefinition;
+import com.sun.star.sdb.XDocumentDataSource;
+import com.sun.star.sdbc.XConnection;
+import com.sun.star.sdbc.XRowSet;
+import com.sun.star.task.XJob;
+import com.sun.star.uno.Exception;
+import com.sun.star.uno.Type;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * This class capsulates the class, that implements the minimal component, a factory for creating the service
+ * (<CODE>__getComponentFactory</CODE>) and a method, that writes the information into the given registry key
+ * (<CODE>__writeRegistryServiceInfo</CODE>).
+ */
+public class SOReportJobFactory
+{
+
+ private SOReportJobFactory()
+ {
+ }
+
+ public static class _SOReportJobFactory extends WeakBase implements XInitialization, XServiceInfo, XJob, XPropertySet, ReportJobFactory
+ {
+
+ private static final Log LOGGER = LogFactory.getLog(_SOReportJobFactory.class);
+ /**
+ * The service name, that must be used to get an instance of this service.
+ */
+ private static final String __serviceName =
+ "com.sun.star.report.pentaho.SOReportJobFactory";
+ private final PropertySetMixin m_prophlp;
+ /**
+ * The initial component contextr, that gives access to the service manager, supported singletons, ... It's
+ * often later used
+ */
+ private final XComponentContext m_cmpCtx;
+ private XConnection activeConnection;
+ private XReportDefinition report;
+
+ public _SOReportJobFactory(final XComponentContext xCompContext)
+ {
+ m_cmpCtx = xCompContext;
+ m_prophlp = new PropertySetMixin(m_cmpCtx, this,
+ new Type(XJob.class),
+ null); // no optionals
+ }
+
+ /**
+ * This method is a member of the interface for initializing an object directly after its creation.
+ *
+ * @param object This array of arbitrary objects will be passed to the component after its creation.
+ * @throws Exception Every exception will not be handled, but will be passed to the caller.
+ */
+ public void initialize(final Object[] object)
+ throws com.sun.star.uno.Exception
+ {
+ /* The component describes what arguments its expected and in which
+ * order!At this point you can read the objects and can intialize
+ * your component using these objects.
+ */
+ }
+
+ /**
+ * This method returns an array of all supported service names.
+ *
+ * @return Array of supported service names.
+ */
+ public String[] getSupportedServiceNames()
+ {
+ return getServiceNames();
+ }
+
+ /**
+ * This method is a simple helper function to used in the static component initialisation functions as well as
+ * in getSupportedServiceNames.
+ * @return
+ */
+ public static String[] getServiceNames()
+ {
+ return new String[]
+ {
+ __serviceName
+ };
+ }
+
+ /**
+ * This method returns true, if the given service will be supported by the component.
+ *
+ * @param sServiceName Service name.
+ * @return True, if the given service name will be supported.
+ */
+ public boolean supportsService(final String sServiceName)
+ {
+ return sServiceName.equals(__serviceName);
+ }
+
+ /**
+ * Return the class name of the component.
+ *
+ * @return Class name of the component.
+ */
+ public String getImplementationName()
+ {
+ return SOReportJobFactory.class.getName();
+ }
+
+ private String getLocaleFromRegistry(final XSimpleRegistry simpleReg, final String path, final String value)
+ {
+ String currentLocale = null;
+ try
+ {
+ simpleReg.open(path, true, false);
+ final XRegistryKey xRegistryRootKey = simpleReg.getRootKey();
+ // read locale
+ final XRegistryKey locale = xRegistryRootKey.openKey(value);
+ if (locale != null)
+ {
+ final String newLocale = locale.getStringValue();
+ if (newLocale != null)
+ {
+ currentLocale = newLocale.replace('-', '_');
+ }
+ }
+ }
+ catch (InvalidValueException ex)
+ {
+ Logger.getLogger(SOReportJobFactory.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ catch (InvalidRegistryException ex)
+ {
+ Logger.getLogger(SOReportJobFactory.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ return currentLocale;
+ }
+
+ public Object execute(final NamedValue[] namedValue)
+ throws com.sun.star.lang.IllegalArgumentException, com.sun.star.uno.Exception
+ {
+ final ClassLoader cl = java.lang.Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ try
+ {
+ final XSimpleRegistry simpleReg = (XSimpleRegistry) UnoRuntime.queryInterface(XSimpleRegistry.class,
+ m_cmpCtx.getServiceManager().createInstanceWithContext("com.sun.star.configuration.ConfigurationRegistry", m_cmpCtx));
+
+ String currentLocale = getLocaleFromRegistry(simpleReg, "org.openoffice.Setup", "L10N/ooSetupSystemLocale");
+ if (currentLocale == null || "".equals(currentLocale))
+ {
+ currentLocale = getLocaleFromRegistry(simpleReg, "org.openoffice.Office.Linguistic", "General/DefaultLocale");
+ }
+ if (currentLocale != null && !"".equals(currentLocale))
+ {
+ System.setProperty("org.pentaho.reporting.libraries.formula.locale", currentLocale);
+ }
+ final ReportJob job = createReportJob(namedValue);
+ job.execute();
+
+ }
+ catch (java.lang.Exception e)
+ {
+ LOGGER.error("ReportProcessing failed", e);
+ throw new com.sun.star.lang.WrappedTargetException(e.getMessage(), this, null);
+ }
+ catch (java.lang.IncompatibleClassChangeError e2)
+ {
+ LOGGER.error("Detected an IncompatibleClassChangeError");
+ throw new com.sun.star.lang.WrappedTargetException("caught a " + e2.getClass().getName(), this, new com.sun.star.uno.Exception(e2.getLocalizedMessage()));
+ }
+ Thread.currentThread().setContextClassLoader(cl);
+
+ return null;
+ }
+
+ public ReportJob createReportJob(final NamedValue[] namedValue) throws IllegalArgumentException, ReportExecutionException, Exception
+ {
+ XStorage input = null;
+ XStorage output = null;
+ XRowSet rowSet = null;
+ String mimetype = null;
+ String author = null;
+ String title = null;
+ Integer maxRows = null;
+
+ for (int i = 0; i < namedValue.length; ++i)
+ {
+ final NamedValue aProps = namedValue[i];
+ if ("ActiveConnection".equalsIgnoreCase(aProps.Name))
+ {
+ activeConnection = (XConnection) UnoRuntime.queryInterface(XConnection.class, aProps.Value);
+ }
+ else if ("ReportDefinition".equalsIgnoreCase(aProps.Name))
+ {
+ report = (XReportDefinition) UnoRuntime.queryInterface(XReportDefinition.class, aProps.Value);
+ }
+ else if ("InputStorage".equalsIgnoreCase(aProps.Name))
+ {
+ input = (XStorage) UnoRuntime.queryInterface(XStorage.class, aProps.Value);
+ }
+ else if ("OutputStorage".equalsIgnoreCase(aProps.Name))
+ {
+ output = (XStorage) UnoRuntime.queryInterface(XStorage.class, aProps.Value);
+ }
+ else if ("RowSet".equalsIgnoreCase(aProps.Name))
+ {
+ rowSet = (XRowSet) UnoRuntime.queryInterface(XRowSet.class, aProps.Value);
+ }
+ else if ("mimetype".equalsIgnoreCase(aProps.Name))
+ {
+ mimetype = (String) aProps.Value;
+ }
+ else if ("MaxRows".equalsIgnoreCase(aProps.Name))
+ {
+ maxRows = (Integer) aProps.Value;
+ }
+ else if (ReportEngineParameterNames.AUTHOR.equalsIgnoreCase(aProps.Name))
+ {
+ author = (String) aProps.Value;
+ }
+ else if (ReportEngineParameterNames.TITLE.equalsIgnoreCase(aProps.Name))
+ {
+ title = (String) aProps.Value;
+ }
+ }
+
+ if (input == null || output == null)
+ {
+ throw new com.sun.star.lang.IllegalArgumentException();
+ }
+
+ if (rowSet == null)
+ {
+ if (report == null || activeConnection == null)
+ {
+ throw new com.sun.star.lang.IllegalArgumentException();
+ }
+ mimetype = report.getMimeType();
+ }
+ else
+ {
+ final XPropertySet set = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, rowSet);
+ if (set == null)
+ {
+ throw new com.sun.star.lang.IllegalArgumentException();
+ }
+ activeConnection = (XConnection) UnoRuntime.queryInterface(XConnection.class, set.getPropertyValue("ActiveConnection"));
+ }
+ if (mimetype == null)
+ {
+ mimetype = PentahoReportEngineMetaData.OPENDOCUMENT_TEXT;
+ }
+
+ final XChild child = UnoRuntime.queryInterface(XChild.class, activeConnection);
+ final XDocumentDataSource docSource = UnoRuntime.queryInterface(XDocumentDataSource.class, child.getParent());
+ final XModel model = UnoRuntime.queryInterface(XModel.class, docSource.getDatabaseDocument());
+ final DataSourceFactory dataFactory = new SDBCReportDataFactory(m_cmpCtx, activeConnection);
+ final StorageRepository storageRepository = new StorageRepository(input, output, model.getURL());
+
+ final String inputName = "content.xml";
+ final String outputName = "content.xml";
+
+ final PentahoReportEngine engine = new PentahoReportEngine();
+ final ReportJobDefinition definition = engine.createJobDefinition();
+ final JobProperties procParms = definition.getProcessingParameters();
+ procParms.setProperty(ReportEngineParameterNames.INPUT_REPOSITORY, storageRepository);
+ procParms.setProperty(ReportEngineParameterNames.OUTPUT_REPOSITORY, storageRepository);
+ procParms.setProperty(ReportEngineParameterNames.INPUT_NAME, inputName);
+ procParms.setProperty(ReportEngineParameterNames.OUTPUT_NAME, outputName);
+ procParms.setProperty(ReportEngineParameterNames.CONTENT_TYPE, mimetype);
+ procParms.setProperty(ReportEngineParameterNames.INPUT_DATASOURCE_FACTORY, dataFactory);
+ procParms.setProperty(ReportEngineParameterNames.IMAGE_SERVICE, new SOImageService(m_cmpCtx));
+ procParms.setProperty(ReportEngineParameterNames.INPUT_REPORTJOB_FACTORY, this);
+ procParms.setProperty(ReportEngineParameterNames.MAXROWS, maxRows);
+ if (author != null)
+ {
+ procParms.setProperty(ReportEngineParameterNames.AUTHOR, author);
+ }
+ if (title != null)
+ {
+ procParms.setProperty(ReportEngineParameterNames.TITLE, title);
+ }
+
+ return engine.createJob(definition);
+ }
+
+ // com.sun.star.beans.XPropertySet:
+ public com.sun.star.beans.XPropertySetInfo getPropertySetInfo()
+ {
+ return m_prophlp.getPropertySetInfo();
+ }
+
+ public void setPropertyValue(final String aPropertyName, final Object aValue)
+ throws UnknownPropertyException, PropertyVetoException, com.sun.star.lang.IllegalArgumentException,
+ WrappedTargetException
+ {
+ m_prophlp.setPropertyValue(aPropertyName, aValue);
+ }
+
+ public Object getPropertyValue(final String aPropertyName)
+ throws UnknownPropertyException, WrappedTargetException
+ {
+ return m_prophlp.getPropertyValue(aPropertyName);
+ }
+
+ public void addPropertyChangeListener(final String aPropertyName, final XPropertyChangeListener xListener)
+ throws UnknownPropertyException, WrappedTargetException
+ {
+ m_prophlp.addPropertyChangeListener(aPropertyName, xListener);
+ }
+
+ public void removePropertyChangeListener(final String aPropertyName, final XPropertyChangeListener xListener)
+ throws UnknownPropertyException, WrappedTargetException
+ {
+ m_prophlp.removePropertyChangeListener(aPropertyName, xListener);
+ }
+
+ public void addVetoableChangeListener(final String aPropertyName, final XVetoableChangeListener xListener)
+ throws UnknownPropertyException, WrappedTargetException
+ {
+ m_prophlp.addVetoableChangeListener(aPropertyName, xListener);
+ }
+
+ public void removeVetoableChangeListener(final String aPropertyName, final XVetoableChangeListener xListener)
+ throws UnknownPropertyException, WrappedTargetException
+ {
+ m_prophlp.removeVetoableChangeListener(aPropertyName, xListener);
+ }
+ }
+
+ /**
+ * Gives a factory for creating the service. This method is called by the <code>JavaLoader</code>
+ * <p/>
+ *
+ * @param sImplName the name of the implementation for which a service is desired
+ * @return returns a <code>XSingleComponentFactory</code> for creating the component
+ * @see com.sun.star.comp.loader.JavaLoader
+ */
+ public static XSingleComponentFactory __getComponentFactory(final String sImplName)
+ {
+ XSingleComponentFactory xFactory = null;
+
+ try
+ {
+ if (sImplName.equals(_SOReportJobFactory.class.getName()))
+ {
+ xFactory = Factory.createComponentFactory(_SOReportJobFactory.class, _SOReportJobFactory.getServiceNames());
+ }
+ else if (sImplName.equals(SOFunctionManager.class.getName()))
+ {
+ xFactory = Factory.createComponentFactory(SOFunctionManager.class, SOFunctionManager.getServiceNames());
+ }
+ else if (sImplName.equals(SOFormulaParser.class.getName()))
+ {
+ xFactory = Factory.createComponentFactory(SOFormulaParser.class, SOFormulaParser.getServiceNames());
+ }
+ }
+ catch (java.lang.IncompatibleClassChangeError e2)
+ {
+ }
+
+ return xFactory;
+ }
+
+ /**
+ * Writes the service information into the given registry key. This method is called by the <code>JavaLoader</code>
+ * <p/>
+ *
+ * @param regKey the registryKey
+ * @return returns true if the operation succeeded
+ * @see com.sun.star.comp.loader.JavaLoader
+ */
+ public static boolean __writeRegistryServiceInfo(final XRegistryKey regKey)
+ {
+ return Factory.writeRegistryServiceInfo(SOFunctionManager.class.getName(),
+ SOFunctionManager.getServiceNames(),
+ regKey) && Factory.writeRegistryServiceInfo(_SOReportJobFactory.class.getName(),
+ _SOReportJobFactory.getServiceNames(),
+ regKey) && Factory.writeRegistryServiceInfo(SOFormulaParser.class.getName(),
+ SOFormulaParser.getServiceNames(),
+ regKey);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/StarFunctionCategory.java b/reportbuilder/java/com/sun/star/report/pentaho/StarFunctionCategory.java
new file mode 100644
index 000000000000..7825a2b34c4a
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/StarFunctionCategory.java
@@ -0,0 +1,161 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.lib.uno.helper.PropertySetMixin;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.report.meta.XFunctionDescription;
+import com.sun.star.uno.Type;
+import com.sun.star.uno.XComponentContext;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import org.pentaho.reporting.libraries.formula.DefaultFormulaContext;
+import org.pentaho.reporting.libraries.formula.function.FunctionCategory;
+import org.pentaho.reporting.libraries.formula.function.FunctionRegistry;
+
+public final class StarFunctionCategory extends WeakBase
+ implements com.sun.star.report.meta.XFunctionCategory
+{
+
+ private final XComponentContext m_xContext;
+ private final PropertySetMixin m_prophlp;
+ // attributes
+ private final int m_Number;
+ private final FunctionCategory category;
+ private final FunctionRegistry functionRegistry;
+ private final String functions[];
+ private final DefaultFormulaContext defaultContext;
+ private final Locale defaultLocale;
+
+ public StarFunctionCategory(DefaultFormulaContext defaultContext, final XComponentContext context, final FunctionRegistry functionRegistry, final int _number, final FunctionCategory category)
+ {
+ this.defaultContext = defaultContext;
+ m_xContext = context;
+ m_Number = _number;
+ this.category = category;
+ this.functionRegistry = functionRegistry;
+ Locale locale;
+ try
+ {
+ category.getDisplayName(defaultContext.getLocalizationContext().getLocale());
+ locale = defaultContext.getLocalizationContext().getLocale();
+ }
+ catch (MissingResourceException e)
+ {
+ locale = Locale.ENGLISH;
+ }
+ this.defaultLocale = locale;
+
+ functions = functionRegistry.getFunctionNamesByCategory(category);
+ // use the last parameter of the PropertySetMixin constructor
+ // for your optional attributes if necessary. See the documentation
+ // of the PropertySetMixin helper for further information.
+ // Ensure that your attributes are initialized correctly!
+ m_prophlp = new PropertySetMixin(m_xContext, this,
+ new Type(com.sun.star.report.meta.XFunctionCategory.class), null);
+ }
+
+ // com.sun.star.beans.XPropertySet:
+ public com.sun.star.beans.XPropertySetInfo getPropertySetInfo()
+ {
+ return m_prophlp.getPropertySetInfo();
+ }
+
+ public void setPropertyValue(String aPropertyName, Object aValue) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.beans.PropertyVetoException, com.sun.star.lang.IllegalArgumentException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.setPropertyValue(aPropertyName, aValue);
+ }
+
+ public Object getPropertyValue(String aPropertyName) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ return m_prophlp.getPropertyValue(aPropertyName);
+ }
+
+ public void addPropertyChangeListener(String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.addPropertyChangeListener(aPropertyName, xListener);
+ }
+
+ public void removePropertyChangeListener(String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.removePropertyChangeListener(aPropertyName, xListener);
+ }
+
+ public void addVetoableChangeListener(String aPropertyName, com.sun.star.beans.XVetoableChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.addVetoableChangeListener(aPropertyName, xListener);
+ }
+
+ public void removeVetoableChangeListener(String aPropertyName, com.sun.star.beans.XVetoableChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.removeVetoableChangeListener(aPropertyName, xListener);
+ }
+
+ // com.sun.star.container.XElementAccess:
+ public com.sun.star.uno.Type getElementType()
+ {
+ return new com.sun.star.uno.Type(XFunctionDescription.class);
+ }
+
+ public boolean hasElements()
+ {
+ return functions.length != 0;
+ }
+
+ // com.sun.star.container.XIndexAccess:
+ public int getCount()
+ {
+ return functions.length;
+ }
+
+ public Object getByIndex(int Index) throws com.sun.star.lang.IndexOutOfBoundsException, com.sun.star.lang.WrappedTargetException
+ {
+ return getFunction(Index);
+ }
+
+ // com.sun.star.report.meta.XFunctionCategory:
+ public int getNumber()
+ {
+ return m_Number;
+ }
+
+ public String getName()
+ {
+ return category.getDisplayName(defaultLocale);
+ }
+
+ public com.sun.star.report.meta.XFunctionDescription getFunction(int position) throws com.sun.star.lang.IndexOutOfBoundsException, com.sun.star.lang.WrappedTargetException
+ {
+ if (position >= functions.length)
+ {
+ throw new IndexOutOfBoundsException();
+ }
+ return new StarFunctionDescription(defaultContext, m_xContext, this, functionRegistry.getMetaData(functions[position]));
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/StarFunctionDescription.java b/reportbuilder/java/com/sun/star/report/pentaho/StarFunctionDescription.java
new file mode 100644
index 000000000000..f0debc672118
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/StarFunctionDescription.java
@@ -0,0 +1,194 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.lib.uno.helper.PropertySetMixin;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.report.meta.XFunctionCategory;
+import com.sun.star.sheet.FunctionArgument;
+import com.sun.star.uno.Type;
+import com.sun.star.uno.XComponentContext;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import org.pentaho.reporting.libraries.formula.DefaultFormulaContext;
+import org.pentaho.reporting.libraries.formula.function.FunctionDescription;
+
+public final class StarFunctionDescription extends WeakBase
+ implements com.sun.star.report.meta.XFunctionDescription
+{
+
+ private final XComponentContext m_xContext;
+ private final PropertySetMixin m_prophlp;
+ // attributes
+// final private com.sun.star.report.meta.XFunctionCategory m_Category;
+ private final FunctionDescription functionDescription;
+ private final XFunctionCategory category;
+ private final Locale defaultLocale;
+
+ public StarFunctionDescription(final DefaultFormulaContext defaultContext, final XComponentContext context, final XFunctionCategory category, final FunctionDescription functionDescription)
+ {
+ m_xContext = context;
+ this.category = category;
+ Locale locale;
+ try
+ {
+ functionDescription.getDisplayName(defaultContext.getLocalizationContext().getLocale());
+ locale = defaultContext.getLocalizationContext().getLocale();
+ }
+ catch (MissingResourceException e)
+ {
+ locale = Locale.ENGLISH;
+ }
+ this.defaultLocale = locale;
+
+ this.functionDescription = functionDescription;
+ // use the last parameter of the PropertySetMixin constructor
+ // for your optional attributes if necessary. See the documentation
+ // of the PropertySetMixin helper for further information.
+ // Ensure that your attributes are initialized correctly!
+ m_prophlp = new PropertySetMixin(m_xContext, this,
+ new Type(com.sun.star.report.meta.XFunctionDescription.class), null);
+ }
+
+ // com.sun.star.beans.XPropertySet:
+ public com.sun.star.beans.XPropertySetInfo getPropertySetInfo()
+ {
+ return m_prophlp.getPropertySetInfo();
+ }
+
+ public void setPropertyValue(String aPropertyName, Object aValue) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.beans.PropertyVetoException, com.sun.star.lang.IllegalArgumentException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.setPropertyValue(aPropertyName, aValue);
+ }
+
+ public Object getPropertyValue(String aPropertyName) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ return m_prophlp.getPropertyValue(aPropertyName);
+ }
+
+ public void addPropertyChangeListener(String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.addPropertyChangeListener(aPropertyName, xListener);
+ }
+
+ public void removePropertyChangeListener(String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.removePropertyChangeListener(aPropertyName, xListener);
+ }
+
+ public void addVetoableChangeListener(String aPropertyName, com.sun.star.beans.XVetoableChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.addVetoableChangeListener(aPropertyName, xListener);
+ }
+
+ public void removeVetoableChangeListener(String aPropertyName, com.sun.star.beans.XVetoableChangeListener xListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
+ {
+ m_prophlp.removeVetoableChangeListener(aPropertyName, xListener);
+ }
+
+ // com.sun.star.report.meta.XFunctionDescription:
+ public com.sun.star.report.meta.XFunctionCategory getCategory()
+ {
+ return category;
+ }
+
+ public String getName()
+ {
+ return functionDescription.getDisplayName(defaultLocale);
+ }
+
+ public String getDescription()
+ {
+ return functionDescription.getDescription(defaultLocale);
+ }
+
+ public String getSignature()
+ {
+ final int count = functionDescription.getParameterCount();
+ final StringBuffer signature = new StringBuffer(getName());
+ signature.append('(');
+ for (int i = 0; i < count; i++)
+ {
+ signature.append(functionDescription.getParameterDisplayName(i, defaultLocale));
+ if (i != (count - 1))
+ {
+ signature.append(';');
+ }
+ }
+ signature.append(')');
+ return signature.toString();
+ }
+
+ public com.sun.star.sheet.FunctionArgument[] getArguments()
+ {
+ int count = functionDescription.getParameterCount();
+ final boolean infinite = functionDescription.isInfiniteParameterCount();
+ if (infinite)
+ {
+ count = 30;
+ }
+ final FunctionArgument[] args = new FunctionArgument[count];
+ for (int i = 0; i < args.length; i++)
+ {
+ final int pos = infinite ? 0 : i;
+ args[i] = new FunctionArgument();
+ args[i].Description = functionDescription.getParameterDescription(pos, defaultLocale);
+ args[i].Name = functionDescription.getParameterDisplayName(pos, defaultLocale);
+ args[i].IsOptional = !functionDescription.isParameterMandatory(pos);
+ }
+ return args;
+ }
+
+ public String createFormula(String[] arguments) throws com.sun.star.lang.DisposedException, com.sun.star.lang.IllegalArgumentException, com.sun.star.uno.Exception
+ {
+ final boolean infinite = functionDescription.isInfiniteParameterCount();
+ final int count = functionDescription.getParameterCount();
+ if (!infinite && arguments.length > count)
+ {
+ throw new com.sun.star.lang.IllegalArgumentException();
+ }
+
+ final StringBuffer formula = new StringBuffer(getName());
+ formula.append('(');
+ for (int i = 0; i < arguments.length; ++i)
+ {
+ if (arguments[i].length() == 0)
+ {
+ break;
+ }
+ formula.append(arguments[i]);
+ if (i < (arguments.length - 1) && arguments[i + 1].length() != 0)
+ {
+ formula.append(';');
+ }
+ }
+ formula.append(')');
+ return formula.toString();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/StarReportData.java b/reportbuilder/java/com/sun/star/report/pentaho/StarReportData.java
new file mode 100644
index 000000000000..b53271cb78d1
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/StarReportData.java
@@ -0,0 +1,168 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.report.DataSource;
+
+import org.jfree.report.DataSourceException;
+import org.jfree.report.ReportData;
+
+public class StarReportData implements ReportData
+{
+
+ private final DataSource dataSource;
+ private int currentRow;
+ private final int rowCount;
+
+ public StarReportData(final DataSource dataSource)
+ throws com.sun.star.report.DataSourceException
+ {
+ if (dataSource == null)
+ {
+ throw new NullPointerException();
+ }
+ this.dataSource = dataSource;
+ this.currentRow = 0;
+ this.rowCount = dataSource.getRowCount();
+ }
+
+ public boolean setCursorPosition(final int row) throws DataSourceException
+ {
+ try
+ {
+ final boolean ret = dataSource.absolute(row);
+ if (ret)
+ {
+ currentRow = row;
+ }
+ return ret;
+ }
+ catch (com.sun.star.report.DataSourceException e)
+ {
+ throw new DataSourceException("Failed to move cursor", e);
+ }
+ }
+
+ public void close()
+ throws DataSourceException
+ {
+ try
+ {
+ dataSource.close();
+ }
+ catch (com.sun.star.report.DataSourceException e)
+ {
+ throw new DataSourceException("Failed to close datasource", e);
+ }
+ }
+
+ public int getCursorPosition()
+ throws DataSourceException
+ {
+ return currentRow;
+ }
+
+ /**
+ * This operation checks, whether a call to next will be likely to succeed. If
+ * there is a next data row, this should return true.
+ *
+ * @return
+ * @throws org.jfree.report.DataSourceException
+ *
+ */
+ public boolean isAdvanceable() throws DataSourceException
+ {
+ return currentRow < rowCount;
+ }
+
+ public boolean next()
+ throws DataSourceException
+ {
+ try
+ {
+ if (dataSource.next())
+ {
+ currentRow += 1;
+ return true;
+ }
+ return false;
+ }
+ catch (com.sun.star.report.DataSourceException e)
+ {
+ throw new DataSourceException("Failed to move cursor", e);
+ }
+ }
+
+ public Object get(final int column)
+ throws DataSourceException
+ {
+ if (!isReadable())
+ {
+ throw new DataSourceException("Failed to query column.");
+ }
+
+ try
+ {
+ return dataSource.getObject(column + 1);
+ }
+ catch (com.sun.star.report.DataSourceException e)
+ {
+ throw new DataSourceException("Failed to query column.", e);
+ }
+ }
+
+ public int getColumnCount()
+ throws DataSourceException
+ {
+ try
+ {
+ return dataSource.getColumnCount();
+ }
+ catch (com.sun.star.report.DataSourceException e)
+ {
+ throw new DataSourceException("Failed to query column count.", e);
+ }
+ }
+
+ public String getColumnName(final int column)
+ throws DataSourceException
+ {
+ try
+ {
+ return dataSource.getColumnName(column + 1);
+ }
+ catch (com.sun.star.report.DataSourceException e)
+ {
+ throw new DataSourceException("Failed to query column name.", e);
+ }
+ }
+
+ public boolean isReadable() throws DataSourceException
+ {
+ return currentRow > 0 && rowCount > 0;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/StarReportDataFactory.java b/reportbuilder/java/com/sun/star/report/pentaho/StarReportDataFactory.java
new file mode 100644
index 000000000000..3f5beae7e6be
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/StarReportDataFactory.java
@@ -0,0 +1,125 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import com.sun.star.report.DataSourceException;
+import com.sun.star.report.DataSourceFactory;
+
+import java.util.HashMap;
+
+import org.jfree.report.DataSet;
+import org.jfree.report.ReportData;
+import org.jfree.report.ReportDataFactory;
+import org.jfree.report.ReportDataFactoryException;
+
+
+public class StarReportDataFactory implements ReportDataFactory, Cloneable
+{
+
+ private final DataSourceFactory backend;
+
+ public StarReportDataFactory(DataSourceFactory backend)
+ {
+ this.backend = backend;
+ }
+
+ /**
+ * Queries a datasource. The string 'query' defines the name of the query. The
+ * Parameterset given here may contain more data than actually needed.
+ * <p/>
+ * The dataset may change between two calls, do not assume anything!
+ *
+ * @param query
+ * @param parameters
+ * @return
+ */
+ public ReportData queryData(final String query, final DataSet parameters)
+ throws ReportDataFactoryException
+ {
+ try
+ {
+ final HashMap map = new HashMap();
+ final int count = parameters.getColumnCount();
+ for (int i = 0; i < count; i++)
+ {
+ final Object o = parameters.get(i);
+ map.put(parameters.getColumnName(i), o);
+ }
+ return new StarReportData(backend.queryData(query, map));
+ }
+ catch (DataSourceException dse)
+ {
+ String message = dse.getMessage();
+ if (message.length() == 0)
+ {
+ message = "Failed to create report data wrapper";
+ }
+ throw new ReportDataFactoryException(message, dse);
+ }
+ catch (org.jfree.report.DataSourceException e)
+ {
+ String message = e.getMessage();
+ if (message.length() == 0)
+ {
+ message = "Failed to query data";
+ }
+ throw new ReportDataFactoryException(message);
+ }
+ }
+
+ public void open()
+ {
+ }
+
+ public void close()
+ {
+ }
+
+ /**
+ * Derives a freshly initialized report data factory, which is independend of
+ * the original data factory. Opening or Closing one data factory must not
+ * affect the other factories.
+ *
+ * @return
+ */
+ public ReportDataFactory derive()
+ {
+ try
+ {
+ return (ReportDataFactory) clone();
+ }
+ catch (CloneNotSupportedException e)
+ {
+ throw new IllegalStateException("Clone failed?");
+ }
+ }
+
+ public Object clone() throws CloneNotSupportedException
+ {
+ return super.clone();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/StarReportModule.java b/reportbuilder/java/com/sun/star/report/pentaho/StarReportModule.java
new file mode 100644
index 000000000000..b3497fc51377
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/StarReportModule.java
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho;
+
+import org.pentaho.reporting.libraries.base.boot.AbstractModule;
+import org.pentaho.reporting.libraries.base.boot.ModuleInitializeException;
+import org.pentaho.reporting.libraries.base.boot.SubSystem;
+
+public class StarReportModule extends AbstractModule
+{
+
+ public StarReportModule()
+ throws ModuleInitializeException
+ {
+ loadModuleInfo();
+ }
+
+ /**
+ * Initializes the module. Use this method to perform all initial setup operations. This
+ * method is called only once in a modules lifetime. If the initializing cannot be
+ * completed, throw a ModuleInitializeException to indicate the error,. The module will
+ * not be available to the system.
+ *
+ * @param subSystem the subSystem.
+ * @throws org.jfree.base.modules.ModuleInitializeException
+ * if an error ocurred while initializing the module.
+ */
+ public void initialize(final SubSystem subSystem)
+ throws ModuleInitializeException
+ {
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/configuration.properties b/reportbuilder/java/com/sun/star/report/pentaho/configuration.properties
new file mode 100644
index 000000000000..26e8548a9566
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/configuration.properties
@@ -0,0 +1,156 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+
+##
+# Do not modify the following lines. They connect this module to the central
+# parser registry.
+org.pentaho.reporting.libraries.resourceloader.factory.modules.com.sun.star.report.pentaho.model.OfficeDocument.star=com.sun.star.report.pentaho.parser.StarXmlFactoryModule
+org.pentaho.reporting.libraries.resourceloader.factory.modules.com.sun.star.report.pentaho.model.OfficeStylesCollection.star=com.sun.star.report.pentaho.parser.StarStyleXmlFactoryModule
+org.pentaho.reporting.libraries.resourceloader.factory.modules.com.sun.star.report.pentaho.styles.StyleMapper.star=com.sun.star.report.pentaho.styles.StyleMapperXmlFactoryModule
+
+##
+# The known namespaces.
+#
+org.jfree.report.namespaces.star-rpt.Uri=http://openoffice.org/2005/report
+org.jfree.report.namespaces.star-rpt.Default-Style=res://com/sun/star/report/pentaho/star-rpt.css
+org.jfree.report.namespaces.star-rpt.Prefix=rpt
+org.jfree.report.namespaces.star-rpt.ClassAttr=style-name
+
+org.jfree.report.namespaces.star-office.Uri=http://openoffice.org/2004/office
+org.jfree.report.namespaces.star-office.Default-Style=res://com/sun/star/report/pentaho/star-office.css
+org.jfree.report.namespaces.star-office.Prefix=office
+org.jfree.report.namespaces.star-office.ClassAttr=style-name
+
+org.jfree.report.namespaces.oasis-style.Uri=urn:oasis:names:tc:opendocument:xmlns:style:1.0
+org.jfree.report.namespaces.oasis-style.Default-Style=res://com/sun/star/report/pentaho/oasis-style.css
+org.jfree.report.namespaces.oasis-style.Prefix=style
+
+org.jfree.report.namespaces.oasis-table.Uri=urn:oasis:names:tc:opendocument:xmlns:table:1.0
+org.jfree.report.namespaces.oasis-table.Default-Style=res://com/sun/star/report/pentaho/oasis-table.css
+org.jfree.report.namespaces.oasis-table.Prefix=table
+org.jfree.report.namespaces.oasis-table.ClassAttr=style-name
+
+org.jfree.report.namespaces.oasis-draw.Uri=urn:oasis:names:tc:opendocument:xmlns:drawing:1.0
+org.jfree.report.namespaces.oasis-draw.Default-Style=res://com/sun/star/report/pentaho/oasis-draw.css
+org.jfree.report.namespaces.oasis-draw.Prefix=draw
+org.jfree.report.namespaces.oasis-draw.ClassAttr=style-name
+
+org.jfree.report.namespaces.oasis-chart.Uri=urn:oasis:names:tc:opendocument:xmlns:chart:1.0
+org.jfree.report.namespaces.oasis-chart.Default-Style=res://com/sun/star/report/pentaho/oasis-chart.css
+org.jfree.report.namespaces.oasis-chart.Prefix=chart
+org.jfree.report.namespaces.oasis-chart.ClassAttr=style-name
+
+org.jfree.report.namespaces.oasis-text.Uri=urn:oasis:names:tc:opendocument:xmlns:text:1.0
+org.jfree.report.namespaces.oasis-text.Default-Style=res://com/sun/star/report/pentaho/oasis-text.css
+org.jfree.report.namespaces.oasis-text.Prefix=text
+org.jfree.report.namespaces.oasis-text.ClassAttr=style-name
+
+org.jfree.report.namespaces.oasis-number.Uri=urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0
+org.jfree.report.namespaces.oasis-number.Default-Style=res://com/sun/star/report/pentaho/oasis-number.css
+org.jfree.report.namespaces.oasis-number.Prefix=number
+org.jfree.report.namespaces.oasis-number.ClassAttr=style-name
+
+org.jfree.report.namespaces.oasis-form.Uri=urn:oasis:names:tc:opendocument:xmlns:form:1.0
+org.jfree.report.namespaces.oasis-form.Default-Style=res://com/sun/star/report/pentaho/oasis-form.css
+org.jfree.report.namespaces.oasis-form.Prefix=form
+
+#
+# This defines a subset of the real XSL-FO standard.
+org.jfree.report.namespaces.oasis-compat-fo.Uri=urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0
+org.jfree.report.namespaces.oasis-compat-fo.Default-Style=res://com/sun/star/report/pentaho/xsl-fo.css
+org.jfree.report.namespaces.oasis-compat-fo.Prefix=fo
+
+#
+# This defines a subset of the real XSL-FO standard.
+org.jfree.report.namespaces.oasis-compat-svg.Uri=urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0
+org.jfree.report.namespaces.oasis-compat-svg.Default-Style=res://com/sun/star/report/pentaho/svg.css
+org.jfree.report.namespaces.oasis-compat-svg.Prefix=svg
+
+#
+# This defines a subset of the real XSL-FO standard.
+org.jfree.report.namespaces.oasis-compat-smil.Uri=urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0
+org.jfree.report.namespaces.oasis-compat-smil.Default-Style=res://com/sun/star/report/pentaho/smil.css
+org.jfree.report.namespaces.oasis-compat-smil.Prefix=svg
+
+org.jfree.report.namespaces.xsl-fo.Uri=http://www.w3.org/1999/XSL/Format
+org.jfree.report.namespaces.xsl-fo.Default-Style=res://com/sun/star/report/pentaho/xsl-fo.css
+org.jfree.report.namespaces.xsl-fo.Prefix=fo
+
+org.jfree.report.namespaces.svg.Uri=http://www.w3.org/2000/svg
+org.jfree.report.namespaces.svg.Default-Style=res://com/sun/star/report/pentaho/svg.css
+org.jfree.report.namespaces.svg.Prefix=svg
+org.jfree.report.namespaces.svg.ClassAttr=class
+org.jfree.report.namespaces.svg.StyleAttr=style
+
+org.jfree.report.namespaces.xml-xlink.Uri=http://www.w3.org/1999/xlink
+#org.jfree.report.namespaces.xml-xlink.Default-Style=res://com/sun/star/report/pentaho/xml-xlink.css
+org.jfree.report.namespaces.xml-xlink.Prefix=xlink
+
+#
+# Tag-definition for the XML-writer.
+# Prefix is 'com.sun.star.report.pentaho.output.'
+#
+# Declare the namespaces (this is independent of the ones defined above ..)
+# <prefix>"namespace."<ns-prefix>=<ns-uri>
+com.sun.star.report.pentaho.output.namespace.oasis-text=urn:oasis:names:tc:opendocument:xmlns:text:1.0
+com.sun.star.report.pentaho.output.default.oasis-text=deny
+
+com.sun.star.report.pentaho.output.namespace.oasis-config=urn:oasis:names:tc:opendocument:xmlns:config:1.0
+com.sun.star.report.pentaho.output.default.oasis-config=allow
+
+#
+# Next define the tags for which we want to customize the indent-behaviour
+com.sun.star.report.pentaho.output.tag.oasis-text.p=deny
+com.sun.star.report.pentaho.output.tag.oasis-text.section=allow
+com.sun.star.report.pentaho.output.tag.oasis-text.variable-decls=allow
+com.sun.star.report.pentaho.output.tag.oasis-text.variable-decl=allow
+
+com.sun.star.report.pentaho.output.tag.oasis-config.config-item=deny
+
+com.sun.star.report.pentaho.output.namespace.oasis-data=urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0
+com.sun.star.report.pentaho.output.default.oasis-data=allow
+com.sun.star.report.pentaho.output.tag.oasis-data.text=deny
+com.sun.star.report.pentaho.output.tag.oasis-data.currency-symbol=deny
+com.sun.star.report.pentaho.output.tag.oasis-data.embedded-text=deny
+
+com.sun.star.report.pentaho.output.namespace.oasis-draw=urn:oasis:names:tc:opendocument:xmlns:drawing:1.0
+com.sun.star.report.pentaho.output.default.oasis-draw=deny
+
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.FixedTextElement=com.sun.star.report.pentaho.layoutprocessor.FixedTextLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.FormattedTextElement=com.sun.star.report.pentaho.layoutprocessor.FormattedTextLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.ObjectOleElement=com.sun.star.report.pentaho.layoutprocessor.ObjectOleLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.ImageElement=com.sun.star.report.pentaho.layoutprocessor.ImageElementLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.TableCellElement=com.sun.star.report.pentaho.layoutprocessor.TableCellLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.OfficeReport=com.sun.star.report.pentaho.layoutprocessor.OfficeReportLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.OfficeGroup=com.sun.star.report.pentaho.layoutprocessor.OfficeGroupLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.OfficeGroupSection=com.sun.star.report.pentaho.layoutprocessor.OfficeGroupSectionLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.VariablesDeclarationSection=com.sun.star.report.pentaho.layoutprocessor.VariablesDeclarationLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.OfficeDetailSection=com.sun.star.report.pentaho.layoutprocessor.OfficeDetailLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.OfficeTableSection=com.sun.star.report.pentaho.layoutprocessor.OfficeTableLayoutController
+org.jfree.report.flow.structure.com.sun.star.report.pentaho.model.OfficeGroupInstanceSection=com.sun.star.report.pentaho.layoutprocessor.OfficeGroupInstanceSectionLayoutController
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/expressions/SumExpression.java b/reportbuilder/java/com/sun/star/report/pentaho/expressions/SumExpression.java
new file mode 100644
index 000000000000..c86b2186d08e
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/expressions/SumExpression.java
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.expressions;
+
+import com.sun.star.report.DataRow;
+import com.sun.star.report.ReportExpression;
+
+public class SumExpression implements ReportExpression
+{
+
+ private Object[] parameters;
+
+ public SumExpression()
+ {
+ }
+
+ public Object getParameters()
+ {
+ return parameters;
+ }
+
+ public Object getValue(final DataRow row)
+ {
+
+ return null;
+ }
+
+ public void setParameters(final Object[] parameters)
+ {
+ this.parameters = parameters;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/expressions/SumExpressionMetaData.java b/reportbuilder/java/com/sun/star/report/pentaho/expressions/SumExpressionMetaData.java
new file mode 100644
index 000000000000..21f8f4c4471b
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/expressions/SumExpressionMetaData.java
@@ -0,0 +1,78 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.expressions;
+
+import com.sun.star.report.ReportExpressionMetaData;
+
+import java.util.Locale;
+
+
+public class SumExpressionMetaData implements ReportExpressionMetaData
+{
+
+ public String getDescription(final Locale l)
+ {
+ // todo implement me
+ return null;
+ }
+
+ public String getDisplayName(final Locale l)
+ {
+ // todo implement me
+ return null;
+ }
+
+ public String getName()
+ {
+ // todo implement me
+ return null;
+ }
+
+ public int getParameterCount()
+ {
+ // todo implement me
+ return 0;
+ }
+
+ public String getParameterDescription(final int param, final Locale locale)
+ {
+ // todo implement me
+ return null;
+ }
+
+ public String getParameterDisplayName(final int param, final Locale locale)
+ {
+ // todo implement me
+ return null;
+ }
+
+ public String getParameterName(final int param)
+ {
+ // todo implement me
+ return null;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/AbstractReportElementLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/AbstractReportElementLayoutController.java
new file mode 100644
index 000000000000..85f841a11338
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/AbstractReportElementLayoutController.java
@@ -0,0 +1,269 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.pentaho.model.OfficeGroupSection;
+import com.sun.star.report.pentaho.model.ReportElement;
+
+import org.jfree.report.DataFlags;
+import org.jfree.report.DataRow;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.expressions.Expression;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.AbstractLayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutControllerUtil;
+import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Group;
+
+import org.pentaho.reporting.libraries.formula.lvalues.ContextLookup;
+import org.pentaho.reporting.libraries.formula.lvalues.LValue;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 05.03.2007
+ * @noinspection CloneableClassWithoutClone
+ */
+public abstract class AbstractReportElementLayoutController
+ extends AbstractLayoutController
+{
+
+ public static final int NOT_STARTED = 0;
+ public static final int FINISHED = 2;
+ private int state;
+
+ protected AbstractReportElementLayoutController()
+ {
+ }
+
+ /**
+ * Advances the processing position.
+ *
+ * @param target the report target that receives generated events.
+ * @return the new layout controller instance representing the new state.
+ *
+ * @throws org.jfree.report.DataSourceException if there was a problem reading data from
+ * the datasource.
+ * @throws org.jfree.report.ReportProcessingException if there was a general problem during
+ * the report processing.
+ * @throws org.jfree.report.ReportDataFactoryException if a query failed.
+ */
+ public LayoutController advance(final ReportTarget target)
+ throws DataSourceException, ReportDataFactoryException,
+ ReportProcessingException
+ {
+ if (state != AbstractReportElementLayoutController.NOT_STARTED)
+ {
+ throw new IllegalStateException();
+ }
+
+ boolean isPrintableContent = true;
+ final ReportElement text = (ReportElement) getNode();
+ // Tests we have to perform:
+ // 1. Print when group changes. We can know whether a group changed by
+ // looking at the newly introduced iteration counter.
+ //
+ // Whether we use the next one or the one after that depends on whether
+ // this element is a child of a group-header or group-footer.
+
+ // 2. Print repeated values. This never applies to static text or static
+ // elements.
+ if ((text.isPrintWhenGroupChanges() && !isGroupChanged()) || (!text.isPrintRepeatedValues() && !isValueChanged()))
+ {
+ // if this is set to true, then we print the element only if this is the
+ // first occurrence in this group.
+ // or
+ // If this is set to true, we evaluate the formula of the element and
+ // try to derive whether there was a change.
+ isPrintableContent = false;
+ }
+
+ // 3. Evaluate the Display Condition
+ final Expression dc = text.getDisplayCondition();
+ if (dc != null)
+ {
+ final Object o = LayoutControllerUtil.evaluateExpression(getFlowController(), text, dc);
+ if (Boolean.FALSE.equals(o))
+ {
+// LOGGER.debug ("DISPLAY Condition forbids printing");
+ isPrintableContent = false;
+ }
+ }
+
+ if (!isPrintableContent)
+ {
+ // There is no printable content at all. Set the state to FINISHED
+ return join(getFlowController());
+ }
+ else
+ {
+ // delegate to the handler ..
+ return delegateContentGeneration(target);
+ }
+
+ }
+
+ protected abstract boolean isValueChanged();
+
+ protected boolean isGroupChanged()
+ {
+ // search the group.
+ final SectionLayoutController slc = findGroup();
+ if (slc == null)
+ {
+ // Always print the content of the report header and footer and
+ // the page header and footer.
+ return true;
+ }
+
+ // we are in the first iteration, so yes, the group has changed recently.
+ return slc.getIterationCount() == 0;
+ }
+
+ private SectionLayoutController findGroup()
+ {
+ LayoutController parent = getParent();
+ boolean skipNext = false;
+ while (parent != null)
+ {
+ if (!(parent instanceof SectionLayoutController))
+ {
+ parent = parent.getParent();
+ }
+ else
+ {
+ final SectionLayoutController slc = (SectionLayoutController) parent;
+ final Element element = slc.getElement();
+ if (element instanceof OfficeGroupSection)
+ {
+ // This is a header or footer. So we take the next group instead.
+ skipNext = true;
+ parent = parent.getParent();
+ }
+ else if (!(element instanceof Group))
+ {
+ parent = parent.getParent();
+ }
+ else if (skipNext)
+ {
+ skipNext = false;
+ parent = parent.getParent();
+ }
+ else
+ {
+ return (SectionLayoutController) parent;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Joins with a delegated process flow. This is generally called from a child
+ * flow and should *not* (I mean it!) be called from outside. If you do,
+ * you'll suffer.
+ *
+ * @param flowController the flow controller of the parent.
+ * @return the joined layout controller that incorperates all changes from the
+ * delegate.
+ */
+ public LayoutController join(final FlowController flowController)
+ throws DataSourceException, ReportDataFactoryException,
+ ReportProcessingException
+ {
+ final AbstractReportElementLayoutController alc =
+ (AbstractReportElementLayoutController) clone();
+ alc.state = AbstractReportElementLayoutController.FINISHED;
+ return alc;
+ }
+
+ protected abstract LayoutController delegateContentGeneration(final ReportTarget target)
+ throws ReportProcessingException, ReportDataFactoryException,
+ DataSourceException;
+
+ /**
+ * Checks, whether the layout controller would be advanceable. If this method
+ * returns true, it is generally safe to call the 'advance()' method.
+ *
+ * @return true, if the layout controller is advanceable, false otherwise.
+ */
+ public boolean isAdvanceable()
+ {
+ return state != AbstractReportElementLayoutController.FINISHED;
+ }
+
+ protected boolean isReferenceChanged(final LValue lValue)
+ {
+ if (lValue instanceof ContextLookup)
+ {
+ final ContextLookup rval = (ContextLookup) lValue;
+ final String s = rval.getName();
+ final DataRow view = getFlowController().getMasterRow().getGlobalView();
+ try
+ {
+ final DataFlags flags = view.getFlags(s);
+ if (flags != null && flags.isChanged())
+ {
+// LOGGER.debug ("Reference " + s + " is changed");
+ return true;
+ }
+// LOGGER.debug ("Reference " + s + " is unchanged");
+ }
+ catch (DataSourceException e)
+ {
+ // ignore .. assume that the reference has not changed.
+ }
+ }
+ final LValue[] childValues = lValue.getChildValues();
+ for (int i = 0; i < childValues.length; i++)
+ {
+ final LValue value = childValues[i];
+ if (isReferenceChanged(value))
+ {
+ return true;
+ }
+ }
+// LOGGER.debug ("Unchanged.");
+ return false;
+ }
+
+ public int getState()
+ {
+ return state;
+ }
+
+ protected void setState(final int state)
+ {
+ this.state = state;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FixedTextLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FixedTextLayoutController.java
new file mode 100644
index 000000000000..6ac7b7551bec
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FixedTextLayoutController.java
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.pentaho.model.FixedTextElement;
+
+import org.jfree.report.DataSourceException;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.data.GlobalMasterRow;
+import org.jfree.report.data.ReportDataRow;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportContext;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutControllerFactory;
+import org.jfree.report.structure.Section;
+
+/**
+ * Processes a fixed-text element of the OpenOffice reporting specifciation.
+ * The element itself contains a single paragraph which contains the content.
+ * After checking, whether this element should be printed, this layout
+ * controller simply delegates the dirty work to a suitable handler.
+ *
+ * @author Thomas Morgner
+ * @noinspection CloneableClassWithoutClone
+ * @since 05.03.2007
+ */
+public class FixedTextLayoutController
+ extends AbstractReportElementLayoutController
+{
+
+ public FixedTextLayoutController()
+ {
+ }
+
+ protected boolean isValueChanged()
+ {
+ final FlowController controller = getFlowController();
+ final GlobalMasterRow masterRow = controller.getMasterRow();
+ final ReportDataRow reportDataRow = masterRow.getReportDataRow();
+ return reportDataRow.getCursor() == 0;
+ }
+
+ protected LayoutController delegateContentGeneration(final ReportTarget target)
+ throws ReportProcessingException, ReportDataFactoryException,
+ DataSourceException
+ {
+ final FixedTextElement fte = (FixedTextElement) getNode();
+ final Section content = fte.getContent();
+
+ final FlowController flowController = getFlowController();
+ final ReportContext reportContext = flowController.getReportContext();
+ final LayoutControllerFactory layoutControllerFactory =
+ reportContext.getLayoutControllerFactory();
+
+ final FixedTextLayoutController flc = (FixedTextLayoutController) clone();
+ flc.setState(AbstractReportElementLayoutController.FINISHED);
+ return layoutControllerFactory.create(flowController, content, flc);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java
new file mode 100755
index 000000000000..76ee85b52aba
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormatValueUtility.java
@@ -0,0 +1,241 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.FormattedTextElement;
+import java.math.BigDecimal;
+
+import java.sql.Time;
+
+import java.text.SimpleDateFormat;
+
+import java.util.Date;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataFlags;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.data.DefaultDataFlags;
+import org.jfree.report.expressions.FormulaExpression;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.layoutprocessor.LayoutControllerUtil;
+
+import org.pentaho.reporting.libraries.formula.util.HSSFDateUtil;
+
+/**
+ * Creation-Date: 06.06.2007, 17:03:30
+ *
+ * @author Thomas Morgner
+ */
+public class FormatValueUtility
+{
+
+ private static final String BOOLEAN_VALUE = "boolean-value";
+ private static final String STRING_VALUE = "string-value";
+ public static final String VALUE_TYPE = "value-type";
+ public static final String VALUE = "value";
+ private static SimpleDateFormat dateFormat;
+ private static SimpleDateFormat timeFormat;
+
+ private FormatValueUtility()
+ {
+ }
+
+ public static String applyValueForVariable(final Object value, final AttributeMap variableSection)
+ {
+ String ret = null;
+ if (value instanceof Time)
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "time");
+ ret = formatTime((Time) value);
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "time-value", ret);
+ }
+ else if (value instanceof java.sql.Date)
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "date");
+ ret = formatDate((Date) value);
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "date-value", ret);
+ }
+ else if (value instanceof Date)
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "float");
+ ret = HSSFDateUtil.getExcelDate((Date) value, false, 2).toString();
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, ret);
+ }
+ else if (value instanceof Number)
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "float");
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, String.valueOf(value));
+ }
+ else if (value instanceof Boolean)
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "boolean");
+ if (Boolean.TRUE.equals(value))
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, BOOLEAN_VALUE, OfficeToken.TRUE);
+ }
+ else
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, BOOLEAN_VALUE, OfficeToken.FALSE);
+ }
+ }
+ else if (value != null)
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "string");
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, STRING_VALUE, String.valueOf(value));
+ }
+ else
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "string");
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, STRING_VALUE, "");
+ }
+ return ret;
+ }
+
+ public static void applyValueForCell(final Object value, final AttributeMap variableSection, final String valueType)
+ {
+ if (value instanceof Time)
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "time-value", formatTime((Time) value));
+ }
+ else if (value instanceof java.sql.Date)
+ {
+ if ("float".equals(valueType))//@see http://qa.openoffice.org/issues/show_bug.cgi?id=108954
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, HSSFDateUtil.getExcelDate((Date) value, false, 2).toString());
+ }
+ else
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "date-value", formatDate((Date) value));
+ }
+ }
+ else if (value instanceof Date)
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "float");
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, HSSFDateUtil.getExcelDate((Date) value, false, 2).toString());
+ }
+ else if (value instanceof BigDecimal)
+ {
+ if ("date".equals(valueType))
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, "date-value", formatDate(HSSFDateUtil.getJavaDate((BigDecimal) value, false, 0)));
+ }
+ else
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, String.valueOf(value));
+ }
+ }
+ else if (value instanceof Number)
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, String.valueOf(value));
+ }
+ else if (value instanceof Boolean)
+ {
+ if ("float".equals(valueType))
+ {
+ float fvalue = Boolean.TRUE.equals(value) ? 1 : 0;
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, String.valueOf(fvalue));
+ }
+ else
+ {
+ if (Boolean.TRUE.equals(value))
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, BOOLEAN_VALUE, OfficeToken.TRUE);
+ }
+ else
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, BOOLEAN_VALUE, OfficeToken.FALSE);
+ }
+ }
+ }
+ else if (value != null)
+ {
+ try
+ {
+ final Float number = Float.valueOf(String.valueOf(value));
+ applyValueForCell(number, variableSection, valueType);
+ return;
+ }
+ catch (NumberFormatException e)
+ {
+ }
+ if (!"string".equals(valueType))
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE_TYPE, "string");
+ //variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, VALUE, String.valueOf(value));
+ }
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, STRING_VALUE, String.valueOf(value));
+ }
+ else
+ {
+ variableSection.setAttribute(OfficeNamespaces.OFFICE_NS, STRING_VALUE, "");
+ }
+ }
+
+ private static synchronized String formatDate(final Date date)
+ {
+ if (dateFormat == null)
+ {
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'S'Z'");
+ }
+ return dateFormat.format(date);
+ }
+
+ private static synchronized String formatTime(final Date date)
+ {
+ if (timeFormat == null)
+ {
+ timeFormat = new SimpleDateFormat("'PT'HH'H'mm'M'ss'S'");
+ }
+ return timeFormat.format(date);
+ }
+
+ public static DataFlags computeDataFlag(final FormattedTextElement element,
+ final FlowController flowController)
+ throws DataSourceException
+ {
+ // here it is relatively easy. We have to evaluate the expression, convert
+ // the result into a string, and print that string.
+ final FormulaExpression formulaExpression = element.getValueExpression();
+ final Object result = LayoutControllerUtil.evaluateExpression(flowController, element, formulaExpression);
+ if (result == null)
+ {
+ // ignore it. Ignoring it is much better than printing 'null'.
+ // LOGGER.debug("Formula '" + formulaExpression.getFormula() + "' evaluated to null.");
+ return null;
+ }
+ else if (result instanceof DataFlags)
+ {
+ return (DataFlags) result;
+ }
+ else
+ {
+ return new DefaultDataFlags(null, result, true);
+ }
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormattedTextLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormattedTextLayoutController.java
new file mode 100644
index 000000000000..5a6b8f948372
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/FormattedTextLayoutController.java
@@ -0,0 +1,229 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.FormattedTextElement;
+import com.sun.star.report.pentaho.model.OfficeDocument;
+import com.sun.star.report.pentaho.model.OfficeStyle;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataFlags;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.expressions.FormulaExpression;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.formula.Formula;
+import org.pentaho.reporting.libraries.formula.lvalues.LValue;
+import org.pentaho.reporting.libraries.formula.parser.ParseException;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 05.03.2007
+ */
+public class FormattedTextLayoutController
+ extends AbstractReportElementLayoutController
+{
+
+ private static final Log LOGGER = LogFactory.getLog(FormattedTextLayoutController.class);
+
+ public FormattedTextLayoutController()
+ {
+ }
+
+ private VariablesCollection getVariablesCollection()
+ {
+ LayoutController parent = getParent();
+ while (parent != null)
+ {
+ if (parent instanceof OfficeRepeatingStructureLayoutController)
+ {
+ final OfficeRepeatingStructureLayoutController orslc =
+ (OfficeRepeatingStructureLayoutController) parent;
+ if (orslc.isNormalFlowProcessing())
+ {
+ return null;
+ }
+
+ return orslc.getVariablesCollection();
+ }
+ parent = parent.getParent();
+ }
+ return null;
+ }
+
+ protected boolean isValueChanged()
+ {
+ try
+ {
+ final FormattedTextElement element = (FormattedTextElement) getNode();
+ final FormulaExpression formulaExpression = element.getValueExpression();
+ final Formula formula = formulaExpression.getCompiledFormula();
+ final LValue lValue = formula.getRootReference();
+ return isReferenceChanged(lValue);
+ }
+ catch (final ParseException e)
+ {
+ LOGGER.debug("Parse Exception", e);
+ return false;
+ }
+ }
+
+ protected LayoutController delegateContentGeneration(final ReportTarget target)
+ throws ReportProcessingException, ReportDataFactoryException,
+ DataSourceException
+ {
+ final FormattedTextElement element = (FormattedTextElement) getNode();
+ final VariablesCollection vc = getVariablesCollection();
+ if (vc != null)
+ {
+ final String name = vc.addVariable(element);
+ final AttributeMap variablesGet = new AttributeMap();
+ variablesGet.setAttribute(JFreeReportInfo.REPORT_NAMESPACE,
+ Element.TYPE_ATTRIBUTE, "variable-get");
+ variablesGet.setAttribute(JFreeReportInfo.REPORT_NAMESPACE,
+ Element.NAMESPACE_ATTRIBUTE, OfficeNamespaces.TEXT_NS);
+ variablesGet.setAttribute(OfficeNamespaces.TEXT_NS, "name", name);
+ //variablesGet.setAttribute(OfficeNamespaces.TEXT_NS, "display", "value");
+
+ final String dataStyleName = computeValueStyle();
+ if (dataStyleName != null)
+ {
+ variablesGet.setAttribute(OfficeNamespaces.STYLE_NS, "data-style-name", dataStyleName);
+ }
+
+ final String valueType = computeValueType();
+ variablesGet.setAttribute(OfficeNamespaces.OFFICE_NS, FormatValueUtility.VALUE_TYPE, valueType);
+ target.startElement(variablesGet);
+
+ target.endElement(variablesGet);
+ }
+ else
+ {
+ final DataFlags df = FormatValueUtility.computeDataFlag(element, getFlowController());
+ if (df != null)
+ {
+ if (df.getValue() instanceof String)
+ {
+ target.processContent(df);
+ }
+ else //@see http://qa.openoffice.org/issues/show_bug.cgi?id=108954
+ {
+ Element cell = getParentTableCell();
+ if (cell != null && "string".equals(cell.getAttribute(OfficeNamespaces.OFFICE_NS, FormatValueUtility.VALUE_TYPE)))
+ {
+ target.processContent(df);
+ }
+ }
+ }
+ }
+
+ return join(getFlowController());
+ }
+
+ private OfficeDocument getDocument()
+ {
+ LayoutController parent = getParent();
+ while (parent != null)
+ {
+ final Object node = parent.getNode();
+ if (node instanceof OfficeDocument)
+ {
+ return (OfficeDocument) node;
+ }
+ parent = parent.getParent();
+ }
+ return null;
+ }
+
+ private Element getParentTableCell()
+ {
+ LayoutController parent = getParent();
+ while (parent != null)
+ {
+ if (parent instanceof TableCellLayoutController)
+ {
+ final TableCellLayoutController cellController = (TableCellLayoutController) parent;
+ return cellController.getElement();
+ }
+ parent = parent.getParent();
+ }
+ return null;
+ }
+
+ private String computeValueStyle()
+ {
+ final Element tce = getParentTableCell();
+ if (tce == null)
+ {
+ return null;
+ }
+
+ final String cellStyleName = (String) tce.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ if (cellStyleName == null)
+ {
+ return null;
+ }
+ final OfficeDocument document = getDocument();
+ if (document == null)
+ {
+ return null;
+ }
+
+ final OfficeStyle style = document.getStylesCollection().getStyle("table-cell", cellStyleName);
+ return (String) style.getAttribute(OfficeNamespaces.STYLE_NS, "data-style-name");
+ }
+
+ private String computeValueType()
+ {
+ final Element tce = getParentTableCell();
+ if (tce == null)
+ {
+ // NO particular format means: Fallback to string and hope and pray ..
+ throw new IllegalStateException("A formatted text element must be a child of a Table-Cell.");
+ }
+
+ final String type = (String) tce.getAttribute(OfficeNamespaces.OFFICE_NS, FormatValueUtility.VALUE_TYPE);
+ if (type == null)
+ {
+ LOGGER.error("The Table-Cell does not have a office:value attribute defined. Your content will be messed up.");
+ return "string";
+ }
+ return type;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ImageElementContext.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ImageElementContext.java
new file mode 100644
index 000000000000..9a2def45d32c
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ImageElementContext.java
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 30.03.2007
+ */
+public class ImageElementContext
+{
+
+ private final int colSpan;
+ private final int rowSpan;
+ private String[] rowStyles;
+ private String[] colStyles;
+
+ public ImageElementContext(final int colSpan, final int rowSpan)
+ {
+ this.colSpan = colSpan;
+ this.rowSpan = rowSpan;
+ this.colStyles = new String[colSpan];
+ this.rowStyles = new String[rowSpan];
+ }
+
+ public int getColSpan()
+ {
+ return colSpan;
+ }
+
+ public int getRowSpan()
+ {
+ return rowSpan;
+ }
+
+ public String[] getRowStyles()
+ {
+ return rowStyles;
+ }
+
+ public String[] getColStyles()
+ {
+ return colStyles;
+ }
+
+ public void setRowStyle(final int pos, final String styleName)
+ {
+ rowStyles[pos] = styleName;
+ }
+
+ public void setColStyle(final int pos, final String styleName)
+ {
+ colStyles[pos] = styleName;
+ }
+
+ public String getRowStyle(final int pos)
+ {
+ return rowStyles[pos];
+ }
+
+ public String getColStyle(final int pos)
+ {
+ return colStyles[pos];
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ImageElementLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ImageElementLayoutController.java
new file mode 100644
index 000000000000..78f504107348
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ImageElementLayoutController.java
@@ -0,0 +1,325 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.ImageElement;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.data.GlobalMasterRow;
+import org.jfree.report.data.ReportDataRow;
+import org.jfree.report.expressions.FormulaExpression;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutControllerUtil;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Node;
+import org.jfree.report.structure.Section;
+import org.jfree.report.util.TextUtilities;
+
+import org.pentaho.reporting.libraries.base.util.ObjectUtilities;
+import org.pentaho.reporting.libraries.formula.Formula;
+import org.pentaho.reporting.libraries.formula.lvalues.LValue;
+import org.pentaho.reporting.libraries.formula.parser.ParseException;
+
+/**
+ * Produces an image. The image-structures itself (draw:frame and so on) are not generated here. This element produces a
+ * place-holder element and relies on the output target to compute a sensible position for the element. The report
+ * definition does not give any hints about the size of the image, so we have to derive this from the surrounding
+ * context.
+ *
+ * @author Thomas Morgner
+ * @since 05.03.2007
+ */
+public class ImageElementLayoutController
+ extends AbstractReportElementLayoutController
+{
+
+ private static final Log LOGGER = LogFactory.getLog(ImageElementLayoutController.class);
+ private ImageElementContext context;
+
+ public ImageElementLayoutController()
+ {
+ }
+
+ protected LayoutController delegateContentGeneration(final ReportTarget target)
+ throws ReportProcessingException, ReportDataFactoryException,
+ DataSourceException
+ {
+ final ImageElement imageElement = (ImageElement) getNode();
+ final FormulaExpression formulaExpression = imageElement.getFormula();
+ if (formulaExpression == null)
+ {
+ // A static image is easy. At least at this level. Dont ask about the weird things we have to do in the
+ // output targets ...
+ final String linkTarget = imageElement.getImageData();
+ generateImage(target, linkTarget, imageElement.getScaleMode(), imageElement.isPreserveIRI());
+ }
+ else
+ {
+ final Object value =
+ LayoutControllerUtil.evaluateExpression(getFlowController(), imageElement, formulaExpression);
+ generateImage(target, value, imageElement.getScaleMode(), imageElement.isPreserveIRI());
+ }
+ return join(getFlowController());
+ }
+
+ private void generateImage(final ReportTarget target,
+ final Object linkTarget,
+ final String scale,
+ final boolean preserveIri)
+ throws ReportProcessingException, DataSourceException
+ {
+ if (linkTarget == null)
+ {
+ return;
+ }
+
+ final AttributeMap image = new AttributeMap();
+ image.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, Element.NAMESPACE_ATTRIBUTE, JFreeReportInfo.REPORT_NAMESPACE);
+ image.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, Element.TYPE_ATTRIBUTE, OfficeToken.IMAGE);
+ image.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, OfficeToken.SCALE, scale);
+ image.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, OfficeToken.PRESERVE_IRI, String.valueOf(preserveIri));
+ image.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "image-context", createContext());
+ image.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, OfficeToken.IMAGE_DATA, linkTarget);
+ target.startElement(image);
+ target.endElement(image);
+ }
+
+ protected ImageElementContext createContext()
+ {
+ if (context == null)
+ {
+
+ // Step 1: Find the parent cell.
+ final LayoutController cellController = findParentCell();
+ if (cellController == null)
+ {
+ LOGGER.warn("Image is not contained in a table. Unable to calculate the image-size.");
+ return null;
+ }
+ final Element tableCell = (Element) cellController.getNode();
+ final int rowSpan = TextUtilities.parseInt((String) tableCell.getAttribute(OfficeNamespaces.TABLE_NS, "number-rows-spanned"), 1);
+ final int colSpan = TextUtilities.parseInt((String) tableCell.getAttribute(OfficeNamespaces.TABLE_NS, "number-columns-spanned"), 1);
+ if (rowSpan < 1 || colSpan < 1)
+ {
+ LOGGER.warn("Rowspan or colspan for image-size calculation was invalid.");
+ return null;
+ }
+
+ final LayoutController rowController = cellController.getParent();
+ if (rowController == null)
+ {
+ LOGGER.warn("Table-Cell has no parent. Unable to calculate the image-size.");
+ return null;
+ }
+ final Section tableRow = (Section) rowController.getNode();
+ // we are now making the assumption, that the row is a section, that contains the table-cell.
+ // This breaks the ability to return nodes or to construct reports on the fly, but the OO-report format
+ // is weird anyway and wont support such advanced techniques for the next few centuries ..
+ final int columnPos = findNodeInSection(tableRow, tableCell, OfficeToken.COVERED_TABLE_CELL);
+ if (columnPos == -1)
+ {
+ LOGGER.warn("Table-Cell is not a direct child of the table-row. Unable to calculate the image-size.");
+ return null;
+ }
+
+ final LayoutController tableController = rowController.getParent();
+ if (tableController == null)
+ {
+ LOGGER.warn("Table-Row has no Table. Unable to calculate the image-size.");
+ return null;
+ }
+
+ final Section table = (Section) tableController.getNode();
+ // ok, we got a table, so as next we have to search for the columns now.
+ final Section columns = (Section) table.findFirstChild(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_COLUMNS);
+ if (columns.getNodeCount() <= columnPos + colSpan)
+ {
+ // the colspan is to large. The table definition is therefore invalid. We do not try to fix this.
+ LOGGER.warn(
+ "The Table's defined columns do not match the col-span or col-position. Unable to calculate the image-size.");
+ return null;
+ }
+
+ final ImageElementContext context = new ImageElementContext(colSpan, rowSpan);
+ addColumnStyles(context, columns, columnPos, colSpan);
+ // finally search the styles for the row now.
+ final int rowPos = findNodeInSection(table, tableRow, null);
+ if (rowPos == -1)
+ {
+ LOGGER.warn("Table-Cell is not a direct child of the table-row. Unable to calculate the image-size.");
+ return null;
+ }
+
+ addRowStyles(context, table, rowPos, rowSpan);
+ this.context = context;
+ }
+ return this.context;
+ }
+
+ private int findNodeInSection(final Section tableRow,
+ final Element tableCell,
+ final String secondType)
+ {
+ int retval = 0;
+ final Node[] nodes = tableRow.getNodeArray();
+ final String namespace = tableCell.getNamespace();
+ final String type = tableCell.getType();
+ for (final Node node : nodes)
+ {
+ if (!(node instanceof Element))
+ {
+ continue;
+ }
+ final Element child = (Element) node;
+ /*
+ if (! OfficeToken.COVERED_TABLE_CELL.equals(child.getType()) &&
+ (ObjectUtilities.equal(child.getNamespace(), namespace) == false ||
+ ObjectUtilities.equal(child.getType(), type) == false))
+ */
+ if (!ObjectUtilities.equal(child.getNamespace(), namespace) || (!ObjectUtilities.equal(child.getType(), type) && (secondType == null || !ObjectUtilities.equal(child.getType(), secondType))))
+ {
+ continue;
+ }
+
+ if (node == tableCell)
+ {
+ return retval;
+ }
+ retval += 1;
+ }
+ return -1;
+ }
+
+ private LayoutController findParentCell()
+ {
+ LayoutController parent = getParent();
+ while (parent != null)
+ {
+ final Object node = parent.getNode();
+ if (node instanceof Element)
+ {
+ final Element element = (Element) node;
+ if (OfficeNamespaces.TABLE_NS.equals(element.getNamespace()) && "table-cell".equals(element.getType()))
+ {
+ return parent;
+ }
+ }
+ parent = parent.getParent();
+ }
+ return null;
+ }
+
+ protected boolean isValueChanged()
+ {
+ final ImageElement imageElement = (ImageElement) getNode();
+ final FormulaExpression formulaExpression = imageElement.getFormula();
+ if (formulaExpression == null)
+ {
+ final FlowController controller = getFlowController();
+ final GlobalMasterRow masterRow = controller.getMasterRow();
+ final ReportDataRow reportDataRow = masterRow.getReportDataRow();
+ return reportDataRow.getCursor() == 0;
+ }
+
+ try
+ {
+ final Formula formula = formulaExpression.getCompiledFormula();
+ final LValue lValue = formula.getRootReference();
+ return isReferenceChanged(lValue);
+ }
+ catch (ParseException e)
+ {
+ return false;
+ }
+ }
+
+ void addColumnStyles(final ImageElementContext context, final Section columns, final int columnPos, final int colSpan)
+ {
+ final Node[] columnDefs = columns.getNodeArray();
+ int columnCounter = 0;
+ for (Node columnDef : columnDefs)
+ {
+ final Element column = (Element) columnDef;
+
+ if (!ObjectUtilities.equal(column.getNamespace(), OfficeNamespaces.TABLE_NS) || !ObjectUtilities.equal(column.getType(), OfficeToken.TABLE_COLUMN))
+ {
+ continue;
+ }
+ if (columnCounter >= columnPos)
+ {
+ final String colStyle = (String) column.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ context.setColStyle(columnCounter - columnPos, colStyle);
+ }
+
+ columnCounter += 1;
+
+ if (columnCounter >= (columnPos + colSpan))
+ {
+ break;
+ }
+
+ }
+ }
+
+ void addRowStyles(final ImageElementContext context, final Section table, final int rowPos, final int rowSpan)
+ {
+ final Node[] rows = table.getNodeArray();
+ int rowCounter = 0;
+ for (Node row1 : rows)
+ {
+ final Element row = (Element) row1;
+
+ if (!ObjectUtilities.equal(row.getNamespace(), OfficeNamespaces.TABLE_NS) || !ObjectUtilities.equal(row.getType(), OfficeToken.TABLE_ROW))
+ {
+ continue;
+ }
+ if (rowCounter >= rowPos)
+ {
+ final String rowStyle = (String) row.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ context.setRowStyle(rowCounter - rowPos, rowStyle);
+ }
+
+ rowCounter += 1;
+
+ if (rowCounter >= (rowPos + rowSpan))
+ {
+ break;
+ }
+ }
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ObjectOleLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ObjectOleLayoutController.java
new file mode 100644
index 000000000000..1fcb1b67ec81
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/ObjectOleLayoutController.java
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.SDBCReportDataFactory;
+import com.sun.star.report.pentaho.model.ObjectOleElement;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataFlags;
+import org.jfree.report.DataRow;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.structure.Element;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class ObjectOleLayoutController extends AbstractReportElementLayoutController
+{
+
+ public ObjectOleLayoutController()
+ {
+ }
+
+ protected boolean isValueChanged()
+ {
+ final ObjectOleElement element = (ObjectOleElement) getNode();
+ final List masterfields = element.getMasterfields();
+ final DataRow view = getFlowController().getMasterRow().getGlobalView();
+ for (final Iterator iter = masterfields.iterator(); iter.hasNext();)
+ {
+ final String master = (String) iter.next();
+ try
+ {
+ final DataFlags flags = view.getFlags(master);
+ if (flags != null && flags.isChanged())
+ {
+ return true;
+ }
+ }
+ catch (DataSourceException e)
+ {
+ // ignore .. assume that the reference has not changed.
+ }
+ }
+ return false;
+ }
+
+ protected LayoutController delegateContentGeneration(final ReportTarget target) throws ReportProcessingException, ReportDataFactoryException, DataSourceException
+ {
+ final ObjectOleElement element = (ObjectOleElement) getNode();
+ final String url = element.getUrl();
+ if (url != null)
+ {
+ final AttributeMap ole = new AttributeMap();
+ ole.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, Element.NAMESPACE_ATTRIBUTE, JFreeReportInfo.REPORT_NAMESPACE);
+ ole.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, Element.TYPE_ATTRIBUTE, OfficeToken.OBJECT_OLE);
+ ole.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "href", url);
+ ole.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "class-id", element.getClassid());
+ final List masterfields = element.getMasterfields();
+ final List values = new ArrayList();
+ final DataRow view = getFlowController().getMasterRow().getGlobalView();
+ for (final Iterator iter = masterfields.iterator(); iter.hasNext();)
+ {
+ final String master = (String) iter.next();
+ try
+ {
+ final DataFlags flags = view.getFlags(master);
+ if (flags != null)
+ {
+ values.add(flags.getValue());
+ }
+ }
+ catch (DataSourceException e)
+ {
+ // ignore .. assume that the reference has not changed.
+ }
+ }
+ ole.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, SDBCReportDataFactory.MASTER_COLUMNS, masterfields);
+ ole.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, SDBCReportDataFactory.MASTER_VALUES, values);
+ ole.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, SDBCReportDataFactory.DETAIL_COLUMNS, element.getDetailfields());
+
+ target.startElement(ole);
+ target.endElement(ole);
+ }
+
+ return join(getFlowController());
+ }
+}
+
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java
new file mode 100644
index 000000000000..b5f77d2a2971
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeDetailLayoutController.java
@@ -0,0 +1,159 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.pentaho.model.VariablesDeclarationSection;
+
+import org.jfree.report.DataSourceException;
+import org.jfree.report.ReportData;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.data.GlobalMasterRow;
+import org.jfree.report.data.ReportDataRow;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.ElementLayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
+
+/**
+ * Creation-Date: 11.04.2007, 11:04:02
+ *
+ * @author Thomas Morgner
+ */
+public class OfficeDetailLayoutController extends SectionLayoutController
+{
+
+ public static final int STATE_PROCESS_VARIABLES = 2;
+ public static final int STATE_PROCESS_NORMAL_FLOW = 3;
+ private boolean waitForJoin;
+ private int state;
+
+ public OfficeDetailLayoutController()
+ {
+ }
+
+ /**
+ * Initializes the layout controller. This method is called exactly once. It
+ * is the creators responsibility to call this method.
+ * <p/>
+ * Calling initialize after the first advance must result in a
+ * IllegalStateException.
+ *
+ * @param node the currently processed object or layout node.
+ * @param flowController the current flow controller.
+ * @param parent the parent layout controller that was responsible for
+ * instantiating this controller.
+ * @throws org.jfree.report.DataSourceException
+ * if there was a problem reading data from the datasource.
+ * @throws org.jfree.report.ReportProcessingException
+ * if there was a general problem during the report processing.
+ * @throws org.jfree.report.ReportDataFactoryException
+ * if a query failed.
+ */
+ public void initialize(final Object node,
+ final FlowController flowController,
+ final LayoutController parent)
+ throws DataSourceException, ReportDataFactoryException,
+ ReportProcessingException
+ {
+ super.initialize(node, flowController, parent);
+ state = OfficeDetailLayoutController.STATE_PROCESS_VARIABLES;
+ }
+
+ /**
+ * This method is called for each newly instantiated layout controller. The returned layout controller instance should
+ * have a processing state of either 'OPEN' or 'FINISHING' depending on whether there is any content or any child
+ * nodes to process.
+ *
+ * @param target the report target that receives generated events.
+ * @return the new layout controller instance representing the new state.
+ * @throws org.jfree.report.DataSourceException
+ * if there was a problem reading data from the datasource.
+ * @throws org.jfree.report.ReportProcessingException
+ * if there was a general problem during the report processing.
+ * @throws org.jfree.report.ReportDataFactoryException
+ * if a query failed.
+ */
+ protected LayoutController startElement(final ReportTarget target)
+ throws DataSourceException, ReportProcessingException, ReportDataFactoryException
+ {
+ final FlowController fc = getFlowController();
+ final GlobalMasterRow masterRow = fc.getMasterRow();
+ final ReportDataRow reportDataRow = masterRow.getReportDataRow();
+ final ReportData reportData = reportDataRow.getReportData();
+ if (!reportData.isReadable())
+ {
+ reportData.isReadable();
+ // If this report has no data, then do not print the detail section. The detail section
+ // is the only section that behaves this way, and for now this is only done in the OO-implementation
+ final SectionLayoutController derived = (SectionLayoutController) clone();
+ derived.setProcessingState(ElementLayoutController.FINISHED);
+ derived.setFlowController(fc);
+ return derived;
+ }
+
+ if (state == OfficeDetailLayoutController.STATE_PROCESS_VARIABLES)
+ {
+ final VariablesDeclarationSection variables = new VariablesDeclarationSection();
+ final OfficeDetailLayoutController controller = (OfficeDetailLayoutController) clone();
+ controller.state = OfficeDetailLayoutController.STATE_PROCESS_NORMAL_FLOW;
+ controller.waitForJoin = true;
+ return processChild(controller, variables, fc);
+ }
+
+ return super.startElement(target);
+ }
+
+ protected void resetSectionForRepeat()
+ {
+ super.resetSectionForRepeat();
+ state = STATE_PROCESS_VARIABLES;
+ }
+
+ /**
+ * Joins with a delegated process flow. This is generally called from a child
+ * flow and should *not* (I mean it!) be called from outside. If you do,
+ * you'll suffer.
+ *
+ * @param flowController the flow controller of the parent.
+ * @return the joined layout controller that incorperates all changes from the
+ * delegate.
+ */
+ public LayoutController join(final FlowController flowController)
+ {
+ if (waitForJoin)
+ {
+ final OfficeDetailLayoutController derived = (OfficeDetailLayoutController) clone();
+ derived.setProcessingState(ElementLayoutController.NOT_STARTED);
+ derived.setFlowController(flowController);
+ derived.waitForJoin = false;
+ return derived;
+ }
+ return super.join(flowController);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupInstanceSectionLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupInstanceSectionLayoutController.java
new file mode 100644
index 000000000000..1be93d70d7d1
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupInstanceSectionLayoutController.java
@@ -0,0 +1,153 @@
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.pentaho.model.OfficeGroupSection;
+import com.sun.star.report.pentaho.model.VariablesDeclarationSection;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.expressions.Expression;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportContext;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.ElementLayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutControllerFactory;
+import org.jfree.report.flow.layoutprocessor.LayoutControllerUtil;
+import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Node;
+
+/**
+ * Creation-Date: 25.07.2007, 14:50:45
+ *
+ * @author Thomas Morgner
+ */
+public class OfficeGroupInstanceSectionLayoutController extends SectionLayoutController
+{
+
+ public static final int STATE_PROCESS_VARIABLES = 2;
+ public static final int STATE_PROCESS_NORMAL_FLOW = 3;
+ private int state;
+ private boolean waitForJoin;
+
+ public OfficeGroupInstanceSectionLayoutController()
+ {
+ }
+
+ public void initialize(final Object node, final FlowController flowController, final LayoutController parent)
+ throws DataSourceException, ReportDataFactoryException, ReportProcessingException
+ {
+ super.initialize(node, flowController, parent);
+ state = STATE_PROCESS_VARIABLES;
+ }
+
+ protected LayoutController processContent(final ReportTarget target)
+ throws DataSourceException, ReportProcessingException, ReportDataFactoryException
+ {
+ if (state == OfficeGroupInstanceSectionLayoutController.STATE_PROCESS_VARIABLES)
+ {
+ // todo: Fill the variables section with something sensible ..
+ final VariablesDeclarationSection variables = new VariablesDeclarationSection();
+ final OfficeGroupInstanceSectionLayoutController controller =
+ (OfficeGroupInstanceSectionLayoutController) clone();
+ controller.state =
+ OfficeGroupLayoutController.STATE_PROCESS_NORMAL_FLOW;
+ controller.waitForJoin = true;
+ return processChild(controller, variables, getFlowController());
+ }
+ return super.processContent(target);
+ }
+
+ // isDisplayable is private in version 0.9.1, so until the upgrade we keep this copy of the method
+ // todo: Delete it unce the sun-cvs contains version 0.9.2.
+ protected LayoutController processChild(final SectionLayoutController derived,
+ final Node node,
+ final FlowController flowController)
+ throws DataSourceException, ReportProcessingException,
+ ReportDataFactoryException
+ {
+ final ReportContext reportContext = flowController.getReportContext();
+ final LayoutControllerFactory layoutControllerFactory = reportContext.getLayoutControllerFactory();
+ if (isDisplayable(node))
+ {
+ derived.setProcessingState(ElementLayoutController.WAITING_FOR_JOIN);
+ return layoutControllerFactory.create(flowController, node, derived);
+ }
+ else
+ {
+ derived.setProcessingState(ElementLayoutController.WAITING_FOR_JOIN);
+ final LayoutController childLc = layoutControllerFactory.create(flowController, node, derived);
+ return LayoutControllerUtil.skipInvisibleElement(childLc);
+ }
+ }
+
+ protected boolean isDisplayable(final Node node) throws DataSourceException
+ {
+ if (!(node instanceof OfficeGroupSection))
+ {
+ return _isDisplayable(node);
+ }
+
+ final OfficeGroupSection section = (OfficeGroupSection) node;
+ return !section.isRepeatSection() && _isDisplayable(node);
+ }
+
+ protected boolean _isDisplayable(final Node node)
+ throws DataSourceException
+ {
+ // temp method until the pending upgrade to 0.9.2. Later we just call super.isDisplayable(..) instead.
+ if (!node.isEnabled())
+ {
+ return false;
+ }
+
+ final Expression expression = node.getDisplayCondition();
+ if (expression == null)
+ {
+ return true;
+ }
+
+ final Object result = LayoutControllerUtil.evaluateExpression(getFlowController(), node, expression);
+ return Boolean.TRUE.equals(result);
+ }
+
+ protected void resetSectionForRepeat()
+ {
+ super.resetSectionForRepeat();
+ state = STATE_PROCESS_VARIABLES;
+ }
+
+ /**
+ * Joins with a delegated process flow. This is generally called from a child
+ * flow and should *not* (I mean it!) be called from outside. If you do,
+ * you'll suffer.
+ *
+ * @param flowController the flow controller of the parent.
+ * @return the joined layout controller that incorperates all changes from the
+ * delegate.
+ */
+ public LayoutController join(final FlowController flowController)
+ {
+ if (waitForJoin)
+ {
+ final OfficeGroupInstanceSectionLayoutController derived = (OfficeGroupInstanceSectionLayoutController) clone();
+ derived.setProcessingState(ElementLayoutController.OPENED);
+ derived.setFlowController(flowController);
+ derived.waitForJoin = false;
+ return derived;
+ }
+ return super.join(flowController);
+ }
+
+ protected AttributeMap computeAttributes(final FlowController fc, final Element element, final ReportTarget target)
+ throws DataSourceException
+ {
+ final AttributeMap map = new AttributeMap(super.computeAttributes(fc, element, target));
+ map.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "iteration-count", getIterationCount());
+ map.makeReadOnly();
+ return map;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java
new file mode 100644
index 000000000000..9055c2a5bdd1
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupLayoutController.java
@@ -0,0 +1,204 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.pentaho.model.OfficeGroup;
+import com.sun.star.report.pentaho.model.OfficeGroupSection;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.ElementLayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
+import org.jfree.report.structure.Element;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 15.03.2007
+ */
+public class OfficeGroupLayoutController extends SectionLayoutController
+ implements OfficeRepeatingStructureLayoutController
+{
+
+ public static final int STATE_PROCESS_REPEATING_HEADER = 0;
+ public static final int STATE_PROCESS_REPEATING_FOOTER = 1;
+ public static final int STATE_PROCESS_NORMAL_FLOW = 3;
+ private boolean waitForJoin;
+ private int state;
+ private VariablesCollection variablesCollection;
+ private boolean repeatHeader;
+ private boolean repeatFooter;
+
+ public OfficeGroupLayoutController()
+ {
+ }
+
+ /**
+ * Initializes the layout controller. This method is called exactly once. It
+ * is the creators responsibility to call this method.
+ * <p/>
+ * Calling initialize after the first advance must result in a
+ * IllegalStateException.
+ *
+ * @param node the currently processed object or layout node.
+ * @param flowController the current flow controller.
+ * @param parent the parent layout controller that was responsible for
+ * instantiating this controller.
+ * @throws org.jfree.report.DataSourceException
+ * if there was a problem reading data from the datasource.
+ * @throws org.jfree.report.ReportProcessingException
+ * if there was a general problem during the report processing.
+ * @throws org.jfree.report.ReportDataFactoryException
+ * if a query failed.
+ */
+ public void initialize(final Object node,
+ final FlowController flowController,
+ final LayoutController parent)
+ throws DataSourceException, ReportDataFactoryException,
+ ReportProcessingException
+ {
+ super.initialize(node, flowController, parent);
+ state = OfficeGroupLayoutController.STATE_PROCESS_REPEATING_HEADER;
+ variablesCollection = new VariablesCollection(computeVariablesPrefix());
+
+
+ final OfficeGroup group = (OfficeGroup) getElement();
+ final OfficeGroupSection header = group.getHeader();
+ repeatHeader = (header != null && header.isRepeatSection());
+
+ final OfficeGroupSection footer = group.getFooter();
+ repeatFooter = (footer != null && footer.isRepeatSection());
+ }
+
+ protected LayoutController processContent(final ReportTarget target)
+ throws DataSourceException, ReportProcessingException,
+ ReportDataFactoryException
+ {
+ if (state == OfficeGroupLayoutController.STATE_PROCESS_REPEATING_HEADER)
+ {
+
+ final OfficeGroupLayoutController controller =
+ (OfficeGroupLayoutController) clone();
+ controller.state =
+ OfficeGroupLayoutController.STATE_PROCESS_REPEATING_FOOTER;
+
+ if (!repeatHeader)
+ {
+ return controller;
+ }
+
+ final OfficeGroup group = (OfficeGroup) getElement();
+ final OfficeGroupSection header = group.getHeader();
+ controller.waitForJoin = true;
+ return processChild(controller, header, getFlowController());
+ }
+
+ if (state == OfficeGroupLayoutController.STATE_PROCESS_REPEATING_FOOTER)
+ {
+
+ final OfficeGroupLayoutController controller =
+ (OfficeGroupLayoutController) clone();
+ controller.state = OfficeGroupLayoutController.STATE_PROCESS_NORMAL_FLOW;
+
+ if (!repeatFooter)
+ {
+ return controller;
+ }
+
+ final OfficeGroup group = (OfficeGroup) getElement();
+ final OfficeGroupSection footer = group.getFooter();
+ controller.waitForJoin = true;
+ return processChild(controller, footer, getFlowController());
+ }
+
+ return super.processContent(target);
+ }
+
+ /**
+ * Joins with a delegated process flow. This is generally called from a child
+ * flow and should *not* (I mean it!) be called from outside. If you do,
+ * you'll suffer.
+ *
+ * @param flowController the flow controller of the parent.
+ * @return the joined layout controller that incorperates all changes from the
+ * delegate.
+ */
+ public LayoutController join(final FlowController flowController)
+ {
+ if (waitForJoin)
+ {
+ final OfficeGroupLayoutController derived = (OfficeGroupLayoutController) clone();
+ derived.setProcessingState(ElementLayoutController.OPENED);
+ derived.setFlowController(flowController);
+ derived.waitForJoin = false;
+ return derived;
+ }
+ return super.join(flowController);
+ }
+
+ public boolean isNormalFlowProcessing()
+ {
+ return state == OfficeGroupLayoutController.STATE_PROCESS_NORMAL_FLOW;
+ }
+
+ private String computeVariablesPrefix()
+ {
+ int count = 0;
+ LayoutController lc = this;
+ while (lc != null)
+ {
+ if (lc instanceof OfficeGroupLayoutController)
+ {
+ count++;
+ }
+ lc = lc.getParent();
+ }
+ return "auto_group_" + count + "_";
+ }
+
+ public VariablesCollection getVariablesCollection()
+ {
+ return variablesCollection;
+ }
+
+ protected AttributeMap computeAttributes(final FlowController fc, final Element element, final ReportTarget target)
+ throws DataSourceException
+ {
+ final AttributeMap map = new AttributeMap(super.computeAttributes(fc, element, target));
+ final String value = String.valueOf(repeatHeader || repeatFooter);
+ map.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "repeating-header-or-footer", value);
+ map.makeReadOnly();
+ return map;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupSectionLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupSectionLayoutController.java
new file mode 100644
index 000000000000..21086d6584d9
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeGroupSectionLayoutController.java
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.model.OfficeGroupSection;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.ElementLayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
+import org.jfree.report.structure.Element;
+
+/**
+ * This layoutcontroller simply checks, whether the parent layout controller
+ * is a OfficeGroupLayoutController and whether this layout controller is
+ * processing the normal flow or an repeating section. If a repeating section
+ * is being processed, an marker attribute is added to the element's call
+ * to OutputProcessor.startElement() and OutputProcessor.endElement().
+ *
+ * @author Thomas Morgner
+ * @since 19.03.2007
+ */
+public class OfficeGroupSectionLayoutController extends SectionLayoutController
+{
+
+ public OfficeGroupSectionLayoutController()
+ {
+ }
+
+ protected LayoutController startElement(final ReportTarget target)
+ throws DataSourceException, ReportProcessingException, ReportDataFactoryException
+ {
+ final OfficeGroupSection section = (OfficeGroupSection) getElement();
+ if (!section.isRepeatSection())
+ {
+ return super.startElement(target);
+ }
+
+ final LayoutController controller = getParent();
+ if (!(controller instanceof OfficeGroupLayoutController))
+ {
+ return super.startElement(target);
+ }
+ final OfficeGroupLayoutController oglc = (OfficeGroupLayoutController) controller;
+ if (!oglc.isNormalFlowProcessing())
+ {
+ return super.startElement(target);
+ }
+
+ // Skip the processing if the section is a repeating header or footer and we are processing the normal flow ..
+ final ElementLayoutController clone = (ElementLayoutController) this.clone();
+ clone.setProcessingState(ElementLayoutController.FINISHED);
+ return clone;
+ }
+
+ protected AttributeMap computeAttributes(final FlowController fc,
+ final Element element,
+ final ReportTarget target)
+ throws DataSourceException
+ {
+ final AttributeMap attrs = super.computeAttributes(fc, element, target);
+ final LayoutController controller = getParent();
+ if (!(controller instanceof OfficeGroupLayoutController))
+ {
+ return attrs;
+ }
+ final OfficeGroupLayoutController oglc = (OfficeGroupLayoutController) controller;
+ if (oglc.isNormalFlowProcessing())
+ {
+ return attrs;
+ }
+
+ final AttributeMap retval = new AttributeMap(attrs);
+ retval.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "repeated-section", OfficeToken.TRUE);
+ retval.makeReadOnly();
+ return retval;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficePageSectionLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficePageSectionLayoutController.java
new file mode 100644
index 000000000000..2eb3dd363f91
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficePageSectionLayoutController.java
@@ -0,0 +1,30 @@
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
+import org.jfree.report.structure.Element;
+
+/**
+ * Todo: Document Me
+ *
+ * @author Thomas Morgner
+ */
+public class OfficePageSectionLayoutController extends SectionLayoutController
+{
+
+ public OfficePageSectionLayoutController()
+ {
+ }
+
+ protected AttributeMap computeAttributes(final FlowController flowController, final Element element, final ReportTarget reportTarget) throws DataSourceException
+ {
+ final AttributeMap map = new AttributeMap(super.computeAttributes(flowController, element, reportTarget));
+ map.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "role", "spreadsheet-section");
+ map.makeReadOnly();
+ return map;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeRepeatingStructureLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeRepeatingStructureLayoutController.java
new file mode 100644
index 000000000000..790d18527f14
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeRepeatingStructureLayoutController.java
@@ -0,0 +1,43 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 22.03.2007
+ */
+public interface OfficeRepeatingStructureLayoutController extends LayoutController
+{
+
+ public boolean isNormalFlowProcessing();
+
+ public VariablesCollection getVariablesCollection();
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeReportLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeReportLayoutController.java
new file mode 100644
index 000000000000..2ad88388b347
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeReportLayoutController.java
@@ -0,0 +1,270 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.pentaho.model.OfficeReport;
+import com.sun.star.report.pentaho.model.VariablesDeclarationSection;
+
+import org.jfree.report.DataSourceException;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportContext;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.ElementLayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutControllerFactory;
+import org.jfree.report.structure.Node;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 06.03.2007
+ */
+public class OfficeReportLayoutController extends ElementLayoutController
+ implements OfficeRepeatingStructureLayoutController
+{
+
+ private static final int STATE_NOT_STARTED = 0;
+ private static final int STATE_TEMPLATES = 1;
+ private static final int STATE_PAGE_HEADER_DONE = 2;
+ private static final int STATE_PAGE_FOOTER_DONE = 3;
+ private static final int STATE_SPREADSHEET_PAGE_HEADER_DONE = 4;
+ private static final int STATE_SPREADSHEET_PAGE_FOOTER_DONE = 5;
+ private static final int STATE_COLUMN_HEADER_DONE = 6;
+ private static final int STATE_COLUMN_FOOTER_DONE = 7;
+ private static final int STATE_INITIAL_VARIABLES_DONE = 8;
+ private static final int STATE_REPORT_HEADER_DONE = 9;
+ private static final int STATE_REPORT_BODY_DONE = 10;
+ private static final int STATE_REPORT_FOOTER_VARIABLES = 11;
+ private static final int STATE_REPORT_FOOTER_DONE = 12;
+ private int state;
+ private VariablesCollection variablesCollection;
+
+ public OfficeReportLayoutController()
+ {
+ }
+
+ /**
+ * Initializes the layout controller. This method is called exactly once. It
+ * is the creators responsibility to call this method.
+ * <p/>
+ * Calling initialize after the first advance must result in a
+ * IllegalStateException.
+ *
+ * @param node the currently processed object or layout node.
+ * @param flowController the current flow controller.
+ * @param parent the parent layout controller that was responsible for
+ * instantiating this controller.
+ * @throws org.jfree.report.DataSourceException
+ * if there was a problem reading data from the datasource.
+ * @throws org.jfree.report.ReportProcessingException
+ * if there was a general problem during the report processing.
+ * @throws org.jfree.report.ReportDataFactoryException
+ * if a query failed.
+ */
+ public void initialize(final Object node, final FlowController flowController,
+ final LayoutController parent)
+ throws DataSourceException, ReportDataFactoryException,
+ ReportProcessingException
+ {
+ super.initialize(node, flowController, parent);
+ variablesCollection = new VariablesCollection("auto_report_");
+ }
+
+ /**
+ * Processes any content in this element. This method is called when the
+ * processing state is 'OPENED'. The returned layout controller will retain
+ * the 'OPENED' state as long as there is more content available. Once all
+ * content has been processed, the returned layout controller should carry a
+ * 'FINISHED' state.
+ *
+ * @param target the report target that receives generated events.
+ * @return the new layout controller instance representing the new state.
+ *
+ * @throws org.jfree.report.DataSourceException
+ * if there was a problem reading data from the datasource.
+ * @throws org.jfree.report.ReportProcessingException
+ * if there was a general problem during the report processing.
+ * @throws org.jfree.report.ReportDataFactoryException
+ * if a query failed.
+ */
+ protected LayoutController processContent(final ReportTarget target)
+ throws DataSourceException, ReportProcessingException,
+ ReportDataFactoryException
+ {
+ final OfficeReport or = (OfficeReport) getElement();
+
+ switch (state)
+ {
+ case OfficeReportLayoutController.STATE_NOT_STARTED:
+ {
+ return delegateToTemplates(OfficeReportLayoutController.STATE_TEMPLATES);
+ }
+ case OfficeReportLayoutController.STATE_TEMPLATES:
+ {
+ return delegateSection(or.getPageHeader(),
+ OfficeReportLayoutController.STATE_PAGE_HEADER_DONE);
+ }
+ case OfficeReportLayoutController.STATE_PAGE_HEADER_DONE:
+ {
+ return delegateSpreadsheetSection(or.getPageHeader(),
+ OfficeReportLayoutController.STATE_SPREADSHEET_PAGE_HEADER_DONE);
+ }
+ case OfficeReportLayoutController.STATE_SPREADSHEET_PAGE_HEADER_DONE:
+ {
+ return delegateSection(or.getPageFooter(),
+ OfficeReportLayoutController.STATE_PAGE_FOOTER_DONE);
+ }
+ case OfficeReportLayoutController.STATE_PAGE_FOOTER_DONE:
+ {
+ return delegateSection(or.getColumnHeader(),
+ OfficeReportLayoutController.STATE_COLUMN_HEADER_DONE);
+ }
+ case OfficeReportLayoutController.STATE_COLUMN_HEADER_DONE:
+ {
+ return delegateSection(or.getColumnFooter(),
+ OfficeReportLayoutController.STATE_COLUMN_FOOTER_DONE);
+ }
+ case OfficeReportLayoutController.STATE_COLUMN_FOOTER_DONE:
+ {
+ return delegateSection(new VariablesDeclarationSection(),
+ OfficeReportLayoutController.STATE_INITIAL_VARIABLES_DONE);
+ }
+ case OfficeReportLayoutController.STATE_INITIAL_VARIABLES_DONE:
+ {
+ return delegateSection(or.getReportHeader(),
+ OfficeReportLayoutController.STATE_REPORT_HEADER_DONE);
+ }
+ case OfficeReportLayoutController.STATE_REPORT_HEADER_DONE:
+ {
+ return delegateSection(or.getBodySection(),
+ OfficeReportLayoutController.STATE_REPORT_BODY_DONE);
+ }
+ case OfficeReportLayoutController.STATE_REPORT_BODY_DONE:
+ {
+ return delegateSection(new VariablesDeclarationSection(),
+ OfficeReportLayoutController.STATE_REPORT_FOOTER_VARIABLES);
+ }
+ case OfficeReportLayoutController.STATE_REPORT_FOOTER_VARIABLES:
+ {
+ return delegateSection(or.getReportFooter(),
+ OfficeReportLayoutController.STATE_REPORT_FOOTER_DONE);
+ }
+ case OfficeReportLayoutController.STATE_REPORT_FOOTER_DONE:
+ {
+ return delegateSpreadsheetSection(or.getPageFooter(),
+ OfficeReportLayoutController.STATE_SPREADSHEET_PAGE_FOOTER_DONE);
+ }
+ case OfficeReportLayoutController.STATE_SPREADSHEET_PAGE_FOOTER_DONE:
+ {
+ final OfficeReportLayoutController olc = (OfficeReportLayoutController) clone();
+ olc.setProcessingState(ElementLayoutController.FINISHING);
+ return olc;
+ }
+ default:
+ {
+ throw new IllegalStateException("Invalid processing state encountered.");
+ }
+ }
+ }
+
+ private LayoutController delegateSpreadsheetSection(final Node node, final int nextState)
+ throws DataSourceException, ReportProcessingException, ReportDataFactoryException
+ {
+ final OfficeReportLayoutController olc = (OfficeReportLayoutController) clone();
+ olc.state = nextState;
+
+ if (node == null)
+ {
+ return olc;
+ }
+
+ final OfficePageSectionLayoutController templateLc = new OfficePageSectionLayoutController();
+ templateLc.initialize(node, getFlowController(), olc);
+ return templateLc;
+ }
+
+ private LayoutController delegateToTemplates(final int nextState)
+ throws ReportProcessingException, ReportDataFactoryException,
+ DataSourceException
+ {
+ final OfficeReportLayoutController olc = (OfficeReportLayoutController) clone();
+ olc.state = nextState;
+
+ final OfficeTableTemplateLayoutController templateLc = new OfficeTableTemplateLayoutController();
+ templateLc.initialize(getElement(), getFlowController(), olc);
+ return templateLc;
+
+ }
+
+ private LayoutController delegateSection(final Node n, final int nextState)
+ throws ReportProcessingException, ReportDataFactoryException,
+ DataSourceException
+ {
+ final OfficeReportLayoutController olc = (OfficeReportLayoutController) clone();
+ olc.state = nextState;
+ if (n == null)
+ {
+ return olc;
+ }
+
+ final FlowController flowController = getFlowController();
+ final ReportContext reportContext = flowController.getReportContext();
+ final LayoutControllerFactory layoutControllerFactory =
+ reportContext.getLayoutControllerFactory();
+ return layoutControllerFactory.create(flowController, n, olc);
+
+ }
+
+ /**
+ * Joins with a delegated process flow. This is generally called from a child
+ * flow and should *not* (I mean it!) be called from outside. If you do,
+ * you'll suffer.
+ *
+ * @param flowController the flow controller of the parent.
+ * @return the joined layout controller that incorperates all changes from the
+ * delegate.
+ */
+ public LayoutController join(final FlowController flowController)
+ {
+ final OfficeReportLayoutController derived = (OfficeReportLayoutController) clone();
+ derived.setFlowController(flowController);
+ return derived;
+ }
+
+ public boolean isNormalFlowProcessing()
+ {
+ return state != OfficeReportLayoutController.STATE_PAGE_HEADER_DONE && state != OfficeReportLayoutController.STATE_PAGE_FOOTER_DONE;
+ }
+
+ public VariablesCollection getVariablesCollection()
+ {
+ return variablesCollection;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeTableLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeTableLayoutController.java
new file mode 100644
index 000000000000..9ce1be656b53
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeTableLayoutController.java
@@ -0,0 +1,79 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Node;
+import org.jfree.report.structure.Section;
+import org.jfree.report.util.IntegerCache;
+
+/**
+ * Creation-Date: 24.04.2007, 14:40:20
+ *
+ * @author Thomas Morgner
+ */
+public class OfficeTableLayoutController extends SectionLayoutController
+{
+
+ public OfficeTableLayoutController()
+ {
+ }
+
+ protected AttributeMap computeAttributes(final FlowController fc, final Element element, final ReportTarget target)
+ throws DataSourceException
+ {
+ final AttributeMap attributeMap = new AttributeMap(super.computeAttributes(fc, element, target));
+ final Section s = (Section) element;
+ int rowCount = 0;
+ final Node[] nodeArray = s.getNodeArray();
+ for (int i = 0; i < nodeArray.length; i++)
+ {
+ final Node node = nodeArray[i];
+ if (node instanceof Element)
+ {
+ final Element child = (Element) node;
+ if (OfficeNamespaces.TABLE_NS.equals(child.getNamespace()) && OfficeToken.TABLE_ROW.equals(child.getType()))
+ {
+ rowCount += 1;
+ }
+ }
+ }
+
+ attributeMap.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "table-row-count", IntegerCache.getInteger(rowCount));
+ attributeMap.makeReadOnly();
+ return attributeMap;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeTableTemplateLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeTableTemplateLayoutController.java
new file mode 100644
index 000000000000..6c6f997d84aa
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/OfficeTableTemplateLayoutController.java
@@ -0,0 +1,189 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.OfficeGroup;
+import com.sun.star.report.pentaho.model.OfficeReport;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Node;
+import org.jfree.report.structure.Section;
+
+
+/**
+ * Creation-Date: 24.04.2007, 16:06:52
+ *
+ * @author Thomas Morgner
+ */
+public class OfficeTableTemplateLayoutController extends SectionLayoutController
+{
+
+ private Node[] nodes;
+
+ public OfficeTableTemplateLayoutController()
+ {
+ }
+
+ /**
+ * Initializes the layout controller. This method is called exactly once. It is the creators responsibility to call
+ * this method.
+ * <p/>
+ * Calling initialize after the first advance must result in a IllegalStateException.
+ *
+ * @param node the currently processed object or layout node.
+ * @param flowController the current flow controller.
+ * @param parent the parent layout controller that was responsible for instantiating this controller.
+ * @throws org.jfree.report.DataSourceException
+ * if there was a problem reading data from the datasource.
+ * @throws org.jfree.report.ReportProcessingException
+ * if there was a general problem during the report processing.
+ * @throws org.jfree.report.ReportDataFactoryException
+ * if a query failed.
+ */
+ public void initialize(final Object node, final FlowController flowController, final LayoutController parent)
+ throws DataSourceException, ReportDataFactoryException, ReportProcessingException
+ {
+ final Section section = new Section();
+ section.setNamespace(JFreeReportInfo.REPORT_NAMESPACE);
+ section.setType("template");
+ super.initialize(section, flowController, parent);
+
+ final OfficeReport report = (OfficeReport) node;
+ final ArrayList tables = new ArrayList();
+ if (report.getPageHeader() != null)
+ {
+ addFromSection(tables, (Section) report.getPageHeader());
+ }
+ if (report.getReportHeader() != null)
+ {
+ addFromSection(tables, (Section) report.getReportHeader());
+ }
+ addPBody(tables, (Section) report.getPreBodySection());
+ addFromBody(tables, (Section) report.getBodySection());
+ addPBody(tables, (Section) report.getPostBodySection());
+ if (report.getReportFooter() != null)
+ {
+ addFromSection(tables, (Section) report.getReportFooter());
+ }
+ if (report.getPageFooter() != null)
+ {
+ addFromSection(tables, (Section) report.getPageFooter());
+ }
+
+ this.nodes = (Node[]) tables.toArray(new Node[tables.size()]);
+ }
+
+ private void addPBody(final List tables, final Section section)
+ {
+ if (section != null)
+ {
+ // tables.add(section);
+ final Node[] nodeArray = section.getNodeArray();
+ for (int i = 0; i < nodeArray.length; i++)
+ {
+ final Node node = nodeArray[i];
+ tables.add(node);
+ }
+
+ }
+ }
+
+ private void addFromBody(final List tables, final Section section)
+ {
+ final Node[] nodeArray = section.getNodeArray();
+ for (int i = 0; i < nodeArray.length; i++)
+ {
+ final Node node = nodeArray[i];
+ if (node instanceof Section)
+ {
+ final Section child = (Section) node;
+ if (node instanceof OfficeGroup)
+ {
+ addFromGroup(tables, child);
+ }
+ else
+ {
+ addFromSection(tables, child);
+ }
+ }
+ }
+ }
+
+ private void addFromGroup(final List tables, final Section section)
+ {
+ final Node[] nodeArray = section.getNodeArray();
+ for (int i = 0; i < nodeArray.length; i++)
+ {
+ final Node node = nodeArray[i];
+ if (node instanceof Section)
+ {
+ final Section element = (Section) node;
+ if (JFreeReportInfo.REPORT_NAMESPACE.equals(element.getNamespace()) && "group-body".equals(element.getType()))
+ {
+ addFromBody(tables, element);
+ }
+ else
+ {
+ addFromSection(tables, element);
+ }
+ }
+ }
+ }
+
+ private void addFromSection(final List tables, final Section section)
+ {
+ final Node[] nodeArray = section.getNodeArray();
+ for (int i = 0; i < nodeArray.length; i++)
+ {
+ final Node node = nodeArray[i];
+ if (node instanceof Element)
+ {
+ final Element element = (Element) node;
+ if (OfficeNamespaces.TABLE_NS.equals(element.getNamespace()) && "table".equals(element.getType()))
+ {
+ tables.add(element);
+ }
+ }
+ }
+ }
+
+ public Node[] getNodes()
+ {
+ return nodes;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/TableCellLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/TableCellLayoutController.java
new file mode 100644
index 000000000000..e575831ebf2a
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/TableCellLayoutController.java
@@ -0,0 +1,216 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.FormatCondition;
+import com.sun.star.report.pentaho.model.FormattedTextElement;
+import com.sun.star.report.pentaho.model.ReportElement;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataFlags;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.expressions.Expression;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.LayoutControllerUtil;
+import org.jfree.report.flow.layoutprocessor.SectionLayoutController;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Node;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.base.util.ObjectUtilities;
+
+/**
+ * Before writing the table cell, we have to evaluate the childs of the cell. The cell itself can either be empty or it
+ * has a one ore more paragraphs inside. The paragraph contains a single report element, but may contain additional
+ * other content.
+ *
+ * @author Thomas Morgner
+ * @noinspection CloneableClassWithoutClone
+ * @since 05.03.2007
+ */
+public class TableCellLayoutController extends SectionLayoutController
+{
+
+ public TableCellLayoutController()
+ {
+ }
+
+ protected AttributeMap computeAttributes(final FlowController fc,
+ final Element element,
+ final ReportTarget target)
+ throws DataSourceException
+ {
+ final AttributeMap attributeMap = new AttributeMap(super.computeAttributes(fc, element, target));
+ final String definedStyle = (String) attributeMap.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ attributeMap.setAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME, getDisplayStyleName((Section) element, definedStyle));
+
+ try
+ {
+ final DataFlags value = computeValue(attributeMap);
+ final String valueType = (String) attributeMap.getAttribute(OfficeNamespaces.OFFICE_NS, FormatValueUtility.VALUE_TYPE);
+ if (value != null)
+ {
+ FormatValueUtility.applyValueForCell(value.getValue(), attributeMap, valueType);
+ }
+ else if ( "float".equals(valueType))
+ {
+ attributeMap.setAttribute(OfficeNamespaces.OFFICE_NS,
+ FormatValueUtility.VALUE, "NaN");
+ }
+ // #i114108#: except on form elements, the only value-type that can
+ // occur without an accomanying value attribute is "string"
+ else if (!"string".equals(valueType))
+ {
+ attributeMap.setAttribute(OfficeNamespaces.OFFICE_NS,
+ FormatValueUtility.VALUE_TYPE, "string");
+ }
+ }
+ catch (Exception e)
+ {
+ // ignore ..
+ }
+ attributeMap.makeReadOnly();
+ return attributeMap;
+ }
+
+ private DataFlags computeValue(final AttributeMap attributeMap) throws DataSourceException
+ {
+ // Search for the first FormattedTextElement
+ final Section cell = (Section) getElement();
+ final FormattedTextElement element = findFormattedTextElement(cell);
+ if (element == null)
+ {
+ return null;
+ }
+ final Expression dc = element.getDisplayCondition();
+ if (dc != null)
+ {
+ final Object o = LayoutControllerUtil.evaluateExpression(getFlowController(), element, dc);
+ if (Boolean.FALSE.equals(o))
+ {
+ attributeMap.setAttribute(OfficeNamespaces.OFFICE_NS,
+ FormatValueUtility.VALUE_TYPE, "string");
+ return null;
+ }
+ }
+ return FormatValueUtility.computeDataFlag(element, getFlowController());
+ }
+
+ private FormattedTextElement findFormattedTextElement(final Section section)
+ {
+ final Node[] nodeArray = section.getNodeArray();
+ for (int i = 0; i < nodeArray.length; i++)
+ {
+ final Node node = nodeArray[i];
+ if (node instanceof FormattedTextElement)
+ {
+ return (FormattedTextElement) node;
+ }
+ else if (node instanceof Section)
+ {
+ final FormattedTextElement retval = findFormattedTextElement((Section) node);
+ if (retval != null)
+ {
+ return retval;
+ }
+ }
+ }
+ return null;
+ }
+
+ private String getDisplayStyleName(final Section section,
+ final String defaultStyle)
+ {
+ if (!section.isEnabled() || section.getNodeCount() == 0)
+ {
+ return defaultStyle;
+ }
+
+ final Node[] nodes = section.getNodeArray();
+ for (int i = 0; i < nodes.length; i++)
+ {
+ final Node child = nodes[i];
+ if (child instanceof ReportElement && child.isEnabled())
+ {
+ final ReportElement element = (ReportElement) child;
+ if (element.getFormatConditionCount() > 0)
+ {
+ final Expression displayCond = element.getDisplayCondition();
+ if (displayCond != null)
+ {
+ try
+ {
+ if (Boolean.FALSE.equals(LayoutControllerUtil.evaluateExpression(getFlowController(), element, displayCond)))
+ {
+ continue;
+ }
+ }
+ catch (DataSourceException e)
+ {
+ // ignore silently ..
+ }
+ }
+
+ final FormatCondition[] conditions = element.getFormatConditions();
+ for (int j = 0; j < conditions.length; j++)
+ {
+ final FormatCondition formCond = conditions[j];
+ if (formCond.isEnabled())
+ {
+ try
+ {
+ final Object o = LayoutControllerUtil.evaluateExpression(getFlowController(), element, formCond.getFormula());
+ if (Boolean.TRUE.equals(o))
+ {
+ return formCond.getStyleName();
+ }
+ }
+ catch (DataSourceException e)
+ {
+ // ignore silently ..
+ }
+ }
+ }
+ }
+ }
+
+ if (child instanceof Section)
+ {
+ final String childFormatCondition =
+ getDisplayStyleName((Section) child, defaultStyle);
+ if (!ObjectUtilities.equal(childFormatCondition, defaultStyle))
+ {
+ return childFormatCondition;
+ }
+ }
+ }
+ return defaultStyle;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/VariablesCollection.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/VariablesCollection.java
new file mode 100644
index 000000000000..a0ca9d8c98b6
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/VariablesCollection.java
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.pentaho.model.FormattedTextElement;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * A variables collection is used to collect all FormattedTextElement objects
+ * of a repeated header or footer. Later, for each of these elements a variable
+ * setter is inserted into a hidden (in fact just very small) paragraph. These
+ * variables can later be read using the 'variable-get' construct.
+ *
+ * From the idea, this is equal to the 'strings' declaration of CSS3, although
+ * this code is explicit instead of declarative.
+ *
+ * @author Thomas Morgner
+ * @since 22.03.2007
+ */
+public class VariablesCollection
+{
+
+ private VariablesCollection parent;
+ private String namePrefix;
+ private List variables;
+
+ public VariablesCollection(final String namePrefix)
+ {
+ this(namePrefix, null);
+ }
+
+ public VariablesCollection(final String namePrefix, final VariablesCollection parent)
+ {
+ if (namePrefix == null)
+ {
+ throw new NullPointerException("NamePrefix cannot be null");
+ }
+
+ this.namePrefix = namePrefix;
+ this.parent = parent;
+ this.variables = new ArrayList();
+ }
+
+ public VariablesCollection getParent()
+ {
+ return parent;
+ }
+
+ public String getNamePrefix()
+ {
+ return namePrefix;
+ }
+
+ public String addVariable(final FormattedTextElement element)
+ {
+ variables.add(element);
+ final int size = variables.size();
+ return namePrefix + size;
+ }
+
+ public FormattedTextElement[] getVariables()
+ {
+ return (FormattedTextElement[]) variables.toArray(new FormattedTextElement[variables.size()]);
+ }
+
+ public int getVariablesCount()
+ {
+ return variables.size();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/VariablesDeclarationLayoutController.java b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/VariablesDeclarationLayoutController.java
new file mode 100644
index 000000000000..ba54e200f652
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/layoutprocessor/VariablesDeclarationLayoutController.java
@@ -0,0 +1,191 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.layoutprocessor;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.FormattedTextElement;
+
+import java.text.SimpleDateFormat;
+
+import java.util.Date;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.expressions.FormulaExpression;
+import org.jfree.report.flow.FlowController;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.layoutprocessor.AbstractLayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutController;
+import org.jfree.report.flow.layoutprocessor.LayoutControllerUtil;
+import org.jfree.report.structure.Element;
+
+/**
+ * Writes a full variables-declaration section.
+ *
+ * @author Thomas Morgner
+ * @since 20.03.2007
+ */
+public class VariablesDeclarationLayoutController
+ extends AbstractLayoutController
+{
+
+ private boolean processed;
+
+ public VariablesDeclarationLayoutController()
+ {
+ }
+
+ private OfficeRepeatingStructureLayoutController getRepeatingParent()
+ {
+ LayoutController parent = getParent();
+ while (parent != null)
+ {
+ if (parent instanceof OfficeRepeatingStructureLayoutController)
+ {
+ return (OfficeRepeatingStructureLayoutController) parent;
+ }
+ parent = parent.getParent();
+ }
+ return null;
+ }
+
+ /**
+ * Advances the processing position.
+ *
+ * @param target the report target that receives generated events.
+ * @return the new layout controller instance representing the new state.
+ *
+ * @throws org.jfree.report.DataSourceException
+ * if there was a problem reading data from the datasource.
+ * @throws org.jfree.report.ReportProcessingException
+ * if there was a general problem during the report processing.
+ * @throws org.jfree.report.ReportDataFactoryException
+ * if a query failed.
+ */
+ public LayoutController advance(final ReportTarget target)
+ throws DataSourceException, ReportDataFactoryException,
+ ReportProcessingException
+ {
+ if (processed)
+ {
+ throw new IllegalStateException("Already processed.");
+ }
+
+ final VariablesDeclarationLayoutController vlc =
+ (VariablesDeclarationLayoutController) clone();
+ vlc.processed = true;
+
+ final OfficeRepeatingStructureLayoutController orslc = getRepeatingParent();
+ if (orslc == null)
+ {
+ // There is no repeating parent. What the heck are we doing here ..
+ return vlc;
+ }
+
+ final VariablesCollection collection = orslc.getVariablesCollection();
+ if (collection.getVariablesCount() == 0)
+ {
+ // no processing necessary, as the header or footer contain no variables at all ..
+ return vlc;
+ }
+
+
+ final Element node = (Element) getNode();
+ final AttributeMap vdSection = node.getAttributeMap();
+ target.startElement(vdSection);
+
+ final FormattedTextElement[] variables = collection.getVariables();
+ for (int i = 0; i < variables.length; i++)
+ {
+ final FormattedTextElement variable = variables[i];
+ final String varName = collection.getNamePrefix() + (i + 1);
+ final AttributeMap map = generateVariableSetSection(variable);
+ map.setAttribute(OfficeNamespaces.TEXT_NS, "name", varName);
+ target.startElement(map);
+ target.endElement(map);
+
+ }
+ target.endElement(vdSection);
+ return vlc;
+ }
+
+ private AttributeMap generateVariableSetSection(final FormattedTextElement variable)
+ throws DataSourceException
+ {
+ final AttributeMap variableSection = new AttributeMap();
+ variableSection.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, Element.NAMESPACE_ATTRIBUTE, OfficeNamespaces.TEXT_NS);
+ variableSection.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, Element.TYPE_ATTRIBUTE, "variable-set");
+ variableSection.setAttribute(OfficeNamespaces.TEXT_NS, "display", "none");
+
+ final FormulaExpression valueExpression = variable.getValueExpression();
+ final Object value = LayoutControllerUtil.evaluateExpression(getFlowController(), variable, valueExpression);
+ String formula = FormatValueUtility.applyValueForVariable(value, variableSection);
+ if (formula == null)
+ {
+ formula = "" + value;
+ }
+ if (value instanceof java.sql.Date)
+ {
+ final Date date = (Date) value;
+ final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy;MM;dd");
+ formula = "Date(" + dateFormat.format(date) + ")";
+ }
+ variableSection.setAttribute(OfficeNamespaces.TEXT_NS, "formula", "ooow:" + formula);
+
+ return variableSection;
+ }
+
+ /**
+ * Checks, whether the layout controller would be advanceable. If this method
+ * returns true, it is generally safe to call the 'advance()' method.
+ *
+ * @return true, if the layout controller is advanceable, false otherwise.
+ */
+ public boolean isAdvanceable()
+ {
+ return !processed;
+ }
+
+ /**
+ * Joins with a delegated process flow. This is generally called from a child
+ * flow and should *not* (I mean it!) be called from outside. If you do,
+ * you'll suffer.
+ *
+ * @param flowController the flow controller of the parent.
+ * @return the joined layout controller that incorperates all changes from the
+ * delegate.
+ */
+ public LayoutController join(final FlowController flowController)
+ throws DataSourceException, ReportDataFactoryException,
+ ReportProcessingException
+ {
+ throw new UnsupportedOperationException("Join is not supported in this layout controller");
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/loader/InputRepositoryLoader.java b/reportbuilder/java/com/sun/star/report/pentaho/loader/InputRepositoryLoader.java
new file mode 100644
index 000000000000..87750f09afec
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/loader/InputRepositoryLoader.java
@@ -0,0 +1,189 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.loader;
+
+import com.sun.star.report.InputRepository;
+
+import java.net.URL;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.pentaho.reporting.libraries.resourceloader.ResourceData;
+import org.pentaho.reporting.libraries.resourceloader.ResourceException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceKey;
+import org.pentaho.reporting.libraries.resourceloader.ResourceException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceKeyCreationException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceLoader;
+import org.pentaho.reporting.libraries.resourceloader.ResourceLoadingException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+import org.pentaho.reporting.libraries.resourceloader.loader.LoaderUtils;
+
+
+public class InputRepositoryLoader implements ResourceLoader
+{
+
+ private final InputRepository inputRepository;
+ private ResourceManager resourceManager;
+
+ public InputRepositoryLoader(final InputRepository inputRepository)
+ {
+ if (inputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ this.inputRepository = inputRepository;
+ }
+
+ /**
+ * Checks, whether this resource loader implementation was responsible for
+ * creating this key.
+ *
+ * @param key
+ * @return
+ */
+ public boolean isSupportedKey(final ResourceKey key)
+ {
+ return InputRepositoryLoader.class.getName().equals(key.getSchema());
+ }
+
+ /**
+ * Creates a new resource key from the given object and the factory keys.
+ *
+ * @param value
+ * @param factoryKeys
+ * @return the created key or null, if the format was not recognized.
+ * @throws org.jfree.resourceloader.ResourceKeyCreationException
+ * if creating the key failed.
+ */
+ public ResourceKey createKey(final Object value,
+ final Map factoryKeys)
+ throws ResourceKeyCreationException
+ {
+ if (value instanceof String)
+ {
+ final String strVal = (String) value;
+ if (strVal.startsWith("sun:oo://"))
+ {
+ return new ResourceKey(InputRepositoryLoader.class.getName(),
+ new InputResourceKey(inputRepository.getId(), strVal), factoryKeys);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Derives a new resource key from the given key. If neither a path nor new
+ * factory-keys are given, the parent key is returned.
+ *
+ * @param parent the parent
+ * @param path the derived path (can be null).
+ * @param factoryKeys the optional factory keys (can be null).
+ * @return the derived key.
+ * @throws org.jfree.resourceloader.ResourceKeyCreationException
+ * if the key cannot be derived for any reason.
+ */
+ public ResourceKey deriveKey(final ResourceKey parent,
+ final String path,
+ final Map factoryKeys)
+ throws ResourceKeyCreationException
+ {
+ if (!isSupportedKey(parent))
+ {
+ throw new ResourceKeyCreationException("Assertation: Unsupported parent key type");
+ }
+
+ final InputResourceKey parentKey = (InputResourceKey) parent.getIdentifier();
+ final String resource;
+ if (path.startsWith("sun:oo://"))
+ {
+ resource = path;
+ }
+ else if (path.charAt(0) == '/')
+ {
+ resource = "sun:oo:/" + path;
+ }
+ else
+ {
+ resource = LoaderUtils.mergePaths(parentKey.getPath(), path);
+ }
+ final Map map;
+ if (factoryKeys != null)
+ {
+ map = new HashMap();
+ map.putAll(parent.getFactoryParameters());
+ map.putAll(factoryKeys);
+ }
+ else
+ {
+ map = parent.getFactoryParameters();
+ }
+ return new ResourceKey(parent.getSchema(),
+ new InputResourceKey(parentKey.getInputRepositoryId(), resource), map);
+ }
+
+ public URL toURL(final ResourceKey key)
+ {
+ return null;
+ }
+
+ public ResourceData load(final ResourceKey key)
+ throws ResourceLoadingException
+ {
+ if (!isSupportedKey(key))
+ {
+ throw new ResourceLoadingException("None of my keys.");
+ }
+
+ return new InputRepositoryResourceData(key, inputRepository);
+ }
+
+ public void setResourceManager(final ResourceManager manager)
+ {
+ this.resourceManager = manager;
+ }
+
+ public ResourceManager getResourceManager()
+ {
+ return resourceManager;
+ }
+
+ public boolean isSupportedDeserializer(String string)
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public String serialize(ResourceKey rk, ResourceKey rk1) throws ResourceException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public ResourceKey deserialize(ResourceKey rk, String string) throws ResourceKeyCreationException
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/loader/InputRepositoryResourceData.java b/reportbuilder/java/com/sun/star/report/pentaho/loader/InputRepositoryResourceData.java
new file mode 100644
index 000000000000..4341c386113e
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/loader/InputRepositoryResourceData.java
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.loader;
+
+import com.sun.star.report.InputRepository;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.pentaho.reporting.libraries.resourceloader.ResourceKey;
+import org.pentaho.reporting.libraries.resourceloader.ResourceLoadingException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+import org.pentaho.reporting.libraries.resourceloader.loader.AbstractResourceData;
+
+
+public class InputRepositoryResourceData extends AbstractResourceData
+{
+
+ private final InputRepository inputRepository;
+ private final ResourceKey key;
+ private final String resourceIdentifer;
+
+ public InputRepositoryResourceData(final ResourceKey key,
+ final InputRepository repository)
+ {
+ this.key = key;
+ this.inputRepository = repository;
+ final InputResourceKey rkey = (InputResourceKey) key.getIdentifier();
+ final String identifier = rkey.getPath();
+ this.resourceIdentifer = identifier.substring("sun:oo://".length());
+ }
+
+ public Object getAttribute(final String key)
+ {
+ // we dont support attributes here ..
+ return null;
+ }
+
+ public ResourceKey getKey()
+ {
+ return key;
+ }
+
+ public InputStream getResourceAsStream(final ResourceManager caller)
+ throws ResourceLoadingException
+ {
+ try
+ {
+ return inputRepository.createInputStream(resourceIdentifer);
+ }
+ catch (IOException e)
+ {
+ throw new ResourceLoadingException("Failed to create input stream for " + resourceIdentifer, e);
+ }
+ }
+
+ public long getVersion(final ResourceManager caller)
+ {
+ return inputRepository.getVersion(resourceIdentifer);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/loader/InputResourceKey.java b/reportbuilder/java/com/sun/star/report/pentaho/loader/InputResourceKey.java
new file mode 100644
index 000000000000..b9491fc3dec6
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/loader/InputResourceKey.java
@@ -0,0 +1,63 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.loader;
+
+import java.io.Serializable;
+
+/**
+ * Creation-Date: Feb 22, 2007, 8:51:42 PM
+ *
+ * @author Thomas Morgner
+ */
+public class InputResourceKey implements Serializable
+{
+
+ private static final long serialVersionUID = 2819901838705793075L;
+ private final Object inputRepositoryId;
+ private final String path;
+
+ public InputResourceKey(final Object inputRepositoryId, final String path)
+ {
+ this.inputRepositoryId = inputRepositoryId;
+ this.path = path;
+ }
+
+ public Object getInputRepositoryId()
+ {
+ return inputRepositoryId;
+ }
+
+ public String getPath()
+ {
+ return path;
+ }
+
+ public String toString()
+ {
+ return "InputResourceKey{" + "inputRepositoryId=" + inputRepositoryId + ", path='" + path + '\'' + '}';
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/makefile.mk b/reportbuilder/java/com/sun/star/report/pentaho/makefile.mk
new file mode 100644
index 000000000000..1f1aeb59b213
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/makefile.mk
@@ -0,0 +1,147 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ = ..$/..$/..$/..$/..$/..
+PRJNAME = reportbuilder
+TARGET=sun-report-builder
+PACKAGE = com$/sun$/star$/report$/pentaho
+# we have circular dependencies
+nodep=true
+# --- Settings -----------------------------------------------------
+.INCLUDE: settings.mk
+
+#----- compile .java files -----------------------------------------
+JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar
+.IF "$(SYSTEM_JFREEREPORT)" == "YES"
+EXTRAJARFILES += $(FLUTE_JAR) $(LIBBASE_JAR) $(LIBXML_JAR) $(JFREEREPORT_JAR) $(LIBLOADER_JAR) $(SAC_JAR) $(LIBLAYOUT_JAR) $(LIBSERIALIZER_JAR) $(LIBFONTS_JAR) $(LIBFORMULA_JAR) $(LIBREPOSITORY_JAR)
+.ELSE
+.INCLUDE : $(SOLARBINDIR)/jfreereport_version.mk
+JARFILES += \
+ flute-$(FLUTE_VERSION).jar \
+ libserializer-$(LIBSERIALIZER_VERSION).jar \
+ libbase-$(LIBBASE_VERSION).jar \
+ libfonts-$(LIBFONTS_VERSION).jar \
+ libformula-$(LIBFORMULA_VERSION).jar \
+ liblayout-$(LIBLAYOUT_VERSION).jar \
+ libloader-$(LIBLOADER_VERSION).jar \
+ librepository-$(LIBREPOSITORY_VERSION).jar \
+ libxml-$(LIBXML_VERSION).jar \
+ flow-engine-$(FLOW_ENGINE_VERSION).jar \
+ sac.jar
+.ENDIF
+
+.IF "$(SYSTEM_APACHE_COMMONS)" == "YES"
+EXTRAJARFILES += $(COMMONS_LOGGING_JAR)
+.ELSE
+JARFILES += commons-logging-1.1.1.jar
+.ENDIF
+
+.IF "$(SYSTEM_JFREEREPORT)" == "YES" || "$(SYSTEM_APACHE_COMMONS)" == "YES"
+COMP=fix_system_libs
+.ENDIF
+
+JAVAFILES := $(shell @$(FIND) . -name "*.java")
+# JAVACLASSFILES = $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:s/.java/.class/))
+
+#----- copy .properties and .css files -----------------------------------------
+# external find gives / for 4nt too...
+# PROPERTYFILES := $(subst,/,$/ $(subst,./,$(CLASSDIR)$/$(PACKAGE)$/ $(shell @$(FIND) . -name "*.properties")))
+PROPERTYFILES := $(CLASSDIR)$/$(PACKAGE)$/configuration.properties \
+ $(CLASSDIR)$/$(PACKAGE)$/module.properties \
+ $(CLASSDIR)$/$(PACKAGE)$/parser$/selectors.properties
+
+# CSSFILES := $(subst,./,$(CLASSDIR)$/$(PACKAGE)$/ $(shell @$(FIND) . -name "*.css"))
+CSSFILES := $(CLASSDIR)$/$(PACKAGE)$/oasis-datastyle.css\
+ $(CLASSDIR)$/$(PACKAGE)$/oasis-draw.css\
+ $(CLASSDIR)$/$(PACKAGE)$/oasis-form.css\
+ $(CLASSDIR)$/$(PACKAGE)$/oasis-style.css\
+ $(CLASSDIR)$/$(PACKAGE)$/oasis-table.css\
+ $(CLASSDIR)$/$(PACKAGE)$/oasis-text.css\
+ $(CLASSDIR)$/$(PACKAGE)$/smil.css\
+ $(CLASSDIR)$/$(PACKAGE)$/star-office.css\
+ $(CLASSDIR)$/$(PACKAGE)$/star-report.css\
+ $(CLASSDIR)$/$(PACKAGE)$/star-rpt.css\
+ $(CLASSDIR)$/$(PACKAGE)$/svg.css\
+ $(CLASSDIR)$/$(PACKAGE)$/xsl-fo.css
+
+XSDFILES := $(CLASSDIR)$/$(PACKAGE)$/parser$/rpt-schema-v1.0-os.xsd \
+ $(CLASSDIR)$/$(PACKAGE)$/styles$/stylemapper.xsd
+
+XMLFILES := $(CLASSDIR)$/$(PACKAGE)$/styles$/stylemapper.xml
+
+TXTFILES := $(CLASSDIR)$/$(PACKAGE)$/parser$/style-mapping.txt
+
+
+#----- make a jar from compiled files ------------------------------
+
+JARCLASSDIRS = .
+JARTARGET = $(TARGET).jar
+JARCOMPRESS = TRUE
+CUSTOMMANIFESTFILE = Manifest.mf
+
+
+# --- Targets ------------------------------------------------------
+.INCLUDE : target.mk
+
+.IF "$(JARTARGETN)"!=""
+$(JARTARGETN) : $(COMP) $(PROPERTYFILES) $(CSSFILES) $(XSDFILES) $(TXTFILES) $(XMLFILES)
+.ENDIF # "$(JARTARGETN)"!=""
+
+fix_system_libs: $(JARMANIFEST)
+ @echo "Fix Java Class-Path entry for libraries from system."
+.IF ("$(SYSTEM_JFREEREPORT)" != "YES" && "$(SYSTEM_APACHE_COMMONS)" == "YES")
+ @$(SED) -r -e "s#commons-logging-1.1.1.jar#file://$(COMMONS_LOGGING_JAR)#" \
+ -i $<
+.ENDIF
+.IF ("$(SYSTEM_JFREEREPORT)" == "YES" && "$(SYSTEM_APACHE_COMMONS)" == "YES")
+ @$(SED) '/flute/,/sac/d' -i ../../../../../../$(INPATH)/class/sun-report-builder/META-INF/MANIFEST.MF
+ @$(SED) -r -e "s#^Class-Path.*#\0\n file://$(LIBBASE_JAR)\n file://$(SAC_JAR)\n file://$(LIBXML_JAR)\n\
+ file://$(FLUTE_JAR)\n file://$(JFREEREPORT_JAR)\n file://$(LIBLAYOUT_JAR)\n file://$(LIBLOADER_JAR)\n file://$(LIBFORMULA_JAR)\n\
+ file://$(LIBREPOSITORY_JAR)\n file://$(LIBFONTS_JAR)\n file://$(LIBSERIALIZER_JAR)\n file://$(COMMONS_LOGGING_JAR)#" \
+ -i $<
+.ENDIF
+
+$(CLASSDIR)$/$(PACKAGE)$/%.properties : %.properties
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(CLASSDIR)$/$(PACKAGE)$/%.css : %.css
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(CLASSDIR)$/$(PACKAGE)$/%.xsd : %.xsd
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(CLASSDIR)$/$(PACKAGE)$/%.xml : %.xml
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(CLASSDIR)$/$(PACKAGE)$/%.txt : %.txt
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/DataStyle.java b/reportbuilder/java/com/sun/star/report/pentaho/model/DataStyle.java
new file mode 100644
index 000000000000..8e2f62c81a32
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/DataStyle.java
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.structure.Section;
+
+/**
+ * Represents an automatic or manual data style definition.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class DataStyle extends Section
+{
+
+ public DataStyle()
+ {
+ }
+
+ public String getStyleName()
+ {
+ return (String) getAttribute(OfficeNamespaces.STYLE_NS, "name");
+ }
+
+ public void setStyleName(final String name)
+ {
+ setAttribute(OfficeNamespaces.STYLE_NS, "name", name);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/FixedTextElement.java b/reportbuilder/java/com/sun/star/report/pentaho/model/FixedTextElement.java
new file mode 100644
index 000000000000..124fc5e13827
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/FixedTextElement.java
@@ -0,0 +1,52 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import org.jfree.report.structure.Section;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class FixedTextElement extends ReportElement
+{
+
+ private final Section content;
+
+ public FixedTextElement()
+ {
+ content = new Section();
+ content.setVirtual(true);
+ }
+
+ public Section getContent()
+ {
+ return content;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/FontFaceDeclsSection.java b/reportbuilder/java/com/sun/star/report/pentaho/model/FontFaceDeclsSection.java
new file mode 100644
index 000000000000..0f1a9330e82d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/FontFaceDeclsSection.java
@@ -0,0 +1,74 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jfree.report.structure.Element;
+
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class FontFaceDeclsSection extends Element
+{
+
+ private final Map fontFaces;
+
+ public FontFaceDeclsSection()
+ {
+ fontFaces = new HashMap();
+ setType("font-face-decls");
+ setNamespace(OfficeNamespaces.OFFICE_NS);
+ }
+
+ public void addFontFace(final FontFaceElement style)
+ {
+ fontFaces.put(style.getStyleName(), style);
+ }
+
+ public FontFaceElement getFontFace(final String name)
+ {
+ return (FontFaceElement) fontFaces.get(name);
+ }
+
+ public FontFaceElement[] getAllFontFaces()
+ {
+ return (FontFaceElement[]) fontFaces.values().toArray(new FontFaceElement[fontFaces.size()]);
+ }
+
+ public boolean containsFont(final String fontName)
+ {
+ return fontFaces.containsKey(fontName);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/FontFaceElement.java b/reportbuilder/java/com/sun/star/report/pentaho/model/FontFaceElement.java
new file mode 100644
index 000000000000..cbd29672a305
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/FontFaceElement.java
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.structure.Section;
+
+/**
+ * Represents an automatic or manual data style definition.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class FontFaceElement extends Section
+{
+
+ public FontFaceElement()
+ {
+ }
+
+ public String getStyleName()
+ {
+ return (String) getAttribute(OfficeNamespaces.STYLE_NS, "name");
+ }
+
+ public void setStyleName(final String name)
+ {
+ setAttribute(OfficeNamespaces.STYLE_NS, "name", name);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/FormatCondition.java b/reportbuilder/java/com/sun/star/report/pentaho/model/FormatCondition.java
new file mode 100644
index 000000000000..471c383466a9
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/FormatCondition.java
@@ -0,0 +1,67 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import org.jfree.report.expressions.FormulaExpression;
+
+/**
+ * The format condition defines, what style-format is applied to an element.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class FormatCondition
+{
+
+ private final FormulaExpression formula;
+ private final String styleName;
+ private final boolean enabled;
+
+ public FormatCondition(final FormulaExpression formula,
+ final String styleName,
+ final boolean enabled)
+ {
+ this.formula = formula;
+ this.styleName = styleName;
+ this.enabled = enabled;
+ }
+
+ public FormulaExpression getFormula()
+ {
+ return formula;
+ }
+
+ public String getStyleName()
+ {
+ return styleName;
+ }
+
+ public boolean isEnabled()
+ {
+ return enabled;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/FormattedTextElement.java b/reportbuilder/java/com/sun/star/report/pentaho/model/FormattedTextElement.java
new file mode 100644
index 000000000000..182f6a998681
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/FormattedTextElement.java
@@ -0,0 +1,58 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import org.jfree.report.expressions.FormulaExpression;
+
+/**
+ * A formatted text element takes a formula, evaluates it and formats the
+ * given element using some arbitary style. (As this is totally undocumented,
+ * we leave this out for now. Either we'll insert a field there or we call
+ * an UNO-component to do the formatting.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class FormattedTextElement extends ReportElement
+{
+
+ private FormulaExpression valueExpression;
+
+ public FormattedTextElement()
+ {
+ }
+
+ public FormulaExpression getValueExpression()
+ {
+ return valueExpression;
+ }
+
+ public void setValueExpression(final FormulaExpression valueExpression)
+ {
+ this.valueExpression = valueExpression;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/ImageElement.java b/reportbuilder/java/com/sun/star/report/pentaho/model/ImageElement.java
new file mode 100644
index 000000000000..176500134191
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/ImageElement.java
@@ -0,0 +1,87 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.expressions.FormulaExpression;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class ImageElement extends ReportElement
+{
+
+ private FormulaExpression formula;
+
+ public ImageElement()
+ {
+ }
+
+ public FormulaExpression getFormula()
+ {
+ return formula;
+ }
+
+ public void setFormula(final FormulaExpression formula)
+ {
+ this.formula = formula;
+ }
+
+ public String getScaleMode()
+ {
+ String val = (String) getAttribute(OfficeNamespaces.OOREPORT_NS, OfficeToken.SCALE);
+ if (OfficeToken.TRUE.equals(val))
+ {
+ val = OfficeToken.ANISOTROPIC;
+ }
+ else if (OfficeToken.FALSE.equals(val) || val == null)
+ {
+ val = OfficeToken.NONE;
+ }
+ return val;
+ }
+
+ public boolean isPreserveIRI()
+ {
+ return OfficeToken.TRUE.equals(getAttribute(OfficeNamespaces.OOREPORT_NS, OfficeToken.PRESERVE_IRI));
+ }
+
+ public void setPreserveIRI(final boolean preserveIRI)
+ {
+ setAttribute(OfficeNamespaces.OOREPORT_NS, OfficeToken.PRESERVE_IRI, String.valueOf(preserveIRI));
+ }
+
+ public String getImageData()
+ {
+ return (String) getAttribute(OfficeNamespaces.FORM_NS, OfficeToken.IMAGE_DATA);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/ObjectOleElement.java b/reportbuilder/java/com/sun/star/report/pentaho/model/ObjectOleElement.java
new file mode 100644
index 000000000000..84f41523c79a
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/ObjectOleElement.java
@@ -0,0 +1,88 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class ObjectOleElement extends ReportElement
+{
+
+ private String url;
+ private final List masterfields;
+ private final List detailfields;
+ private String classid;
+
+ public String getClassid()
+ {
+ return classid;
+ }
+
+ public List getDetailfields()
+ {
+ return detailfields;
+ }
+
+ public List getMasterfields()
+ {
+ return masterfields;
+ }
+
+ public ObjectOleElement()
+ {
+ masterfields = new ArrayList();
+ detailfields = new ArrayList();
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public void setClassId(final String classid)
+ {
+ this.classid = classid;
+ }
+
+ public void setUrl(final String _url)
+ {
+ url = _url;
+ }
+
+ public void addMasterDetailFields(final String master, final String detail)
+ {
+ if (master != null)
+ {
+ masterfields.add(master);
+ detailfields.add(detail == null ? master : detail);
+ }
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeDetailSection.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeDetailSection.java
new file mode 100644
index 000000000000..14614b2548e0
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeDetailSection.java
@@ -0,0 +1,43 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import org.jfree.report.structure.DetailSection;
+
+/**
+ * A Marker-Class.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class OfficeDetailSection extends DetailSection
+{
+
+ public OfficeDetailSection()
+ {
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeDocument.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeDocument.java
new file mode 100644
index 000000000000..f17c1d0d65c0
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeDocument.java
@@ -0,0 +1,73 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.JobProperties;
+
+import org.jfree.report.JFreeReport;
+
+/**
+ * An office document represents the root of the report processing. In
+ * OpenOffice reports, this is the only child of the report object.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class OfficeDocument extends JFreeReport
+{
+
+ private OfficeStylesCollection stylesCollection;
+ private JobProperties jobProperties;
+
+ public JobProperties getJobProperties()
+ {
+ return jobProperties;
+ }
+
+ public void setJobProperties(final JobProperties jobProperties)
+ {
+ this.jobProperties = jobProperties;
+ }
+
+ public OfficeDocument()
+ {
+ }
+
+ public OfficeStylesCollection getStylesCollection()
+ {
+ return stylesCollection;
+ }
+
+ public void setStylesCollection(final OfficeStylesCollection stylesCollection)
+ {
+ if (stylesCollection == null)
+ {
+ throw new NullPointerException();
+ }
+ this.stylesCollection = stylesCollection;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroup.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroup.java
new file mode 100644
index 000000000000..92e6964ea622
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroup.java
@@ -0,0 +1,94 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.expressions.Expression;
+import org.jfree.report.structure.Section;
+
+/**
+ * An office group is a virtual section that contains the group header, footer
+ * and either a detail section or another group.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class OfficeGroup extends Section
+{
+
+ public OfficeGroup()
+ {
+ }
+
+ public boolean isStartNewColumn()
+ {
+ return OfficeToken.TRUE.equals(getAttribute(OfficeNamespaces.OOREPORT_NS, "start-new-column"));
+ }
+
+ public boolean isResetPageNumber()
+ {
+ return OfficeToken.TRUE.equals(getAttribute(OfficeNamespaces.OOREPORT_NS, "reset-page-number"));
+ }
+
+ public OfficeGroupSection getHeader()
+ {
+ final OfficeGroupInstanceSection instanceSection =
+ (OfficeGroupInstanceSection) findFirstChild(JFreeReportInfo.REPORT_NAMESPACE, "group-instance");
+ if (instanceSection == null)
+ {
+ return null;
+ }
+ return (OfficeGroupSection) instanceSection.findFirstChild(OfficeNamespaces.OOREPORT_NS, "group-header");
+
+ }
+
+ public OfficeGroupSection getFooter()
+ {
+ final OfficeGroupInstanceSection instanceSection =
+ (OfficeGroupInstanceSection) findFirstChild(JFreeReportInfo.REPORT_NAMESPACE, "group-instance");
+ if (instanceSection == null)
+ {
+ return null;
+ }
+ return (OfficeGroupSection) instanceSection.findFirstChild(OfficeNamespaces.OOREPORT_NS, "group-footer");
+
+ }
+
+ public Expression getGroupingExpression()
+ {
+ final OfficeGroupInstanceSection instanceSection =
+ (OfficeGroupInstanceSection) findFirstChild(JFreeReportInfo.REPORT_NAMESPACE, "group-instance");
+ if (instanceSection == null)
+ {
+ return null;
+ }
+ return instanceSection.getGroupingExpression();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroupInstanceSection.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroupInstanceSection.java
new file mode 100644
index 000000000000..478cc1b73f6d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroupInstanceSection.java
@@ -0,0 +1,16 @@
+package com.sun.star.report.pentaho.model;
+
+import org.jfree.report.structure.Group;
+
+/**
+ * Creation-Date: 25.07.2007, 14:41:54
+ *
+ * @author Thomas Morgner
+ */
+public class OfficeGroupInstanceSection extends Group
+{
+
+ public OfficeGroupInstanceSection()
+ {
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroupSection.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroupSection.java
new file mode 100644
index 000000000000..262d95782572
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeGroupSection.java
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.structure.Section;
+
+/**
+ * A group header or footer. If such a section is marked as sticky, it will be
+ * repeated on each new page.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class OfficeGroupSection extends Section
+{
+
+ public OfficeGroupSection()
+ {
+ }
+
+ public boolean isRepeatSection()
+ {
+ final Object repeatFlag =
+ getAttribute(OfficeNamespaces.OOREPORT_NS, "repeat-section");
+ return OfficeToken.TRUE.equals(repeatFlag);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeMasterPage.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeMasterPage.java
new file mode 100644
index 000000000000..68d508a4b2bd
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeMasterPage.java
@@ -0,0 +1,66 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.structure.Section;
+
+/**
+ * A master page. A master page can contain header and footer and is linked
+ * to a page-layout.
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class OfficeMasterPage extends Section
+{
+
+ public OfficeMasterPage()
+ {
+ }
+
+ public String getStyleName()
+ {
+ return (String) getAttribute(OfficeNamespaces.STYLE_NS, "name");
+ }
+
+ public void setStyleName(final String name)
+ {
+ setAttribute(OfficeNamespaces.STYLE_NS, "name", name);
+ }
+
+ public String getPageLayout()
+ {
+ return (String) getAttribute(OfficeNamespaces.STYLE_NS, "page-layout-name");
+ }
+
+ public void setPageLayout(final String name)
+ {
+ setAttribute(OfficeNamespaces.STYLE_NS, "page-layout-name", name);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeMasterStyles.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeMasterStyles.java
new file mode 100644
index 000000000000..562f369b9087
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeMasterStyles.java
@@ -0,0 +1,83 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+
+/**
+ * The master-styles section can have either a master-page, handout-master
+ * or draw-layer-set. (The latter ones are ignored for the reporting purposes,
+ * they are PowerPoint related.)
+ *
+ * There is no documentation how the system selects a master-page if there is
+ * no master-page assigned to the paragraph. However, it seems as if the
+ * master-page called 'Standard' is used as initial default.
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class OfficeMasterStyles extends Element
+{
+
+ private final Map masterPages;
+ private final Section otherNodes;
+
+ public OfficeMasterStyles()
+ {
+ masterPages = new HashMap();
+ otherNodes = new Section();
+ }
+
+ public void addMasterPage(final OfficeMasterPage masterPage)
+ {
+ if (masterPage == null)
+ {
+ throw new NullPointerException();
+ }
+ this.masterPages.put(masterPage.getStyleName(), masterPage);
+ }
+
+ public OfficeMasterPage getMasterPage(final String name)
+ {
+ return (OfficeMasterPage) masterPages.get(name);
+ }
+
+ public OfficeMasterPage[] getAllMasterPages()
+ {
+ return (OfficeMasterPage[]) masterPages.values().toArray(new OfficeMasterPage[masterPages.size()]);
+ }
+
+ public Section getOtherNodes()
+ {
+ return otherNodes;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeReport.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeReport.java
new file mode 100644
index 000000000000..cf873b9452d5
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeReport.java
@@ -0,0 +1,148 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Node;
+
+/**
+ * A office report is an ordered section. It contains several root-level bands
+ * which need to be processed in a given order.
+ *
+ * A report can have named expression attached. These expressions will be
+ * computed at the global scope and will be available for all child elements.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class OfficeReport extends Element
+{
+
+ private Node pageHeader;
+ private Node pageFooter;
+ private Node columnHeader;
+ private Node columnFooter;
+ private Node reportHeader;
+ private Node reportFooter;
+ private Node bodySection;
+ private Node preBodySection;
+ private Node postBodySection;
+
+ public Node getPostBodySection()
+ {
+ return postBodySection;
+ }
+
+ public void setPostBodySection(final Node postBodySection)
+ {
+ this.postBodySection = postBodySection;
+ }
+
+ public Node getPreBodySection()
+ {
+ return preBodySection;
+ }
+
+ public void setPreBodySection(final Node preBodySection)
+ {
+ this.preBodySection = preBodySection;
+ }
+
+ public OfficeReport()
+ {
+ }
+
+ public Node getPageHeader()
+ {
+ return pageHeader;
+ }
+
+ public void setPageHeader(final Node pageHeader)
+ {
+ this.pageHeader = pageHeader;
+ }
+
+ public Node getPageFooter()
+ {
+ return pageFooter;
+ }
+
+ public void setPageFooter(final Node pageFooter)
+ {
+ this.pageFooter = pageFooter;
+ }
+
+ public Node getColumnHeader()
+ {
+ return columnHeader;
+ }
+
+ public void setColumnHeader(final Node columnHeader)
+ {
+ this.columnHeader = columnHeader;
+ }
+
+ public Node getColumnFooter()
+ {
+ return columnFooter;
+ }
+
+ public void setColumnFooter(final Node columnFooter)
+ {
+ this.columnFooter = columnFooter;
+ }
+
+ public Node getReportHeader()
+ {
+ return reportHeader;
+ }
+
+ public void setReportHeader(final Node reportHeader)
+ {
+ this.reportHeader = reportHeader;
+ }
+
+ public Node getReportFooter()
+ {
+ return reportFooter;
+ }
+
+ public void setReportFooter(final Node reportFooter)
+ {
+ this.reportFooter = reportFooter;
+ }
+
+ public Node getBodySection()
+ {
+ return bodySection;
+ }
+
+ public void setBodySection(final Node bodySection)
+ {
+ this.bodySection = bodySection;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStyle.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStyle.java
new file mode 100644
index 000000000000..3968df62dcd9
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStyle.java
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+/**
+ * Represents an automatic or manual style definition.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class OfficeStyle extends Section
+{
+
+ public OfficeStyle()
+ {
+ setNamespace(OfficeNamespaces.STYLE_NS);
+ setType("style");
+ }
+
+ public String getStyleName()
+ {
+ return (String) getAttribute(OfficeNamespaces.STYLE_NS, "name");
+ }
+
+ public void setStyleName(final String name)
+ {
+ setAttribute(OfficeNamespaces.STYLE_NS, "name", name);
+ }
+
+ /**
+ * A parent style name must be a common style (it cannot be an automatic
+ * style) and has to exist. If no parent style is given, an implementation
+ * specific default style is used.
+ *
+ * @return
+ */
+ public String getStyleParent()
+ {
+ return (String) getAttribute(OfficeNamespaces.STYLE_NS, "parent-style-name");
+ }
+
+ public void setStyleParent(final String parentName)
+ {
+ setAttribute(OfficeNamespaces.STYLE_NS, "parent-style-name", parentName);
+ }
+
+ public String getStyleFamily()
+ {
+ return (String) getAttribute(OfficeNamespaces.STYLE_NS, "family");
+ }
+
+ public void setStyleFamily(final String family)
+ {
+ setAttribute(OfficeNamespaces.STYLE_NS, "family", family);
+ }
+
+// public String getMasterPageName()
+// {
+// return (String) getAttribute(OfficeNamespaces.STYLE_NS, "master-page-name");
+// }
+ public Element getParagraphProperties()
+ {
+ return findFirstChild(OfficeNamespaces.STYLE_NS, "paragraph-properties");
+ }
+
+ public Element getTextProperties()
+ {
+ return findFirstChild(OfficeNamespaces.STYLE_NS, "text-properties");
+ }
+
+ public Element getTableRowProperties()
+ {
+ return findFirstChild(OfficeNamespaces.STYLE_NS, "table-row-properties");
+ }
+
+ public Element getTableProperties()
+ {
+ return findFirstChild(OfficeNamespaces.STYLE_NS, "table-properties");
+ }
+
+ public Element getTableColumnProperties()
+ {
+ return findFirstChild(OfficeNamespaces.STYLE_NS, "table-column-properties");
+ }
+
+ public Element getSectionProperties()
+ {
+ return findFirstChild(OfficeNamespaces.STYLE_NS, "section-properties");
+ }
+
+ public Element getTableCellProperties()
+ {
+ return findFirstChild(OfficeNamespaces.STYLE_NS, "table-cell-properties");
+ }
+
+ public Element getGraphicProperties()
+ {
+ return findFirstChild(OfficeNamespaces.STYLE_NS, OfficeToken.GRAPHIC_PROPERTIES);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStyles.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStyles.java
new file mode 100644
index 000000000000..0af1062505c7
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStyles.java
@@ -0,0 +1,198 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import java.io.Serializable;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.jfree.report.structure.Element;
+
+
+/**
+ * Holds one style type, either an automatic, common or master style. This is a
+ * marker container that defines the nature of the styles contained within this
+ * container. (Yeah, it is awkward, but that's how the document model describes
+ * it.)
+ *
+ * The style family can be one of paragraph, text, section, table, table-column,
+ * table-row, table-cell, table-page, chart, default, drawing-page, graphic,
+ * presentation, control and ruby.
+ *
+ * @author Thomas Morgner
+ * @since 07.03.2007
+ */
+public class OfficeStyles extends Element
+{
+
+ public static class StyleKey implements Serializable
+ {
+
+ private static final long serialVersionUID = 4931878927362887477L;
+ private final String family;
+ private final String name;
+
+ public StyleKey(final String family, final String name)
+ {
+ if (family == null)
+ {
+ throw new NullPointerException();
+ }
+ this.family = family;
+ this.name = name;
+ }
+
+ public String getFamily()
+ {
+ return family;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public boolean equals(final Object obj)
+ {
+ if (this != obj)
+ {
+ if (obj == null || getClass() != obj.getClass())
+ {
+ return false;
+ }
+
+ final StyleKey styleKey = (StyleKey) obj;
+
+ if (!family.equals(styleKey.family) || (name != null ? !name.equals(styleKey.name) : styleKey.name != null))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public int hashCode()
+ {
+ int result = family.hashCode();
+ result = 31 * result + (name != null ? name.hashCode() : 0);
+ return result;
+ }
+ }
+ private final Map pageStyles;
+ private final Map dataStyles;
+ private final Map styles;
+ private final List otherChilds;
+
+ public OfficeStyles()
+ {
+ this.styles = new HashMap();
+ this.dataStyles = new HashMap();
+ this.pageStyles = new HashMap();
+ this.otherChilds = new ArrayList();
+ }
+
+ public OfficeStyle getStyle(final String family, final String name)
+ {
+ return (OfficeStyle) styles.get(new StyleKey(family, name));
+ }
+
+ public void addStyle(final OfficeStyle style)
+ {
+ if (style == null)
+ {
+ throw new NullPointerException();
+ }
+ final String styleFamily = style.getStyleFamily();
+ if (styleFamily == null)
+ {
+ throw new NullPointerException();
+ }
+ if (style.getStyleName() == null)
+ {
+ throw new NullPointerException();
+ }
+ styles.put(new StyleKey(styleFamily, style.getStyleName()), style);
+ }
+
+ public void addPageStyle(final PageLayout style)
+ {
+ pageStyles.put(style.getStyleName(), style);
+ }
+
+ public PageLayout getPageStyle(final String name)
+ {
+ return (PageLayout) pageStyles.get(name);
+ }
+
+ public void addDataStyle(final DataStyle style)
+ {
+ dataStyles.put(style.getStyleName(), style);
+ }
+
+ public DataStyle getDataStyle(final String name)
+ {
+ return (DataStyle) dataStyles.get(name);
+ }
+
+ public void addOtherNode(final Element node)
+ {
+ otherChilds.add(node);
+ }
+
+ public DataStyle[] getAllDataStyles()
+ {
+ return (DataStyle[]) dataStyles.values().toArray(new DataStyle[dataStyles.size()]);
+ }
+
+ public PageLayout[] getAllPageStyles()
+ {
+ return (PageLayout[]) pageStyles.values().toArray(new PageLayout[pageStyles.size()]);
+ }
+
+ public OfficeStyle[] getAllStyles()
+ {
+ return (OfficeStyle[]) styles.values().toArray(new OfficeStyle[styles.size()]);
+ }
+
+ public Element[] getOtherStyles()
+ {
+ return (Element[]) otherChilds.toArray(new Element[otherChilds.size()]);
+ }
+
+ public boolean containsStyle(final String family, final String name)
+ {
+ return styles.containsKey(new StyleKey(family, name));
+ }
+
+ public boolean containsDataStyle(final String styleName)
+ {
+ return dataStyles.containsKey(styleName);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStylesCollection.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStylesCollection.java
new file mode 100644
index 000000000000..b2fdf3e43f57
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeStylesCollection.java
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.structure.Element;
+
+/**
+ * Holds all style-definitions and provides some simplified lookup methods to
+ * grab them by their type and name.
+ * <p/>
+ * For now, we are only interested in 'style:style' nodes. Each of these nodes
+ * has a style-name and a style-family. Each style declaration can have a parent
+ * style, from which properties are inherited.
+ * <p/>
+ * Style names are unique within the family, no matter whether the style is an
+ * automatic style, an common style or a master style.
+ * <p/>
+ * The contents of this element are the union of the 'styles.xml' file (if it
+ * exists), the font-declarations and auto-styles of the document-content.xml
+ * and the styles declared in the main document.
+ *
+ * @author Thomas Morgner
+ * @since 06.03.2007
+ */
+public class OfficeStylesCollection extends Element
+{
+ // Font-face declarations are copied as is. We simply merge them by adding
+ // them all in one set. This may result in duplicate entries, but as the
+ // fileformat does not forbid that, it therefore must be ok.
+
+ private final FontFaceDeclsSection fontFaceDecls;
+ private final OfficeStyles automaticStyles;
+ private final OfficeStyles commonStyles;
+ private final OfficeMasterStyles masterStyles;
+
+ public OfficeStylesCollection()
+ {
+ fontFaceDecls = new FontFaceDeclsSection();
+
+ automaticStyles = new OfficeStyles();
+ automaticStyles.setType("automatic-styles");
+ automaticStyles.setNamespace(OfficeNamespaces.OFFICE_NS);
+
+ commonStyles = new OfficeStyles();
+ commonStyles.setType("styles");
+ commonStyles.setNamespace(OfficeNamespaces.OFFICE_NS);
+
+ masterStyles = new OfficeMasterStyles();
+ masterStyles.setType("master-styles");
+ masterStyles.setNamespace(OfficeNamespaces.OFFICE_NS);
+ }
+
+ public OfficeStyle getStyle(final String family, final String name)
+ {
+ final OfficeStyle commonStyle = commonStyles.getStyle(family, name);
+ if (commonStyle != null)
+ {
+ return commonStyle;
+ }
+ final OfficeStyle autoStyle = automaticStyles.getStyle(family, name);
+ if (autoStyle != null)
+ {
+ return autoStyle;
+ }
+
+ // And later: Autogenerate one of the default styles.
+ // However, at this moment, we dont have a clue about the default styles
+ // at all. Maybe we should add them to make this implementation more robust
+ // against invalid documents.
+ return null;
+ }
+
+ public boolean containsStyle(final String family, final String name)
+ {
+ return (getStyle(family, name) != null);
+ }
+
+ public OfficeStyles getAutomaticStyles()
+ {
+ return automaticStyles;
+ }
+
+ public OfficeStyles getCommonStyles()
+ {
+ return commonStyles;
+ }
+
+ public OfficeMasterStyles getMasterStyles()
+ {
+ return masterStyles;
+ }
+
+ public FontFaceDeclsSection getFontFaceDecls()
+ {
+ return fontFaceDecls;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeTableSection.java b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeTableSection.java
new file mode 100644
index 000000000000..9df11ff0156c
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/OfficeTableSection.java
@@ -0,0 +1,42 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import org.jfree.report.structure.Section;
+
+/**
+ * Creation-Date: 24.04.2007, 15:55:17
+ *
+ * @author Thomas Morgner
+ */
+public class OfficeTableSection extends Section
+{
+
+ public OfficeTableSection()
+ {
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/PageLayout.java b/reportbuilder/java/com/sun/star/report/pentaho/model/PageLayout.java
new file mode 100644
index 000000000000..47030c3fe638
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/PageLayout.java
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.structure.Section;
+
+/**
+ * A page layout describes the physical properties of a page. It is equal to
+ * an @page rule in CSS.
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class PageLayout extends Section
+{
+
+ public PageLayout()
+ {
+ setNamespace(OfficeNamespaces.STYLE_NS);
+ setType("page-layout");
+ }
+
+ public String getStyleName()
+ {
+ return (String) getAttribute(OfficeNamespaces.STYLE_NS, "name");
+ }
+
+ public void setStyleName(final String name)
+ {
+ setAttribute(OfficeNamespaces.STYLE_NS, "name", name);
+ }
+
+ public Section getHeaderStyle()
+ {
+ return (Section) findFirstChild(OfficeNamespaces.STYLE_NS, "header-style");
+ }
+
+ public Section getFooterStyle()
+ {
+ return (Section) findFirstChild(OfficeNamespaces.STYLE_NS, "footer-style");
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/PageSection.java b/reportbuilder/java/com/sun/star/report/pentaho/model/PageSection.java
new file mode 100644
index 000000000000..ae4aa55a3d9d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/PageSection.java
@@ -0,0 +1,60 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.structure.Section;
+
+/**
+ * This represents either a page header or page footer.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class PageSection extends Section
+{
+
+ private static final String NOT_WITH_REPORT_HEADER_NOR_FOOTER = "not-with-report-header-nor-footer";
+
+ public PageSection()
+ {
+ }
+
+ public static boolean isPrintWithReportHeader(final AttributeMap attrs)
+ {
+ final String pagePrintOption = (String) attrs.getAttribute(OfficeNamespaces.OOREPORT_NS, "page-print-option");
+ return !("not-with-report-header".equals(pagePrintOption) || NOT_WITH_REPORT_HEADER_NOR_FOOTER.equals(pagePrintOption));
+ }
+
+ public static boolean isPrintWithReportFooter(final AttributeMap attrs)
+ {
+ final String pagePrintOption = (String) attrs.getAttribute(OfficeNamespaces.OOREPORT_NS, "page-print-option");
+ return !("not-with-report-footer".equals(pagePrintOption) || NOT_WITH_REPORT_HEADER_NOR_FOOTER.equals(pagePrintOption));
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/RawText.java b/reportbuilder/java/com/sun/star/report/pentaho/model/RawText.java
new file mode 100644
index 000000000000..47b275a0a5b7
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/RawText.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import org.jfree.report.structure.StaticText;
+
+/**
+ * A marker implementation. If encountered by the OfficeRawTarget, this text
+ * will be written without being normalized. Such text represents a page
+ * header or footer.
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class RawText extends StaticText
+{
+
+ public RawText(final String text)
+ {
+ super(text);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/ReportElement.java b/reportbuilder/java/com/sun/star/report/pentaho/model/ReportElement.java
new file mode 100644
index 000000000000..5821351d2d9e
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/ReportElement.java
@@ -0,0 +1,110 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+
+
+/**
+ * A report element is the base class for all content generating elements in a
+ * report.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public abstract class ReportElement extends Element
+{
+
+ private final List formatConditions;
+
+ protected ReportElement()
+ {
+ formatConditions = new ArrayList();
+ }
+
+ /**
+ * Checks the current group and prints this element only if the current row is
+ * the first row for that particular group.
+ *
+ * @return true, if the element should only be printed in the first row of the
+ * current group, false otherwise.
+ */
+ public boolean isPrintWhenGroupChanges()
+ {
+ return OfficeToken.TRUE.equals(getAttribute(OfficeNamespaces.OOREPORT_NS, "print-when-group-changes"));
+ }
+
+ public void setPrintWhenGroupChanges(final boolean printWhenGroupChanges)
+ {
+ setAttribute(OfficeNamespaces.OOREPORT_NS, "print-when-group-changes",
+ String.valueOf(printWhenGroupChanges));
+ }
+
+ /**
+ * Checks, whether the printed value has been changed since the last run. The
+ * element will only be printed, if there was at least one change.
+ *
+ * @return true, if repeated values should be printed, false if repeated
+ * values should be surpressed.
+ */
+ public boolean isPrintRepeatedValues()
+ {
+ return OfficeToken.TRUE.equals(getAttribute(OfficeNamespaces.OOREPORT_NS, "print-repeated-values"));
+ }
+
+ public void setPrintRepeatedValues(final boolean printRepeatedValues)
+ {
+ setAttribute(OfficeNamespaces.OOREPORT_NS, "print-repeated-values",
+ String.valueOf(printRepeatedValues));
+ }
+
+ public void addFormatCondition(final FormatCondition formatCondition)
+ {
+ if (formatCondition == null)
+ {
+ throw new NullPointerException();
+ }
+
+ this.formatConditions.add(formatCondition);
+ }
+
+ public FormatCondition[] getFormatConditions()
+ {
+ return (FormatCondition[]) this.formatConditions.toArray(new FormatCondition[this.formatConditions.size()]);
+ }
+
+ public int getFormatConditionCount()
+ {
+ return formatConditions.size();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/TableCellElement.java b/reportbuilder/java/com/sun/star/report/pentaho/model/TableCellElement.java
new file mode 100644
index 000000000000..bbe2c7dadf78
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/TableCellElement.java
@@ -0,0 +1,43 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import org.jfree.report.structure.Section;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 05.03.2007
+ */
+public class TableCellElement extends Section
+{
+
+ public TableCellElement()
+ {
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/model/VariablesDeclarationSection.java b/reportbuilder/java/com/sun/star/report/pentaho/model/VariablesDeclarationSection.java
new file mode 100644
index 000000000000..d50935f837fb
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/model/VariablesDeclarationSection.java
@@ -0,0 +1,52 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.model;
+
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.structure.Section;
+
+/**
+ * A paragraph that contains variables-declarations. This paragraph will be
+ * printed in the first cell of the first table (if there's one).
+ *
+ * The VariablesDeclarationSection is an auto-generated structure element that
+ * has no model-representation. The section itself is empty and simply acts
+ * as flag for the output-processor. The output processor itself is responsible
+ * to maintain the variables.
+ *
+ * @author Thomas Morgner
+ * @since 19.03.2007
+ */
+public class VariablesDeclarationSection extends Section
+{
+
+ public VariablesDeclarationSection()
+ {
+ setNamespace(JFreeReportInfo.REPORT_NAMESPACE);
+ setType("variables-section");
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/module.properties b/reportbuilder/java/com/sun/star/report/pentaho/module.properties
new file mode 100644
index 000000000000..b3c538048426
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/module.properties
@@ -0,0 +1,45 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+
+module-info:
+ name: factory-report-sun
+ producer: The JFreeReport project - www.jfree.org/jfreereport
+ description: XML-Parsers for OpenOffice.org report definitions. These definitions\
+ are basicly similiar to the old JFreeReport format, with some limited absolute\
+ positioning capabilities.
+ version.major: 0
+ version.minor: 90
+ version.patchlevel: 0
+
+depends:
+ module: org.jfree.report.modules.factories.report.base.ReportFactoryBaseModule
+ version.major: 0
+ version.minor: 92
+ version.patchlevel: 0
+
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/oasis-datastyle.css b/reportbuilder/java/com/sun/star/report/pentaho/oasis-datastyle.css
new file mode 100644
index 000000000000..427537005d39
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/oasis-datastyle.css
@@ -0,0 +1,5 @@
+@namespace url("urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0");
+
+/**
+ * All default styles for data-styles elements.
+*/
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/oasis-draw.css b/reportbuilder/java/com/sun/star/report/pentaho/oasis-draw.css
new file mode 100644
index 000000000000..341f44ec550e
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/oasis-draw.css
@@ -0,0 +1,5 @@
+@namespace url("urn:oasis:names:tc:opendocument:xmlns:drawing:1.0");
+
+/**
+ * All default styles for draw elements.
+*/
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/oasis-form.css b/reportbuilder/java/com/sun/star/report/pentaho/oasis-form.css
new file mode 100644
index 000000000000..7c8c43008435
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/oasis-form.css
@@ -0,0 +1,5 @@
+@namespace url("urn:oasis:names:tc:opendocument:xmlns:form:1.0");
+
+/**
+ * All default styles for form elements.
+*/
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/oasis-style.css b/reportbuilder/java/com/sun/star/report/pentaho/oasis-style.css
new file mode 100644
index 000000000000..47777f4fb7e4
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/oasis-style.css
@@ -0,0 +1,10 @@
+@namespace url("urn:oasis:names:tc:opendocument:xmlns:style:1.0");
+
+/**
+ * All default styles for style elements. (They should not be visible anyway,
+ * but better be complete than be sorry afterwards.)
+*/
+
+raw-styles {
+ display:none;
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/oasis-table.css b/reportbuilder/java/com/sun/star/report/pentaho/oasis-table.css
new file mode 100644
index 000000000000..91bedcd97573
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/oasis-table.css
@@ -0,0 +1,37 @@
+@namespace url("urn:oasis:names:tc:opendocument:xmlns:table:1.0");
+
+table {
+ display: table;
+}
+
+table-columns {
+ display: table-column-group;
+}
+
+table-column {
+ display: table-column;
+}
+
+table-row {
+ display: table-row;
+}
+
+table-cell {
+ display: table-cell;
+}
+
+table-cell[number-cols-spanned],
+table-cell[number-cols-spanned],
+table-columns[number-cols-spanned],
+table-column[number-cols-spanned] {
+ -x-liblayout-colspan: attr(number-cols-spanned);
+}
+
+table-cell[number-rows-spanned],
+table-cell[number-rows-spanned] {
+ -x-liblayout-rowspan: attr(number-rows-spanned);
+}
+
+
+
+
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/oasis-text.css b/reportbuilder/java/com/sun/star/report/pentaho/oasis-text.css
new file mode 100644
index 000000000000..ccc000e9c82d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/oasis-text.css
@@ -0,0 +1,9 @@
+@namespace url("urn:oasis:names:tc:opendocument:xmlns:text:1.0");
+
+/**
+ * All default styles for form elements.
+*/
+
+p {
+ display: block;
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/ImageProducer.java b/reportbuilder/java/com/sun/star/report/pentaho/output/ImageProducer.java
new file mode 100644
index 000000000000..b3d6485d9195
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/ImageProducer.java
@@ -0,0 +1,498 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output;
+
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.ReportExecutionException;
+import com.sun.star.report.pentaho.DefaultNameGenerator;
+
+import java.awt.Dimension;
+import java.awt.Image;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import java.sql.Blob;
+import java.sql.SQLException;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.jfree.layouting.input.style.values.CSSNumericType;
+import org.jfree.layouting.input.style.values.CSSNumericValue;
+
+import org.pentaho.reporting.libraries.base.util.IOUtils;
+import org.pentaho.reporting.libraries.base.util.PngEncoder;
+import org.pentaho.reporting.libraries.base.util.WaitingImageObserver;
+
+
+/**
+ * This class manages the images embedded in a report.
+ *
+ * @author Thomas Morgner
+ * @since 31.03.2007
+ */
+public class ImageProducer
+{
+
+ private static final Log LOGGER = LogFactory.getLog(ImageProducer.class);
+
+ public static class OfficeImage
+ {
+
+ private final CSSNumericValue width;
+ private final CSSNumericValue height;
+ private final String embeddableLink;
+
+ public OfficeImage(final String embeddableLink, final CSSNumericValue width, final CSSNumericValue height)
+ {
+ this.embeddableLink = embeddableLink;
+ this.width = width;
+ this.height = height;
+ }
+
+ public CSSNumericValue getWidth()
+ {
+ return width;
+ }
+
+ public CSSNumericValue getHeight()
+ {
+ return height;
+ }
+
+ public String getEmbeddableLink()
+ {
+ return embeddableLink;
+ }
+ }
+
+ private static class ByteDataImageKey
+ {
+
+ private final byte[] keyData;
+ private Integer hashCode;
+
+ protected ByteDataImageKey(final byte[] keyData)
+ {
+ if (keyData == null)
+ {
+ throw new NullPointerException();
+ }
+ this.keyData = keyData;
+ }
+
+ public boolean equals(final Object o)
+ {
+ if (this != o)
+ {
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ final ByteDataImageKey key = (ByteDataImageKey) o;
+ if (!Arrays.equals(keyData, key.keyData))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public int hashCode()
+ {
+ if (hashCode != null)
+ {
+ return hashCode;
+ }
+
+ final int length = Math.min(keyData.length, 512);
+ int hashValue = 0;
+ for (int i = 0; i < length; i++)
+ {
+ final byte b = keyData[i];
+ hashValue = b + hashValue * 23;
+ }
+ this.hashCode = hashValue;
+ return hashValue;
+ }
+ }
+ private final Map imageCache;
+ private final InputRepository inputRepository;
+ private final OutputRepository outputRepository;
+ private final ImageService imageService;
+
+ public ImageProducer(final InputRepository inputRepository,
+ final OutputRepository outputRepository,
+ final ImageService imageService)
+ {
+ if (inputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ if (outputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ if (imageService == null)
+ {
+ throw new NullPointerException();
+ }
+
+ this.inputRepository = inputRepository;
+ this.outputRepository = outputRepository;
+ this.imageService = imageService;
+ this.imageCache = new HashMap();
+ }
+
+ /**
+ * Image-Data can be one of the following types: String, URL, URI, byte-array, blob.
+ *
+ * @param imageData
+ * @param preserveIRI
+ * @return
+ */
+ public OfficeImage produceImage(final Object imageData,
+ final boolean preserveIRI)
+ {
+
+ LOGGER.debug("Want to produce image " + imageData);
+ if (imageData instanceof String)
+ {
+ return produceFromString((String) imageData, preserveIRI);
+ }
+
+ if (imageData instanceof URL)
+ {
+ return produceFromURL((URL) imageData, preserveIRI);
+ }
+
+ if (imageData instanceof Blob)
+ {
+ return produceFromBlob((Blob) imageData);
+ }
+
+ if (imageData instanceof byte[])
+ {
+ return produceFromByteArray((byte[]) imageData);
+ }
+
+ if (imageData instanceof Image)
+ {
+ return produceFromImage((Image) imageData);
+ }
+ // not usable ..
+ return null;
+ }
+
+ private OfficeImage produceFromImage(final Image image)
+ {
+ // quick caching ... use a weak list ...
+ final WaitingImageObserver obs = new WaitingImageObserver(image);
+ obs.waitImageLoaded();
+
+ final PngEncoder encoder = new PngEncoder(image, PngEncoder.ENCODE_ALPHA, PngEncoder.FILTER_NONE, 5);
+ final byte[] data = encoder.pngEncode();
+ return produceFromByteArray(data);
+ }
+
+ private OfficeImage produceFromBlob(final Blob blob)
+ {
+ try
+ {
+ final InputStream inputStream = blob.getBinaryStream();
+ final int length = (int) blob.length();
+
+ final ByteArrayOutputStream bout = new ByteArrayOutputStream(length);
+ try
+ {
+ IOUtils.getInstance().copyStreams(inputStream, bout);
+ } finally
+ {
+ inputStream.close();
+ }
+ return produceFromByteArray(bout.toByteArray());
+ }
+ catch (IOException e)
+ {
+ LOGGER.warn("Failed to produce image from Blob", e);
+ }
+ catch (SQLException e)
+ {
+ LOGGER.warn("Failed to produce image from Blob", e);
+ }
+ return null;
+ }
+
+ private OfficeImage produceFromByteArray(final byte[] data)
+ {
+ final ByteDataImageKey imageKey = new ByteDataImageKey(data);
+ final OfficeImage o = (OfficeImage) imageCache.get(imageKey);
+ if (o != null)
+ {
+ return o;
+ }
+
+ try
+ {
+ final String mimeType = imageService.getMimeType(data);
+ final Dimension dims = imageService.getImageSize(data);
+
+ // copy the image into the local output-storage
+ // todo: Implement data-fingerprinting so that we can detect the mime-type
+ final OutputRepository storage = outputRepository.openOutputRepository("Pictures", null);
+ final DefaultNameGenerator nameGenerator = new DefaultNameGenerator(storage);
+ final String name = nameGenerator.generateName("image", mimeType);
+ final OutputStream outputStream = storage.createOutputStream(name, mimeType);
+ final ByteArrayInputStream bin = new ByteArrayInputStream(data);
+
+ try
+ {
+ IOUtils.getInstance().copyStreams(bin, outputStream);
+ } finally
+ {
+ outputStream.close();
+ storage.closeOutputRepository();
+ }
+
+ final CSSNumericValue widthVal = CSSNumericValue.createValue(CSSNumericType.MM, dims.getWidth() / 100.0);
+ final CSSNumericValue heightVal = CSSNumericValue.createValue(CSSNumericType.MM, dims.getHeight() / 100.0);
+ final OfficeImage officeImage = new OfficeImage("Pictures/" + name, widthVal, heightVal);
+ imageCache.put(imageKey, officeImage);
+ return officeImage;
+ }
+ catch (IOException e)
+ {
+ LOGGER.warn("Failed to load image from local input-repository", e);
+ }
+ catch (ReportExecutionException e)
+ {
+ LOGGER.warn("Failed to create image from local input-repository", e);
+ }
+ return null;
+ }
+
+ private OfficeImage produceFromString(final String source,
+ final boolean preserveIRI)
+ {
+
+ try
+ {
+ final URL url = new URL(source);
+ return produceFromURL(url, preserveIRI);
+ }
+ catch (MalformedURLException e)
+ {
+ // ignore .. but we had to try this ..
+ }
+
+ final OfficeImage o = (OfficeImage) imageCache.get(source);
+ if (o != null)
+ {
+ return o;
+ }
+
+ // Next, check whether this is a local path.
+ if (inputRepository.isReadable(source))
+ {
+ // cool, the file exists. Let's try to read it.
+ try
+ {
+ final ByteArrayOutputStream bout = new ByteArrayOutputStream(8192);
+ final InputStream inputStream = inputRepository.createInputStream(source);
+ try
+ {
+ IOUtils.getInstance().copyStreams(inputStream, bout);
+ } finally
+ {
+ inputStream.close();
+ }
+ final byte[] data = bout.toByteArray();
+ final Dimension dims = imageService.getImageSize(data);
+ final String mimeType = imageService.getMimeType(data);
+
+ final CSSNumericValue widthVal = CSSNumericValue.createValue(CSSNumericType.MM, dims.getWidth() / 100.0);
+ final CSSNumericValue heightVal = CSSNumericValue.createValue(CSSNumericType.MM, dims.getHeight() / 100.0);
+
+ final String filename = copyToOutputRepository(mimeType, data);
+ final OfficeImage officeImage = new OfficeImage(filename, widthVal, heightVal);
+ imageCache.put(source, officeImage);
+ return officeImage;
+ }
+ catch (IOException e)
+ {
+ LOGGER.warn("Failed to load image from local input-repository", e);
+ }
+ catch (ReportExecutionException e)
+ {
+ LOGGER.warn("Failed to create image from local input-repository", e);
+ }
+ }
+ else
+ {
+ try
+ {
+ URI rootURI = new URI(inputRepository.getRootURL());
+ final URI uri = rootURI.resolve(source);
+ return produceFromURL(uri.toURL(), preserveIRI);
+ }
+ catch (URISyntaxException ex)
+ {
+ }
+ catch (MalformedURLException e)
+ {
+ // ignore .. but we had to try this ..
+ }
+ }
+
+ // Return the image as broken image instead ..
+ final OfficeImage officeImage = new OfficeImage(source, null, null);
+ imageCache.put(source, officeImage);
+ return officeImage;
+ }
+
+ private OfficeImage produceFromURL(final URL url,
+ final boolean preserveIRI)
+ {
+ final String urlString = url.toString();
+ URI uri = null;
+ try
+ {
+ uri = new URI(urlString);
+ }
+ catch (URISyntaxException ex)
+ {
+ Logger.getLogger(ImageProducer.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ final OfficeImage o = (OfficeImage) imageCache.get(uri);
+ if (o != null)
+ {
+ return o;
+ }
+
+ try
+ {
+ final ByteArrayOutputStream bout = new ByteArrayOutputStream(8192);
+ final URLConnection urlConnection = url.openConnection();
+ final InputStream inputStream = new BufferedInputStream(urlConnection.getInputStream());
+ try
+ {
+ IOUtils.getInstance().copyStreams(inputStream, bout);
+ } finally
+ {
+ inputStream.close();
+ }
+ final byte[] data = bout.toByteArray();
+
+ final Dimension dims = imageService.getImageSize(data);
+ final String mimeType = imageService.getMimeType(data);
+ final CSSNumericValue widthVal = CSSNumericValue.createValue(CSSNumericType.MM, dims.getWidth() / 100.0);
+ final CSSNumericValue heightVal = CSSNumericValue.createValue(CSSNumericType.MM, dims.getHeight() / 100.0);
+
+ if (preserveIRI)
+ {
+ final OfficeImage retval = new OfficeImage(urlString, widthVal, heightVal);
+ imageCache.put(uri, retval);
+ return retval;
+ }
+
+ final String name = copyToOutputRepository(mimeType, data);
+ final OfficeImage officeImage = new OfficeImage(name, widthVal, heightVal);
+ imageCache.put(uri, officeImage);
+ return officeImage;
+ }
+ catch (IOException e)
+ {
+ LOGGER.warn("Failed to load image from local input-repository" + e);
+ }
+ catch (ReportExecutionException e)
+ {
+ LOGGER.warn("Failed to create image from local input-repository" + e);
+ }
+
+ if (!preserveIRI)
+ {
+ final OfficeImage image = new OfficeImage(urlString, null, null);
+ imageCache.put(uri, image);
+ return image;
+ }
+
+ // OK, everything failed; the image is not - repeat it - not usable.
+ return null;
+ }
+
+ private String copyToOutputRepository(final String urlMimeType, final byte[] data)
+ throws IOException, ReportExecutionException
+ {
+ final String mimeType;
+ if (urlMimeType == null)
+ {
+ mimeType = imageService.getMimeType(data);
+ }
+ else
+ {
+ mimeType = urlMimeType;
+ }
+
+ // copy the image into the local output-storage
+ final OutputRepository storage = outputRepository.openOutputRepository("Pictures", null);
+ final DefaultNameGenerator nameGenerator = new DefaultNameGenerator(storage);
+ final String name = nameGenerator.generateName("image", mimeType);
+ final OutputStream outputStream = storage.createOutputStream(name, mimeType);
+ final ByteArrayInputStream bin = new ByteArrayInputStream(data);
+
+ try
+ {
+ IOUtils.getInstance().copyStreams(bin, outputStream);
+ } finally
+ {
+ outputStream.close();
+ storage.closeOutputRepository();
+ }
+ return "Pictures/" + name;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/OfficeDocumentReportTarget.java b/reportbuilder/java/com/sun/star/report/pentaho/output/OfficeDocumentReportTarget.java
new file mode 100644
index 000000000000..cdc8eae1b73b
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/OfficeDocumentReportTarget.java
@@ -0,0 +1,1730 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output;
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.ReportEngineParameterNames;
+import com.sun.star.report.SDBCReportDataFactory;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.layoutprocessor.ImageElementContext;
+import com.sun.star.report.pentaho.model.OfficeDocument;
+import com.sun.star.report.pentaho.model.OfficeStyle;
+import com.sun.star.report.pentaho.model.OfficeStyles;
+import com.sun.star.report.pentaho.model.OfficeStylesCollection;
+import com.sun.star.report.pentaho.styles.LengthCalculator;
+import com.sun.star.report.pentaho.styles.StyleMapper;
+import com.sun.org.apache.xerces.internal.parsers.DOMParser;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+import java.awt.Image;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.io.InputStream;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.zip.DeflaterOutputStream;
+import java.util.zip.InflaterInputStream;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.jfree.layouting.input.style.parser.CSSValueFactory;
+import org.jfree.layouting.input.style.parser.StyleSheetParserUtil;
+import org.jfree.layouting.input.style.values.CSSNumericType;
+import org.jfree.layouting.input.style.values.CSSNumericValue;
+import org.jfree.layouting.layouter.style.CSSValueResolverUtility;
+import org.jfree.layouting.namespace.NamespaceDefinition;
+import org.jfree.layouting.namespace.Namespaces;
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.layouting.util.LazyAttributeMap;
+import org.jfree.report.DataFlags;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportBoot;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.flow.AbstractReportTarget;
+import org.jfree.report.flow.ReportJob;
+import org.jfree.report.flow.ReportStructureRoot;
+import org.jfree.report.flow.ReportTargetUtil;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+import org.jfree.report.util.AttributeNameGenerator;
+import org.jfree.report.util.IntegerCache;
+import org.jfree.report.util.MemoryByteArrayOutputStream;
+
+import org.pentaho.reporting.libraries.base.util.FastStack;
+import org.pentaho.reporting.libraries.base.util.IOUtils;
+import org.pentaho.reporting.libraries.resourceloader.ResourceException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceKey;
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+import org.pentaho.reporting.libraries.xmlns.common.AttributeList;
+import org.pentaho.reporting.libraries.xmlns.writer.DefaultTagDescription;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriter;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriterSupport;
+
+import org.w3c.css.sac.LexicalUnit;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 08.03.2007
+ */
+public abstract class OfficeDocumentReportTarget extends AbstractReportTarget
+{
+
+ protected static final Log LOGGER = LogFactory.getLog(OfficeDocumentReportTarget.class);
+ public static final String HORIZONTAL_POS = "horizontal-pos";
+ public static final String TAG_DEF_PREFIX = "com.sun.star.report.pentaho.output.";
+ public static final int ROLE_NONE = 0;
+ public static final int ROLE_REPORT_HEADER = 1;
+ public static final int ROLE_REPORT_FOOTER = 2;
+ public static final int ROLE_GROUP_HEADER = 3;
+ public static final int ROLE_GROUP_FOOTER = 4;
+ public static final int ROLE_REPEATING_GROUP_HEADER = 5;
+ public static final int ROLE_REPEATING_GROUP_FOOTER = 6;
+ public static final int ROLE_PAGE_HEADER = 7;
+ public static final int ROLE_PAGE_FOOTER = 8;
+ public static final int ROLE_DETAIL = 9;
+ public static final int ROLE_VARIABLES = 10;
+ public static final int ROLE_TEMPLATE = 11;
+ public static final int ROLE_SPREADSHEET_PAGE_HEADER = 12;
+ public static final int ROLE_SPREADSHEET_PAGE_FOOTER = 13;
+ public static final int STATE_IN_DOCUMENT = 0;
+ public static final int STATE_IN_BODY = 1;
+ public static final int STATE_IN_CONTENT = 2;
+ public static final int STATE_IN_GROUP = 3;
+ public static final int STATE_IN_GROUP_BODY = 4;
+ public static final int STATE_IN_SECTION = 5;
+ public static final int STATE_IN_OTHER = 6;
+ public static final int STATE_IN_GROUP_INSTANCE = 7;
+ public static final String FAILED = "Failed";
+ public static final String VERTICAL_POS = "vertical-pos";
+ private static final String ZERO_CM = "0cm";
+ /** the verison of the ODF specification to which generated documents
+ * shall conform. */
+ public static final String ODF_VERSION = "1.2";
+
+ protected static class BufferState
+ {
+
+ private final XmlWriter xmlWriter;
+ private final MemoryByteArrayOutputStream xmlBuffer;
+ private final OfficeStylesCollection stylesCollection;
+
+ protected BufferState(final XmlWriter xmlWriter,
+ final MemoryByteArrayOutputStream xmlBuffer,
+ final OfficeStylesCollection stylesCollection)
+ {
+ this.stylesCollection = stylesCollection;
+ this.xmlWriter = xmlWriter;
+ this.xmlBuffer = xmlBuffer;
+ }
+
+ public OfficeStylesCollection getStylesCollection()
+ {
+ return stylesCollection;
+ }
+
+ public XmlWriter getXmlWriter()
+ {
+ return xmlWriter;
+ }
+
+ public String getXmlBuffer() throws ReportProcessingException
+ {
+ try
+ {
+ final byte[] zippedData = xmlBuffer.getRaw();
+ final InputStreamReader reader = new InputStreamReader(new InflaterInputStream(new ByteArrayInputStream(zippedData, 0, xmlBuffer.getLength())), "UTF-16");
+ final StringWriter writer = new StringWriter((zippedData.length / 2) + 1);
+ IOUtils.getInstance().copyWriter(reader, writer);
+ return writer.toString();
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException("Failed to copy buffer", e);
+ }
+ }
+
+ public Reader getXmlAsReader() throws ReportProcessingException
+ {
+ try
+ {
+ final byte[] zippedData = xmlBuffer.getRaw();
+ return new InputStreamReader(new InflaterInputStream(new ByteArrayInputStream(zippedData, 0, xmlBuffer.getLength())), "UTF-16");
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException("Failed to copy buffer", e);
+ }
+ }
+ }
+
+ protected static class GroupContext
+ {
+
+ private final GroupContext parent;
+ private int iterationCount;
+ private boolean groupWithRepeatingSection;
+
+ protected GroupContext(final GroupContext parent)
+ {
+ this.parent = parent;
+ }
+
+ public GroupContext getParent()
+ {
+ return parent;
+ }
+
+ public int getIterationCount()
+ {
+ return iterationCount;
+ }
+
+ public void setIterationCount(final int iterationCount)
+ {
+ this.iterationCount = iterationCount;
+ }
+
+ public boolean isGroupWithRepeatingSection()
+ {
+ return groupWithRepeatingSection;
+ }
+
+ public void setGroupWithRepeatingSection(final boolean groupWithRepeatingSection)
+ {
+ this.groupWithRepeatingSection = groupWithRepeatingSection;
+ }
+
+ public String toString()
+ {
+ return "GroupContext{" + "parent=" + parent + ", iterationCount=" + iterationCount + ", groupWithRepeatingSection=" + groupWithRepeatingSection + '}';
+ }
+ }
+ private final FastStack states;
+ private int currentRole;
+ private final FastStack xmlWriters;
+ private XmlWriter rootXmlWriter;
+ /**
+ * This styles-collection contains all styles that were predefined in the report definition file. The common styles
+ * and the master-styles will be written unmodified, the automatic styles will be ignored.
+ */
+ private OfficeStylesCollection predefinedStylesCollection;
+ /**
+ * This styles-collection contains all master-styles that have been generated by the report definition process. It
+ * also contains all automatic styles that have been generated for the page-bands (and the pagebands as well).
+ */
+ private OfficeStylesCollection globalStylesCollection;
+ /**
+ * The content styles collection contains all automatic styles that have been generated for the normal-flow content.
+ */
+ private OfficeStylesCollection contentStylesCollection;
+ private final OutputRepository outputRepository;
+ private final InputRepository inputRepository;
+ private final AttributeNameGenerator tableNameGenerator;
+ private final AttributeNameGenerator frameNameGenerator;
+ private final AttributeNameGenerator autoStyleNameGenerator;
+ private final String target;
+ private static final int INITIAL_BUFFER_SIZE = 40960;
+ private StyleMapper styleMapper;
+ private StyleSheetParserUtil styleSheetParserUtil;
+ private final AttributeNameGenerator imageNames;
+ private final ImageProducer imageProducer;
+ private final OleProducer oleProducer;
+ private GroupContext groupContext;
+ private static final boolean DEBUG_ELEMENTS =
+ JFreeReportBoot.getInstance().getExtendedConfig().getBoolProperty("com.sun.star.report.pentaho.output.DebugElements");
+
+ protected OfficeDocumentReportTarget(final ReportJob reportJob,
+ final ResourceManager resourceManager,
+ final ResourceKey baseResource,
+ final InputRepository inputRepository,
+ final OutputRepository outputRepository,
+ final String target,
+ final ImageService imageService,
+ final DataSourceFactory datasourcefactory)
+ throws ReportProcessingException
+ {
+ super(reportJob, resourceManager, baseResource);
+ if (imageService == null)
+ {
+ throw new NullPointerException("ImageService must not be null");
+ }
+ if (target == null)
+ {
+ throw new NullPointerException("Target-Name must not be null");
+ }
+
+ this.target = target;
+
+ this.tableNameGenerator = new AttributeNameGenerator();
+ this.frameNameGenerator = new AttributeNameGenerator();
+ this.autoStyleNameGenerator = new AttributeNameGenerator();
+ this.outputRepository = outputRepository;
+ this.inputRepository = inputRepository;
+ this.states = new FastStack();
+ this.xmlWriters = new FastStack();
+ this.imageNames = new AttributeNameGenerator();
+
+ this.imageProducer = new ImageProducer(inputRepository, outputRepository, imageService);
+ this.oleProducer = new OleProducer(inputRepository, outputRepository, imageService, datasourcefactory, (Integer) reportJob.getParameters().get(ReportEngineParameterNames.MAXROWS));
+
+ try
+ {
+ final ResourceManager realResourceManager = getResourceManager();
+ styleMapper = StyleMapper.loadInstance(realResourceManager);
+ }
+ catch (ResourceException e)
+ {
+ throw new ReportProcessingException("Failed to load style-mapper", e);
+ }
+ }
+
+ protected abstract String getTargetMimeType();
+
+ protected OutputRepository getOutputRepository()
+ {
+ return outputRepository;
+ }
+
+ protected InputRepository getInputRepository()
+ {
+ return inputRepository;
+ }
+
+ /**
+ * Starts the output of a new office document. This method writes the generic 'office:document-content' tag along with
+ * all known namespace declarations.
+ *
+ * @param report the report object.
+ * @throws DataSourceException if there was an error accessing the datasource
+ * @throws ReportProcessingException if some other error occured.
+ */
+ public void startReport(final ReportStructureRoot report)
+ throws DataSourceException, ReportProcessingException
+ {
+ imageNames.reset();
+ this.groupContext = new GroupContext(null);
+
+ final DefaultTagDescription tagDescription = createTagDescription();
+ try
+ {
+ final OutputStream outputStream = outputRepository.createOutputStream(target, "text/xml");
+ final Writer writer = new OutputStreamWriter(outputStream, "UTF-8");
+
+ this.rootXmlWriter = new XmlWriter(writer, tagDescription);
+ this.rootXmlWriter.setAlwaysAddNamespace(true);
+
+ final AttributeList rootAttributes = new AttributeList();
+ rootAttributes.addNamespaceDeclaration("office", OfficeNamespaces.OFFICE_NS);
+ rootAttributes.addNamespaceDeclaration("style", OfficeNamespaces.STYLE_NS);
+ rootAttributes.addNamespaceDeclaration("text", OfficeNamespaces.TEXT_NS);
+ rootAttributes.addNamespaceDeclaration("table", OfficeNamespaces.TABLE_NS);
+ rootAttributes.addNamespaceDeclaration("draw", OfficeNamespaces.DRAWING_NS);
+ rootAttributes.addNamespaceDeclaration("fo", OfficeNamespaces.FO_NS);
+ rootAttributes.addNamespaceDeclaration("xlink", OfficeNamespaces.XLINK_NS);
+ rootAttributes.addNamespaceDeclaration("dc", OfficeNamespaces.PURL_NS);
+ rootAttributes.addNamespaceDeclaration("meta", OfficeNamespaces.META_NS);
+ rootAttributes.addNamespaceDeclaration("number", OfficeNamespaces.DATASTYLE_NS);
+ rootAttributes.addNamespaceDeclaration("svg", OfficeNamespaces.SVG_NS);
+ rootAttributes.addNamespaceDeclaration("chart", OfficeNamespaces.CHART_NS);
+ rootAttributes.addNamespaceDeclaration("chartooo", OfficeNamespaces.CHARTOOO_NS);
+ rootAttributes.addNamespaceDeclaration("dr3d", OfficeNamespaces.DR3D_NS);
+ rootAttributes.addNamespaceDeclaration("math", OfficeNamespaces.MATHML_NS);
+ rootAttributes.addNamespaceDeclaration("form", OfficeNamespaces.FORM_NS);
+ rootAttributes.addNamespaceDeclaration("script", OfficeNamespaces.SCRIPT_NS);
+ rootAttributes.addNamespaceDeclaration("ooo", OfficeNamespaces.OO2004_NS);
+ rootAttributes.addNamespaceDeclaration("ooow", OfficeNamespaces.OOW2004_NS);
+ rootAttributes.addNamespaceDeclaration("oooc", OfficeNamespaces.OOC2004_NS);
+ rootAttributes.addNamespaceDeclaration("dom", OfficeNamespaces.XML_EVENT_NS);
+ rootAttributes.addNamespaceDeclaration("xforms", OfficeNamespaces.XFORMS_NS);
+ rootAttributes.addNamespaceDeclaration("xsd", OfficeNamespaces.XSD_NS);
+ rootAttributes.addNamespaceDeclaration("xsi", OfficeNamespaces.XSI_NS);
+ rootAttributes.addNamespaceDeclaration("grddl", OfficeNamespaces.GRDDL_NS);
+ rootAttributes.setAttribute(OfficeNamespaces.OFFICE_NS, "version",
+ ODF_VERSION);
+
+ this.rootXmlWriter.writeXmlDeclaration("UTF-8");
+ this.rootXmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, "document-content", rootAttributes, XmlWriterSupport.OPEN);
+
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_DOCUMENT));
+
+ autoStyleNameGenerator.reset();
+ tableNameGenerator.reset();
+ frameNameGenerator.reset();
+
+ final OfficeDocument reportDoc = (OfficeDocument) report;
+ predefinedStylesCollection = reportDoc.getStylesCollection();
+
+ final OfficeStyles commonStyles = predefinedStylesCollection.getCommonStyles();
+ if (!commonStyles.containsStyle(OfficeToken.GRAPHIC, OfficeToken.GRAPHICS))
+ {
+ final OfficeStyle graphicsDefaultStyle = new OfficeStyle();
+ graphicsDefaultStyle.setStyleFamily(OfficeToken.GRAPHIC);
+ graphicsDefaultStyle.setStyleName(OfficeToken.GRAPHICS);
+ final Element graphicProperties = produceFirstChild(graphicsDefaultStyle, OfficeNamespaces.STYLE_NS, OfficeToken.GRAPHIC_PROPERTIES);
+ graphicProperties.setAttribute(OfficeNamespaces.TEXT_NS, "anchor-type", OfficeToken.PARAGRAPH);
+ graphicProperties.setAttribute(OfficeNamespaces.SVG_NS, "x", ZERO_CM);
+ graphicProperties.setAttribute(OfficeNamespaces.SVG_NS, "y", ZERO_CM);
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, "wrap", "dynamic");
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, "number-wrapped-paragraphs", "no-limit");
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, "wrap-contour", OfficeToken.FALSE);
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, VERTICAL_POS, "from-top"); // changed for chart
+
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, "vertical-rel", OfficeToken.PARAGRAPH);
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, HORIZONTAL_POS, "from-left"); // changed for chart
+
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, "horizontal-rel", OfficeToken.PARAGRAPH);
+ commonStyles.addStyle(graphicsDefaultStyle);
+ }
+
+ // Make sure that later generated styles do not overwrite existing styles.
+ fillStyleNameGenerator(predefinedStylesCollection);
+
+ contentStylesCollection = new OfficeStylesCollection();
+ globalStylesCollection = new OfficeStylesCollection();
+
+ startBuffering(contentStylesCollection, true);
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException(FAILED, e);
+ }
+ }
+
+ protected AttributeNameGenerator getAutoStyleNameGenerator()
+ {
+ return autoStyleNameGenerator;
+ }
+
+ private void fillStyleNameGenerator(final OfficeStylesCollection stylesCollection)
+ {
+ final OfficeStyles commonStyles = stylesCollection.getCommonStyles();
+ final OfficeStyle[] allCommonStyles = commonStyles.getAllStyles();
+ for (int i = 0; i < allCommonStyles.length; i++)
+ {
+ final OfficeStyle style = allCommonStyles[i];
+ autoStyleNameGenerator.generateName(style.getStyleName());
+ }
+
+ final OfficeStyles autoStyles = stylesCollection.getAutomaticStyles();
+ final OfficeStyle[] allAutoStyles = autoStyles.getAllStyles();
+ for (int i = 0; i < allAutoStyles.length; i++)
+ {
+ final OfficeStyle style = allAutoStyles[i];
+ autoStyleNameGenerator.generateName(style.getStyleName());
+ }
+ }
+
+ public OfficeStylesCollection getPredefinedStylesCollection()
+ {
+ return predefinedStylesCollection;
+ }
+
+ public OfficeStylesCollection getGlobalStylesCollection()
+ {
+ return globalStylesCollection;
+ }
+
+ public OfficeStylesCollection getContentStylesCollection()
+ {
+ return contentStylesCollection;
+ }
+
+ /**
+ * Returns the XML-Writer tag description. This description defines whether an element can have character data inside.
+ * Such element will disable the indention, as in that case the additional whitespaces might alter the meaning of the
+ * element's contents.
+ *
+ * @return the tag description library.
+ */
+ protected DefaultTagDescription createTagDescription()
+ {
+ final DefaultTagDescription tagDescription = new DefaultTagDescription();
+ tagDescription.configure(JFreeReportBoot.getInstance().getGlobalConfig(),
+ OfficeDocumentReportTarget.TAG_DEF_PREFIX);
+ return tagDescription;
+ }
+
+ /**
+ * Returns the current processing state.
+ *
+ * @return the processing state.
+ */
+ protected int getCurrentState()
+ {
+ if (states.isEmpty())
+ {
+ throw new IllegalStateException();
+ }
+ final Integer o = (Integer) states.peek();
+ return o;
+ }
+
+ /**
+ * Starts the processing of an element and updates the processing state. This will select an apropriate handler method
+ * for the call and will call one of the start* methods.
+ *
+ * @param roAttrs the attribute map for the current element
+ * @throws DataSourceException
+ * @throws ReportProcessingException
+ */
+ public final void startElement(final AttributeMap roAttrs)
+ throws DataSourceException, ReportProcessingException
+ {
+ final AttributeMap attrs = new LazyAttributeMap(roAttrs);
+ // todo
+ if (DEBUG_ELEMENTS)
+ {
+ LOGGER.debug("Starting " + getCurrentState() + '/' + states.size() + ' ' + ReportTargetUtil.getNamespaceFromAttribute(attrs) + " -> " + ReportTargetUtil.getElemenTypeFromAttribute(attrs));
+ }
+ try
+ {
+ switch (getCurrentState())
+ {
+ case OfficeDocumentReportTarget.STATE_IN_DOCUMENT:
+ {
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OFFICE_NS, "body", attrs))
+ {
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_BODY));
+ startBody(attrs);
+ }
+ else
+ {
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_OTHER));
+ if (!isFilteredNamespace(ReportTargetUtil.getNamespaceFromAttribute(attrs)))
+ {
+ startOther(attrs);
+ }
+ }
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_BODY:
+ {
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OFFICE_NS, "report", attrs))
+ {
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_CONTENT));
+ startContent(attrs);
+ }
+ else
+ {
+ throw new IllegalStateException("The 'office:body' element must have exactly one child of type 'report'");
+ }
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_CONTENT:
+ {
+ // Either a ordinary section or a group ..
+ // A group.
+ if (ReportTargetUtil.isElementOfType(JFreeReportInfo.REPORT_NAMESPACE, "report-body", attrs))
+ {
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_GROUP_BODY));
+ startGroupBody(attrs);
+ }
+ else
+ {
+ // Either a template-section, page-header, page-footer, report-header, report-footer
+ // or variables-section
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_SECTION));
+ if (ReportTargetUtil.isElementOfType(JFreeReportInfo.REPORT_NAMESPACE, "template", attrs))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_TEMPLATE;
+ }
+ else if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OOREPORT_NS, "page-header", attrs))
+ {
+ if ("spreadsheet-section".equals(attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "role")))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_SPREADSHEET_PAGE_HEADER;
+ }
+ else
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_PAGE_HEADER;
+ }
+ }
+ else if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OOREPORT_NS, "page-footer", attrs))
+ {
+ if ("spreadsheet-section".equals(attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "role")))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_SPREADSHEET_PAGE_FOOTER;
+ }
+ else
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_PAGE_FOOTER;
+ }
+ }
+ else if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OOREPORT_NS, "report-header", attrs))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_REPORT_HEADER;
+ }
+ else if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OOREPORT_NS, "report-footer", attrs))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_REPORT_FOOTER;
+ }
+ else if (ReportTargetUtil.isElementOfType(JFreeReportInfo.REPORT_NAMESPACE, "variables-section", attrs))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_VARIABLES;
+ }
+ else
+ {
+ throw new IllegalStateException("Expected either 'template', 'report-body', " + "'report-header', 'report-footer', 'variables-section', 'page-header' or 'page-footer'");
+ }
+ startReportSection(attrs, currentRole);
+ }
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_GROUP_BODY:
+ {
+ // We now expect either an other group or a detail band.
+
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OOREPORT_NS, "group", attrs))
+ {
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_GROUP));
+ groupContext = new GroupContext(groupContext);
+ startGroup(attrs);
+ }
+ else
+ {
+ // Either a variables-section, or a detail-band
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_SECTION));
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OOREPORT_NS, "detail", attrs))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_DETAIL;
+ }
+ else if (ReportTargetUtil.isElementOfType(JFreeReportInfo.REPORT_NAMESPACE, "variables-section", attrs))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_VARIABLES;
+ }
+ else
+ {
+ throw new IllegalStateException("Expected either 'group', 'detail' or 'variables-section'");
+ }
+ startReportSection(attrs, currentRole);
+ }
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_GROUP:
+ {
+ // A group can carry a repeating group header/footer or a group-instance section.
+ if (ReportTargetUtil.isElementOfType(JFreeReportInfo.REPORT_NAMESPACE, "group-instance", attrs))
+ {
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_GROUP_INSTANCE));
+ startGroupInstance(attrs);
+ }
+ else
+ {
+ // repeating group header/footer, but *no* variables section
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_SECTION));
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OOREPORT_NS, "group-header", attrs) && OfficeToken.TRUE.equals(attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "repeated-section")))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_HEADER;
+ }
+ else if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OOREPORT_NS, "group-footer", attrs) && OfficeToken.TRUE.equals(attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "repeated-section")))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_FOOTER;
+ }
+ else
+ {
+ throw new IllegalStateException("Expected either 'group-instance', " + "'repeating group-header' or 'repeating group-footer'");
+ }
+ startReportSection(attrs, currentRole);
+ }
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_GROUP_INSTANCE:
+ {
+ if (ReportTargetUtil.isElementOfType(JFreeReportInfo.REPORT_NAMESPACE, "group-body", attrs))
+ {
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_GROUP_BODY));
+ startGroupBody(attrs);
+ }
+ else
+ {
+ // Either a group-header or group-footer or variables-section
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_SECTION));
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OOREPORT_NS, "group-header", attrs))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_GROUP_HEADER;
+ }
+ else if (ReportTargetUtil.isElementOfType(OfficeNamespaces.OOREPORT_NS, "group-footer", attrs))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_GROUP_FOOTER;
+ }
+ else if (ReportTargetUtil.isElementOfType(JFreeReportInfo.REPORT_NAMESPACE, "variables-section", attrs))
+ {
+ currentRole = OfficeDocumentReportTarget.ROLE_VARIABLES;
+ }
+ else
+ {
+ throw new IllegalStateException("Expected either 'group-body', 'group-header', 'group-footer' or 'variables-section'");
+ }
+ startReportSection(attrs, currentRole);
+ }
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_SECTION:
+ {
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_OTHER));
+ startOther(attrs);
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_OTHER:
+ {
+ states.push(IntegerCache.getInteger(OfficeDocumentReportTarget.STATE_IN_OTHER));
+ startOther(attrs);
+ break;
+ }
+ default:
+ throw new IllegalStateException("Failure: " + getCurrentState());
+ }
+ }
+ catch (IOException ioe)
+ {
+ LOGGER.error("ReportProcessing failed", ioe);
+ throw new ReportProcessingException("Failed to write content", ioe);
+ }
+// finally
+// {
+// LOGGER.debug ("Started " + getNamespaceFromAttribute(attrs) + ":" +
+// getElemenTypeFromAttribute(attrs) + " -> " + getCurrentState());
+// }
+ }
+
+ protected GroupContext getGroupContext()
+ {
+ return groupContext;
+ }
+
+ protected void performStyleProcessing(final AttributeMap attrs)
+ throws ReportProcessingException
+ {
+ final OfficeStylesCollection stylesCollection = getStylesCollection();
+ final OfficeStylesCollection predefCollection = getPredefinedStylesCollection();
+ final OfficeStylesCollection globalStylesCollection = getGlobalStylesCollection();
+
+ final String elementNamespace =
+ ReportTargetUtil.getNamespaceFromAttribute(attrs);
+ final String elementName =
+ ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+
+ final String[] namespaces = attrs.getNameSpaces();
+ for (int i = 0; i < namespaces.length; i++)
+ {
+ final String attrNamespace = namespaces[i];
+ if (isFilteredNamespace(attrNamespace))
+ {
+ continue;
+ }
+
+ final Map attributes = attrs.getAttributes(attrNamespace);
+ final Iterator iterator = attributes.entrySet().iterator();
+ while (iterator.hasNext())
+ {
+ final Map.Entry entry = (Map.Entry) iterator.next();
+ final String attrName = (String) entry.getKey();
+ final String attrValue = String.valueOf(entry.getValue());
+
+ final String styleFamily = styleMapper.getStyleFamilyFor(elementNamespace, elementName, attrNamespace, attrName);
+ if (styleFamily == null)
+ {
+ // None of the known style attributes.
+ continue;
+ }
+
+ if (styleMapper.isListOfStyles(elementNamespace, elementName, attrNamespace, attrName))
+ {
+ // ignored for now.
+ LOGGER.warn("List of styles is not yet implemented.");
+ continue;
+ }
+
+ // Copy styles is only called once per style.
+ StyleUtilities.copyStyle(styleFamily, attrValue, stylesCollection, globalStylesCollection, predefCollection);
+ }
+ }
+ }
+
+ protected void startBody(final AttributeMap attrs)
+ throws IOException
+ {
+ getXmlWriter().writeTag(OfficeNamespaces.OFFICE_NS, "body", XmlWriterSupport.OPEN);
+ }
+
+ private final boolean allowBuffering(final int role)
+ {
+ return (role == OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_FOOTER || role == OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_HEADER || role == OfficeDocumentReportTarget.ROLE_TEMPLATE);
+ }
+
+ protected void startReportSection(final AttributeMap attrs, final int role)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ if (allowBuffering(role))
+ {
+ startBuffering(new OfficeStylesCollection(), true);
+ }
+ }
+
+ protected abstract void startContent(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException;
+
+ protected void startGroup(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ final Object repeatingHeaderOrFooter = attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "repeating-header-or-footer");
+ if (OfficeToken.TRUE.equals(repeatingHeaderOrFooter))
+ {
+ getGroupContext().setGroupWithRepeatingSection(true);
+ }
+
+ final Object iterationCount = attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "iteration-count");
+ if (iterationCount instanceof Number)
+ {
+ final Number itNumber = (Number) iterationCount;
+ getGroupContext().setIterationCount(itNumber.intValue());
+ }
+ }
+
+ protected void startGroupInstance(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ }
+
+ protected void startGroupBody(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ }
+
+ protected abstract void startOther(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException;
+
+ public void processText(final String text)
+ throws DataSourceException, ReportProcessingException
+ {
+ try
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+ final BufferedReader br = new BufferedReader(new StringReader(text));
+ String line = br.readLine();
+ while (line != null)
+ {
+ xmlWriter.writeTextNormalized(line, false);
+ line = br.readLine();
+ if (line != null)
+ {
+ xmlWriter.writeTag(OfficeNamespaces.TEXT_NS, "line-break", XmlWriterSupport.CLOSE);
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException(FAILED, e);
+ }
+ }
+
+ protected boolean isFilteredNamespace(final String namespace)
+ {
+ if (Namespaces.LIBLAYOUT_NAMESPACE.equals(namespace))
+ {
+ return true;
+ }
+ if (JFreeReportInfo.REPORT_NAMESPACE.equals(namespace))
+ {
+ return true;
+ }
+ if (JFreeReportInfo.REPORT_NAMESPACE.equals(namespace))
+ {
+ return true;
+ }
+ if (JFreeReportInfo.COMPATIBILITY_NAMESPACE.equals(namespace))
+ {
+ return true;
+ }
+ if (OfficeNamespaces.OOREPORT_NS.equals(namespace))
+ {
+ return true;
+ }
+ return false;
+ }
+
+ public void processContent(final DataFlags value)
+ throws DataSourceException, ReportProcessingException
+ {
+ final Object rawvalue = value.getValue();
+ if (rawvalue == null)
+ {
+ return;
+ }
+
+ // special handler for image (possibly also for URL ..)
+ if (rawvalue instanceof Image)
+ {
+ // do nothing yet. We should define something for that later ..
+ return;
+ }
+
+ final XmlWriter xmlWriter = getXmlWriter();
+ final String text = String.valueOf(rawvalue);
+ try
+ {
+ final BufferedReader br = new BufferedReader(new StringReader(text));
+ String line = br.readLine();
+ while (line != null)
+ {
+ xmlWriter.writeTextNormalized(line, false);
+ line = br.readLine();
+ if (line != null)
+ {
+ xmlWriter.writeTag(OfficeNamespaces.TEXT_NS, "line-break", XmlWriterSupport.CLOSE);
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException(FAILED, e);
+ }
+ }
+
+ public final void endElement(final AttributeMap roAttrs)
+ throws DataSourceException, ReportProcessingException
+ {
+ final AttributeMap attrs = new LazyAttributeMap(roAttrs);
+ // final int oldState = getCurrentState();
+ try
+ {
+
+ switch (getCurrentState())
+ {
+ case OfficeDocumentReportTarget.STATE_IN_OTHER:
+ {
+ endOther(attrs);
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_SECTION:
+ {
+ endReportSection(attrs, currentRole);
+ currentRole = OfficeDocumentReportTarget.ROLE_NONE;
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_GROUP:
+ {
+ endGroup(attrs);
+ groupContext = groupContext.getParent();
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_GROUP_INSTANCE:
+ {
+ endGroupInstance(attrs);
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_GROUP_BODY:
+ {
+ endGroupBody(attrs);
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_CONTENT:
+ {
+ endContent(attrs);
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_BODY:
+ {
+ endBody(attrs);
+ break;
+ }
+ case OfficeDocumentReportTarget.STATE_IN_DOCUMENT:
+ {
+ throw new IllegalStateException("This cannot be.");
+ }
+ default:
+ {
+ throw new IllegalStateException("Invalid state encountered.");
+ }
+ }
+ }
+ catch (IOException ioe)
+ {
+ throw new ReportProcessingException("IO Error while writing content",
+ ioe);
+ } finally
+ {
+ states.pop();
+
+ if (DEBUG_ELEMENTS)
+ {
+ LOGGER.debug("Finished " + getCurrentState() + "/" + states.size() + " " + ReportTargetUtil.getNamespaceFromAttribute(attrs) + ":" + ReportTargetUtil.getElemenTypeFromAttribute(attrs));
+ }
+
+ }
+ }
+
+ protected void endGroupBody(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ }
+
+ protected void endGroupInstance(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ }
+
+ public int getCurrentRole()
+ {
+ return currentRole;
+ }
+
+ protected abstract void endOther(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException;
+
+ protected void endReportSection(final AttributeMap attrs,
+ final int role)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ if (allowBuffering(role))
+ {
+ finishBuffering();
+ }
+ }
+
+ protected void endGroup(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ }
+
+ protected abstract void endContent(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException;
+
+ protected void endBody(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ getXmlWriter().writeCloseTag();
+ }
+
+ public void copyMeta()
+ {
+ // now copy the meta.xml
+ if (getInputRepository().isReadable("meta.xml"))
+ {
+ InputStream inputStream = null;
+ try
+ {
+ inputStream = getInputRepository().createInputStream("meta.xml");
+ DOMParser dOMParser = new DOMParser();
+ dOMParser.parse(new InputSource(inputStream));
+ Document document = dOMParser.getDocument();
+ NodeList nl = document.getElementsByTagName("document-meta/meta/generator");
+ Node node = document.getFirstChild().getFirstChild().getFirstChild().getFirstChild();
+ String creator = node.getNodeValue();
+ node.setNodeValue(creator + "/report_builder");
+ Transformer transformer = TransformerFactory.newInstance().newTransformer();
+ transformer.setOutputProperty(OutputKeys.METHOD, "xml");
+
+ final OutputStream outputMetaStream = getOutputRepository().createOutputStream("meta.xml", "text/xml");
+ StreamResult result = new StreamResult(outputMetaStream);
+ DOMSource source = new DOMSource(document);
+ transformer.transform(source, result);
+
+ //IOUtils.getInstance().copyStreams(inputStream, outputMetaStream);
+ outputMetaStream.flush();
+ outputMetaStream.close();
+ }
+ catch (java.lang.Exception ex)
+ {
+ } finally
+ {
+ if (inputStream != null)
+ {
+ try
+ {
+ inputStream.close();
+ }
+ catch (IOException ex)
+ {
+ Logger.getLogger(OfficeDocumentReportTarget.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+ }
+ }
+ }
+
+ public void endReport(final ReportStructureRoot report)
+ throws DataSourceException, ReportProcessingException
+ {
+ if (xmlWriters.size() != 1)
+ {
+ throw new IllegalStateException("Invalid writer-stack state");
+ }
+
+ try
+ {
+ final StylesWriter inlineStylesWriter = new StylesWriter(rootXmlWriter);
+ inlineStylesWriter.writeContentStyles(predefinedStylesCollection, contentStylesCollection);
+
+ final BufferState state = finishBuffering();
+ this.rootXmlWriter.writeStream(state.getXmlAsReader());
+
+ final OutputStream stylesOutStream =
+ outputRepository.createOutputStream("styles.xml", "text/xml");
+ final OutputStreamWriter osw =
+ new OutputStreamWriter(stylesOutStream, "UTF-8");
+ final StylesWriter stylesWriter = new StylesWriter(osw);
+ stylesWriter.writeGlobalStyles(predefinedStylesCollection, globalStylesCollection);
+ stylesWriter.close();
+
+ this.rootXmlWriter.writeCloseTag();
+ this.rootXmlWriter.close();
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException(FAILED, e);
+ }
+ }
+
+ public XmlWriter getXmlWriter()
+ {
+ final BufferState bufferState = (BufferState) xmlWriters.peek();
+ return bufferState.getXmlWriter();
+ }
+
+ public OfficeStylesCollection getStylesCollection()
+ {
+ final BufferState bufferState = (BufferState) xmlWriters.peek();
+ return bufferState.getStylesCollection();
+ }
+
+ public void startBuffering(final OfficeStylesCollection stylesCollection,
+ final boolean indent) throws ReportProcessingException
+ {
+ final XmlWriter currentWriter;
+ if (xmlWriters.isEmpty())
+ {
+ currentWriter = rootXmlWriter;
+ }
+ else
+ {
+ final BufferState bufferState = (BufferState) xmlWriters.peek();
+ currentWriter = bufferState.getXmlWriter();
+ }
+
+ try
+ {
+ final MemoryByteArrayOutputStream out =
+ new MemoryByteArrayOutputStream(INITIAL_BUFFER_SIZE, 256 * INITIAL_BUFFER_SIZE);
+ final DeflaterOutputStream deflateOut = new DeflaterOutputStream(out);
+ final OutputStreamWriter xmlBuffer = new OutputStreamWriter(deflateOut, "UTF-16");
+ // final StringWriter xmlBuffer = new StringWriter
+ // (OfficeDocumentReportTarget.INITIAL_BUFFER_SIZE);
+ final XmlWriter contentXmlWriter = new XmlWriter(xmlBuffer, createTagDescription());
+ contentXmlWriter.copyNamespaces(currentWriter);
+ if (indent)
+ {
+ contentXmlWriter.setAdditionalIndent(currentWriter.getCurrentIndentLevel());
+ contentXmlWriter.setWriteFinalLinebreak(true);
+ }
+ else
+ {
+ contentXmlWriter.setWriteFinalLinebreak(false);
+ }
+ contentXmlWriter.setAlwaysAddNamespace(true);
+ xmlWriters.push(new BufferState(contentXmlWriter, out, stylesCollection));
+ }
+ catch (IOException ioe)
+ {
+ throw new ReportProcessingException("Unable to create the buffer", ioe);
+ }
+ }
+
+ public BufferState finishBuffering() throws ReportProcessingException
+ {
+ final BufferState state = (BufferState) xmlWriters.pop();
+ try
+ {
+ state.getXmlWriter().close();
+ }
+ catch (IOException e)
+ {
+ LOGGER.error("ReportProcessing failed", e);
+ }
+ return state;
+ }
+
+ public void commit()
+ throws ReportProcessingException
+ {
+ // do not call flush before the report is fully finished. Every flush
+ // causes the Office-Backend to fully ZIP all contents (it acts like a
+ // 'Save' call from the UI) and that's expensive like hell
+ }
+
+ public NamespaceDefinition getNamespaceByUri(final String uri)
+ {
+ return null;
+ }
+
+ protected AttributeList buildAttributeList(final AttributeMap attrs)
+ {
+ final String elementType = ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+ final AttributeList attrList = new AttributeList();
+ final String[] namespaces = attrs.getNameSpaces();
+ for (int i = 0; i < namespaces.length; i++)
+ {
+ final String attrNamespace = namespaces[i];
+ if (isFilteredNamespace(attrNamespace))
+ {
+ continue;
+ }
+
+ final Map localAttributes = attrs.getAttributes(attrNamespace);
+ final Iterator entries = localAttributes.entrySet().iterator();
+ while (entries.hasNext())
+ {
+ final Map.Entry entry = (Map.Entry) entries.next();
+ final String key = String.valueOf(entry.getKey());
+ if (OfficeNamespaces.TABLE_NS.equals(attrNamespace) && "name".equals(key))
+ {
+ final String tableName = String.valueOf(entry.getValue());
+ final String saneName = sanitizeName(tableName);
+ attrList.setAttribute(attrNamespace, key,
+ tableNameGenerator.generateName(saneName));
+ }
+ else if (OfficeNamespaces.DRAWING_NS.equals(attrNamespace) && "name".equals(key) && !"equation".equals(elementType))
+ {
+ final String objectName = String.valueOf(entry.getValue());
+ attrList.setAttribute(attrNamespace, key,
+ frameNameGenerator.generateName(objectName));
+ }
+ else
+ {
+ attrList.setAttribute(attrNamespace, key, String.valueOf(entry.getValue()));
+ }
+ }
+ }
+ return attrList;
+ }
+
+ protected String sanitizeName(final String name)
+ {
+ // A table name cannot contain spaces and should only contain
+ // ascii-characters.
+ if (name == null)
+ {
+ return "";
+ }
+ final char[] chars = name.toCharArray();
+ final StringBuffer buffer = new StringBuffer();
+ for (int i = 0; i < chars.length; i++)
+ {
+ final char aChar = chars[i];
+ if (Character.isWhitespace(aChar))
+ {
+ buffer.append('_');
+ }
+ else
+ {
+ buffer.append(aChar);
+ }
+ }
+ return buffer.toString();
+ }
+
+ /**
+ * Returns the length in point. This method is f**king slow, it eats half of the processing time. I surely should
+ * replace it with something more efficient later.
+ *
+ * @param text
+ * @return
+ */
+ protected CSSNumericValue parseLength(final String text)
+ {
+ if (styleSheetParserUtil == null)
+ {
+ styleSheetParserUtil = StyleSheetParserUtil.getInstance();
+ }
+
+ final LexicalUnit cssValue = styleSheetParserUtil.parseLexicalStyleValue(
+ text);
+ return CSSValueFactory.createLengthValue(cssValue);
+ }
+
+ protected boolean isRepeatingSection()
+ {
+ return (currentRole == OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_FOOTER || currentRole == OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_HEADER || currentRole == OfficeDocumentReportTarget.ROLE_PAGE_FOOTER || currentRole == OfficeDocumentReportTarget.ROLE_PAGE_HEADER || currentRole == OfficeDocumentReportTarget.ROLE_VARIABLES);
+
+ }
+
+ protected OfficeStyle deriveStyle(final String styleFamily, final String styleName)
+ throws ReportProcessingException
+ {
+ // autogenerate a style. The style has already been added to the current
+ // auto-collection.
+ final OfficeStyle style = StyleUtilities.deriveStyle(styleFamily, styleName,
+ getStylesCollection(), getGlobalStylesCollection(),
+ getPredefinedStylesCollection(), getAutoStyleNameGenerator());
+ return style;
+ }
+
+ protected void startImageProcessing(final AttributeMap attrs)
+ throws ReportProcessingException
+ {
+ final Object imageData = attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, OfficeToken.IMAGE_DATA);
+ final boolean preserveIRI = OfficeToken.TRUE.equals(attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, OfficeToken.PRESERVE_IRI));
+
+ // for the first shot, do nothing fancy ..
+ final ImageProducer.OfficeImage image = imageProducer.produceImage(imageData, preserveIRI);
+ if (image != null)
+ {
+ final ImageElementContext imageContext = (ImageElementContext) attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "image-context");
+
+ // When scaling, we have to create an image-style.
+ final CSSNumericValue width = image.getWidth(); // always in 100th of a mm
+
+ final CSSNumericValue height = image.getHeight(); // always in 100th of a mm
+
+ LOGGER.debug("Image " + imageData + " Width: " + width + ", Height: " + height);
+ if (width == null || height == null)
+ {
+ return;
+ }
+
+ CSSNumericValue imageAreaWidthVal;
+ CSSNumericValue imageAreaHeightVal;
+ CSSNumericValue posX = CSSNumericValue.createValue(CSSNumericType.CM, 0.0);
+ CSSNumericValue posY = CSSNumericValue.createValue(CSSNumericType.CM, 0.0);
+
+ String styleName = null;
+ if (imageContext != null)
+ {
+ imageAreaWidthVal = computeImageWidth(imageContext);
+ imageAreaHeightVal = computeImageHeight(imageContext);
+
+ if (imageAreaWidthVal == null || imageAreaHeightVal == null)
+ {
+ LOGGER.debug("Image data returned from context is invalid. Maybe this is not an image?");
+ return;
+ }
+ else
+ {
+ // compute the clip-area ..
+ final CSSNumericValue normalizedImageWidth =
+ CSSValueResolverUtility.convertLength(width, imageAreaWidthVal.getType());
+ final CSSNumericValue normalizedImageHeight =
+ CSSValueResolverUtility.convertLength(height, imageAreaHeightVal.getType());
+
+ final String scale = (String) attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, OfficeToken.SCALE);
+ if (OfficeToken.NONE.equals(scale) && normalizedImageWidth.getValue() > 0 && normalizedImageHeight.getValue() > 0)
+ {
+ final double clipWidth = normalizedImageWidth.getValue() - imageAreaWidthVal.getValue();
+ final double clipHeight = normalizedImageHeight.getValue() - imageAreaHeightVal.getValue();
+ if (clipWidth > 0 && clipHeight > 0)
+ {
+ final OfficeStyle imageStyle = deriveStyle(OfficeToken.GRAPHIC, OfficeToken.GRAPHICS);
+ final Element graphProperties = produceFirstChild(imageStyle, OfficeNamespaces.STYLE_NS, OfficeToken.GRAPHIC_PROPERTIES);
+ final StringBuffer buffer = new StringBuffer();
+ buffer.append("rect(");
+ buffer.append(clipHeight / 2);
+ buffer.append(imageAreaHeightVal.getType().getType());
+ buffer.append(' ');
+ buffer.append(clipWidth / 2);
+ buffer.append(imageAreaWidthVal.getType().getType());
+ buffer.append(' ');
+ buffer.append(clipHeight / 2);
+ buffer.append(imageAreaHeightVal.getType().getType());
+ buffer.append(' ');
+ buffer.append(clipWidth / 2);
+ buffer.append(imageAreaWidthVal.getType().getType());
+ buffer.append(')');
+ graphProperties.setAttribute(OfficeNamespaces.FO_NS, "clip", buffer.toString());
+
+ styleName = imageStyle.getStyleName();
+ getStylesCollection().getAutomaticStyles().addStyle(imageStyle);
+ }
+ else if (clipWidth > 0)
+ {
+ final OfficeStyle imageStyle = deriveStyle(OfficeToken.GRAPHIC, OfficeToken.GRAPHICS);
+ final Element graphProperties = produceFirstChild(imageStyle, OfficeNamespaces.STYLE_NS, OfficeToken.GRAPHIC_PROPERTIES);
+ final StringBuffer buffer = new StringBuffer();
+ buffer.append("rect(0cm ");
+ buffer.append(clipWidth / 2);
+ buffer.append(imageAreaWidthVal.getType().getType());
+ buffer.append(" 0cm ");
+ buffer.append(clipWidth / 2);
+ buffer.append(imageAreaWidthVal.getType().getType());
+ buffer.append(')');
+ graphProperties.setAttribute(OfficeNamespaces.FO_NS, "clip", buffer.toString());
+
+ styleName = imageStyle.getStyleName();
+ getStylesCollection().getAutomaticStyles().addStyle(imageStyle);
+ imageAreaHeightVal = normalizedImageHeight;
+ }
+ else if (clipHeight > 0)
+ {
+ final OfficeStyle imageStyle = deriveStyle(OfficeToken.GRAPHIC, OfficeToken.GRAPHICS);
+ final Element graphProperties = produceFirstChild(imageStyle, OfficeNamespaces.STYLE_NS, OfficeToken.GRAPHIC_PROPERTIES);
+ final StringBuffer buffer = new StringBuffer();
+ buffer.append("rect(");
+ buffer.append(clipHeight / 2);
+ buffer.append(imageAreaHeightVal.getType().getType());
+ buffer.append(" 0cm ");
+ buffer.append(clipHeight / 2);
+ buffer.append(imageAreaHeightVal.getType().getType());
+ buffer.append(" 0cm)");
+ graphProperties.setAttribute(OfficeNamespaces.FO_NS, "clip", buffer.toString());
+
+ styleName = imageStyle.getStyleName();
+ getStylesCollection().getAutomaticStyles().addStyle(imageStyle);
+ imageAreaWidthVal = normalizedImageWidth;
+ }
+ else
+ {
+ imageAreaWidthVal = normalizedImageWidth;
+ imageAreaHeightVal = normalizedImageHeight;
+ }
+ }
+ else if (OfficeToken.ISOTROPIC.equals(scale))
+ {
+ final double[] ret = calcPaintSize(imageAreaWidthVal, imageAreaHeightVal, normalizedImageWidth, normalizedImageHeight);
+
+ posX = CSSNumericValue.createValue(imageAreaWidthVal.getType(), (imageAreaWidthVal.getValue() - ret[0]) * 0.5);
+ posY = CSSNumericValue.createValue(imageAreaHeightVal.getType(), (imageAreaHeightVal.getValue() - ret[1]) * 0.5);
+
+ imageAreaWidthVal = CSSNumericValue.createValue(imageAreaWidthVal.getType(), ret[0]);
+ imageAreaHeightVal = CSSNumericValue.createValue(imageAreaHeightVal.getType(), ret[1]);
+ }
+ }
+ // If we do scale, then we simply use the given image-area-size as valid image size and dont
+ // care about the image itself ..
+ }
+ else
+ {
+ LOGGER.debug("There is no image-context, so we have to rely on the image's natural bounds. " + "This may go awfully wrong.");
+ imageAreaWidthVal = image.getWidth();
+ imageAreaHeightVal = image.getHeight();
+ }
+
+ final AttributeList frameList = new AttributeList();
+ frameList.setAttribute(OfficeNamespaces.DRAWING_NS, "name", imageNames.generateName("Image"));
+ if (styleName != null)
+ {
+ frameList.setAttribute(OfficeNamespaces.DRAWING_NS, OfficeToken.STYLE_NAME, styleName);
+ }
+ frameList.setAttribute(OfficeNamespaces.TEXT_NS, "anchor-type", OfficeToken.PARAGRAPH);
+ frameList.setAttribute(OfficeNamespaces.SVG_NS, "z-index", "0");
+ frameList.setAttribute(OfficeNamespaces.SVG_NS, "x", posX.getValue() + posX.getType().getType());
+ frameList.setAttribute(OfficeNamespaces.SVG_NS, "y", posY.getValue() + posY.getType().getType());
+
+
+ LOGGER.debug("Image " + imageData + " A-Width: " + imageAreaWidthVal + ", A-Height: " + imageAreaHeightVal);
+
+ if (imageAreaWidthVal != null)
+ {
+ frameList.setAttribute(OfficeNamespaces.SVG_NS,
+ "width", imageAreaWidthVal.getValue() + imageAreaWidthVal.getType().getType());
+ }
+
+ if (imageAreaHeightVal != null)
+ {
+ frameList.setAttribute(OfficeNamespaces.SVG_NS,
+ "height", imageAreaHeightVal.getValue() + imageAreaHeightVal.getType().getType());
+ }
+
+
+ final AttributeList imageList = new AttributeList();
+ imageList.setAttribute(OfficeNamespaces.XLINK_NS, "href", image.getEmbeddableLink());
+ imageList.setAttribute(OfficeNamespaces.XLINK_NS, "type", "simple");
+ imageList.setAttribute(OfficeNamespaces.XLINK_NS, "show", "embed");
+ imageList.setAttribute(OfficeNamespaces.XLINK_NS, "actuate", "onLoad");
+
+
+ try
+ {
+ getXmlWriter().writeTag(OfficeNamespaces.DRAWING_NS, "frame", frameList, XmlWriterSupport.OPEN);
+ getXmlWriter().writeTag(OfficeNamespaces.DRAWING_NS, OfficeToken.IMAGE, imageList, XmlWriterSupport.CLOSE);
+ getXmlWriter().writeCloseTag();
+ }
+ catch (IOException ioe)
+ {
+ throw new ReportProcessingException(FAILED, ioe);
+ }
+ }
+ }
+
+ private CSSNumericValue computeImageWidth(final ImageElementContext imageElementContext)
+ {
+ final LengthCalculator calculator = new LengthCalculator();
+ final String[] strings = imageElementContext.getColStyles();
+ for (int i = 0; i < strings.length; i++)
+ {
+ final String styleName = strings[i];
+ final CSSNumericValue value = computeColumnWidth(styleName);
+ if (value != null)
+ {
+ calculator.add(value);
+ }
+ }
+ return calculator.getResult();
+ }
+
+ private CSSNumericValue computeImageHeight(final ImageElementContext imageElementContext)
+ {
+ final LengthCalculator calculator = new LengthCalculator();
+ final String[] strings = imageElementContext.getRowStyles();
+ for (int i = 0; i < strings.length; i++)
+ {
+ final String styleName = strings[i];
+ final CSSNumericValue value = computeRowHeight(styleName);
+ if (value != null)
+ {
+ calculator.add(value);
+ }
+ }
+ return calculator.getResult();
+ }
+
+ protected CSSNumericValue computeRowHeight(final String rowStyle)
+ {
+ final OfficeStylesCollection contentStyles = getContentStylesCollection();
+ final OfficeStyle style = contentStyles.getStyle(OfficeToken.TABLE_ROW, rowStyle);
+ if (style != null)
+ {
+ final Element element = style.getTableRowProperties();
+ if (element != null)
+ {
+ final String height = (String) element.getAttribute(OfficeNamespaces.STYLE_NS, "row-height");
+ if (height != null)
+ {
+ return parseLength(height);
+ }
+ }
+
+ final String styleParent = style.getStyleParent();
+ if (styleParent != null)
+ {
+ return computeRowHeight(styleParent);
+ }
+ }
+
+ final OfficeStylesCollection globalStyles = getGlobalStylesCollection();
+ final OfficeStyle globalStyle = globalStyles.getStyle(OfficeToken.TABLE_ROW, rowStyle);
+ if (globalStyle != null)
+ {
+ final Element element = globalStyle.getTableRowProperties();
+ if (element != null)
+ {
+ final String height = (String) element.getAttribute(OfficeNamespaces.STYLE_NS, "row-height");
+ if (height != null)
+ {
+ return parseLength(height);
+ }
+ }
+ final String styleParent = globalStyle.getStyleParent();
+ if (styleParent != null)
+ {
+ return computeRowHeight(styleParent);
+ }
+ }
+
+ final OfficeStylesCollection predefStyles = getPredefinedStylesCollection();
+ final OfficeStyle predefStyle = predefStyles.getStyle(OfficeToken.TABLE_ROW, rowStyle);
+ if (predefStyle != null)
+ {
+ final Element element = predefStyle.getTableRowProperties();
+ if (element != null)
+ {
+ final String height = (String) element.getAttribute(OfficeNamespaces.STYLE_NS, "row-height");
+ if (height != null)
+ {
+ return parseLength(height);
+ }
+ }
+ final String styleParent = predefStyle.getStyleParent();
+ if (styleParent != null)
+ {
+ return computeRowHeight(styleParent);
+ }
+ }
+ // not found.
+ return null;
+ }
+
+ protected CSSNumericValue computeColumnWidth(final String colStyle)
+ {
+ final OfficeStylesCollection contentStyles = getContentStylesCollection();
+ final OfficeStyle style = contentStyles.getStyle(OfficeToken.TABLE_COLUMN, colStyle);
+ if (style != null)
+ {
+ final Element element = style.getTableColumnProperties();
+ if (element != null)
+ {
+ final String height = (String) element.getAttribute(OfficeNamespaces.STYLE_NS, "column-width");
+ if (height != null)
+ {
+ return parseLength(height);
+ }
+ }
+
+ final String styleParent = style.getStyleParent();
+ if (styleParent != null)
+ {
+ return computeRowHeight(styleParent);
+ }
+ }
+
+ final OfficeStylesCollection globalStyles = getGlobalStylesCollection();
+ final OfficeStyle globalStyle = globalStyles.getStyle(OfficeToken.TABLE_COLUMN, colStyle);
+ if (globalStyle != null)
+ {
+ final Element element = globalStyle.getTableColumnProperties();
+ if (element != null)
+ {
+ final String height = (String) element.getAttribute(OfficeNamespaces.STYLE_NS, "column-width");
+ if (height != null)
+ {
+ return parseLength(height);
+ }
+ }
+ final String styleParent = globalStyle.getStyleParent();
+ if (styleParent != null)
+ {
+ return computeRowHeight(styleParent);
+ }
+ }
+
+ final OfficeStylesCollection predefStyles = getPredefinedStylesCollection();
+ final OfficeStyle predefStyle = predefStyles.getStyle(OfficeToken.TABLE_COLUMN, colStyle);
+ if (predefStyle != null)
+ {
+ final Element element = predefStyle.getTableColumnProperties();
+ if (element != null)
+ {
+ final String height = (String) element.getAttribute(OfficeNamespaces.STYLE_NS, "column-width");
+ if (height != null)
+ {
+ return parseLength(height);
+ }
+ }
+ final String styleParent = predefStyle.getStyleParent();
+ if (styleParent != null)
+ {
+ return computeRowHeight(styleParent);
+ }
+ }
+ // not found.
+ return null;
+ }
+
+ protected Element produceFirstChild(final Section style,
+ final String nameSpace,
+ final String type)
+ {
+ Element paragraphProps = style.findFirstChild(nameSpace, type);
+ if (paragraphProps == null)
+ {
+ paragraphProps = new Section();
+ paragraphProps.setNamespace(nameSpace);
+ paragraphProps.setType(type);
+ style.addNode(paragraphProps);
+ }
+ return paragraphProps;
+ }
+
+ protected void startChartProcessing(final AttributeMap attrs)
+ throws ReportProcessingException
+ {
+ final String classId = (String) attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "class-id");
+ final String chartUrl = (String) attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "href");
+ final ArrayList masterColumns = (ArrayList) attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, SDBCReportDataFactory.MASTER_COLUMNS);
+ final ArrayList masterValues = (ArrayList) attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, SDBCReportDataFactory.MASTER_VALUES);
+ final ArrayList detailColumns = (ArrayList) attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, SDBCReportDataFactory.DETAIL_COLUMNS);
+ final String href = oleProducer.produceOle(chartUrl, masterColumns, masterValues, detailColumns);
+
+ final AttributeList oleList = new AttributeList();
+ oleList.setAttribute(OfficeNamespaces.DRAWING_NS, "class-id", classId);
+ oleList.setAttribute(OfficeNamespaces.XLINK_NS, "href", "./" + href);
+ oleList.setAttribute(OfficeNamespaces.XLINK_NS, "type", "simple");
+ oleList.setAttribute(OfficeNamespaces.XLINK_NS, "show", "embed");
+ oleList.setAttribute(OfficeNamespaces.XLINK_NS, "actuate", "onLoad");
+
+ try
+ {
+ getXmlWriter().writeTag(OfficeNamespaces.DRAWING_NS, OfficeToken.OBJECT_OLE, oleList, XmlWriterSupport.CLOSE);
+ }
+ catch (IOException ioe)
+ {
+ throw new ReportProcessingException(FAILED, ioe);
+ }
+ }
+
+ static private double[] calcPaintSize(final CSSNumericValue areaWidth, final CSSNumericValue areaHeight,
+ final CSSNumericValue imageWidth, final CSSNumericValue imageHeight)
+ {
+
+ final double ratioX = areaWidth.getValue() / imageWidth.getValue();
+ final double ratioY = areaHeight.getValue() / imageHeight.getValue();
+ final double ratioMin = Math.min(ratioX, ratioY);
+
+ double[] ret = new double[2];
+ ret[0] = imageWidth.getValue() * ratioMin;
+ ret[1] = imageHeight.getValue() * ratioMin;
+ return ret;
+ }
+
+ protected void writeNullDate() throws IOException
+ {
+ // write NULL DATE
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeTag(OfficeNamespaces.TABLE_NS, "calculation-settings", null, XmlWriterSupport.OPEN);
+ final AttributeMap nullDateAttributes = new AttributeMap();
+ nullDateAttributes.setAttribute(OfficeNamespaces.TABLE_NS, "date-value", "1900-01-01");
+ xmlWriter.writeTag(OfficeNamespaces.TABLE_NS, "null-date", buildAttributeList(nullDateAttributes), XmlWriterSupport.CLOSE);
+ xmlWriter.writeCloseTag();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/OleProducer.java b/reportbuilder/java/com/sun/star/report/pentaho/output/OleProducer.java
new file mode 100644
index 000000000000..ef9296707af3
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/OleProducer.java
@@ -0,0 +1,139 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output;
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.JobProperties;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.ReportEngineParameterNames;
+import com.sun.star.report.ReportExecutionException;
+import com.sun.star.report.ReportJobDefinition;
+import com.sun.star.report.pentaho.DefaultNameGenerator;
+import com.sun.star.report.pentaho.PentahoReportEngine;
+import com.sun.star.report.pentaho.PentahoReportEngineMetaData;
+
+import java.io.IOException;
+
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class OleProducer
+{
+
+ private static final Log LOGGER = LogFactory.getLog(OleProducer.class);
+ private final InputRepository inputRepository;
+ private final OutputRepository outputRepository;
+ private final DefaultNameGenerator nameGenerator;
+ private final DataSourceFactory dataSourceFactory;
+ private final ImageService imageService;
+ private final Integer maxRows;
+
+ public OleProducer(final InputRepository inputRepository,
+ final OutputRepository outputRepository, final ImageService imageService, final DataSourceFactory dataSourceFactory, final Integer maxRows)
+ {
+ if (inputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ if (outputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+
+ this.inputRepository = inputRepository;
+ this.outputRepository = outputRepository;
+ this.nameGenerator = new DefaultNameGenerator(outputRepository);
+ this.dataSourceFactory = dataSourceFactory;
+ this.imageService = imageService;
+ this.maxRows = maxRows;
+ }
+
+ String produceOle(final String source, final List masterColumns, final List masterValues, final List detailColumns)
+ {
+ InputRepository subInputRepository = null;
+ OutputRepository subOutputRepository = null;
+ String output = "";
+ try
+ {
+ subInputRepository = inputRepository.openInputRepository(source);
+ output = nameGenerator.generateStorageName("Object", null);
+ subOutputRepository = outputRepository.openOutputRepository(output, PentahoReportEngineMetaData.OPENDOCUMENT_CHART);
+ try
+ {
+
+ final PentahoReportEngine engine = new PentahoReportEngine();
+ final ReportJobDefinition definition = engine.createJobDefinition();
+ final JobProperties procParms = definition.getProcessingParameters();
+
+ procParms.setProperty(ReportEngineParameterNames.INPUT_REPOSITORY, subInputRepository);
+ procParms.setProperty(ReportEngineParameterNames.OUTPUT_REPOSITORY, subOutputRepository);
+ procParms.setProperty(ReportEngineParameterNames.INPUT_NAME, "content.xml");
+ procParms.setProperty(ReportEngineParameterNames.OUTPUT_NAME, "content.xml");
+ procParms.setProperty(ReportEngineParameterNames.CONTENT_TYPE, PentahoReportEngineMetaData.OPENDOCUMENT_CHART);
+ procParms.setProperty(ReportEngineParameterNames.INPUT_DATASOURCE_FACTORY, dataSourceFactory);
+ procParms.setProperty(ReportEngineParameterNames.INPUT_MASTER_COLUMNS, masterColumns);
+ procParms.setProperty(ReportEngineParameterNames.INPUT_MASTER_VALUES, masterValues);
+ procParms.setProperty(ReportEngineParameterNames.INPUT_DETAIL_COLUMNS, detailColumns);
+ procParms.setProperty(ReportEngineParameterNames.IMAGE_SERVICE, imageService);
+ procParms.setProperty(ReportEngineParameterNames.MAXROWS, maxRows);
+
+ engine.createJob(definition).execute();
+ }
+ catch (ReportExecutionException ex)
+ {
+ LOGGER.error("ReportProcessing failed", ex);
+ }
+ catch (IOException ex)
+ {
+ LOGGER.error("ReportProcessing failed", ex);
+ }
+ }
+ catch (IOException ex)
+ {
+ LOGGER.error("ReportProcessing failed", ex);
+ } finally
+ {
+ if (subInputRepository != null)
+ {
+ subInputRepository.closeInputRepository();
+ }
+ if (subOutputRepository != null)
+ {
+ subOutputRepository.closeOutputRepository();
+ }
+ }
+ return output;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/StyleUtilities.java b/reportbuilder/java/com/sun/star/report/pentaho/output/StyleUtilities.java
new file mode 100644
index 000000000000..939583be8365
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/StyleUtilities.java
@@ -0,0 +1,615 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.DataStyle;
+import com.sun.star.report.pentaho.model.FontFaceDeclsSection;
+import com.sun.star.report.pentaho.model.FontFaceElement;
+import com.sun.star.report.pentaho.model.OfficeStyle;
+import com.sun.star.report.pentaho.model.OfficeStyles;
+import com.sun.star.report.pentaho.model.OfficeStylesCollection;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+import org.jfree.report.util.AttributeNameGenerator;
+
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class StyleUtilities
+{
+
+ private static final Log LOGGER = LogFactory.getLog(StyleUtilities.class);
+ private static final String STYLE = "style";
+
+ private StyleUtilities()
+ {
+ }
+
+ /**
+ * Copies the specififed style (keyed by its family and name) into the current styles collection. This copies the
+ * style and all inherited styles into the target collection. Inherited common styles will be always be added to the
+ * common collection (which will be written into the 'styles.xml' later).
+ * <p/>
+ * This method does nothing if the specified style already exists in the styles collection.
+ *
+ * @param styleFamily the family of the style to copy
+ * @param styleName the unique name of the style.
+ * @param stylesCollection the current styles collection
+ * @param commonCollection the global styles collection
+ * @param predefCollection the predefined styles from where to copy the styles.
+ * @throws ReportProcessingException if the style copying failed.
+ */
+ public static void copyStyle(final String styleFamily,
+ final String styleName,
+ final OfficeStylesCollection stylesCollection,
+ final OfficeStylesCollection commonCollection,
+ final OfficeStylesCollection predefCollection)
+ throws ReportProcessingException
+ {
+ copyStyle(styleFamily, styleName, stylesCollection,
+ commonCollection, predefCollection, new HashSet());
+ }
+
+ /**
+ * Copies the specififed style (keyed by its family and name) into the current styles collection. This copies the
+ * style and all inherited styles into the target collection. Inherited common styles will be always be added to the
+ * common collection (which will be written into the 'styles.xml' later).
+ * <p/>
+ * This method does nothing if the specified style already exists in the styles collection.
+ *
+ * @param styleFamily the family of the style to copy
+ * @param styleName the unique name of the style.
+ * @param stylesCollection the current styles collection
+ * @param commonCollection the global styles collection
+ * @param predefCollection the predefined styles from where to copy the styles.
+ * @param inheritanceTracker a collection of all styles that have been touched. This is used to prevent infinite
+ * loops and duplicates.
+ * @throws ReportProcessingException if the style copying failed.
+ */
+ private static void copyStyle(final String styleFamily,
+ final String styleName,
+ final OfficeStylesCollection stylesCollection,
+ final OfficeStylesCollection commonCollection,
+ final OfficeStylesCollection predefCollection,
+ final Set inheritanceTracker)
+ throws ReportProcessingException
+ {
+ if (inheritanceTracker.contains(styleName))
+ {
+ return;
+ }
+ inheritanceTracker.add(styleName);
+
+ if (stylesCollection.containsStyle(styleFamily, styleName) || commonCollection.getCommonStyles().containsStyle(styleFamily, styleName))
+ {
+ // fine, there's already a copy of the stylesheet.
+ return;
+ }
+
+ final OfficeStyle predefCommonStyle =
+ predefCollection.getCommonStyles().getStyle(styleFamily, styleName);
+ if (predefCommonStyle != null)
+ {
+ // so we have an style from the predefined collection.
+ // copy it an add it to the current stylescollection
+ final OfficeStyles commonStyles = commonCollection.getCommonStyles();
+
+ copyStyleInternal(predefCommonStyle, commonStyles, stylesCollection,
+ commonCollection, predefCollection, styleFamily, inheritanceTracker);
+ return;
+ }
+
+ final OfficeStyle predefAutoStyle =
+ predefCollection.getAutomaticStyles().getStyle(styleFamily, styleName);
+ if (predefAutoStyle != null)
+ {
+ // so we have an style from the predefined collection.
+ // copy it an add it to the current stylescollection
+ final OfficeStyles autoStyles = stylesCollection.getAutomaticStyles();
+ copyStyleInternal(predefAutoStyle, autoStyles, stylesCollection,
+ commonCollection, predefCollection, styleFamily, inheritanceTracker);
+ return;
+ }
+
+ // There is no automatic style either. Now this means that someone
+ // messed up the fileformat. Lets create a new empty style for this.
+ final OfficeStyle autostyle = new OfficeStyle();
+ autostyle.setNamespace(OfficeNamespaces.STYLE_NS);
+ autostyle.setType(STYLE);
+ autostyle.setStyleFamily(styleFamily);
+ autostyle.setStyleName(styleName);
+
+ final OfficeStyles autoStyles = stylesCollection.getAutomaticStyles();
+ autoStyles.addStyle(autostyle);
+ }
+
+ private static OfficeStyle copyStyleInternal(
+ final OfficeStyle predefCommonStyle,
+ final OfficeStyles styles,
+ final OfficeStylesCollection stylesCollection,
+ final OfficeStylesCollection commonCollection,
+ final OfficeStylesCollection predefCollection,
+ final String styleFamily,
+ final Set inheritanceTracker)
+ throws ReportProcessingException
+ {
+ try
+ {
+ final OfficeStyle preStyle = (OfficeStyle) predefCommonStyle.clone();
+ styles.addStyle(preStyle);
+ performFontFaceProcessing(preStyle, stylesCollection, predefCollection);
+ performDataStyleProcessing(preStyle, stylesCollection, predefCollection);
+
+ // Lookup the parent style ..
+ final String styleParent = preStyle.getStyleParent();
+ final OfficeStyle inherited =
+ stylesCollection.getStyle(styleFamily, styleParent);
+ if (inherited != null)
+ {
+ // OK, recurse (and hope that we dont run into an infinite loop) ..
+ copyStyle(styleFamily, styleParent, stylesCollection,
+ commonCollection, predefCollection, inheritanceTracker);
+ }
+ else if (styleParent != null)
+ {
+ LOGGER.warn("Inconsistent styles: " + styleFamily + ":" + styleParent + " does not exist.");
+ }
+ return preStyle;
+ }
+ catch (CloneNotSupportedException e)
+ {
+ throw new ReportProcessingException("Failed to derive a stylesheet", e);
+ }
+ }
+
+ private static void performFontFaceProcessing(final OfficeStyle style,
+ final OfficeStylesCollection stylesCollection,
+ final OfficeStylesCollection predefCollection)
+ throws ReportProcessingException
+ {
+ final Element textProperties = style.getTextProperties();
+ if (textProperties == null)
+ {
+ return;
+ }
+
+ try
+ {
+ final FontFaceDeclsSection currentFonts = stylesCollection.getFontFaceDecls();
+ final FontFaceDeclsSection predefFonts = predefCollection.getFontFaceDecls();
+
+ final String fontName = (String) textProperties.getAttribute(OfficeNamespaces.STYLE_NS, "font-name");
+ if (fontName != null && !currentFonts.containsFont(fontName))
+ {
+ final FontFaceElement element = predefFonts.getFontFace(fontName);
+ if (element != null)
+ {
+ currentFonts.addFontFace((FontFaceElement) element.clone());
+ }
+ }
+
+ final String fontNameAsian = (String) textProperties.getAttribute(OfficeNamespaces.STYLE_NS,
+ "font-name-asian");
+ if (fontNameAsian != null && !currentFonts.containsFont(fontNameAsian))
+ {
+ final FontFaceElement element = predefFonts.getFontFace(
+ fontNameAsian);
+ if (element != null)
+ {
+ currentFonts.addFontFace((FontFaceElement) element.clone());
+ }
+ }
+
+ final String fontNameComplex = (String) textProperties.getAttribute(OfficeNamespaces.STYLE_NS,
+ "font-name-complex");
+ if (fontNameComplex != null && !currentFonts.containsFont(fontNameComplex))
+ {
+ final FontFaceElement element = predefFonts.getFontFace(
+ fontNameComplex);
+ if (element != null)
+ {
+ currentFonts.addFontFace((FontFaceElement) element.clone());
+ }
+ }
+ }
+ catch (CloneNotSupportedException e)
+ {
+ throw new ReportProcessingException("Failed to clone font-face element");
+ }
+ }
+
+ private static void performDataStyleProcessing(final OfficeStyle style,
+ final OfficeStylesCollection stylesCollection,
+ final OfficeStylesCollection predefCollection)
+ throws ReportProcessingException
+ {
+ final Section derivedStyle = performDataStyleProcessing(style, stylesCollection, predefCollection, "data-style-name");
+ if (derivedStyle != null)
+ {
+ try
+ {
+ final Section styleMap = (Section) derivedStyle.findFirstChild(OfficeNamespaces.STYLE_NS, "map");
+ if (styleMap != null)
+ {
+ performDataStyleProcessing(styleMap, stylesCollection, predefCollection, "apply-style-name");
+ }
+ }
+ catch (Exception e)
+ {
+ }
+ }
+ }
+
+ private static Section performDataStyleProcessing(final Section style,
+ final OfficeStylesCollection stylesCollection,
+ final OfficeStylesCollection predefCollection,
+ final String attributeName)
+ throws ReportProcessingException
+ {
+ final Object attribute = style.getAttribute(OfficeNamespaces.STYLE_NS, attributeName);
+ final DataStyle derivedStyle;
+ if (attribute != null)
+ {
+ final String styleName = String.valueOf(attribute);
+ if (!stylesCollection.getAutomaticStyles().containsDataStyle(styleName) && !stylesCollection.getCommonStyles().containsDataStyle(styleName))
+ {
+ try
+ {
+ final OfficeStyles automaticStyles = predefCollection.getAutomaticStyles();
+ final DataStyle autoDataStyle = automaticStyles.getDataStyle(styleName);
+ if (autoDataStyle != null)
+ {
+ derivedStyle = (DataStyle) autoDataStyle.clone();
+ stylesCollection.getAutomaticStyles().addDataStyle(derivedStyle);
+ }
+ else
+ {
+ final OfficeStyles commonStyles = predefCollection.getCommonStyles();
+ final DataStyle commonDataStyle = commonStyles.getDataStyle(styleName);
+ if (commonDataStyle != null)
+ {
+ derivedStyle = (DataStyle) commonDataStyle.clone();
+ stylesCollection.getCommonStyles().addDataStyle(derivedStyle);
+ }
+ else
+ {
+ LOGGER.warn("Dangling data style: " + styleName);
+ derivedStyle = null;
+ }
+ }
+ }
+ catch (CloneNotSupportedException e)
+ {
+ throw new ReportProcessingException("Failed to copy style. This should not have happened.");
+ }
+ }
+ else
+ {
+ derivedStyle = null;
+ }
+ }
+ else
+ {
+ derivedStyle = null;
+ }
+ return derivedStyle;
+ }
+
+ /**
+ * Derives the named style. If the style is a common style, a new automatic style is generated and inserted into the
+ * given stylesCollection. If the named style is an automatic style, the style is copied and inserted as new automatic
+ * style.
+ * <p/>
+ * After the style has been created, the style's inheritance hierarchy will be copied as well.
+ * <p/>
+ * If there is no style with the given name and family, a new empty automatic style will be created.
+ *
+ * @param styleFamily the family of the style to copy
+ * @param styleName the unique name of the style.
+ * @param stylesCollection the current styles collection
+ * @param commonCollection the global styles collection
+ * @param predefCollection the predefined styles from where to copy the styles.
+ * @param generator the style-name-generator of the current report-target
+ * @return the derived style instance.
+ * @throws ReportProcessingException if the style copying failed.
+ */
+ public static OfficeStyle deriveStyle(final String styleFamily,
+ final String styleName,
+ final OfficeStylesCollection stylesCollection,
+ final OfficeStylesCollection commonCollection,
+ final OfficeStylesCollection predefCollection,
+ final AttributeNameGenerator generator)
+ throws ReportProcessingException
+ {
+ if (styleFamily == null)
+ {
+ throw new NullPointerException("StyleFamily must not be null");
+ }
+ if (styleName != null)
+ {
+
+ final OfficeStyle currentAuto =
+ stylesCollection.getAutomaticStyles().getStyle(styleFamily,
+ styleName);
+ if (currentAuto != null)
+ {
+ // handle an automatic style ..
+ final OfficeStyle derivedStyle =
+ deriveAutomaticStyle(currentAuto, styleFamily, styleName,
+ generator, commonCollection, predefCollection);
+ stylesCollection.getAutomaticStyles().addStyle(derivedStyle);
+ return derivedStyle;
+ }
+
+ final OfficeStyle currentCommon =
+ stylesCollection.getCommonStyles().getStyle(styleFamily, styleName);
+ if (currentCommon != null)
+ {
+ // handle an common style ..
+ final OfficeStyle derivedStyle =
+ deriveCommonStyle(currentCommon, styleFamily, styleName,
+ generator, commonCollection, predefCollection);
+ stylesCollection.getAutomaticStyles().addStyle(derivedStyle);
+ return derivedStyle;
+ }
+
+// final OfficeStyle commonAuto =
+// commonCollection.getAutomaticStyles().getStyle(styleFamily,
+// styleName);
+// if (commonAuto != null)
+// {
+// // handle an automatic style ..
+// final OfficeStyle derivedStyle =
+// deriveAutomaticStyle(commonAuto, styleFamily, styleName,
+// generator, commonCollection, predefCollection);
+// stylesCollection.getAutomaticStyles().addStyle(derivedStyle);
+// return derivedStyle;
+// }
+
+ final OfficeStyle commonCommon =
+ commonCollection.getCommonStyles().getStyle(styleFamily, styleName);
+ if (commonCommon != null)
+ {
+ // handle an common style ..
+ final OfficeStyle derivedStyle =
+ deriveCommonStyle(commonCommon, styleFamily, styleName,
+ generator, commonCollection, predefCollection);
+ stylesCollection.getAutomaticStyles().addStyle(derivedStyle);
+ return derivedStyle;
+ }
+
+ final OfficeStyle predefAuto =
+ predefCollection.getAutomaticStyles().getStyle(styleFamily,
+ styleName);
+ if (predefAuto != null)
+ {
+ // handle an automatic style ..
+ final OfficeStyle derivedStyle =
+ deriveAutomaticStyle(predefAuto, styleFamily, styleName,
+ generator, commonCollection, predefCollection);
+ stylesCollection.getAutomaticStyles().addStyle(derivedStyle);
+ return derivedStyle;
+ }
+
+ final OfficeStyle predefCommon =
+ predefCollection.getCommonStyles().getStyle(styleFamily, styleName);
+ if (predefCommon != null)
+ {
+ // handle an common style ..
+ final OfficeStyle derivedStyle =
+ deriveCommonStyle(predefCommon, styleFamily, styleName,
+ generator, commonCollection, predefCollection);
+ stylesCollection.getAutomaticStyles().addStyle(derivedStyle);
+ return derivedStyle;
+ }
+ }
+
+ // No such style. Create a new one ..
+ final OfficeStyle autostyle = new OfficeStyle();
+ autostyle.setNamespace(OfficeNamespaces.STYLE_NS);
+ autostyle.setType(STYLE);
+ autostyle.setStyleFamily(styleFamily);
+ if (styleName != null)
+ {
+ autostyle.setStyleName(styleName);
+ }
+ else
+ {
+ autostyle.setStyleName(generator.generateName("derived_anonymous"));
+ }
+
+ final OfficeStyles autoStyles = stylesCollection.getAutomaticStyles();
+ autoStyles.addStyle(autostyle);
+ return autostyle;
+ }
+
+ private static OfficeStyle deriveCommonStyle(final OfficeStyle commonStyle,
+ final String styleFamily,
+ final String styleName,
+ final AttributeNameGenerator nameGenerator,
+ final OfficeStylesCollection commonCollection,
+ final OfficeStylesCollection predefCollection)
+ throws ReportProcessingException
+ {
+ final OfficeStyle autostyle = new OfficeStyle();
+ autostyle.setNamespace(OfficeNamespaces.STYLE_NS);
+ autostyle.setType(STYLE);
+ autostyle.setStyleFamily(styleFamily);
+ autostyle.setStyleName(nameGenerator.generateName("derived_" + styleName));
+ autostyle.setStyleParent(styleName);
+
+ // now copy the common style ..
+ final OfficeStyles commonStyles = commonCollection.getCommonStyles();
+ if (!commonStyles.containsStyle(styleFamily, styleName))
+ {
+ copyStyleInternal(commonStyle, commonStyles,
+ commonCollection, commonCollection, predefCollection,
+ styleFamily, new HashSet());
+ }
+ return autostyle;
+ }
+
+ private static OfficeStyle deriveAutomaticStyle(final OfficeStyle commonStyle,
+ final String styleFamily,
+ final String styleName,
+ final AttributeNameGenerator nameGenerator,
+ final OfficeStylesCollection commonCollection,
+ final OfficeStylesCollection predefCollection)
+ throws ReportProcessingException
+ {
+ try
+ {
+ final OfficeStyle autostyle = (OfficeStyle) commonStyle.clone();
+ autostyle.setNamespace(OfficeNamespaces.STYLE_NS);
+ autostyle.setType(STYLE);
+ autostyle.setStyleFamily(styleFamily);
+ autostyle.setStyleName(nameGenerator.generateName("derived_auto_" + styleName));
+
+
+ final String parent = autostyle.getStyleParent();
+ if (parent != null)
+ {
+ copyStyle(styleFamily, parent, commonCollection, commonCollection,
+ predefCollection);
+ }
+ return autostyle;
+ }
+ catch (CloneNotSupportedException e)
+ {
+ throw new ReportProcessingException(
+ "Deriving the style failed. Clone error: ", e);
+ }
+ }
+
+ public static String queryStyle(final OfficeStylesCollection predefCollection,
+ final String styleFamily,
+ final String styleName,
+ final String sectionName,
+ final String propertyNamespace,
+ final String propertyName)
+ {
+ return queryStyle(predefCollection, styleFamily,
+ styleName, sectionName, propertyNamespace, propertyName, new HashSet());
+ }
+
+ public static OfficeStyle queryStyleByProperties(final OfficeStylesCollection predefCollection,
+ final String styleFamily,
+ final String sectionName,
+ final ArrayList propertyNamespace,
+ final ArrayList propertyName,
+ final ArrayList propertyValues)
+ {
+ if (propertyNamespace.size() != propertyName.size())
+ {
+ return null;
+ }
+ final OfficeStyle[] styles = predefCollection.getAutomaticStyles().getAllStyles();
+ for (int i = 0; i < styles.length; i++)
+ {
+ final OfficeStyle officeStyle = styles[i];
+ if (officeStyle.getStyleFamily().equals(styleFamily))
+ {
+ final Element section = officeStyle.findFirstChild(OfficeNamespaces.STYLE_NS, sectionName);
+ if (section != null)
+ {
+ int j = 0;
+ for (; j < propertyNamespace.size(); j++)
+ {
+ final String ns = (String) propertyNamespace.get(j);
+ final String prop = (String) propertyName.get(j);
+ final Object obj = section.getAttribute(ns, prop);
+ final Object value = propertyValues.get(j);
+ if (obj == null || value == null)
+ {
+ continue;
+ }
+ if (!propertyValues.get(j).equals(obj))
+ {
+ break;
+ }
+ }
+ if (j == propertyName.size())
+ {
+ return officeStyle;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ private static String queryStyle(final OfficeStylesCollection predefCollection,
+ final String styleFamily,
+ final String styleName,
+ final String sectionName,
+ final String propertyNamespace,
+ final String propertyName,
+ final Set seenStyles)
+ {
+ if (seenStyles.contains(styleName))
+ {
+ return null;
+ }
+ seenStyles.add(styleName);
+
+ final OfficeStyle style = predefCollection.getStyle(styleFamily, styleName);
+ if (style == null)
+ {
+ return null; // no such style
+
+ }
+ final Element section = style.findFirstChild(OfficeNamespaces.STYLE_NS, sectionName);
+ if (section != null)
+ {
+ final Object attribute = section.getAttribute(propertyNamespace, propertyName);
+ if (attribute != null)
+ {
+ return String.valueOf(attribute);
+ }
+ }
+ final String parent = style.getStyleParent();
+ if (parent == null)
+ {
+ return null;
+ }
+ return queryStyle(predefCollection, styleFamily, parent, sectionName, propertyNamespace, propertyName, seenStyles);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/StylesWriter.java b/reportbuilder/java/com/sun/star/report/pentaho/output/StylesWriter.java
new file mode 100644
index 000000000000..54b7d0d0159c
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/StylesWriter.java
@@ -0,0 +1,390 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.DataStyle;
+import com.sun.star.report.pentaho.model.FontFaceDeclsSection;
+import com.sun.star.report.pentaho.model.FontFaceElement;
+import com.sun.star.report.pentaho.model.OfficeMasterPage;
+import com.sun.star.report.pentaho.model.OfficeMasterStyles;
+import com.sun.star.report.pentaho.model.OfficeStyle;
+import com.sun.star.report.pentaho.model.OfficeStyles;
+import com.sun.star.report.pentaho.model.OfficeStylesCollection;
+import com.sun.star.report.pentaho.model.PageLayout;
+import com.sun.star.report.pentaho.model.RawText;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.jfree.layouting.namespace.Namespaces;
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.JFreeReportBoot;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Node;
+import org.jfree.report.structure.Section;
+import org.jfree.report.structure.StaticText;
+
+import org.pentaho.reporting.libraries.xmlns.common.AttributeList;
+import org.pentaho.reporting.libraries.xmlns.writer.DefaultTagDescription;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriter;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriterSupport;
+
+
+/**
+ * This class writes the style collection into a 'styles.xml' document.
+ *
+ * @author Thomas Morgner
+ * @since 09.03.2007
+ */
+public class StylesWriter
+{
+
+ private final XmlWriter xmlWriter;
+ private final boolean writeOpeningTag;
+
+ public StylesWriter(final Writer writer)
+ {
+ final DefaultTagDescription tagDescription = new DefaultTagDescription();
+ tagDescription.configure(JFreeReportBoot.getInstance().getGlobalConfig(),
+ OfficeDocumentReportTarget.TAG_DEF_PREFIX);
+
+ this.xmlWriter = new XmlWriter(writer, tagDescription);
+ this.xmlWriter.setAlwaysAddNamespace(true);
+ this.writeOpeningTag = true;
+ }
+
+ public StylesWriter(final XmlWriter xmlWriter)
+ {
+ this.xmlWriter = xmlWriter;
+ this.writeOpeningTag = false;
+ }
+
+ public void writeContentStyles(final OfficeStylesCollection predefined,
+ final OfficeStylesCollection globals)
+ throws IOException, ReportProcessingException
+ {
+ writeFontFaces(new OfficeStylesCollection[]
+ {
+ globals
+ });
+ writeAutomaticStylesSection(new OfficeStylesCollection[]
+ {
+ globals
+ });
+ }
+
+ public void writeGlobalStyles(final OfficeStylesCollection predefined,
+ final OfficeStylesCollection globals)
+ throws IOException, ReportProcessingException
+ {
+ if (writeOpeningTag)
+ {
+ performWriteRootTag();
+ }
+
+ writeFontFaces(new OfficeStylesCollection[]
+ {
+ globals
+ });
+ writeCommonStylesSection(new OfficeStylesCollection[]
+ {
+ globals
+ });
+ writeAutomaticStylesSection(new OfficeStylesCollection[]
+ {
+ globals
+ });
+ writeMasterStylesSection(new OfficeStylesCollection[]
+ {
+ globals
+ });
+
+ if (writeOpeningTag)
+ {
+ xmlWriter.writeCloseTag();
+ }
+ }
+
+ private void writeMasterStylesSection(final OfficeStylesCollection[] osc)
+ throws IOException
+ {
+ xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, "master-styles", XmlWriterSupport.OPEN);
+ for (int sci = 0; sci < osc.length; sci++)
+ {
+ final OfficeStylesCollection collection = osc[sci];
+ final OfficeMasterStyles officeStyles = collection.getMasterStyles();
+ final OfficeMasterPage[] officeMasterPages = officeStyles.getAllMasterPages();
+ for (int i = 0; i < officeMasterPages.length; i++)
+ {
+ final OfficeMasterPage masterPage = officeMasterPages[i];
+ writeSection(masterPage);
+ }
+
+ writeSectionChilds(officeStyles.getOtherNodes().getNodeArray());
+ }
+
+ xmlWriter.writeCloseTag();
+ }
+
+ private void writeCommonStylesSection(final OfficeStylesCollection[] osc)
+ throws IOException
+ {
+ xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, "styles", XmlWriterSupport.OPEN);
+
+ for (int sci = 0; sci < osc.length; sci++)
+ {
+ final OfficeStylesCollection collection = osc[sci];
+ final OfficeStyles officeStyles = collection.getCommonStyles();
+ writeStyles(officeStyles);
+ }
+
+ xmlWriter.writeCloseTag();
+ }
+
+ private void writeAutomaticStylesSection(final OfficeStylesCollection[] osc)
+ throws IOException
+ {
+ xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, "automatic-styles", XmlWriterSupport.OPEN);
+ for (int sci = 0; sci < osc.length; sci++)
+ {
+ final OfficeStylesCollection collection = osc[sci];
+ final OfficeStyles officeStyles = collection.getAutomaticStyles();
+ writeStyles(officeStyles);
+ }
+
+ xmlWriter.writeCloseTag();
+ }
+
+ private void writeFontFaces(final OfficeStylesCollection[] osc)
+ throws IOException
+ {
+ xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, "font-face-decls", XmlWriterSupport.OPEN);
+
+ final TreeMap fontFaces = new TreeMap();
+ for (int sci = 0; sci < osc.length; sci++)
+ {
+ final OfficeStylesCollection collection = osc[sci];
+ final FontFaceDeclsSection fontFaceDecls = collection.getFontFaceDecls();
+ final FontFaceElement[] fontFaceElements = fontFaceDecls.getAllFontFaces();
+ for (int i = 0; i < fontFaceElements.length; i++)
+ {
+ final FontFaceElement element = fontFaceElements[i];
+ fontFaces.put(element.getStyleName(), element);
+ }
+ }
+
+ final Iterator values = fontFaces.values().iterator();
+ while (values.hasNext())
+ {
+ final FontFaceElement element = (FontFaceElement) values.next();
+ writeElement(element);
+ }
+
+ xmlWriter.writeCloseTag();
+ }
+
+ private void writeStyles(final OfficeStyles styles)
+ throws IOException
+ {
+ final OfficeStyle[] allStyles = styles.getAllStyles();
+ for (int i = 0; i < allStyles.length; i++)
+ {
+ final OfficeStyle style = allStyles[i];
+ writeSection(style);
+ }
+
+ final DataStyle[] allDataStyles = styles.getAllDataStyles();
+ for (int i = 0; i < allDataStyles.length; i++)
+ {
+ final DataStyle style = allDataStyles[i];
+ writeSection(style);
+ }
+
+ final PageLayout[] allPageStyles = styles.getAllPageStyles();
+ for (int i = 0; i < allPageStyles.length; i++)
+ {
+ final PageLayout style = allPageStyles[i];
+ writeSection(style);
+ }
+
+ writeSectionChilds(styles.getOtherStyles());
+ }
+
+ private void writeElement(final Element element)
+ throws IOException
+ {
+ final String type = element.getType();
+ final String namespace = element.getNamespace();
+ final AttributeList attrList = buildAttributeList(element.getAttributeMap());
+ xmlWriter.writeTag(namespace, type, attrList, XmlWriterSupport.CLOSE);
+ }
+
+ private void writeSection(final Section section)
+ throws IOException
+ {
+ final String type = section.getType();
+ final String namespace = section.getNamespace();
+ final AttributeList attrList = buildAttributeList(section.getAttributeMap());
+ if (section.getNodeCount() == 0)
+ {
+ xmlWriter.writeTag(namespace, type, attrList, XmlWriterSupport.CLOSE);
+ return;
+ }
+
+ xmlWriter.writeTag(namespace, type, attrList, XmlWriterSupport.OPEN);
+ writeSectionChilds(section.getNodeArray());
+
+ xmlWriter.writeCloseTag();
+ }
+
+ private void writeSectionChilds(final Node[] nodes)
+ throws IOException
+ {
+ for (int i = 0; i < nodes.length; i++)
+ {
+ final Node node = nodes[i];
+ if (node instanceof Section)
+ {
+ writeSection((Section) node);
+ }
+ else if (node instanceof Element)
+ {
+ writeElement((Element) node);
+ }
+ else if (node instanceof RawText)
+ {
+ final RawText text = (RawText) node;
+ xmlWriter.writeText(text.getText());
+ }
+ else if (node instanceof StaticText)
+ {
+ final StaticText text = (StaticText) node;
+ xmlWriter.writeTextNormalized(text.getText(), false);
+ }
+ }
+ }
+
+ protected AttributeList buildAttributeList(final AttributeMap attrs)
+ {
+ final AttributeList attrList = new AttributeList();
+ final String[] namespaces = attrs.getNameSpaces();
+ for (int i = 0; i < namespaces.length; i++)
+ {
+ final String attrNamespace = namespaces[i];
+ if (isFilteredNamespace(attrNamespace))
+ {
+ continue;
+ }
+
+ final Map localAttributes = attrs.getAttributes(attrNamespace);
+ final Iterator entries = localAttributes.entrySet().iterator();
+ while (entries.hasNext())
+ {
+ final Map.Entry entry = (Map.Entry) entries.next();
+ final String key = String.valueOf(entry.getKey());
+ attrList.setAttribute(attrNamespace, key, String.valueOf(entry.getValue()));
+ }
+ }
+ return attrList;
+ }
+
+ protected boolean isFilteredNamespace(final String namespace)
+ {
+ if (Namespaces.LIBLAYOUT_NAMESPACE.equals(namespace))
+ {
+ return true;
+ }
+ if (JFreeReportInfo.REPORT_NAMESPACE.equals(namespace))
+ {
+ return true;
+ }
+ if (JFreeReportInfo.COMPATIBILITY_NAMESPACE.equals(namespace))
+ {
+ return true;
+ }
+ if (OfficeNamespaces.OOREPORT_NS.equals(namespace))
+ {
+ return true;
+ }
+ return false;
+ }
+
+ private void performWriteRootTag()
+ throws IOException
+ {
+ final AttributeList rootAttributes = new AttributeList();
+ rootAttributes.addNamespaceDeclaration("office",
+ OfficeNamespaces.OFFICE_NS);
+ rootAttributes.addNamespaceDeclaration("style", OfficeNamespaces.STYLE_NS);
+ rootAttributes.addNamespaceDeclaration("text", OfficeNamespaces.TEXT_NS);
+ rootAttributes.addNamespaceDeclaration("table", OfficeNamespaces.TABLE_NS);
+ rootAttributes.addNamespaceDeclaration("draw", OfficeNamespaces.DRAWING_NS);
+ rootAttributes.addNamespaceDeclaration("fo", OfficeNamespaces.FO_NS);
+ rootAttributes.addNamespaceDeclaration("xlink", OfficeNamespaces.XLINK_NS);
+ rootAttributes.addNamespaceDeclaration("dc", OfficeNamespaces.PURL_NS);
+ rootAttributes.addNamespaceDeclaration("meta", OfficeNamespaces.META_NS);
+ rootAttributes.addNamespaceDeclaration("number",
+ OfficeNamespaces.DATASTYLE_NS);
+ rootAttributes.addNamespaceDeclaration("svg", OfficeNamespaces.SVG_NS);
+ rootAttributes.addNamespaceDeclaration("chart", OfficeNamespaces.CHART_NS);
+ rootAttributes.addNamespaceDeclaration("chartooo", OfficeNamespaces.CHARTOOO_NS);
+ rootAttributes.addNamespaceDeclaration("dr3d", OfficeNamespaces.DR3D_NS);
+ rootAttributes.addNamespaceDeclaration("math", OfficeNamespaces.MATHML_NS);
+ rootAttributes.addNamespaceDeclaration("form", OfficeNamespaces.FORM_NS);
+ rootAttributes.addNamespaceDeclaration("script",
+ OfficeNamespaces.SCRIPT_NS);
+ rootAttributes.addNamespaceDeclaration("ooo", OfficeNamespaces.OO2004_NS);
+ rootAttributes.addNamespaceDeclaration("ooow", OfficeNamespaces.OOW2004_NS);
+ rootAttributes.addNamespaceDeclaration("oooc", OfficeNamespaces.OOC2004_NS);
+ rootAttributes.addNamespaceDeclaration("dom",
+ OfficeNamespaces.XML_EVENT_NS);
+ rootAttributes.addNamespaceDeclaration("xforms",
+ OfficeNamespaces.XFORMS_NS);
+ rootAttributes.addNamespaceDeclaration("xsd", OfficeNamespaces.XSD_NS);
+ rootAttributes.addNamespaceDeclaration("xsi", OfficeNamespaces.XSI_NS);
+ rootAttributes.addNamespaceDeclaration("grddl", OfficeNamespaces.GRDDL_NS);
+ rootAttributes.setAttribute(OfficeNamespaces.OFFICE_NS, "version",
+ OfficeDocumentReportTarget.ODF_VERSION);
+
+ this.xmlWriter.writeXmlDeclaration("UTF-8");
+ this.xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS,
+ "document-styles", rootAttributes, XmlWriterSupport.OPEN);
+ }
+
+ public void close()
+ throws IOException
+ {
+ xmlWriter.close();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/chart/ChartRawReportProcessor.java b/reportbuilder/java/com/sun/star/report/pentaho/output/chart/ChartRawReportProcessor.java
new file mode 100644
index 000000000000..72d799e1a204
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/chart/ChartRawReportProcessor.java
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output.chart;
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.OutputRepository;
+
+import org.jfree.report.DataSourceException;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.flow.ReportJob;
+import org.jfree.report.flow.ReportStructureRoot;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.SinglePassReportProcessor;
+
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class ChartRawReportProcessor extends SinglePassReportProcessor
+{
+
+ private final OutputRepository outputRepository;
+ private final String targetName;
+ private final InputRepository inputRepository;
+ private final ImageService imageService;
+ private final DataSourceFactory dataSourceFactory;
+
+ public ChartRawReportProcessor(final InputRepository inputRepository,
+ final OutputRepository outputRepository,
+ final String targetName,
+ final ImageService imageService,
+ final DataSourceFactory dataSourceFactory)
+ {
+ if (inputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ if (outputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ if (targetName == null)
+ {
+ throw new NullPointerException();
+ }
+ if (imageService == null)
+ {
+ throw new NullPointerException();
+ }
+ if (dataSourceFactory == null)
+ {
+ throw new NullPointerException();
+ }
+ this.targetName = targetName;
+ this.inputRepository = inputRepository;
+ this.outputRepository = outputRepository;
+ this.imageService = imageService;
+ this.dataSourceFactory = dataSourceFactory;
+ }
+
+ protected ReportTarget createReportTarget(final ReportJob job)
+ throws ReportProcessingException
+ {
+ final ReportStructureRoot report = job.getReportStructureRoot();
+ final ResourceManager resourceManager = report.getResourceManager();
+
+ return new ChartRawReportTarget(job, resourceManager, report.getBaseResource(),
+ inputRepository, outputRepository, targetName, imageService, dataSourceFactory);
+ }
+
+ public void processReport(final ReportJob job) throws ReportDataFactoryException, DataSourceException,
+ ReportProcessingException
+ {
+ final ReportTarget reportTarget = createReportTarget(job);
+ processReportRun(job, reportTarget);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/chart/ChartRawReportTarget.java b/reportbuilder/java/com/sun/star/report/pentaho/output/chart/ChartRawReportTarget.java
new file mode 100644
index 000000000000..2013b1c492ff
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/chart/ChartRawReportTarget.java
@@ -0,0 +1,266 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output.chart;
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.PentahoReportEngineMetaData;
+import com.sun.star.report.pentaho.output.OfficeDocumentReportTarget;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataFlags;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.flow.ReportJob;
+import org.jfree.report.flow.ReportStructureRoot;
+import org.jfree.report.flow.ReportTargetUtil;
+
+import org.pentaho.reporting.libraries.base.util.IOUtils;
+import org.pentaho.reporting.libraries.resourceloader.ResourceKey;
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+import org.pentaho.reporting.libraries.xmlns.common.AttributeList;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriter;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriterSupport;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class ChartRawReportTarget extends OfficeDocumentReportTarget
+{
+
+ private boolean inFilterElements = false;
+ private boolean tableRowsStarted = false;
+ private int tableCount = 0;
+ private int closeTags = 0;
+
+ public ChartRawReportTarget(final ReportJob reportJob,
+ final ResourceManager resourceManager,
+ final ResourceKey baseResource,
+ final InputRepository inputRepository,
+ final OutputRepository outputRepository,
+ final String target,
+ final ImageService imageService,
+ final DataSourceFactory dataSourceFactory)
+ throws ReportProcessingException
+ {
+ super(reportJob, resourceManager, baseResource, inputRepository, outputRepository, target, imageService, dataSourceFactory);
+ }
+
+ protected String getTargetMimeType()
+ {
+ return "application/vnd.oasis.opendocument.chart";
+ }
+
+ protected String getStartContent()
+ {
+ return "chart";
+ }
+
+ public String getExportDescriptor()
+ {
+ return "raw/" + PentahoReportEngineMetaData.OPENDOCUMENT_CHART;
+ }
+
+ protected void startContent(final AttributeMap attrs) throws IOException, DataSourceException, ReportProcessingException
+ {
+ inFilterElements = false;
+ closeTags = 0;
+ tableCount = 0;
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, getStartContent(), null, XmlWriterSupport.OPEN);
+ writeNullDate();
+ ++closeTags;
+ }
+
+ protected void endContent(final AttributeMap attrs) throws IOException, DataSourceException, ReportProcessingException
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+ //xmlWriter.writeCloseTag();
+ while (closeTags > 0)
+ {
+ xmlWriter.writeCloseTag();
+ --closeTags;
+ }
+ }
+
+ protected void startReportSection(final AttributeMap attrs, final int role)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ }
+
+ protected void endReportSection(final AttributeMap attrs, final int role)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ }
+
+ protected void startOther(final AttributeMap attrs) throws IOException, DataSourceException, ReportProcessingException
+ {
+ final String namespace = ReportTargetUtil.getNamespaceFromAttribute(attrs);
+ if (!isFilteredNamespace(namespace))
+ {
+ final String elementType = ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+ try
+ {
+ processElement(attrs, namespace, elementType);
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException(OfficeDocumentReportTarget.FAILED, e);
+ }
+ }
+ }
+
+ private boolean isFiltered(final String elementType)
+ {
+ return OfficeToken.TABLE_HEADER_COLUMNS.equals(elementType) || OfficeToken.TABLE_HEADER_ROWS.equals(elementType) || OfficeToken.TABLE_COLUMNS.equals(elementType);
+ }
+
+ protected void endOther(final AttributeMap attrs) throws IOException, DataSourceException, ReportProcessingException
+ {
+ if (tableRowsStarted && getCurrentRole() == ROLE_TEMPLATE)
+ {
+ return;
+ }
+ final String namespace = ReportTargetUtil.getNamespaceFromAttribute(attrs);
+ if (!isFilteredNamespace(namespace))
+ {
+ final String elementType = ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+ // if this is the report namespace, write out a table definition ..
+ if (OfficeNamespaces.TABLE_NS.equals(namespace))
+ {
+ if (OfficeToken.TABLE.equals(elementType) || OfficeToken.TABLE_ROWS.equals(elementType))
+ {
+ return;
+ }
+ else if (isFiltered(elementType))
+ {
+ inFilterElements = false;
+ if (tableCount > 1)
+ {
+ return;
+ }
+ }
+ }
+ else if (OfficeNamespaces.CHART_NS.equals(namespace) && "chart".equals(elementType))
+ {
+ return;
+ }
+ if (inFilterElements && tableCount > 1)
+ {
+ return;
+ }
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeCloseTag();
+ --closeTags;
+ }
+ }
+
+ public void processContent(final DataFlags value)
+ throws DataSourceException, ReportProcessingException
+ {
+ if (!(tableRowsStarted && getCurrentRole() == ROLE_TEMPLATE))
+ {
+ super.processContent(value);
+ }
+ }
+
+ private void processElement(final AttributeMap attrs, final String namespace, final String elementType)
+ throws IOException, ReportProcessingException
+ {
+ if (tableRowsStarted && getCurrentRole() == ROLE_TEMPLATE)
+ {
+ return;
+ }
+ if (OfficeNamespaces.TABLE_NS.equals(namespace))
+ {
+ if (OfficeToken.TABLE.equals(elementType))
+ {
+ tableCount += 1;
+ if (tableCount > 1)
+ {
+ return;
+ }
+ }
+ else if (OfficeToken.TABLE_ROWS.equals(elementType))
+ {
+ if (tableCount > 1)
+ {
+ return;
+ }
+ tableRowsStarted = true;
+ }
+ else if (isFiltered(elementType))
+ {
+ inFilterElements = true;
+ if (tableCount > 1)
+ {
+ return;
+ }
+ }
+ }
+ if (inFilterElements && tableCount > 1)
+ {
+ return;
+ }
+
+ // All styles have to be processed or you will loose the paragraph-styles and inline text-styles.
+ // ..
+ performStyleProcessing(attrs);
+
+ final AttributeList attrList = buildAttributeList(attrs);
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeTag(namespace, elementType, attrList, XmlWriter.OPEN);
+ ++closeTags;
+ // System.out.println("elementType = " + elementType);
+ }
+ // /////////////////////////////////////////////////////////////////////////
+
+ public void processText(final String text) throws DataSourceException, ReportProcessingException
+ {
+ if (inFilterElements && tableCount > 1)
+ {
+ return;
+ }
+ super.processText(text);
+ }
+
+ public void endReport(final ReportStructureRoot report)
+ throws DataSourceException, ReportProcessingException
+ {
+ super.endReport(report);
+ copyMeta();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/spreadsheet/SpreadsheetRawReportProcessor.java b/reportbuilder/java/com/sun/star/report/pentaho/output/spreadsheet/SpreadsheetRawReportProcessor.java
new file mode 100644
index 000000000000..6876ea5be028
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/spreadsheet/SpreadsheetRawReportProcessor.java
@@ -0,0 +1,121 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output.spreadsheet;
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.pentaho.PentahoFormulaContext;
+
+import org.jfree.report.DataSourceException;
+import org.jfree.report.ReportDataFactoryException;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.data.ReportContextImpl;
+import org.jfree.report.flow.AbstractReportProcessor;
+import org.jfree.report.flow.ReportContext;
+import org.jfree.report.flow.ReportJob;
+import org.jfree.report.flow.ReportStructureRoot;
+import org.jfree.report.flow.ReportTarget;
+
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+
+/**
+ * @author Michael D'Amour
+ */
+public class SpreadsheetRawReportProcessor extends AbstractReportProcessor
+{
+
+ private final OutputRepository outputRepository;
+ private final String targetName;
+ private final InputRepository inputRepository;
+ private final ImageService imageService;
+ private final DataSourceFactory dataSourceFactory;
+
+ public SpreadsheetRawReportProcessor(final InputRepository inputRepository,
+ final OutputRepository outputRepository,
+ final String targetName,
+ final ImageService imageService,
+ final DataSourceFactory dataSourceFactory)
+ {
+ if (outputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ if (targetName == null)
+ {
+ throw new NullPointerException();
+ }
+ if (imageService == null)
+ {
+ throw new NullPointerException();
+ }
+ if (inputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ if (dataSourceFactory == null)
+ {
+ throw new NullPointerException();
+ }
+
+ this.targetName = targetName;
+ this.inputRepository = inputRepository;
+ this.outputRepository = outputRepository;
+ this.imageService = imageService;
+ this.dataSourceFactory = dataSourceFactory;
+ }
+
+ protected ReportTarget createReportTarget(final ReportJob job) throws ReportProcessingException
+ {
+ final ReportStructureRoot report = job.getReportStructureRoot();
+ final ResourceManager resourceManager = report.getResourceManager();
+ return new SpreadsheetRawReportTarget(job, resourceManager, report.getBaseResource(), inputRepository, outputRepository, targetName, imageService, dataSourceFactory);
+ }
+
+ public void processReport(final ReportJob job) throws ReportDataFactoryException, DataSourceException,
+ ReportProcessingException
+ {
+ final ReportTarget reportTarget = createReportTarget(job);
+ // first run: collect table cell sizes for all tables
+ processReportRun(job, reportTarget);
+ // second run: uses table cell data to output a single uniform table
+ processReportRun(job, reportTarget);
+ }
+
+ protected ReportContext createReportContext(final ReportJob job,
+ final ReportTarget target)
+ {
+ final ReportContext context = super.createReportContext(job, target);
+ if (context instanceof ReportContextImpl)
+ {
+ final ReportContextImpl impl = (ReportContextImpl) context;
+ impl.setFormulaContext(new PentahoFormulaContext(impl.getFormulaContext(), job.getConfiguration()));
+ }
+ return context;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java b/reportbuilder/java/com/sun/star/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java
new file mode 100644
index 000000000000..baa43e687ccb
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/spreadsheet/SpreadsheetRawReportTarget.java
@@ -0,0 +1,969 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output.spreadsheet;
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.PentahoReportEngineMetaData;
+import com.sun.star.report.pentaho.model.OfficeMasterPage;
+import com.sun.star.report.pentaho.model.OfficeMasterStyles;
+import com.sun.star.report.pentaho.model.OfficeStyle;
+import com.sun.star.report.pentaho.model.OfficeStyles;
+import com.sun.star.report.pentaho.model.OfficeStylesCollection;
+import com.sun.star.report.pentaho.model.PageSection;
+import com.sun.star.report.pentaho.output.OfficeDocumentReportTarget;
+import com.sun.star.report.pentaho.output.StyleUtilities;
+import com.sun.star.report.pentaho.output.text.MasterPageFactory;
+import com.sun.star.report.pentaho.styles.LengthCalculator;
+
+import java.io.IOException;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.jfree.layouting.input.style.values.CSSNumericType;
+import org.jfree.layouting.input.style.values.CSSNumericValue;
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataFlags;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.flow.ReportJob;
+import org.jfree.report.flow.ReportStructureRoot;
+import org.jfree.report.flow.ReportTargetUtil;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+import org.jfree.report.util.IntegerCache;
+
+import org.pentaho.reporting.libraries.resourceloader.ResourceKey;
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+import org.pentaho.reporting.libraries.xmlns.common.AttributeList;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriter;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriterSupport;
+
+
+/**
+ * Creation-Date: 03.11.2007
+ *
+ * @author Michael D'Amour
+ */
+public class SpreadsheetRawReportTarget extends OfficeDocumentReportTarget
+{
+
+ private static final String[] FOPROPS = new String[]
+ {
+ "letter-spacing", "font-variant", "text-transform"
+ };
+ private static final String NUMBERCOLUMNSSPANNED = "number-columns-spanned";
+ private static final String[] STYLEPROPS = new String[]
+ {
+ "text-combine", "font-pitch-complex", "text-rotation-angle", "font-name", "text-blinking", "letter-kerning", "text-combine-start-char", "text-combine-end-char", "text-position", "text-scale"
+ };
+ private static final int CELL_WIDTH_FACTOR = 10000;
+ private static final String TRANSPARENT = "transparent";
+ private boolean paragraphFound = false;
+ private boolean paragraphHandled = false;
+
+ /**
+ * This class represents a column boundary, not in width, but it's actual boundary location. One of the motivations
+ * for creating this class was to be able to record the boundaries for each incoming table while consuming as few
+ * objects/memory as possible.
+ */
+ private static class ColumnBoundary implements Comparable
+ {
+
+ private final Set tableIndices;
+ private final long boundary;
+
+ private ColumnBoundary(final long boundary)
+ {
+ this.tableIndices = new HashSet();
+ this.boundary = boundary;
+ }
+
+ public void addTableIndex(final int table)
+ {
+ tableIndices.add(IntegerCache.getInteger(table));
+ }
+
+ public float getBoundary()
+ {
+ return boundary;
+ }
+
+ public boolean isContainedByTable(final int table)
+ {
+ final Integer index = IntegerCache.getInteger(table);
+ return tableIndices.contains(index);
+ }
+
+ public int compareTo(final Object arg0)
+ {
+ if (arg0.equals(this))
+ {
+ return 0;
+ }
+ if (arg0 instanceof ColumnBoundary)
+ {
+ if (boundary > ((ColumnBoundary) arg0).boundary)
+ {
+ return 1;
+ }
+ else
+ {
+ return -1;
+ }
+ }
+ return 1;
+ }
+
+ public boolean equals(final Object obj)
+ {
+ return obj instanceof ColumnBoundary && ((ColumnBoundary) obj).boundary == boundary;
+ }
+
+ public int hashCode()
+ {
+ assert false : "hashCode not designed";
+ return 42; // any arbitrary constant will do
+ }
+ }
+ private String tableBackgroundColor; // null means transparent ...
+ private static final ColumnBoundary[] EMPTY_COLBOUNDS = new ColumnBoundary[0];
+ private boolean elementBoundaryCollectionPass;
+ private boolean oleHandled;
+ private final List columnBoundaryList;
+ private long currentRowBoundaryMarker;
+ private ColumnBoundary[] sortedBoundaryArray;
+ private ColumnBoundary[] boundariesForTableArray;
+ private int tableCounter;
+ private int columnCounter;
+ private int columnSpanCounter;
+ private int currentSpan = 0;
+ private String unitsOfMeasure;
+ final private List shapes;
+ final private List ole;
+ final private List rowHeights;
+
+ public SpreadsheetRawReportTarget(final ReportJob reportJob,
+ final ResourceManager resourceManager,
+ final ResourceKey baseResource,
+ final InputRepository inputRepository,
+ final OutputRepository outputRepository,
+ final String target,
+ final ImageService imageService,
+ final DataSourceFactory dataSourceFactory)
+ throws ReportProcessingException
+ {
+ super(reportJob, resourceManager, baseResource, inputRepository, outputRepository, target, imageService, dataSourceFactory);
+ columnBoundaryList = new ArrayList();
+ elementBoundaryCollectionPass = true;
+ rowHeights = new ArrayList();
+ shapes = new ArrayList();
+ ole = new ArrayList();
+ oleHandled = false;
+ }
+
+ public void startOther(final AttributeMap attrs) throws DataSourceException, ReportProcessingException
+ {
+ if (ReportTargetUtil.isElementOfType(JFreeReportInfo.REPORT_NAMESPACE, OfficeToken.OBJECT_OLE, attrs))
+ {
+ if (isElementBoundaryCollectionPass() && getCurrentRole() != ROLE_TEMPLATE)
+ {
+ ole.add(attrs);
+ }
+ oleHandled = true;
+ return;
+ }
+ final String namespace = ReportTargetUtil.getNamespaceFromAttribute(attrs);
+ if (isRepeatingSection() || isFilteredNamespace(namespace))
+ {
+ return;
+ }
+
+ final String elementType = ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+ if (OfficeNamespaces.TEXT_NS.equals(namespace) && OfficeToken.P.equals(elementType) && !paragraphHandled)
+ {
+ paragraphFound = true;
+ return;
+ }
+
+ if (OfficeNamespaces.DRAWING_NS.equals(namespace) && OfficeToken.FRAME.equals(elementType))
+ {
+ if (isElementBoundaryCollectionPass() && getCurrentRole() != ROLE_TEMPLATE)
+ {
+ final LengthCalculator len = new LengthCalculator();
+ for (int i = 0; i < rowHeights.size(); i++)
+ {
+ len.add((CSSNumericValue) rowHeights.get(i));
+ // val += ((CSSNumericValue)rowHeights.get(i)).getValue();
+ }
+
+ rowHeights.clear();
+ final CSSNumericValue currentRowHeight = len.getResult();
+ rowHeights.add(currentRowHeight);
+ attrs.setAttribute(OfficeNamespaces.DRAWING_NS, "z-index", String.valueOf(shapes.size()));
+ final String y = (String) attrs.getAttribute(OfficeNamespaces.SVG_NS, "y");
+ if (y != null)
+ {
+ len.add(parseLength(y));
+ final CSSNumericValue currentY = len.getResult();
+ attrs.setAttribute(OfficeNamespaces.SVG_NS, "y", currentY.getValue() + currentY.getType().getType());
+ }
+ shapes.add(attrs);
+ }
+ return;
+ }
+ if (oleHandled)
+ {
+ if (isElementBoundaryCollectionPass() && getCurrentRole() != ROLE_TEMPLATE)
+ {
+ ole.add(attrs);
+ }
+ return;
+ }
+
+ // if this is the report namespace, write out a table definition ..
+ if (OfficeNamespaces.TABLE_NS.equals(namespace) && OfficeToken.TABLE.equals(elementType))
+ {
+ // whenever we see a new table, we increment our tableCounter
+ // this is used to keep tracked of the boundary conditions per table
+ tableCounter++;
+ }
+
+ if (isElementBoundaryCollectionPass())
+ {
+ collectBoundaryForElement(attrs);
+ }
+ else
+ // if (!isElementBoundaryCollectionPass())
+ {
+ try
+ {
+ processElement(attrs, namespace, elementType);
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException(OfficeDocumentReportTarget.FAILED, e);
+ }
+ }
+ }
+
+ protected void startReportSection(final AttributeMap attrs, final int role) throws IOException, DataSourceException, ReportProcessingException
+ {
+ if ((role == OfficeDocumentReportTarget.ROLE_SPREADSHEET_PAGE_HEADER || role == OfficeDocumentReportTarget.ROLE_SPREADSHEET_PAGE_FOOTER) && (!PageSection.isPrintWithReportHeader(attrs) || !PageSection.isPrintWithReportFooter(attrs)))
+ {
+ startBuffering(new OfficeStylesCollection(), true);
+ }
+ else
+ {
+ super.startReportSection(attrs, role);
+ }
+ }
+
+ protected void endReportSection(final AttributeMap attrs, final int role) throws IOException, DataSourceException, ReportProcessingException
+ {
+ if ((role == OfficeDocumentReportTarget.ROLE_SPREADSHEET_PAGE_HEADER || role == OfficeDocumentReportTarget.ROLE_SPREADSHEET_PAGE_FOOTER) && (!PageSection.isPrintWithReportHeader(attrs) || !PageSection.isPrintWithReportFooter(attrs)))
+ {
+ finishBuffering();
+ }
+ else
+ {
+ super.endReportSection(attrs, role);
+ }
+ }
+
+ private void handleParagraph()
+ {
+ if (paragraphFound)
+ {
+ try
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeTag(OfficeNamespaces.TEXT_NS, OfficeToken.P, null, XmlWriterSupport.OPEN);
+ paragraphHandled = true;
+ paragraphFound = false;
+ }
+ catch (IOException ex)
+ {
+ LOGGER.error("ReportProcessing failed", ex);
+ }
+ }
+ }
+
+ private void processElement(final AttributeMap attrs, final String namespace, final String elementType)
+ throws IOException, ReportProcessingException
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE, attrs))
+ {
+ // a new table means we must clear our "calculated" table boundary array cache
+ boundariesForTableArray = null;
+
+ final String tableStyle = (String) attrs.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ if (tableStyle == null)
+ {
+ tableBackgroundColor = null;
+ }
+ else
+ {
+ final Object raw = StyleUtilities.queryStyle(getPredefinedStylesCollection(), OfficeToken.TABLE, tableStyle,
+ "table-properties", OfficeNamespaces.FO_NS, OfficeToken.BACKGROUND_COLOR);
+ if (raw == null || TRANSPARENT.equals(raw))
+ {
+ tableBackgroundColor = null;
+ }
+ else
+ {
+ tableBackgroundColor = String.valueOf(raw);
+ }
+ }
+ return;
+ }
+
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_COLUMN, attrs) || ReportTargetUtil.isElementOfType(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_COLUMNS, attrs))
+ {
+ return;
+ }
+
+ // covered-table-cell elements may appear in the input from row or column spans. In the event that we hit a
+ // column-span we simply ignore these elements because we are going to adjust the span to fit the uniform table.
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.TABLE_NS, OfficeToken.COVERED_TABLE_CELL, attrs))
+ {
+ if (columnSpanCounter > 0)
+ {
+ columnSpanCounter--;
+ }
+
+ if (columnSpanCounter == 0)
+ {
+ // if we weren't expecting a covered-table-cell, let's use it, it's probably from a row-span
+ columnCounter++;
+ final int span = getColumnSpanForCell(tableCounter, columnCounter, 1);
+ // use the calculated span for the column in the uniform table to create any additional covered-table-cell
+ // elements
+ for (int i = 0; i < span; i++)
+ {
+ xmlWriter.writeTag(namespace, OfficeToken.COVERED_TABLE_CELL, null, XmlWriter.CLOSE);
+ }
+ }
+ return;
+ }
+
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_ROW, attrs))
+ {
+ // a new row means our column counter gets reset
+ columnCounter = 0;
+ // Lets make sure the color of the table is ok ..
+ if (tableBackgroundColor != null)
+ {
+ final String styleName = (String) attrs.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ final OfficeStyle style = deriveStyle(OfficeToken.TABLE_ROW, styleName);
+ Element tableRowProperties = style.getTableRowProperties();
+ if (tableRowProperties == null)
+ {
+ tableRowProperties = new Section();
+ tableRowProperties.setNamespace(OfficeNamespaces.STYLE_NS);
+ tableRowProperties.setType("table-row-properties");
+ tableRowProperties.setAttribute(OfficeNamespaces.FO_NS, OfficeToken.BACKGROUND_COLOR, tableBackgroundColor);
+ style.addNode(tableRowProperties);
+ }
+ else
+ {
+ final Object oldValue = tableRowProperties.getAttribute(OfficeNamespaces.FO_NS, OfficeToken.BACKGROUND_COLOR);
+ if (oldValue == null || TRANSPARENT.equals(oldValue))
+ {
+ tableRowProperties.setAttribute(OfficeNamespaces.FO_NS, OfficeToken.BACKGROUND_COLOR, tableBackgroundColor);
+ }
+ }
+ attrs.setAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME, style.getStyleName());
+ }
+ }
+ else if (ReportTargetUtil.isElementOfType(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_CELL, attrs))
+ {
+ columnCounter++;
+ final String styleName = (String) attrs.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ if (styleName != null)
+ {
+ final OfficeStyle cellStyle = getPredefinedStylesCollection().getStyle(OfficeToken.TABLE_CELL, styleName);
+ if (cellStyle != null)
+ {
+ final Section textProperties = (Section) cellStyle.getTextProperties();
+ if (textProperties != null)
+ {
+ for (String i : FOPROPS)
+ {
+ textProperties.setAttribute(OfficeNamespaces.FO_NS, i, null);
+ }
+ textProperties.setAttribute(OfficeNamespaces.TEXT_NS, "display", null);
+ for (String i : STYLEPROPS)
+ {
+ textProperties.setAttribute(OfficeNamespaces.STYLE_NS, i, null);
+ }
+ }
+ final Section props = (Section) cellStyle.getTableCellProperties();
+ if (props != null)
+ {
+ final Object raw = props.getAttribute(OfficeNamespaces.FO_NS, OfficeToken.BACKGROUND_COLOR);
+ if (TRANSPARENT.equals(raw))
+ {
+ props.setAttribute(OfficeNamespaces.FO_NS, OfficeToken.BACKGROUND_COLOR, null);
+ // cellStyle.removeNode(props);
+ }
+ }
+ }
+ attrs.setAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME, styleName);
+ }
+
+ final String numColSpanStr = (String) attrs.getAttribute(namespace, NUMBERCOLUMNSSPANNED);
+ int initialColumnSpan = columnSpanCounter = 1;
+ if (numColSpanStr != null)
+ {
+ initialColumnSpan = Integer.parseInt(numColSpanStr);
+ columnSpanCounter = initialColumnSpan;
+ }
+ final int span = getColumnSpanForCell(tableCounter, columnCounter, initialColumnSpan);
+ if (initialColumnSpan > 1)
+ {
+ // add the initial column span to our column counter index (subtract 1, since it is counted by default)
+ columnCounter += initialColumnSpan - 1;
+ }
+
+ // if (span < initialColumnSpan)
+ // {
+ // // ColumnBoundary cbs[] = getBoundariesForTable(tableCounter);
+ // // for (int i = 0; i < cbs.length; i++)
+ // // {
+ // // System.out.print(cbs[i].getBoundary() + " ");
+ // // }
+ // // System.out.println();
+ //
+ // LOGGER.error("A cell cannot span less than the declared columns: Declared=" + initialColumnSpan + " Computed="
+ // + span);
+ // }
+
+ // there's no point to create number-columns-spanned attributes if we only span 1 column
+ if (span > 1)
+ {
+ attrs.setAttribute(namespace, NUMBERCOLUMNSSPANNED, "" + span);
+ currentSpan = span;
+ }
+ // we must also generate "covered-table-cell" elements for each column spanned
+ // but we'll do this in the endElement, after we close this OfficeToken.TABLE_CELL
+ }
+
+ // All styles have to be processed or you will loose the paragraph-styles and inline text-styles.
+ // ..
+ performStyleProcessing(attrs);
+
+ final AttributeList attrList = buildAttributeList(attrs);
+ xmlWriter.writeTag(namespace, elementType, attrList, XmlWriter.OPEN);
+ // System.out.println("elementType = " + elementType);
+ }
+
+ private void collectBoundaryForElement(final AttributeMap attrs)
+ {
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_COLUMNS, attrs))
+ {
+ // A table row resets the column counter.
+ resetCurrentRowBoundaryMarker();
+ }
+ else if (ReportTargetUtil.isElementOfType(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_COLUMN, attrs))
+ {
+ final String styleName = (String) attrs.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ if (styleName == null)
+ {
+ // This should not happen, but if it does, we will ignore that cell.
+ return;
+ }
+
+ final OfficeStyle style = getPredefinedStylesCollection().getStyle(OfficeToken.TABLE_COLUMN, styleName);
+ if (style == null)
+ {
+ // Now this is very bad. It means that there is no style defined with the given name.
+ return;
+ }
+
+ final Element tableColumnProperties = style.getTableColumnProperties();
+ String widthStr = (String) tableColumnProperties.getAttribute("column-width");
+ widthStr = widthStr.substring(0, widthStr.indexOf(getUnitsOfMeasure(widthStr)));
+ final float val = Float.parseFloat(widthStr) * CELL_WIDTH_FACTOR;
+ addColumnWidthToRowBoundaryMarker((long) val);
+ ColumnBoundary currentRowBoundary = new ColumnBoundary(getCurrentRowBoundaryMarker());
+ final List columnBoundaryList_ = getColumnBoundaryList();
+ final int idx = columnBoundaryList_.indexOf(currentRowBoundary);
+ if (idx == -1)
+ {
+ columnBoundaryList_.add(currentRowBoundary);
+ }
+ else
+ {
+ currentRowBoundary = (ColumnBoundary) columnBoundaryList_.get(idx);
+ }
+ currentRowBoundary.addTableIndex(tableCounter);
+ }
+ }
+
+ private String getUnitsOfMeasure(final String str)
+ {
+ if (unitsOfMeasure == null || "".equals(unitsOfMeasure))
+ {
+ if (str == null || "".equals(str))
+ {
+ unitsOfMeasure = "cm";
+ return unitsOfMeasure;
+ }
+
+ // build units of measure, set it
+ int i = str.length() - 1;
+ for (; i >= 0; i--)
+ {
+ final char c = str.charAt(i);
+ if (Character.isDigit(c) || c == '.' || c == ',')
+ {
+ break;
+ }
+ }
+ unitsOfMeasure = str.substring(i + 1);
+ }
+ return unitsOfMeasure;
+ }
+
+ private void createTableShapes() throws ReportProcessingException
+ {
+ if (!shapes.isEmpty())
+ {
+ try
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+ // at this point we need to generate the table-columns section based on our boundary table
+ // <table:shapes>
+ // <draw:frame />
+ // ..
+ // </table:shapes>
+ xmlWriter.writeTag(OfficeNamespaces.TABLE_NS, OfficeToken.SHAPES, null, XmlWriterSupport.OPEN);
+
+
+ for (int i = 0; i < shapes.size(); i++)
+ {
+ final AttributeMap attrs = (AttributeMap) shapes.get(i);
+ final AttributeList attrList = buildAttributeList(attrs);
+ attrList.removeAttribute(OfficeNamespaces.DRAWING_NS, OfficeToken.STYLE_NAME);
+ xmlWriter.writeTag(OfficeNamespaces.DRAWING_NS, OfficeToken.FRAME, attrList, XmlWriterSupport.OPEN);
+ startChartProcessing((AttributeMap) ole.get(i));
+
+ xmlWriter.writeCloseTag();
+ }
+ xmlWriter.writeCloseTag();
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException(OfficeDocumentReportTarget.FAILED, e);
+ }
+ }
+ }
+
+ private void createTableColumns() throws ReportProcessingException
+ {
+ try
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+ // at this point we need to generate the table-columns section based on our boundary table
+ // <table-columns>
+ // <table-column style-name="coX"/>
+ // ..
+ // </table-columns>
+ // the first boundary is '0' which is a placeholder so we will ignore it
+ xmlWriter.writeTag(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_COLUMNS, null, XmlWriterSupport.OPEN);
+
+ // blow away current column styles
+ // start processing at i=1 because we added a boundary for "0" which is virtual
+ final ColumnBoundary[] cba = getSortedColumnBoundaryArray();
+ for (int i = 1; i < cba.length; i++)
+ {
+ final ColumnBoundary cb = cba[i];
+ float columnWidth = cb.getBoundary();
+ if (i > 1)
+ {
+ columnWidth -= cba[i - 1].getBoundary();
+ }
+ columnWidth = columnWidth / CELL_WIDTH_FACTOR;
+ final OfficeStyle style = deriveStyle(OfficeToken.TABLE_COLUMN, ("co" + i + "_"));
+ final Section tableColumnProperties = new Section();
+ tableColumnProperties.setType("table-column-properties");
+ tableColumnProperties.setNamespace(style.getNamespace());
+ final String width = String.format("%f", columnWidth);
+ tableColumnProperties.setAttribute(style.getNamespace(),
+ "column-width", width + getUnitsOfMeasure(null));
+ style.addNode(tableColumnProperties);
+
+ final AttributeList myAttrList = new AttributeList();
+ myAttrList.setAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME, style.getStyleName());
+ xmlWriter.writeTag(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_COLUMN, myAttrList, XmlWriterSupport.CLOSE);
+ }
+ xmlWriter.writeCloseTag();
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException(OfficeDocumentReportTarget.FAILED, e);
+ }
+ }
+
+ protected void endOther(final AttributeMap attrs) throws DataSourceException, ReportProcessingException
+ {
+ if (ReportTargetUtil.isElementOfType(JFreeReportInfo.REPORT_NAMESPACE, OfficeToken.OBJECT_OLE, attrs) || oleHandled)
+ {
+ oleHandled = false;
+ return;
+ }
+
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_ROW, attrs) && isElementBoundaryCollectionPass() && getCurrentRole() != ROLE_TEMPLATE)
+ {
+ final String styleName = (String) attrs.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ rowHeights.add(computeRowHeight(styleName));
+ }
+
+ if (isRepeatingSection() || isElementBoundaryCollectionPass())
+ {
+ return;
+ }
+
+ final String namespace = ReportTargetUtil.getNamespaceFromAttribute(attrs);
+ if (isFilteredNamespace(namespace))
+ {
+ return;
+ }
+ final String elementType = ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+ if (OfficeNamespaces.DRAWING_NS.equals(namespace) && OfficeToken.FRAME.equals(elementType))
+ {
+ return;
+ }
+
+ // if this is the report namespace, write out a table definition ..
+ if (OfficeNamespaces.TABLE_NS.equals(namespace) && (OfficeToken.TABLE.equals(elementType) || OfficeToken.COVERED_TABLE_CELL.equals(elementType) || OfficeToken.TABLE_COLUMN.equals(elementType) || OfficeToken.TABLE_COLUMNS.equals(elementType)))
+ {
+ return;
+ }
+
+ if (!paragraphHandled && OfficeNamespaces.TEXT_NS.equals(namespace) && OfficeToken.P.equals(elementType))
+ {
+ if (!paragraphHandled)
+ {
+ return;
+ }
+
+ paragraphHandled = false;
+ }
+ try
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeCloseTag();
+ // table-cell elements may have a number-columns-spanned attribute which indicates how many
+ // 'covered-table-cell' elements we need to generate
+ generateCoveredTableCells(attrs);
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException(OfficeDocumentReportTarget.FAILED, e);
+ }
+ }
+
+ private void generateCoveredTableCells(final AttributeMap attrs) throws IOException
+ {
+ if (!ReportTargetUtil.isElementOfType(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_CELL, attrs))
+ {
+ return;
+ }
+
+ // do this after we close the tag
+ final XmlWriter xmlWriter = getXmlWriter();
+ // final Object attribute = attrs.getAttribute(OfficeNamespaces.TABLE_NS,NUMBERCOLUMNSSPANNED);
+ // final int span = TextUtilities.parseInt((String) attribute, 0);
+ final int span = currentSpan;
+ currentSpan = 0;
+ for (int i = 1; i < span; i++)
+ {
+ xmlWriter.writeTag(OfficeNamespaces.TABLE_NS, OfficeToken.COVERED_TABLE_CELL, null, XmlWriter.CLOSE);
+ }
+ }
+
+ public String getExportDescriptor()
+ {
+ return "raw/" + PentahoReportEngineMetaData.OPENDOCUMENT_SPREADSHEET;
+ }
+
+ // /////////////////////////////////////////////////////////////////////////
+ public void processText(final String text) throws DataSourceException, ReportProcessingException
+ {
+ if (!(isRepeatingSection() || isElementBoundaryCollectionPass()))
+ {
+ handleParagraph();
+ super.processText(text);
+ }
+ }
+
+ public void processContent(final DataFlags value) throws DataSourceException, ReportProcessingException
+ {
+ if (!(isRepeatingSection() || isElementBoundaryCollectionPass()))
+ {
+ handleParagraph();
+ super.processContent(value);
+ }
+ }
+
+ protected String getStartContent()
+ {
+ return "spreadsheet";
+ }
+
+ protected void startContent(final AttributeMap attrs) throws IOException, DataSourceException,
+ ReportProcessingException
+ {
+ if (!isElementBoundaryCollectionPass())
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, getStartContent(), null, XmlWriterSupport.OPEN);
+
+ writeNullDate();
+
+ final AttributeMap tableAttributes = new AttributeMap();
+ tableAttributes.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, Element.NAMESPACE_ATTRIBUTE, OfficeNamespaces.TABLE_NS);
+ tableAttributes.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, Element.TYPE_ATTRIBUTE, OfficeToken.TABLE);
+ tableAttributes.setAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME, generateInitialTableStyle());
+ tableAttributes.setAttribute(OfficeNamespaces.TABLE_NS, "name", "Report");
+
+ performStyleProcessing(tableAttributes);
+
+ xmlWriter.writeTag(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE, buildAttributeList(tableAttributes), XmlWriterSupport.OPEN);
+ createTableShapes();
+ createTableColumns();
+ }
+ }
+
+ private String generateInitialTableStyle() throws ReportProcessingException
+ {
+ final OfficeStylesCollection predefStyles = getPredefinedStylesCollection();
+ final OfficeStyles commonStyles = predefStyles.getAutomaticStyles();
+ if (!commonStyles.containsStyle(OfficeToken.TABLE, "Initial_Table"))
+ {
+ final String masterPageName = createMasterPage();
+
+ final OfficeStyle tableStyle = new OfficeStyle();
+ tableStyle.setStyleFamily(OfficeToken.TABLE);
+ tableStyle.setStyleName("Initial_Table");
+ tableStyle.setAttribute(OfficeNamespaces.STYLE_NS, "master-page-name", masterPageName);
+ final Element tableProperties = produceFirstChild(tableStyle, OfficeNamespaces.STYLE_NS, "table-properties");
+ tableProperties.setAttribute(OfficeNamespaces.FO_NS, OfficeToken.BACKGROUND_COLOR, TRANSPARENT);
+ commonStyles.addStyle(tableStyle);
+ }
+ return "Initial_Table";
+ }
+
+ private String createMasterPage() throws ReportProcessingException
+ {
+ final OfficeStylesCollection predefStyles = getPredefinedStylesCollection();
+ final MasterPageFactory masterPageFactory = new MasterPageFactory(predefStyles.getMasterStyles());
+ final OfficeMasterPage masterPage;
+ if (!masterPageFactory.containsMasterPage("Standard", null, null))
+ {
+ masterPage = masterPageFactory.createMasterPage("Standard", null, null);
+
+ final CSSNumericValue zeroLength = CSSNumericValue.createValue(CSSNumericType.CM, 0);
+ final String pageLayoutTemplate = masterPage.getPageLayout();
+ if (pageLayoutTemplate == null)
+ {
+ // there is no pagelayout. Create one ..
+ final String derivedLayout = masterPageFactory.createPageStyle(getGlobalStylesCollection().getAutomaticStyles(), zeroLength, zeroLength);
+ masterPage.setPageLayout(derivedLayout);
+ }
+ else
+ {
+ final String derivedLayout = masterPageFactory.derivePageStyle(pageLayoutTemplate,
+ getPredefinedStylesCollection().getAutomaticStyles(),
+ getGlobalStylesCollection().getAutomaticStyles(), zeroLength, zeroLength);
+ masterPage.setPageLayout(derivedLayout);
+ }
+
+ final OfficeStylesCollection officeStylesCollection = getGlobalStylesCollection();
+ final OfficeMasterStyles officeMasterStyles = officeStylesCollection.getMasterStyles();
+ officeMasterStyles.addMasterPage(masterPage);
+ }
+ else
+ {
+ masterPage = masterPageFactory.getMasterPage("Standard", null, null);
+ }
+ return masterPage.getStyleName();
+ }
+
+ protected void endContent(final AttributeMap attrs) throws IOException, DataSourceException,
+ ReportProcessingException
+ {
+ // todo
+ if (!isElementBoundaryCollectionPass())
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeCloseTag();
+ xmlWriter.writeCloseTag();
+ }
+ }
+
+ public void endReport(final ReportStructureRoot report) throws DataSourceException, ReportProcessingException
+ {
+ super.endReport(report);
+ setElementBoundaryCollectionPass(false);
+ resetTableCounter();
+ columnCounter = 0;
+ copyMeta();
+ }
+
+ private boolean isElementBoundaryCollectionPass()
+ {
+ return elementBoundaryCollectionPass;
+ }
+
+ private void setElementBoundaryCollectionPass(final boolean elementBoundaryCollectionPass)
+ {
+ this.elementBoundaryCollectionPass = elementBoundaryCollectionPass;
+ }
+
+ private ColumnBoundary[] getSortedColumnBoundaryArray()
+ {
+ if (sortedBoundaryArray == null)
+ {
+ getColumnBoundaryList().add(new ColumnBoundary(0));
+ sortedBoundaryArray = (ColumnBoundary[]) getColumnBoundaryList().toArray(new ColumnBoundary[getColumnBoundaryList().size()]);
+ Arrays.sort(sortedBoundaryArray);
+ }
+ return sortedBoundaryArray;
+ }
+
+ private List getColumnBoundaryList()
+ {
+ return columnBoundaryList;
+ }
+
+ private void addColumnWidthToRowBoundaryMarker(final long width)
+ {
+ currentRowBoundaryMarker += width;
+ }
+
+ private long getCurrentRowBoundaryMarker()
+ {
+ return currentRowBoundaryMarker;
+ }
+
+ private void resetTableCounter()
+ {
+ tableCounter = 0;
+ }
+
+ private void resetCurrentRowBoundaryMarker()
+ {
+ currentRowBoundaryMarker = 0;
+ }
+
+ private ColumnBoundary[] getBoundariesForTable(final int table)
+ {
+ if (boundariesForTableArray == null)
+ {
+ final List boundariesForTable = new ArrayList();
+ final List boundaryList = getColumnBoundaryList();
+ for (int i = 0; i < boundaryList.size(); i++)
+ {
+ final ColumnBoundary b = (ColumnBoundary) boundaryList.get(i);
+ if (b.isContainedByTable(table))
+ {
+ boundariesForTable.add(b);
+ }
+ }
+ boundariesForTableArray = (ColumnBoundary[]) boundariesForTable.toArray(new ColumnBoundary[boundariesForTable.size()]);
+ Arrays.sort(boundariesForTableArray);
+ }
+ return boundariesForTableArray;
+ }
+
+ private int getColumnSpanForCell(final int table, final int col, final int initialColumnSpan)
+ {
+ final ColumnBoundary[] globalBoundaries = getSortedColumnBoundaryArray();
+ final ColumnBoundary[] tableBoundaries = getBoundariesForTable(table);
+ // how many column boundaries in the globalBoundaries list fall between the currentRowWidth and the next boundary
+ // for the current row
+
+ float cellBoundary = tableBoundaries[col - 1].getBoundary();
+ float cellWidth = tableBoundaries[col - 1].getBoundary();
+
+ if (col > 1)
+ {
+ cellWidth = cellWidth - tableBoundaries[col - 2].getBoundary();
+ }
+
+ if (initialColumnSpan > 1)
+ {
+ // ok we've got some additional spanning specified on the input
+ final int index = (col - 1) + (initialColumnSpan - 1);
+ cellWidth += tableBoundaries[index].getBoundary() - tableBoundaries[col - 1].getBoundary();
+ cellBoundary = tableBoundaries[index].getBoundary();
+ }
+
+ int beginBoundaryIndex = 0;
+ int endBoundaryIndex = globalBoundaries.length - 1;
+ for (int i = 0; i < globalBoundaries.length; i++)
+ {
+ // find beginning boundary
+ if (globalBoundaries[i].getBoundary() <= cellBoundary - cellWidth)
+ {
+ beginBoundaryIndex = i;
+ }
+ if (globalBoundaries[i].getBoundary() <= cellBoundary)
+ {
+ endBoundaryIndex = i;
+ }
+ }
+ final int span = endBoundaryIndex - beginBoundaryIndex;
+ // span will be zero for the first column, so we adjust it to 1
+ if (span == 0)
+ {
+ return 1;
+ }
+ // System.out.println("table = " + table + " col = " + col + " rowBoundaries.length = " + tableBoundaries.length + "
+ // cellWidth = " + cellWidth + " span = " + span);
+ return span;
+ }
+
+ protected String getTargetMimeType()
+ {
+ return "application/vnd.oasis.opendocument.spreadsheet";
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/text/MasterPageFactory.java b/reportbuilder/java/com/sun/star/report/pentaho/output/text/MasterPageFactory.java
new file mode 100644
index 000000000000..ff680e14657a
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/text/MasterPageFactory.java
@@ -0,0 +1,417 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output.text;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.OfficeMasterPage;
+import com.sun.star.report.pentaho.model.OfficeMasterStyles;
+import com.sun.star.report.pentaho.model.OfficeStyles;
+import com.sun.star.report.pentaho.model.PageLayout;
+import com.sun.star.report.pentaho.model.RawText;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jfree.layouting.input.style.values.CSSNumericValue;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+import org.jfree.report.util.AttributeNameGenerator;
+
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 14.03.2007
+ */
+public class MasterPageFactory
+{
+
+ private static class MasterPageFactoryKey
+ {
+
+ private final String template;
+ private final String pageHeader;
+ private final String pageFooter;
+
+ public MasterPageFactoryKey(final String template,
+ final String pageHeader,
+ final String pageFooter)
+ {
+ this.template = template;
+ this.pageHeader = pageHeader;
+ this.pageFooter = pageFooter;
+ }
+
+ public boolean equals(final Object o)
+ {
+ if (this != o)
+ {
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ final MasterPageFactoryKey that = (MasterPageFactoryKey) o;
+
+ if (pageFooter != null ? !pageFooter.equals(
+ that.pageFooter) : that.pageFooter != null)
+ {
+ return false;
+ }
+ if (pageHeader != null ? !pageHeader.equals(
+ that.pageHeader) : that.pageHeader != null)
+ {
+ return false;
+ }
+ if (template != null ? !template.equals(
+ that.template) : that.template != null)
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public int hashCode()
+ {
+ int result = (template != null ? template.hashCode() : 0);
+ result = 31 * result + (pageHeader != null ? pageHeader.hashCode() : 0);
+ result = 31 * result + (pageFooter != null ? pageFooter.hashCode() : 0);
+ return result;
+ }
+
+ public String getTemplate()
+ {
+ return template;
+ }
+
+ public String getPageHeader()
+ {
+ return pageHeader;
+ }
+
+ public String getPageFooter()
+ {
+ return pageFooter;
+ }
+ }
+
+ private static class PageLayoutKey
+ {
+
+ private final String templateName;
+ private final CSSNumericValue headerHeight;
+ private final CSSNumericValue footerHeight;
+
+ public PageLayoutKey(final String templateName,
+ final CSSNumericValue headerHeight,
+ final CSSNumericValue footerHeight)
+ {
+ this.templateName = templateName;
+ this.headerHeight = headerHeight;
+ this.footerHeight = footerHeight;
+ }
+
+ public String getTemplateName()
+ {
+ return templateName;
+ }
+
+ public CSSNumericValue getHeaderHeight()
+ {
+ return headerHeight;
+ }
+
+ public CSSNumericValue getFooterHeight()
+ {
+ return footerHeight;
+ }
+
+ public boolean equals(final Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ final PageLayoutKey key = (PageLayoutKey) o;
+
+ if (footerHeight != null ? !footerHeight.equals(
+ key.footerHeight) : key.footerHeight != null)
+ {
+ return false;
+ }
+ if (headerHeight != null ? !headerHeight.equals(
+ key.headerHeight) : key.headerHeight != null)
+ {
+ return false;
+ }
+ return !(templateName != null ? !templateName.equals(
+ key.templateName) : key.templateName != null);
+
+ }
+
+ public int hashCode()
+ {
+ int result;
+ result = (templateName != null ? templateName.hashCode() : 0);
+ result = 31 * result + (headerHeight != null ? headerHeight.hashCode() : 0);
+ result = 31 * result + (footerHeight != null ? footerHeight.hashCode() : 0);
+ return result;
+ }
+ }
+ // todo: Patch the page-layout ...
+ private static final String DEFAULT_PAGE_NAME = "Default";
+ private final OfficeMasterStyles predefinedStyles;
+ private final AttributeNameGenerator masterPageNameGenerator;
+ private final Map masterPages;
+ private final AttributeNameGenerator pageLayoutNameGenerator;
+ private final Map pageLayouts;
+
+ public MasterPageFactory(final OfficeMasterStyles predefinedStyles)
+ {
+ this.predefinedStyles = predefinedStyles;
+ this.masterPages = new HashMap();
+ this.masterPageNameGenerator = new AttributeNameGenerator();
+ this.pageLayouts = new HashMap();
+ this.pageLayoutNameGenerator = new AttributeNameGenerator();
+ }
+
+ public OfficeMasterPage getMasterPage(final String template,
+ final String pageHeader,
+ final String pageFooter)
+ {
+ final MasterPageFactoryKey key =
+ new MasterPageFactoryKey(template, pageHeader, pageFooter);
+ return (OfficeMasterPage) masterPages.get(key);
+ }
+
+ public boolean containsMasterPage(final String template,
+ final String pageHeader,
+ final String pageFooter)
+ {
+ final MasterPageFactoryKey key =
+ new MasterPageFactoryKey(template, pageHeader, pageFooter);
+ return masterPages.containsKey(key);
+ }
+
+ public OfficeMasterPage createMasterPage(final String template,
+ final String pageHeader,
+ final String pageFooter)
+ {
+ final MasterPageFactoryKey key =
+ new MasterPageFactoryKey(template, pageHeader, pageFooter);
+ final OfficeMasterPage cached = (OfficeMasterPage) masterPages.get(key);
+ if (cached != null)
+ {
+ return cached;
+ }
+
+ final String targetName = (masterPages.isEmpty()) ? "Standard" : template;
+
+ OfficeMasterPage predef = predefinedStyles.getMasterPage(template);
+ if (predef == null)
+ {
+ // This is a 'magic' name ..
+ // todo: It could be that this should be called 'Standard' instead
+ predef = predefinedStyles.getMasterPage(MasterPageFactory.DEFAULT_PAGE_NAME);
+ }
+
+ if (predef != null)
+ {
+ try
+ {
+ // derive
+ final OfficeMasterPage derived = (OfficeMasterPage) predef.clone();
+ return setupMasterPage(derived, targetName, pageHeader, pageFooter,
+ key);
+ }
+ catch (CloneNotSupportedException cne)
+ {
+ throw new IllegalStateException("Implementation error: Unable to derive page", cne);
+ }
+ }
+
+ final OfficeMasterPage masterPage = new OfficeMasterPage();
+ masterPage.setNamespace(OfficeNamespaces.STYLE_NS);
+ masterPage.setType("master-page");
+ return setupMasterPage(masterPage, targetName, pageHeader, pageFooter, key);
+ }
+
+ private OfficeMasterPage setupMasterPage(final OfficeMasterPage derived,
+ final String targetName,
+ final String pageHeader,
+ final String pageFooter,
+ final MasterPageFactoryKey key)
+ {
+ derived.setStyleName(masterPageNameGenerator.generateName(targetName));
+ masterPages.put(key, derived);
+
+ if (pageHeader != null)
+ {
+ final Section header = new Section();
+ header.setNamespace(OfficeNamespaces.STYLE_NS);
+ header.setType("header");
+ header.addNode(new RawText(pageHeader));
+ derived.addNode(header);
+ }
+
+ if (pageFooter != null)
+ {
+ final Section footer = new Section();
+ footer.setNamespace(OfficeNamespaces.STYLE_NS);
+ footer.setType("footer");
+ footer.addNode(new RawText(pageFooter));
+ derived.addNode(footer);
+ }
+
+ return derived;
+ }
+
+ public String createPageStyle(final OfficeStyles commonStyles,
+ final CSSNumericValue headerHeight,
+ final CSSNumericValue footerHeight)
+ {
+ final PageLayoutKey key =
+ new PageLayoutKey(null, headerHeight, footerHeight);
+ final PageLayout derived = new PageLayout();
+ final String name = pageLayoutNameGenerator.generateName("autogenerated");
+ derived.setStyleName(name);
+ commonStyles.addPageStyle(derived);
+
+ if (headerHeight != null)
+ {
+ final Section headerStyle = new Section();
+ headerStyle.setNamespace(OfficeNamespaces.STYLE_NS);
+ headerStyle.setType("header-style");
+ derived.addNode(headerStyle);
+ MasterPageFactory.applyHeaderFooterHeight(headerStyle, headerHeight);
+ }
+
+ if (footerHeight != null)
+ {
+ final Section footerStyle = new Section();
+ footerStyle.setNamespace(OfficeNamespaces.STYLE_NS);
+ footerStyle.setType("footer-style");
+ derived.addNode(footerStyle);
+ MasterPageFactory.applyHeaderFooterHeight(footerStyle, footerHeight);
+ }
+ pageLayouts.put(key, name);
+ return name;
+ }
+
+ public String derivePageStyle(final String pageStyleTemplate,
+ final OfficeStyles predefined,
+ final OfficeStyles commonStyles,
+ final CSSNumericValue headerHeight,
+ final CSSNumericValue footerHeight)
+ throws ReportProcessingException
+ {
+ if (pageStyleTemplate == null)
+ {
+ throw new NullPointerException("A style-name must be given");
+ }
+
+ final PageLayoutKey key =
+ new PageLayoutKey(pageStyleTemplate, headerHeight, footerHeight);
+ final String pageLayoutName = (String) pageLayouts.get(key);
+ if (pageLayoutName != null)
+ {
+ // there's already a suitable version included.
+ return pageLayoutName;
+ }
+
+ final PageLayout original = predefined.getPageStyle(pageStyleTemplate);
+ if (original == null)
+ {
+ throw new ReportProcessingException("Invalid page-layout '" + pageStyleTemplate + "', will not continue.");
+ }
+
+ try
+ {
+ final PageLayout derived = (PageLayout) original.clone();
+ final String name = pageLayoutNameGenerator.generateName(
+ pageStyleTemplate);
+ derived.setStyleName(name);
+ commonStyles.addPageStyle(derived);
+
+ if (headerHeight != null)
+ {
+ Section headerStyle = derived.getHeaderStyle();
+ if (headerStyle == null)
+ {
+ headerStyle = new Section();
+ headerStyle.setNamespace(OfficeNamespaces.STYLE_NS);
+ headerStyle.setType("header-style");
+ derived.addNode(headerStyle);
+ }
+ MasterPageFactory.applyHeaderFooterHeight(headerStyle, headerHeight);
+ }
+
+ if (footerHeight != null)
+ {
+ Section footerStyle = derived.getFooterStyle();
+ if (footerStyle == null)
+ {
+ footerStyle = new Section();
+ footerStyle.setNamespace(OfficeNamespaces.STYLE_NS);
+ footerStyle.setType("footer-style");
+ derived.addNode(footerStyle);
+ }
+
+ MasterPageFactory.applyHeaderFooterHeight(footerStyle, footerHeight);
+ }
+ pageLayouts.put(key, name);
+ return name;
+ }
+ catch (CloneNotSupportedException e)
+ {
+ throw new IllegalStateException("Clone failed.", e);
+ }
+ }
+
+ private static void applyHeaderFooterHeight(final Section headerFooterStyle,
+ final CSSNumericValue style)
+ {
+ Element headerFooterProps = headerFooterStyle.findFirstChild(OfficeNamespaces.STYLE_NS, "header-footer-properties");
+ if (headerFooterProps == null)
+ {
+ headerFooterProps = new Section();
+ headerFooterProps.setNamespace(OfficeNamespaces.STYLE_NS);
+ headerFooterProps.setType("header-footer-properties");
+ headerFooterStyle.addNode(headerFooterProps);
+ }
+ headerFooterProps.setAttribute(OfficeNamespaces.SVG_NS, "height", style.getValue() + style.getType().getType());
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/text/PageBreakDefinition.java b/reportbuilder/java/com/sun/star/report/pentaho/output/text/PageBreakDefinition.java
new file mode 100644
index 000000000000..4632d81b8970
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/text/PageBreakDefinition.java
@@ -0,0 +1,49 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output.text;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 24.03.2007
+ */
+public class PageBreakDefinition
+{
+
+ private final boolean resetPageNumber;
+
+ public PageBreakDefinition(final boolean resetPageNumber)
+ {
+ this.resetPageNumber = resetPageNumber;
+ }
+
+ public boolean isResetPageNumber()
+ {
+ return resetPageNumber;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/text/PageContext.java b/reportbuilder/java/com/sun/star/report/pentaho/output/text/PageContext.java
new file mode 100644
index 000000000000..8aa0bb09a1f1
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/text/PageContext.java
@@ -0,0 +1,228 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output.text;
+
+import com.sun.star.report.pentaho.styles.LengthCalculator;
+
+import org.jfree.layouting.input.style.values.CSSNumericValue;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 24.03.2007
+ */
+public class PageContext
+{
+
+ public static final int KEEP_TOGETHER_OFF = 0;
+ public static final int KEEP_TOGETHER_GROUP = 1;
+ public static final int KEEP_TOGETHER_FIRST_DETAIL = 2;
+ private PageContext parent;
+ private String header;
+ private CSSNumericValue headerHeight;
+ private String footer;
+ private CSSNumericValue footerHeight;
+ private int keepTogether;
+ private Integer columnCount = null;
+ private boolean sectionOpen;
+
+ public PageContext()
+ {
+ this(null);
+ }
+
+ public PageContext(final PageContext parent)
+ {
+ this.parent = parent;
+ if (parent != null)
+ {
+ this.keepTogether = parent.getKeepTogether();
+ }
+ }
+
+ public int getActiveColumns()
+ {
+ PageContext pc = this;
+ while (pc != null)
+ {
+ // TODO: IS this code correct? Why not columnCount = pc.getColumnCount(); ?
+ if (columnCount != null)
+ {
+ return columnCount;
+ }
+ pc = pc.getParent();
+ }
+ return 1;
+ }
+
+ public void setColumnCount(final Integer columnCount)
+ {
+ this.columnCount = columnCount;
+ }
+
+ public Integer getColumnCount()
+ {
+ return columnCount;
+ }
+
+ public String getHeader()
+ {
+ return header;
+ }
+
+ public void setHeader(final String header, final CSSNumericValue height)
+ {
+ this.header = header;
+ this.headerHeight = height;
+ }
+
+ public String getFooter()
+ {
+ return footer;
+ }
+
+ public CSSNumericValue getHeaderHeight()
+ {
+ return headerHeight;
+ }
+
+ public CSSNumericValue getFooterHeight()
+ {
+ return footerHeight;
+ }
+
+ public void setFooter(final String footer, final CSSNumericValue height)
+ {
+ this.footer = footer;
+ this.footerHeight = height;
+ }
+
+ public int getKeepTogether()
+ {
+ return keepTogether;
+ }
+
+ public void setKeepTogether(final int keepTogether)
+ {
+ this.keepTogether = keepTogether;
+ }
+
+ public PageContext getParent()
+ {
+ return parent;
+ }
+
+ public CSSNumericValue getAllFooterSize()
+ {
+ if (parent == null)
+ {
+ return footerHeight;
+ }
+
+ final LengthCalculator lnc = new LengthCalculator();
+ PageContext pc = this;
+ while (pc != null)
+ {
+ lnc.add(pc.getFooterHeight());
+ pc = pc.getParent();
+ }
+ return lnc.getResult();
+ }
+
+ public CSSNumericValue getAllHeaderSize()
+ {
+ if (parent == null)
+ {
+ return headerHeight;
+ }
+
+ final LengthCalculator lnc = new LengthCalculator();
+ PageContext pc = this;
+ while (pc != null)
+ {
+ lnc.add(pc.getHeaderHeight());
+ pc = pc.getParent();
+ }
+ return lnc.getResult();
+ }
+
+ public String getPageFooterContent()
+ {
+ if (parent == null)
+ {
+ return getFooter();
+ }
+
+ final StringBuffer b = new StringBuffer();
+
+ PageContext pc = this;
+ while (pc != null)
+ {
+ final String footer_ = pc.getFooter();
+ if (footer_ != null)
+ {
+ b.append(footer_);
+ }
+ pc = pc.getParent();
+ }
+
+ if (b.length() != 0)
+ {
+ return b.toString();
+ }
+ return null;
+ }
+
+ public String getPageHeaderContent()
+ {
+ if (parent == null)
+ {
+ return getHeader();
+ }
+
+ final StringBuffer b = new StringBuffer();
+ b.append(parent.getPageHeaderContent());
+ b.append(getHeader());
+
+ if (b.length() != 0)
+ {
+ return b.toString();
+ }
+ return null;
+ }
+
+ public boolean isSectionOpen()
+ {
+ return sectionOpen;
+ }
+
+ public void setSectionOpen(final boolean sectionOpen)
+ {
+ this.sectionOpen = sectionOpen;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/text/TextRawReportProcessor.java b/reportbuilder/java/com/sun/star/report/pentaho/output/text/TextRawReportProcessor.java
new file mode 100644
index 000000000000..00d4aff11de9
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/text/TextRawReportProcessor.java
@@ -0,0 +1,116 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output.text;
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.pentaho.PentahoFormulaContext;
+
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.data.ReportContextImpl;
+import org.jfree.report.flow.ReportContext;
+import org.jfree.report.flow.ReportJob;
+import org.jfree.report.flow.ReportStructureRoot;
+import org.jfree.report.flow.ReportTarget;
+import org.jfree.report.flow.SinglePassReportProcessor;
+
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+
+/**
+ * Creation-Date: 03.07.2006, 17:08:25
+ *
+ * @author Thomas Morgner
+ */
+public class TextRawReportProcessor extends SinglePassReportProcessor
+{
+
+ private final OutputRepository outputRepository;
+ private final String targetName;
+ private final InputRepository inputRepository;
+ private final ImageService imageService;
+ private final DataSourceFactory dataSourceFactory;
+
+ public TextRawReportProcessor(final InputRepository inputRepository,
+ final OutputRepository outputRepository,
+ final String targetName,
+ final ImageService imageService,
+ final DataSourceFactory dataSourceFactory)
+ {
+ if (inputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ if (outputRepository == null)
+ {
+ throw new NullPointerException();
+ }
+ if (targetName == null)
+ {
+ throw new NullPointerException();
+ }
+ if (imageService == null)
+ {
+ throw new NullPointerException();
+ }
+ if (dataSourceFactory == null)
+ {
+ throw new NullPointerException();
+ }
+
+ this.targetName = targetName;
+ this.inputRepository = inputRepository;
+ this.outputRepository = outputRepository;
+ this.imageService = imageService;
+ this.dataSourceFactory = dataSourceFactory;
+ }
+
+ protected ReportTarget createReportTarget(final ReportJob job)
+ throws ReportProcessingException
+ {
+ final ReportStructureRoot report = job.getReportStructureRoot();
+ final ResourceManager resourceManager = report.getResourceManager();
+
+ return new TextRawReportTarget(job, resourceManager, report.getBaseResource(),
+ inputRepository, outputRepository, targetName, imageService, dataSourceFactory);
+ }
+
+ protected ReportContext createReportContext(final ReportJob job,
+ final ReportTarget target)
+ {
+ final ReportContext context = super.createReportContext(job, target);
+ if (context instanceof ReportContextImpl)
+ {
+ final ReportContextImpl impl = (ReportContextImpl) context;
+ impl.setFormulaContext(new PentahoFormulaContext(impl.getFormulaContext(), job.getConfiguration()));
+ }
+ return context;
+ }
+}
+
+
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/text/TextRawReportTarget.java b/reportbuilder/java/com/sun/star/report/pentaho/output/text/TextRawReportTarget.java
new file mode 100644
index 000000000000..a66f3e8b6c4d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/text/TextRawReportTarget.java
@@ -0,0 +1,1454 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output.text;
+
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.ImageService;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.PentahoReportEngineMetaData;
+import com.sun.star.report.pentaho.layoutprocessor.FormatValueUtility;
+import com.sun.star.report.pentaho.model.OfficeMasterPage;
+import com.sun.star.report.pentaho.model.OfficeMasterStyles;
+import com.sun.star.report.pentaho.model.OfficeStyle;
+import com.sun.star.report.pentaho.model.OfficeStyles;
+import com.sun.star.report.pentaho.model.OfficeStylesCollection;
+import com.sun.star.report.pentaho.model.PageSection;
+import com.sun.star.report.pentaho.output.OfficeDocumentReportTarget;
+import com.sun.star.report.pentaho.output.StyleUtilities;
+import com.sun.star.report.pentaho.styles.LengthCalculator;
+
+import java.io.IOException;
+
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+
+
+import org.jfree.layouting.input.style.values.CSSNumericValue;
+import org.jfree.layouting.util.AttributeMap;
+import org.jfree.report.DataSourceException;
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.ReportProcessingException;
+import org.jfree.report.flow.ReportJob;
+import org.jfree.report.flow.ReportStructureRoot;
+import org.jfree.report.flow.ReportTargetUtil;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+import org.jfree.report.util.AttributeNameGenerator;
+import org.jfree.report.util.IntegerCache;
+
+import org.pentaho.reporting.libraries.base.util.FastStack;
+import org.pentaho.reporting.libraries.base.util.ObjectUtilities;
+import org.pentaho.reporting.libraries.resourceloader.ResourceKey;
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+import org.pentaho.reporting.libraries.xmlns.common.AttributeList;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriter;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriterSupport;
+
+
+/**
+ * Creation-Date: 03.07.2006, 16:28:00
+ *
+ * @author Thomas Morgner
+ */
+public class TextRawReportTarget extends OfficeDocumentReportTarget
+{
+
+ private static final String ALWAYS = "always";
+ private static final String KEEP_TOGETHER = "keep-together";
+ private static final String KEEP_WITH_NEXT = "keep-with-next";
+ private static final String MAY_BREAK_BETWEEN_ROWS = "may-break-between-rows";
+ private static final String NAME = "name";
+ private static final String NONE = "none";
+ private static final String NORMAL = "normal";
+ private static final String PARAGRAPH_PROPERTIES = "paragraph-properties";
+ private static final String STANDARD = "Standard";
+ private static final String TABLE_PROPERTIES = "table-properties";
+ private static final String VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT = "variables_paragraph_with_next";
+ private static final String VARIABLES_HIDDEN_STYLE_WITHOUT_KEEPWNEXT = "variables_paragraph_without_next";
+ private static final int TABLE_LAYOUT_VARIABLES_PARAGRAPH = 0;
+ private static final int TABLE_LAYOUT_SINGLE_DETAIL_TABLE = 2;
+ private static final int CP_SETUP = 0;
+ private static final int CP_FIRST_TABLE = 1;
+ private static final int CP_NEXT_TABLE = 2;
+ // This is the initial state of the detail-band processing. It states, that we are now waiting for a
+ // detail-band to be printed.
+ private static final int DETAIL_SECTION_WAIT = 0;
+ // The first detail section has started.
+ private static final int DETAIL_SECTION_FIRST_STARTED = 1;
+ // The first detail section has been printed.
+ private static final int DETAIL_SECTION_FIRST_PRINTED = 2;
+ // An other detail section has started
+ private static final int DETAIL_SECTION_OTHER_STARTED = 3;
+ // The other detail section has been printed.
+ private static final int DETAIL_SECTION_OTHER_PRINTED = 4;
+ private boolean pageFooterOnReportFooter;
+ private boolean pageFooterOnReportHeader;
+ private boolean pageHeaderOnReportFooter;
+ private boolean pageHeaderOnReportHeader;
+ private int contentProcessingState;
+ private OfficeMasterPage currentMasterPage;
+ private final FastStack activePageContext;
+ private MasterPageFactory masterPageFactory;
+ private LengthCalculator sectionHeight;
+ private String variables;
+ private PageBreakDefinition pageBreakDefinition;
+ private VariablesDeclarations variablesDeclarations;
+ private boolean columnBreakPending;
+ private boolean sectionKeepTogether;
+ private final AttributeNameGenerator sectionNames;
+ private int detailBandProcessingState;
+ private final int tableLayoutConfig;
+ private int expectedTableRowCount;
+ private boolean firstCellSeen;
+
+ public TextRawReportTarget(final ReportJob reportJob,
+ final ResourceManager resourceManager,
+ final ResourceKey baseResource,
+ final InputRepository inputRepository,
+ final OutputRepository outputRepository,
+ final String target,
+ final ImageService imageService,
+ final DataSourceFactory datasourcefactory)
+ throws ReportProcessingException
+ {
+ super(reportJob, resourceManager, baseResource, inputRepository, outputRepository, target, imageService, datasourcefactory);
+ activePageContext = new FastStack();
+ this.sectionNames = new AttributeNameGenerator();
+
+ this.tableLayoutConfig = TABLE_LAYOUT_SINGLE_DETAIL_TABLE;
+ }
+
+ protected String getTargetMimeType()
+ {
+ return "application/vnd.oasis.opendocument.text";
+ }
+
+ /**
+ * Checks, whether a manual page break should be inserted at the next possible location.
+ *
+ * @return true, if a pagebreak is pending, false otherwise.
+ */
+ private boolean isPagebreakPending()
+ {
+ return pageBreakDefinition != null;
+ }
+
+ private boolean isResetPageNumber()
+ {
+ return pageBreakDefinition != null && pageBreakDefinition.isResetPageNumber();
+ }
+
+ /**
+ * Defines, whether a manual pagebreak should be inserted at the next possible location.
+ *
+ * @param pageBreakDefinition the new flag value.
+ */
+ private void setPagebreakDefinition(final PageBreakDefinition pageBreakDefinition)
+ {
+ this.pageBreakDefinition = pageBreakDefinition;
+ }
+
+ private PageBreakDefinition getPagebreakDefinition()
+ {
+ return pageBreakDefinition;
+ }
+
+ // todo
+ private boolean isKeepTableWithNext()
+ {
+ final int keepTogetherState = getCurrentContext().getKeepTogether();
+ if (keepTogetherState == PageContext.KEEP_TOGETHER_GROUP)
+ {
+ return true;
+ }
+
+ final boolean keepWithNext;
+ keepWithNext = keepTogetherState == PageContext.KEEP_TOGETHER_FIRST_DETAIL && (detailBandProcessingState == DETAIL_SECTION_WAIT);
+ return keepWithNext;
+ }
+
+ private boolean isSectionPagebreakAfter(final AttributeMap attrs)
+ {
+ final Object forceNewPage =
+ attrs.getAttribute(OfficeNamespaces.OOREPORT_NS, "force-new-page");
+ return "after-section".equals(forceNewPage) || "before-after-section".equals(forceNewPage);
+ }
+
+ private boolean isSectionPagebreakBefore(final AttributeMap attrs)
+ {
+ final Object forceNewPage =
+ attrs.getAttribute(OfficeNamespaces.OOREPORT_NS, "force-new-page");
+ return "before-section".equals(forceNewPage) || "before-after-section".equals(forceNewPage);
+ }
+
+ private PageContext getCurrentContext()
+ {
+ return (PageContext) activePageContext.peek();
+ }
+
+ private String createMasterPage(final boolean printHeader,
+ final boolean printFooter)
+ throws ReportProcessingException
+ {
+ // create the master page for the report-header.
+ // If there is a page-header or footer in the report that gets
+ // surpressed on the report-header, we have to insert a pagebreak
+ // afterwards.
+
+ final String activePageFooter;
+ // Check, whether the report header can have a page-header
+ final PageContext context = getCurrentContext();
+ if (printFooter)
+ {
+ activePageFooter = context.getPageFooterContent();
+ }
+ else
+ {
+ activePageFooter = null;
+ }
+ final String activePageHeader;
+ if (printHeader)
+ {
+ // we have to insert a manual pagebreak after the report header.
+ activePageHeader = context.getPageHeaderContent();
+ }
+ else
+ {
+ activePageHeader = null;
+ }
+
+ final String masterPageName;
+ if (currentMasterPage == null || !masterPageFactory.containsMasterPage(STANDARD, activePageHeader, activePageFooter))
+ {
+
+ final CSSNumericValue headerSize = context.getAllHeaderSize();
+ final CSSNumericValue footerSize = context.getAllFooterSize();
+
+
+ currentMasterPage = masterPageFactory.createMasterPage(STANDARD, activePageHeader, activePageFooter);
+
+// LOGGER.debug("Created a new master-page: " + currentMasterPage.getStyleName());
+
+ // todo: Store the page-layouts as well.
+ // The page layouts are derived from a common template, but as the
+ // header-heights differ, we have to derive these beasts instead
+ // of copying them
+
+ final OfficeStylesCollection officeStylesCollection = getGlobalStylesCollection();
+ final OfficeMasterStyles officeMasterStyles = officeStylesCollection.getMasterStyles();
+ final String pageLayoutTemplate = currentMasterPage.getPageLayout();
+ if (pageLayoutTemplate == null)
+ {
+ // there is no pagelayout. Create one ..
+ final String derivedLayout = masterPageFactory.createPageStyle(getGlobalStylesCollection().getAutomaticStyles(), headerSize, footerSize);
+ currentMasterPage.setPageLayout(derivedLayout);
+ }
+ else
+ {
+ final String derivedLayout = masterPageFactory.derivePageStyle(pageLayoutTemplate,
+ getPredefinedStylesCollection().getAutomaticStyles(),
+ getGlobalStylesCollection().getAutomaticStyles(), headerSize, footerSize);
+ currentMasterPage.setPageLayout(derivedLayout);
+ }
+ officeMasterStyles.addMasterPage(currentMasterPage);
+ masterPageName = currentMasterPage.getStyleName();
+ }
+ else
+ {
+ // retrieve the master-page.
+ final OfficeMasterPage masterPage = masterPageFactory.getMasterPage(STANDARD, activePageHeader, activePageFooter);
+ if (ObjectUtilities.equal(masterPage.getStyleName(), currentMasterPage.getStyleName()))
+ {
+ // They are the same,
+ masterPageName = null;
+ }
+ else
+ {
+ // reuse the existing one ..
+ currentMasterPage = masterPage;
+ masterPageName = currentMasterPage.getStyleName();
+ }
+ }
+
+ // if either the pageheader or footer are *not* printed with the
+ // report header, then this implies that we have to insert a manual
+ // pagebreak at the end of the section.
+
+ if ((!printHeader && context.getHeader() != null) || (!printFooter && context.getFooter() != null))
+ {
+ setPagebreakDefinition(new PageBreakDefinition(isResetPageNumber()));
+ }
+
+ return masterPageName;
+ }
+
+ private boolean isColumnBreakPending()
+ {
+ return columnBreakPending;
+ }
+
+ private void setColumnBreakPending(final boolean columnBreakPending)
+ {
+ this.columnBreakPending = columnBreakPending;
+ }
+
+ private Integer parseInt(final Object value)
+ {
+ if (value instanceof Number)
+ {
+ final Number n = (Number) value;
+ return IntegerCache.getInteger(n.intValue());
+ }
+ if (value instanceof String)
+ {
+ try
+ {
+ return IntegerCache.getInteger(Integer.parseInt((String) value));
+ }
+ catch (NumberFormatException nfe)
+ {
+ //return null; // ignore
+ }
+ }
+ return null;
+ }
+
+ private BufferState applyColumnsToPageBand(final BufferState contents,
+ final int numberOfColumns)
+ throws IOException, ReportProcessingException
+ {
+ if (numberOfColumns <= 1)
+ {
+ return contents;
+ }
+ startBuffering(getGlobalStylesCollection(), true);
+ // derive section style ..
+
+ // This is a rather cheap solution to the problem. In a sane world, we would have to feed the
+ // footer multiple times. Right now, we simply rely on the balacing, which should make sure that
+ // the column's content are evenly distributed.
+ final XmlWriter writer = getXmlWriter();
+ final AttributeList attrs = new AttributeList();
+ attrs.setAttribute(OfficeNamespaces.TEXT_NS, OfficeToken.STYLE_NAME, generateSectionStyle(numberOfColumns));
+ attrs.setAttribute(OfficeNamespaces.TEXT_NS, NAME, sectionNames.generateName("Section"));
+ writer.writeTag(OfficeNamespaces.TEXT_NS, "section", attrs, XmlWriterSupport.OPEN);
+ for (int i = 0; i < numberOfColumns; i++)
+ {
+ writer.writeStream(contents.getXmlAsReader());
+ }
+
+ writer.writeCloseTag();
+ return finishBuffering();
+ }
+
+ private String generateSectionStyle(final int columnCount)
+ {
+ final OfficeStyles automaticStyles = getStylesCollection().getAutomaticStyles();
+ final String styleName = getAutoStyleNameGenerator().generateName("auto_section_style");
+
+ final Section sectionProperties = new Section();
+ sectionProperties.setNamespace(OfficeNamespaces.STYLE_NS);
+ sectionProperties.setType("section-properties");
+ sectionProperties.setAttribute(OfficeNamespaces.FO_NS, OfficeToken.BACKGROUND_COLOR, "transparent");
+ sectionProperties.setAttribute(OfficeNamespaces.TEXT_NS, "dont-balance-text-columns", OfficeToken.FALSE);
+ sectionProperties.setAttribute(OfficeNamespaces.STYLE_NS, "editable", OfficeToken.FALSE);
+
+ if (columnCount > 1)
+ {
+ final Section columns = new Section();
+ columns.setNamespace(OfficeNamespaces.STYLE_NS);
+ columns.setType("columns");
+ columns.setAttribute(OfficeNamespaces.FO_NS, "column-count", String.valueOf(columnCount));
+ columns.setAttribute(OfficeNamespaces.STYLE_NS, "column-gap", "0cm");
+ sectionProperties.addNode(columns);
+
+// final Section columnSep = new Section();
+// columnSep.setNamespace(OfficeNamespaces.STYLE_NS);
+// columnSep.setType("column-sep");
+// columnSep.setAttribute(OfficeNamespaces.STYLE_NS, "width", "0.035cm");
+// columnSep.setAttribute(OfficeNamespaces.STYLE_NS, "color", "#000000");
+// columnSep.setAttribute(OfficeNamespaces.STYLE_NS, "height", "100%");
+// columns.addNode(columnSep);
+
+ for (int i = 0; i < columnCount; i++)
+ {
+ final Section column = new Section();
+ column.setNamespace(OfficeNamespaces.STYLE_NS);
+ column.setType("column");
+ column.setAttribute(OfficeNamespaces.STYLE_NS, "rel-width", "1*");
+ column.setAttribute(OfficeNamespaces.FO_NS, "start-indent", "0cm");
+ column.setAttribute(OfficeNamespaces.FO_NS, "end-indent", "0cm");
+ columns.addNode(column);
+ }
+ }
+
+ final OfficeStyle style = new OfficeStyle();
+ style.setNamespace(OfficeNamespaces.STYLE_NS);
+ style.setType("style");
+ style.setAttribute(OfficeNamespaces.STYLE_NS, NAME, styleName);
+ style.setAttribute(OfficeNamespaces.STYLE_NS, "family", "section");
+ style.addNode(sectionProperties);
+
+ automaticStyles.addStyle(style);
+ return styleName;
+ }
+
+ /**
+ * Starts the output of a new office document. This method writes the generic 'office:document-content' tag along with
+ * all known namespace declarations.
+ *
+ * @param report the report object.
+ * @throws org.jfree.report.DataSourceException
+ * if there was an error accessing the datasource
+ * @throws org.jfree.report.ReportProcessingException
+ * if some other error occured.
+ */
+ public void startReport(final ReportStructureRoot report)
+ throws DataSourceException, ReportProcessingException
+ {
+ super.startReport(report);
+ variablesDeclarations = new VariablesDeclarations();
+ detailBandProcessingState = DETAIL_SECTION_WAIT;
+ sectionNames.reset();
+
+ pageFooterOnReportFooter = false;
+ pageFooterOnReportHeader = false;
+ pageHeaderOnReportFooter = false;
+ pageHeaderOnReportHeader = false;
+ contentProcessingState = TextRawReportTarget.CP_SETUP;
+
+ activePageContext.clear();
+ activePageContext.push(new PageContext());
+
+ final OfficeStylesCollection predefStyles = getPredefinedStylesCollection();
+ masterPageFactory = new MasterPageFactory(predefStyles.getMasterStyles());
+
+ predefStyles.getAutomaticStyles().addStyle(createVariablesStyle(true));
+ predefStyles.getAutomaticStyles().addStyle(createVariablesStyle(false));
+ }
+
+ private OfficeStyle createVariablesStyle(final boolean keepWithNext)
+ {
+ final OfficeStyle variablesSectionStyle = new OfficeStyle();
+ variablesSectionStyle.setStyleFamily(OfficeToken.PARAGRAPH);
+ if (keepWithNext)
+ {
+ variablesSectionStyle.setStyleName(TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT);
+ }
+ else
+ {
+ variablesSectionStyle.setStyleName(TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITHOUT_KEEPWNEXT);
+ }
+
+ final Section paragraphProps = new Section();
+ paragraphProps.setNamespace(OfficeNamespaces.STYLE_NS);
+ paragraphProps.setType(PARAGRAPH_PROPERTIES);
+ paragraphProps.setAttribute(OfficeNamespaces.FO_NS, OfficeToken.BACKGROUND_COLOR, "transparent");
+ paragraphProps.setAttribute(OfficeNamespaces.FO_NS, "text-align", "start");
+ paragraphProps.setAttribute(OfficeNamespaces.FO_NS, KEEP_WITH_NEXT, ALWAYS);
+ paragraphProps.setAttribute(OfficeNamespaces.FO_NS, KEEP_TOGETHER, ALWAYS);
+ paragraphProps.setAttribute(OfficeNamespaces.STYLE_NS, "vertical-align", "top");
+ variablesSectionStyle.addNode(paragraphProps);
+
+ final Section textProps = new Section();
+ textProps.setNamespace(OfficeNamespaces.STYLE_NS);
+ textProps.setType("text-properties");
+ textProps.setAttribute(OfficeNamespaces.FO_NS, "font-variant", NORMAL);
+ textProps.setAttribute(OfficeNamespaces.FO_NS, "text-transform", NONE);
+ textProps.setAttribute(OfficeNamespaces.FO_NS, "color", "#ffffff");
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-outline", OfficeToken.FALSE);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-blinking", OfficeToken.FALSE);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-line-through-style", NONE);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-line-through-mode", "continuous");
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-position", "0% 100%");
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "font-name", "Tahoma");
+ textProps.setAttribute(OfficeNamespaces.FO_NS, "font-size", "1pt");
+ textProps.setAttribute(OfficeNamespaces.FO_NS, "letter-spacing", NORMAL);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "letter-kerning", OfficeToken.FALSE);
+ textProps.setAttribute(OfficeNamespaces.FO_NS, "font-style", NORMAL);
+ textProps.setAttribute(OfficeNamespaces.FO_NS, "text-shadow", NONE);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-underline-style", NONE);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-underline-mode", "continuous");
+ textProps.setAttribute(OfficeNamespaces.FO_NS, "font-weight", NORMAL);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-rotation-angle", "0");
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-emphasize", NONE);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-combine", NONE);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-combine-start-char", "");
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-combine-end-char", "");
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-blinking", OfficeToken.FALSE);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-scale", "100%");
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "font-relief", NONE);
+ textProps.setAttribute(OfficeNamespaces.STYLE_NS, "text-display", NONE);
+ variablesSectionStyle.addNode(textProps);
+ return variablesSectionStyle;
+ }
+
+ protected void startContent(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, "text", null, XmlWriterSupport.OPEN);
+
+ writeNullDate();
+
+ // now start the buffering. We have to insert the variables declaration
+ // later ..
+ startBuffering(getStylesCollection(), true);
+
+ final Object columnCountRaw = attrs.getAttribute(OfficeNamespaces.FO_NS, "column-count");
+ final Integer colCount = parseInt(columnCountRaw);
+ if (colCount != null)
+ {
+ final PageContext pageContext = getCurrentContext();
+ pageContext.setColumnCount(colCount);
+ }
+
+ }
+
+ protected void startOther(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ final String namespace = ReportTargetUtil.getNamespaceFromAttribute(attrs);
+ final String elementType = ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+
+ if (ObjectUtilities.equal(JFreeReportInfo.REPORT_NAMESPACE, namespace))
+ {
+ if (ObjectUtilities.equal(OfficeToken.IMAGE, elementType))
+ {
+ startImageProcessing(attrs);
+ }
+ else if (ObjectUtilities.equal(OfficeToken.OBJECT_OLE, elementType) && getCurrentRole() != ROLE_TEMPLATE)
+ {
+ startChartProcessing(attrs);
+ }
+ return;
+ }
+ else if (isFilteredNamespace(namespace))
+ {
+ throw new IllegalStateException("This element should be hidden: " + namespace + ", " + elementType);
+ }
+
+ if (isTableMergeActive() && detailBandProcessingState == DETAIL_SECTION_OTHER_PRINTED && ObjectUtilities.equal(OfficeNamespaces.TABLE_NS, namespace) && ObjectUtilities.equal(OfficeToken.TABLE_COLUMNS, elementType))
+ {
+ // Skip the columns section if the tables get merged..
+ startBuffering(getStylesCollection(), true);
+ }
+ else
+ {
+ openSection();
+
+ final boolean isTableNS = ObjectUtilities.equal(OfficeNamespaces.TABLE_NS, namespace);
+ if (isTableNS)
+ {
+ if (ObjectUtilities.equal(OfficeToken.TABLE, elementType))
+ {
+ startTable(attrs);
+ return;
+ }
+
+ if (ObjectUtilities.equal(OfficeToken.TABLE_ROW, elementType))
+ {
+ startRow(attrs);
+ return;
+ }
+ }
+
+
+ if (ObjectUtilities.equal(OfficeNamespaces.TEXT_NS, namespace))
+ {
+ if (ObjectUtilities.equal("variable-set", elementType))
+ {
+ // update the variables-declaration thingie ..
+ final String varName = (String) attrs.getAttribute(OfficeNamespaces.TEXT_NS, NAME);
+ final String varType = (String) attrs.getAttribute(OfficeNamespaces.OFFICE_NS, FormatValueUtility.VALUE_TYPE);
+ final String newVarName = variablesDeclarations.produceVariable(varName, varType);
+ attrs.setAttribute(OfficeNamespaces.TEXT_NS, NAME, newVarName);
+ }
+ else if (ObjectUtilities.equal("variable-get", elementType))
+ {
+ final String varName = (String) attrs.getAttribute(OfficeNamespaces.TEXT_NS, NAME);
+ final String varType = (String) attrs.getAttribute(OfficeNamespaces.OFFICE_NS, FormatValueUtility.VALUE_TYPE);
+ final String newVarName = variablesDeclarations.produceVariable(varName, varType);
+ attrs.setAttribute(OfficeNamespaces.TEXT_NS, NAME, newVarName);
+ // this one must not be written, as the DTD does not declare it.
+ // attrs.setAttribute(OfficeNamespaces.OFFICE_NS, FormatValueUtility.VALUE_TYPE, null);
+ }
+ }
+
+ if (tableLayoutConfig == TABLE_LAYOUT_VARIABLES_PARAGRAPH && variables != null)
+ {
+ // This cannot happen as long as the report sections only contain tables. But at some point in the
+ // future they will be made of paragraphs, and then we are prepared ..
+ // LOGGER.debug("Variables-Section in own paragraph " + variables);
+
+ StyleUtilities.copyStyle(OfficeToken.PARAGRAPH,
+ TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT, getStylesCollection(),
+ getGlobalStylesCollection(), getPredefinedStylesCollection());
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeTag(OfficeNamespaces.TEXT_NS, OfficeToken.P, OfficeToken.STYLE_NAME,
+ TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT, XmlWriterSupport.OPEN);
+ xmlWriter.writeText(variables);
+ xmlWriter.writeCloseTag();
+ variables = null;
+ }
+
+ final boolean keepTogetherOnParagraph = true;
+
+ if (keepTogetherOnParagraph)
+ {
+ if (ReportTargetUtil.isElementOfType(OfficeNamespaces.TEXT_NS, OfficeToken.P, attrs))
+ {
+ final int keepTogetherState = getCurrentContext().getKeepTogether();
+ if (!firstCellSeen && (sectionKeepTogether || keepTogetherState == PageContext.KEEP_TOGETHER_GROUP))
+ {
+ OfficeStyle style = null;
+ final String styleName = (String) attrs.getAttribute(OfficeNamespaces.TEXT_NS, OfficeToken.STYLE_NAME);
+ if (styleName == null)
+ {
+ final boolean keep = (keepTogetherState == PageContext.KEEP_TOGETHER_GROUP || expectedTableRowCount > 0) && isParentKeepTogether();
+ final ArrayList propertyNameSpaces = new ArrayList();
+ final ArrayList propertyNames = new ArrayList();
+ final ArrayList propertyValues = new ArrayList();
+
+ propertyNameSpaces.add(OfficeNamespaces.FO_NS);
+ propertyNameSpaces.add(OfficeNamespaces.FO_NS);
+ propertyNames.add(KEEP_TOGETHER);
+ propertyValues.add(ALWAYS);
+ if (keep)
+ {
+ propertyNames.add(KEEP_WITH_NEXT);
+ propertyValues.add(ALWAYS);
+ }
+ else
+ {
+ propertyNames.add(KEEP_WITH_NEXT);
+ propertyValues.add(null);
+ }
+ style = StyleUtilities.queryStyleByProperties(getStylesCollection(), OfficeToken.PARAGRAPH, PARAGRAPH_PROPERTIES, propertyNameSpaces, propertyNames, propertyValues);
+ }
+ if (style == null)
+ {
+ style = deriveStyle(OfficeToken.PARAGRAPH, styleName);
+ // Lets set the 'keep-together' flag..
+
+ Element paragraphProps = style.getParagraphProperties();
+ if (paragraphProps == null)
+ {
+ paragraphProps = new Section();
+ paragraphProps.setNamespace(OfficeNamespaces.STYLE_NS);
+ paragraphProps.setType(PARAGRAPH_PROPERTIES);
+ style.addNode(paragraphProps);
+ }
+ paragraphProps.setAttribute(OfficeNamespaces.FO_NS, KEEP_TOGETHER, ALWAYS);
+
+ // We prevent pagebreaks within the two adjacent rows (this one and the next one) if
+ // either a group-wide keep-together is defined or if we haven't reached the end of the
+ // current section yet.
+ if ((keepTogetherState == PageContext.KEEP_TOGETHER_GROUP || expectedTableRowCount > 0) && isParentKeepTogether())
+ {
+ paragraphProps.setAttribute(OfficeNamespaces.FO_NS, KEEP_WITH_NEXT, ALWAYS);
+ }
+ }
+
+ attrs.setAttribute(OfficeNamespaces.TEXT_NS, OfficeToken.STYLE_NAME, style.getStyleName());
+ }
+ }
+ }
+
+ if (ObjectUtilities.equal(OfficeNamespaces.DRAWING_NS, namespace) && ObjectUtilities.equal(OfficeToken.FRAME, elementType))
+ {
+ final String styleName = (String) attrs.getAttribute(OfficeNamespaces.DRAWING_NS, OfficeToken.STYLE_NAME);
+ final OfficeStyle predefAutoStyle = getPredefinedStylesCollection().getAutomaticStyles().getStyle(OfficeToken.GRAPHIC, styleName);
+ if (predefAutoStyle != null)
+ {
+ // special ole handling
+ final Element graphicProperties = predefAutoStyle.getGraphicProperties();
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, VERTICAL_POS, "from-top");
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, HORIZONTAL_POS, "from-left");
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, "vertical-rel", "paragraph-content");
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, "horizontal-rel", "paragraph");
+ graphicProperties.setAttribute(OfficeNamespaces.STYLE_NS, "flow-with-text", "false");
+ graphicProperties.setAttribute(OfficeNamespaces.DRAWING_NS, "ole-draw-aspect", "1");
+
+ // attrs.setAttribute(OfficeNamespaces.DRAWING_NS, OfficeToken.STYLE_NAME, predefAutoStyle.getStyleName());
+ }
+ }
+
+ // process the styles as usual
+ performStyleProcessing(attrs);
+ final XmlWriter xmlWriter = getXmlWriter();
+ final AttributeList attrList = buildAttributeList(attrs);
+ xmlWriter.writeTag(namespace, elementType, attrList, XmlWriterSupport.OPEN);
+
+ if (tableLayoutConfig != TABLE_LAYOUT_VARIABLES_PARAGRAPH
+ && variables != null
+ && !isRepeatingSection()
+ && ReportTargetUtil.isElementOfType(OfficeNamespaces.TEXT_NS, OfficeToken.P, attrs))
+ {
+ //LOGGER.debug("Variables-Section in existing cell " + variables);
+ xmlWriter.writeText(variables);
+ variables = null;
+ }
+ }
+ }
+
+ private void startRow(final AttributeMap attrs)
+ throws IOException, ReportProcessingException
+ {
+ firstCellSeen = false;
+ expectedTableRowCount -= 1;
+ final String rowStyle = (String) attrs.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ final CSSNumericValue rowHeight = computeRowHeight(rowStyle);
+ // LOGGER.debug("Adding row-Style: " + rowStyle + " " + rowHeight);
+ sectionHeight.add(rowHeight);
+
+// if (expectedTableRowCount > 0)
+// {
+// // Some other row. Create a keep-together
+//
+// }
+// else
+// {
+// // This is the last row before the section will end.
+// // or (in some weird cases) There is no information when the row will end.
+// // Anyway, if we are here, we do not create a keep-together style on the table-row ..
+// }
+ // process the styles as usual
+ performStyleProcessing(attrs);
+
+ final AttributeList attrList = buildAttributeList(attrs);
+ getXmlWriter().writeTag(OfficeNamespaces.TABLE_NS, OfficeToken.TABLE_ROW, attrList, XmlWriterSupport.OPEN);
+ }
+
+ private void startTable(final AttributeMap attrs)
+ throws ReportProcessingException, IOException
+ {
+ final Integer trc = (Integer) attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "table-row-count");
+ if (trc == null)
+ {
+ expectedTableRowCount = -1;
+ }
+ else
+ {
+ expectedTableRowCount = trc;
+ }
+
+ if (isSectionPagebreakBefore(attrs))
+ {
+ // force a pagebreak ..
+ setPagebreakDefinition(new PageBreakDefinition(isResetPageNumber()));
+ }
+
+ // its a table. This means, it is a root-level element
+ final PageBreakDefinition breakDefinition;
+ String masterPageName = null;
+ final int currentRole = getCurrentRole();
+ if (contentProcessingState == TextRawReportTarget.CP_FIRST_TABLE)
+ {
+ contentProcessingState = TextRawReportTarget.CP_NEXT_TABLE;
+
+ // Processing the report header now.
+ if (currentRole == OfficeDocumentReportTarget.ROLE_REPORT_HEADER)
+ {
+ breakDefinition = new PageBreakDefinition(isResetPageNumber());
+ masterPageName = createMasterPage(pageHeaderOnReportHeader, pageFooterOnReportHeader);
+ if (masterPageName == null)
+ {
+ // we should always have a master-page ...
+ masterPageName = currentMasterPage.getStyleName();
+ }
+ }
+ else if (currentRole == OfficeDocumentReportTarget.ROLE_REPORT_FOOTER)
+ {
+ breakDefinition = new PageBreakDefinition(isResetPageNumber());
+ masterPageName = createMasterPage(pageHeaderOnReportFooter, pageFooterOnReportFooter);
+ if (masterPageName == null && isSectionPagebreakBefore(attrs))
+ {
+ // If we have a manual pagebreak, then activate the current master-page again.
+ masterPageName = currentMasterPage.getStyleName();
+ }
+ // But we skip this (and therefore the resulting pagebreak) if there is no manual break
+ // and no other condition that would force an break.
+ }
+ else if (currentRole == OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_HEADER || currentRole == OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_FOOTER)
+ {
+ breakDefinition = null;
+ // no pagebreaks ..
+ }
+ else if (currentMasterPage == null || isPagebreakPending())
+ {
+ // Must be the first table, as we have no master-page yet.
+ masterPageName = createMasterPage(true, true);
+ setPagebreakDefinition(null);
+ if (masterPageName == null)
+ {
+ // we should always have a master-page ...
+ masterPageName = currentMasterPage.getStyleName();
+ }
+ breakDefinition = new PageBreakDefinition(isResetPageNumber());
+ }
+ else
+ {
+ breakDefinition = null;
+ }
+ }
+ else if (isPagebreakPending() && currentRole != OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_HEADER && currentRole != OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_FOOTER)
+ {
+ // Derive an automatic style for the pagebreak.
+// LOGGER.debug("Manual pagebreak (within the section): " + getCurrentRole());
+ breakDefinition = getPagebreakDefinition();
+ setPagebreakDefinition(null);
+ masterPageName = createMasterPage(true, true);
+ if (masterPageName == null || isSectionPagebreakBefore(attrs))
+ {
+ // If we have a manual pagebreak, then activate the current master-page again.
+ masterPageName = currentMasterPage.getStyleName();
+ }
+ }
+ else
+ {
+ breakDefinition = null;
+ }
+
+ final XmlWriter xmlWriter = getXmlWriter();
+ if (detailBandProcessingState == DETAIL_SECTION_OTHER_PRINTED && masterPageName != null)
+ {
+ // close the last table-tag, we will open a new one
+ xmlWriter.writeCloseTag();
+ // Reset the detail-state to 'started' so that the table's columns get printed now.
+ detailBandProcessingState = DETAIL_SECTION_OTHER_STARTED;
+ }
+
+ if (tableLayoutConfig == TABLE_LAYOUT_VARIABLES_PARAGRAPH && variables != null)
+ {
+ if (masterPageName != null)
+ {
+ // write a paragraph that uses the VARIABLES_HIDDEN_STYLE as
+ // primary style. Derive that one and add the manual pagebreak.
+ // The predefined style already has the 'keep-together' flags set.
+// LOGGER.debug("Variables-Section with new Master-Page " + variables + " " + masterPageName);
+
+ final OfficeStyle style = deriveStyle(OfficeToken.PARAGRAPH, TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT);
+ style.setAttribute(OfficeNamespaces.STYLE_NS, "master-page-name", masterPageName);
+ if (breakDefinition.isResetPageNumber())
+ {
+ final Element paragraphProps = produceFirstChild(style, OfficeNamespaces.STYLE_NS, PARAGRAPH_PROPERTIES);
+ paragraphProps.setAttribute(OfficeNamespaces.STYLE_NS, "page-number", "1");
+ }
+ if (isColumnBreakPending())
+ {
+ final Element paragraphProps = produceFirstChild(style, OfficeNamespaces.STYLE_NS, PARAGRAPH_PROPERTIES);
+ paragraphProps.setAttribute(OfficeNamespaces.FO_NS, "break-before", "column");
+ setColumnBreakPending(false);
+ }
+ xmlWriter.writeTag(OfficeNamespaces.TEXT_NS, OfficeToken.P, OfficeToken.STYLE_NAME, style.getStyleName(), XmlWriterSupport.OPEN);
+
+ masterPageName = null;
+ //breakDefinition = null;
+ }
+ else if (isColumnBreakPending())
+ {
+ setColumnBreakPending(false);
+
+ final OfficeStyle style = deriveStyle(OfficeToken.PARAGRAPH, TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT);
+ final Element paragraphProps = produceFirstChild(style, OfficeNamespaces.STYLE_NS, PARAGRAPH_PROPERTIES);
+ paragraphProps.setAttribute(OfficeNamespaces.STYLE_NS, "page-number", "1");
+
+ xmlWriter.writeTag(OfficeNamespaces.TEXT_NS, OfficeToken.P, OfficeToken.STYLE_NAME, style.getStyleName(), XmlWriterSupport.OPEN);
+ }
+ else
+ {
+ // Write a paragraph without adding the pagebreak. We can reuse the global style, but we have to make
+ // sure that the style is part of the current 'auto-style' collection.
+// LOGGER.debug("Variables-Section " + variables);
+
+ StyleUtilities.copyStyle(OfficeToken.PARAGRAPH,
+ TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT, getStylesCollection(),
+ getGlobalStylesCollection(), getPredefinedStylesCollection());
+ xmlWriter.writeTag(OfficeNamespaces.TEXT_NS, OfficeToken.P, OfficeToken.STYLE_NAME,
+ TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT, XmlWriterSupport.OPEN);
+ }
+ xmlWriter.writeText(variables);
+ xmlWriter.writeCloseTag();
+ variables = null;
+ }
+
+ final boolean keepWithNext = isKeepTableWithNext();
+ final boolean localKeepTogether = OfficeToken.TRUE.equals(attrs.getAttribute(OfficeNamespaces.OOREPORT_NS, KEEP_TOGETHER));
+ final boolean tableMergeActive = isTableMergeActive();
+ this.sectionKeepTogether = tableMergeActive && localKeepTogether;
+
+ // Check, whether we have a reason to derive a style...
+ if (masterPageName != null || (!tableMergeActive && (localKeepTogether || keepWithNext)) || isColumnBreakPending())
+ {
+ final String styleName = (String) attrs.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+ final OfficeStyle style = deriveStyle("table", styleName);
+
+ if (masterPageName != null)
+ {
+// LOGGER.debug("Starting a new MasterPage: " + masterPageName);
+ // Patch the current styles.
+ // This usually only happens on Table-Styles or Paragraph-Styles
+ style.setAttribute(OfficeNamespaces.STYLE_NS, "master-page-name", masterPageName);
+ if (breakDefinition.isResetPageNumber())
+ {
+ final Element paragraphProps = produceFirstChild(style, OfficeNamespaces.STYLE_NS, PARAGRAPH_PROPERTIES);
+ paragraphProps.setAttribute(OfficeNamespaces.STYLE_NS, "page-number", "1");
+ }
+ }
+ if (isColumnBreakPending())
+ {
+ final Element paragraphProps = produceFirstChild(style, OfficeNamespaces.STYLE_NS, PARAGRAPH_PROPERTIES);
+ paragraphProps.setAttribute(OfficeNamespaces.FO_NS, "break-before", "column");
+ setColumnBreakPending(false);
+ }
+
+ // Inhibit breaks inside the table only if it has been defined and if we do not create one single
+ // big detail section. In that case, this flag would be invalid and would cause layout-errors.
+ if (!tableMergeActive)
+ {
+ if (localKeepTogether)
+ {
+ final Element tableProps = produceFirstChild(style, OfficeNamespaces.STYLE_NS, TABLE_PROPERTIES);
+ tableProps.setAttribute(OfficeNamespaces.STYLE_NS, MAY_BREAK_BETWEEN_ROWS, OfficeToken.FALSE);
+ }
+ }
+ else
+ {
+ if (detailBandProcessingState == DETAIL_SECTION_WAIT)
+ {
+ detailBandProcessingState = DETAIL_SECTION_FIRST_STARTED;
+ }
+ else if (detailBandProcessingState == DETAIL_SECTION_FIRST_PRINTED)
+ {
+ detailBandProcessingState = DETAIL_SECTION_OTHER_STARTED;
+ }
+ }
+ if (keepWithNext)
+ {
+ boolean addKeepWithNext = true;
+ if (currentRole == ROLE_GROUP_FOOTER)
+ {
+ addKeepWithNext = isParentKeepTogether();
+ }
+
+ final Element tableProps = produceFirstChild(style, OfficeNamespaces.STYLE_NS, TABLE_PROPERTIES);
+ tableProps.setAttribute(OfficeNamespaces.STYLE_NS, MAY_BREAK_BETWEEN_ROWS, OfficeToken.FALSE);
+ if (addKeepWithNext)
+ {
+ tableProps.setAttribute(OfficeNamespaces.FO_NS, KEEP_WITH_NEXT, ALWAYS);
+ // A keep-with-next does not work, if the may-break-betweek rows is not set to false ..
+ }
+ }
+ attrs.setAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME, style.getStyleName());
+ // no need to copy the styles, this was done while deriving the
+ // style ..
+ }
+ else
+ {
+ // Check, whether we may be able to skip the table.
+ if (tableMergeActive)
+ {
+ if (detailBandProcessingState == DETAIL_SECTION_OTHER_PRINTED)
+ {
+ // Skip the whole thing ..
+ return;
+ }
+ else if (detailBandProcessingState == DETAIL_SECTION_WAIT)
+ {
+ if (keepWithNext)
+ {
+ final String styleName = (String) attrs.getAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME);
+
+ final OfficeStyle style = deriveStyle(OfficeToken.TABLE, styleName);
+ final Element tableProps = produceFirstChild(style, OfficeNamespaces.STYLE_NS, TABLE_PROPERTIES);
+ // A keep-with-next does not work, if the may-break-betweek rows is not set to false ..
+ tableProps.setAttribute(OfficeNamespaces.STYLE_NS, MAY_BREAK_BETWEEN_ROWS, OfficeToken.FALSE);
+ final String hasGroupFooter = (String) attrs.getAttribute(JFreeReportInfo.REPORT_NAMESPACE, "has-group-footer");
+ if (hasGroupFooter != null && hasGroupFooter.equals(OfficeToken.TRUE))
+ {
+ tableProps.setAttribute(OfficeNamespaces.FO_NS, KEEP_WITH_NEXT, ALWAYS);
+ }
+
+ attrs.setAttribute(OfficeNamespaces.TABLE_NS, OfficeToken.STYLE_NAME, style.getStyleName());
+ }
+ detailBandProcessingState = DETAIL_SECTION_FIRST_STARTED;
+ }
+ else if (detailBandProcessingState == DETAIL_SECTION_FIRST_PRINTED)
+ {
+ detailBandProcessingState = DETAIL_SECTION_OTHER_STARTED;
+ }
+ }
+
+ // process the styles as usual
+ performStyleProcessing(attrs);
+ }
+
+ final String namespace = ReportTargetUtil.getNamespaceFromAttribute(attrs);
+ final String elementType = ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+ final AttributeList attrList = buildAttributeList(attrs);
+ xmlWriter.writeTag(namespace, elementType, attrList, XmlWriterSupport.OPEN);
+ }
+
+ private boolean isParentKeepTogether()
+ {
+ PageContext context = getCurrentContext();
+ if (context != null)
+ {
+ context = context.getParent();
+ if (context != null)
+ {
+ return context.getKeepTogether() == PageContext.KEEP_TOGETHER_GROUP;
+ }
+ }
+ return false;
+ }
+
+ private boolean isTableMergeActive()
+ {
+ return getCurrentRole() == ROLE_DETAIL && tableLayoutConfig == TABLE_LAYOUT_SINGLE_DETAIL_TABLE;
+ }
+
+ private void openSection()
+ throws IOException
+ {
+ if (isRepeatingSection())
+ {
+ // repeating sections have other ways of defining columns ..
+ return;
+ }
+ if (getCurrentRole() == ROLE_TEMPLATE || getCurrentRole() == ROLE_SPREADSHEET_PAGE_HEADER || getCurrentRole() == ROLE_SPREADSHEET_PAGE_FOOTER)
+ {
+ // the template section would break the multi-column stuff and we dont open up sections there
+ // anyway ..
+ return;
+ }
+
+ final PageContext pageContext = getCurrentContext();
+ final Integer columnCount = pageContext.getColumnCount();
+ if (columnCount != null && !pageContext.isSectionOpen())
+ {
+ final AttributeList attrs = new AttributeList();
+ attrs.setAttribute(OfficeNamespaces.TEXT_NS, OfficeToken.STYLE_NAME, generateSectionStyle(columnCount));
+ attrs.setAttribute(OfficeNamespaces.TEXT_NS, NAME, sectionNames.generateName("Section"));
+ getXmlWriter().writeTag(OfficeNamespaces.TEXT_NS, "section", attrs, XmlWriterSupport.OPEN);
+
+ pageContext.setSectionOpen(true);
+ }
+
+ }
+
+ protected void startReportSection(final AttributeMap attrs, final int role)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ sectionHeight = new LengthCalculator();
+ if (role == OfficeDocumentReportTarget.ROLE_TEMPLATE || role == OfficeDocumentReportTarget.ROLE_SPREADSHEET_PAGE_HEADER || role == OfficeDocumentReportTarget.ROLE_SPREADSHEET_PAGE_FOOTER)
+ {
+ // Start buffering with an dummy styles-collection, so that the global styles dont get polluted ..
+ startBuffering(new OfficeStylesCollection(), true);
+ }
+ else if (role == OfficeDocumentReportTarget.ROLE_PAGE_HEADER)
+ {
+ startBuffering(getGlobalStylesCollection(), true);
+ pageHeaderOnReportHeader = PageSection.isPrintWithReportHeader(attrs);
+ pageHeaderOnReportFooter = PageSection.isPrintWithReportFooter(attrs);
+ }
+ else if (role == OfficeDocumentReportTarget.ROLE_PAGE_FOOTER)
+ {
+ startBuffering(getGlobalStylesCollection(), true);
+ pageFooterOnReportHeader = PageSection.isPrintWithReportHeader(attrs);
+ pageFooterOnReportFooter = PageSection.isPrintWithReportFooter(attrs);
+ }
+ else if (role == OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_HEADER || role == OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_FOOTER)
+ {
+ startBuffering(getGlobalStylesCollection(), true);
+ }
+ else if (role == OfficeDocumentReportTarget.ROLE_VARIABLES)
+ {
+ startBuffering(getGlobalStylesCollection(), false);
+ }
+ else
+ {
+ contentProcessingState = TextRawReportTarget.CP_FIRST_TABLE;
+ if (role == OfficeDocumentReportTarget.ROLE_GROUP_HEADER || role == OfficeDocumentReportTarget.ROLE_GROUP_FOOTER)
+ {
+ // if we have a repeating header, then skip the first one ..
+ // if this is a repeating footer, skip the last one. This means,
+ // we have to buffer all group footers and wait for the next section..
+ startBuffering(getContentStylesCollection(), true);
+ }
+
+ if (role != OfficeDocumentReportTarget.ROLE_DETAIL)
+ {
+ // reset the detail-state. The flag will be updated on startTable and endOther(Table) if the
+ // current role is ROLE_DETAIL
+ detailBandProcessingState = DETAIL_SECTION_WAIT;
+ }
+ }
+ }
+
+ protected void startGroup(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ super.startGroup(attrs);
+ final PageContext pageContext = new PageContext(getCurrentContext());
+ activePageContext.push(pageContext);
+
+ final Object resetPageNumber = attrs.getAttribute(OfficeNamespaces.OOREPORT_NS, "reset-page-number");
+ if (OfficeToken.TRUE.equals(resetPageNumber))
+ {
+ setPagebreakDefinition(new PageBreakDefinition(true));
+ }
+
+ final Object keepTogether = attrs.getAttribute(OfficeNamespaces.OOREPORT_NS, KEEP_TOGETHER);
+ if ("whole-group".equals(keepTogether))
+ {
+ pageContext.setKeepTogether(PageContext.KEEP_TOGETHER_GROUP);
+ }
+ else if ("with-first-detail".equals(keepTogether) && pageContext.getKeepTogether() != PageContext.KEEP_TOGETHER_GROUP)
+ {
+ pageContext.setKeepTogether(PageContext.KEEP_TOGETHER_FIRST_DETAIL);
+ }
+
+ final Object columnCountRaw = attrs.getAttribute(OfficeNamespaces.FO_NS, "column-count");
+ final Integer colCount = parseInt(columnCountRaw);
+ if (colCount != null)
+ {
+ pageContext.setColumnCount(colCount);
+ }
+
+ final Object newColumn = attrs.getAttribute(OfficeNamespaces.OOREPORT_NS, "start-new-column");
+ if (OfficeToken.TRUE.equals(newColumn))
+ {
+ setColumnBreakPending(true);
+ }
+ }
+
+ protected void startGroupInstance(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ if (getGroupContext().isGroupWithRepeatingSection())
+ {
+ setPagebreakDefinition(new PageBreakDefinition(isResetPageNumber()));
+ }
+ }
+
+ protected void endGroup(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ if (getGroupContext().isGroupWithRepeatingSection())
+ {
+ setPagebreakDefinition(new PageBreakDefinition(isResetPageNumber()));
+ }
+
+ super.endGroup(attrs);
+ finishSection();
+
+ activePageContext.pop();
+ }
+
+ private void finishSection()
+ throws ReportProcessingException
+ {
+ final PageContext pageContext = getCurrentContext();
+ if (pageContext.isSectionOpen())
+ {
+ pageContext.setSectionOpen(false);
+ try
+ {
+ getXmlWriter().writeCloseTag();
+ }
+ catch (IOException e)
+ {
+ throw new ReportProcessingException("IOError", e);
+ }
+ }
+ }
+
+ protected void endReportSection(final AttributeMap attrs, final int role)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ if (role == ROLE_TEMPLATE || role == OfficeDocumentReportTarget.ROLE_SPREADSHEET_PAGE_HEADER || role == OfficeDocumentReportTarget.ROLE_SPREADSHEET_PAGE_FOOTER)
+ {
+ finishBuffering();
+ return;
+ }
+
+ final CSSNumericValue result = sectionHeight.getResult();
+ if (role == OfficeDocumentReportTarget.ROLE_PAGE_HEADER)
+ {
+ final PageContext pageContext = getCurrentContext();
+ pageContext.setHeader(applyColumnsToPageBand(finishBuffering(), pageContext.getActiveColumns()).getXmlBuffer(), result);
+ }
+ else if (role == OfficeDocumentReportTarget.ROLE_PAGE_FOOTER)
+ {
+ final PageContext pageContext = getCurrentContext();
+ pageContext.setFooter(applyColumnsToPageBand(finishBuffering(), pageContext.getActiveColumns()).getXmlBuffer(), result);
+ }
+ else if (role == OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_HEADER)
+ {
+ final PageContext pageContext = getCurrentContext();
+ pageContext.setHeader(applyColumnsToPageBand(finishBuffering(), pageContext.getActiveColumns()).getXmlBuffer(), result);
+ }
+ else if (role == OfficeDocumentReportTarget.ROLE_REPEATING_GROUP_FOOTER)
+ {
+ final PageContext pageContext = getCurrentContext();
+ pageContext.setFooter(applyColumnsToPageBand(finishBuffering(), pageContext.getActiveColumns()).getXmlBuffer(), result);
+ }
+ else if (role == OfficeDocumentReportTarget.ROLE_VARIABLES)
+ {
+ if (variables == null)
+ {
+ variables = finishBuffering().getXmlBuffer();
+ }
+ else
+ {
+ variables += finishBuffering().getXmlBuffer();
+ }
+ }
+ else if (role == OfficeDocumentReportTarget.ROLE_GROUP_HEADER)
+ {
+ final String headerText = finishBuffering().getXmlBuffer();
+ final int iterationCount = getGroupContext().getParent().getIterationCount();
+ final boolean repeat = OfficeToken.TRUE.equals(attrs.getAttribute(OfficeNamespaces.OOREPORT_NS, "repeat-section"));
+ if (!repeat || iterationCount > 0)
+ {
+ getXmlWriter().writeText(headerText);
+ }
+ }
+ else if (role == OfficeDocumentReportTarget.ROLE_GROUP_FOOTER)
+ {
+ final String footerText = finishBuffering().getXmlBuffer();
+ // how do we detect whether this is the last group footer?
+ getXmlWriter().writeText(footerText);
+ }
+
+ }
+
+ public void endReport(final ReportStructureRoot report)
+ throws DataSourceException, ReportProcessingException
+ {
+ super.endReport(report);
+ variablesDeclarations = null;
+
+ try
+ {
+ // Write the settings ..
+ final AttributeList rootAttributes = new AttributeList();
+ rootAttributes.addNamespaceDeclaration("office", OfficeNamespaces.OFFICE_NS);
+ rootAttributes.addNamespaceDeclaration("config", OfficeNamespaces.CONFIG);
+ rootAttributes.addNamespaceDeclaration("ooo", OfficeNamespaces.OO2004_NS);
+ rootAttributes.setAttribute(OfficeNamespaces.OFFICE_NS, "version",
+ OfficeDocumentReportTarget.ODF_VERSION);
+ final OutputStream outputStream = getOutputRepository().createOutputStream("settings.xml", "text/xml");
+ final XmlWriter xmlWriter = new XmlWriter(new OutputStreamWriter(outputStream, "UTF-8"), createTagDescription());
+ xmlWriter.setAlwaysAddNamespace(true);
+ xmlWriter.writeXmlDeclaration("UTF-8");
+ xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, "document-settings", rootAttributes, XmlWriterSupport.OPEN);
+ xmlWriter.writeTag(OfficeNamespaces.OFFICE_NS, "settings", XmlWriterSupport.OPEN);
+ xmlWriter.writeTag(OfficeNamespaces.CONFIG, "config-item-set", NAME, "ooo:configuration-settings", XmlWriterSupport.OPEN);
+
+ final AttributeList configAttributes = new AttributeList();
+ configAttributes.setAttribute(OfficeNamespaces.CONFIG, NAME, "TableRowKeep");
+ configAttributes.setAttribute(OfficeNamespaces.CONFIG, "type", "boolean");
+ xmlWriter.writeTag(OfficeNamespaces.CONFIG, "config-item", configAttributes, XmlWriterSupport.OPEN);
+ xmlWriter.writeText(OfficeToken.TRUE);
+ xmlWriter.writeCloseTag();
+
+ xmlWriter.writeCloseTag();
+ xmlWriter.writeCloseTag();
+ xmlWriter.writeCloseTag();
+ xmlWriter.close();
+
+ copyMeta();
+ }
+ catch (IOException ioe)
+ {
+ throw new ReportProcessingException("Failed to write settings document");
+ }
+ }
+
+ protected void endOther(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ final String namespace = ReportTargetUtil.getNamespaceFromAttribute(attrs);
+ final String elementType = ReportTargetUtil.getElemenTypeFromAttribute(attrs);
+
+ final boolean isInternalNS = ObjectUtilities.equal(JFreeReportInfo.REPORT_NAMESPACE, namespace);
+ final boolean isTableNs = ObjectUtilities.equal(OfficeNamespaces.TABLE_NS, namespace);
+ if (isTableMergeActive() && detailBandProcessingState == DETAIL_SECTION_OTHER_PRINTED && isTableNs && ObjectUtilities.equal(OfficeToken.TABLE_COLUMNS, elementType))
+ {
+ finishBuffering();
+ return;
+ }
+
+ if (isInternalNS && (ObjectUtilities.equal(OfficeToken.IMAGE, elementType) || ObjectUtilities.equal(OfficeToken.OBJECT_OLE, elementType)))
+ {
+ return;
+ }
+
+ final XmlWriter xmlWriter = getXmlWriter();
+ if (tableLayoutConfig != TABLE_LAYOUT_VARIABLES_PARAGRAPH && isTableNs && ObjectUtilities.equal(OfficeToken.TABLE_CELL, elementType) && !isRepeatingSection())
+ {
+ if (variables != null)
+ {
+ // This cannot happen as long as the report sections only contain tables. But at some point in the
+ // future they will be made of paragraphs, and then we are prepared ..
+ //LOGGER.debug("Variables-Section " + variables);
+ final String tag;
+ if (sectionKeepTogether && expectedTableRowCount > 0)
+ {
+ tag = TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT;
+ }
+ else
+ {
+ tag = TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITHOUT_KEEPWNEXT;
+ }
+ StyleUtilities.copyStyle(OfficeToken.PARAGRAPH,
+ tag, getStylesCollection(),
+ getGlobalStylesCollection(), getPredefinedStylesCollection());
+ xmlWriter.writeTag(OfficeNamespaces.TEXT_NS, OfficeToken.P, OfficeToken.STYLE_NAME,
+ tag, XmlWriterSupport.OPEN);
+ xmlWriter.writeText(variables);
+ xmlWriter.writeCloseTag();
+ variables = null;
+ }
+ /**
+ // Only generate the empty paragraph, if we have to add the keep-together ..
+ else if (cellEmpty && expectedTableRowCount > 0 &&
+ sectionKeepTogether && !firstCellSeen)
+ {
+ // we have no variables ..
+ StyleUtilities.copyStyle(OfficeToken.PARAGRAPH,
+ TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT, getStylesCollection(),
+ getGlobalStylesCollection(), getPredefinedStylesCollection());
+ xmlWriter.writeTag(OfficeNamespaces.TEXT_NS, OfficeToken.P, OfficeToken.STYLE_NAME,
+ TextRawReportTarget.VARIABLES_HIDDEN_STYLE_WITH_KEEPWNEXT, XmlWriterSupport.CLOSE);
+ }
+ */
+ }
+
+ if (isTableNs && (ObjectUtilities.equal(OfficeToken.TABLE_CELL, elementType) || ObjectUtilities.equal(OfficeToken.COVERED_TABLE_CELL, elementType)))
+ {
+ firstCellSeen = true;
+ }
+ if (isTableNs && ObjectUtilities.equal(OfficeToken.TABLE, elementType))
+ {
+ if (getCurrentRole() == ROLE_DETAIL)
+ {
+ if (!isTableMergeActive())
+ {
+ // We do not merge the detail bands, so an ordinary close will do.
+ xmlWriter.writeCloseTag();
+ }
+ else if (detailBandProcessingState == DETAIL_SECTION_FIRST_STARTED)
+ {
+ final int keepTogetherState = getCurrentContext().getKeepTogether();
+ if (keepTogetherState == PageContext.KEEP_TOGETHER_FIRST_DETAIL)
+ {
+ xmlWriter.writeCloseTag();
+ detailBandProcessingState = DETAIL_SECTION_FIRST_PRINTED;
+ }
+ else
+ {
+ detailBandProcessingState = DETAIL_SECTION_OTHER_PRINTED;
+ }
+ }
+ else if (detailBandProcessingState == DETAIL_SECTION_OTHER_STARTED)
+ {
+ detailBandProcessingState = DETAIL_SECTION_OTHER_PRINTED;
+ }
+ }
+ else
+ {
+ xmlWriter.writeCloseTag();
+ }
+ if (isSectionPagebreakAfter(attrs))
+ {
+ setPagebreakDefinition(new PageBreakDefinition(false));
+ }
+ }
+ else
+ {
+ xmlWriter.writeCloseTag();
+ }
+ }
+
+ protected void endGroupBody(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ if (tableLayoutConfig == TABLE_LAYOUT_SINGLE_DETAIL_TABLE && detailBandProcessingState == DETAIL_SECTION_OTHER_PRINTED)
+ {
+ // closes the table ..
+ final XmlWriter xmlWriter = getXmlWriter();
+ xmlWriter.writeCloseTag();
+ detailBandProcessingState = DETAIL_SECTION_WAIT;
+ }
+
+ }
+
+ protected void endContent(final AttributeMap attrs)
+ throws IOException, DataSourceException, ReportProcessingException
+ {
+ finishSection();
+ final BufferState bodyText = finishBuffering();
+ final XmlWriter writer = getXmlWriter();
+
+ final Map definedMappings = variablesDeclarations.getDefinedMappings();
+ if (!definedMappings.isEmpty())
+ {
+ writer.writeTag(OfficeNamespaces.TEXT_NS, "variable-decls", XmlWriterSupport.OPEN);
+ final Iterator mappingsIt = definedMappings.entrySet().iterator();
+ while (mappingsIt.hasNext())
+ {
+ final Map.Entry entry = (Map.Entry) mappingsIt.next();
+ final AttributeList entryList = new AttributeList();
+ entryList.setAttribute(OfficeNamespaces.TEXT_NS, NAME, (String) entry.getKey());
+ entryList.setAttribute(OfficeNamespaces.OFFICE_NS, FormatValueUtility.VALUE_TYPE, (String) entry.getValue());
+ writer.writeTag(OfficeNamespaces.TEXT_NS, "variable-decl", entryList, XmlWriterSupport.CLOSE);
+ }
+ writer.writeCloseTag();
+ }
+
+ writer.writeStream(bodyText.getXmlAsReader());
+ writer.setLineEmpty(true);
+ writer.writeCloseTag();
+ }
+
+ public String getExportDescriptor()
+ {
+ return "raw/" + PentahoReportEngineMetaData.OPENDOCUMENT_TEXT;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/output/text/VariablesDeclarations.java b/reportbuilder/java/com/sun/star/report/pentaho/output/text/VariablesDeclarations.java
new file mode 100644
index 000000000000..b79d18b56a0b
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/output/text/VariablesDeclarations.java
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.output.text;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.jfree.report.util.AttributeNameGenerator;
+
+
+/**
+ * A collection that holds all used variables. A variable is primarily keyed by
+ * its original name. If a variable contains more than one type, it is also
+ * keyed by the type.
+ *
+ * @author Thomas Morgner
+ * @since 26.03.2007
+ */
+public class VariablesDeclarations
+{
+
+ private final AttributeNameGenerator nameGenerator;
+ private final Map variables;
+
+ public VariablesDeclarations()
+ {
+ variables = new HashMap();
+ nameGenerator = new AttributeNameGenerator();
+ }
+
+ public String produceVariable(final String name,
+ final String type)
+ {
+ HashMap holder = (HashMap) variables.get(name);
+ if (holder == null)
+ {
+ holder = new HashMap();
+ variables.put(name, holder);
+ }
+
+ final String mapping = (String) holder.get(type);
+ if (mapping != null)
+ {
+ return mapping;
+ }
+ final String result = nameGenerator.generateName(name);
+ if (holder.isEmpty())
+ {
+ // create the default mapping as well..
+ holder.put(null, name);
+ holder.put("time", name);
+ holder.put("date", name);
+ holder.put("datetime", name);
+ holder.put("float", name);
+ holder.put("string", name);
+ holder.put("boolean", name);
+ }
+ holder.put(type, name);
+ return result;
+ }
+
+ public Map getDefinedMappings()
+ {
+ final HashMap mappings = new HashMap();
+ final Iterator vars = variables.values().iterator();
+ while (vars.hasNext())
+ {
+ final HashMap types = (HashMap) vars.next();
+ final Iterator varsByType = types.entrySet().iterator();
+ while (varsByType.hasNext())
+ {
+ final Map.Entry entry = (Map.Entry) varsByType.next();
+ final String type = (String) entry.getKey();
+ if (type != null)
+ {
+ final String varName = (String) entry.getValue();
+ mappings.put(varName, type);
+ }
+ }
+ }
+ return mappings;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/AttributeSpecification.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/AttributeSpecification.java
new file mode 100644
index 000000000000..98a47a23aae7
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/AttributeSpecification.java
@@ -0,0 +1,57 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser;
+
+public final class AttributeSpecification
+{
+
+ private final String namespaceUrl;
+ private final String attributName;
+ private final String mapperImplementation;
+
+ public AttributeSpecification(String namespaceUrl, String attributName, String mapperImplementation)
+ {
+ this.namespaceUrl = namespaceUrl;
+ this.attributName = attributName;
+ this.mapperImplementation = mapperImplementation;
+ }
+
+ public String getAttributName()
+ {
+ return attributName;
+ }
+
+ public String getMapperImplementation()
+ {
+ return mapperImplementation;
+ }
+
+ public String getNamespaceUrl()
+ {
+ return namespaceUrl;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/ElementReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/ElementReadHandler.java
new file mode 100644
index 000000000000..c90f6425d971
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/ElementReadHandler.java
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser;
+
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * Creation-Date: 03.07.2006, 14:22:34
+ *
+ * @author Thomas Morgner
+ */
+public abstract class ElementReadHandler extends AbstractXmlReadHandler
+{
+
+ public ElementReadHandler()
+ {
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ final Element element = getElement();
+ copyElementType(element);
+ copyAttributes(attrs, element);
+ }
+
+ protected void copyElementType(final Element element)
+ {
+ element.setType(getTagName());
+ element.setNamespace(getUri());
+ }
+
+ protected void copyAttributes(final Attributes attrs, final Element element)
+ {
+ final int length = attrs.getLength();
+ for (int i = 0; i < length; i++)
+ {
+ final String value = attrs.getValue(i);
+ final String namespace = attrs.getURI(i);
+ final String attr = attrs.getLocalName(i);
+ element.setAttribute(namespace, attr, value);
+ }
+ }
+
+ /**
+ * Returns the object for this element or null, if this element does not
+ * create an object.
+ *
+ * @return the object.
+ */
+ public Object getObject() throws SAXException
+ {
+ return getElement();
+ }
+
+ public abstract Element getElement();
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeDocumentXmlResourceFactory.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeDocumentXmlResourceFactory.java
new file mode 100644
index 000000000000..4177a75f81be
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeDocumentXmlResourceFactory.java
@@ -0,0 +1,51 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser;
+
+import com.sun.star.report.pentaho.model.OfficeDocument;
+
+import org.jfree.report.modules.factories.report.base.JFreeReportXmlResourceFactory;
+
+/**
+ * A LibLoader resource factory for OfficeDocument objects. OfficeDocuments are
+ * JFreeReport instances which have some additional properties.
+ *
+ * @author Thomas Morgner
+ * @since 09.03.2007
+ */
+public class OfficeDocumentXmlResourceFactory extends JFreeReportXmlResourceFactory
+{
+
+ public OfficeDocumentXmlResourceFactory()
+ {
+ }
+
+ public Class getFactoryType()
+ {
+ return OfficeDocument.class;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeParserUtil.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeParserUtil.java
new file mode 100644
index 000000000000..5272a987957f
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeParserUtil.java
@@ -0,0 +1,191 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.jfree.layouting.namespace.NamespaceDefinition;
+import org.jfree.layouting.namespace.Namespaces;
+import org.jfree.report.JFreeReportBoot;
+
+import org.pentaho.reporting.libraries.base.config.DefaultConfiguration;
+import org.pentaho.reporting.libraries.resourceloader.Resource;
+import org.pentaho.reporting.libraries.resourceloader.ResourceException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+
+
+public class OfficeParserUtil
+{
+
+ private static final Log LOGGER = LogFactory.getLog(OfficeParserUtil.class);
+ private static OfficeParserUtil instance;
+ private static final String NAMESPACES_PREFIX = "namespaces.";
+
+ public static synchronized OfficeParserUtil getInstance()
+ {
+ if (instance == null)
+ {
+ instance = new OfficeParserUtil();
+ }
+ return instance;
+ }
+ private final DefaultConfiguration props;
+ private final NamespaceDefinition[] namespaces;
+
+ private OfficeParserUtil()
+ {
+ props = new DefaultConfiguration();
+
+ final ResourceManager resourceManager = new ResourceManager();
+ resourceManager.registerDefaults();
+ try
+ {
+ final Resource res = resourceManager.createDirectly("res://com/sun/star/report/pentaho/parser/selectors.properties", Properties.class);
+ final Properties resProps = (Properties) res.getResource();
+ props.putAll(resProps);
+ }
+ catch (ResourceException e)
+ {
+ LOGGER.warn("Unable to load mapping rules. Parsing services may not be available.", e);
+ }
+
+ namespaces = Namespaces.createFromConfig(JFreeReportBoot.getInstance().getGlobalConfig(),
+ "org.jfree.report.namespaces.", resourceManager);
+ }
+
+ public NamespaceDefinition getNamespaceDeclaration(final String uri)
+ {
+ if (uri == null)
+ {
+ throw new NullPointerException("URI must not be null");
+ }
+
+ for (int i = 0; i < namespaces.length; i++)
+ {
+ final NamespaceDefinition definition = namespaces[i];
+ if (uri.equals(definition.getURI()))
+ {
+ return definition;
+ }
+ }
+ return null;
+ }
+
+ public String getGenericFont(final String officeFont)
+ {
+ return props.getProperty("font-family." + officeFont.toLowerCase(), officeFont);
+ }
+
+ public String getNamespaceURI(final String namespacePrefix)
+ {
+ return props.getProperty(NAMESPACES_PREFIX + namespacePrefix);
+ }
+
+ public String getNamespaceForStyleFamily(final String styleFamily)
+ {
+ return props.getProperty("style-family." + styleFamily);
+ }
+
+ public Map getNamespaces()
+ {
+ final Map map = new HashMap();
+ final Iterator keys = props.findPropertyKeys(NAMESPACES_PREFIX);
+ while (keys.hasNext())
+ {
+ final String key = (String) keys.next();
+ final String value = props.getConfigProperty(key);
+ map.put(key.substring(NAMESPACES_PREFIX.length()), value);
+ }
+ return map;
+ }
+
+ public String getNamespacePrefix(final String namespaceURI)
+ {
+ final Iterator keys = props.findPropertyKeys(NAMESPACES_PREFIX);
+ while (keys.hasNext())
+ {
+ final String key = (String) keys.next();
+ final String value = props.getConfigProperty(key);
+ if (namespaceURI.equals(value))
+ {
+ return key.substring(NAMESPACES_PREFIX.length());
+ }
+ }
+ return null;
+ }
+
+ public AttributeSpecification parseStyleAttrDefinition(final String key, final String prefix, final String tagname)
+ {
+ final String configPrefix = "attr." + prefix + "." + tagname + ".";
+ final String configSuffix = key.substring(configPrefix.length());
+ final int dotPosition = configSuffix.indexOf('.');
+ if (dotPosition == -1)
+ {
+ return null;
+ }
+ final String namespaceUri = getNamespaceURI(configSuffix.substring(0, dotPosition));
+ final String attrName = configSuffix.substring(dotPosition + 1);
+ final String value = props.getProperty(key);
+ return new AttributeSpecification(namespaceUri, attrName, value);
+ }
+
+ public Iterator findStylesForElement(final String prefix,
+ final String tagname)
+ {
+ final String configPrefix = "attr." + prefix + "." + tagname + ".";
+ return props.findPropertyKeys(configPrefix);
+ }
+
+ public boolean isValidStyleElement(final String uri, final String tagName)
+ {
+ final String prefix = getNamespacePrefix(uri);
+ if (prefix == null)
+ {
+ return false;
+ }
+
+ final Iterator stylesForElement = findStylesForElement(prefix, tagName);
+ return stylesForElement.hasNext();
+ }
+
+ public String getSelectorPattern()
+ {
+ return props.getConfigProperty("style-selector.pattern");
+ }
+
+ public static void main(final String[] args)
+ {
+ JFreeReportBoot.getInstance().start();
+ System.out.print(OfficeParserUtil.getInstance().getNamespaces());
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeStylesXmlResourceFactory.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeStylesXmlResourceFactory.java
new file mode 100644
index 000000000000..28d646eb8a23
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/OfficeStylesXmlResourceFactory.java
@@ -0,0 +1,59 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser;
+
+import com.sun.star.report.pentaho.model.OfficeStylesCollection;
+
+import org.jfree.report.JFreeReportBoot;
+
+import org.pentaho.reporting.libraries.base.config.Configuration;
+import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlResourceFactory;
+
+/**
+ * A LibLoader resource factory for loading an OfficeStyles-collection. This
+ * implementation is meant to parse the 'styles.xml' file.
+ *
+ * @author Thomas Morgner
+ * @since 09.03.2007
+ */
+public class OfficeStylesXmlResourceFactory extends AbstractXmlResourceFactory
+{
+
+ public OfficeStylesXmlResourceFactory()
+ {
+ }
+
+ protected Configuration getConfiguration()
+ {
+ return JFreeReportBoot.getInstance().getGlobalConfig();
+ }
+
+ public Class getFactoryType()
+ {
+ return OfficeStylesCollection.class;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/StarStyleXmlFactoryModule.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/StarStyleXmlFactoryModule.java
new file mode 100644
index 000000000000..baa6531fbd08
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/StarStyleXmlFactoryModule.java
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.parser.office.DocumentStylesReadHandler;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlDocumentInfo;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlFactoryModule;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+public class StarStyleXmlFactoryModule implements XmlFactoryModule
+{
+
+ public StarStyleXmlFactoryModule()
+ {
+ }
+
+ public XmlReadHandler createReadHandler(final XmlDocumentInfo documentInfo)
+ {
+ return new DocumentStylesReadHandler();
+ }
+
+ public int getDocumentSupport(final XmlDocumentInfo documentInfo)
+ {
+ final String rootNamespace = documentInfo.getRootElementNameSpace();
+ if (OfficeNamespaces.OFFICE_NS.equals(rootNamespace) && "document-styles".equals(documentInfo.getRootElement()))
+ {
+ return XmlFactoryModule.RECOGNIZED_BY_NAMESPACE;
+ }
+ return XmlFactoryModule.NOT_RECOGNIZED;
+ }
+
+ public String getDefaultNamespace(final XmlDocumentInfo documentInfo)
+ {
+ return null;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/StarXmlFactoryModule.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/StarXmlFactoryModule.java
new file mode 100644
index 000000000000..ce16d222eaba
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/StarXmlFactoryModule.java
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.parser.office.DocumentContentReadHandler;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlDocumentInfo;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlFactoryModule;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+public class StarXmlFactoryModule implements XmlFactoryModule
+{
+
+ public StarXmlFactoryModule()
+ {
+ }
+
+ public XmlReadHandler createReadHandler(final XmlDocumentInfo documentInfo)
+ {
+ return new DocumentContentReadHandler();
+ }
+
+ public int getDocumentSupport(final XmlDocumentInfo documentInfo)
+ {
+ final String rootNamespace = documentInfo.getRootElementNameSpace();
+ if (OfficeNamespaces.OFFICE_NS.equals(rootNamespace) && ("document-content".equals(documentInfo.getRootElement()) || "document".equals(documentInfo.getRootElement())))
+ {
+ return XmlFactoryModule.RECOGNIZED_BY_NAMESPACE;
+ }
+ return XmlFactoryModule.NOT_RECOGNIZED;
+ }
+
+ public String getDefaultNamespace(final XmlDocumentInfo documentInfo)
+ {
+ return null;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/StyleMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/StyleMapper.java
new file mode 100644
index 000000000000..aaae0b7795b5
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/StyleMapper.java
@@ -0,0 +1,38 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+
+public interface StyleMapper
+{
+
+ void updateStyle(final String uri,
+ final String attrName,
+ final String attrValue,
+ final CSSDeclarationRule targetRule);
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/chart/ChartReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/chart/ChartReadHandler.java
new file mode 100644
index 000000000000..9f899389b27b
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/chart/ChartReadHandler.java
@@ -0,0 +1,115 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.chart;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.rpt.DetailRootTableReadHandler;
+import com.sun.star.report.pentaho.parser.rpt.ReportReadHandler;
+import com.sun.star.report.pentaho.parser.text.TextContentReadHandler;
+
+import java.lang.Object;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class ChartReadHandler extends ElementReadHandler
+{
+
+ private final Section element;
+ private final List children;
+ private final ReportReadHandler reportHandler;
+
+ public ChartReadHandler(ReportReadHandler reportHandler)
+ {
+ this.reportHandler = reportHandler;
+ children = new ArrayList();
+ element = new Section();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if ("detail".equals(tagName))
+ {
+ final DetailRootTableReadHandler detail = new DetailRootTableReadHandler();
+ reportHandler.setDetail(detail);
+ return detail;
+ }
+ else if ("p".equals(tagName) && OfficeNamespaces.TEXT_NS.equals(uri))
+ {
+ final TextContentReadHandler readHandler = new TextContentReadHandler();
+ children.add(readHandler);
+ return readHandler;
+ }
+ final ChartReadHandler erh = new ChartReadHandler(reportHandler);
+ children.add(erh);
+ return erh;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (Object aChildren : children)
+ {
+ final ElementReadHandler handler = (ElementReadHandler) aChildren;
+ element.addNode(handler.getElement());
+ }
+ }
+
+ public Element getElement()
+ {
+ return element;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/data/DataStyleReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/data/DataStyleReadHandler.java
new file mode 100644
index 000000000000..e2effde8dfc3
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/data/DataStyleReadHandler.java
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.data;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.DataStyle;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.StaticText;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+public class DataStyleReadHandler extends ElementReadHandler
+{
+
+ private final DataStyle dataStyle;
+ private final List children;
+ private final boolean hasCData;
+
+ public DataStyleReadHandler(final boolean hasCData)
+ {
+ this.hasCData = hasCData;
+ this.dataStyle = new DataStyle();
+ this.children = new ArrayList();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.DATASTYLE_NS.equals(uri) || OfficeNamespaces.STYLE_NS.equals(uri))
+ {
+ final DataStyleReadHandler xrh = new DataStyleReadHandler("text".equals(tagName) || "currency-symbol".equals(tagName) || "embedded-text".equals(tagName));
+ children.add(xrh);
+ return xrh;
+ }
+
+ return null;
+ }
+
+ /**
+ * This method is called to process the character data between element tags.
+ *
+ * @param ch the character buffer.
+ * @param start the start index.
+ * @param length the length.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ public void characters(final char[] ch, final int start, final int length)
+ throws SAXException
+ {
+ if (hasCData)
+ {
+ children.add(new StaticText(new String(ch, start, length)));
+ }
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (int i = 0; i < children.size(); i++)
+ {
+ final Object o = children.get(i);
+ if (o instanceof ElementReadHandler)
+ {
+ final ElementReadHandler handler = (ElementReadHandler) o;
+ dataStyle.addNode(handler.getElement());
+ }
+ else if (o instanceof StaticText)
+ {
+ dataStyle.addNode((StaticText) o);
+ }
+ }
+ }
+
+ public DataStyle getDataStyle()
+ {
+ return dataStyle;
+ }
+
+ public Element getElement()
+ {
+ return dataStyle;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/draw/ObjectOleReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/draw/ObjectOleReadHandler.java
new file mode 100644
index 000000000000..e5d38f2d364a
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/draw/ObjectOleReadHandler.java
@@ -0,0 +1,85 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.draw;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.ObjectOleElement;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import org.jfree.report.structure.Element;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class ObjectOleReadHandler extends ElementReadHandler
+{
+
+ private final static String RPT_CHART_CLASS_ID = "80243D39-6741-46C5-926E-069164FF87BB";
+ private final static String OOO_CHART_CLASS_ID = "12DCAE26-281F-416F-A234-C3086127382E";
+ private final ObjectOleElement element;
+
+ public ObjectOleReadHandler(final ObjectOleElement element)
+ {
+ this.element = element;
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ super.startParsing(attrs);
+
+ final String url = attrs.getValue(OfficeNamespaces.XLINK_NS, "href");
+ if (url != null)
+ {
+ element.setUrl(url);
+ }
+
+ String classid = attrs.getValue(OfficeNamespaces.DRAWING_NS, "class-id");
+ if (classid != null)
+ {
+ if (classid.equalsIgnoreCase(RPT_CHART_CLASS_ID))
+ {
+ classid = OOO_CHART_CLASS_ID;
+ }
+ element.setClassId(classid);
+ }
+ }
+
+ public Element getElement()
+ {
+ return element;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/office/BodyReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/office/BodyReadHandler.java
new file mode 100644
index 000000000000..b77c0e80e321
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/office/BodyReadHandler.java
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.office;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.rpt.ReportReadHandler;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class BodyReadHandler extends ElementReadHandler
+{
+
+ private ElementReadHandler reportReadHandler;
+ private final Section body;
+
+ public BodyReadHandler()
+ {
+ body = new Section();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri, final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.OFFICE_NS.equals(uri) && "report".equals(tagName))
+ {
+ reportReadHandler = new ReportReadHandler();
+ return reportReadHandler;
+ }
+
+ return null;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ if (reportReadHandler != null)
+ {
+ body.addNode(reportReadHandler.getElement());
+ }
+ }
+
+ public Element getElement()
+ {
+ return body;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/office/DocumentContentReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/office/DocumentContentReadHandler.java
new file mode 100644
index 000000000000..1f57c7c61205
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/office/DocumentContentReadHandler.java
@@ -0,0 +1,236 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.office;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.OfficeDocument;
+import com.sun.star.report.pentaho.model.OfficeStylesCollection;
+import com.sun.star.report.pentaho.parser.style.OfficeStylesReadHandler;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.jfree.report.JFreeReport;
+
+import org.pentaho.reporting.libraries.resourceloader.Resource;
+import org.pentaho.reporting.libraries.resourceloader.ResourceException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceKey;
+import org.pentaho.reporting.libraries.resourceloader.ResourceKeyCreationException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlReadHandler;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * This is the root handler for the document context. The
+ * 'office:document-context' element is encountered, if the document is split
+ * into separate files.
+ * <p/>
+ * Alternativly, there is the option to keep everything in one file. The root
+ * element for that format is 'office:document'.
+ */
+public class DocumentContentReadHandler extends AbstractXmlReadHandler
+{
+
+ private static final Log LOGGER = LogFactory.getLog(DocumentContentReadHandler.class);
+ private OfficeDocument report;
+ private FontFaceDeclsReadHandler fontFaceReadHandler;
+ private BodyReadHandler bodyReadHandler;
+ private OfficeStylesCollection officeStylesCollection;
+
+ public DocumentContentReadHandler()
+ {
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs)
+ throws SAXException
+ {
+ super.startParsing(attrs);
+ // parse the external 'styles.xml' if it exists
+ // parse the external 'meta.xml' if it exists
+ // parse the external 'settings.xml' if it exists
+ this.report = parseContentXml();
+ this.report.setVirtual(true);
+ this.report.setType("document-content");
+ this.report.setNamespace(OfficeNamespaces.OFFICE_NS);
+ this.report.setVirtual(true);
+ this.officeStylesCollection = parseStylesXml();
+ }
+
+ private OfficeStylesCollection parseStylesXml()
+ {
+ final ResourceKey contextKey = getRootHandler().getContext();
+ final ResourceManager resourceManager = getRootHandler().getResourceManager();
+
+ try
+ {
+ final ResourceKey key =
+ resourceManager.deriveKey(contextKey, "styles.xml");
+ final Resource resource =
+ resourceManager.create(key, contextKey, OfficeStylesCollection.class);
+ final OfficeStylesCollection styles =
+ (OfficeStylesCollection) resource.getResource();
+ if (styles != null)
+ {
+ return styles;
+ }
+ }
+ catch (ResourceKeyCreationException e)
+ {
+ // ignore ..
+ LOGGER.debug("Failed to create resource-key for 'styles.xml'. Ignoring.", e);
+ }
+ catch (ResourceException e)
+ {
+ // ignore ..
+ LOGGER.debug("Failed to parse resource for 'styles.xml'. Ignoring.", e);
+ }
+
+ return new OfficeStylesCollection();
+ }
+
+ private OfficeDocument parseContentXml()
+ {
+ // Check whether this is a content.xml.
+ if (!OfficeNamespaces.OFFICE_NS.equals(getUri()) || "document-content".equals(getTagName()))
+ {
+ return new OfficeDocument();
+ }
+
+ // we may have to parse an existing content.xml.
+ final ResourceKey contextKey = getRootHandler().getContext();
+ final ResourceManager resourceManager = getRootHandler().getResourceManager();
+ try
+ {
+ final ResourceKey key =
+ resourceManager.deriveKey(contextKey, "content.xml");
+ final Resource resource =
+ resourceManager.create(key, contextKey, JFreeReport.class);
+ final OfficeDocument doc = (OfficeDocument) resource.getResource();
+ if (doc != null)
+ {
+ return doc;
+ }
+ }
+ catch (ResourceKeyCreationException e)
+ {
+ // ignore ..
+ LOGGER.debug("Failed to create resource-key for 'content.xml'. Ignoring.");
+ }
+ catch (ResourceException e)
+ {
+ // ignore ..
+ LOGGER.debug("Failed to parse resource for 'content.xml'. Ignoring.");
+ }
+ return new OfficeDocument();
+
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.OFFICE_NS.equals(uri))
+ {
+ if ("font-face-decls".equals(tagName))
+ {
+ if (fontFaceReadHandler == null)
+ {
+ fontFaceReadHandler = new FontFaceDeclsReadHandler(officeStylesCollection.getFontFaceDecls());
+ }
+ return fontFaceReadHandler;
+ }
+ else if ("automatic-styles".equals(tagName))
+ {
+ return new OfficeStylesReadHandler(officeStylesCollection.getAutomaticStyles());
+ }
+ else if ("styles".equals(tagName))
+ {
+ return new OfficeStylesReadHandler(officeStylesCollection.getCommonStyles());
+ }
+ else if ("master-styles".equals(tagName))
+ {
+ return new MasterStylesReadHandler(officeStylesCollection.getMasterStyles());
+ }
+ else if ("body".equals(tagName))
+ {
+ bodyReadHandler = new BodyReadHandler();
+ return bodyReadHandler;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing()
+ throws SAXException
+ {
+ // The office-document is the only node of the report. It allows us to
+ // switch the layout-processing implementation later on.
+
+ report.setStylesCollection(officeStylesCollection);
+
+ if (bodyReadHandler != null)
+ {
+ report.addNode(bodyReadHandler.getElement());
+ }
+ }
+
+ /**
+ * Returns the object for this element or null, if this element does not
+ * create an object.
+ *
+ * @return the object.
+ */
+ public Object getObject()
+ throws SAXException
+ {
+ return report;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/office/DocumentStylesReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/office/DocumentStylesReadHandler.java
new file mode 100644
index 000000000000..c8bf1268ab3c
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/office/DocumentStylesReadHandler.java
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.office;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.OfficeStylesCollection;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.style.OfficeStylesReadHandler;
+
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * The root parser for a 'styles.xml' document. This generates the global
+ * (or common) style collection. These styles contain the named common styles
+ * and the page layouts.
+ *
+ * @author Thomas Morgner
+ * @since 08.03.2007
+ */
+public class DocumentStylesReadHandler extends ElementReadHandler
+{
+
+ private final OfficeStylesCollection officeStylesCollection;
+ private FontFaceDeclsReadHandler fontFaceReadHandler;
+
+ public DocumentStylesReadHandler()
+ {
+ officeStylesCollection = new OfficeStylesCollection();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (!OfficeNamespaces.OFFICE_NS.equals(uri))
+ {
+ return null;
+ }
+
+ if ("font-face-decls".equals(tagName))
+ {
+ if (fontFaceReadHandler == null)
+ {
+ fontFaceReadHandler = new FontFaceDeclsReadHandler(officeStylesCollection.getFontFaceDecls());
+ }
+ return fontFaceReadHandler;
+ }
+ else if ("automatic-styles".equals(tagName))
+ {
+ return new OfficeStylesReadHandler(officeStylesCollection.getAutomaticStyles());
+ }
+ else if ("styles".equals(tagName))
+ {
+ return new OfficeStylesReadHandler(officeStylesCollection.getCommonStyles());
+ }
+ else if ("master-styles".equals(tagName))
+ {
+ return new MasterStylesReadHandler(officeStylesCollection.getMasterStyles());
+ }
+ return null;
+ }
+
+ public Element getElement()
+ {
+ return officeStylesCollection;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/office/FontFaceDeclsReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/office/FontFaceDeclsReadHandler.java
new file mode 100644
index 000000000000..bfd0e99e170d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/office/FontFaceDeclsReadHandler.java
@@ -0,0 +1,117 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.office;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.FontFaceDeclsSection;
+import com.sun.star.report.pentaho.model.FontFaceElement;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.style.FontFaceReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Reads the font-face declarations section. This one can only contain
+ * font-face elements.
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class FontFaceDeclsReadHandler extends ElementReadHandler
+{
+
+ private final FontFaceDeclsSection fontFaceDecls;
+ private final List fontFaceReadHandlers;
+
+ public FontFaceDeclsReadHandler(final FontFaceDeclsSection fontFaceDecls)
+ {
+ this.fontFaceDecls = fontFaceDecls;
+ this.fontFaceReadHandlers = new ArrayList();
+ }
+
+ public FontFaceDeclsSection getFontFaceDecls()
+ {
+ return fontFaceDecls;
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (!OfficeNamespaces.STYLE_NS.equals(uri))
+ {
+ return null;
+ }
+
+ if ("font-face".equals(tagName))
+ {
+ final FontFaceReadHandler frh = new FontFaceReadHandler();
+ fontFaceReadHandlers.add(frh);
+ return frh;
+ }
+ return null;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing()
+ throws SAXException
+ {
+ for (int i = 0; i < fontFaceReadHandlers.size(); i++)
+ {
+ final FontFaceReadHandler handler = (FontFaceReadHandler) fontFaceReadHandlers.get(i);
+ fontFaceDecls.addFontFace((FontFaceElement) handler.getElement());
+ }
+ }
+
+ public Element getElement()
+ {
+ return fontFaceDecls;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/office/MasterStylesReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/office/MasterStylesReadHandler.java
new file mode 100644
index 000000000000..61263a216dca
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/office/MasterStylesReadHandler.java
@@ -0,0 +1,125 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.office;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.OfficeMasterStyles;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.style.MasterPageReadHandler;
+import com.sun.star.report.pentaho.parser.style.StyleDefinitionReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class MasterStylesReadHandler extends ElementReadHandler
+{
+
+ private final OfficeMasterStyles masterStyles;
+ private final List otherHandlers;
+ private final List masterPageHandlers;
+
+ public MasterStylesReadHandler(final OfficeMasterStyles masterStyles)
+ {
+ this.masterStyles = masterStyles;
+ this.masterPageHandlers = new ArrayList();
+ this.otherHandlers = new ArrayList();
+ }
+
+ public OfficeMasterStyles getMasterStyles()
+ {
+ return masterStyles;
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.STYLE_NS.equals(uri) && "master-page".equals(tagName))
+ {
+ final MasterPageReadHandler mrh = new MasterPageReadHandler();
+ masterPageHandlers.add(mrh);
+ return mrh;
+ }
+
+ final StyleDefinitionReadHandler readHandler =
+ new StyleDefinitionReadHandler();
+ otherHandlers.add(readHandler);
+ return readHandler;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing()
+ throws SAXException
+ {
+ for (int i = 0; i < otherHandlers.size(); i++)
+ {
+ final ElementReadHandler handler =
+ (ElementReadHandler) otherHandlers.get(i);
+ masterStyles.getOtherNodes().addNode(handler.getElement());
+ }
+
+ for (int i = 0; i < masterPageHandlers.size(); i++)
+ {
+ final MasterPageReadHandler handler =
+ (MasterPageReadHandler) masterPageHandlers.get(i);
+ masterStyles.addMasterPage(handler.getMasterPage());
+ }
+ }
+
+ public Element getElement()
+ {
+ return masterStyles;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt-schema-v1.0-os.xsd b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt-schema-v1.0-os.xsd
new file mode 100644
index 000000000000..82984c73afe2
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt-schema-v1.0-os.xsd
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ -->
+
+<!---->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ targetNamespace="urn:oasis:names:tc:opendocument:xmlns:report:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:rpt="urn:oasis:names:tc:opendocument:xmlns:report:1.0"
+ xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0"
+ xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:ns1="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <xs:import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="dc.xsd"/>
+ <xs:import namespace="http://www.w3.org/1998/Math/MathML" schemaLocation="math.xsd"/>
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:import namespace="http://www.w3.org/2002/xforms" schemaLocation="xforms.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" schemaLocation="anim.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" schemaLocation="chart.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:config:1.0" schemaLocation="config.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" schemaLocation="ns1.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" schemaLocation="dr3d.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" schemaLocation="draw.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:form:1.0" schemaLocation="form.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" schemaLocation="meta.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:office:1.0" schemaLocation="office.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" schemaLocation="presentation.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:script:1.0" schemaLocation="script.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" schemaLocation="smil.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:style:1.0" schemaLocation="style.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" schemaLocation="svg.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0" schemaLocation="table.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0" schemaLocation="OpenDocument-schema-v1.0-os.xsd"/>
+ <xs:import namespace="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" schemaLocation="fo.xsd"/>
+ <xs:attributeGroup name="office-report-attlist">
+ <xs:attribute name="command-type" default="command" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="table"/>
+ <xs:enumeration value="query"/>
+ <xs:enumeration value="command"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="command" form="qualified" type="text:string"/>
+ <xs:attribute name="escape-processing" default="true" form="qualified" type="text:boolean"/>
+ <xs:attribute name="filter" form="qualified" type="text:string"/>
+ <xs:attribute name="caption" form="qualified" type="text:string"/>
+ </xs:attributeGroup>
+ <xs:element name="report-component">
+ <xs:complexType>
+ <xs:attributeGroup ref="text:common-draw-name-attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="group">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="rpt:function"/>
+ <xs:element minOccurs="0" ref="rpt:group-header"/>
+ <xs:choice>
+ <xs:element ref="rpt:group"/>
+ <xs:element ref="rpt:detail"/>
+ </xs:choice>
+ <xs:element minOccurs="0" ref="rpt:group-footer"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="rpt:rpt-group-attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="rpt-group-attlist">
+ <xs:attribute name="sort-ascending" use="required" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="start-new-column" default="false" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="reset-page-number" default="false" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="print-header-on-each-page" default="false" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="group-expression" use="required" form="qualified" type="text:string"/>
+ <xs:attribute name="keep-together" default="no" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="no"/>
+ <xs:enumeration value="whole-group"/>
+ <xs:enumeration value="with-first-detail"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:element name="group-header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="table:table"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="rpt:rpt-group-section-attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="group-footer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="table:table"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="rpt:rpt-group-section-attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="report-header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="table:table"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="page-header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="table:table"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="rpt:rpt-page-attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="column-header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="table:table"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="detail">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="table:table"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="column-footer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="table:table"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="page-footer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="table:table"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="rpt:rpt-page-attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="report-footer">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="table:table"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="rpt-page-attlist">
+ <xs:attribute name="page-print-option" default="all-pages" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="all-pages"/>
+ <xs:enumeration value="not-with-report-header"/>
+ <xs:enumeration value="not-with-report-footer"/>
+ <xs:enumeration value="not-with-report-header-nor-footer"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="rpt-section-attlist">
+ <xs:attribute name="visible" default="true" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="force-new-page" default="none" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="none"/>
+ <xs:enumeration value="before-section"/>
+ <xs:enumeration value="after-section"/>
+ <xs:enumeration value="before-after-section"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="new-row-or-column" default="none" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="none"/>
+ <xs:enumeration value="before-section"/>
+ <xs:enumeration value="after-section"/>
+ <xs:enumeration value="before-after-section"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="keep-together" default="false" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="rpt-group-section-attlist">
+ <xs:attribute name="repeat-section" default="false" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:element name="sub-document">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:group ref="rpt:report-master-detail-fields"/>
+ <xs:element ref="rpt:report-element"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="office:document"/>
+ <xs:element ref="math:math"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attributeGroup ref="rpt:report-sub-document-attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="report-sub-document-attlist">
+ <xs:attribute ref="xlink:href"/>
+ <xs:attribute ref="xlink:type"/>
+ <xs:attributeGroup ref="xlink:show"/>
+ <xs:attributeGroup ref="xlink:actuate"/>
+ </xs:attributeGroup>
+ <xs:group name="report-master-detail-fields">
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="rpt:master-detail-fields"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:element name="master-detail-fields">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="rpt:master-detail-field"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="master-detail-field">
+ <xs:complexType>
+ <xs:attribute name="master" use="required" form="qualified" type="text:string"/>
+ <xs:attribute name="detail" form="qualified" type="text:string"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="function">
+ <xs:complexType>
+ <xs:attribute name="formula" use="required" form="qualified" type="text:formula"/>
+ <xs:attribute name="name" use="required" form="qualified" type="text:string"/>
+ <xs:attribute name="pre-evaluated" use="required" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="report-element">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="rpt:conditional-print-expression"/>
+ <xs:element minOccurs="0" ref="rpt:report-component"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="rpt:format-condition"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="rpt:rpt-report-element-attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="rpt-report-element-attlist">
+ <xs:attribute name="print-when-group-change" default="false" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="print-repeated-values" default="true" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:element name="conditional-print-expression" type="xs:string"/>
+ <xs:element name="format-condition">
+ <xs:complexType>
+ <xs:attributeGroup ref="rpt:rpt-format-condition-attlist"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="rpt-format-condition-attlist">
+ <xs:attribute name="enabled" default="false" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="formula" form="qualified" type="text:formula"/>
+ </xs:attributeGroup>
+ <xs:element name="fixed-content">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="rpt:report-element"/>
+ <xs:element ref="text:p"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="formatted-text">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="rpt:report-element"/>
+ <xs:group ref="text:common-form-control-content"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="rpt-formatted-text-attlist">
+ <xs:attributeGroup ref="text:common-data-field-attlist"/>
+ </xs:attributeGroup>
+ <xs:element name="image">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="rpt:report-element"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="rpt-image-attlist">
+ <xs:attributeGroup ref="text:common-data-field-attlist"/>
+ <xs:attributeGroup ref="text:image-data"/>
+ <xs:attribute name="scale" use="required" form="qualified">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+</xs:schema>
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ConditionalPrintExpressionReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ConditionalPrintExpressionReadHandler.java
new file mode 100644
index 000000000000..02d23aec10bd
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ConditionalPrintExpressionReadHandler.java
@@ -0,0 +1,81 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.expressions.FormulaFunction;
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * Handles the 'report:conditional-print-expression' element that can appear
+ * in all report elements and all root-level sections.
+ *
+ * @author Thomas Morgner
+ * @since 02.03.2007
+ */
+public class ConditionalPrintExpressionReadHandler
+ extends AbstractXmlReadHandler
+{
+
+ private final Element element;
+
+ public ConditionalPrintExpressionReadHandler(final Element element)
+ {
+ this.element = element;
+ }
+
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ super.startParsing(attrs);
+ final String formula = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "formula");
+ if (formula != null)
+ {
+ final FormulaFunction valueExpression = new FormulaFunction();
+ valueExpression.setFormula(formula);
+ element.setDisplayCondition(valueExpression);
+ }
+
+ }
+
+ /**
+ * Returns the object for this element or null, if this element does not
+ * create an object.
+ *
+ * @return the object.
+ */
+ public Object getObject()
+ throws SAXException
+ {
+ return element;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/DetailRootTableReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/DetailRootTableReadHandler.java
new file mode 100644
index 000000000000..a8252667ff1f
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/DetailRootTableReadHandler.java
@@ -0,0 +1,38 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.pentaho.model.OfficeDetailSection;
+
+public class DetailRootTableReadHandler extends RootTableReadHandler
+{
+
+ public DetailRootTableReadHandler()
+ {
+ super(new OfficeDetailSection());
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FixedContentReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FixedContentReadHandler.java
new file mode 100644
index 000000000000..e414a1bbe16c
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FixedContentReadHandler.java
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.FixedTextElement;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.text.TextContentReadHandler;
+
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.IgnoreAnyChildReadHandler;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * Creation-Date: 01.10.2006, 18:48:11
+ *
+ * @author Thomas Morgner
+ */
+public class FixedContentReadHandler extends ElementReadHandler
+{
+
+ private final FixedTextElement element;
+
+ public FixedContentReadHandler()
+ {
+ element = new FixedTextElement();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.TEXT_NS.equals(uri) && OfficeToken.P.equals(tagName))
+ {
+ // expect a paragraph (which will be ignored; it is a structural
+ // component that needs not to be printed at all.
+ return new TextContentReadHandler(element.getContent());
+ }
+
+ if (OfficeNamespaces.OOREPORT_NS.equals(uri))
+ {
+ // expect a report control. The control will modifiy the current
+ // element (as we do not separate the elements that strictly ..)
+ if ("report-control".equals(tagName))
+ {
+ return new IgnoreAnyChildReadHandler();
+ }
+ if ("report-element".equals(tagName))
+ {
+ return new ReportElementReadHandler(element);
+ }
+ }
+ return null;
+ }
+
+ public Element getElement()
+ {
+ return element;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FormatConditionReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FormatConditionReadHandler.java
new file mode 100644
index 000000000000..581dd79f418e
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FormatConditionReadHandler.java
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.FormatCondition;
+import com.sun.star.report.pentaho.model.ReportElement;
+
+import org.jfree.report.expressions.FormulaExpression;
+
+import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlReadHandler;
+import org.pentaho.reporting.libraries.xmlns.parser.ParseException;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * I'm quite sure I should parse something here. But what?
+ *
+ * @author Ocke Janssen
+ */
+public class FormatConditionReadHandler extends AbstractXmlReadHandler
+{
+
+ private final ReportElement element;
+
+ public FormatConditionReadHandler(final ReportElement element)
+ {
+ if (element == null)
+ {
+ throw new NullPointerException();
+ }
+ this.element = element;
+ }
+
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ super.startParsing(attrs);
+
+
+ final String formula =
+ attrs.getValue(OfficeNamespaces.OOREPORT_NS, "formula");
+ if (formula == null)
+ {
+ throw new ParseException("Required attribute 'formula' is missing.", getLocator());
+ }
+ final String stylename =
+ attrs.getValue(OfficeNamespaces.OOREPORT_NS, OfficeToken.STYLE_NAME);
+ if (stylename == null)
+ {
+ throw new ParseException("Required attribute 'style-name' is missing.", getLocator());
+ }
+ final FormulaExpression valueExpression = new FormulaExpression();
+ valueExpression.setFormula(formula);
+
+ final String enabledText = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "enabled");
+ final boolean enabled = (enabledText == null || OfficeToken.TRUE.equals(enabledText));
+ final FormatCondition formatCondition =
+ new FormatCondition(valueExpression, stylename, enabled);
+ element.addFormatCondition(formatCondition);
+
+ }
+
+ /**
+ * Returns the object for this element or null, if this element does not
+ * create an object.
+ *
+ * @return the object.
+ */
+ public Object getObject()
+ throws SAXException
+ {
+ return element;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FormattedTextReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FormattedTextReadHandler.java
new file mode 100644
index 000000000000..4c94cb910d79
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FormattedTextReadHandler.java
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.FormattedTextElement;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import org.jfree.report.expressions.FormulaExpression;
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.IgnoreAnyChildReadHandler;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * Creation-Date: 01.10.2006, 19:06:45
+ *
+ * @author Thomas Morgner
+ */
+public class FormattedTextReadHandler extends ElementReadHandler
+{
+
+ private final FormattedTextElement element;
+
+ public FormattedTextReadHandler()
+ {
+ element = new FormattedTextElement();
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ super.startParsing(attrs);
+
+ final String formula = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "formula");
+ if (formula != null)
+ {
+ final FormulaExpression valueExpression = new FormulaExpression();
+ valueExpression.setFormula(formula);
+ element.setValueExpression(valueExpression);
+ }
+
+ // * Print-Repeated-Values
+ // * Print-In-First-New-Section
+ // * Print-When-Group-Changes
+
+ // * Print-When-Section-Overflows
+ // That property cannot be evaluated yet, as this would require us to
+ // have a clue about pagebreaking. We dont have that - not yet and never
+ // in the future, as pagebreaks are computed by OpenOffice instead
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.OOREPORT_NS.equals(uri))
+ {
+ // expect a report control. The control will modifiy the current
+ // element (as we do not separate the elements that strictly ..)
+ if ("report-control".equals(tagName))
+ {
+ return new IgnoreAnyChildReadHandler();
+ }
+ if ("report-element".equals(tagName))
+ {
+ return new ReportElementReadHandler(element);
+ }
+ }
+ return null;
+ }
+
+ public Element getElement()
+ {
+ return element;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FunctionReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FunctionReadHandler.java
new file mode 100644
index 000000000000..233e0692dd07
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/FunctionReadHandler.java
@@ -0,0 +1,116 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.jfree.report.expressions.Expression;
+import org.jfree.report.expressions.FormulaExpression;
+import org.jfree.report.expressions.FormulaFunction;
+
+import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlReadHandler;
+import org.pentaho.reporting.libraries.xmlns.parser.ParseException;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * Parses a named expression. These expressions are encountered on reports and
+ * groups and compute global values. Expressions must have an unique name.
+ *
+ * @author Thomas Morgner
+ */
+public class FunctionReadHandler extends AbstractXmlReadHandler
+{
+
+ private Expression expression;
+
+ public FunctionReadHandler()
+ {
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs)
+ throws SAXException
+ {
+ final String formula = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "formula");
+ if (formula == null)
+ {
+ throw new ParseException("Required attribute 'formula' is missing", getLocator());
+ }
+
+ final String name = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "name");
+ if (name == null)
+ {
+ throw new ParseException("Required attribute 'name' is missing", getLocator());
+ }
+ final String initialFormula = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "initial-formula");
+ final String deepTraversing = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "deep-traversing");
+
+ if (initialFormula != null)
+ {
+ final FormulaFunction function = new FormulaFunction();
+ function.setInitial(initialFormula);
+ function.setFormula(formula);
+ this.expression = function;
+ }
+ else
+ {
+ final FormulaExpression expression = new FormulaExpression();
+ expression.setFormula(formula);
+ this.expression = expression;
+ }
+
+ expression.setName(name);
+ expression.setDeepTraversing(OfficeToken.TRUE.equals(deepTraversing));
+ final String preEvaluated = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "pre-evaluated");
+ expression.setPrecompute(OfficeToken.TRUE.equals(preEvaluated));
+ }
+
+ /**
+ * Returns the object for this element or null, if this element does not
+ * create an object.
+ *
+ * @return the object.
+ */
+ public Object getObject()
+ throws SAXException
+ {
+ return getExpression();
+ }
+
+ public Expression getExpression()
+ {
+ return expression;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/GroupReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/GroupReadHandler.java
new file mode 100644
index 000000000000..3516f6e047ad
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/GroupReadHandler.java
@@ -0,0 +1,182 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.OfficeGroup;
+import com.sun.star.report.pentaho.model.OfficeGroupInstanceSection;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.expressions.FormulaExpression;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+public class GroupReadHandler extends ElementReadHandler
+{
+
+ private GroupSectionReadHandler groupHeader;
+ private GroupSectionReadHandler groupFooter;
+ private GroupReadHandler childGroup;
+ private RootTableReadHandler detailSection;
+ private final OfficeGroup group;
+ private final OfficeGroupInstanceSection groupInstanceSection;
+ private final List functionHandlers;
+ private final ReportReadHandler rh;
+
+ public GroupReadHandler(final ReportReadHandler _rh)
+ {
+ rh = _rh;
+ group = new OfficeGroup();
+ groupInstanceSection = new OfficeGroupInstanceSection();
+ groupInstanceSection.setNamespace(JFreeReportInfo.REPORT_NAMESPACE);
+ groupInstanceSection.setType("group-instance");
+ group.addNode(groupInstanceSection);
+ functionHandlers = new ArrayList();
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ super.startParsing(attrs);
+
+ final String groupExpr = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "group-expression");
+ if (groupExpr != null && !"".equals(groupExpr))
+ {
+ final FormulaExpression function = new FormulaExpression();
+ function.setFormula(groupExpr);
+ groupInstanceSection.setGroupingExpression(function);
+ }
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (!OfficeNamespaces.OOREPORT_NS.equals(uri))
+ {
+ return null;
+ }
+ if ("function".equals(tagName))
+ {
+ final FunctionReadHandler erh = new FunctionReadHandler();
+ functionHandlers.add(erh);
+ return erh;
+ }
+ if ("group-header".equals(tagName))
+ {
+ groupHeader = new GroupSectionReadHandler();
+ return groupHeader;
+ }
+ if ("group".equals(tagName))
+ {
+ childGroup = new GroupReadHandler(rh);
+ return childGroup;
+ }
+ if ("detail".equals(tagName))
+ {
+ detailSection = new DetailRootTableReadHandler();
+ rh.setDetail(detailSection);
+ return detailSection;
+ }
+ if ("group-footer".equals(tagName))
+ {
+ ((Element) ((Section) rh.getDetail().getElement()).getNode(0)).setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "has-group-footer", OfficeToken.TRUE);
+ groupFooter = new GroupSectionReadHandler();
+ return groupFooter;
+ }
+ return null;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (int i = 0; i < functionHandlers.size(); i++)
+ {
+ final FunctionReadHandler handler =
+ (FunctionReadHandler) functionHandlers.get(i);
+ groupInstanceSection.addExpression(handler.getExpression());
+ }
+
+ if (groupHeader != null)
+ {
+ groupInstanceSection.addNode(groupHeader.getElement());
+ }
+
+ final Section groupBody = new Section();
+ groupBody.setNamespace(JFreeReportInfo.REPORT_NAMESPACE);
+ groupBody.setType("group-body");
+ groupInstanceSection.addNode(groupBody);
+ // XOR: Either the detail or the group section can be set ..
+ if (detailSection != null)
+ {
+ groupBody.addNode(detailSection.getElement());
+ }
+ else if (childGroup != null)
+ {
+ groupBody.addNode(childGroup.getElement());
+ }
+
+ if (groupFooter != null)
+ {
+ groupInstanceSection.addNode(groupFooter.getElement());
+ }
+ }
+
+ public Element getElement()
+ {
+ return group;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/GroupSectionReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/GroupSectionReadHandler.java
new file mode 100644
index 000000000000..99a34abc1d42
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/GroupSectionReadHandler.java
@@ -0,0 +1,38 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.pentaho.model.OfficeGroupSection;
+
+public class GroupSectionReadHandler extends RootTableReadHandler
+{
+
+ public GroupSectionReadHandler()
+ {
+ super(new OfficeGroupSection());
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ImageReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ImageReadHandler.java
new file mode 100644
index 000000000000..1695eac68fe0
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ImageReadHandler.java
@@ -0,0 +1,141 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.ImageElement;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.xlink.XLinkReadHandler;
+
+import org.jfree.report.expressions.FormulaExpression;
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.IgnoreAnyChildReadHandler;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * Deals with Image-content. There are two ways to specify the image;
+ * as formula or as static image data.
+ *
+ * @author Thomas Morgner
+ */
+public class ImageReadHandler extends ElementReadHandler
+{
+
+ private final ImageElement contentElement;
+ private XLinkReadHandler xLinkReadHandler;
+
+ public ImageReadHandler()
+ {
+ contentElement = new ImageElement();
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ super.startParsing(attrs);
+ final String formula = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "formula");
+// final String preserveIRI = attrs.getValue(OfficeNamespaces.OOREPORT_NS, OfficeToken.PRESERVE_IRI);
+ if (formula != null && formula.length() != 0)
+ {
+ // now, the evaulated content ends up in the 'content' attribute of the
+ // element.
+ final FormulaExpression valueExpression = new FormulaExpression();
+ valueExpression.setFormula(formula);
+ contentElement.setFormula(valueExpression);
+ }
+
+ contentElement.setNamespace(OfficeNamespaces.FORM_NS);
+ contentElement.setType(OfficeToken.IMAGE);
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.DRAWING_NS.equals(uri) && OfficeToken.IMAGE_DATA.equals(tagName))
+ {
+ xLinkReadHandler = new XLinkReadHandler();
+ return xLinkReadHandler;
+ }
+
+ if (OfficeNamespaces.OOREPORT_NS.equals(uri))
+ {
+ // expect a report control. The control will modifiy the current
+ // element (as we do not separate the elements that strictly ..)
+ if ("report-control".equals(tagName))
+ {
+ return new IgnoreAnyChildReadHandler();
+ }
+ if ("report-element".equals(tagName))
+ {
+ return new ReportElementReadHandler(contentElement);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ // if we have static content (as well or only), that one goes into the
+ // alternate-content attribute right now. It is part of the output target
+ // and style rules to deal with them properly ..
+ if (xLinkReadHandler != null)
+ {
+ contentElement.setAttribute(OfficeNamespaces.OOREPORT_NS,
+ "alternate-content", xLinkReadHandler.getUri());
+ }
+ }
+
+ public Element getElement()
+ {
+ return contentElement;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/MasterDetailReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/MasterDetailReadHandler.java
new file mode 100644
index 000000000000..59671bfbbe60
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/MasterDetailReadHandler.java
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.ObjectOleElement;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class MasterDetailReadHandler extends ElementReadHandler
+{
+
+ private final ObjectOleElement element;
+ private final boolean parseMasterDetail;
+
+ public MasterDetailReadHandler(final ObjectOleElement element)
+ {
+ this.element = element;
+ parseMasterDetail = false;
+ }
+
+ public MasterDetailReadHandler(final ObjectOleElement element, final boolean parseMasterDetail)
+ {
+ this.element = element;
+ this.parseMasterDetail = parseMasterDetail;
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ super.startParsing(attrs);
+ if (parseMasterDetail)
+ {
+ final String master = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "master");
+ if (master != null && master.length() > 0)
+ {
+ final String detail = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "detail");
+ element.addMasterDetailFields(master, detail);
+ }
+ }
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.OOREPORT_NS.equals(uri) && "master-detail-field".equals(tagName))
+ {
+ // expect a report control. The control will modifiy the current
+ // element (as we do not separate the elements that strictly ..)
+ return new MasterDetailReadHandler(element, true);
+ }
+
+ return null;
+ }
+
+ public Element getElement()
+ {
+ return element;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ReportElementReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ReportElementReadHandler.java
new file mode 100644
index 000000000000..4359581da3a6
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ReportElementReadHandler.java
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.ReportElement;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.IgnoreAnyChildReadHandler;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class ReportElementReadHandler extends ElementReadHandler
+{
+
+ private final ReportElement element;
+
+ public ReportElementReadHandler(final ReportElement element)
+ {
+ if (element == null)
+ {
+ throw new NullPointerException();
+ }
+
+ this.element = element;
+ }
+
+ public Element getElement()
+ {
+ return element;
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs)
+ throws SAXException
+ {
+ super.startParsing(attrs);
+ final String printWhenGroupChanges = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "print-when-group-changes");
+ element.setPrintWhenGroupChanges(OfficeToken.TRUE.equals(printWhenGroupChanges));
+ final String printRepeatingValues = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "print-repeated-values");
+ element.setPrintRepeatedValues(printRepeatingValues == null || OfficeToken.TRUE.equals(printRepeatingValues));
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (!OfficeNamespaces.OOREPORT_NS.equals(uri))
+ {
+ return null;
+ }
+ if ("conditional-print-expression".equals(tagName))
+ {
+ return new ConditionalPrintExpressionReadHandler(element);
+ }
+ if ("format-condition".equals(tagName))
+ {
+ return new FormatConditionReadHandler(element);
+ }
+ if ("report-component".equals(tagName))
+ {
+ return new IgnoreAnyChildReadHandler();
+ }
+ return null;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ReportReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ReportReadHandler.java
new file mode 100644
index 000000000000..f6db6905da13
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/ReportReadHandler.java
@@ -0,0 +1,239 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.OfficeReport;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.chart.ChartReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.JFreeReportInfo;
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+public class ReportReadHandler extends ElementReadHandler
+{
+
+ private RootTableReadHandler pageHeader;
+ private RootTableReadHandler pageFooter;
+ private RootTableReadHandler reportHeader;
+ private RootTableReadHandler reportFooter;
+ private RootTableReadHandler detail;
+
+ public void setDetail(final RootTableReadHandler detail)
+ {
+ this.detail = detail;
+ }
+
+ public final RootTableReadHandler getDetail()
+ {
+ return detail;
+ }
+ private GroupReadHandler groups;
+ private final OfficeReport rootSection;
+ private final List functionHandlers;
+ private final List preBodyHandlers;
+ private final List postBodyHandlers;
+ private boolean pre = true;
+
+ public ReportReadHandler()
+ {
+ rootSection = new OfficeReport();
+ rootSection.setAttribute(JFreeReportInfo.REPORT_NAMESPACE, "simple-report-structure", Boolean.TRUE);
+ functionHandlers = new ArrayList();
+ preBodyHandlers = new ArrayList();
+ postBodyHandlers = new ArrayList();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ final XmlReadHandler erh;
+ if (OfficeNamespaces.CHART_NS.equals(uri))
+ {
+ erh = new ChartReadHandler(this);
+ if (pre)
+ {
+ preBodyHandlers.add(erh);
+ }
+ else
+ {
+ postBodyHandlers.add(erh);
+ }
+ }
+ else if (OfficeNamespaces.OOREPORT_NS.equals(uri))
+ {
+ if ("function".equals(tagName))
+ {
+ erh = new FunctionReadHandler();
+ functionHandlers.add(erh);
+ }
+ else if ("page-header".equals(tagName))
+ {
+ pageHeader = new RootTableReadHandler();
+ erh = pageHeader;
+ }
+ else if ("report-header".equals(tagName))
+ {
+ reportHeader = new RootTableReadHandler();
+ erh = reportHeader;
+ }
+ else if ("report-footer".equals(tagName))
+ {
+ reportFooter = new RootTableReadHandler();
+ erh = reportFooter;
+ }
+ else if ("page-footer".equals(tagName))
+ {
+ pageFooter = new RootTableReadHandler();
+ erh = pageFooter;
+ }
+ else if ("detail".equals(tagName))
+ {
+ pre = false;
+ detail = new DetailRootTableReadHandler();
+ erh = detail;
+ }
+ else if ("group".equals(tagName))
+ {
+ groups = new GroupReadHandler(this);
+ erh = groups;
+ }
+ else
+ {
+ erh = null;
+ }
+ }
+ else
+ {
+ erh = null;
+ }
+ return erh;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ if (pageHeader != null)
+ {
+ rootSection.setPageHeader(pageHeader.getElement());
+ }
+ if (pageFooter != null)
+ {
+ rootSection.setPageFooter(pageFooter.getElement());
+ }
+ if (reportHeader != null)
+ {
+ rootSection.setReportHeader(reportHeader.getElement());
+ }
+
+ final Section preBody = createSection("report-pre-body", preBodyHandlers);
+ if (preBody != null)
+ {
+ rootSection.setPreBodySection(preBody);
+ }
+
+ final Section groupBody = new Section();
+ groupBody.setNamespace(JFreeReportInfo.REPORT_NAMESPACE);
+ groupBody.setType("report-body");
+ rootSection.setBodySection(groupBody);
+
+ // XOR: Either the detail or the group section can be set ..
+ if (groups != null)
+ {
+ groupBody.addNode(groups.getElement());
+ }
+ else if (detail != null)
+ {
+ groupBody.addNode(detail.getElement());
+ }
+
+ final Section postBody = createSection("report-post-body", postBodyHandlers);
+ if (postBody != null)
+ {
+ rootSection.setPostBodySection(postBody);
+ }
+
+ if (reportFooter != null)
+ {
+ rootSection.setReportFooter(reportFooter.getElement());
+ }
+
+ for (int i = 0; i < functionHandlers.size(); i++)
+ {
+ final FunctionReadHandler handler =
+ (FunctionReadHandler) functionHandlers.get(i);
+ rootSection.addExpression(handler.getExpression());
+ }
+ }
+
+ public Element getElement()
+ {
+ return rootSection;
+ }
+
+ private final Section createSection(final String name, final List handler)
+ {
+ if (!handler.isEmpty())
+ {
+ final Section section = new Section();
+ section.setNamespace(JFreeReportInfo.REPORT_NAMESPACE);
+ section.setType(name);
+
+ for (int i = 0; i < handler.size(); i++)
+ {
+ final ElementReadHandler erh = (ElementReadHandler) handler.get(i);
+ section.addNode(erh.getElement());
+ }
+ return section;
+ }
+ return null;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/RootTableReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/RootTableReadHandler.java
new file mode 100644
index 000000000000..70075f96b017
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/RootTableReadHandler.java
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.table.TableReadHandler;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class RootTableReadHandler extends ElementReadHandler
+{
+
+ private TableReadHandler sectionTableReadHandler;
+ private final Section section;
+
+ public RootTableReadHandler()
+ {
+ section = new Section();
+ }
+
+ protected RootTableReadHandler(final Section section)
+ {
+ if (section == null)
+ {
+ throw new NullPointerException();
+ }
+ this.section = section;
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.TABLE_NS.equals(uri) && "table".equals(tagName))
+ {
+ sectionTableReadHandler = new TableReadHandler();
+ return sectionTableReadHandler;
+ }
+ if (OfficeNamespaces.OOREPORT_NS.equals(uri) && "conditional-print-expression".equals(tagName))
+ {
+ return new ConditionalPrintExpressionReadHandler(section);
+ }
+ return null;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing()
+ throws SAXException
+ {
+ if (sectionTableReadHandler != null)
+ {
+ section.addNode(sectionTableReadHandler.getElement());
+ }
+ }
+
+ public Element getElement()
+ {
+ return section;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/SubDocumentReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/SubDocumentReadHandler.java
new file mode 100644
index 000000000000..081e8bf2020e
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/rpt/SubDocumentReadHandler.java
@@ -0,0 +1,137 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.rpt;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.ObjectOleElement;
+import com.sun.star.report.pentaho.parser.draw.ObjectOleReadHandler;
+import com.sun.star.report.pentaho.parser.text.NoCDATATextContentReadHandler;
+
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.IgnoreAnyChildReadHandler;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class SubDocumentReadHandler extends NoCDATATextContentReadHandler
+{
+
+ private final ObjectOleElement element;
+ private boolean ignore = false;
+
+ public SubDocumentReadHandler(final ObjectOleElement element)
+ {
+ this.element = element;
+ }
+
+ public SubDocumentReadHandler(final Section section, final ObjectOleElement element)
+ {
+ super(section);
+ this.element = element;
+ }
+
+ public SubDocumentReadHandler(final Section section)
+ {
+ this(section, new ObjectOleElement());
+ ignore = true;
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ if (!ignore)
+ {
+ super.startParsing(attrs);
+ }
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.OOREPORT_NS.equals(uri))
+ {
+ // expect a report control. The control will modifiy the current
+ // element (as we do not separate the elements that strictly ..)
+ if ("report-control".equals(tagName))
+ {
+ return new IgnoreAnyChildReadHandler();
+ }
+ if ("report-element".equals(tagName))
+ {
+ return new ReportElementReadHandler(element);
+ }
+ if ("master-detail-fields".equals(tagName))
+ {
+ return new MasterDetailReadHandler(element);
+ }
+ }
+ if (OfficeNamespaces.DRAWING_NS.equals(uri))
+ {
+ final XmlReadHandler readHandler;
+ if (OfficeToken.OBJECT_OLE.equals(tagName))
+ {
+ readHandler = new ObjectOleReadHandler(element);
+ }
+ else if ("frame".equals(tagName))
+ {
+ readHandler = new SubDocumentReadHandler(new Section(), element);
+ }
+ else
+ {
+ readHandler = null;
+ }
+ if (readHandler != null)
+ {
+ getChildren().add(readHandler);
+ return readHandler;
+ }
+ }
+ return super.getHandlerForChild(uri, tagName, atts);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/selectors.properties b/reportbuilder/java/com/sun/star/report/pentaho/parser/selectors.properties
new file mode 100644
index 000000000000..19ba06839e62
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/selectors.properties
@@ -0,0 +1,113 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+# <style:style style:name="S1" style:family="graphics">
+# <style:section-properties fo:background-color="#ffffff"/>
+# </style:style>
+#
+# gets translated into:
+#
+# *[draw|style-name~="S1"]
+
+namespaces.draw=urn:oasis:names:tc:opendocument:xmlns:drawing:1.0
+namespaces.fo=urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0
+namespaces.style=urn:oasis:names:tc:opendocument:xmlns:style:1.0
+namespaces.table=urn:oasis:names:tc:opendocument:xmlns:table:1.0
+namespaces.chart=urn:oasis:names:tc:opendocument:xmlns:chart:1.0
+namespaces.rpt=http://openoffice.org/2005/report
+
+#
+# maps the style family type (graphics) into a style rule of the
+# common form: *[<namespace>|<style-name>~="<classname>"]
+#
+style-family.graphic=draw
+style-family.graphics=draw
+style-family.control=control
+style-family.report-element=rpt
+style-family.table-column=table
+style-family.table-row=table
+style-family.table-cell=table
+style-family.table=table
+
+# Builds the selector pattern for a star-office stylesheet
+#
+# 0: Namespace prefix
+# 1: Style-class attribute name (from the global namespace definition)
+# 2: Style-class value
+style-selector.pattern=*[{0}|{1}~="{2}"]
+
+#
+# The following properties map the OpenOffice-generic font names
+# into their CSS counterparts. As I dont have a clue, whats the difference
+# between modern and swiss typeface, I am ignorant for now and ignore
+# them. Blame me for that :)
+font-family.roman=serif
+font-family.swiss=sans-serif
+font-family.modern=sans-serif
+font-family.decorative=fantasy
+font-family.script=cursive
+font-family.system=monospace
+
+
+#
+# Defines the style property mapping for the resolve process from the
+# OpenOffice report format into the internal LibLayout format
+#
+# attr.style.<group>.<namespace>.<attr-name>=<class>
+#
+# Group is an selector, which corresponds to one of the sub-elements of
+# the style element of the OpenDocument format. (It must match the element
+# name for which the attributes are defined.)
+#
+# Namespace is a defined namespace prefix from this file as defined in the
+# namespaces.<prefix> section above
+#
+# AttrName is the defined attribute name for this namespace as defined by the
+# opendocument standard.
+attr.style.graphic-properties.draw.textarea-vertical-align=com.sun.star.report.pentaho.parser.stylemapper.draw.TextAreaVerticalAlignMapper
+attr.style.section-properties.fo.background-color=com.sun.star.report.pentaho.parser.stylemapper.fo.BackgroundColorMapper
+attr.style.paragraph-properties.fo.text-align=com.sun.star.report.pentaho.parser.stylemapper.fo.TextAlignMapper
+attr.style.paragraph-properties.style.vertical-align=com.sun.star.report.pentaho.parser.stylemapper.style.VerticalAlignMapper
+attr.style.text-properties.fo.color=com.sun.star.report.pentaho.parser.stylemapper.fo.ColorMapper
+attr.style.text-properties.style.font-name=com.sun.star.report.pentaho.parser.stylemapper.style.FontNameMapper
+attr.style.text-properties.fo.font-family=com.sun.star.report.pentaho.parser.stylemapper.style.FontFamilyMapper
+attr.style.table-properties.fo.background-color=com.sun.star.report.pentaho.parser.stylemapper.fo.BackgroundColorMapper
+#attr.style.text-properties.style.font-style-name=
+attr.style.text-properties.style.font-family-generic=com.sun.star.report.pentaho.parser.stylemapper.style.FontFamilyGenericMapper
+attr.style.text-properties.style.font-pitch=com.sun.star.report.pentaho.parser.stylemapper.style.FontPitchMapper
+attr.style.text-properties.fo.font-size=com.sun.star.report.pentaho.parser.stylemapper.fo.FontSizeMapper
+attr.style.text-properties.fo.font-style=com.sun.star.report.pentaho.parser.stylemapper.fo.FontStyleMapper
+attr.style.text-properties.style.text-underline-style=com.sun.star.report.pentaho.parser.stylemapper.style.TextUnderlineStyleMapper
+attr.style.text-properties.style.text-underline-width=com.sun.star.report.pentaho.parser.stylemapper.style.TextUnderlineWidthMapper
+attr.style.text-properties.style.text-underline-color=com.sun.star.report.pentaho.parser.stylemapper.style.TextUnderlineColorMapper
+attr.style.text-properties.fo.font-weight=com.sun.star.report.pentaho.parser.stylemapper.fo.FontWeightMapper
+attr.style.text-properties.style.text-emphasize=com.sun.star.report.pentaho.parser.stylemapper.style.TextEmphasizeMapper
+attr.style.text-properties.style.font-relief=com.sun.star.report.pentaho.parser.stylemapper.style.FontReliefMapper
+attr.style.table-column-properties.table.column-width=com.sun.star.report.pentaho.parser.stylemapper.table.ColumnWidthMapper
+attr.style.table-row-properties.table.row-height=com.sun.star.report.pentaho.parser.stylemapper.table.RowHeightMapper
+attr.style.table-cell-properties.fo.border-right=com.sun.star.report.pentaho.parser.stylemapper.fo.BorderRightMapper
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/style-mapping.txt b/reportbuilder/java/com/sun/star/report/pentaho/parser/style-mapping.txt
new file mode 100644
index 000000000000..6b1ede5d98cf
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/style-mapping.txt
@@ -0,0 +1,8 @@
+ <style:style style:name="S1" style:family="graphics">
+ <style:section-properties fo:background-color="#ffffff"/>
+ </style:style>
+
+gets translated into:
+
+*[draw|style-name~="S1"]
+
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/style/FontFaceReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/FontFaceReadHandler.java
new file mode 100644
index 000000000000..fb20e3783123
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/FontFaceReadHandler.java
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.style;
+
+import com.sun.star.report.pentaho.model.FontFaceElement;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import org.jfree.report.structure.Element;
+
+/**
+ * Reads a single font-face declaration. This is equal to the @font rule of
+ * the CSS standard. We do not interpret the attributes of the element in
+ * any way yet.
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class FontFaceReadHandler extends ElementReadHandler
+{
+
+ private final FontFaceElement fontFaceElement;
+
+ public FontFaceReadHandler()
+ {
+ this.fontFaceElement = new FontFaceElement();
+ }
+
+ public Element getElement()
+ {
+ return fontFaceElement;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/style/MasterPageReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/MasterPageReadHandler.java
new file mode 100644
index 000000000000..d662e8028ab6
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/MasterPageReadHandler.java
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.style;
+
+import com.sun.star.report.pentaho.model.OfficeMasterPage;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class MasterPageReadHandler extends ElementReadHandler
+{
+
+ private final OfficeMasterPage masterPage;
+ private final List otherHandlers;
+
+ public MasterPageReadHandler()
+ {
+ masterPage = new OfficeMasterPage();
+ this.otherHandlers = new ArrayList();
+ }
+
+ public OfficeMasterPage getMasterPage()
+ {
+ return masterPage;
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ final StyleDefinitionReadHandler readHandler =
+ new StyleDefinitionReadHandler();
+ otherHandlers.add(readHandler);
+ return readHandler;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing()
+ throws SAXException
+ {
+ for (int i = 0; i < otherHandlers.size(); i++)
+ {
+ final ElementReadHandler handler =
+ (ElementReadHandler) otherHandlers.get(i);
+ masterPage.addNode(handler.getElement());
+ }
+ }
+
+ public Element getElement()
+ {
+ return masterPage;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/style/OfficeStyleReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/OfficeStyleReadHandler.java
new file mode 100644
index 000000000000..2433a7dfa2c1
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/OfficeStyleReadHandler.java
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.style;
+
+import com.sun.star.report.pentaho.model.OfficeStyle;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * This class reads a single style rule. The resulting 'office-style' element
+ * is added to an 'office-styles' set.
+ */
+public class OfficeStyleReadHandler extends ElementReadHandler
+{
+
+ private final OfficeStyle officeStyle;
+ private final List childs;
+
+ public OfficeStyleReadHandler()
+ {
+ this.officeStyle = new OfficeStyle();
+ this.childs = new ArrayList();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+// if (OfficeParserUtil.getInstance().isValidStyleElement(uri, tagName))
+// {
+// }
+ final StyleDefinitionReadHandler readHandler =
+ new StyleDefinitionReadHandler();
+ childs.add(readHandler);
+ return readHandler;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (int i = 0; i < childs.size(); i++)
+ {
+ final ElementReadHandler handler = (ElementReadHandler) childs.get(i);
+ officeStyle.addNode(handler.getElement());
+ }
+ }
+
+ public OfficeStyle getOfficeStyle()
+ {
+ return officeStyle;
+ }
+
+ public Element getElement()
+ {
+ return officeStyle;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/style/OfficeStylesReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/OfficeStylesReadHandler.java
new file mode 100644
index 000000000000..d679c1c0f412
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/OfficeStylesReadHandler.java
@@ -0,0 +1,143 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.style;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.OfficeStyles;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.data.DataStyleReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.modules.factories.report.flow.SectionReadHandler;
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+public class OfficeStylesReadHandler extends ElementReadHandler
+{
+
+ private final List textStyleChilds;
+ private final List dataStyleChilds;
+ private final List otherStyleChilds;
+ private final List pageLayoutChilds;
+ private final OfficeStyles officeStyles;
+
+ public OfficeStylesReadHandler(final OfficeStyles officeStyles)
+ {
+ this.officeStyles = officeStyles;
+ this.pageLayoutChilds = new ArrayList();
+ this.dataStyleChilds = new ArrayList();
+ this.textStyleChilds = new ArrayList();
+ this.otherStyleChilds = new ArrayList();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri, final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.STYLE_NS.equals(uri))
+ {
+ if ("style".equals(tagName))
+ {
+ final OfficeStyleReadHandler xrh = new OfficeStyleReadHandler();
+ textStyleChilds.add(xrh);
+ return xrh;
+ }
+ else if ("page-layout".equals(tagName))
+ {
+ final PageLayoutReadHandler prh = new PageLayoutReadHandler();
+ pageLayoutChilds.add(prh);
+ return prh;
+ }
+ }
+ else if (OfficeNamespaces.DATASTYLE_NS.equals(uri))
+ {
+ final DataStyleReadHandler xrh = new DataStyleReadHandler(false);
+ dataStyleChilds.add(xrh);
+ return xrh;
+ }
+
+ final SectionReadHandler genericReadHander = new SectionReadHandler();
+ otherStyleChilds.add(genericReadHander);
+ return genericReadHander;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (int i = 0; i < textStyleChilds.size(); i++)
+ {
+ final OfficeStyleReadHandler handler =
+ (OfficeStyleReadHandler) textStyleChilds.get(i);
+ officeStyles.addStyle(handler.getOfficeStyle());
+ }
+
+ for (int i = 0; i < pageLayoutChilds.size(); i++)
+ {
+ final PageLayoutReadHandler handler =
+ (PageLayoutReadHandler) pageLayoutChilds.get(i);
+ officeStyles.addPageStyle(handler.getPageLayout());
+ }
+
+ for (int i = 0; i < dataStyleChilds.size(); i++)
+ {
+ final DataStyleReadHandler handler =
+ (DataStyleReadHandler) dataStyleChilds.get(i);
+ officeStyles.addDataStyle(handler.getDataStyle());
+ }
+
+ for (int i = 0; i < otherStyleChilds.size(); i++)
+ {
+ final SectionReadHandler handler =
+ (SectionReadHandler) otherStyleChilds.get(i);
+ officeStyles.addOtherNode((Element) handler.getNode());
+ }
+ }
+
+ public Element getElement()
+ {
+ return officeStyles;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/style/PageLayoutReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/PageLayoutReadHandler.java
new file mode 100644
index 000000000000..d781a05305f7
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/PageLayoutReadHandler.java
@@ -0,0 +1,104 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.style;
+
+import com.sun.star.report.pentaho.model.PageLayout;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Reads a page-layout element.
+ *
+ * @author Thomas Morgner
+ * @since 13.03.2007
+ */
+public class PageLayoutReadHandler extends ElementReadHandler
+{
+
+ private final PageLayout pageLayout;
+ private final List childs;
+
+ public PageLayoutReadHandler()
+ {
+ this.pageLayout = new PageLayout();
+ this.childs = new ArrayList();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ final StyleDefinitionReadHandler readHandler =
+ new StyleDefinitionReadHandler();
+ childs.add(readHandler);
+ return readHandler;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (int i = 0; i < childs.size(); i++)
+ {
+ final ElementReadHandler handler = (ElementReadHandler) childs.get(i);
+ pageLayout.addNode(handler.getElement());
+ }
+ }
+
+ public PageLayout getPageLayout()
+ {
+ return pageLayout;
+ }
+
+ public Element getElement()
+ {
+ return pageLayout;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/style/StyleDefinitionReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/StyleDefinitionReadHandler.java
new file mode 100644
index 000000000000..5dcd52d04782
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/style/StyleDefinitionReadHandler.java
@@ -0,0 +1,99 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.style;
+
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Reads all childs of a style-definition. This simply copies everything that
+ * is contained in the source-file into a generic structure that can be
+ * written out later.
+ */
+public class StyleDefinitionReadHandler extends ElementReadHandler
+{
+
+ private final Section rawSection;
+ private final List childs;
+
+ public StyleDefinitionReadHandler()
+ {
+ this.rawSection = new Section();
+ this.childs = new ArrayList();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ final StyleDefinitionReadHandler readHandler =
+ new StyleDefinitionReadHandler();
+ childs.add(readHandler);
+ return readHandler;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing()
+ throws SAXException
+ {
+ for (int i = 0; i < childs.size(); i++)
+ {
+ final ElementReadHandler handler = (ElementReadHandler) childs.get(i);
+ rawSection.addNode(handler.getElement());
+ }
+ }
+
+ public Element getElement()
+ {
+ return rawSection;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/OneOfConstantsMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/OneOfConstantsMapper.java
new file mode 100644
index 000000000000..2832007d5ec0
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/OneOfConstantsMapper.java
@@ -0,0 +1,77 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.StyleKey;
+import org.jfree.layouting.input.style.values.CSSValue;
+
+
+public abstract class OneOfConstantsMapper implements StyleMapper
+{
+
+ private final StyleKey styleKey;
+ private final Map mappings;
+
+ protected OneOfConstantsMapper(final StyleKey styleKey)
+ {
+ this.styleKey = styleKey;
+ this.mappings = new HashMap();
+ }
+
+ public void addMapping(final String value, final CSSValue target)
+ {
+ mappings.put(value, target);
+ }
+
+ public void updateStyle(final String uri,
+ final String attrName,
+ final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ final CSSValue value = lookupMapping(attrValue);
+ if (value != null)
+ {
+ targetRule.setPropertyValue(styleKey, value);
+ }
+ }
+
+ public StyleKey getStyleKey()
+ {
+ return styleKey;
+ }
+
+ protected CSSValue lookupMapping(final String attrValue)
+ {
+ return (CSSValue) mappings.get(attrValue);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/draw/TextAreaVerticalAlignMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/draw/TextAreaVerticalAlignMapper.java
new file mode 100644
index 000000000000..eb3217022f97
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/draw/TextAreaVerticalAlignMapper.java
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.draw;
+
+import com.sun.star.report.pentaho.parser.stylemapper.OneOfConstantsMapper;
+
+import org.jfree.layouting.input.style.keys.box.BoxStyleKeys;
+import org.jfree.layouting.input.style.values.CSSConstant;
+
+public class TextAreaVerticalAlignMapper extends OneOfConstantsMapper
+{
+
+ public TextAreaVerticalAlignMapper()
+ {
+ super(BoxStyleKeys.BOX_VERTICAL_ALIGN);
+ addMapping("top", new CSSConstant("top"));
+ addMapping("bottom", new CSSConstant("bottom"));
+ addMapping("middle", new CSSConstant("middle"));
+ addMapping("justify", new CSSConstant("justify"));
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/BackgroundColorMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/BackgroundColorMapper.java
new file mode 100644
index 000000000000..f5f680ce295e
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/BackgroundColorMapper.java
@@ -0,0 +1,50 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.fo;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.border.BorderStyleKeys;
+import org.jfree.layouting.input.style.values.CSSColorValue;
+import org.jfree.layouting.util.ColorUtil;
+
+public class BackgroundColorMapper implements StyleMapper
+{
+
+ public void updateStyle(final String uri,
+ final String attrName,
+ final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ final CSSColorValue cv = (CSSColorValue) ColorUtil.parseColor(attrValue);
+ if (cv != null)
+ {
+ targetRule.setPropertyValue(BorderStyleKeys.BACKGROUND_COLOR, cv);
+ }
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/BorderRightMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/BorderRightMapper.java
new file mode 100644
index 000000000000..c4769b9f2708
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/BorderRightMapper.java
@@ -0,0 +1,55 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+/*
+ * BorderRightMapper.java
+ *
+ * Created on 16. Februar 2007, 13:00
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+package com.sun.star.report.pentaho.parser.stylemapper.fo;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+
+/**
+ *
+ * @author oj93728
+ */
+public class BorderRightMapper implements StyleMapper
+{
+
+ public void updateStyle(final String uri,
+ final String attrName,
+ final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ targetRule.setPropertyValueAsString(attrName, attrValue);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/ColorMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/ColorMapper.java
new file mode 100644
index 000000000000..6ab7454dbc59
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/ColorMapper.java
@@ -0,0 +1,52 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.fo;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.color.ColorStyleKeys;
+import org.jfree.layouting.input.style.values.CSSColorValue;
+import org.jfree.layouting.util.ColorUtil;
+
+public class ColorMapper implements StyleMapper
+{
+
+ public ColorMapper()
+ {
+ }
+
+ public void updateStyle(final String uri, final String attrName, final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ final CSSColorValue cv = (CSSColorValue) ColorUtil.parseColor(attrValue);
+ if (cv != null)
+ {
+ targetRule.setPropertyValue(ColorStyleKeys.COLOR, cv);
+ }
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontSizeMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontSizeMapper.java
new file mode 100644
index 000000000000..a28c293feef3
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontSizeMapper.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.fo;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.font.FontStyleKeys;
+
+public class FontSizeMapper implements StyleMapper
+{
+
+ public FontSizeMapper()
+ {
+ }
+
+ public void updateStyle(final String uri, final String attrName, final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ targetRule.setPropertyValueAsString(FontStyleKeys.FONT_SIZE, attrValue);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontStyleMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontStyleMapper.java
new file mode 100644
index 000000000000..e33a3c437c46
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontStyleMapper.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.fo;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.font.FontStyleKeys;
+
+public class FontStyleMapper implements StyleMapper
+{
+
+ public FontStyleMapper()
+ {
+ }
+
+ public void updateStyle(final String uri, final String attrName, final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ targetRule.setPropertyValueAsString(FontStyleKeys.FONT_STYLE, attrValue);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontWeightMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontWeightMapper.java
new file mode 100644
index 000000000000..c611b09cc444
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/FontWeightMapper.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.fo;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.font.FontStyleKeys;
+
+public class FontWeightMapper implements StyleMapper
+{
+
+ public FontWeightMapper()
+ {
+ }
+
+ public void updateStyle(final String uri, final String attrName, final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ targetRule.setPropertyValueAsString(FontStyleKeys.FONT_WEIGHT, attrValue);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/TextAlignMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/TextAlignMapper.java
new file mode 100644
index 000000000000..2820dc3d83f7
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/fo/TextAlignMapper.java
@@ -0,0 +1,47 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.fo;
+
+import com.sun.star.report.pentaho.parser.stylemapper.OneOfConstantsMapper;
+
+import org.jfree.layouting.input.style.keys.text.TextAlign;
+import org.jfree.layouting.input.style.keys.text.TextStyleKeys;
+
+public class TextAlignMapper extends OneOfConstantsMapper
+{
+
+ public TextAlignMapper()
+ {
+ super(TextStyleKeys.TEXT_ALIGN);
+ addMapping("start", TextAlign.START);
+ addMapping("end", TextAlign.END);
+ addMapping("left", TextAlign.LEFT);
+ addMapping("center", TextAlign.CENTER);
+ addMapping("right", TextAlign.RIGHT);
+ addMapping("justify", TextAlign.JUSTIFY);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontFamilyGenericMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontFamilyGenericMapper.java
new file mode 100644
index 000000000000..c3159f54e1a3
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontFamilyGenericMapper.java
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.font.FontStyleKeys;
+import org.jfree.layouting.input.style.values.CSSStringType;
+import org.jfree.layouting.input.style.values.CSSStringValue;
+import org.jfree.layouting.input.style.values.CSSValue;
+import org.jfree.layouting.input.style.values.CSSValueList;
+
+public class FontFamilyGenericMapper implements StyleMapper
+{
+
+ public FontFamilyGenericMapper()
+ {
+ }
+
+ public void updateStyle(final String uri, final String attrName, final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ final CSSValue value = targetRule.getPropertyCSSValue(FontStyleKeys.FONT_FAMILY);
+ if (!(value instanceof CSSValueList))
+ {
+ final CSSStringValue cssVal = new CSSStringValue(CSSStringType.STRING, attrValue);
+ targetRule.setPropertyValue(FontStyleKeys.FONT_FAMILY,
+ new CSSValueList(new CSSValue[]
+ {
+ cssVal
+ }));
+ }
+ else
+ {
+ final CSSValueList list = (CSSValueList) value;
+ targetRule.setPropertyValue(FontStyleKeys.FONT_FAMILY,
+ CSSValueList.insertLast(list, value));
+ }
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontFamilyMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontFamilyMapper.java
new file mode 100644
index 000000000000..808c57523361
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontFamilyMapper.java
@@ -0,0 +1,65 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.font.FontStyleKeys;
+import org.jfree.layouting.input.style.values.CSSStringType;
+import org.jfree.layouting.input.style.values.CSSStringValue;
+import org.jfree.layouting.input.style.values.CSSValue;
+import org.jfree.layouting.input.style.values.CSSValueList;
+
+public class FontFamilyMapper implements StyleMapper
+{
+
+ public FontFamilyMapper()
+ {
+ }
+
+ public void updateStyle(final String uri, final String attrName, final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ final CSSValue value = targetRule.getPropertyCSSValue(FontStyleKeys.FONT_FAMILY);
+ if (!(value instanceof CSSValueList))
+ {
+ final CSSStringValue cssVal = new CSSStringValue(CSSStringType.STRING, attrValue);
+ targetRule.setPropertyValue(FontStyleKeys.FONT_FAMILY,
+ new CSSValueList(new CSSValue[]
+ {
+ cssVal
+ }));
+ }
+ else
+ {
+ final CSSValueList list = (CSSValueList) value;
+ targetRule.setPropertyValue(FontStyleKeys.FONT_FAMILY,
+ CSSValueList.insertFirst(list, value));
+ }
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontNameMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontNameMapper.java
new file mode 100644
index 000000000000..8cc6721cffc3
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontNameMapper.java
@@ -0,0 +1,49 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.font.FontStyleKeys;
+import org.jfree.layouting.input.style.values.CSSStringType;
+import org.jfree.layouting.input.style.values.CSSStringValue;
+
+public class FontNameMapper implements StyleMapper
+{
+
+ public FontNameMapper()
+ {
+ }
+
+ public void updateStyle(final String uri, final String attrName, final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ targetRule.setPropertyValue(FontStyleKeys.FONT_NAME,
+ new CSSStringValue(CSSStringType.STRING, attrValue));
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontPitchMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontPitchMapper.java
new file mode 100644
index 000000000000..c7f10d61cb00
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontPitchMapper.java
@@ -0,0 +1,43 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.stylemapper.OneOfConstantsMapper;
+
+import org.jfree.layouting.input.style.keys.font.FontStyleKeys;
+import org.jfree.layouting.input.style.values.CSSConstant;
+
+public class FontPitchMapper extends OneOfConstantsMapper
+{
+
+ public FontPitchMapper()
+ {
+ super(FontStyleKeys.FONT_PITCH);
+ addMapping("variable", new CSSConstant("variable"));
+ addMapping("fixed", new CSSConstant("fixed"));
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontReliefMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontReliefMapper.java
new file mode 100644
index 000000000000..6d4f90c3beda
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/FontReliefMapper.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.font.FontStyleKeys;
+
+public class FontReliefMapper implements StyleMapper
+{
+
+ public FontReliefMapper()
+ {
+ }
+
+ public void updateStyle(final String uri, final String attrName, final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ targetRule.setPropertyValueAsString(FontStyleKeys.FONT_EFFECT, attrValue);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextEmphasizeMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextEmphasizeMapper.java
new file mode 100644
index 000000000000..1ba4c480d58d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextEmphasizeMapper.java
@@ -0,0 +1,45 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+
+public class TextEmphasizeMapper implements StyleMapper
+{
+
+ public TextEmphasizeMapper()
+ {
+ }
+
+ public void updateStyle(final String uri, final String attrName, final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ targetRule.setPropertyValueAsString("font-emphasize", attrValue);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineColorMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineColorMapper.java
new file mode 100644
index 000000000000..f247f2c171fc
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineColorMapper.java
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.text.TextStyleKeys;
+import org.jfree.layouting.input.style.values.CSSColorValue;
+import org.jfree.layouting.util.ColorUtil;
+
+public class TextUnderlineColorMapper implements StyleMapper
+{
+
+ public TextUnderlineColorMapper()
+ {
+ }
+
+ public void updateStyle(final String uri,
+ final String attrName,
+ final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ final CSSColorValue cv = (CSSColorValue) ColorUtil.parseColor(attrValue);
+ if (cv != null)
+ {
+ targetRule.setPropertyValue(TextStyleKeys.TEXT_UNDERLINE_COLOR, cv);
+ }
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineStyleMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineStyleMapper.java
new file mode 100644
index 000000000000..bfb1f64a8035
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineStyleMapper.java
@@ -0,0 +1,49 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.stylemapper.OneOfConstantsMapper;
+
+import org.jfree.layouting.input.style.keys.text.TextDecorationStyle;
+import org.jfree.layouting.input.style.keys.text.TextStyleKeys;
+
+public class TextUnderlineStyleMapper extends OneOfConstantsMapper
+{
+
+ public TextUnderlineStyleMapper()
+ {
+ super(TextStyleKeys.TEXT_UNDERLINE_STYLE);
+ addMapping("none", TextDecorationStyle.NONE);
+ addMapping("solid", TextDecorationStyle.SOLID);
+ addMapping("dotted", TextDecorationStyle.DOTTED);
+ addMapping("dash", TextDecorationStyle.DASHED);
+ addMapping("long-dash", TextDecorationStyle.LONG_DASH);
+ addMapping("dot-dash", TextDecorationStyle.DOT_DASH);
+ addMapping("dot-dot-dash", TextDecorationStyle.DOT_DOT_DASH);
+ addMapping("wave", TextDecorationStyle.WAVE);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineWidthMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineWidthMapper.java
new file mode 100644
index 000000000000..63628b9ed60d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineWidthMapper.java
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.stylemapper.OneOfConstantsMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.border.BorderWidth;
+import org.jfree.layouting.input.style.keys.text.TextDecorationWidth;
+import org.jfree.layouting.input.style.keys.text.TextStyleKeys;
+import org.jfree.layouting.input.style.values.CSSAutoValue;
+import org.jfree.layouting.input.style.values.CSSValue;
+
+public class TextUnderlineWidthMapper extends OneOfConstantsMapper
+{
+
+ public TextUnderlineWidthMapper()
+ {
+ super(TextStyleKeys.TEXT_UNDERLINE_WIDTH);
+ addMapping("auto", CSSAutoValue.getInstance());
+ addMapping("normal", BorderWidth.MEDIUM);
+ addMapping("bold", TextDecorationWidth.BOLD);
+ addMapping("thin", BorderWidth.THIN);
+ addMapping("dash", TextDecorationWidth.DASH);
+ addMapping("medium", BorderWidth.MEDIUM);
+ addMapping("thick", BorderWidth.THICK);
+ }
+
+ public void updateStyle(final String uri,
+ final String attrName,
+ final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ if (attrName == null)
+ {
+ throw new NullPointerException();
+ }
+
+ final CSSValue value = lookupMapping(attrValue);
+ if (value != null)
+ {
+ targetRule.setPropertyValue(getStyleKey(), value);
+ }
+ else
+ // percent
+ // positive integer
+ // positive length
+ {
+ targetRule.setPropertyValueAsString(getStyleKey(), attrValue);
+ }
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineWordMode.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineWordMode.java
new file mode 100644
index 000000000000..9cc2a62c157e
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/TextUnderlineWordMode.java
@@ -0,0 +1,43 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.stylemapper.OneOfConstantsMapper;
+
+import org.jfree.layouting.input.style.keys.text.TextDecorationMode;
+import org.jfree.layouting.input.style.keys.text.TextStyleKeys;
+
+public class TextUnderlineWordMode extends OneOfConstantsMapper
+{
+
+ public TextUnderlineWordMode()
+ {
+ super(TextStyleKeys.TEXT_UNDERLINE_MODE);
+ addMapping("continuous", TextDecorationMode.CONTINUOUS);
+ addMapping("skip-white-space", TextDecorationMode.SKIP_WHITE_SPACE);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/VerticalAlignMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/VerticalAlignMapper.java
new file mode 100644
index 000000000000..9994a1413b4f
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/style/VerticalAlignMapper.java
@@ -0,0 +1,47 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.style;
+
+import com.sun.star.report.pentaho.parser.stylemapper.OneOfConstantsMapper;
+
+import org.jfree.layouting.input.style.keys.line.LineStyleKeys;
+import org.jfree.layouting.input.style.values.CSSAutoValue;
+import org.jfree.layouting.input.style.values.CSSConstant;
+
+public class VerticalAlignMapper extends OneOfConstantsMapper
+{
+
+ public VerticalAlignMapper()
+ {
+ super(LineStyleKeys.VERTICAL_ALIGN);
+ addMapping("top", new CSSConstant("top"));
+ addMapping("bottom", new CSSConstant("bottom"));
+ addMapping("middle", new CSSConstant("middle"));
+ addMapping("baseline", new CSSConstant("baseline"));
+ addMapping("auto", CSSAutoValue.getInstance());
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/table/ColumnWidthMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/table/ColumnWidthMapper.java
new file mode 100644
index 000000000000..89c5769f15a6
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/table/ColumnWidthMapper.java
@@ -0,0 +1,53 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.table;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.box.BoxStyleKeys;
+
+/**
+ * Creation-Date: 03.07.2006, 13:08:27
+ *
+ * @author Thomas Morgner
+ */
+public class ColumnWidthMapper implements StyleMapper
+{
+
+ public ColumnWidthMapper()
+ {
+ }
+
+ public void updateStyle(final String uri,
+ final String attrName,
+ final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ targetRule.setPropertyValueAsString(BoxStyleKeys.WIDTH, attrValue);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/table/RowHeightMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/table/RowHeightMapper.java
new file mode 100644
index 000000000000..5d94f4101059
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/stylemapper/table/RowHeightMapper.java
@@ -0,0 +1,53 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.stylemapper.table;
+
+import com.sun.star.report.pentaho.parser.StyleMapper;
+
+import org.jfree.layouting.input.style.CSSDeclarationRule;
+import org.jfree.layouting.input.style.keys.box.BoxStyleKeys;
+
+/**
+ * Creation-Date: 03.07.2006, 13:08:27
+ *
+ * @author Thomas Morgner
+ */
+public class RowHeightMapper implements StyleMapper
+{
+
+ public RowHeightMapper()
+ {
+ }
+
+ public void updateStyle(final String uri,
+ final String attrName,
+ final String attrValue,
+ final CSSDeclarationRule targetRule)
+ {
+ targetRule.setPropertyValueAsString(BoxStyleKeys.HEIGHT, attrValue);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/table/CoveredCellReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/CoveredCellReadHandler.java
new file mode 100644
index 000000000000..34158230c3c1
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/CoveredCellReadHandler.java
@@ -0,0 +1,54 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.table;
+
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 14.03.2007
+ */
+public class CoveredCellReadHandler extends ElementReadHandler
+{
+
+ private final Element coveredCell;
+
+ public CoveredCellReadHandler()
+ {
+ coveredCell = new Section();
+ }
+
+ public Element getElement()
+ {
+ return coveredCell;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableCellReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableCellReadHandler.java
new file mode 100644
index 000000000000..9d963fd46326
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableCellReadHandler.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.table;
+
+import com.sun.star.report.pentaho.model.TableCellElement;
+import com.sun.star.report.pentaho.parser.text.NoCDATATextContentReadHandler;
+
+/**
+ * A read handler for table-cell contents. This is basicly a text-content
+ * read handler; we may extend this implementation later.
+ *
+ * @author Thomas Morgner
+ * @since 05.03.2007
+ */
+public class TableCellReadHandler extends NoCDATATextContentReadHandler
+{
+
+ public TableCellReadHandler()
+ {
+ super(new TableCellElement(), true);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableColumnReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableColumnReadHandler.java
new file mode 100644
index 000000000000..4b8bc8498d91
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableColumnReadHandler.java
@@ -0,0 +1,53 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.table;
+
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+/**
+ * Creation-Date: 03.07.2006, 14:26:55
+ *
+ * @author Thomas Morgner
+ */
+public class TableColumnReadHandler extends ElementReadHandler
+{
+
+ private final Section tableColumn;
+
+ public TableColumnReadHandler()
+ {
+ tableColumn = new Section();
+ }
+
+ public Element getElement()
+ {
+ return tableColumn;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableColumnsReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableColumnsReadHandler.java
new file mode 100644
index 000000000000..d1c23bb63957
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableColumnsReadHandler.java
@@ -0,0 +1,103 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.table;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Creation-Date: 03.07.2006, 13:50:41
+ *
+ * @author Thomas Morgner
+ */
+public class TableColumnsReadHandler extends ElementReadHandler
+{
+
+ private final List columns;
+ private final Section tableColumns;
+
+ public TableColumnsReadHandler()
+ {
+ columns = new ArrayList();
+ tableColumns = new Section();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.TABLE_NS.equals(uri) && OfficeToken.TABLE_COLUMN.equals(tagName))
+ {
+ final TableColumnReadHandler readHandler = new TableColumnReadHandler();
+ columns.add(readHandler);
+ return readHandler;
+ }
+
+ return null;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (int i = 0; i < columns.size(); i++)
+ {
+ final TableColumnReadHandler handler = (TableColumnReadHandler) columns.get(i);
+ tableColumns.addNode(handler.getElement());
+ }
+ }
+
+ public Element getElement()
+ {
+ return tableColumns;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableReadHandler.java
new file mode 100644
index 000000000000..2eb20bdc96ac
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableReadHandler.java
@@ -0,0 +1,145 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.table;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.model.OfficeTableSection;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.rpt.ConditionalPrintExpressionReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Creation-Date: 03.07.2006, 13:47:47
+ *
+ * @author Thomas Morgner
+ */
+public class TableReadHandler extends ElementReadHandler
+{
+
+ private final List children;
+ private final Section table;
+
+ public TableReadHandler()
+ {
+ children = new ArrayList();
+ table = new OfficeTableSection();
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs)
+ throws SAXException
+ {
+ super.startParsing(attrs);
+ final String enabled = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "visible");
+ if (enabled == null || OfficeToken.TRUE.equals(enabled))
+ {
+ table.setEnabled(true);
+ }
+ else
+ {
+ table.setEnabled(false);
+ }
+
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.OOREPORT_NS.equals(uri) && "conditional-print-expression".equals(tagName))
+ {
+ return new ConditionalPrintExpressionReadHandler(table);
+ }
+ else if (OfficeNamespaces.TABLE_NS.equals(uri))
+ {
+ if (OfficeToken.TABLE_COLUMNS.equals(tagName) || OfficeToken.TABLE_HEADER_COLUMNS.equals(tagName))
+ {
+ final TableColumnsReadHandler columns = new TableColumnsReadHandler();
+ children.add(columns);
+ return columns;
+ }
+ else if (OfficeToken.TABLE_ROW.equals(tagName))
+ {
+ final TableRowReadHandler rowHandler = new TableRowReadHandler();
+ children.add(rowHandler);
+ return rowHandler;
+ }
+ else if (OfficeToken.TABLE_ROWS.equals(tagName) || OfficeToken.TABLE_HEADER_ROWS.equals(tagName))
+ {
+ final TableRowsReadHandler rowsHandler = new TableRowsReadHandler();
+ children.add(rowsHandler);
+ return rowsHandler;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (int i = 0; i < children.size(); i++)
+ {
+ final ElementReadHandler handler = (ElementReadHandler) children.get(i);
+ table.addNode(handler.getElement());
+ }
+ }
+
+ public Element getElement()
+ {
+ return table;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableRowReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableRowReadHandler.java
new file mode 100644
index 000000000000..d86410140103
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableRowReadHandler.java
@@ -0,0 +1,126 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.table;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Creation-Date: 03.07.2006, 13:51:47
+ *
+ * @author Thomas Morgner
+ */
+public class TableRowReadHandler extends ElementReadHandler
+{
+
+ private final List tableCells;
+ private final Section tableRow;
+
+ public TableRowReadHandler()
+ {
+ tableCells = new ArrayList();
+ tableRow = new Section();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ final XmlReadHandler rh;
+ if (OfficeNamespaces.TABLE_NS.equals(uri))
+ {
+ if (OfficeToken.TABLE_CELL.equals(tagName))
+ {
+ rh = new TableCellReadHandler();
+ }
+ else if (OfficeToken.COVERED_TABLE_CELL.equals(tagName))
+ {
+ rh = new CoveredCellReadHandler();
+ }
+ else
+ {
+ rh = null;
+ }
+ if (rh != null)
+ {
+ tableCells.add(rh);
+ }
+ }
+ else
+ {
+ rh = null;
+ }
+ return rh;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (int i = 0; i < tableCells.size(); i++)
+ {
+ final ElementReadHandler handler = (ElementReadHandler) tableCells.get(i);
+ tableRow.addNode(handler.getElement());
+ }
+ }
+
+ /**
+ * Returns the object for this element or null, if this element does not
+ * create an object.
+ *
+ * @return the object.
+ */
+ public Element getElement()
+ {
+ return tableRow;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableRowsReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableRowsReadHandler.java
new file mode 100644
index 000000000000..00a61ffb8573
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/table/TableRowsReadHandler.java
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.table;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class TableRowsReadHandler extends ElementReadHandler
+{
+
+ private final List rows;
+ private final Section tableRows;
+
+ public TableRowsReadHandler()
+ {
+ rows = new ArrayList();
+ tableRows = new Section();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.TABLE_NS.equals(uri) && OfficeToken.TABLE_ROW.equals(tagName))
+ {
+ final TableRowReadHandler readHandler = new TableRowReadHandler();
+ rows.add(readHandler);
+ return readHandler;
+ }
+
+ return null;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (int i = 0; i < rows.size(); i++)
+ {
+ final TableRowReadHandler handler = (TableRowReadHandler) rows.get(i);
+ tableRows.addNode(handler.getElement());
+ }
+ }
+
+ public Element getElement()
+ {
+ return tableRows;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/text/NoCDATATextContentReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/text/NoCDATATextContentReadHandler.java
new file mode 100644
index 000000000000..95ba86623639
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/text/NoCDATATextContentReadHandler.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2007, Your Corporation. All Rights Reserved.
+ */
+package com.sun.star.report.pentaho.parser.text;
+
+import com.sun.star.report.OfficeToken;
+import com.sun.star.report.pentaho.OfficeNamespaces;
+import com.sun.star.report.pentaho.parser.ElementReadHandler;
+import com.sun.star.report.pentaho.parser.rpt.FixedContentReadHandler;
+import com.sun.star.report.pentaho.parser.rpt.FormattedTextReadHandler;
+import com.sun.star.report.pentaho.parser.rpt.ImageReadHandler;
+import com.sun.star.report.pentaho.parser.rpt.SubDocumentReadHandler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jfree.report.structure.Element;
+import org.jfree.report.structure.Section;
+import org.jfree.report.structure.StaticText;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * This is a generic implementation that accepts all input and adds special
+ * handlers for the report-elements.
+ *
+ * @author Thomas Morgner
+ */
+public class NoCDATATextContentReadHandler extends ElementReadHandler
+{
+
+ private Section section;
+ private List children;
+ private boolean copyType;
+
+ public NoCDATATextContentReadHandler(final Section section,
+ final boolean copyType)
+ {
+ this.children = new ArrayList();
+ this.section = section;
+ this.copyType = copyType;
+ }
+
+ public NoCDATATextContentReadHandler(final Section section)
+ {
+ this(section, false);
+ }
+
+ public NoCDATATextContentReadHandler()
+ {
+ this(new Section(), true);
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ super.startParsing(attrs);
+ final Element element = getElement();
+ if (copyType)
+ {
+ copyElementType(element);
+ }
+ copyAttributes(attrs, element);
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (OfficeNamespaces.OOREPORT_NS.equals(uri))
+ {
+ if ("fixed-content".equals(tagName))
+ {
+ final FixedContentReadHandler fixedContentReadHandler = new FixedContentReadHandler();
+ children.add(fixedContentReadHandler);
+ return fixedContentReadHandler;
+ }
+ if ("formatted-text".equals(tagName))
+ {
+ final FormattedTextReadHandler formattedTextReadHandler = new FormattedTextReadHandler();
+ children.add(formattedTextReadHandler);
+ return formattedTextReadHandler;
+ }
+ if (OfficeToken.IMAGE.equals(tagName))
+ {
+ final ImageReadHandler imageReadHandler = new ImageReadHandler();
+ children.add(imageReadHandler);
+ return imageReadHandler;
+ }
+ if ("sub-document".equals(tagName))
+ {
+ final SubDocumentReadHandler subDocReadHandler = new SubDocumentReadHandler(section);
+ // children.add(subDocReadHandler);
+ return subDocReadHandler;
+ }
+ }
+ if (OfficeNamespaces.DRAWING_NS.equals(uri))
+ {
+ final XmlReadHandler readHandler;
+ if (OfficeToken.IMAGE.equals(tagName))
+ {
+ readHandler = new ImageReadHandler();
+ }
+ else
+ {
+ readHandler = new NoCDATATextContentReadHandler();
+ }
+ children.add(readHandler);
+ return readHandler;
+ }
+ else
+ {
+ final TextContentReadHandler readHandler = new TextContentReadHandler();
+ children.add(readHandler);
+ return readHandler;
+ }
+ }
+
+ public List getChildren()
+ {
+ return children;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing() throws SAXException
+ {
+ for (int i = 0; i < children.size(); i++)
+ {
+ final Object o = children.get(i);
+ if (o instanceof ElementReadHandler)
+ {
+ final ElementReadHandler handler = (ElementReadHandler) o;
+ section.addNode(handler.getElement());
+ }
+ else if (o instanceof StaticText)
+ {
+ section.addNode((StaticText) o);
+ }
+ }
+ }
+
+ public Element getElement()
+ {
+ return section;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/text/TextContentReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/text/TextContentReadHandler.java
new file mode 100644
index 000000000000..ae0c29f13d3c
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/text/TextContentReadHandler.java
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.text;
+
+import org.jfree.report.structure.Section;
+import org.jfree.report.structure.StaticText;
+
+import org.xml.sax.SAXException;
+
+/**
+ * This is a generic implementation that accepts all input and adds special
+ * handlers for the report-elements.
+ *
+ * @author Thomas Morgner
+ */
+public class TextContentReadHandler extends NoCDATATextContentReadHandler
+{
+
+ public TextContentReadHandler(final Section section, final boolean copyType)
+ {
+ super(section, copyType);
+ }
+
+ public TextContentReadHandler(final Section section)
+ {
+ super(section);
+ }
+
+ public TextContentReadHandler()
+ {
+ }
+
+ /**
+ * This method is called to process the character data between element tags.
+ *
+ * @param ch the character buffer.
+ * @param start the start index.
+ * @param length the length.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ public void characters(final char[] ch, final int start, final int length)
+ throws SAXException
+ {
+ getChildren().add(new StaticText(new String(ch, start, length)));
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/parser/xlink/XLinkReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/parser/xlink/XLinkReadHandler.java
new file mode 100644
index 000000000000..54a6cae8eaaa
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/parser/xlink/XLinkReadHandler.java
@@ -0,0 +1,97 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.parser.xlink;
+
+import com.sun.star.report.pentaho.OfficeNamespaces;
+
+import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * An image reference.
+ *
+ * @author Thomas Morgner
+ */
+public class XLinkReadHandler extends AbstractXmlReadHandler
+{
+
+ private String uri;
+ private String type;
+ private String show;
+ private String actuate;
+
+ public XLinkReadHandler()
+ {
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs) throws SAXException
+ {
+ uri = attrs.getValue(OfficeNamespaces.XLINK_NS, "uri");
+ type = attrs.getValue(OfficeNamespaces.XLINK_NS, "type");
+ show = attrs.getValue(OfficeNamespaces.XLINK_NS, "show");
+ actuate = attrs.getValue(OfficeNamespaces.XLINK_NS, "actuate");
+ }
+
+ /**
+ * Returns the object for this element or null, if this element does not
+ * create an object.
+ *
+ * @return the object.
+ */
+ public Object getObject() throws SAXException
+ {
+ return uri;
+ }
+
+ public String getUri()
+ {
+ return uri;
+ }
+
+ public String getType()
+ {
+ return type;
+ }
+
+ public String getShow()
+ {
+ return show;
+ }
+
+ public String getActuate()
+ {
+ return actuate;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/smil.css b/reportbuilder/java/com/sun/star/report/pentaho/smil.css
new file mode 100644
index 000000000000..54d59ac828e2
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/smil.css
@@ -0,0 +1,5 @@
+@namespace url("urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0");
+
+/**
+ * All default styles for formating-objects elements (if there are any).
+*/
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/star-office.css b/reportbuilder/java/com/sun/star/report/pentaho/star-office.css
new file mode 100644
index 000000000000..22d57ca05a18
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/star-office.css
@@ -0,0 +1,5 @@
+@namespace url("http://openoffice.org/2004/office");
+
+/**
+ * All default styles for office elements.
+*/
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/star-report.css b/reportbuilder/java/com/sun/star/report/pentaho/star-report.css
new file mode 100644
index 000000000000..56f98506cf40
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/star-report.css
@@ -0,0 +1,73 @@
+@namespace table url("urn:oasis:names:tc:opendocument:xmlns:table:1.0");
+@namespace text url("urn:oasis:names:tc:opendocument:xmlns:text:1.0");
+@namespace report url("http://openoffice.org/2005/report");
+
+table|table {
+ display: table;
+}
+
+table|table-columns {
+ display: table-column-group;
+}
+
+table|table-column {
+ display: table-column;
+}
+
+table|table-row {
+ display: table-row;
+}
+
+table|table-cell {
+ display: table-cell;
+}
+
+table|table-cell[number-columns-spanned],
+table|table-cell[number-columns-spanned],
+table|table-columns[number-columns-spanned],
+table|table-column[number-columns-spanned] {
+ -x-liblayout-colspan: attr("table|number-columns-spanned");
+}
+
+table|table-cell[number-rows-spanned],
+table|table-cell[number-rows-spanned] {
+ -x-liblayout-rowspan: attr("table|number-rows-spanned");
+}
+
+
+/**
+ * Style definitions for star report.
+*/
+* {
+ vertical-align: baseline;
+}
+
+/**
+ * A standard number format declaration. The number of decimal places
+ * and whether there is grouping is defined by the format string.
+ *
+ * The position and content of embedded text is also derived directly from
+ * the given format string text.
+
+ number
+ scientific
+ text
+ boolean
+ date
+ currency
+ percentage
+ fraction
+
+*/
+@format number myname {
+ -x-liblayout-decimal-replacement: "-";
+ -x-liblayout-display-factor: 1000;
+ content: "'Prefix'#,##0.00'postfix'";
+}
+
+@format scientific anothername {
+ /* to be filled */
+}
+
+
+
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/star-rpt.css b/reportbuilder/java/com/sun/star/report/pentaho/star-rpt.css
new file mode 100644
index 000000000000..47b6aca74d00
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/star-rpt.css
@@ -0,0 +1,5 @@
+@namespace url("http://openoffice.org/2005/report");
+
+/**
+ * All default styles for report elements.
+*/
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/styles/LengthCalculator.java b/reportbuilder/java/com/sun/star/report/pentaho/styles/LengthCalculator.java
new file mode 100644
index 000000000000..0665066f2a9f
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/styles/LengthCalculator.java
@@ -0,0 +1,110 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.styles;
+
+import org.jfree.layouting.input.style.values.CSSNumericType;
+import org.jfree.layouting.input.style.values.CSSNumericValue;
+
+/**
+ * A helper class that sums up various CSS-length. The various unit types are
+ * kept separate until the final result is computed to minimize the computation
+ * inaccuracy.
+ *
+ * @author Thomas Morgner
+ * @since 15.03.2007
+ */
+public class LengthCalculator
+{
+ // and centimeter (x10)
+
+ private double millimeter;
+ // and pica (x12) and inch(x72). Px is assumed to be in 96dpi.
+ private double point;
+ private double pixel;
+
+ public LengthCalculator()
+ {
+ }
+
+ public void add(final CSSNumericValue value)
+ {
+ if (value == null)
+ {
+ return;
+ }
+
+ final CSSNumericType numericType = value.getType();
+ if (numericType == CSSNumericType.CM)
+ {
+ millimeter += value.getValue() * 10;
+ }
+ else if (numericType == CSSNumericType.MM)
+ {
+ millimeter += value.getValue();
+ }
+ else if (numericType == CSSNumericType.PT)
+ {
+ point += value.getValue();
+ }
+ else if (numericType == CSSNumericType.PC)
+ {
+ point += 12 * value.getValue();
+ }
+ else if (numericType == CSSNumericType.INCH)
+ {
+ point += 72 * value.getValue();
+ }
+ else if (numericType == CSSNumericType.PX)
+ {
+ pixel += value.getValue();
+ }
+ // LOGGER.debug ("Adding " + value + " [mm: " + millimeter + "] [pt: " + point + "] px: [" + pixel + "]");
+ }
+
+ public CSSNumericValue getResult()
+ {
+ if (pixel == 0 && point == 0)
+ {
+ return CSSNumericValue.createValue(CSSNumericType.MM, millimeter);
+ }
+ if (pixel == 0 && millimeter == 0)
+ {
+ return CSSNumericValue.createValue(CSSNumericType.PT, point);
+ }
+ if (point == 0 && millimeter == 0)
+ {
+ return CSSNumericValue.createValue(CSSNumericType.PX, pixel);
+ }
+ // else convert it.
+
+ double result = point;
+ result += (millimeter * 10 * 72 / 254);
+ result += pixel * 72 / 96;
+
+ return CSSNumericValue.createValue(CSSNumericType.PT, result);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapper.java b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapper.java
new file mode 100644
index 000000000000..cee02bae0430
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapper.java
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.styles;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.pentaho.reporting.libraries.resourceloader.Resource;
+import org.pentaho.reporting.libraries.resourceloader.ResourceException;
+import org.pentaho.reporting.libraries.resourceloader.ResourceManager;
+
+
+/**
+ * The style-mapper holds all information about the OpenOffice style mapping
+ * mechanism. OpenOffice references styles by their name and context, a style
+ * has a style-family assigned. The style family is determined by the element
+ * referencing the style, and there is no easily accessible information
+ * available on that.
+ * <p/>
+ * Therefore this mapper acts as gatekeeper for this information. The style
+ * mapping information is read from an external definition file and can be
+ * maintained externally.
+ *
+ * @author Thomas Morgner
+ * @since 11.03.2007
+ */
+public class StyleMapper
+{
+
+ private final Map backend;
+
+ public StyleMapper()
+ {
+ this.backend = new HashMap();
+ }
+
+ public void addMapping(final StyleMappingRule rule)
+ {
+ backend.put(rule.getKey(), rule);
+ }
+
+ public boolean isListOfStyles(final String elementNamespace,
+ final String elementTagName,
+ final String attributeNamespace,
+ final String attributeName)
+ {
+ final StyleMapperKey key = new StyleMapperKey(elementNamespace, elementTagName, attributeNamespace, attributeName);
+ final StyleMappingRule rule = (StyleMappingRule) backend.get(key);
+ return rule != null && rule.isListOfValues();
+ }
+
+ public String getStyleFamilyFor(final String elementNamespace,
+ final String elementTagName,
+ final String attributeNamespace,
+ final String attributeName)
+ {
+ final StyleMapperKey key = new StyleMapperKey(elementNamespace, elementTagName, attributeNamespace, attributeName);
+ final StyleMappingRule rule = (StyleMappingRule) backend.get(key);
+ if (rule == null)
+ {
+ return null;
+ }
+ return rule.getFamily();
+ }
+
+ public static StyleMapper loadInstance(final ResourceManager resourceManager)
+ throws ResourceException
+ {
+ final Resource resource = resourceManager.createDirectly("res://com/sun/star/report/pentaho/styles/stylemapper.xml", StyleMapper.class);
+ return (StyleMapper) resource.getResource();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperKey.java b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperKey.java
new file mode 100644
index 000000000000..447a0b958fd8
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperKey.java
@@ -0,0 +1,118 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.styles;
+
+/**
+ * A hash key for the stylemapper.
+ *
+ * @author Thomas Morgner
+ * @since 12.03.2007
+ */
+public final class StyleMapperKey
+{
+
+ private final String elementNamespace;
+ private final String elementName;
+ private final String attributeNamespace;
+ private final String attributeName;
+ private final int hashCode;
+
+ public StyleMapperKey(final String elementNamespace,
+ final String elementName,
+ final String attributeNamespace,
+ final String attributeName)
+ {
+ if (elementNamespace == null)
+ {
+ throw new NullPointerException();
+ }
+ if (elementName == null)
+ {
+ throw new NullPointerException();
+ }
+
+ this.elementNamespace = elementNamespace;
+ this.elementName = elementName;
+ this.attributeNamespace = attributeNamespace;
+ this.attributeName = attributeName;
+ this.hashCode = computeHashCode();
+ }
+
+ public String getElementNamespace()
+ {
+ return elementNamespace;
+ }
+
+ public String getElementName()
+ {
+ return elementName;
+ }
+
+ public String getAttributeNamespace()
+ {
+ return attributeNamespace;
+ }
+
+ public String getAttributeName()
+ {
+ return attributeName;
+ }
+
+ public boolean equals(final Object o)
+ {
+ if (this != o)
+ {
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ final StyleMapperKey that = (StyleMapperKey) o;
+
+ if ((attributeName != null ? !attributeName.equals(that.attributeName) : that.attributeName != null) || (attributeNamespace != null ? !attributeNamespace.equals(that.attributeNamespace) : that.attributeNamespace != null) || !elementName.equals(that.elementName) || !elementNamespace.equals(that.elementNamespace))
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ private int computeHashCode()
+ {
+ int result = elementNamespace.hashCode();
+ result = 31 * result + elementName.hashCode();
+ result = 31 * result + (attributeNamespace != null ? attributeNamespace.hashCode() : 0);
+ result = 31 * result + (attributeName != null ? attributeName.hashCode() : 0);
+ return result;
+ }
+
+ public int hashCode()
+ {
+ return hashCode;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperXmlFactoryModule.java b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperXmlFactoryModule.java
new file mode 100644
index 000000000000..95f8322de730
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperXmlFactoryModule.java
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.styles;
+
+import org.pentaho.reporting.libraries.xmlns.parser.XmlDocumentInfo;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlFactoryModule;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+/**
+ * An XML-FactoryModule that load the style-mapper contents.
+ *
+ * @author Thomas Morgner
+ * @since 12.03.2007
+ */
+public class StyleMapperXmlFactoryModule implements XmlFactoryModule
+{
+
+ public static final String NAMESPACE =
+ "http://jfreereport.sourceforge.net/namespaces/engine/openoffice/stylemapper";
+
+ public StyleMapperXmlFactoryModule()
+ {
+ }
+
+ public XmlReadHandler createReadHandler(final XmlDocumentInfo documentInfo)
+ {
+ return new StyleMappingDocumentReadHandler();
+ }
+
+ public int getDocumentSupport(final XmlDocumentInfo documentInfo)
+ {
+ final String rootNamespace = documentInfo.getRootElementNameSpace();
+ if (StyleMapperXmlFactoryModule.NAMESPACE.equals(rootNamespace) && "style-mapper-definition".equals(documentInfo.getRootElement()))
+ {
+
+ return XmlFactoryModule.RECOGNIZED_BY_NAMESPACE;
+ }
+ return XmlFactoryModule.NOT_RECOGNIZED;
+ }
+
+ public String getDefaultNamespace(final XmlDocumentInfo documentInfo)
+ {
+ return null;
+ }
+}
+
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperXmlResourceFactory.java b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperXmlResourceFactory.java
new file mode 100644
index 000000000000..3fecbbfc882e
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMapperXmlResourceFactory.java
@@ -0,0 +1,56 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.styles;
+
+import org.jfree.report.JFreeReportBoot;
+
+import org.pentaho.reporting.libraries.base.config.Configuration;
+import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlResourceFactory;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 12.03.2007
+ */
+public class StyleMapperXmlResourceFactory extends AbstractXmlResourceFactory
+{
+
+ public StyleMapperXmlResourceFactory()
+ {
+ }
+
+ protected Configuration getConfiguration()
+ {
+ return JFreeReportBoot.getInstance().getGlobalConfig();
+ }
+
+ public Class getFactoryType()
+ {
+ return StyleMapper.class;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingDocumentReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingDocumentReadHandler.java
new file mode 100644
index 000000000000..b0acf047df7f
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingDocumentReadHandler.java
@@ -0,0 +1,107 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.styles;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlReadHandler;
+import org.pentaho.reporting.libraries.xmlns.parser.XmlReadHandler;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 12.03.2007
+ */
+public class StyleMappingDocumentReadHandler extends AbstractXmlReadHandler
+{
+
+ private final StyleMapper styleMapper;
+ private final List mappings;
+
+ public StyleMappingDocumentReadHandler()
+ {
+ this.mappings = new ArrayList();
+ this.styleMapper = new StyleMapper();
+ }
+
+ /**
+ * Returns the handler for a child element.
+ *
+ * @param tagName the tag name.
+ * @param atts the attributes.
+ * @return the handler or null, if the tagname is invalid.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected XmlReadHandler getHandlerForChild(final String uri,
+ final String tagName,
+ final Attributes atts)
+ throws SAXException
+ {
+ if (isSameNamespace(uri) && "mapping".equals(tagName))
+ {
+ final StyleMappingReadHandler smr = new StyleMappingReadHandler();
+ mappings.add(smr);
+ return smr;
+ }
+ return null;
+ }
+
+ /**
+ * Done parsing.
+ *
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void doneParsing()
+ throws SAXException
+ {
+ for (int i = 0; i < mappings.size(); i++)
+ {
+ final StyleMappingReadHandler handler =
+ (StyleMappingReadHandler) mappings.get(i);
+ styleMapper.addMapping(handler.getRule());
+ }
+ }
+
+ /**
+ * Returns the object for this element or null, if this element does not
+ * create an object.
+ *
+ * @return the object.
+ */
+ public Object getObject()
+ throws SAXException
+ {
+ return styleMapper;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingReadHandler.java b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingReadHandler.java
new file mode 100644
index 000000000000..1ec2dc111cb0
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingReadHandler.java
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.styles;
+
+import org.pentaho.reporting.libraries.xmlns.parser.AbstractXmlReadHandler;
+import org.pentaho.reporting.libraries.xmlns.parser.ParseException;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 12.03.2007
+ */
+public class StyleMappingReadHandler extends AbstractXmlReadHandler
+{
+
+ private StyleMappingRule rule;
+
+ public StyleMappingReadHandler()
+ {
+ }
+
+ /**
+ * Starts parsing.
+ *
+ * @param attrs the attributes.
+ * @throws org.xml.sax.SAXException if there is a parsing error.
+ */
+ protected void startParsing(final Attributes attrs)
+ throws SAXException
+ {
+ final String elementNamespace = attrs.getValue(getUri(),
+ "element-namespace");
+ if (elementNamespace == null)
+ {
+ throw new ParseException("Required attribute 'element-namespace' is missing", getLocator());
+ }
+
+ final String elementName = attrs.getValue(getUri(), "element-name");
+
+ if (elementName == null)
+ {
+ throw new ParseException("Required attribute 'element-name' is missing", getLocator());
+ }
+
+ final String attributeNamespace = attrs.getValue(getUri(),
+ "attribute-namespace");
+ final String attributeName = attrs.getValue(getUri(), "attribute-name");
+
+ final boolean listOfValues =
+ "styleNameRefs".equals(attrs.getValue(getUri(), "type"));
+
+ final String family = attrs.getValue(getUri(), "style-family");
+ final StyleMapperKey key = new StyleMapperKey(elementNamespace, elementName, attributeNamespace, attributeName);
+ rule = new StyleMappingRule(key, family, listOfValues);
+ }
+
+ public StyleMappingRule getRule()
+ {
+ return rule;
+ }
+
+ /**
+ * Returns the object for this element or null, if this element does not
+ * create an object.
+ *
+ * @return the object.
+ */
+ public Object getObject()
+ throws SAXException
+ {
+ return rule;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingRule.java b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingRule.java
new file mode 100644
index 000000000000..9698e73ce67b
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/styles/StyleMappingRule.java
@@ -0,0 +1,64 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.pentaho.styles;
+
+/**
+ * Todo: Document me!
+ *
+ * @author Thomas Morgner
+ * @since 12.03.2007
+ */
+public class StyleMappingRule
+{
+
+ private final StyleMapperKey key;
+ private final String family;
+ private final boolean listOfValues;
+
+ public StyleMappingRule(final StyleMapperKey key, final String family,
+ final boolean listOfValues)
+ {
+ this.key = key;
+ this.family = family;
+ this.listOfValues = listOfValues;
+ }
+
+ public StyleMapperKey getKey()
+ {
+ return key;
+ }
+
+ public String getFamily()
+ {
+ return family;
+ }
+
+ public boolean isListOfValues()
+ {
+ return listOfValues;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/styles/stylemapper.xml b/reportbuilder/java/com/sun/star/report/pentaho/styles/stylemapper.xml
new file mode 100644
index 000000000000..fa350df051ce
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/styles/stylemapper.xml
@@ -0,0 +1,772 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ -->
+<style-mapper-definition
+ xmlns="http://jfreereport.sourceforge.net/namespaces/engine/openoffice/stylemapper">
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="a"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="text"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="alphabetical-index"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="section"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="alphabetical-index-entry-template"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="bibliography"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="section"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="bibliography-entry-template"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="h"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="illustration-index"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="section"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="illustration-index-entry-template"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-entry-bibliography"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-entry-chapter"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-entry-link-end"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-entry-link-start"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-entry-page-number"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-entry-span"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-entry-tab-stop"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-entry-text"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-source-style"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-title"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="section"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="index-title-template"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="linenumbering-configuration"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="text"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="list"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="list"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="list-level-style-bullet"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="text"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="list-level-style-number"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="numbered-paragraph"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="list"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="object-index"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="section"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="object-index-entry-template"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="outline-level-style"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="character"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="p"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="p"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="class-names"
+ style-family="paragraph"
+ type="styleNameRefs"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="ruby"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="ruby"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="ruby-text"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="section"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="section"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="span"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="text"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="span"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="class-names"
+ style-family="text"
+ type="styleNameRefs"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="table-index"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="section"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="table-index-entry-template"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="table-of-content"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="section"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="table-of-content-entry-template"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="user-index"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="section"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ element-name="user-index-entry-template"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ attribute-name="style-name"
+ style-family="paragraph"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="table"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="background"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="body"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="covered-table-cell"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="even-columns"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="even-rows"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="first-column"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="first-row"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="last-column"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="last-row"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="odd-columns"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="odd-rows"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="table-cell"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-cell"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="table-column"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-column"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ element-name="table-row"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ attribute-name="style-name"
+ style-family="table-row"
+ type="styleNameRef"/>
+
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ element-name="cube"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ element-name="extrude"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ element-name="rotate"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ element-name="scene"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ element-name="sphere"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="caption"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="circle"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="connector"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="control"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="custom-shape"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="ellipse"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="frame"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="g"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="line"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="measure"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="page"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="page-thumbnail"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="path"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="polygon"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="polyline"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="rect"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="regular-polygon"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ element-name="annotation"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ element-name="notes"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ element-name="handout-master"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ element-name="master-page"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="graphic"
+ type="styleNameRef"/>
+
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ element-name="cube"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ element-name="extrude"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ element-name="rotate"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ element-name="scene"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ element-name="sphere"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="caption"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="circle"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="connector"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="custom-shape"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="ellipse"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="frame"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="g"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="line"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="measure"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="page-thumbnail"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="path"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="polygon"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="polyline"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="rect"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ element-name="regular-polygon"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ element-name="annotation"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
+ attribute-name="style-name"
+ style-family="presentation"
+ type="styleNameRef"/>
+
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="axis"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="chart"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="data-label"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="data-point"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="equation"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="error-indicator"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="floor"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="footer"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="grid"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="legend"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="mean-value"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="plot-area"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="regression-curve"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="series"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="stock-gain-marker"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="stock-loss-marker"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="stock-range-line"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="subtitle"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="title"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ element-name="wall"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ attribute-name="style-name"
+ style-family="chart"
+ type="styleNameRef"/>
+ <mapping element-namespace="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ element-name="drop-cap"
+ attribute-namespace="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ attribute-name="style-name"
+ style-family="text"
+ type="styleNameRef"/>
+</style-mapper-definition>
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/styles/stylemapper.xsd b/reportbuilder/java/com/sun/star/report/pentaho/styles/stylemapper.xsd
new file mode 100644
index 000000000000..05e7d0c204f2
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/styles/stylemapper.xsd
@@ -0,0 +1,91 @@
+<!--
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ -->
+
+<xsd:schema version="0.9"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://jfreereport.sourceforge.net/namespaces/engine/openoffice/stylemapper"
+ targetNamespace="http://jfreereport.sourceforge.net/namespaces/engine/openoffice/stylemapper"
+ attributeFormDefault="unqualified">
+ <xsd:annotation>
+ <xsd:documentation>
+ This schema describes the format of the stylemapper definition file.
+ The stylemapper declares what style-families are referenced by an element.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:simpleType name="styleNameRefType">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="styleNameRef"/>
+ <xsd:enumeration value="styleNameRefs"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="styleFamilyType">
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="paragraph"/>
+ <xsd:enumeration value="text"/>
+ <xsd:enumeration value="section"/>
+ <xsd:enumeration value="table"/>
+ <xsd:enumeration value="table-column"/>
+ <xsd:enumeration value="table-row"/>
+ <xsd:enumeration value="table-cell"/>
+ <xsd:enumeration value="table-page"/>
+ <xsd:enumeration value="chart"/>
+ <xsd:enumeration value="default"/>
+ <xsd:enumeration value="drawing-page"/>
+ <xsd:enumeration value="graphic"/>
+ <xsd:enumeration value="presentation"/>
+ <xsd:enumeration value="control"/>
+ <xsd:enumeration value="ruby"/>
+ <xsd:enumeration value="custom-shape"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:element name="mapping">
+ <xsd:complexType>
+ <xsd:attribute name="element-namespace" use="required" type="xsd:anyURI"/>
+ <xsd:attribute name="element-name" use="required" type="xsd:NCName"/>
+ <xsd:attribute name="attribute-namespace" use="required" type="xsd:anyURI"/>
+ <xsd:attribute name="attribute-name" use="required" type="xsd:NCName"/>
+ <xsd:attribute name="type" use="required" type="styleNameRefType"/>
+ <xsd:attribute name="style-family" use="required" type="styleFamilyType"/>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="style-mapper-definition">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:restriction base="xsd:anyType">
+ <xsd:sequence>
+ <xsd:element ref="mapping" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+</xsd:schema>
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/svg.css b/reportbuilder/java/com/sun/star/report/pentaho/svg.css
new file mode 100644
index 000000000000..ebe16e30b115
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/svg.css
@@ -0,0 +1,5 @@
+@namespace url("urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0");
+
+/**
+ * All default styles for formating-objects elements (if there are any).
+*/
diff --git a/reportbuilder/java/com/sun/star/report/pentaho/xsl-fo.css b/reportbuilder/java/com/sun/star/report/pentaho/xsl-fo.css
new file mode 100644
index 000000000000..f030a3872481
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/pentaho/xsl-fo.css
@@ -0,0 +1,5 @@
+@namespace url("urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0");
+
+/**
+ * All default styles for formating-objects elements (if there are any).
+*/
diff --git a/reportbuilder/java/com/sun/star/report/util/DefaultJobProperties.java b/reportbuilder/java/com/sun/star/report/util/DefaultJobProperties.java
new file mode 100644
index 000000000000..050ad47615cd
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/util/DefaultJobProperties.java
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.util;
+
+import com.sun.star.report.JobDefinitionException;
+import com.sun.star.report.JobProperties;
+import com.sun.star.report.ReportEngineMetaData;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+public class DefaultJobProperties implements JobProperties
+{
+
+ private final ReportEngineMetaData metaData;
+ private final Map properties;
+
+ public DefaultJobProperties(final ReportEngineMetaData metaData)
+ {
+ if (metaData == null)
+ {
+ throw new NullPointerException();
+ }
+ this.properties = new HashMap();
+ this.metaData = metaData;
+ }
+
+ public Object getProperty(final String key)
+ {
+ return properties.get(key);
+ }
+
+ public void setProperty(final String key, final Object value)
+ throws JobDefinitionException
+ {
+ final Class type = metaData.getParameterType(key);
+ if (type == null)
+ {
+ throw new JobDefinitionException("The parameter name is not known: " + key);
+ }
+ if (!type.isInstance(value))
+ {
+ throw new JobDefinitionException("The parameter value is not understood");
+ }
+
+ this.properties.put(key, value);
+ }
+
+ public JobProperties copy()
+ {
+ final DefaultJobProperties props = new DefaultJobProperties(metaData);
+ props.properties.putAll(properties);
+ return props;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/util/DefaultParameterMap.java b/reportbuilder/java/com/sun/star/report/util/DefaultParameterMap.java
new file mode 100644
index 000000000000..0fdda8f21d61
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/util/DefaultParameterMap.java
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.util;
+
+import com.sun.star.report.ParameterMap;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+public class DefaultParameterMap implements ParameterMap
+{
+
+ private final Map backend;
+
+ public DefaultParameterMap()
+ {
+ backend = new HashMap();
+ }
+
+ public void clear()
+ {
+ backend.clear();
+ }
+
+ /**
+ * Retrieves the value stored for a key in this properties collection.
+ *
+ * @param key the property key.
+ * @return The stored value, or <code>null</code> if the key does not exist in this
+ * collection.
+ */
+ public Object get(final String key)
+ {
+ if (key == null)
+ {
+ throw new NullPointerException("DefaultParameterMap.get (..): Parameter 'key' must not be null");
+ }
+ return backend.get(key);
+ }
+
+ /**
+ * Retrieves the value stored for a key in this properties collection, and returning the
+ * default value if the key was not stored in this properties collection.
+ *
+ * @param key the property key.
+ * @param defaultValue the default value to be returned when the key is not stored in
+ * this properties collection.
+ * @return The stored value, or the default value if the key does not exist in this
+ * collection.
+ */
+ public Object get(final String key, final Object defaultValue)
+ {
+ if (key == null)
+ {
+ throw new NullPointerException("DefaultParameterMap.get (..): Parameter 'key' must not be null");
+ }
+ final Object o = this.backend.get(key);
+ if (o == null)
+ {
+ return defaultValue;
+ }
+ return o;
+ }
+
+ public String[] keys()
+ {
+ return (String[]) this.backend.keySet().toArray(new String[backend.size()]);
+ }
+
+ /**
+ * Adds a property to this properties collection. If a property with the given name
+ * exist, the property will be replaced with the new value. If the value is null, the
+ * property will be removed.
+ *
+ * @param key the property key.
+ * @param value the property value.
+ */
+ public void put(final String key, final Object value)
+ {
+ if (key == null)
+ {
+ throw new NullPointerException("ReportProperties.put (..): Parameter 'key' must not be null");
+ }
+ if (value == null)
+ {
+ this.backend.remove(key);
+ }
+ else
+ {
+ this.backend.put(key, value);
+ }
+ }
+
+ public int size()
+ {
+ return this.backend.size();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/util/DefaultReportJobDefinition.java b/reportbuilder/java/com/sun/star/report/util/DefaultReportJobDefinition.java
new file mode 100644
index 000000000000..dbd943bb0ea1
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/util/DefaultReportJobDefinition.java
@@ -0,0 +1,116 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.util;
+
+import com.sun.star.report.DataSourceFactory;
+import com.sun.star.report.InputRepository;
+import com.sun.star.report.JobDefinitionException;
+import com.sun.star.report.JobProperties;
+import com.sun.star.report.OutputRepository;
+import com.sun.star.report.ParameterMap;
+import com.sun.star.report.ReportEngineMetaData;
+import com.sun.star.report.ReportEngineParameterNames;
+import com.sun.star.report.ReportJobDefinition;
+
+public class DefaultReportJobDefinition implements ReportJobDefinition
+{
+
+ public static final String OUTPUT_TYPE = "output-type";
+ private final DefaultParameterMap parameters;
+ private final DefaultJobProperties properties;
+
+ public DefaultReportJobDefinition(final ReportEngineMetaData metaData)
+ {
+ this.parameters = new DefaultParameterMap();
+ this.properties = new DefaultJobProperties(metaData);
+ }
+
+ public void setDataSourceFactory(final DataSourceFactory dataSourceFactory)
+ throws JobDefinitionException
+ {
+ this.properties.setProperty(ReportEngineParameterNames.INPUT_DATASOURCE_FACTORY, dataSourceFactory);
+ }
+
+ public DataSourceFactory getDataSourceFactory()
+ {
+ return (DataSourceFactory) this.properties.getProperty(ReportEngineParameterNames.INPUT_DATASOURCE_FACTORY);
+ }
+
+ public InputRepository getInputRepository()
+ {
+ return (InputRepository) this.properties.getProperty(ReportEngineParameterNames.INPUT_REPOSITORY);
+ }
+
+ public void setInputRepository(final InputRepository inputRepository)
+ throws JobDefinitionException
+ {
+ this.properties.setProperty(ReportEngineParameterNames.INPUT_REPOSITORY, inputRepository);
+ }
+
+ public OutputRepository getOutputRepository()
+ {
+ return (OutputRepository) this.properties.getProperty(ReportEngineParameterNames.OUTPUT_REPOSITORY);
+ }
+
+ public void setOutputRepository(final OutputRepository outputRepository)
+ throws JobDefinitionException
+ {
+ this.properties.setProperty(ReportEngineParameterNames.OUTPUT_REPOSITORY, outputRepository);
+ }
+
+ /**
+ * The parameters of the root report definition. The parameters for the subreports are
+ * defined using mappings, it would not make sense to define them here.
+ *
+ * @return a map container for query parameters.
+ */
+ public ParameterMap getQueryParameters()
+ {
+ return parameters;
+ }
+
+ public void setReportDefinitionName(final String reportDefinitionName)
+ throws JobDefinitionException
+ {
+ this.properties.setProperty(ReportEngineParameterNames.INPUT_NAME, reportDefinitionName);
+ }
+
+ /**
+ * The name under which we can load the report definition.
+ *
+ * @return the report definition's name.
+ */
+ public String getReportDefinitionName()
+ {
+ return (String) this.properties.getProperty(ReportEngineParameterNames.INPUT_NAME);
+ }
+
+ public JobProperties getProcessingParameters()
+ {
+ return properties;
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/util/ManifestWriter.java b/reportbuilder/java/com/sun/star/report/util/ManifestWriter.java
new file mode 100644
index 000000000000..f1b6f7a56ab3
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/util/ManifestWriter.java
@@ -0,0 +1,123 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.util;
+
+import com.sun.star.report.OutputRepository;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.jfree.report.JFreeReportBoot;
+
+import org.pentaho.reporting.libraries.xmlns.common.AttributeList;
+import org.pentaho.reporting.libraries.xmlns.writer.DefaultTagDescription;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriter;
+import org.pentaho.reporting.libraries.xmlns.writer.XmlWriterSupport;
+
+
+/**
+ * Creation-Date: 24.07.2007, 18:16:52
+ *
+ * @author Thomas Morgner
+ */
+public class ManifestWriter
+{
+ // need this two strings other it breaks the ooo build :-(
+
+ public static final String MANIFEST_NS = "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0";
+ public static final String TAG_DEF_PREFIX = "com.sun.star.report.pentaho.output.";
+ private final Map entries;
+
+ public ManifestWriter()
+ {
+ entries = new HashMap();
+ }
+
+ public void addEntry(final String fullPath, final String mimeType)
+ {
+ if (fullPath == null)
+ {
+ throw new NullPointerException();
+ }
+ if (mimeType == null)
+ {
+ throw new NullPointerException();
+ }
+ if ("META-INF/manifest.xml".equals(fullPath))
+ {
+ return;
+ }
+ entries.put(fullPath, mimeType);
+ }
+
+ public boolean isEmpty()
+ {
+ return entries.isEmpty();
+ }
+
+ public void write(final OutputRepository outputRepository) throws IOException
+ {
+ if (isEmpty())
+ {
+ return;
+ }
+
+ final DefaultTagDescription tagDescription = new DefaultTagDescription();
+ tagDescription.configure(JFreeReportBoot.getInstance().getGlobalConfig(),
+ TAG_DEF_PREFIX);
+
+ final OutputStream manifestOutputStream =
+ outputRepository.createOutputStream("META-INF/manifest.xml", "text/xml");
+
+ final OutputStreamWriter writer = new OutputStreamWriter(manifestOutputStream, "UTF-8");
+ final XmlWriter xmlWriter = new XmlWriter(writer, tagDescription);
+ xmlWriter.setAlwaysAddNamespace(true);
+ xmlWriter.writeXmlDeclaration("UTF-8");
+
+ final AttributeList rootAttributes = new AttributeList();
+ rootAttributes.addNamespaceDeclaration("manifest", MANIFEST_NS);
+ xmlWriter.writeTag(MANIFEST_NS, "manifest", rootAttributes, XmlWriterSupport.OPEN);
+
+ final Iterator iterator = entries.entrySet().iterator();
+ while (iterator.hasNext())
+ {
+ final Map.Entry entry = (Map.Entry) iterator.next();
+ final AttributeList entryAttrs = new AttributeList();
+ entryAttrs.setAttribute(MANIFEST_NS, "media-type", (String) entry.getValue());
+ entryAttrs.setAttribute(MANIFEST_NS, "full-path", (String) entry.getKey());
+ xmlWriter.writeTag(MANIFEST_NS, "file-entry", entryAttrs, XmlWriterSupport.CLOSE);
+ }
+
+ xmlWriter.writeCloseTag();
+ xmlWriter.close();
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/util/ReportUtil.java b/reportbuilder/java/com/sun/star/report/util/ReportUtil.java
new file mode 100644
index 000000000000..464f0e9901b7
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/util/ReportUtil.java
@@ -0,0 +1,46 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.report.util;
+
+import org.pentaho.reporting.libraries.base.util.ObjectUtilities;
+
+/**
+ *
+ * @author Ocke Janssen
+ */
+public class ReportUtil
+{
+
+ private ReportUtil()
+ {
+ }
+
+ public static boolean equalString(final String uri, final String uri2)
+ {
+ return ObjectUtilities.equal(uri, uri2);
+ }
+}
diff --git a/reportbuilder/java/com/sun/star/report/util/makefile.mk b/reportbuilder/java/com/sun/star/report/util/makefile.mk
new file mode 100644
index 000000000000..6cc9a14e524d
--- /dev/null
+++ b/reportbuilder/java/com/sun/star/report/util/makefile.mk
@@ -0,0 +1,49 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ = ..$/..$/..$/..$/..$/..
+PRJNAME = reportbuilder
+TARGET= rpt_java_css_util
+PACKAGE = com$/sun$/star$/report$/util
+
+# --- Settings -----------------------------------------------------
+.INCLUDE: settings.mk
+#----- compile .java files -----------------------------------------
+
+.IF "$(SYSTEM_JFREEREPORT)" == "YES"
+EXTRAJARFILES = $(LIBBASE_JAR) $(LIBXML_JAR) $(JFREEREPORT_JAR)
+.ELSE
+.INCLUDE : $(SOLARBINDIR)/jfreereport_version.mk
+JARFILES += \
+ libbase-$(LIBBASE_VERSION).jar \
+ libxml-$(LIBXML_VERSION).jar \
+ flow-engine-$(FLOW_ENGINE_VERSION).jar
+.ENDIF
+
+JAVAFILES = DefaultJobProperties.java DefaultParameterMap.java DefaultReportJobDefinition.java ManifestWriter.java
+# --- Targets ------------------------------------------------------
+.INCLUDE : target.mk
diff --git a/reportbuilder/java/jfreereport.properties b/reportbuilder/java/jfreereport.properties
new file mode 100644
index 000000000000..d06a2dc28885
--- /dev/null
+++ b/reportbuilder/java/jfreereport.properties
@@ -0,0 +1,30 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+org.jfree.report.modules.sun.report.Module=com.sun.star.report.pentaho.StarReportModule
+
diff --git a/reportbuilder/java/libformula.properties b/reportbuilder/java/libformula.properties
new file mode 100644
index 000000000000..894a95b10b2a
--- /dev/null
+++ b/reportbuilder/java/libformula.properties
@@ -0,0 +1,43 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+##
+# Any configuration will happen here.
+org.pentaho.reporting.libraries.formula.datesystem.StartYear=1930
+org.pentaho.reporting.libraries.formula.datesystem.ExcelHack=false
+
+#
+# A list of all known functions.
+#
+
+##
+# Meta data functions
+org.pentaho.reporting.libraries.formula.functions.metadata.Author.class=com.sun.star.report.function.metadata.AuthorFunction
+org.pentaho.reporting.libraries.formula.functions.metadata.Author.description=com.sun.star.report.function.metadata.AuthorFunctionDescription
+org.pentaho.reporting.libraries.formula.functions.metadata.Title.class=com.sun.star.report.function.metadata.TitleFunction
+org.pentaho.reporting.libraries.formula.functions.metadata.Title.description=com.sun.star.report.function.metadata.TitleFunctionDescription
diff --git a/reportbuilder/java/loader.properties b/reportbuilder/java/loader.properties
new file mode 100644
index 000000000000..d51a30de1a2c
--- /dev/null
+++ b/reportbuilder/java/loader.properties
@@ -0,0 +1,31 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+# x-no-translate
+
+org.pentaho.reporting.libraries.resourceloader.factory.type.com.sun.star.report.pentaho.model.OfficeDocument=com.sun.star.report.pentaho.parser.OfficeDocumentXmlResourceFactory
+org.pentaho.reporting.libraries.resourceloader.factory.type.com.sun.star.report.pentaho.model.OfficeStylesCollection=com.sun.star.report.pentaho.parser.OfficeStylesXmlResourceFactory
+org.pentaho.reporting.libraries.resourceloader.factory.type.com.sun.star.report.pentaho.styles.StyleMapper=com.sun.star.report.pentaho.styles.StyleMapperXmlResourceFactory
diff --git a/reportbuilder/java/makefile.mk b/reportbuilder/java/makefile.mk
new file mode 100644
index 000000000000..ba62a0dd5acf
--- /dev/null
+++ b/reportbuilder/java/makefile.mk
@@ -0,0 +1,45 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..
+PRJNAME=reportbuilder
+TARGET=rpt_java
+# --- Settings ----------------------------------
+.INCLUDE : settings.mk
+# ------------------------------------------------------------------
+
+COPYFILES = \
+ $(CLASSDIR)$/jfreereport.properties \
+ $(CLASSDIR)$/libformula.properties \
+ $(CLASSDIR)$/loader.properties
+
+.INCLUDE : target.mk
+# --- Targets ----------------------------------
+ALLTAR : $(COPYFILES)
+
+$(COPYFILES): $$(@:f)
+ +$(COPY) $< $@
diff --git a/reportbuilder/license/THIRDPARTYREADMELICENSE.html b/reportbuilder/license/THIRDPARTYREADMELICENSE.html
new file mode 100644
index 000000000000..39ab7d6e8efb
--- /dev/null
+++ b/reportbuilder/license/THIRDPARTYREADMELICENSE.html
@@ -0,0 +1,768 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+</head>
+<body>
+DO NOT TRANSLATE OR LOCALIZE THIS DOCUMENT
+<br>
+<ul id="mozToc">
+<!--mozToc h2 1 h3 2-->
+ <li><a href="#mozTocId85416">Object Refinery Ltd, Pentaho Corporation
+ </a>
+ <ul>
+ <li><a href="#mozTocId993579">flute </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId716287">Object Refinery Ltd, Pentaho
+Corporation </a>
+ <ul>
+ <li><a href="#mozTocId398477">JCommon-Serializer </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId401194">Object Refinery Ltd, Pentaho
+Corporation </a>
+ <ul>
+ <li><a href="#mozTocId824702">JCommon </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId304569">Object Refinery Ltd, Pentaho
+Corporation </a>
+ <ul>
+ <li><a href="#mozTocId90190">JFreeReport </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId732912">Object Refinery Ltd, Pentaho
+Corporation </a>
+ <ul>
+ <li><a href="#mozTocId305365">JCommon </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId807378">Object Refinery Ltd, Pentaho
+Corporation </a>
+ <ul>
+ <li><a href="#mozTocId266793">liblayout </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId239140">Object Refinery Ltd, Pentaho
+Corporation </a>
+ <ul>
+ <li><a href="#mozTocId607093">libloader </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId133132">Object Refinery Ltd, Pentaho
+Corporation </a>
+ <ul>
+ <li><a href="#mozTocId915718">libxml </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId249097">Object Refinery Ltd, Pentaho
+Corporation </a>
+ <ul>
+ <li><a href="#mozTocId420278">pixie </a></li>
+ </ul>
+ </li>
+</ul>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product:Flute ; Use of any of this software
+is governed
+by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId85416"></a>Object Refinery Ltd,
+Pentaho Corporation<br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId993579"></a>flute<br>
+</h3>
+W3C&reg; SOFTWARE NOTICE AND LICENSE
+<br>
+Copyright &copy; 1994-2002 World Wide Web Consortium, (Massachusetts
+Institute of
+Technology, Institut National de Recherche en Informatique et en
+Automatique,
+Keio University). All Rights Reserved.
+http://www.w3.org/Consortium/Legal/
+<br>
+This W3C work (including software, documents, or other related items)
+is being
+provided by the copyright holders under the following license. By
+obtaining,
+using and/or copying this work, you (the licensee) agree that you have
+read,
+understood, and will comply with the following terms and conditions:
+<br>
+Permission to use, copy, modify, and distribute this software and its
+documentation, with or without modification, for any purpose and
+without fee or
+royalty is hereby granted, provided that you include the following on
+ALL copies
+of the software and documentation or portions thereof, including
+modifications,
+that you make:
+<br>
+1. The full text of this NOTICE in a location viewable to users of the
+redistributed or derivative work.
+<br>
+2. Any pre-existing intellectual property disclaimers, notices, or
+terms and
+conditions. If none exist, a short notice of the following form
+(hypertext is
+preferred, text is permitted) should be used within the body of any
+redistributed or derivative code: "Copyright &copy; [$date-of-software]
+World Wide
+Web Consortium, (Massachusetts Institute of Technology, Institut
+National de
+Recherche en Informatique et en Automatique, Keio University). All
+Rights
+Reserved. http://www.w3.org/Consortium/Legal/"
+<br>
+3. Notice of any changes or modifications to the W3C files, including
+the
+date changes were made. (We recommend you provide URIs to the location
+from
+which the code is derived.)
+<br>
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
+HOLDERS MAKE
+NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED
+TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE
+OR THAT
+THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD
+PARTY
+PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+<br>
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL
+OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+DOCUMENTATION.
+<br>
+The name and trademarks of copyright holders may NOT be used in
+advertising or
+publicity pertaining to the software without specific, written prior
+permission.
+Title to copyright in this software and any associated documentation
+will at all
+times remain with copyright holders.
+<br>
+____________________________________
+<br>
+This formulation of W3C's notice and license became active on August 14
+1998 so
+as to improve compatibility with GPL. This version ensures that W3C
+software
+licensing terms are no more restrictive than GPL and consequently W3C
+software
+may be distributed in GPL packages. See the older formulation for the
+policy
+prior to this date. Please see our Copyright FAQ for common questions
+about
+using materials from our site, including specific terms and conditions
+for
+packages like libwww, Amaya, and Jigsaw. Other questions about this
+notice can
+be directed to site-policy@w3.org. <br>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: JCommon-Serializer; Use of any of this
+software
+is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId716287"></a>Object Refinery Ltd,
+Pentaho Corporation <br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId398477"></a>JCommon-Serializer<br>
+</h3>
+<a href="#lgpl">jump to LGPL</a><br>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: JCommon; Use of any of this software
+is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId401194"></a>Object Refinery Ltd,
+Pentaho Corporation <br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId824702"></a>JCommon<br>
+</h3>
+<a href="#lgpl">jump to LGPL</a><br>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: JFreeReport; Use of any of this software
+is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId304569"></a>Object Refinery Ltd,
+Pentaho Corporation <br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId90190"></a>JFreeReport<br>
+</h3>
+<a href="#lgpl">jump to LGPL</a><br>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: JCommon; Use of any of this software
+is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId732912"></a>Object Refinery Ltd,
+Pentaho Corporation <br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId305365"></a>JCommon<br>
+</h3>
+<a href="#lgpl">jump to LGPL</a><br>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: liblayout; Use of any of this software
+is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId807378"></a>Object Refinery Ltd,
+Pentaho Corporation <br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId266793"></a>liblayout<br>
+</h3>
+<a href="#lgpl">jump to LGPL</a><br>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: libloader; Use of any of this software
+is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId239140"></a>Object Refinery Ltd,
+Pentaho Corporation <br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId607093"></a>libloader<br>
+</h3>
+<a href="#lgpl">jump to LGPL</a><br>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: libxml; Use of any of this software
+is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId133132"></a>Object Refinery Ltd,
+Pentaho Corporation <br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId915718"></a>libxml<br>
+</h3>
+<a href="#lgpl">jump to LGPL</a><br>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: pixie; Use of any of this software
+is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId249097"></a>Object Refinery Ltd,
+Pentaho Corporation <br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId420278"></a>pixie<br>
+</h3>
+<a href="#lgpl">jump to LGPL</a><br>
+<hr style="width: 100%; height: 2px;"><br>
+<h4><a name="lgpl" href="#lgpl">GNU LESSER GENERAL PUBLIC LICENSE</a></h4>
+<p>
+Version 2.1, February 1999
+</p>
+<p>
+</p>
+<pre>Copyright (C) 1991, 1999 Free Software Foundation, Inc.<br>51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA<br>Everyone is permitted to copy and distribute verbatim copies<br>of this license document, but changing it is not allowed.<br><br>[This is the first released version of the Lesser GPL. It also counts<br> as the successor of the GNU Library Public License, version 2, hence<br> the version number 2.1.]<br></pre>
+<h4>Preamble</h4>
+<p> The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+</p>
+<p> This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+</p>
+<p> When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+</p>
+<p> To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+</p>
+<p> For example, if you distribute copies of the library, whether
+gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+</p>
+<p> We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+</p>
+<p> To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+</p>
+<p> Finally, software patents pose a constant threat to the existence
+of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+</p>
+<p> Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+</p>
+<p> When a program is linked with a library, whether statically or
+using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+</p>
+<p> We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+</p>
+<p> For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+</p>
+<p> In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+</p>
+<p> Although the Lesser General Public License is Less protective of
+the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+</p>
+<p> The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+</p>
+<h4>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</h4>
+<p>
+<strong>0.</strong>
+This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+</p>
+<p> A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+</p>
+<p> The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+</p>
+<p> "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation
+and installation of the library.
+</p>
+<p> Activities other than copying, distribution and modification are
+not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+</p>
+<p>
+<strong>1.</strong>
+You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+</p>
+<p> You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+</p>
+<p>
+<strong>2.</strong>
+You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+</p>
+<ul>
+ <li><strong>a)</strong> The modified work must itself be a software
+library.</li>
+ <li><strong>b)</strong> You must cause the files modified to carry
+prominent notices stating that you changed the files and the date of
+any change.</li>
+ <li><strong>c)</strong> You must cause the whole of the work to be
+licensed at no charge to all third parties under the terms of this
+License.</li>
+ <li><strong>d)</strong>
+ <p> If a facility in the modified Library refers to a function or a
+table of data to be supplied by an application program that uses the
+facility, other than as an argument passed when the facility is
+invoked, then you must make a good faith effort to ensure that, in the
+event an application does not supply such function or table, the
+facility still operates, and performs whatever part of its purpose
+remains meaningful. </p>
+ <p> (For example, a function in a library to compute square roots
+has a purpose that is entirely well-defined independent of the
+application. Therefore, Subsection 2d requires that any
+application-supplied function or table used by this function must be
+optional: if the application does not supply it, the square root
+function must still compute square roots.) </p>
+ <p> These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it. </p>
+ <p> Thus, it is not the intent of this section to claim rights or
+contest your rights to work written entirely by you; rather, the intent
+is to exercise the right to control the distribution of derivative or
+collective works based on the Library. </p>
+ <p> In addition, mere aggregation of another work not based on the
+Library with the Library (or with a work based on the Library) on a
+volume of a storage or distribution medium does not bring the other
+work under
+the scope of this License.</p>
+ </li>
+</ul>
+<p>
+<strong>3.</strong>
+You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+</p>
+<p> Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+</p>
+<p> This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+</p>
+<p>
+<strong>4.</strong>
+You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+</p>
+<p> If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+</p>
+<p>
+<strong>5.</strong>
+A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+</p>
+<p> However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+</p>
+<p> When a "work that uses the Library" uses material from a header
+file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+</p>
+<p> If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+</p>
+<p> Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+</p>
+<p>
+<strong>6.</strong>
+As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+</p>
+<p> You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+</p>
+<ul>
+ <li><strong>a)</strong> Accompany the work with the complete
+corresponding machine-readable source code for the Library including
+whatever changes were used in the work (which must be distributed under
+Sections 1 and 2 above); and, if the work is an executable linked with
+the Library, with the complete machine-readable "work that uses the
+Library", as object code and/or source code, so that the user can
+modify the Library and then relink to produce a modified executable
+containing the modified Library. (It is understood that the user who
+changes the contents of definitions files in the Library will not
+necessarily be able to recompile the application to use the modified
+definitions.)</li>
+ <li><strong>b)</strong> Use a suitable shared library mechanism for
+linking with the Library. A suitable mechanism is one that (1) uses at
+run time a copy of the library already present on the user's computer
+system, rather than copying library functions into the executable, and
+(2) will operate properly with a modified version of the library, if
+the user installs one, as long as the modified version is
+interface-compatible with the version that the work was made with.</li>
+ <li><strong>c)</strong> Accompany the work with a written offer,
+valid for at least three years, to give the same user the materials
+specified in Subsection 6a, above, for a charge no more than the cost
+of performing this distribution.</li>
+ <li><strong>d)</strong> If distribution of the work is made by
+offering access to copy from a designated place, offer equivalent
+access to copy the above specified materials from the same place.</li>
+ <li><strong>e)</strong> Verify that the user has already received a
+copy of these materials or that you have already sent this user a copy.</li>
+</ul>
+<p> For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+</p>
+<p> It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+</p>
+<p>
+<strong>7.</strong> You may place library facilities that are a work
+based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+</p>
+<ul>
+ <li><strong>a)</strong> Accompany the combined library with a copy of
+the same work based on the Library, uncombined with any other library
+facilities. This must be distributed under the terms of the Sections
+above.</li>
+ <li><strong>b)</strong> Give prominent notice with the combined
+library of the fact that part of it is a work based on the Library, and
+explaining where to find the accompanying uncombined form of the same
+work.</li>
+</ul>
+<p>
+<strong>8.</strong> You may not copy, modify, sublicense, link with, or
+distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+</p>
+<p>
+<strong>9.</strong>
+You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+</p>
+<p>
+<strong>10.</strong>
+Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+</p>
+<p>
+<strong>11.</strong>
+If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+</p>
+<p>
+If any portion of this section is held invalid or unenforceable under
+any
+particular circumstance, the balance of the section is intended to
+apply,
+and the section as a whole is intended to apply in other circumstances.
+</p>
+<p>
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+</p>
+<p>
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+</p>
+<p>
+<strong>12.</strong>
+If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may
+add
+an explicit geographical distribution limitation excluding those
+countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+</p>
+<p>
+<strong>13.</strong>
+The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+</p>
+<p>
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+</p>
+<p>
+<strong>14.</strong>
+If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+</p>
+<p>
+<strong>NO WARRANTY</strong>
+</p>
+<p>
+<strong>15.</strong>
+BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+</p>
+<p>
+<strong>16.</strong>
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+</p>
+<h4>END OF TERMS AND CONDITIONS</h4>
+<h4>How to Apply These Terms to Your New Libraries</h4>
+<p> If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of
+the
+ordinary General Public License).
+</p>
+<p> To apply these terms, attach the following notices to the library.
+It is
+safest to attach them to the start of each source file to most
+effectively
+convey the exclusion of warranty; and each file should have at least
+the
+"copyright" line and a pointer to where the full notice is found.
+</p>
+<br>
+<pre><var>one line to give the library's name and an idea of what it does.</var><br>Copyright (C) <var>year</var> <var>name of author</var><br><br>This library is free software; you can redistribute it and/or<br>modify it under the terms of the GNU Lesser General Public<br>License as published by the Free Software Foundation; either<br>version 2.1 of the License, or (at your option) any later version.<br><br>This library is distributed in the hope that it will be useful,<br>but WITHOUT ANY WARRANTY; without even the implied warranty of<br>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>Lesser General Public License for more details.<br><br>You should have received a copy of the GNU Lesser General Public<br>License along with this library; if not, write to the Free Software<br>Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA<br></pre>
+<p>
+Also add information on how to contact you by electronic and paper
+mail.
+</p>
+<p>
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+</p>
+<pre>Yoyodyne, Inc., hereby disclaims all copyright interest in<br>the library `Frob' (a library for tweaking knobs) written<br>by James Random Hacker.<br><br><var>signature of Ty Coon</var>, 1 April 1990<br>Ty Coon, President of Vice<br><br></pre>
+<p>
+That's all there is to it!
+</p>
+</body>
+</html>
diff --git a/reportbuilder/license/readme_en-US.html b/reportbuilder/license/readme_en-US.html
new file mode 100644
index 000000000000..ec35388c3250
--- /dev/null
+++ b/reportbuilder/license/readme_en-US.html
@@ -0,0 +1,30 @@
+<html>
+ <head>
+ <title>Oracle Report Builder</title>
+ </head>
+ <body>
+ <h1>Oracle Report Builder</h1>
+ <p>This file contains important information about the installation.</p>
+ <p>This software offered by Oracle will enhance Oracle Open Office and OpenOffice.org software. The following features will be added:</p>
+ <ul>
+ <li><p>In a Base database document, in the Reports window, you now have an additional choice to &quot;Create Report in Design View&quot;.</p></li>
+ <li><p>An interactive window allows you to create a database report by drag-and-drop, with visual feedback.</p></li>
+ <li><p>All reports created by Report Builder can also be edited in the Report Builder window. </p></li>
+ </ul>
+ <p>You find more information about installation and usage of the extension in the following paragraphs of this readme file.</p>
+ <h2>Notes on Installation</h2>
+ <h3>System Requirements</h3>
+ <ul>
+ <li><p>A recent version of Oracle Open Office or OpenOffice.org</p></li>
+ <li><p>A recent version of the Java(TM) Runtime Environment</p></li>
+ </ul>
+ <h3>Installing</h3>
+ <p>You need administrator rights to install a shared extension for all users on your network. You do not need administrator rights to install a user extension for your own use only.</p>
+ <p>Double-click the extension file (*.oxt) in your system's file browser or choose <b>Tools &gt; Extension Manager</b>and click <B>Add</B>.</P>
+ <h3>Uninstalling</h3>
+ <p>Choose Tools &gt; Extension Manager, click the Oracle Report Builder entry, then click Remove.</P>
+ <h2>Using the Extension</h2>
+ <p>You find complete instructions on using the Oracle Report Builder in the application help that is installed with Oracle Open Office or OpenOffice.org. Press F1 to open the Help Viewer, then enter the words "Report Builder" in the Index text box.</p>
+ <p>Copyright &copy; 2007, 2010 Oracle and/or its affiliates. All rights reserved.</p>
+</body>
+</html> \ No newline at end of file
diff --git a/reportbuilder/license/readme_en-US.txt b/reportbuilder/license/readme_en-US.txt
new file mode 100644
index 000000000000..bd9eb48567af
--- /dev/null
+++ b/reportbuilder/license/readme_en-US.txt
@@ -0,0 +1,34 @@
+Oracle Report Builder
+=====================
+This file contains important information about the installation.
+
+This software offered by Oracle will enhance Oracle Open Office and OpenOffice.org software. The following features will be added:
+* In a Base database document, in the Reports window, you now have an additional choice to "Create Report in Design View".
+* An interactive window allows you to create a database report by drag-and-drop, with visual feedback.
+* All reports created by Report Builder can also be edited in the Report Builder window.
+
+You find more information about installation and usage of the extension in the following paragraphs of this readme file.
+
+Notes on Installation
+---------------------
+
+System Requirements
+
+* A recent version of Oracle Open Office or OpenOffice.org
+* A recent version of the Java(TM) Runtime Environment
+
+Installing
+
+You need administrator rights to install a shared extension for all users on your network. You do not need administrator rights to install a user extension for your own use only.
+* Double-click the extension file (*.oxt) in your system's file browser or choose Tools > Extension Manager and click Add.
+
+Uninstalling
+
+* Choose Tools > Extension Manager, click the Oracle Report Builder entry, then click Remove.
+
+Using the Extension
+
+You find complete instructions on using the Oracle Report Builder in the application help that is installed with Oracle Open Office or OpenOffice.org. Press F1 to open the Help Viewer, then enter the words "Report Builder" in the Index text box.
+
+------------------------------------------------------------------------------
+Copyright (c) 2007, 2010 Oracle and/or its affiliates. All rights reserved. \ No newline at end of file
diff --git a/reportbuilder/prj/build.lst b/reportbuilder/prj/build.lst
new file mode 100644
index 000000000000..854529595c65
--- /dev/null
+++ b/reportbuilder/prj/build.lst
@@ -0,0 +1,16 @@
+rpb reportbuilder : BOOST:boost JFREEREPORT:jfreereport wizards readlicense_oo APACHE_COMMONS:apache-commons officecfg NULL
+rpb reportbuilder usr1 - all rpb_mkout NULL
+rpb reportbuilder\java nmake - all rpb_java NULL
+rpb reportbuilder\java\com\sun\star\report nmake - all rpb_jreport rpb_java NULL
+rpb reportbuilder\java\com\sun\star\report\util nmake - all rpb_jreport_util rpb_jreport NULL
+rpb reportbuilder\java\com\sun\star\report\pentaho nmake - all rpb_jreport_pe rpb_jreport_util rpb_jreport_f_m NULL
+rpb reportbuilder\java\com\sun\star\report\function\metadata nmake - all rpb_jreport_f_m rpb_jreport NULL
+rpb reportbuilder\registry\schema\org\openoffice\Office nmake - all rpb_reg_schema_ooo NULL
+rpb reportbuilder\registry\schema\org\openoffice\Office\UI nmake - all rpb_reg_schema_ooo_ui NULL
+rpb reportbuilder\registry\data\org\openoffice nmake - all rpb_data_ooOffice NULL
+rpb reportbuilder\registry\data\org\openoffice\Office nmake - all rpb_reg_data_ooo rpb_reg_schema_ooo NULL
+rpb reportbuilder\registry\data\org\openoffice\Office\UI nmake - all rpb_reg_data_ooo_ui rpb_reg_schema_ooo_ui NULL
+rpb reportbuilder\registry\data\org\openoffice\TypeDetection nmake - all rpb_reg_data_oot NULL
+rpb reportbuilder\template\en-US\wizard\report nmake - all rpb_template_en_us_wiz_rep NULL
+rpb reportbuilder\util nmake - all rpb_util rpb_jreport_pe rpb_reg_data_ooo rpb_data_ooOffice rpb_reg_data_oot rpb_template_en_us_wiz_rep rpb_reg_data_ooo_ui NULL
+
diff --git a/reportbuilder/prj/d.lst b/reportbuilder/prj/d.lst
new file mode 100644
index 000000000000..9015e97130b4
--- /dev/null
+++ b/reportbuilder/prj/d.lst
@@ -0,0 +1,12 @@
+# Extensions
+
+..\%__SRC%\bin\*.oxt %_DEST%\bin\*.oxt
+
+# License
+mkdir: %_DEST%\bin\reportbuilder
+
+..\license\license_en-US.txt %_DEST%\bin\reportbuilder\license_en-US.txt
+..\license\license_en-US.html %_DEST%\bin\reportbuilder\license_en-US.html
+..\license\readme_en-US.html %_DEST%\bin\reportbuilder\readme_en-US.html
+..\license\readme_en-US.txt %_DEST%\bin\reportbuilder\readme_en-US.txt
+..\license\THIRDPARTYREADMELICENSE.html %_DEST%\bin\reportbuilder\THIRDPARTYREADMELICENSE.html
diff --git a/reportbuilder/prj/rpt.xml b/reportbuilder/prj/rpt.xml
new file mode 100644
index 000000000000..762ab12690ff
--- /dev/null
+++ b/reportbuilder/prj/rpt.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
+<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
+ <module-name>reportbuilder</module-name>
+ <component-description>
+ <author>Ocke Janssen</author>
+ <name>com.sun.star.report.comp.ReportDesign</name>
+ <description>Represents the report design.</description>
+ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
+ <language>c++</language>
+ <status value="final"/>
+ <supported-service>com.sun.star.report.ReportDesign</supported-service>
+ </component-description>
+</module-description>
diff --git a/reportbuilder/registry/data/org/openoffice/Office/Accelerators.xcu b/reportbuilder/registry/data/org/openoffice/Office/Accelerators.xcu
new file mode 100644
index 000000000000..ebb6ac365443
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/Accelerators.xcu
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:package="org.openoffice.Office" oor:name="Accelerators">
+
+ <node oor:name="PrimaryKeys">
+ <node oor:name="Modules">
+ <node oor:name="com.sun.star.report.ReportDefinition" oor:op="replace">
+
+ <node oor:name="R_MOD1" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:SelectReport</value>
+ </prop>
+ </node>
+
+ <node oor:name="RETURN_MOD2" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:ControlProperties</value>
+ </prop>
+ </node>
+
+ <node oor:name="F4" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:ControlProperties</value>
+ </prop>
+ </node>
+
+ <node oor:name="F5" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:ReportNavigator</value>
+ </prop>
+ </node>
+
+ <node oor:name="F8_MOD2" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:AddField</value>
+ </prop>
+ </node>
+
+ <node oor:name="ESCAPE" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:Escape</value>
+ </prop>
+ </node>
+
+ <node oor:name="G_MOD1" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:DbSortingAndGrouping</value>
+ </prop>
+ </node>
+
+ <node oor:name="E_MOD1" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:ExecuteReport</value>
+ </prop>
+ </node>
+
+ <node oor:name="A_SHIFT_MOD1" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:SelectAllInSection</value>
+ </prop>
+ </node>
+
+ <node oor:name="T_MOD1" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:SelectAllLabels</value>
+ </prop>
+ </node>
+
+ <node oor:name="F_MOD1" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:SelectAllEdits</value>
+ </prop>
+ </node>
+
+ <node oor:name="Y_MOD1" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:Redo</value>
+ </prop>
+ </node>
+
+ <node oor:name="Z_MOD1" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:Undo</value>
+ </prop>
+ </node>
+
+ <node oor:name="TAB_MOD1" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:NextMark</value>
+ </prop>
+ </node>
+
+ <node oor:name="TAB_SHIFT_MOD1" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="en-US">.uno:PrevMark</value>
+ </prop>
+ </node>
+
+ <node oor:name="SUBTRACT" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="en-US">.uno:CollapseSection</value>
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ </prop>
+ </node>
+
+ <node oor:name="ADD" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="en-US">.uno:ExpandSection</value>
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ </prop>
+ </node>
+
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/reportbuilder/registry/data/org/openoffice/Office/DataAccess.xcu b/reportbuilder/registry/data/org/openoffice/Office/DataAccess.xcu
new file mode 100644
index 000000000000..e40b13f257bb
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/DataAccess.xcu
@@ -0,0 +1,44 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="DataAccess" oor:package="org.openoffice.Office">
+ <node oor:name="ReportEngines">
+ <prop oor:name="DefaultReportEngine" oor:type="xs:string">
+ <value>Pentaho Reporting Flow Engine</value>
+ </prop>
+ <node oor:name="ReportEngineNames">
+ <node oor:name="Pentaho Reporting Flow Engine" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>Pentaho Reporting Flow Engine</value>
+ </prop>
+ <prop oor:name="ServiceName" oor:type="xs:string">
+ <value>com.sun.star.report.pentaho.SOReportJobFactory</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/reportbuilder/registry/data/org/openoffice/Office/Embedding.xcu b/reportbuilder/registry/data/org/openoffice/Office/Embedding.xcu
new file mode 100644
index 000000000000..521166e1d4c8
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/Embedding.xcu
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:install="http://openoffice.org/2004/installation" oor:package="org.openoffice.Office" oor:name="Embedding">
+ <node oor:name="Objects">
+ <node oor:name="D7896D52-B7AF-4820-9DFE-D404D015960F" oor:op="replace" >
+ <prop oor:name="ObjectFactory">
+ <value>com.sun.star.embed.OOoEmbeddedObjectFactory</value>
+ </prop>
+ <prop oor:name="ObjectDocumentServiceName">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="ObjectMiscStatus">
+ <value>1</value>
+ </prop>
+ <prop oor:name="ObjectVerbs">
+ <value>PRIMARY SHOW OPEN HIDE UIACTIVATE IPACTIVATE</value>
+ </prop>
+ </node>
+ <node oor:name="80243D39-6741-46C5-926E-069164FF87BB" oor:op="replace" >
+ <prop oor:name="ObjectFactory">
+ <value>com.sun.star.embed.OOoEmbeddedObjectFactory</value>
+ </prop>
+ <prop oor:name="ObjectDocumentServiceName">
+ <value>com.sun.star.chart2.ChartDocument</value>
+ </prop>
+ <prop oor:name="ObjectDocumentFilterName">
+ <value>StarOffice XML (Base) Report Chart</value>
+ </prop>
+ <prop oor:name="ObjectMiscStatus">
+ <value>1</value>
+ </prop>
+ <prop oor:name="ObjectVerbs">
+ <value>PRIMARY SHOW OPEN HIDE UIACTIVATE IPACTIVATE</value>
+ </prop>
+ </node>
+ </node>
+ <node oor:name="MimeTypeClassIDRelations">
+ <prop oor:name="application/vnd.sun.xml.report.chart" oor:op="replace" oor:type="xs:string">
+ <value>80243D39-6741-46C5-926E-069164FF87BB</value>
+ </prop>
+ <prop oor:name="application/vnd.sun.xml.report" oor:op="replace" oor:type="xs:string">
+ <value>D7896D52-B7AF-4820-9DFE-D404D015960F</value>
+ </prop>
+ </node>
+</oor:component-data>
+
diff --git a/reportbuilder/registry/data/org/openoffice/Office/ExtendedColorScheme.xcu b/reportbuilder/registry/data/org/openoffice/Office/ExtendedColorScheme.xcu
new file mode 100644
index 000000000000..e17460345a61
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/ExtendedColorScheme.xcu
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data oor:name="ExtendedColorScheme" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="ExtendedColorScheme">
+ <prop oor:name="CurrentColorScheme">
+ <value>default</value>
+ </prop>
+ <node oor:name="ColorSchemes">
+ <node oor:name="default" oor:op="replace">
+ <node oor:name="SunReportBuilder" oor:op="replace">
+ <node oor:name="Entries">
+ <node oor:name="ReportHeader" oor:op="replace">
+ <prop oor:name="Color">
+ <value>8364108</value> <!-- 0x007Fa04C -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>8364108</value> <!-- 0x007Fa04C -->
+ </prop>
+ </node>
+ <node oor:name="ReportFooter" oor:op="replace">
+ <prop oor:name="Color">
+ <value>8364108</value> <!-- 0x007Fa04C -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>8364108</value> <!-- 0x007Fa04C -->
+ </prop>
+ </node>
+ <node oor:name="PageHeader" oor:op="replace">
+ <prop oor:name="Color">
+ <value>15778136</value> <!-- 0x00F0C158 -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>15778136</value> <!-- 0x00F0C158 -->
+ </prop>
+ </node>
+ <node oor:name="PageFooter" oor:op="replace">
+ <prop oor:name="Color">
+ <value>15778136</value> <!-- 0x00F0C158 -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>15778136</value> <!-- 0x00F0C158 -->
+ </prop>
+ </node>
+ <node oor:name="GroupHeader" oor:op="replace">
+ <prop oor:name="Color">
+ <value>11190738</value> <!-- 0x00AAC1D2 -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>11190738</value> <!-- 0x00AAC1D2 -->
+ </prop>
+ </node>
+ <node oor:name="GroupFooter" oor:op="replace">
+ <prop oor:name="Color">
+ <value>11190738</value> <!-- 0x00AAC1D2 -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>11190738</value> <!-- 0x00AAC1D2 -->
+ </prop>
+ </node>
+ <node oor:name="ColumnHeader" oor:op="replace">
+ <prop oor:name="Color">
+ <value>11190738</value> <!-- 0x00AAC1D2 -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>11190738</value> <!-- 0x00AAC1D2 -->
+ </prop>
+ </node>
+ <node oor:name="ColumnFooter" oor:op="replace">
+ <prop oor:name="Color">
+ <value>11190738</value> <!-- 0x00AAC1D2 -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>11190738</value> <!-- 0x00AAC1D2 -->
+ </prop>
+ </node>
+ <node oor:name="Detail" oor:op="replace">
+ <prop oor:name="Color">
+ <value>15844514</value> <!-- 0x00F1C4A2 -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>15844514</value> <!-- 0x00F1C4A2 -->
+ </prop>
+ </node>
+ <node oor:name="OverlappedControl" oor:op="replace">
+ <prop oor:name="Color">
+ <value>16724838</value> <!-- 0x00FF3366 -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>16724838</value> <!-- 0x00FF3366 -->
+ </prop>
+ </node>
+ <node oor:name="TextBoxBoundContent" oor:op="replace">
+ <prop oor:name="Color">
+ <value>8421504</value> <!-- 0x00808080 -->
+ </prop>
+ <prop oor:name="DefaultColor">
+ <value>8421504</value> <!-- 0x00808080 -->
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ <node oor:name="EntryNames">
+ <node oor:name="SunReportBuilder" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Oracle Report Builder</value>
+ </prop>
+ <node oor:name="Entries">
+ <node oor:name="ReportHeader" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Report Header</value>
+ </prop>
+ </node>
+ <node oor:name="ReportFooter" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Report Footer</value>
+ </prop>
+ </node>
+ <node oor:name="PageHeader" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Page Header</value>
+ </prop>
+ </node>
+ <node oor:name="PageFooter" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Page Footer</value>
+ </prop>
+ </node>
+ <node oor:name="GroupHeader" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Group Header</value>
+ </prop>
+ </node>
+ <node oor:name="GroupFooter" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Group Footer</value>
+ </prop>
+ </node>
+ <node oor:name="ColumnHeader" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Column Header</value>
+ </prop>
+ </node>
+ <node oor:name="ColumnFooter" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Column Footer</value>
+ </prop>
+ </node>
+ <node oor:name="Detail" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Detail</value>
+ </prop>
+ </node>
+ <node oor:name="OverlappedControl" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Overlapped Control</value>
+ </prop>
+ </node>
+ <node oor:name="TextBoxBoundContent" oor:op="replace">
+ <prop oor:name="DisplayName">
+ <value xml:lang="en-US">Text Box Bound Content</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
+
diff --git a/reportbuilder/registry/data/org/openoffice/Office/Paths.xcu b/reportbuilder/registry/data/org/openoffice/Office/Paths.xcu
new file mode 100644
index 000000000000..cba53df0ffce
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/Paths.xcu
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+
+<oor:component-data oor:package="org.openoffice.Office" oor:name="Paths" xmlns:install="http://openoffice.org/2004/installation" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <node oor:name="Paths">
+
+ <node oor:name="Template" oor:op="fuse">
+ <node oor:name="InternalPaths">
+ <node oor:name="%origin%/../../../../../template" oor:op="fuse"/>
+ </node>
+ </node>
+
+ </node>
+</oor:component-data>
+
diff --git a/reportbuilder/registry/data/org/openoffice/Office/ReportDesign.xcu b/reportbuilder/registry/data/org/openoffice/Office/ReportDesign.xcu
new file mode 100644
index 000000000000..0a9c957a52bb
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/ReportDesign.xcu
@@ -0,0 +1,34 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="ReportDesign" oor:package="org.openoffice.Office">
+ <node oor:name="UserData" oor:extensible="true">
+ <prop oor:name="Chart" oor:op="replace" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+</oor:component-data>
diff --git a/reportbuilder/registry/data/org/openoffice/Office/UI/Controller.xcu b/reportbuilder/registry/data/org/openoffice/Office/UI/Controller.xcu
new file mode 100644
index 000000000000..c45a2e27a1bb
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/UI/Controller.xcu
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data oor:name="Controller" oor:package="org.openoffice.Office.UI" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="Registered">
+ <node oor:name="ToolBar">
+ <node oor:name="c4" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:FontColor</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.ReportToolboxController</value>
+ </prop>
+ </node>
+ <node oor:name="c5" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:BackgroundColor</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.ReportToolboxController</value>
+ </prop>
+ </node>
+ <node oor:name="c6" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:Color</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.ReportToolboxController</value>
+ </prop>
+ </node>
+ <node oor:name="c7" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:BasicShapes</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.ReportToolboxController</value>
+ </prop>
+ </node>
+ <node oor:name="c8" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:SymbolShapes</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.ReportToolboxController</value>
+ </prop>
+ </node>
+ <node oor:name="c9" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:ArrowShapes</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.ReportToolboxController</value>
+ </prop>
+ </node>
+ <node oor:name="c10" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:FlowChartShapes</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.ReportToolboxController</value>
+ </prop>
+ </node>
+ <node oor:name="c11" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:CalloutShapes</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.ReportToolboxController</value>
+ </prop>
+ </node>
+ <node oor:name="c12" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:StarShapes</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.ReportToolboxController</value>
+ </prop>
+ </node>
+ <node oor:name="c14" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:CharFontName</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.ReportToolboxController</value>
+ </prop>
+ </node>
+ </node>
+ <node oor:name="StatusBar">
+ <node oor:name="c8" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:ZoomSlider</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.comp.StatusbarController</value>
+ </prop>
+ </node>
+ <node oor:name="c9" oor:op="replace">
+ <prop oor:name="Command">
+ <value>.uno:Zoom</value>
+ </prop>
+ <prop oor:name="Module">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="Controller">
+ <value>com.sun.star.report.comp.StatusbarController</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/reportbuilder/registry/data/org/openoffice/Office/UI/DbReportWindowState.xcu b/reportbuilder/registry/data/org/openoffice/Office/UI/DbReportWindowState.xcu
new file mode 100644
index 000000000000..229502286ccb
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/UI/DbReportWindowState.xcu
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="DbReportWindowState" oor:package="org.openoffice.Office.UI">
+ <node oor:name="UIElements">
+ <node oor:name="States">
+ <node oor:name="private:resource/toolbar/toolbar" oor:op="replace">
+ <prop oor:name="DockPos" oor:type="xs:string">
+ <value>0,1</value>
+ </prop>
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ <prop oor:name="DockingArea" oor:type="xs:int">
+ <value>0</value>
+ </prop>
+ <prop oor:name="Style" oor:type="xs:int">
+ <value>0</value>
+ </prop>
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Standard</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/Formatting" oor:op="replace">
+ <prop oor:name="DockPos" oor:type="xs:string">
+ <value>0,1</value>
+ </prop>
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ <prop oor:name="DockingArea" oor:type="xs:int">
+ <value>0</value>
+ </prop>
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Formatting</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/reportcontrols" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Report Controls</value>
+ </prop>
+ <prop oor:name="DockPos" oor:type="xs:string">
+ <value>0,2</value>
+ </prop>
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/drawbar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Drawing objects</value>
+ </prop>
+ <prop oor:name="DockPos" oor:type="xs:string">
+ <value>297,2</value>
+ </prop>
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>false</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/alignmentbar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Align</value>
+ </prop>
+ <prop oor:name="DockPos" oor:type="xs:string">
+ <value>489,2</value>
+ </prop>
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/sectionalignmentbar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Align at Section</value>
+ </prop>
+ <prop oor:name="DockPos" oor:type="xs:string">
+ <value>0,2</value>
+ </prop>
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/sectionshrinkbar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Shrink at Section</value>
+ </prop>
+ <prop oor:name="DockPos" oor:type="xs:string">
+ <value>0,2</value>
+ </prop>
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolbar/resizebar" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value xml:lang="en-US">Object Resizing</value>
+ </prop>
+ <prop oor:name="DockPos" oor:type="xs:string">
+ <value>670,2</value>
+ </prop>
+ <prop oor:name="Docked" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/reportbuilder/registry/data/org/openoffice/Office/UI/ReportCommands.xcu b/reportbuilder/registry/data/org/openoffice/Office/UI/ReportCommands.xcu
new file mode 100644
index 000000000000..89e7d9aab8bc
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/UI/ReportCommands.xcu
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data oor:name="ReportCommands" oor:package="org.openoffice.Office.UI" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="UserInterface">
+ <node oor:name="Commands">
+ <node oor:name=".uno:ReportHeaderFooter" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Report Header/Footer</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:PageHeaderFooter" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Page Header/Footer</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ShowRuler" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Ruler</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:DbSortingAndGrouping" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Sorting and Grouping</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:AddField" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Add Field</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ConditionalFormatting" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Conditional Formatting...</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:PageDialog" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Page Settings</value>
+ </prop>
+ <prop oor:name="ContextLabel" oor:type="xs:string">
+ <value xml:lang="en-US">~Page...</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ResetAttributes" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Clear Direct Formatting</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:InsertPageNumberField" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Page Numbers...</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:InsertDateTimeField" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Date and Time...</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SelectReport" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Select Report</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SubReportInNewWindow" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Subreport in New Window...</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:FontColor" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Font Color</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:GridMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Gr~id</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ColumnHeaderFooter" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Column Header/Footer</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:PasteSpecial" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Paste ~Special...</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ExecuteReport" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Execute Report...</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ImageControl" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Graphic...</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:TextDocument" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Text Document</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:Spreadsheet" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Spreadsheet Document</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ReportNavigator" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Report Navigator</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SmallestWidth" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Fit to smallest width</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SmallestHeight" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Fit to smallest height</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:GreatestWidth" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Fit to greatest width</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:GreatestHeight" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Fit to greatest height</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ControlProperties" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Properties</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:Distribution" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Distribution...</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SelectAllInSection" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Select Objects in Section</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SectionAlignLeft" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Left Align on Section</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SectionAlignRight" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Right Align on Section</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SectionAlignTop" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Top Align on Section</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SectionAlignBottom" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Bottom Align on Section</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SectionAlignCenter" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Centered on Section</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SectionAlignMiddle" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Middle on Section</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SelectAllLabels" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Select all Labels</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SelectAllEdits" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Select all Formatted Fields</value>
+ </prop>
+ </node>
+
+ <!-- U will find corresponding icons in default_images/cmd. -->
+ <!-- The name has no .uno: prefix but lc_ or lch_ or sc_ or sch_ -->
+
+ <node oor:name=".uno:EditShapeMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Shape Arrange</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:EditControlMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Control</value>
+ </prop>
+ </node>
+
+ <!--
+ <node oor:name=".uno:EditSectionMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Section</value>
+ </prop>
+ </node>
+-->
+
+ <node oor:name=".uno:AlignmentMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Alignment</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:ResizeMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Resize</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:SectionAlignmentMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Section alignment</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:ReportControlMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Report Controls</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:ShapesMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Shapes</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:BasicShapesMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Basic Shapes</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:SymbolShapesMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Symbol Shapes</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:ArrowShapesMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Arrow Shapes</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:FlowChartShapesMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">FlowChart Shapes</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:CalloutShapesMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Callout Shapes</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:StarShapesMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Star Shapes</value>
+ </prop>
+ </node>
+
+ <node oor:name=".uno:SectionShrinkMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Section</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SectionShrink" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Shrink</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SectionShrinkTop" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Shrink from top</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SectionShrinkBottom" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Shrink from bottom</value>
+ </prop>
+ <prop oor:name="Properties" oor:type="xs:int">
+ <value>1</value>
+ </prop>
+ </node>
+
+ </node>
+ <node oor:name="Popups">
+ <node oor:name=".uno:ExportReportTo" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Report Output Format</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:SnapLinesMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">~Snap Lines</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ObjectResize" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Object Resizing</value>
+ </prop>
+ </node>
+ <node oor:name=".uno:ArrangeMenu" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">A~rrange</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/reportbuilder/registry/data/org/openoffice/Office/UI/makefile.mk b/reportbuilder/registry/data/org/openoffice/Office/UI/makefile.mk
new file mode 100644
index 000000000000..8a9e8ec1d7e6
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/UI/makefile.mk
@@ -0,0 +1,48 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+PRJ=..$/..$/..$/..$/..$/..
+
+PRJNAME=reportbuilder
+TARGET=data_ooOUI
+PACKAGE=org.openoffice.Office.UI
+
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Targets ------------------------------------------------------
+LOCALIZEDFILES= \
+ ReportCommands.xcu \
+ DbReportWindowState.xcu
+
+XCUFILES= \
+ $(LOCALIZEDFILES) \
+ Controller.xcu
+
+MODULEFILES=
+
+.INCLUDE : target.mk
+
+
diff --git a/reportbuilder/registry/data/org/openoffice/Office/makefile.mk b/reportbuilder/registry/data/org/openoffice/Office/makefile.mk
new file mode 100644
index 000000000000..b6a12fa1fc0c
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Office/makefile.mk
@@ -0,0 +1,68 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..$/..
+
+PRJNAME=reportbuilder
+TARGET=data_ooOOffice
+PACKAGE=org.openoffice.Office
+
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Targets ------------------------------------------------------
+
+LOCALIZEDFILES= \
+ Embedding.xcu \
+ Accelerators.xcu \
+ ExtendedColorScheme.xcu \
+ DataAccess.xcu
+
+XCUFILES= \
+ $(LOCALIZEDFILES) \
+ ReportDesign.xcu \
+ Paths.xcu
+
+.INCLUDE : target.mk
+
+ALLTAR: "$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Embedding.xcs" "$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/ExtendedColorScheme.xcs" "$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Paths.xcs"
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Embedding.xcs" : $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/Embedding.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/ExtendedColorScheme.xcs" : $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/ExtendedColorScheme.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Paths.xcs" : $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/Paths.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Accelerators.xcs" : $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/Accelerators.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
diff --git a/reportbuilder/registry/data/org/openoffice/Setup.xcu b/reportbuilder/registry/data/org/openoffice/Setup.xcu
new file mode 100644
index 000000000000..55ff435f718e
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/Setup.xcu
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data oor:name="Setup" oor:package="org.openoffice" xmlns:oor="http://openoffice.org/2001/registry" xmlns:install="http://openoffice.org/2004/installation" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="Office">
+ <node oor:name="Factories">
+ <node oor:name="com.sun.star.report.ReportDefinition" oor:op="replace" >
+ <prop oor:name="ooSetupFactoryCommandConfigRef">
+ <value >ReportCommands</value>
+ </prop>
+ <prop oor:name="ooSetupFactoryShortName">
+ <value >dbreport</value>
+ </prop>
+ <prop oor:name="ooSetupFactoryWindowStateConfigRef">
+ <value >DbReportWindowState</value>
+ </prop>
+ <prop oor:name="ooSetupFactoryIcon">
+ <value >14</value>
+ </prop>
+ <prop oor:name="ooSetupFactoryCmdCategoryConfigRef">
+ <value >GenericCategories</value>
+ </prop>
+ <prop oor:name="ooSetupFactoryUIName">
+ <value >Base: Oracle Report Builder</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
+
diff --git a/reportbuilder/registry/data/org/openoffice/TypeDetection/Filter.xcu b/reportbuilder/registry/data/org/openoffice/TypeDetection/Filter.xcu
new file mode 100644
index 000000000000..3760b439fbc4
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/TypeDetection/Filter.xcu
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:package="org.openoffice.TypeDetection" oor:name="Filter">
+ <node oor:name="Filters">
+ <node oor:name="StarOffice XML (Base) Report" oor:op="replace" oor:finalized="false" oor:mandatory="false">
+ <prop oor:name="Flags">
+ <value>IMPORT EXPORT OWN DEFAULT 3RDPARTYFILTER NOTINFILEDIALOG NOTINCHOOSER</value>
+ </prop>
+ <prop oor:name="UIComponent"/>
+ <prop oor:name="FilterService"/>
+ <prop oor:name="UserData"/>
+ <prop oor:name="FileFormatVersion">
+ <value>6800</value>
+ </prop>
+ <prop oor:name="Type">
+ <value>StarBaseReport</value>
+ </prop>
+ <prop oor:name="TemplateName"/>
+ <prop oor:name="DocumentService">
+ <value>com.sun.star.report.ReportDefinition</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="en-US">ODF Database Report</value>
+ </prop>
+ </node>
+
+ <node oor:name="StarOffice XML (Base) Report Chart" oor:op="replace" oor:finalized="false" oor:mandatory="false">
+ <prop oor:name="Flags">
+ <value>IMPORT EXPORT OWN DEFAULT NOTINFILEDIALOG NOTINCHOOSER</value>
+ </prop>
+ <prop oor:name="UIComponent"/>
+ <prop oor:name="FilterService">
+ <value>com.sun.star.comp.chart2.report.XMLFilter</value>
+ </prop>
+ <prop oor:name="UserData"/>
+ <prop oor:name="FileFormatVersion">
+ <value>6800</value>
+ </prop>
+ <prop oor:name="Type">
+ <value>StarBaseReportChart</value>
+ </prop>
+ <prop oor:name="TemplateName"/>
+ <prop oor:name="DocumentService">
+ <value>com.sun.star.chart2.ChartDocument</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="en-US">%productname% %formatversion% Report Chart</value>
+ </prop>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/reportbuilder/registry/data/org/openoffice/TypeDetection/Types.xcu b/reportbuilder/registry/data/org/openoffice/TypeDetection/Types.xcu
new file mode 100644
index 000000000000..c36b31fbe2aa
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/TypeDetection/Types.xcu
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:package="org.openoffice.TypeDetection" oor:name="Types">
+ <node oor:name="Types">
+ <node oor:name="StarBaseReport" oor:op="replace">
+ <prop oor:name="DetectService">
+ <value>com.sun.star.comp.report.ORptTypeDetection</value>
+ </prop>
+ <prop oor:name="URLPattern">
+ <value>private:factory/sreport*</value>
+ </prop>
+ <prop oor:name="Extensions">
+ <value>orp</value>
+ </prop>
+ <prop oor:name="MediaType">
+ <value>application/vnd.sun.xml.report</value>
+ </prop>
+ <prop oor:name="Preferred">
+ <value>false</value>
+ </prop>
+ <prop oor:name="PreferredFilter">
+ <value>StarOffice XML (Base) Report</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="en-US">OpenDocument Database Report</value>
+ </prop>
+ <prop oor:name="ClipboardFormat">
+ <value>StarBaseReport 9.0</value>
+ </prop>
+ </node>
+ <node oor:name="StarBaseReportChart" oor:op="replace">
+ <prop oor:name="DetectService"/>
+ <prop oor:name="URLPattern">
+ <value></value>
+ </prop>
+ <prop oor:name="Extensions">
+ <value>odc</value>
+ </prop>
+ <prop oor:name="MediaType">
+ <value>application/vnd.sun.xml.report.chart</value>
+ </prop>
+ <prop oor:name="Preferred">
+ <value>false</value>
+ </prop>
+ <prop oor:name="PreferredFilter">
+ <value>StarOffice XML (Base) Report Chart</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="en-US">StarOffice XML (Base) Report Chart 9</value>
+ </prop>
+ <prop oor:name="ClipboardFormat">
+ <value>StarOffice XML (Base) Report Chart 9</value>
+ </prop>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/reportbuilder/registry/data/org/openoffice/TypeDetection/makefile.mk b/reportbuilder/registry/data/org/openoffice/TypeDetection/makefile.mk
new file mode 100644
index 000000000000..4b4cd2eae67c
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/TypeDetection/makefile.mk
@@ -0,0 +1,55 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..$/..
+
+PRJNAME=reportbuilder
+TARGET=data_ooType
+PACKAGE=org.openoffice.TypeDetection
+
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Targets ------------------------------------------------------
+
+LOCALIZEDFILES= \
+ Filter.xcu \
+ Types.xcu
+
+XCUFILES= \
+ $(LOCALIZEDFILES)
+
+.INCLUDE : target.mk
+
+ALLTAR: "$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Filter.xcs" "$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Types.xcs"
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Filter.xcs" : $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/Filter.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Types.xcs" : $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/Types.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
diff --git a/reportbuilder/registry/data/org/openoffice/makefile.mk b/reportbuilder/registry/data/org/openoffice/makefile.mk
new file mode 100644
index 000000000000..c5da644bef65
--- /dev/null
+++ b/reportbuilder/registry/data/org/openoffice/makefile.mk
@@ -0,0 +1,50 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..
+
+PRJNAME=reportbuilder
+TARGET=data_ooOffice
+PACKAGE=org.openoffice
+
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Targets ------------------------------------------------------
+
+LOCALIZEDFILES= \
+ Setup.xcu
+
+XCUFILES= \
+ $(LOCALIZEDFILES)
+
+.INCLUDE : target.mk
+
+ALLTAR: "$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Setup.xcs"
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Setup.xcs": $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/Setup.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
diff --git a/reportbuilder/registry/schema/org/openoffice/Office/ReportDesign.xcs b/reportbuilder/registry/schema/org/openoffice/Office/ReportDesign.xcs
new file mode 100644
index 000000000000..f1adabefe7a8
--- /dev/null
+++ b/reportbuilder/registry/schema/org/openoffice/Office/ReportDesign.xcs
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-schema oor:name="ReportDesign" oor:package="org.openoffice.Office" xml:lang="en-US" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <info>
+ <author>OJ</author>
+ <desc>Contains informatation of report design.</desc>
+ </info>
+ <component>
+ <group oor:name="PropertyBrowser">
+ <info>
+ <desc>specifies settings for the property browser used for reports and report controls.</desc>
+ </info>
+ <prop oor:name="DirectHelp" oor:type="xs:boolean">
+ <info>
+ <author>OJ</author>
+ <desc>Enables or disables a help section at the bottom of the property browser, which shows the help of the currently active property.</desc>
+ </info>
+ <value>false</value>
+ </prop>
+ </group>
+ <group oor:name="Extension">
+ <info>
+ <desc>specifies extension settings for the report designer.</desc>
+ </info>
+ <prop oor:name="DownloadURL" oor:type="xs:string">
+ <info>
+ <author>LLA</author>
+ <desc>Direct download URL to the Oracle(tm) Report Builder extension.</desc>
+ </info>
+ <value>http://extensions.go-oo.org</value>
+ </prop>
+ <prop oor:name="Name" oor:type="xs:string">
+ <info>
+ <author>LLA</author>
+ <desc>Name of the extension.</desc>
+ </info>
+ <value>Oracle(tm) Report Builder</value>
+ </prop>
+ </group>
+ <group oor:name="UserData" oor:extensible="true">
+ <info>
+ <desc>Denotes an additional field for arbitrary data.</desc>
+ </info>
+ </group>
+ </component>
+</oor:component-schema>
diff --git a/reportbuilder/registry/schema/org/openoffice/Office/UI/DbReportWindowState.xcs b/reportbuilder/registry/schema/org/openoffice/Office/UI/DbReportWindowState.xcs
new file mode 100644
index 000000000000..2807eaa957b1
--- /dev/null
+++ b/reportbuilder/registry/schema/org/openoffice/Office/UI/DbReportWindowState.xcs
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-schema oor:name="DbReportWindowState" oor:package="org.openoffice.Office.UI" xml:lang="en-US" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <info>
+ <author>OJ</author>
+ <desc>Contains state information of all dockable user interface elements based on a Window class which belongs to the database report module.</desc>
+ </info>
+ <import oor:component="org.openoffice.Office.UI.WindowState"/>
+ <uses oor:component="org.openoffice.Office.UI.WindowState"/>
+ <templates/>
+ <component>
+ <group oor:name="UIElements">
+ <info>
+ <desc>Contains user interface element state data specific for the database report module."</desc>
+ </info>
+ <set oor:name="States" oor:node-type="WindowStateType" oor:component="org.openoffice.Office.UI.WindowState">
+ <info>
+ <desc>Contains states of all known dockable user interface elements of the report module."</desc>
+ </info>
+ </set>
+ </group>
+ </component>
+</oor:component-schema>
diff --git a/reportbuilder/registry/schema/org/openoffice/Office/UI/ReportCommands.xcs b/reportbuilder/registry/schema/org/openoffice/Office/UI/ReportCommands.xcs
new file mode 100644
index 000000000000..e162eebd3f5f
--- /dev/null
+++ b/reportbuilder/registry/schema/org/openoffice/Office/UI/ReportCommands.xcs
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="ReportCommands" oor:package="org.openoffice.Office.UI" xml:lang="en-US">
+ <info>
+ <author>OJ</author>
+ <desc>Contains general information and about actions based on office commands.</desc>
+ </info>
+ <import oor:component="org.openoffice.Office.UI.Commands"/>
+ <uses oor:component="org.openoffice.Office.UI.Commands"/>
+ <templates/>
+ <component>
+ <group oor:name="UserInterface">
+ <info>
+ <desc>Contains user interface data for Office commands and identifiers that are used by the user interface."</desc>
+ </info>
+ <set oor:name="Commands" oor:node-type="LabelType" oor:component="org.openoffice.Office.UI.Commands">
+ <info>
+ <desc>Contains label text for Office commands and identifiers that are used by the user interface."</desc>
+ </info>
+ </set>
+ <set oor:name="Popups" oor:node-type="LabelType" oor:component="org.openoffice.Office.UI.Commands">
+ <info>
+ <desc>Contains label text for popup menus identifiers that are used by the user interface."</desc>
+ </info>
+ </set>
+ </group>
+ </component>
+</oor:component-schema>
diff --git a/reportbuilder/registry/schema/org/openoffice/Office/UI/makefile.mk b/reportbuilder/registry/schema/org/openoffice/Office/UI/makefile.mk
new file mode 100644
index 000000000000..fcca28c000fc
--- /dev/null
+++ b/reportbuilder/registry/schema/org/openoffice/Office/UI/makefile.mk
@@ -0,0 +1,58 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+PRJ=..$/..$/..$/..$/..$/..
+
+PRJNAME=reportbuilder
+TARGET=schema_ooOfficeUI
+PACKAGE=org.openoffice.Office.UI
+
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Targets ------------------------------------------------------
+
+XCSFILES= \
+ ReportCommands.xcs \
+ DbReportWindowState.xcs
+
+MODULEFILES=
+
+.INCLUDE : target.mk
+
+ALLTAR: "$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Commands.xcs" "$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/WindowState.xcs" "$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Controller.xcs"
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Commands.xcs": $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/Commands.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/WindowState.xcs" : $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/WindowState.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/Controller.xcs" : $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/Controller.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
diff --git a/reportbuilder/registry/schema/org/openoffice/Office/makefile.mk b/reportbuilder/registry/schema/org/openoffice/Office/makefile.mk
new file mode 100644
index 000000000000..81f01626bb8d
--- /dev/null
+++ b/reportbuilder/registry/schema/org/openoffice/Office/makefile.mk
@@ -0,0 +1,46 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+PRJ=..$/..$/..$/..$/..
+
+PRJNAME=reportbuilder
+TARGET=schema_ooOffice
+PACKAGE=org.openoffice.Office
+
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Targets ------------------------------------------------------
+
+XCSFILES= \
+ ReportDesign.xcs
+
+.INCLUDE : target.mk
+
+ALLTAR: "$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/DataAccess.xcs"
+
+"$(PWD)$/$(MISC)$/$(EXTNAME)$/registry$/schema$/$(PACKAGEDIR)$/DataAccess.xcs" : $(SOLARXMLDIR)$/registry$/schema$/$(PACKAGEDIR)$/DataAccess.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
diff --git a/reportbuilder/template/delzip b/reportbuilder/template/delzip
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/reportbuilder/template/delzip
diff --git a/reportbuilder/template/en-US/wizard/report/default.otr b/reportbuilder/template/en-US/wizard/report/default.otr
new file mode 100644
index 000000000000..a822c6727266
--- /dev/null
+++ b/reportbuilder/template/en-US/wizard/report/default.otr
Binary files differ
diff --git a/reportbuilder/template/en-US/wizard/report/makefile.mk b/reportbuilder/template/en-US/wizard/report/makefile.mk
new file mode 100644
index 000000000000..0de25c33c8dd
--- /dev/null
+++ b/reportbuilder/template/en-US/wizard/report/makefile.mk
@@ -0,0 +1,69 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..
+
+PRJNAME=reportbuilder
+TARGET=template_en_us
+PACKAGE=
+
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Targets ------------------------------------------------------
+
+XCUFILES=
+
+MODULEFILES=
+
+OTR_FILES_IN_REPORT_BUILDER_EXT=\
+ default.otr
+
+# OTR_FILES_IN_TEMPLATE_EXT=\
+# finance.odr \
+# finance_2.odr \
+# yellow.odr
+
+ALLTAR: COPYFILES # COPYFILES2
+
+.INCLUDE : target.mk
+
+#-------------------------------------------------------------------------------
+
+TARGETDIR=$(MISC)$/sun-report-builder$/template$/en-US$/wizard$/report
+
+COPYFILES: $(OTR_FILES_IN_REPORT_BUILDER_EXT) $(XCU_FILES)
+ @@-$(MKDIRHIER) $(TARGETDIR)
+ $(COPY) $(OTR_FILES_IN_REPORT_BUILDER_EXT) $(TARGETDIR)
+
+#-------------------------------------------------------------------------------
+
+# TARGETDIR2=$(MISC)$/templates$/template$/wizard$/report
+#
+# COPYFILES2: $(OTR_FILES_IN_TEMPLATE_EXT) $(XCU_FILES)
+# @@-$(MKDIRHIER) $(TARGETDIR2)
+# $(COPY) $(OTR_FILES_IN_TEMPLATE_EXT) $(TARGETDIR2)
+
diff --git a/reportbuilder/template/makefile.mk b/reportbuilder/template/makefile.mk
new file mode 100644
index 000000000000..4c9782add419
--- /dev/null
+++ b/reportbuilder/template/makefile.mk
@@ -0,0 +1,122 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..
+PRJNAME=reportbuilder
+TARGET=rpt_templates
+
+# ???
+no_common_build_zip=true
+
+EXTENSION_VERSION_BASE=1.0.0
+.IF "$(DBG_LEVEL)" == "0"
+ EXTENSION_VERSION=$(EXTENSION_VERSION_BASE)
+.ELSE
+ EXTENSION_VERSION=$(EXTENSION_VERSION_BASE).$(BUILD)
+.ENDIF
+
+# --- Settings ----------------------------------
+.INCLUDE : settings.mk
+# ------------------------------------------------------------------
+
+# create Extension -----------------------------
+
+.IF "$(SOLAR_JAVA)"!=""
+
+ZIP1TARGET=sun-report-builder-templates
+ZIP1FLAGS=-r
+ZIP1DIR=$(MISC)$/templates
+ZIP1LIST=*
+ZIP1EXT=.oxt
+
+XMLFILES := $(ZIP1DIR)$/description.xml \
+ $(ZIP1DIR)$/META-INF$/manifest.xml
+
+XCU_FILES := $(ZIP1DIR)$/registry$/data$/org$/openoffice$/Office$/Paths.xcu
+
+ODR_FILES := \
+ $(ZIP1DIR)$/template$/wizard$/report$/finance.odr \
+ $(ZIP1DIR)$/template$/wizard$/report$/finance_2.odr \
+ $(ZIP1DIR)$/template$/wizard$/report$/yellow.odr
+
+HTMLFILES := $(ZIP1DIR)$/THIRDPARTYREADMELICENSE.html \
+ $(ZIP1DIR)$/readme_en-US.html \
+ $(ZIP1DIR)$/readme_en-US.txt
+
+.IF "$(GUI)"!="WNT"
+TXTFILES:=$(foreach,i,$(alllangiso) $(ZIP1DIR)$/registration$/LICENSE_$i)
+LICLINES:=$(foreach,i,$(TXTFILES) <license-text xlink:href="registration/$(i:f)" lang="$(subst,LICENSE_, $(i:f))" license-id="$(subst,LICENSE_, $(i:f))" />)
+.ELSE # "$(GUI)"!="WNT"
+TXTFILES:=$(foreach,i,$(alllangiso) $(ZIP1DIR)$/registration$/license_$i.txt)
+LICLINES:=$(foreach,i,$(TXTFILES) <license-text xlink:href="registration/$(i:f)" lang="$(subst,.txt, $(subst,license_, $(i:f)))" license-id="$(subst,.txt, $(subst,license_, $(i:f)))" />)
+.ENDIF # "$(GUI)"!="WNT"
+
+# --- Targets ----------------------------------
+.INCLUDE : target.mk
+
+.IF "$(ZIP1TARGETN)"!=""
+$(ZIP1TARGETN) : $(TXTFILES) $(XMLFILES) $(HTMLFILES) $(ODR_FILES)
+.ENDIF # "$(ZIP1TARGETN)"!="
+
+$(MISC)$/template_update_report.flag : $(XCU_FILES)
+ $(TOUCH) $@
+
+$(ZIP1DIR)$/description.xml : pre.xml post.xml
+ @@-$(MKDIRHIER) $(@:d)
+ @@-$(RM) $(ZIP1DIR)$/description.xml
+ $(TYPE) pre.xml > $@
+ $(TYPE) $(mktmp $(LICLINES)) >> $@
+ $(TYPE) post.xml | $(SED) s/#VERSION#/$(EXTENSION_VERSION)/ >> $@
+
+$(ZIP1DIR)$/registration$/license_%.txt : $(SOLARBINDIR)$/osl$/license_%.txt
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(ZIP1DIR)$/registration$/LICENSE_% : $(SOLARBINDIR)$/osl$/LICENSE_%
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(ZIP1DIR)$/registry$/data$/org$/openoffice$/Office$/%.xcu : $(MISC)$/template$/registry$/data$/org$/openoffice$/Office$/%.xcu
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(ZIP1DIR)$/META-INF$/manifest.xml : manifest.xml $(MISC)$/template_update_report.flag
+ @@-$(MKDIRHIER) $(@:d)
+ $(PERL) $(SOLARENV)$/bin$/makemani.pl $(PRJ)$/template$/manifest.xml $(ZIP1DIR) registry $(@:d:d)
+
+$(ZIP1DIR)$/readme_en-US.% : $(PRJ)$/license$/readme_en-US.%
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(ZIP1DIR)$/THIRDPARTYREADMELICENSE.html : $(PRJ)$/license$/THIRDPARTYREADMELICENSE.html
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+.ELSE # "$(SOLAR_JAVA)"!=""
+.INCLUDE : target.mk
+.ENDIF # "$(SOLAR_JAVA)"!=""
+#
diff --git a/reportbuilder/template/manifest.xml b/reportbuilder/template/manifest.xml
new file mode 100644
index 000000000000..fc78c8c88b6f
--- /dev/null
+++ b/reportbuilder/template/manifest.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
diff --git a/reportbuilder/template/post.xml b/reportbuilder/template/post.xml
new file mode 100644
index 000000000000..889fdd631d27
--- /dev/null
+++ b/reportbuilder/template/post.xml
@@ -0,0 +1,8 @@
+ </simple-license>
+ </registration>
+ <version value="#VERSION#"/>
+ <identifier value="com.sun.reportdesignertemplates"/>
+ <dependencies>
+ <OpenOffice.org-minimal-version value="3.0" d:name="OpenOffice.org 3.0"/>
+ </dependencies>
+</description>
diff --git a/reportbuilder/template/pre.xml b/reportbuilder/template/pre.xml
new file mode 100644
index 000000000000..a1426ca2fb4e
--- /dev/null
+++ b/reportbuilder/template/pre.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<description xmlns="http://openoffice.org/extensions/description/2006"
+ xmlns:d="http://openoffice.org/extensions/description/2006"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <registration>
+ <simple-license accept-by="admin" default-license-id="en-US" >
diff --git a/reportbuilder/template/registry/data/org/openoffice/Office/Paths.xcu b/reportbuilder/template/registry/data/org/openoffice/Office/Paths.xcu
new file mode 100644
index 000000000000..65ee5a1b4dbb
--- /dev/null
+++ b/reportbuilder/template/registry/data/org/openoffice/Office/Paths.xcu
@@ -0,0 +1,40 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+
+<oor:component-data oor:package="org.openoffice.Office" oor:name="Paths" xmlns:install="http://openoffice.org/2004/installation" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="Paths">
+
+ <node oor:name="Template" oor:op="fuse">
+ <node oor:name="InternalPaths">
+ <node oor:name="%origin%/../../../../../template" oor:op="fuse"/>
+ </node>
+ </node>
+
+ </node>
+</oor:component-data>
+
diff --git a/reportbuilder/template/registry/data/org/openoffice/Office/makefile.mk b/reportbuilder/template/registry/data/org/openoffice/Office/makefile.mk
new file mode 100644
index 000000000000..e10c06b48f8e
--- /dev/null
+++ b/reportbuilder/template/registry/data/org/openoffice/Office/makefile.mk
@@ -0,0 +1,49 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..$/..$/..
+
+PRJNAME=reportbuilder
+TARGET=template_data_ooOffice
+PACKAGE=org.openoffice.Office
+
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+#
+# we overwrite the PROCESSOUT directory, which comes from util/makefile.pmk
+# and set it to the templates directory
+#
+PROCESSOUT=$(MISC)$/templates
+
+# --- Targets ------------------------------------------------------
+
+XCUFILES= \
+ Paths.xcu
+
+MODULEFILES=
+
+.INCLUDE : target.mk
diff --git a/reportbuilder/template/wizard/report/default.odr b/reportbuilder/template/wizard/report/default.odr
new file mode 100644
index 000000000000..091de849470a
--- /dev/null
+++ b/reportbuilder/template/wizard/report/default.odr
@@ -0,0 +1 @@
+PKɧ!ÐÕÂå|j~àØïºÉQ‘Åüªæˆ_«…¹IŽr²oRF \ No newline at end of file
diff --git a/reportbuilder/template/wizard/report/finance.odr b/reportbuilder/template/wizard/report/finance.odr
new file mode 100644
index 000000000000..091de849470a
--- /dev/null
+++ b/reportbuilder/template/wizard/report/finance.odr
@@ -0,0 +1 @@
+PKɧ!ÐÕÂå|j~àØïºÉQ‘Åüªæˆ_«…¹IŽr²oRF \ No newline at end of file
diff --git a/reportbuilder/template/wizard/report/finance_2.odr b/reportbuilder/template/wizard/report/finance_2.odr
new file mode 100644
index 000000000000..091de849470a
--- /dev/null
+++ b/reportbuilder/template/wizard/report/finance_2.odr
@@ -0,0 +1 @@
+PKɧ!ÐÕÂå|j~àØïºÉQ‘Åüªæˆ_«…¹IŽr²oRF \ No newline at end of file
diff --git a/reportbuilder/template/wizard/report/makefile.mk b/reportbuilder/template/wizard/report/makefile.mk
new file mode 100644
index 000000000000..ffe2f9f1db83
--- /dev/null
+++ b/reportbuilder/template/wizard/report/makefile.mk
@@ -0,0 +1,69 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=reportbuilder
+TARGET=template
+PACKAGE=
+
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Targets ------------------------------------------------------
+
+XCUFILES=
+
+MODULEFILES=
+
+ODR_FILES_IN_REPORT_BUILDER_EXT=\
+ default.odr
+
+ODR_FILES_IN_TEMPLATE_EXT=\
+ finance.odr \
+ finance_2.odr \
+ yellow.odr
+
+ALLTAR: COPYFILES COPYFILES2
+
+.INCLUDE : target.mk
+
+#-------------------------------------------------------------------------------
+
+TARGETDIR=$(MISC)$/template$/wizard$/report
+
+COPYFILES: $(ODR_FILES_IN_REPORT_BUILDER_EXT) $(XCU_FILES)
+ @@-$(MKDIRHIER) $(TARGETDIR)
+ $(COPY) $(ODR_FILES_IN_REPORT_BUILDER_EXT) $(TARGETDIR)
+
+#-------------------------------------------------------------------------------
+
+TARGETDIR2=$(MISC)$/templates$/template$/wizard$/report
+
+COPYFILES2: $(ODR_FILES_IN_TEMPLATE_EXT) $(XCU_FILES)
+ @@-$(MKDIRHIER) $(TARGETDIR2)
+ $(COPY) $(ODR_FILES_IN_TEMPLATE_EXT) $(TARGETDIR2)
+
diff --git a/reportbuilder/template/wizard/report/yellow.odr b/reportbuilder/template/wizard/report/yellow.odr
new file mode 100644
index 000000000000..091de849470a
--- /dev/null
+++ b/reportbuilder/template/wizard/report/yellow.odr
@@ -0,0 +1 @@
+PKɧ!ÐÕÂå|j~àØïºÉQ‘Åüªæˆ_«…¹IŽr²oRF \ No newline at end of file
diff --git a/reportbuilder/util/component.txt b/reportbuilder/util/component.txt
new file mode 100755
index 000000000000..21a1f1e2d145
--- /dev/null
+++ b/reportbuilder/util/component.txt
@@ -0,0 +1 @@
+Create with the Report Builder stylish, smart-looking database reports. The flexible report editor can define group and page headers as well as group and page footers and even calculation fields are available to accomplish complex database reports.
diff --git a/reportbuilder/util/delzip b/reportbuilder/util/delzip
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/reportbuilder/util/delzip
@@ -0,0 +1 @@
+
diff --git a/reportbuilder/util/description.xml b/reportbuilder/util/description.xml
new file mode 100644
index 000000000000..17f894e35e31
--- /dev/null
+++ b/reportbuilder/util/description.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<description xmlns="http://openoffice.org/extensions/description/2006"
+ xmlns:d="http://openoffice.org/extensions/description/2006"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <display-name>
+ <name lang="en-US">Report Builder</name>
+ <!-- <name lang="en-US">Oracle(TM) Report Builder</name> -->
+ </display-name>
+ <version value="#VERSION#"/>
+ <identifier value="com.sun.reportdesigner"/>
+ <dependencies>
+ <OpenOffice.org-minimal-version value="3.2" d:name="OpenOffice.org 3.2"/>
+ </dependencies>
+ <publisher>
+ <name xlink:href="http://www.oracle.com/us/products/applications/open-office" lang="en">Oracle</name>
+ </publisher>
+ <icon>
+ <default xlink:href="images/extension_32.png" />
+ </icon>
+ <extension-description>
+ <src xlink:href="help/component.txt" lang="en" />
+ </extension-description>
+</description>
+
diff --git a/reportbuilder/util/makefile.mk b/reportbuilder/util/makefile.mk
new file mode 100644
index 000000000000..d78cfa66ec36
--- /dev/null
+++ b/reportbuilder/util/makefile.mk
@@ -0,0 +1,151 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..
+PRJNAME=reportbuilder
+TARGET=rpt
+EXTENSION_VERSION_BASE=1.2.1
+
+ EXTENSION_VERSION=$(EXTENSION_VERSION_BASE)
+
+# --- Settings ----------------------------------
+.INCLUDE : makefile.pmk
+
+.IF "$(L10N_framework)"==""
+# ------------------------------------------------------------------
+# calready set in util$/makefile.pmk
+EXTENSION_ZIPNAME:=report-builder
+
+# create Extension -----------------------------
+
+.IF "$(SOLAR_JAVA)"!=""
+
+XMLFILES = $(EXTENSIONDIR)$/META-INF$/manifest.xml
+
+# DESCRIPTION_SRC is the source file which is copied into the extension
+# It is defaulted to "description.xml", but we want to pre-process it, so we use an intermediate
+# file
+DESCRIPTION_SRC = $(MISC)$/description.xml
+
+COMPONENT_MERGED_XCU= \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Setup.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/DataAccess.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/ReportDesign.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/ExtendedColorScheme.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/Embedding.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/Paths.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/Accelerators.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/TypeDetection$/Filter.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/TypeDetection$/Types.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/UI$/ReportCommands.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/UI$/Controller.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/UI$/DbReportWindowState.xcu \
+ $(EXTENSIONDIR)$/registry$/schema$/org$/openoffice$/Office$/UI$/DbReportWindowState.xcs \
+ $(EXTENSIONDIR)$/registry$/schema$/org$/openoffice$/Office$/UI$/ReportCommands.xcs \
+ $(EXTENSIONDIR)$/registry$/schema$/org$/openoffice$/Office$/ReportDesign.xcs
+
+COMPONENT_OTR_FILES= \
+ $(EXTENSIONDIR)$/template$/en-US$/wizard$/report$/default.otr
+
+COMPONENT_IMAGES= \
+ $(EXTENSIONDIR)$/images$/extension_32.png
+
+COMPONENT_HTMLFILES = $(EXTENSIONDIR)$/THIRDPARTYREADMELICENSE.html \
+ $(EXTENSIONDIR)$/readme_en-US.html \
+ $(EXTENSIONDIR)$/readme_en-US.txt
+
+COMPONENT_JARFILES = \
+ $(EXTENSIONDIR)$/sun-report-builder.jar
+
+COMPONENT_HELP= \
+ $(EXTENSIONDIR)$/help$/component.txt
+
+# .jar files from solver
+COMPONENT_EXTJARFILES = \
+ $(EXTENSIONDIR)$/sun-report-builder.jar \
+ $(EXTENSIONDIR)$/reportbuilderwizard.jar
+
+.IF "$(SYSTEM_JFREEREPORT)" != "YES"
+.INCLUDE : $(SOLARBINDIR)/jfreereport_version.mk
+COMPONENT_EXTJARFILES += \
+ $(EXTENSIONDIR)$/flute-$(FLUTE_VERSION).jar \
+ $(EXTENSIONDIR)$/libserializer-$(LIBSERIALIZER_VERSION).jar \
+ $(EXTENSIONDIR)$/libbase-$(LIBBASE_VERSION).jar \
+ $(EXTENSIONDIR)$/libfonts-$(LIBFONTS_VERSION).jar \
+ $(EXTENSIONDIR)$/libformula-$(LIBFORMULA_VERSION).jar \
+ $(EXTENSIONDIR)$/liblayout-$(LIBLAYOUT_VERSION).jar \
+ $(EXTENSIONDIR)$/libloader-$(LIBLOADER_VERSION).jar \
+ $(EXTENSIONDIR)$/librepository-$(LIBREPOSITORY_VERSION).jar \
+ $(EXTENSIONDIR)$/libxml-$(LIBXML_VERSION).jar \
+ $(EXTENSIONDIR)$/flow-engine-$(FLOW_ENGINE_VERSION).jar \
+ $(EXTENSIONDIR)$/sac.jar
+.ENDIF
+.IF "$(SYSTEM_APACHE_COMMONS)" != "YES"
+COMPONENT_EXTJARFILES += \
+ $(EXTENSIONDIR)$/commons-logging-1.1.1.jar
+.ENDIF
+
+COMPONENT_MANIFEST_GENERIC:=TRUE
+COMPONENT_MANIFEST_SEARCHDIR:=registry
+
+# make sure to add your custom files here
+EXTENSION_PACKDEPS=$(COMPONENT_EXTJARFILES) $(COMPONENT_HTMLFILES) $(COMPONENT_OTR_FILES) $(COMPONENT_HELP) $(COMPONENT_IMAGES)
+.ENDIF
+# --- Targets ----------------------------------
+
+.INCLUDE : extension_pre.mk
+.INCLUDE : target.mk
+.INCLUDE : extension_post.mk
+.IF "$(L10N_framework)"==""
+$(EXTENSIONDIR)$/%.jar : $(SOLARBINDIR)$/%.jar
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(EXTENSIONDIR)$/readme_en-US.% : $(PRJ)$/license$/readme_en-US.%
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(EXTENSIONDIR)$/THIRDPARTYREADMELICENSE.html : $(PRJ)$/license$/THIRDPARTYREADMELICENSE.html
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(COMPONENT_HELP) : $$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(DESCRIPTION_SRC): description.xml
+ +-$(RM) $@
+ $(TYPE) description.xml | $(SED) "s/#VERSION#/$(EXTENSION_VERSION)/" > $@
+.ENDIF
+.ELSE # "$(SOLAR_JAVA)"!=""
+.INCLUDE : target.mk
+.ENDIF # "$(SOLAR_JAVA)"!=""
+#
diff --git a/reportbuilder/util/makefile.pmk b/reportbuilder/util/makefile.pmk
new file mode 100755
index 000000000000..566132247f9f
--- /dev/null
+++ b/reportbuilder/util/makefile.pmk
@@ -0,0 +1,66 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+XSLDIR=$(SOLARXMLDIR)$/processing
+ABSXCSROOT=$(PWD)$/$(MISC)$/$(EXTNAME)
+# ABSXCSROOT=$(MISC)$/$(EXTNAME)
+XCSROOT=..
+# XCSROOT=$(SOLARXMLDIR)
+# ABSXCSROOT=$(SOLARXMLDIR)
+DTDDIR=$(SOLARXMLDIR)
+PROCESSOUT=$(MISC)$/$(EXTNAME)
+PROCESSORDIR=$(SOLARBINDIR)
+
+
+# no validation by inspector class
+NO_INSPECTION=TRUE
+
+JAVAPREPRO=
+.IF "$(JDK_VERSION)" == "110"
+JAVAPREPRO=-jdk11
+.ENDIF
+.IF "$(PRODUCT)" != ""
+JAVAPREPRO=$(JAVAPREPRO) + " -product"
+.ENDIF
+
+# --- Settings -----------------------------------------------------
+
+EXTENSIONNAME:=sun-report-builder
+
+.INCLUDE : settings.mk
+
+NOUNODOC=
+BUILD_URD_ONLY=TRUE
+LOCALIDLFILES=TRUE
+URDDOC=TRUE
+
+.IF "$(OS)"=="SOLARIS" || "$(OS)"=="FREEBSD"
+.IF "$(CPU)"=="I"
+UNOIDL=unoidl
+.ENDIF
+.ENDIF
+
diff --git a/reportbuilder/util/manifest.xml b/reportbuilder/util/manifest.xml
new file mode 100644
index 000000000000..1a5a0f84623b
--- /dev/null
+++ b/reportbuilder/util/manifest.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=Java"
+ manifest:full-path="sun-report-builder.jar"/>
diff --git a/reportbuilder/util/target.pmk b/reportbuilder/util/target.pmk
new file mode 100644
index 000000000000..dfe8b8124e5b
--- /dev/null
+++ b/reportbuilder/util/target.pmk
@@ -0,0 +1,34 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+REGISTRYCHECKFLAG=$(MISC)$/registrycheck.flag
+$(OUT)$/misc$/$(TARGET).idls: makefile.mk
+ +-$(RM) $@
+ +-$(RM) $(REGISTRYCHECKFLAG)
+ +$(TYPE) $(mktmp $(foreach,i,$(IDLFILES) $(PACKAGE)$/$i)) >>$@
+
+ALLTAR: $(OUT)$/misc$/$(TARGET).idls
+
diff --git a/sdext/inc/makefile.mk b/sdext/inc/makefile.mk
new file mode 100644
index 000000000000..637bde83fa99
--- /dev/null
+++ b/sdext/inc/makefile.mk
@@ -0,0 +1,47 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+PRJ=..
+
+PRJNAME=sdext
+TARGET=inc
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+# --- Targets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
+.IF "$(ENABLE_PCH)"!=""
+ALLTAR : \
+ $(SLO)$/precompiled.pch \
+ $(SLO)$/precompiled_ex.pch
+
+.ENDIF # "$(ENABLE_PCH)"!=""
+
diff --git a/sdext/inc/pch/precompiled_sdext.cxx b/sdext/inc/pch/precompiled_sdext.cxx
new file mode 100644
index 000000000000..071aae824858
--- /dev/null
+++ b/sdext/inc/pch/precompiled_sdext.cxx
@@ -0,0 +1,31 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "precompiled_sdext.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/inc/pch/precompiled_sdext.hxx b/sdext/inc/pch/precompiled_sdext.hxx
new file mode 100644
index 000000000000..ea496150e83e
--- /dev/null
+++ b/sdext/inc/pch/precompiled_sdext.hxx
@@ -0,0 +1,34 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): Generated on 2006-09-01 17:49:41.780248
+
+#ifdef PRECOMPILED_HEADERS
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/prj/build.lst b/sdext/prj/build.lst
new file mode 100644
index 000000000000..4c1be7a9810f
--- /dev/null
+++ b/sdext/prj/build.lst
@@ -0,0 +1,19 @@
+dx sdext : TRANSLATIONS:translations offapi comphelper unotools readlicense_oo cppu tools cppuhelper sal javaunohelper officecfg XPDF:xpdf LIBXSLT:libxslt xmlhelp NULL
+dx sdext usr1 - all sdext_mkout NULL
+dx sdext\prj get - all sdext_prj NULL
+dx sdext\source\minimizer nmake - all sdext_minimizer sdext_minimizer_rdoooe sdext_minimizer_rdooo sdext_inc NULL
+dx sdext\source\minimizer\registry\data\org\openoffice\Office\extension nmake - all sdext_minimizer_rdoooe NULL
+dx sdext\source\minimizer\registry\data\org\openoffice\Office nmake - all sdext_minimizer_rdooo NULL
+dx sdext\source\presenter\registry\data\org\openoffice\Office\extension nmake - all sdext_presenter_xcu NULL
+dx sdext\source\presenter\help\en-US\com.sun.PresenterScreen nmake - all sdext_presenter_help NULL
+dx sdext\source\presenter nmake - all sdext_presenter sdext_inc sdext_presenter_xcu sdext_presenter_help NULL
+dx sdext\inc nmake - all sdext_inc NULL
+dx sdext\source\pdfimport\xpdfwrapper nmake - all dx_xpdfwrap NULL
+dx sdext\source\pdfimport\xpdftest nmake - all dx_parsetest dx_xpdfwrap NULL
+dx sdext\source\pdfimport\wrapper nmake - all sdext_pdfwrap sdext_inc NULL
+dx sdext\source\pdfimport\misc nmake - all sdext_misc sdext_inc NULL
+dx sdext\source\pdfimport\odf nmake - all sdext_odf sdext_inc NULL
+dx sdext\source\pdfimport\pdfparse nmake - all sdext_pdfparse sdext_inc NULL
+dx sdext\source\pdfimport\sax nmake - all sdext_sax sdext_inc NULL
+dx sdext\source\pdfimport\tree nmake - all sdext_tree sdext_inc NULL
+dx sdext\source\pdfimport nmake - all sdext_pdfi sdext_pdfwrap sdext_misc sdext_odf sdext_pdfparse sdext_sax sdext_tree sdext_inc dx_xpdfwrap NULL
diff --git a/sdext/prj/d.lst b/sdext/prj/d.lst
new file mode 100644
index 000000000000..cd0f72555055
--- /dev/null
+++ b/sdext/prj/d.lst
@@ -0,0 +1,13 @@
+mkdir: %_DEST%\bin\minimizer
+mkdir: %_DEST%\bin\presenter
+mkdir: %_DEST%\bin\pdfimport
+..\%__SRC%\bin\presentation-minimizer.oxt %_DEST%\bin\presentation-minimizer.oxt
+..\%__SRC%\bin\presenter-screen.oxt %_DEST%\bin\presenter-screen.oxt
+..\%__SRC%\bin\pdfimport.oxt %_DEST%\bin\pdfimport.oxt
+..\%__SRC%\bin\pdf2xml.* %_DEST%\bin\pdf2xml.*
+..\%__SRC%\bin\pdfunzip.* %_DEST%\bin\pdfunzip.*
+..\%__SRC%\bin\pdfimport.oxt %_DEST%\bin\pdfimport\pdfimport.oxt
+..\%__SRC%\bin\presentation-minimizer.oxt %_DEST%\bin\minimizer\presentation-minimizer.oxt
+..\%__SRC%\bin\presentation_minimizer_develop.zip %_DEST%\bin\minimizer\presentation_minimizer_develop.zip
+..\%__SRC%\bin\presenter-screen.oxt %_DEST%\bin\presenter\presenter-screen.oxt
+..\%__SRC%\bin\presenter-screen_develop.zip %_DEST%\bin\presenter\presenter-screen_develop.zip
diff --git a/sdext/source/minimizer/basic.txt b/sdext/source/minimizer/basic.txt
new file mode 100644
index 000000000000..3a540aea5730
--- /dev/null
+++ b/sdext/source/minimizer/basic.txt
@@ -0,0 +1,89 @@
+Sub Main
+
+Dim oSettings(11) as new com.sun.star.beans.PropertyValue
+oSettings(0).Name = "JPEGCompression"
+oSettings(0).Value= True
+oSettings(1).Name = "JPEGQuality"
+oSettings(1).Value= 25
+oSettings(2).Name = "RemoveCropArea"
+oSettings(2).Value= True
+oSettings(3).Name = "ImageResolution"
+oSettings(3).Value= 90
+oSettings(4).Name = "OLEOptimization"
+oSettings(4).Value= False
+oSettings(5).Name = "OLEOptimizationType"
+oSettings(5).Value= 1
+oSettings(6).Name = "DeleteUnusedMasterPages"
+oSettings(6).Value= True
+oSettings(7).Name = "DeleteHiddenSlides"
+oSettings(7).Value= True
+oSettings(8).Name = "DeleteNotesPages"
+oSettings(8).Value= True
+oSettings(9).Name = "SaveAs"
+oSettings(9).Value= true
+oSettings(10).Name = "EmbedLinkedGraphics"
+oSettings(10).Value = false
+oSettings(11).Name = "SaveAsURL"
+oSettings(11).Value = ""
+oSettings(12).Name = "FilterName"
+oSettings(12).Value = "impress8"
+
+
+
+Dim oArg(0) as new com.sun.star.beans.PropertyValue
+oArg(0).Name = "Settings"
+oArg(0).Value= oSettings
+
+Dim url As String
+Dim oPresentations(17) as String
+oPresentations( 0)="d:\data\sunpresentations\01-22-07SunIntelAnnouncementPresentation,01-22-2007.star_impress_8x.odp"
+oPresentations( 1)="d:\data\sunpresentations\01_Schwartz_SAS_VF.odp"
+oPresentations( 2)="d:\data\sunpresentations\CorporateSocialResponsibilityCustomerPresentation,02-12-2007.star_impress_8x.odp"
+oPresentations( 3)="d:\data\sunpresentations\Current-ProjectBlackboxCustomerPresentation,03-07-2007.star_impress_8x.odp"
+oPresentations( 4)="d:\data\sunpresentations\JavaSE6CustomerPresentation,12-11-2006(2).star_impress_8x.odp"
+oPresentations( 5)="d:\data\sunpresentations\JavaSE6CustomerPresentation,12-11-2006.star_impress_8x.odp"
+oPresentations( 6)="d:\data\sunpresentations\NetworkComputingLaunchPresentation,Q22006,Washington,DC,05-08-2006.star_impress_8x.odp"
+oPresentations( 7)="d:\data\sunpresentations\ProjectBlackboxTechnicalPresentation-NDAONLY,11-09-2006.star_impress_8x.odp"
+oPresentations( 8)="d:\data\sunpresentations\ScottMcNealy,IntlAssocofPrivacyProfessionals)ConferenceOpeningKeynote,'PlayingonSunday-GettingPrivacyRight',March,8,2007,Washington,DC,,03-08-2007.star_impress_8x.odp"
+oPresentations( 9)="d:\data\sunpresentations\Sun'sStoragetekAcademy-JonathanSchwartzTheSky'sTheLimit!,February,292007,SanFrancisco,CA,02-28-2007.star_impress_8x.odp"
+oPresentations(10)="d:\data\sunpresentations\SunAnalystSummit2007(SAS)-DonGranthamExecutingonStrategy,February,6,2007,SanFrancisco,CA,02-07-2007.star_impress_8x.odp"
+oPresentations(11)="d:\data\sunpresentations\SunConsultingServicesPortfolio-Presentation,03-17-2006.star_impress_6x.sxi"
+oPresentations(12)="d:\data\sunpresentations\SunFedOpenYourMindandSunFedTechDayatGTSI,ScottMcNealy,January23and24,2007,Washington,DC,01-23-2007.star_impress_8x.odp"
+oPresentations(13)="d:\data\sunpresentations\SunFedTechDaysatAccenture,ScottMcNealy,January24,2007,Washington,DC,01-24-2007.star_impress_8x.odp"
+oPresentations(14)="d:\data\sunpresentations\SunManagedServicesGoldenPitch,03-22-2007.star_impress_8x.odp"
+oPresentations(15)="d:\data\sunpresentations\SunServicesEducationServicesGeneralPresentation,01-11-2006.star_impress_6x.sxi"
+oPresentations(16)="d:\data\sunpresentations\SunSystemPacks-CustomerReadyPresentation,01-23-2007.star_impress_8x.odp"
+oPresentations(17)="d:\data\sunpresentations\U.S.SalesMeetingCustomerPresentation(08-01-2006),08-01-2006.odp"
+
+FOR I = 0 TO 17
+url=oPresentations( I )
+oSettings(11)=url+string( I, 2 )
+url=converttourl( url )
+optimize( url, oArg() )
+NEXT I
+
+End Sub
+
+Sub Optimize( url as String, oArg )
+
+Dim oPPPOptimizerDialog as Object
+Dim oUrl as new com.sun.star.util.URL
+Dim oTrans as Object
+oTrans = createUNOService("com.sun.star.util.URLTransformer")
+oUrl.Complete = "vnd.com.sun.star.comp.PPPOptimizer:optimize"
+oTrans.parsestrict(oUrl)
+
+Dim oDoc As Object
+Dim FileProperties(0) As New com.sun.star.beans.PropertyValue
+oSM = CreateObject("com.sun.star.ServiceManager")
+oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
+oDoc = oDesk.loadComponentFromURL( url, "_blank", 0, FileProperties() )
+
+Dim oInitialization( 0 ) as Object
+oInitialization(0) = oDoc.getCurrentController.getFrame
+oPPPOptimizerDialog = createUNOservice("com.sun.star.comp.PPPOptimizerImp")
+oPPPOptimizerDialog.initialize( oInitialization )
+oPPPOptimizerDialog.dispatch(oURL, oArg)
+odoc.dispose
+End Sub
+
diff --git a/sdext/source/minimizer/configurationaccess.cxx b/sdext/source/minimizer/configurationaccess.cxx
new file mode 100644
index 000000000000..449dfe79e702
--- /dev/null
+++ b/sdext/source/minimizer/configurationaccess.cxx
@@ -0,0 +1,541 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "configurationaccess.hxx"
+#include <com/sun/star/frame/XComponentLoader.hpp>
+#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
+#include <com/sun/star/util/XChangesBatch.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/util/XMacroExpander.hpp>
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#include <sal/macros.h>
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::container;
+
+static const OUString& GetConfigurationProviderServiceName (void)
+{
+ static const OUString sConfigurationProviderServiceName (
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.configuration.ConfigurationProvider"));
+ return sConfigurationProviderServiceName;
+}
+static const OUString& GetPathToConfigurationRoot (void)
+{
+ static const OUString sPathToConfigurationRoot (
+ RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.extension.SunPresentationMinimizer"));
+ return sPathToConfigurationRoot;
+}
+
+void OptimizerSettings::LoadSettingsFromConfiguration( const Reference< XNameAccess >& rSettings )
+{
+ if ( rSettings.is() )
+ {
+ const Sequence< OUString > aElements( rSettings->getElementNames() );
+ for ( int i = 0; i < aElements.getLength(); i++ )
+ {
+ try
+ {
+ const OUString aPropertyName( aElements[ i ] );
+ Any aValue( rSettings->getByName( aPropertyName ) );
+ switch( TKGet( aPropertyName ) )
+ {
+ case TK_Name : aValue >>= maName; break;
+ case TK_JPEGCompression : aValue >>= mbJPEGCompression; break;
+ case TK_JPEGQuality : aValue >>= mnJPEGQuality; break;
+ case TK_RemoveCropArea : aValue >>= mbRemoveCropArea; break;
+ case TK_ImageResolution : aValue >>= mnImageResolution; break;
+ case TK_EmbedLinkedGraphics : aValue >>= mbEmbedLinkedGraphics; break;
+ case TK_OLEOptimization : aValue >>= mbOLEOptimization; break;
+ case TK_OLEOptimizationType : aValue >>= mnOLEOptimizationType; break;
+ case TK_DeleteUnusedMasterPages : aValue >>= mbDeleteUnusedMasterPages; break;
+ case TK_DeleteHiddenSlides : aValue >>= mbDeleteHiddenSlides; break;
+ case TK_DeleteNotesPages : aValue >>= mbDeleteNotesPages ;break;
+ case TK_SaveAs : aValue >>= mbSaveAs; break;
+// case TK_SaveAsURL : aValue >>= maSaveAsURL; break; // URL is not saved to configuration
+// case TK_FilterName : aValue >>= maFilterName; break; // URL is not saved to configuration
+ case TK_OpenNewDocument : aValue >>= mbOpenNewDocument; break;
+ default: break;
+ }
+ }
+ catch( Exception& )
+ {
+ }
+ }
+ }
+}
+
+void OptimizerSettings::SaveSettingsToConfiguration( const Reference< XNameReplace >& rSettings )
+{
+ if ( rSettings.is() )
+ {
+ OUString pNames[] = {
+ TKGet( TK_Name ),
+ TKGet( TK_JPEGCompression ),
+ TKGet( TK_JPEGQuality ),
+ TKGet( TK_RemoveCropArea ),
+ TKGet( TK_ImageResolution ),
+ TKGet( TK_EmbedLinkedGraphics ),
+ TKGet( TK_OLEOptimization ),
+ TKGet( TK_OLEOptimizationType ),
+ TKGet( TK_DeleteUnusedMasterPages ),
+ TKGet( TK_DeleteHiddenSlides ),
+ TKGet( TK_DeleteNotesPages ),
+ TKGet( TK_SaveAs ),
+// TKGet( TK_SaveAsURL ),
+// TKGet( TK_FilterName ),
+ TKGet( TK_OpenNewDocument ) };
+
+ Any pValues[] = {
+ Any( maName ),
+ Any( mbJPEGCompression ),
+ Any( mnJPEGQuality ),
+ Any( mbRemoveCropArea ),
+ Any( mnImageResolution ),
+ Any( mbEmbedLinkedGraphics ),
+ Any( mbOLEOptimization ),
+ Any( mnOLEOptimizationType ),
+ Any( mbDeleteUnusedMasterPages ),
+ Any( mbDeleteHiddenSlides ),
+ Any( mbDeleteNotesPages ),
+ Any( mbSaveAs ),
+// Any( maSaveAsURL ),
+// Any( maFilterName ),
+ Any( mbOpenNewDocument ) };
+
+ sal_Int32 i, nCount = SAL_N_ELEMENTS( pNames );
+
+ for ( i = 0; i < nCount; i++ )
+ {
+ try
+ {
+ rSettings->replaceByName( pNames[ i ], pValues[ i ] );
+ }
+ catch( Exception& /* rException */ )
+ {
+ }
+ }
+ }
+}
+
+sal_Bool OptimizerSettings::operator==( const OptimizerSettings& rOptimizerSettings ) const
+{
+ return ( rOptimizerSettings.mbJPEGCompression == mbJPEGCompression )
+ && ( rOptimizerSettings.mnJPEGQuality == mnJPEGQuality )
+ && ( rOptimizerSettings.mbRemoveCropArea == mbRemoveCropArea )
+ && ( rOptimizerSettings.mnImageResolution == mnImageResolution )
+ && ( rOptimizerSettings.mbEmbedLinkedGraphics == mbEmbedLinkedGraphics )
+ && ( rOptimizerSettings.mbOLEOptimization == mbOLEOptimization )
+ && ( rOptimizerSettings.mnOLEOptimizationType == mnOLEOptimizationType )
+ && ( rOptimizerSettings.mbDeleteUnusedMasterPages == mbDeleteUnusedMasterPages )
+ && ( rOptimizerSettings.mbDeleteHiddenSlides == mbDeleteHiddenSlides )
+ && ( rOptimizerSettings.mbDeleteNotesPages == mbDeleteNotesPages );
+// && ( rOptimizerSettings.mbOpenNewDocument == mbOpenNewDocument );
+}
+
+
+ConfigurationAccess::ConfigurationAccess( const Reference< uno::XComponentContext >& rxMSF, OptimizerSettings* pDefaultSettings ) :
+ mxMSF( rxMSF )
+{
+ LoadStrings();
+ maSettings.push_back( pDefaultSettings ?
+ *pDefaultSettings : OptimizerSettings() );
+ maSettings.back().maName = TKGet( TK_LastUsedSettings );
+ LoadConfiguration();
+ maInitialSettings = maSettings;
+};
+
+ConfigurationAccess::~ConfigurationAccess()
+{
+}
+
+rtl::OUString ConfigurationAccess::getPath( const PPPOptimizerTokenEnum eToken )
+{
+ rtl::OUString aPath;
+ try
+ {
+ static const OUString sProtocol( RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.expand:" ) );
+ static const OUString stheMacroExpander( RTL_CONSTASCII_USTRINGPARAM( "/singletons/com.sun.star.util.theMacroExpander" ) );
+ Reference< container::XNameAccess > xSet( OpenConfiguration( true ), UNO_QUERY_THROW );
+ if ( xSet->hasByName( TKGet( eToken ) ) )
+ xSet->getByName( TKGet( eToken ) ) >>= aPath;
+ if ( aPath.match( sProtocol, 0 ) )
+ {
+ rtl::OUString aTmp( aPath.copy( 20 ) );
+ Reference< util::XMacroExpander > xExpander;
+ if ( mxMSF->getValueByName( stheMacroExpander ) >>= xExpander )
+ {
+ aPath = xExpander->expandMacros( aTmp );
+ }
+ }
+ }
+ catch ( Exception& )
+ {
+ }
+ return aPath;
+}
+
+rtl::OUString ConfigurationAccess::getString( const PPPOptimizerTokenEnum eToken ) const
+{
+ std::map< PPPOptimizerTokenEnum, rtl::OUString, Compare >::const_iterator aIter( maStrings.find( eToken ) );
+ return aIter != maStrings.end() ? ((*aIter).second) : rtl::OUString();
+}
+
+void ConfigurationAccess::LoadStrings()
+{
+ try
+ {
+ do
+ {
+ Reference< XInterface > xRoot( OpenConfiguration( true ) );
+ if ( !xRoot.is() )
+ break;
+ Reference< container::XNameAccess > xSet( GetConfigurationNode( xRoot, TKGet( TK_Strings ) ), UNO_QUERY );
+ if ( xSet.is() )
+ {
+ const Sequence< OUString > aElements( xSet->getElementNames() );
+ for ( int i = 0; i < aElements.getLength(); i++ )
+ {
+ try
+ {
+ OUString aString, aPropertyName( aElements[ i ] );
+ if ( xSet->getByName( aPropertyName ) >>= aString )
+ maStrings[ TKGet( aPropertyName ) ] = aString;
+ }
+ catch( Exception& )
+ {
+ }
+ }
+ }
+ }
+ while( false );
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+void ConfigurationAccess::LoadConfiguration()
+{
+ try
+ {
+ do
+ {
+ Reference< XInterface > xRoot( OpenConfiguration( true ) );
+ if ( !xRoot.is() )
+ break;
+ Reference< container::XNameAccess > xSet( GetConfigurationNode( xRoot, TKGet( TK_LastUsedSettings ) ), UNO_QUERY );
+ if ( xSet.is() )
+ {
+ OptimizerSettings& rCurrent( maSettings.front() );
+ rCurrent.LoadSettingsFromConfiguration( xSet );
+ }
+ xSet = Reference< container::XNameAccess >( GetConfigurationNode( xRoot, TKGet( TK_Settings_Templates ) ), UNO_QUERY );
+ if ( xSet.is() )
+ {
+ const Sequence< OUString > aElements( xSet->getElementNames() );
+ for ( int i = 0; i < aElements.getLength(); i++ )
+ {
+ try
+ {
+ OUString aPath( TKGet( TK_Settings_Templates_ ).concat( aElements[ i ] ) );
+ Reference< container::XNameAccess > xTemplates( GetConfigurationNode( xRoot, aPath ), UNO_QUERY );
+ if ( xTemplates.is() )
+ {
+ maSettings.push_back( OptimizerSettings() );
+ maSettings.back().LoadSettingsFromConfiguration( xTemplates );
+ }
+ }
+ catch( Exception& /* rException */ )
+ {
+ }
+ }
+ }
+ }
+ while( false );
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+void ConfigurationAccess::SaveConfiguration()
+{
+ try
+ {
+ do
+ {
+ int i;
+ unsigned int k;
+ Reference<util::XChangesBatch> xRoot( OpenConfiguration( false ), UNO_QUERY_THROW );
+
+ // storing the last used settings
+ Reference< container::XNameReplace > xSet( GetConfigurationNode( xRoot, TKGet( TK_LastUsedSettings ) ), UNO_QUERY_THROW );
+ OptimizerSettings& rCurrent( maSettings.front() );
+ rCurrent.SaveSettingsToConfiguration( xSet );
+
+ // updating template elements
+ xSet = Reference< container::XNameReplace >( GetConfigurationNode( xRoot, TKGet( TK_Settings_Templates ) ), UNO_QUERY_THROW );
+ Reference< container::XNameContainer > xNameContainer( xSet, UNO_QUERY_THROW );
+
+ const Sequence< OUString > aElements( xSet->getElementNames() );
+ for( i = 0; i < aElements.getLength(); i++ )
+ xNameContainer->removeByName( aElements[ i ] );
+
+ for( k = 1; k < maSettings.size(); k++ )
+ {
+ OptimizerSettings& rSettings( maSettings[ k ] );
+ OUString aElementName( TKGet( TK_Template ).concat( OUString::valueOf( static_cast< sal_Int32 >( k ) ) ) );
+ Reference< lang::XSingleServiceFactory > xChildFactory ( xSet, UNO_QUERY_THROW );
+ Reference< container::XNameReplace > xChild( xChildFactory->createInstance(), UNO_QUERY_THROW );
+ xNameContainer->insertByName( aElementName, Any( xChild ) );
+
+ OUString aPath( TKGet( TK_Settings_Templates_ ).concat( aElementName ) );
+ Reference< container::XNameReplace > xTemplates( GetConfigurationNode( xRoot, aPath ), UNO_QUERY );
+ rSettings.SaveSettingsToConfiguration( xTemplates );
+ }
+ xRoot->commitChanges();
+ }
+ while( false );
+ }
+ catch( Exception& /* rException */ )
+ {
+
+ }
+}
+
+Reference< XInterface > ConfigurationAccess::OpenConfiguration( bool bReadOnly )
+{
+ Reference< XInterface > xRoot;
+ try
+ {
+ Reference< lang::XMultiServiceFactory > xProvider( mxMSF->getServiceManager()->createInstanceWithContext( GetConfigurationProviderServiceName(), mxMSF ), UNO_QUERY );
+ if ( xProvider.is() )
+ {
+ Sequence< Any > aCreationArguments( 2 );
+ aCreationArguments[0] = makeAny( PropertyValue(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "nodepath" ) ), 0,
+ makeAny( GetPathToConfigurationRoot() ),
+ PropertyState_DIRECT_VALUE ) );
+ aCreationArguments[1] = makeAny(beans::PropertyValue(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "lazywrite" ) ), 0, makeAny( true ),
+ PropertyState_DIRECT_VALUE ) );
+ OUString sAccessService;
+ if ( bReadOnly )
+ sAccessService = OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.configuration.ConfigurationAccess" ) );
+ else
+ sAccessService = OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.configuration.ConfigurationUpdateAccess" ) );
+
+ xRoot = xProvider->createInstanceWithArguments(
+ sAccessService, aCreationArguments );
+ }
+ }
+ catch ( Exception& /* rException */ )
+ {
+ }
+ return xRoot;
+}
+
+Reference< XInterface > ConfigurationAccess::GetConfigurationNode(
+ const Reference< XInterface >& xRoot,
+ const OUString& sPathToNode )
+{
+ Reference< XInterface > xNode;
+ try
+ {
+ if ( !sPathToNode.getLength() )
+ xNode = xRoot;
+ else
+ {
+ Reference< XHierarchicalNameAccess > xHierarchy( xRoot, UNO_QUERY );
+ if ( xHierarchy.is() )
+ {
+ xHierarchy->getByHierarchicalName( sPathToNode ) >>= xNode;
+ }
+ }
+ }
+ catch ( Exception& rException )
+ {
+ OSL_TRACE ("caught exception while getting configuration node %s: %s",
+ ::rtl::OUStringToOString(sPathToNode,
+ RTL_TEXTENCODING_UTF8).getStr(),
+ ::rtl::OUStringToOString(rException.Message,
+ RTL_TEXTENCODING_UTF8).getStr());
+ }
+ return xNode;
+}
+
+com::sun::star::uno::Any ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken ) const
+{
+ Any aRetValue;
+ const OptimizerSettings& rSettings( maSettings.front() );
+ try
+ {
+ switch( ePropertyToken )
+ {
+ case TK_Name : aRetValue <<= rSettings.maName; break;
+ case TK_JPEGCompression : aRetValue <<= rSettings.mbJPEGCompression; break;
+ case TK_JPEGQuality : aRetValue <<= rSettings.mnJPEGQuality; break;
+ case TK_RemoveCropArea : aRetValue <<= rSettings.mbRemoveCropArea; break;
+ case TK_ImageResolution : aRetValue <<= rSettings.mnImageResolution; break;
+ case TK_EmbedLinkedGraphics : aRetValue <<= rSettings.mbEmbedLinkedGraphics; break;
+ case TK_OLEOptimization : aRetValue <<= rSettings.mbOLEOptimization; break;
+ case TK_OLEOptimizationType : aRetValue <<= rSettings.mnOLEOptimizationType; break;
+ case TK_DeleteUnusedMasterPages : aRetValue <<= rSettings.mbDeleteUnusedMasterPages; break;
+ case TK_DeleteHiddenSlides : aRetValue <<= rSettings.mbDeleteHiddenSlides; break;
+ case TK_DeleteNotesPages : aRetValue <<= rSettings.mbDeleteNotesPages; break;
+ case TK_SaveAs : aRetValue <<= rSettings.mbSaveAs; break;
+ case TK_SaveAsURL : aRetValue <<= rSettings.maSaveAsURL; break;
+ case TK_FilterName : aRetValue <<= rSettings.maFilterName; break;
+ case TK_OpenNewDocument : aRetValue <<= rSettings.mbOpenNewDocument; break;
+ case TK_EstimatedFileSize : aRetValue <<= rSettings.mnEstimatedFileSize; break;
+ default:
+ break;
+ }
+ }
+ catch( Exception& /* rException */ )
+ {
+ }
+ return aRetValue;
+}
+
+void ConfigurationAccess::SetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const com::sun::star::uno::Any& rValue )
+{
+ OptimizerSettings& rSettings( maSettings.front() );
+ try
+ {
+ switch( ePropertyToken )
+ {
+ case TK_Name : rValue >>= rSettings.maName; break;
+ case TK_JPEGCompression : rValue >>= rSettings.mbJPEGCompression; break;
+ case TK_JPEGQuality : rValue >>= rSettings.mnJPEGQuality; break;
+ case TK_RemoveCropArea : rValue >>= rSettings.mbRemoveCropArea; break;
+ case TK_ImageResolution : rValue >>= rSettings.mnImageResolution; break;
+ case TK_EmbedLinkedGraphics : rValue >>= rSettings.mbEmbedLinkedGraphics; break;
+ case TK_OLEOptimization : rValue >>= rSettings.mbOLEOptimization; break;
+ case TK_OLEOptimizationType : rValue >>= rSettings.mnOLEOptimizationType; break;
+ case TK_DeleteUnusedMasterPages : rValue >>= rSettings.mbDeleteUnusedMasterPages; break;
+ case TK_DeleteHiddenSlides : rValue >>= rSettings.mbDeleteHiddenSlides; break;
+ case TK_DeleteNotesPages : rValue >>= rSettings.mbDeleteNotesPages; break;
+ case TK_CustomShowName : rValue >>= rSettings.maCustomShowName; break;
+ case TK_SaveAs : rValue >>= rSettings.mbSaveAs; break;
+ case TK_SaveAsURL : rValue >>= rSettings.maSaveAsURL; break;
+ case TK_FilterName : rValue >>= rSettings.maFilterName; break;
+ case TK_OpenNewDocument : rValue >>= rSettings.mbOpenNewDocument; break;
+ case TK_EstimatedFileSize : rValue >>= rSettings.mnEstimatedFileSize; break;
+ default:
+ break;
+ }
+ }
+ catch( Exception& /* rException */ )
+ {
+ }
+}
+
+sal_Bool ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const sal_Bool bDefault ) const
+{
+ sal_Bool bRetValue = bDefault;
+ if ( ! ( GetConfigProperty( ePropertyToken ) >>= bRetValue ) )
+ bRetValue = bDefault;
+ return bRetValue;
+}
+
+sal_Int16 ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const sal_Int16 nDefault ) const
+{
+ sal_Int16 nRetValue = nDefault;
+ if ( ! ( GetConfigProperty( ePropertyToken ) >>= nRetValue ) )
+ nRetValue = nDefault;
+ return nRetValue;
+}
+
+sal_Int32 ConfigurationAccess::GetConfigProperty( const PPPOptimizerTokenEnum ePropertyToken, const sal_Int32 nDefault ) const
+{
+ sal_Int32 nRetValue = nDefault;
+ if ( ! ( GetConfigProperty( ePropertyToken ) >>= nRetValue ) )
+ nRetValue = nDefault;
+ return nRetValue;
+}
+
+Sequence< PropertyValue > ConfigurationAccess::GetConfigurationSequence()
+{
+ Sequence< PropertyValue > aRet( 15 );
+ OptimizerSettings& rSettings( maSettings.front() );
+ aRet[ 0 ].Name = TKGet( TK_JPEGCompression );
+ aRet[ 0 ].Value= Any( rSettings.mbJPEGCompression );
+ aRet[ 1 ].Name = TKGet( TK_JPEGQuality );
+ aRet[ 1 ].Value= Any( rSettings.mnJPEGQuality );
+ aRet[ 2 ].Name = TKGet( TK_RemoveCropArea );
+ aRet[ 2 ].Value= Any( rSettings.mbRemoveCropArea );
+ aRet[ 3 ].Name = TKGet( TK_ImageResolution );
+ aRet[ 3 ].Value= Any( rSettings.mnImageResolution );
+ aRet[ 4 ].Name = TKGet( TK_EmbedLinkedGraphics );
+ aRet[ 4 ].Value= Any( rSettings.mbEmbedLinkedGraphics );
+ aRet[ 5 ].Name = TKGet( TK_OLEOptimization );
+ aRet[ 5 ].Value= Any( rSettings.mbOLEOptimization );
+ aRet[ 6 ].Name = TKGet( TK_OLEOptimizationType );
+ aRet[ 6 ].Value= Any( rSettings.mnOLEOptimizationType );
+ aRet[ 7 ].Name = TKGet( TK_DeleteUnusedMasterPages );
+ aRet[ 7 ].Value= Any( rSettings.mbDeleteUnusedMasterPages );
+ aRet[ 8 ].Name = TKGet( TK_DeleteHiddenSlides );
+ aRet[ 8 ].Value= Any( rSettings.mbDeleteHiddenSlides );
+ aRet[ 9 ].Name = TKGet( TK_DeleteNotesPages );
+ aRet[ 9 ].Value= Any( rSettings.mbDeleteNotesPages );
+ aRet[ 10].Name = TKGet( TK_CustomShowName );
+ aRet[ 10].Value= Any( rSettings.maCustomShowName );
+ aRet[ 11].Name = TKGet( TK_SaveAsURL );
+ aRet[ 11].Value= Any( rSettings.maSaveAsURL );
+ aRet[ 12].Name = TKGet( TK_FilterName );
+ aRet[ 12].Value= Any( rSettings.maFilterName );
+ aRet[ 13].Name = TKGet( TK_OpenNewDocument );
+ aRet[ 13].Value= Any( rSettings.mbOpenNewDocument );
+ aRet[ 14].Name = TKGet( TK_EstimatedFileSize );
+ aRet[ 14].Value= Any( rSettings.mnEstimatedFileSize );
+ return aRet;
+}
+
+std::vector< OptimizerSettings >::iterator ConfigurationAccess::GetOptimizerSettingsByName( const rtl::OUString& rName )
+{
+ std::vector< OptimizerSettings >::iterator aIter( maSettings.begin() + 1 );
+ while ( aIter != maSettings.end() )
+ {
+ if ( aIter->maName == rName )
+ break;
+ aIter++;
+ }
+ return aIter;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/configurationaccess.hxx b/sdext/source/minimizer/configurationaccess.hxx
new file mode 100644
index 000000000000..436ae90fe071
--- /dev/null
+++ b/sdext/source/minimizer/configurationaccess.hxx
@@ -0,0 +1,141 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#ifndef _CONFIGURATION_ACCESS_HXX_
+#define _CONFIGURATION_ACCESS_HXX_
+#include <vector>
+#include "pppoptimizertoken.hxx"
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/uno/Any.h>
+#include <com/sun/star/uno/Reference.h>
+#include <com/sun/star/uno/XInterface.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XPropertyAccess.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#ifndef _COM_SUN_STAR_UNO_XCOMPONENTCONTEXT
+#include <com/sun/star/uno/XComponentContext.hpp>
+#endif
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/container/XNameReplace.hpp>
+#include <map>
+
+struct OptimizerSettings
+{
+ rtl::OUString maName;
+ sal_Bool mbJPEGCompression;
+ sal_Int32 mnJPEGQuality;
+ sal_Bool mbRemoveCropArea;
+ sal_Int32 mnImageResolution;
+ sal_Bool mbEmbedLinkedGraphics;
+ sal_Bool mbOLEOptimization;
+ sal_Int16 mnOLEOptimizationType;
+ sal_Bool mbDeleteUnusedMasterPages;
+ sal_Bool mbDeleteHiddenSlides;
+ sal_Bool mbDeleteNotesPages;
+ rtl::OUString maCustomShowName;
+ sal_Bool mbSaveAs;
+ rtl::OUString maSaveAsURL;
+ rtl::OUString maFilterName;
+ sal_Bool mbOpenNewDocument;
+ sal_Int64 mnEstimatedFileSize;
+
+ OptimizerSettings() :
+ mbJPEGCompression( sal_False ),
+ mnJPEGQuality( 90 ),
+ mbRemoveCropArea( sal_False ),
+ mnImageResolution( 0 ),
+ mbEmbedLinkedGraphics( sal_False ),
+ mbOLEOptimization( sal_False ),
+ mnOLEOptimizationType( 0 ),
+ mbDeleteUnusedMasterPages( sal_False ),
+ mbDeleteHiddenSlides( sal_False ),
+ mbDeleteNotesPages( sal_False ),
+ mbSaveAs( sal_True ),
+ mbOpenNewDocument( sal_True ),
+ mnEstimatedFileSize( 0 ){};
+ ~OptimizerSettings(){};
+
+ void LoadSettingsFromConfiguration( const com::sun::star::uno::Reference< com::sun::star::container::XNameAccess >& rSettings );
+ void SaveSettingsToConfiguration( const com::sun::star::uno::Reference< com::sun::star::container::XNameReplace >& rSettings );
+
+ sal_Bool operator==( const OptimizerSettings& rOptimizerSettings ) const;
+
+};
+class ConfigurationAccess
+{
+ public :
+
+ ConfigurationAccess( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rXFactory,
+ OptimizerSettings* pDefaultSettings = NULL );
+ ~ConfigurationAccess();
+ void SaveConfiguration();
+
+ rtl::OUString getPath( const PPPOptimizerTokenEnum );
+ rtl::OUString getString( const PPPOptimizerTokenEnum ) const;
+
+ // access to current OptimizerSettings (stored in the first entry of maSettings)
+ com::sun::star::uno::Any GetConfigProperty( const PPPOptimizerTokenEnum ) const;
+ void SetConfigProperty( const PPPOptimizerTokenEnum, const com::sun::star::uno::Any& aValue );
+
+ sal_Bool GetConfigProperty( const PPPOptimizerTokenEnum, const sal_Bool bDefault ) const;
+ sal_Int16 GetConfigProperty( const PPPOptimizerTokenEnum, const sal_Int16 nDefault ) const;
+ sal_Int32 GetConfigProperty( const PPPOptimizerTokenEnum, const sal_Int32 nDefault ) const;
+
+ com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > GetConfigurationSequence();
+
+ // getting access to the OptimizerSettings list
+ std::vector< OptimizerSettings >& GetOptimizerSettings() { return maSettings; };
+ std::vector< OptimizerSettings >::iterator GetOptimizerSettingsByName( const rtl::OUString& rName );
+
+ private :
+
+ struct Compare
+ {
+ bool operator()( const PPPOptimizerTokenEnum s1, const PPPOptimizerTokenEnum s2 ) const
+ {
+ return s1 < s2;
+ }
+ };
+ std::map < PPPOptimizerTokenEnum, rtl::OUString, Compare > maStrings;
+
+ std::vector< OptimizerSettings > maSettings;
+ std::vector< OptimizerSettings > maInitialSettings;
+
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxMSF;
+
+ void LoadStrings();
+ void LoadConfiguration();
+ com::sun::star::uno::Reference< com::sun::star::uno::XInterface > OpenConfiguration( bool bReadOnly );
+ com::sun::star::uno::Reference< com::sun::star::uno::XInterface > GetConfigurationNode(
+ const com::sun::star::uno::Reference< com::sun::star::uno::XInterface >& xRoot, const rtl::OUString& sPathToNode );
+};
+
+#endif // _CONFIGURATION_ACCESS_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/delzip b/sdext/source/minimizer/delzip
new file mode 100644
index 000000000000..8b137891791f
--- /dev/null
+++ b/sdext/source/minimizer/delzip
@@ -0,0 +1 @@
+
diff --git a/sdext/source/minimizer/description.xml b/sdext/source/minimizer/description.xml
new file mode 100644
index 000000000000..f10e8c21efa8
--- /dev/null
+++ b/sdext/source/minimizer/description.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description
+
+ xmlns="http://openoffice.org/extensions/description/2006"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dep="http://openoffice.org/extensions/description/2006">
+
+ <identifier value="UPDATED_IDENTIFIER"/>
+
+ <dependencies>
+ <OpenOffice.org-minimal-version value="2.3" dep:name="OpenOffice.org 2.3"/>
+ </dependencies>
+
+ <version value="1.0.3"/>
+
+ <platform value="UPDATED_SUPPORTED_PLATFORM"/>
+
+ <publisher>
+ <name xlink:href="http://www.oracle.com/us/products/applications/open-office" lang="en">Oracle</name>
+ </publisher>
+
+ <display-name>
+ <name lang="en-US">Presentation Minimizer</name>
+ </display-name>
+
+ <icon>
+ <default xlink:href="bitmaps/extension_32.png" />
+ </icon>
+
+</description>
diff --git a/sdext/source/minimizer/fileopendialog.cxx b/sdext/source/minimizer/fileopendialog.cxx
new file mode 100644
index 000000000000..6091e34cf614
--- /dev/null
+++ b/sdext/source/minimizer/fileopendialog.cxx
@@ -0,0 +1,210 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "fileopendialog.hxx"
+#include <sal/types.h>
+#include "pppoptimizertoken.hxx"
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
+#include <com/sun/star/ui/dialogs/CommonFilePickerElementIds.hpp>
+#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
+#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
+#include <com/sun/star/ui/dialogs/FilePreviewImageFormats.hpp>
+#include <com/sun/star/ui/dialogs/ControlActions.hpp>
+#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
+#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
+#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
+#include <com/sun/star/ui/dialogs/XFilePreview.hpp>
+#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
+#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
+#include <com/sun/star/ui/dialogs/XFolderPicker.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/NamedValue.hpp>
+#include <com/sun/star/embed/ElementModes.hpp>
+#include <com/sun/star/container/XEnumeration.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/container/XContainerQuery.hpp>
+#include <com/sun/star/view/XControlAccess.hpp>
+#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
+
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::view;
+using namespace ::com::sun::star::ui::dialogs;
+
+FileOpenDialog::FileOpenDialog( const Reference< XComponentContext >& rxMSF ) :
+ mxMSF( rxMSF )
+{
+ Sequence< Any > aInitPropSeq( 1 );
+ aInitPropSeq[ 0 ] <<= (sal_Int16)TemplateDescription::FILESAVE_AUTOEXTENSION; // TemplateDescription.FILEOPEN_SIMPLE
+
+ mxFilePicker = Reference < XFilePicker >( mxMSF->getServiceManager()->createInstanceWithArgumentsAndContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aInitPropSeq, rxMSF ),UNO_QUERY_THROW );
+ mxFilePicker->setMultiSelectionMode( sal_False );
+
+ Reference< XFilePickerControlAccess > xAccess( mxFilePicker, UNO_QUERY );
+ if ( xAccess.is() )
+ {
+ Any aValue( static_cast< sal_Bool >( sal_True ) );
+ try
+ {
+ xAccess->setValue( ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue );
+ }
+ catch( com::sun::star::uno::Exception& )
+ {}
+ }
+
+ // collecting a list of impress filters
+ Reference< XNameAccess > xFilters( mxMSF->getServiceManager()->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.FilterFactory" ) ), rxMSF ), UNO_QUERY_THROW );
+ Sequence< OUString > aFilterList( xFilters->getElementNames() );
+ for ( int i = 0; i < aFilterList.getLength(); i++ )
+ {
+ try
+ {
+ Sequence< PropertyValue > aFilterProperties;
+ if ( xFilters->getByName( aFilterList[ i ] ) >>= aFilterProperties )
+ {
+ FilterEntry aFilterEntry;
+ sal_Bool bImpressFilter = sal_False;
+ for ( int j = 0; j < aFilterProperties.getLength(); j++ )
+ {
+ PropertyValue& rProperty( aFilterProperties[ j ] );
+ switch( TKGet( rProperty.Name ) )
+ {
+ case TK_DocumentService :
+ {
+ rtl::OUString sDocumentService;
+ rProperty.Value >>= sDocumentService;
+ if ( sDocumentService == OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.presentation.PresentationDocument" ) ) )
+ bImpressFilter = sal_True;
+ else
+ j = aFilterProperties.getLength();
+ }
+ break;
+ case TK_Name : rProperty.Value >>= aFilterEntry.maName; break;
+ case TK_UIName : rProperty.Value >>= aFilterEntry.maUIName; break;
+ case TK_Type : rProperty.Value >>= aFilterEntry.maType; break;
+ case TK_Flags : rProperty.Value >>= aFilterEntry.maFlags; break;
+ default : break;
+ }
+ }
+ if ( bImpressFilter && ( ( aFilterEntry.maFlags & 3 ) == 3 ) )
+ {
+ aFilterEntryList.push_back( aFilterEntry );
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ }
+ }
+
+ Reference< XNameAccess > xTypes( mxMSF->getServiceManager()->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.TypeDetection" ) ), rxMSF ), UNO_QUERY_THROW );
+ Sequence< OUString > aTypeList( xFilters->getElementNames() );
+
+// mxFilePicker->setDefaultName( );
+
+ Reference< XFilterManager > xFilterManager( mxFilePicker, UNO_QUERY_THROW );
+ std::vector< FilterEntry >::iterator aIter( aFilterEntryList.begin() );
+ while( aIter != aFilterEntryList.end() )
+ {
+ Sequence< PropertyValue > aTypeProperties;
+ try
+ {
+ if ( xTypes->getByName( aIter->maType ) >>= aTypeProperties )
+ {
+ Sequence< OUString > aExtensions;
+ for ( int i = 0; i < aTypeProperties.getLength(); i++ )
+ {
+ switch( TKGet( aTypeProperties[ i ].Name ) )
+ {
+ case TK_Extensions : aTypeProperties[ i ].Value >>= aExtensions; break;
+ default: break;
+ }
+ }
+ if ( aExtensions.getLength() )
+ {
+ xFilterManager->appendFilter( aIter->maUIName, aExtensions[ 0 ] );
+ if ( aIter->maFlags & 0x100 )
+ xFilterManager->setCurrentFilter( aIter->maUIName );
+ }
+ }
+ }
+ catch ( Exception& )
+ {
+ }
+ aIter++;
+ }
+}
+FileOpenDialog::~FileOpenDialog()
+{
+}
+sal_Int16 FileOpenDialog::execute()
+{
+ return mxFilePicker->execute();
+}
+void FileOpenDialog::setDefaultName( const rtl::OUString& rDefaultName )
+{
+ mxFilePicker->setDefaultName( rDefaultName );
+}
+::rtl::OUString FileOpenDialog::getURL() const
+{
+ Sequence< OUString > aFileSeq( mxFilePicker->getFiles() );
+ return aFileSeq.getLength() ? aFileSeq[ 0 ] : OUString();
+};
+::rtl::OUString FileOpenDialog::getFilterName() const
+{
+ rtl::OUString aFilterName;
+ Reference< XFilterManager > xFilterManager( mxFilePicker, UNO_QUERY_THROW );
+ rtl::OUString aUIName( xFilterManager->getCurrentFilter() );
+ std::vector< FilterEntry >::const_iterator aIter( aFilterEntryList.begin() );
+ while( aIter != aFilterEntryList.end() )
+ {
+ if ( aIter->maUIName == aUIName )
+ {
+ aFilterName = aIter->maName;
+ break;
+ }
+ aIter++;
+ }
+ return aFilterName;
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/fileopendialog.hxx b/sdext/source/minimizer/fileopendialog.hxx
new file mode 100644
index 000000000000..8ddbba752113
--- /dev/null
+++ b/sdext/source/minimizer/fileopendialog.hxx
@@ -0,0 +1,74 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#ifndef _FILEOPEN_DIALOG_HXX_
+#define _FILEOPEN_DIALOG_HXX_
+
+#include <vector>
+#include <com/sun/star/beans/StringPair.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+
+class FileOpenDialog
+{
+ // a list of filters that are provided within the SaveDialog
+ struct FilterEntry
+ {
+ rtl::OUString maName;
+ rtl::OUString maType;
+ rtl::OUString maUIName;
+ rtl::OUString maFilter;
+ sal_Int32 maFlags;
+ com::sun::star::uno::Sequence< rtl::OUString > maExtensions;
+
+ FilterEntry() :
+ maFlags( 0 ) {}
+ };
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxMSF;
+ com::sun::star::uno::Reference < ::com::sun::star::ui::dialogs::XFilePicker > mxFilePicker;
+
+ std::vector< FilterEntry > aFilterEntryList;
+
+public :
+ FileOpenDialog( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF );
+ ~FileOpenDialog();
+
+ sal_Int16 execute();
+
+ void setDefaultName( const rtl::OUString& );
+// void setDefaultDirectory( const rtl::OUString& );
+
+ ::rtl::OUString getURL() const;
+ ::rtl::OUString getFilterName() const;
+};
+
+#endif // _FILEOPEN_DIALOG_HXX_
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/graphiccollector.cxx b/sdext/source/minimizer/graphiccollector.cxx
new file mode 100644
index 000000000000..5a401e7f0e66
--- /dev/null
+++ b/sdext/source/minimizer/graphiccollector.cxx
@@ -0,0 +1,462 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "graphiccollector.hxx"
+#include <com/sun/star/awt/XDevice.hpp>
+#include <com/sun/star/frame/XFramesSupplier.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/BitmapMode.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/presentation/XPresentationPage.hpp>
+#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
+
+#include "impoptimizer.hxx"
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::graphic;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::presentation;
+
+const DeviceInfo& GraphicCollector::GetDeviceInfo( const Reference< XComponentContext >& rxFact )
+{
+ static DeviceInfo aDeviceInfo;
+ if( !aDeviceInfo.Width )
+ {
+ try
+ {
+ Reference< XFramesSupplier > xDesktop( rxFact->getServiceManager()->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ), rxFact ), UNO_QUERY_THROW );
+ Reference< XFrame > xFrame( xDesktop->getActiveFrame() );
+ Reference< XWindow > xWindow( xFrame->getContainerWindow() );
+ Reference< XDevice > xDevice( xWindow, UNO_QUERY_THROW );
+ aDeviceInfo = xDevice->getInfo();
+ }
+ catch( Exception& )
+ {
+ }
+ }
+ return aDeviceInfo;
+}
+
+void ImpAddEntity( std::vector< GraphicCollector::GraphicEntity >& rGraphicEntities, const GraphicSettings& rGraphicSettings, const GraphicCollector::GraphicUser& rUser )
+{
+ const rtl::OUString aGraphicURL( rUser.maGraphicURL );
+ const rtl::OUString sPackageURL( RTL_CONSTASCII_USTRINGPARAM("vnd.sun.star.GraphicObject:") );
+
+ if ( rGraphicSettings.mbEmbedLinkedGraphics || ( !aGraphicURL.getLength() || aGraphicURL.match( sPackageURL, 0 ) ) )
+ {
+ std::vector< GraphicCollector::GraphicEntity >::iterator aIter( rGraphicEntities.begin() );
+ while( aIter != rGraphicEntities.end() )
+ {
+ if ( aIter->maUser[ 0 ].maGraphicURL == aGraphicURL )
+ {
+ if ( rUser.maLogicalSize.Width > aIter->maLogicalSize.Width )
+ aIter->maLogicalSize.Width = rUser.maLogicalSize.Width;
+ if ( rUser.maLogicalSize.Height > aIter->maLogicalSize.Height )
+ aIter->maLogicalSize.Height = rUser.maLogicalSize.Height;
+ aIter->maUser.push_back( rUser );
+ break;
+ }
+ ++aIter;
+ }
+ if ( aIter == rGraphicEntities.end() )
+ {
+ GraphicCollector::GraphicEntity aEntity( rUser );
+ rGraphicEntities.push_back( aEntity );
+ }
+ }
+}
+
+void ImpAddGraphicEntity( const Reference< XComponentContext >& rxMSF, Reference< XShape >& rxShape, const GraphicSettings& rGraphicSettings, std::vector< GraphicCollector::GraphicEntity >& rGraphicEntities )
+{
+ Reference< XGraphic > xGraphic;
+ Reference< XPropertySet > xShapePropertySet( rxShape, UNO_QUERY_THROW );
+ if ( xShapePropertySet->getPropertyValue( TKGet( TK_Graphic ) ) >>= xGraphic )
+ {
+ text::GraphicCrop aGraphicCropLogic( 0, 0, 0, 0 );
+
+ GraphicCollector::GraphicUser aUser;
+ aUser.mxShape = rxShape;
+ aUser.mbFillBitmap = sal_False;
+ xShapePropertySet->getPropertyValue( TKGet( TK_GraphicURL ) ) >>= aUser.maGraphicURL;
+ xShapePropertySet->getPropertyValue( TKGet( TK_GraphicStreamURL ) ) >>= aUser.maGraphicStreamURL;
+ xShapePropertySet->getPropertyValue( TKGet( TK_GraphicCrop ) ) >>= aGraphicCropLogic;
+ awt::Size aLogicalSize( rxShape->getSize() );
+
+ // calculating the logical size, as if there were no cropping
+ if ( aGraphicCropLogic.Left || aGraphicCropLogic.Right || aGraphicCropLogic.Top || aGraphicCropLogic.Bottom )
+ {
+ awt::Size aSize100thMM( GraphicCollector::GetOriginalSize( rxMSF, xGraphic ) );
+ if ( aSize100thMM.Width && aSize100thMM.Height )
+ {
+ awt::Size aCropSize( aSize100thMM.Width - ( aGraphicCropLogic.Left + aGraphicCropLogic.Right ),
+ aSize100thMM.Height - ( aGraphicCropLogic.Top + aGraphicCropLogic.Bottom ));
+ if ( aCropSize.Width && aCropSize.Height )
+ {
+ awt::Size aNewLogSize( static_cast< sal_Int32 >( static_cast< double >( aSize100thMM.Width * aLogicalSize.Width ) / aCropSize.Width ),
+ static_cast< sal_Int32 >( static_cast< double >( aSize100thMM.Height * aLogicalSize.Height ) / aCropSize.Height ) );
+ aLogicalSize = aNewLogSize;
+ }
+ }
+ }
+ aUser.maGraphicCropLogic = aGraphicCropLogic;
+ aUser.maLogicalSize = aLogicalSize;
+ ImpAddEntity( rGraphicEntities, rGraphicSettings, aUser );
+ }
+}
+
+void ImpAddFillBitmapEntity( const Reference< XComponentContext >& rxMSF, const Reference< XPropertySet >& rxPropertySet, const awt::Size& rLogicalSize,
+ std::vector< GraphicCollector::GraphicEntity >& rGraphicEntities, const GraphicSettings& rGraphicSettings, const Reference< XPropertySet >& rxPagePropertySet )
+{
+ try
+ {
+ FillStyle eFillStyle;
+ if ( rxPropertySet->getPropertyValue( TKGet( TK_FillStyle ) ) >>= eFillStyle )
+ {
+ if ( eFillStyle == FillStyle_BITMAP )
+ {
+ rtl::OUString aFillBitmapURL;
+ Reference< XBitmap > xFillBitmap;
+ if ( rxPropertySet->getPropertyValue( TKGet( TK_FillBitmap ) ) >>= xFillBitmap )
+ {
+ Reference< XGraphic > xGraphic( xFillBitmap, UNO_QUERY_THROW );
+ if ( xGraphic.is() )
+ {
+ awt::Size aLogicalSize( rLogicalSize );
+ Reference< XPropertySetInfo > axPropSetInfo( rxPropertySet->getPropertySetInfo() );
+ if ( axPropSetInfo.is() )
+ {
+ if ( axPropSetInfo->hasPropertyByName( TKGet( TK_FillBitmapMode ) ) )
+ {
+ BitmapMode eBitmapMode;
+ if ( rxPropertySet->getPropertyValue( TKGet( TK_FillBitmapMode ) ) >>= eBitmapMode )
+ {
+ if ( ( eBitmapMode == BitmapMode_REPEAT ) || ( eBitmapMode == BitmapMode_NO_REPEAT ) )
+ {
+ sal_Bool bLogicalSize = sal_False;
+ awt::Size aSize( 0, 0 );
+ if ( ( rxPropertySet->getPropertyValue( TKGet( TK_FillBitmapLogicalSize ) ) >>= bLogicalSize )
+ && ( rxPropertySet->getPropertyValue( TKGet( TK_FillBitmapSizeX ) ) >>= aSize.Width )
+ && ( rxPropertySet->getPropertyValue( TKGet( TK_FillBitmapSizeY ) ) >>= aSize.Height ) )
+ {
+ if ( bLogicalSize )
+ {
+ if ( !aSize.Width || !aSize.Height )
+ {
+ awt::Size aSize100thMM( GraphicCollector::GetOriginalSize( rxMSF, xGraphic ) );
+ if ( aSize100thMM.Width && aSize100thMM.Height )
+ aLogicalSize = aSize100thMM;
+ }
+ else
+ aLogicalSize = aSize;
+ }
+ else
+ {
+ aLogicalSize.Width = sal::static_int_cast< sal_Int32 >( ( static_cast< double >( aLogicalSize.Width ) * aSize.Width ) / -100.0 );
+ aLogicalSize.Height = sal::static_int_cast< sal_Int32 >( ( static_cast< double >( aLogicalSize.Height ) * aSize.Height ) / -100.0 );
+ }
+ }
+ }
+ }
+ }
+ }
+ GraphicCollector::GraphicUser aUser;
+ aUser.mxPropertySet = rxPropertySet;
+ rxPropertySet->getPropertyValue( TKGet( TK_FillBitmapURL ) ) >>= aUser.maGraphicURL;
+ aUser.mbFillBitmap = sal_True;
+ aUser.maLogicalSize = aLogicalSize;
+ aUser.mxPagePropertySet = rxPagePropertySet;
+ ImpAddEntity( rGraphicEntities, rGraphicSettings, aUser );
+ }
+ }
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+void ImpCollectBackgroundGraphic( const Reference< XComponentContext >& rxMSF, const Reference< XDrawPage >& rxDrawPage, const GraphicSettings& rGraphicSettings, std::vector< GraphicCollector::GraphicEntity >& rGraphicEntities )
+{
+ try
+ {
+ awt::Size aLogicalSize( 28000, 21000 );
+ Reference< XPropertySet > xPropertySet( rxDrawPage, UNO_QUERY_THROW );
+ xPropertySet->getPropertyValue( TKGet( TK_Width ) ) >>= aLogicalSize.Width;
+ xPropertySet->getPropertyValue( TKGet( TK_Height ) ) >>= aLogicalSize.Height;
+
+ Reference< XPropertySet > xBackgroundPropSet;
+ if ( xPropertySet->getPropertyValue( TKGet( TK_Background ) ) >>= xBackgroundPropSet )
+ ImpAddFillBitmapEntity( rxMSF, xBackgroundPropSet, aLogicalSize, rGraphicEntities, rGraphicSettings, xPropertySet );
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+void ImpCollectGraphicObjects( const Reference< XComponentContext >& rxMSF, const Reference< XShapes >& rxShapes, const GraphicSettings& rGraphicSettings, std::vector< GraphicCollector::GraphicEntity >& rGraphicEntities )
+{
+ for ( sal_Int32 i = 0; i < rxShapes->getCount(); i++ )
+ {
+ try
+ {
+ const OUString sGraphicObjectShape( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.drawing.GraphicObjectShape" ) );
+ const OUString sGroupShape( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.drawing.GroupShape" ) );
+ Reference< XShape > xShape( rxShapes->getByIndex( i ), UNO_QUERY_THROW );
+ const OUString sShapeType( xShape->getShapeType() );
+ if ( sShapeType == sGroupShape )
+ {
+ Reference< XShapes > xShapes( xShape, UNO_QUERY_THROW );
+ ImpCollectGraphicObjects( rxMSF, xShapes, rGraphicSettings, rGraphicEntities );
+ continue;
+ }
+
+ if ( sShapeType == sGraphicObjectShape )
+ ImpAddGraphicEntity( rxMSF, xShape, rGraphicSettings, rGraphicEntities );
+
+ // now check for a fillstyle
+ Reference< XPropertySet > xEmptyPagePropSet;
+ Reference< XPropertySet > xShapePropertySet( xShape, UNO_QUERY_THROW );
+ awt::Size aLogicalSize( xShape->getSize() );
+ ImpAddFillBitmapEntity( rxMSF, xShapePropertySet, aLogicalSize, rGraphicEntities, rGraphicSettings, xEmptyPagePropSet );
+ }
+ catch( Exception& )
+ {
+ }
+ }
+}
+
+awt::Size GraphicCollector::GetOriginalSize( const Reference< XComponentContext >& rxMSF, const Reference< XGraphic >& rxGraphic )
+{
+ awt::Size aSize100thMM( 0, 0 );
+ Reference< XPropertySet > xGraphicPropertySet( rxGraphic, UNO_QUERY_THROW );
+ if ( xGraphicPropertySet->getPropertyValue( TKGet( TK_Size100thMM ) ) >>= aSize100thMM )
+ {
+ if ( !aSize100thMM.Width && !aSize100thMM.Height )
+ { // MAPMODE_PIXEL USED :-(
+ awt::Size aSourceSizePixel( 0, 0 );
+ if ( xGraphicPropertySet->getPropertyValue( TKGet( TK_SizePixel ) ) >>= aSourceSizePixel )
+ {
+ const DeviceInfo& rDeviceInfo( GraphicCollector::GetDeviceInfo( rxMSF ) );
+ if ( rDeviceInfo.PixelPerMeterX && rDeviceInfo.PixelPerMeterY )
+ {
+ aSize100thMM.Width = static_cast< sal_Int32 >( ( aSourceSizePixel.Width * 100000.0 ) / rDeviceInfo.PixelPerMeterX );
+ aSize100thMM.Height = static_cast< sal_Int32 >( ( aSourceSizePixel.Height * 100000.0 ) / rDeviceInfo.PixelPerMeterY );
+ }
+ }
+ }
+ }
+ return aSize100thMM;
+}
+
+void GraphicCollector::CollectGraphics( const Reference< XComponentContext >& rxMSF, const Reference< XModel >& rxModel,
+ const GraphicSettings& rGraphicSettings, std::vector< GraphicCollector::GraphicEntity >& rGraphicList )
+{
+ try
+ {
+ sal_Int32 i;
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ for ( i = 0; i < xDrawPages->getCount(); i++ )
+ {
+ Reference< XDrawPage > xDrawPage( xDrawPages->getByIndex( i ), UNO_QUERY_THROW );
+ ImpCollectBackgroundGraphic( rxMSF, xDrawPage, rGraphicSettings, rGraphicList );
+ Reference< XShapes > xDrawShapes( xDrawPage, UNO_QUERY_THROW );
+ ImpCollectGraphicObjects( rxMSF, xDrawShapes, rGraphicSettings, rGraphicList );
+
+ Reference< XPresentationPage > xPresentationPage( xDrawPage, UNO_QUERY_THROW );
+ Reference< XDrawPage > xNotesPage( xPresentationPage->getNotesPage() );
+ ImpCollectBackgroundGraphic( rxMSF, xNotesPage, rGraphicSettings, rGraphicList );
+ Reference< XShapes > xNotesShapes( xNotesPage, UNO_QUERY_THROW );
+ ImpCollectGraphicObjects( rxMSF, xNotesShapes, rGraphicSettings, rGraphicList );
+ }
+ Reference< XMasterPagesSupplier > xMasterPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xMasterPages( xMasterPagesSupplier->getMasterPages(), UNO_QUERY_THROW );
+ for ( i = 0; i < xMasterPages->getCount(); i++ )
+ {
+ Reference< XDrawPage > xMasterPage( xMasterPages->getByIndex( i ), UNO_QUERY_THROW );
+ ImpCollectBackgroundGraphic( rxMSF, xMasterPage, rGraphicSettings, rGraphicList );
+ Reference< XShapes > xMasterPageShapes( xMasterPage, UNO_QUERY_THROW );
+ ImpCollectGraphicObjects( rxMSF, xMasterPageShapes, rGraphicSettings, rGraphicList );
+ }
+
+ std::vector< GraphicCollector::GraphicEntity >::iterator aGraphicIter( rGraphicList.begin() );
+ std::vector< GraphicCollector::GraphicEntity >::iterator aGraphicIEnd( rGraphicList.end() );
+ while( aGraphicIter != aGraphicIEnd )
+ {
+ // check if it is possible to remove the crop area
+ aGraphicIter->mbRemoveCropArea = rGraphicSettings.mbRemoveCropArea;
+ if ( aGraphicIter->mbRemoveCropArea )
+ {
+ std::vector< GraphicCollector::GraphicUser >::iterator aGUIter( aGraphicIter->maUser.begin() );
+ while( aGraphicIter->mbRemoveCropArea && ( aGUIter != aGraphicIter->maUser.end() ) )
+ {
+ if ( aGUIter->maGraphicCropLogic.Left || aGUIter->maGraphicCropLogic.Top
+ || aGUIter->maGraphicCropLogic.Right || aGUIter->maGraphicCropLogic.Bottom )
+ {
+ if ( aGUIter == aGraphicIter->maUser.begin() )
+ aGraphicIter->maGraphicCropLogic = aGUIter->maGraphicCropLogic;
+ else if ( ( aGraphicIter->maGraphicCropLogic.Left != aGUIter->maGraphicCropLogic.Left )
+ || ( aGraphicIter->maGraphicCropLogic.Top != aGUIter->maGraphicCropLogic.Top )
+ || ( aGraphicIter->maGraphicCropLogic.Right != aGUIter->maGraphicCropLogic.Right )
+ || ( aGraphicIter->maGraphicCropLogic.Bottom != aGUIter->maGraphicCropLogic.Bottom ) )
+ {
+ aGraphicIter->mbRemoveCropArea = sal_False;
+ }
+ }
+ else
+ aGraphicIter->mbRemoveCropArea = sal_False;
+ ++aGUIter;
+ }
+ }
+ if ( !aGraphicIter->mbRemoveCropArea )
+ aGraphicIter->maGraphicCropLogic = text::GraphicCrop( 0, 0, 0, 0 );
+ ++aGraphicIter;
+ }
+ }
+ catch ( Exception& )
+ {
+ }
+}
+
+void ImpCountGraphicObjects( const Reference< XComponentContext >& rxMSF, const Reference< XShapes >& rxShapes, const GraphicSettings& rGraphicSettings, sal_Int32& rnGraphics )
+{
+ for ( sal_Int32 i = 0; i < rxShapes->getCount(); i++ )
+ {
+ try
+ {
+ const OUString sGraphicObjectShape( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.drawing.GraphicObjectShape" ) );
+ const OUString sGroupShape( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.drawing.GroupShape" ) );
+ Reference< XShape > xShape( rxShapes->getByIndex( i ), UNO_QUERY_THROW );
+ const OUString sShapeType( xShape->getShapeType() );
+ if ( sShapeType == sGroupShape )
+ {
+ Reference< XShapes > xShapes( xShape, UNO_QUERY_THROW );
+ ImpCountGraphicObjects( rxMSF, xShapes, rGraphicSettings, rnGraphics );
+ continue;
+ }
+
+ if ( sShapeType == sGraphicObjectShape )
+ {
+ rnGraphics++;
+ }
+
+ // now check for a fillstyle
+ Reference< XPropertySet > xEmptyPagePropSet;
+ Reference< XPropertySet > xShapePropertySet( xShape, UNO_QUERY_THROW );
+ awt::Size aLogicalSize( xShape->getSize() );
+
+ FillStyle eFillStyle;
+ if ( xShapePropertySet->getPropertyValue( TKGet( TK_FillStyle ) ) >>= eFillStyle )
+ {
+ if ( eFillStyle == FillStyle_BITMAP )
+ {
+ rnGraphics++;
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ }
+ }
+}
+
+void ImpCountBackgroundGraphic( const Reference< XComponentContext >& /* rxMSF */, const Reference< XDrawPage >& rxDrawPage,
+ const GraphicSettings& /* rGraphicSettings */, sal_Int32& rnGraphics )
+{
+ try
+ {
+ awt::Size aLogicalSize( 28000, 21000 );
+ Reference< XPropertySet > xPropertySet( rxDrawPage, UNO_QUERY_THROW );
+ xPropertySet->getPropertyValue( TKGet( TK_Width ) ) >>= aLogicalSize.Width;
+ xPropertySet->getPropertyValue( TKGet( TK_Height ) ) >>= aLogicalSize.Height;
+
+ Reference< XPropertySet > xBackgroundPropSet;
+ if ( xPropertySet->getPropertyValue( TKGet( TK_Background ) ) >>= xBackgroundPropSet )
+ {
+ FillStyle eFillStyle;
+ if ( xBackgroundPropSet->getPropertyValue( TKGet( TK_FillStyle ) ) >>= eFillStyle )
+ {
+ if ( eFillStyle == FillStyle_BITMAP )
+ {
+ rnGraphics++;
+ }
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+void GraphicCollector::CountGraphics( const Reference< XComponentContext >& rxMSF, const Reference< XModel >& rxModel,
+ const GraphicSettings& rGraphicSettings, sal_Int32& rnGraphics )
+{
+ try
+ {
+ sal_Int32 i;
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ for ( i = 0; i < xDrawPages->getCount(); i++ )
+ {
+ Reference< XDrawPage > xDrawPage( xDrawPages->getByIndex( i ), UNO_QUERY_THROW );
+ ImpCountBackgroundGraphic( rxMSF, xDrawPage, rGraphicSettings, rnGraphics );
+ Reference< XShapes > xDrawShapes( xDrawPage, UNO_QUERY_THROW );
+ ImpCountGraphicObjects( rxMSF, xDrawShapes, rGraphicSettings, rnGraphics );
+
+ Reference< XPresentationPage > xPresentationPage( xDrawPage, UNO_QUERY_THROW );
+ Reference< XDrawPage > xNotesPage( xPresentationPage->getNotesPage() );
+ ImpCountBackgroundGraphic( rxMSF, xNotesPage, rGraphicSettings, rnGraphics );
+ Reference< XShapes > xNotesShapes( xNotesPage, UNO_QUERY_THROW );
+ ImpCountGraphicObjects( rxMSF, xNotesShapes, rGraphicSettings, rnGraphics );
+ }
+ Reference< XMasterPagesSupplier > xMasterPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xMasterPages( xMasterPagesSupplier->getMasterPages(), UNO_QUERY_THROW );
+ for ( i = 0; i < xMasterPages->getCount(); i++ )
+ {
+ Reference< XDrawPage > xMasterPage( xMasterPages->getByIndex( i ), UNO_QUERY_THROW );
+ ImpCountBackgroundGraphic( rxMSF, xMasterPage, rGraphicSettings, rnGraphics );
+ Reference< XShapes > xMasterPageShapes( xMasterPage, UNO_QUERY_THROW );
+ ImpCountGraphicObjects( rxMSF, xMasterPageShapes, rGraphicSettings, rnGraphics );
+ }
+ }
+ catch ( Exception& )
+ {
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/graphiccollector.hxx b/sdext/source/minimizer/graphiccollector.hxx
new file mode 100644
index 000000000000..488cc46b8bfc
--- /dev/null
+++ b/sdext/source/minimizer/graphiccollector.hxx
@@ -0,0 +1,108 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef GRAPHICCOLLECTOR_HXX
+#define GRAPHICCOLLECTOR_HXX
+
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/awt/DeviceInfo.hpp>
+#include <com/sun/star/text/GraphicCrop.hpp>
+#include <com/sun/star/drawing/XShape.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <vector>
+
+
+struct GraphicSettings
+{
+ sal_Bool mbJPEGCompression;
+ sal_Int32 mnJPEGQuality;
+ sal_Bool mbRemoveCropArea;
+ sal_Int32 mnImageResolution;
+ sal_Bool mbEmbedLinkedGraphics;
+
+ GraphicSettings( sal_Bool bJPEGCompression, sal_Int32 nJPEGQuality, sal_Bool bRemoveCropArea,
+ sal_Int32 nImageResolution, sal_Bool bEmbedLinkedGraphics )
+ : mbJPEGCompression( bJPEGCompression )
+ , mnJPEGQuality( nJPEGQuality )
+ , mbRemoveCropArea( bRemoveCropArea )
+ , mnImageResolution( nImageResolution )
+ , mbEmbedLinkedGraphics( bEmbedLinkedGraphics ) {};
+};
+
+class GraphicCollector
+{
+ public:
+
+ struct GraphicUser
+ {
+ com::sun::star::uno::Reference< com::sun::star::drawing::XShape > mxShape; // if mbFillBitmap is false the xShape has
+ com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > mxPropertySet; // to be used otherwise the PropertySet
+ com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > mxPagePropertySet;
+ rtl::OUString maGraphicURL;
+ rtl::OUString maGraphicStreamURL;
+ com::sun::star::text::GraphicCrop maGraphicCropLogic;
+ com::sun::star::awt::Size maLogicalSize;
+ sal_Bool mbFillBitmap;
+
+ GraphicUser() : mxShape(), maGraphicCropLogic( 0, 0, 0, 0 ), mbFillBitmap( sal_False ) {};
+ };
+
+ struct GraphicEntity
+ {
+ com::sun::star::awt::Size maLogicalSize; // the biggest logical size the graphic will be displayed
+ sal_Bool mbRemoveCropArea; //
+ com::sun::star::text::GraphicCrop maGraphicCropLogic;
+ std::vector< GraphicUser > maUser;
+
+ GraphicEntity( const GraphicUser& rUser )
+ : maLogicalSize( rUser.maLogicalSize ), mbRemoveCropArea( sal_False ), maGraphicCropLogic( 0, 0, 0, 0 ) { maUser.push_back( rUser ); };
+ };
+
+ static const com::sun::star::awt::DeviceInfo& GetDeviceInfo( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxFact );
+ static com::sun::star::awt::Size GetOriginalSize( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF,
+ const com::sun::star::uno::Reference< com::sun::star::graphic::XGraphic >& rxGraphic );
+
+ // collecting graphic instances, the downside of this method is that every graphic is swapped in
+ static void CollectGraphics( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF, const com::sun::star::uno::Reference< com::sun::star::frame::XModel >& rxModel,
+ const GraphicSettings& rGraphicSettings, std::vector< GraphicEntity >& io_rGraphicList );
+ // counting graphics without swapping in graphics
+ static void CountGraphics( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF, const com::sun::star::uno::Reference< com::sun::star::frame::XModel >& rxModel,
+ const GraphicSettings& rGraphicSettings, sal_Int32& rGraphics );
+};
+
+// --------------------
+// - GRAPHICCOLLECTOR -
+// --------------------
+
+
+#endif // GRAPHICCOLLECTOR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/help/component.txt b/sdext/source/minimizer/help/component.txt
new file mode 100755
index 000000000000..98f2687800ff
--- /dev/null
+++ b/sdext/source/minimizer/help/component.txt
@@ -0,0 +1,2 @@
+The Presentation Minimizer is used to reduce the file size of the current presentation. Images will be compressed, and data that is no longer needed will be removed.
+The Presentation Minimizer can optimize the image quality size. Presentations designed for screen or projector do not require the same high quality as presentations designed for print.
diff --git a/sdext/source/minimizer/help/help_de.odt b/sdext/source/minimizer/help/help_de.odt
new file mode 100644
index 000000000000..bb9bc0395c0f
--- /dev/null
+++ b/sdext/source/minimizer/help/help_de.odt
Binary files differ
diff --git a/sdext/source/minimizer/help/help_en-US.odt b/sdext/source/minimizer/help/help_en-US.odt
new file mode 100644
index 000000000000..bb9bc0395c0f
--- /dev/null
+++ b/sdext/source/minimizer/help/help_en-US.odt
Binary files differ
diff --git a/sdext/source/minimizer/impoptimizer.cxx b/sdext/source/minimizer/impoptimizer.cxx
new file mode 100644
index 000000000000..2c1f826140bc
--- /dev/null
+++ b/sdext/source/minimizer/impoptimizer.cxx
@@ -0,0 +1,770 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "impoptimizer.hxx"
+#include "pppoptimizer.hxx"
+#include "graphiccollector.hxx"
+#include "pagecollector.hxx"
+#include "informationdialog.hxx"
+
+#include <unotools/localfilehelper.hxx>
+#include <unotools/processfactory.hxx>
+#include <vector>
+#include "com/sun/star/util/URL.hpp"
+#include "com/sun/star/util/XURLTransformer.hpp"
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/util/MeasureUnit.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/frame/XDesktop.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/frame/XStorable.hpp>
+#include <com/sun/star/frame/FrameSearchFlag.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/graphic/XGraphicProvider.hpp>
+#include <unotools/configmgr.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/drawing/XMasterPageTarget.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
+#include <com/sun/star/presentation/XPresentationSupplier.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/presentation/XPresentation.hpp>
+#include <com/sun/star/presentation/XPresentationPage.hpp>
+#include <com/sun/star/document/XFilter.hpp>
+#include <com/sun/star/document/XExporter.hpp>
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/graphic/XGraphicProvider.hpp>
+#include <com/sun/star/graphic/GraphicType.hpp>
+#include <com/sun/star/io/XStream.hpp>
+#include <com/sun/star/io/XSeekable.hpp>
+#include <com/sun/star/frame/XComponentLoader.hpp>
+#include <com/sun/star/util/URL.hpp>
+
+using namespace ::std;
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::io;
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::util;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::graphic;
+using namespace ::com::sun::star::document;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::presentation;
+
+void ImpExtractCustomShow( const Reference< XModel >& rxModel, const OUString& rCustomShowName )
+{
+ vector< Reference< XDrawPage > > vNonUsedPageList;
+ try
+ {
+ PageCollector::CollectNonCustomShowPages( rxModel, rCustomShowName, vNonUsedPageList );
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ vector< Reference< XDrawPage > >::iterator aIter( vNonUsedPageList.begin() );
+ while( aIter != vNonUsedPageList.end() )
+ xDrawPages->remove( *aIter++ );
+ }
+ catch( Exception& )
+ {
+
+ }
+}
+
+void ImpDeleteUnusedMasterPages( const Reference< XModel >& rxModel )
+{
+ vector< PageCollector::MasterPageEntity > aMasterPageList;
+ PageCollector::CollectMasterPages( rxModel, aMasterPageList );
+
+ // now master pages that are not marked can be deleted
+ Reference< XMasterPagesSupplier > xMasterPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xMasterPages( xMasterPagesSupplier->getMasterPages(), UNO_QUERY_THROW );
+ vector< PageCollector::MasterPageEntity >::iterator aIter( aMasterPageList.begin() );
+ while( aIter != aMasterPageList.end() )
+ {
+ if ( !aIter->bUsed )
+ xMasterPages->remove( aIter->xMasterPage );
+ ++aIter;
+ }
+}
+
+void ImpDeleteHiddenSlides( const Reference< XModel >& rxModel )
+{
+ try
+ {
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ for( sal_Int32 i = 0; i < xDrawPages->getCount(); i++ )
+ {
+ Reference< XDrawPage > xDrawPage( xDrawPages->getByIndex( i ), UNO_QUERY_THROW );
+ Reference< XPropertySet > xPropSet( xDrawPage, UNO_QUERY_THROW );
+
+ sal_Bool bVisible = sal_True;
+ const OUString sVisible( RTL_CONSTASCII_USTRINGPARAM( "Visible" ) );
+ if ( xPropSet->getPropertyValue( sVisible ) >>= bVisible )
+ {
+ if (!bVisible )
+ {
+ xDrawPages->remove( xDrawPage );
+ i--;
+ }
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+void ImpDeleteNotesPages( const Reference< XModel >& rxModel )
+{
+ try
+ {
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ sal_Int32 i, nPages = xDrawPages->getCount();
+ for( i = 0; i < nPages; i++ )
+ {
+ Reference< XPresentationPage > xPresentationPage( xDrawPages->getByIndex( i ), UNO_QUERY_THROW );
+ Reference< XPropertySet > xPropSet( xPresentationPage->getNotesPage(), UNO_QUERY_THROW );
+ Reference< XShapes > xShapes( xPropSet, UNO_QUERY_THROW );
+ while( xShapes->getCount() )
+ xShapes->remove( Reference< XShape >( xShapes->getByIndex( xShapes->getCount() - 1 ), UNO_QUERY_THROW ) );
+
+ const OUString sLayout( RTL_CONSTASCII_USTRINGPARAM( "Layout" ) );
+ xPropSet->setPropertyValue( sLayout, Any( (sal_Int16)21 ) );
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+void ImpConvertOLE( const Reference< XModel >& rxModel, sal_Int32 nOLEOptimizationType )
+{
+ try
+ {
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ for ( sal_Int32 i = 0; i < xDrawPages->getCount(); i++ )
+ {
+ Reference< XShapes > xShapes( xDrawPages->getByIndex( i ), UNO_QUERY_THROW );
+ for ( sal_Int32 j = 0; j < xShapes->getCount(); j++ )
+ {
+ const OUString sOLE2Shape( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.drawing.OLE2Shape" ) );
+ Reference< XShape > xShape( xShapes->getByIndex( j ), UNO_QUERY_THROW );
+ if ( xShape->getShapeType() == sOLE2Shape )
+ {
+ Reference< XPropertySet > xPropSet( xShape, UNO_QUERY_THROW );
+
+ sal_Bool bConvertOLE = nOLEOptimizationType == 0;
+ if ( nOLEOptimizationType == 1 )
+ {
+ sal_Bool bIsInternal = sal_True;
+ xPropSet->getPropertyValue( TKGet( TK_IsInternal ) ) >>= bIsInternal;
+ bConvertOLE = !bIsInternal;
+ }
+ if ( bConvertOLE )
+ {
+ Reference< XGraphic > xGraphic;
+ if ( xPropSet->getPropertyValue( TKGet( TK_Graphic ) ) >>= xGraphic )
+ {
+ const OUString sGraphicShape( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.drawing.GraphicObjectShape" ) );
+ Reference< XMultiServiceFactory > xFact( rxModel, UNO_QUERY_THROW );
+ Reference< XShape > xShape2( xFact->createInstance( sGraphicShape ), UNO_QUERY_THROW );
+ xShapes->add( xShape2 );
+ xShape2->setPosition( xShape->getPosition() );
+ xShape2->setSize( xShape->getSize() );
+ Reference< XPropertySet > xPropSet2( xShape2, UNO_QUERY_THROW );
+ xPropSet2->setPropertyValue( TKGet( TK_Graphic ), Any( xGraphic ) );
+ xShapes->remove( xShape );
+ xPropSet2->setPropertyValue( TKGet( TK_ZOrder ), Any( j ) );
+ }
+ }
+ }
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+void ImpCompressGraphic( Reference< XGraphicProvider >& rxGraphicProvider, const Reference< XGraphic >& rxGraphic, Reference< XOutputStream >& rxOutputStream,
+ const OUString& rDestMimeType, const awt::Size& rLogicalSize, sal_Int32 nJPEGQuality, sal_Int32 nImageResolution, sal_Bool bRemoveCropping, const text::GraphicCrop& rGraphicCropLogic )
+{
+ try
+ {
+ if ( rxGraphicProvider.is() && rxOutputStream.is() )
+ {
+ Sequence< PropertyValue > aFilterData( 8 );
+ aFilterData[ 0 ].Name = TKGet( TK_ImageResolution );
+ aFilterData[ 0 ].Value <<= nImageResolution;
+ aFilterData[ 1 ].Name = TKGet( TK_ColorMode ); // todo: jpeg color mode (0->true color, 1->greyscale)
+ aFilterData[ 1 ].Value <<= (sal_Int32)0;
+ aFilterData[ 2 ].Name = TKGet( TK_Quality ); // quality that is used if we export to jpeg
+ aFilterData[ 2 ].Value <<= nJPEGQuality;
+ aFilterData[ 3 ].Name = TKGet( TK_Compression ); // compression that is used if we export to png
+ aFilterData[ 3 ].Value <<= (sal_Int32)6;
+ aFilterData[ 4 ].Name = TKGet( TK_Interlaced ); // interlaced is turned off if we export to png
+ aFilterData[ 4 ].Value <<= (sal_Int32)0;
+ aFilterData[ 5 ].Name = TKGet( TK_LogicalSize );
+ aFilterData[ 5 ].Value <<= rLogicalSize;
+ aFilterData[ 6 ].Name = TKGet( TK_RemoveCropArea );
+ aFilterData[ 6 ].Value <<= bRemoveCropping;
+ aFilterData[ 7 ].Name = TKGet( TK_GraphicCropLogic );
+ aFilterData[ 7 ].Value <<= rGraphicCropLogic;
+
+ Sequence< PropertyValue > aArgs( 3 );
+ aArgs[ 0 ].Name = TKGet( TK_MimeType ); // the GraphicProvider is using "MimeType", the GraphicExporter "MediaType"...
+ aArgs[ 0 ].Value <<= rDestMimeType;
+ aArgs[ 1 ].Name = TKGet( TK_OutputStream );
+ aArgs[ 1 ].Value <<= rxOutputStream;
+ aArgs[ 2 ].Name = TKGet( TK_FilterData );
+ aArgs[ 2 ].Value <<= aFilterData;
+
+ rxGraphicProvider->storeGraphic( rxGraphic, aArgs );
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+Reference< XGraphic > ImpCompressGraphic( const Reference< XComponentContext >& rxMSF,
+ const Reference< XGraphic >& xGraphic, const awt::Size& aLogicalSize, const text::GraphicCrop& aGraphicCropLogic,
+ const GraphicSettings& rGraphicSettings )
+{
+ Reference< XGraphic > xNewGraphic;
+ try
+ {
+ OUString aSourceMimeType;
+ Reference< XPropertySet > xGraphicPropertySet( xGraphic, UNO_QUERY_THROW );
+ if ( xGraphicPropertySet->getPropertyValue( TKGet( TK_MimeType ) ) >>= aSourceMimeType )
+ {
+ sal_Int8 nGraphicType( xGraphic->getType() );
+ if ( nGraphicType == com::sun::star::graphic::GraphicType::PIXEL )
+ {
+ sal_Bool bTransparent = sal_False;
+ sal_Bool bAlpha = sal_False;
+ sal_Bool bAnimated = sal_False;
+
+ awt::Size aSourceSizePixel( 0, 0 );
+ text::GraphicCrop aGraphicCropPixel( 0, 0, 0, 0 );
+
+ if ( ( xGraphicPropertySet->getPropertyValue( TKGet( TK_SizePixel ) ) >>= aSourceSizePixel ) &&
+ ( xGraphicPropertySet->getPropertyValue( TKGet( TK_Transparent ) ) >>= bTransparent ) &&
+ ( xGraphicPropertySet->getPropertyValue( TKGet( TK_Alpha ) ) >>= bAlpha ) &&
+ ( xGraphicPropertySet->getPropertyValue( TKGet( TK_Animated ) ) >>= bAnimated ) )
+ {
+ awt::Size aDestSizePixel( aSourceSizePixel );
+ if ( !bAnimated )
+ {
+ sal_Bool bNeedsOptimizing = sal_False;
+ sal_Bool bRemoveCropArea( rGraphicSettings.mbRemoveCropArea );
+
+ // cropping has to be removed from SourceSizePixel
+ if ( aGraphicCropLogic.Left || aGraphicCropLogic.Top || aGraphicCropLogic.Right || aGraphicCropLogic.Bottom )
+ {
+ const awt::Size aSize100thMM( GraphicCollector::GetOriginalSize( rxMSF, xGraphic ) );
+
+ if ( bRemoveCropArea )
+ bNeedsOptimizing = sal_True;
+
+ if ( aSize100thMM.Width && aSize100thMM.Height )
+ {
+ aGraphicCropPixel.Left = static_cast< sal_Int32 >( ( (double)aSourceSizePixel.Width * aGraphicCropLogic.Left ) / aSize100thMM.Width );
+ aGraphicCropPixel.Top = static_cast< sal_Int32 >( ( (double)aSourceSizePixel.Height* aGraphicCropLogic.Top ) / aSize100thMM.Height );
+ aGraphicCropPixel.Right = static_cast< sal_Int32 >( ( (double)aSourceSizePixel.Width * ( aSize100thMM.Width - aGraphicCropLogic.Right ) ) / aSize100thMM.Width );
+ aGraphicCropPixel.Bottom = static_cast< sal_Int32 >( ( (double)aSourceSizePixel.Height* ( aSize100thMM.Height - aGraphicCropLogic.Bottom ) ) / aSize100thMM.Height );
+
+ // first calculating new SourceSizePixel by removing the cropped area
+ aSourceSizePixel.Width = aGraphicCropPixel.Right - aGraphicCropPixel.Left;
+ aSourceSizePixel.Height= aGraphicCropPixel.Bottom - aGraphicCropPixel.Top;
+ }
+ else
+ {
+ bRemoveCropArea = sal_False;
+ }
+ }
+ if ( ( aSourceSizePixel.Width > 0 ) && ( aSourceSizePixel.Height > 0 ) )
+ {
+ OUString aDestMimeType( RTL_CONSTASCII_USTRINGPARAM( "image/png" ) );
+ if ( rGraphicSettings.mbJPEGCompression && !bTransparent && !bAlpha && !bAnimated )
+ {
+ aDestMimeType = OUString( RTL_CONSTASCII_USTRINGPARAM( "image/jpeg" ) );
+// if( aSourceMimeType != aDestMimeType )
+ bNeedsOptimizing = sal_True;
+ }
+ if ( bRemoveCropArea )
+ aDestSizePixel = aSourceSizePixel;
+ if ( rGraphicSettings.mnImageResolution && aLogicalSize.Width && aLogicalSize.Height )
+ {
+ const double fSourceDPIX = ((double)aSourceSizePixel.Width / ((double)aLogicalSize.Width / 2540.0 ));
+ const double fSourceDPIY = ((double)aSourceSizePixel.Height/ ((double)aLogicalSize.Height/ 2540.0 ));
+
+ // check, if the bitmap DPI exceeds the maximum DPI
+ if( ( fSourceDPIX > rGraphicSettings.mnImageResolution ) || ( fSourceDPIY > rGraphicSettings.mnImageResolution ) )
+ {
+ const double fNewSizePixelX = ((double)aDestSizePixel.Width * rGraphicSettings.mnImageResolution ) / fSourceDPIX;
+ const double fNewSizePixelY = ((double)aDestSizePixel.Height* rGraphicSettings.mnImageResolution ) / fSourceDPIY;
+
+ aDestSizePixel = awt::Size( (sal_Int32)fNewSizePixelX, (sal_Int32)fNewSizePixelY );
+ bNeedsOptimizing = sal_True;
+ }
+ }
+ if ( bNeedsOptimizing && aDestSizePixel.Width && aDestSizePixel.Height )
+ {
+ Reference< XStream > xTempFile( rxMSF->getServiceManager()->createInstanceWithContext( OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.io.TempFile")), rxMSF ), UNO_QUERY_THROW );
+ Reference< XOutputStream > xOutputStream( xTempFile->getOutputStream() );
+ Reference< XGraphicProvider > xGraphicProvider( rxMSF->getServiceManager()->createInstanceWithContext( OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.graphic.GraphicProvider")), rxMSF ), UNO_QUERY_THROW );
+
+ ImpCompressGraphic( xGraphicProvider, xGraphic, xOutputStream, aDestMimeType, aLogicalSize, rGraphicSettings.mnJPEGQuality, rGraphicSettings.mnImageResolution, bRemoveCropArea, aGraphicCropLogic );
+ Reference< XInputStream > xInputStream( xTempFile->getInputStream() );
+ Reference< XSeekable > xSeekable( xInputStream, UNO_QUERY_THROW );
+ xSeekable->seek( 0 );
+ Sequence< PropertyValue > aArgs( 1 );
+ aArgs[ 0 ].Name = TKGet( TK_InputStream );
+ aArgs[ 0 ].Value <<= xInputStream;
+ xNewGraphic = xGraphicProvider->queryGraphic( aArgs );
+ }
+ }
+ }
+ }
+ }
+ else // this is a metafile
+ {
+ rtl::OUString aDestMimeType( aSourceMimeType );
+ Reference< XStream > xTempFile( rxMSF->getServiceManager()->createInstanceWithContext( OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.io.TempFile")), rxMSF ), UNO_QUERY_THROW );
+ Reference< XOutputStream > xOutputStream( xTempFile->getOutputStream() );
+ Reference< XGraphicProvider > xGraphicProvider( rxMSF->getServiceManager()->createInstanceWithContext( OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.graphic.GraphicProvider")), rxMSF ), UNO_QUERY_THROW );
+ ImpCompressGraphic( xGraphicProvider, xGraphic, xOutputStream, aDestMimeType, aLogicalSize, rGraphicSettings.mnJPEGQuality, rGraphicSettings.mnImageResolution, sal_False, aGraphicCropLogic );
+ Reference< XInputStream > xInputStream( xTempFile->getInputStream() );
+ Reference< XSeekable > xSeekable( xInputStream, UNO_QUERY_THROW );
+ xSeekable->seek( 0 );
+ Sequence< PropertyValue > aArgs( 1 );
+ aArgs[ 0 ].Name = TKGet( TK_InputStream );
+ aArgs[ 0 ].Value <<= xInputStream;
+ xNewGraphic = xGraphicProvider->queryGraphic( aArgs );
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ }
+ return xNewGraphic;
+}
+
+void CompressGraphics( ImpOptimizer& rOptimizer, const Reference< XComponentContext >& rxMSF, const GraphicSettings& rGraphicSettings,
+ std::vector< GraphicCollector::GraphicEntity >& rGraphicList )
+{
+ try
+ {
+ std::vector< GraphicCollector::GraphicEntity >::iterator aGraphicIter( rGraphicList.begin() );
+ std::vector< GraphicCollector::GraphicEntity >::iterator aGraphicIEnd( rGraphicList.end() );
+ double i = 0;
+ while( aGraphicIter != aGraphicIEnd )
+ {
+ i++;
+ sal_Int32 nProgress = static_cast< sal_Int32 >( 40.0 * ( i / static_cast< double >( rGraphicList.size() ) ) ) + 50;
+ rOptimizer.SetStatusValue( TK_Progress, Any( static_cast< sal_Int32 >( nProgress ) ) );
+ rOptimizer.DispatchStatus();
+
+ if ( aGraphicIter->maUser.size() )
+ {
+ GraphicSettings aGraphicSettings( rGraphicSettings );
+ aGraphicSettings.mbRemoveCropArea = aGraphicIter->mbRemoveCropArea;
+
+ Reference< XGraphic > xGraphic;
+ if ( aGraphicIter->maUser[ 0 ].mbFillBitmap && aGraphicIter->maUser[ 0 ].mxPropertySet.is() )
+ {
+ Reference< XBitmap > xFillBitmap;
+ if ( aGraphicIter->maUser[ 0 ].mxPropertySet->getPropertyValue( TKGet( TK_FillBitmap ) ) >>= xFillBitmap )
+ xGraphic = Reference< XGraphic >( xFillBitmap, UNO_QUERY_THROW );
+ }
+ else if ( aGraphicIter->maUser[ 0 ].mxShape.is() )
+ {
+ Reference< XPropertySet > xShapePropertySet( aGraphicIter->maUser[ 0 ].mxShape, UNO_QUERY_THROW );
+ xShapePropertySet->getPropertyValue( TKGet( TK_Graphic ) ) >>= xGraphic;
+ }
+ if ( xGraphic.is() )
+ {
+ Reference< XPropertySet > xNewGraphicPropertySet( xGraphic, UNO_QUERY_THROW );
+ awt::Size aSize100thMM( GraphicCollector::GetOriginalSize( rxMSF, xGraphic ) );
+ Reference< XGraphic > xNewGraphic( ImpCompressGraphic( rxMSF, xGraphic, aGraphicIter->maLogicalSize, aGraphicIter->maGraphicCropLogic, aGraphicSettings ) );
+ if ( xNewGraphic.is() )
+ {
+ // applying graphic to each user
+ std::vector< GraphicCollector::GraphicUser >::iterator aGraphicUserIter( aGraphicIter->maUser.begin() );
+ while( aGraphicUserIter != aGraphicIter->maUser.end() )
+ {
+ if ( aGraphicUserIter->mxShape.is() )
+ {
+ rtl::OUString sEmptyGraphicURL;
+ Reference< XPropertySet > xShapePropertySet( aGraphicUserIter->mxShape, UNO_QUERY_THROW );
+ xShapePropertySet->setPropertyValue( TKGet( TK_GraphicURL ), Any( sEmptyGraphicURL ) );
+ xShapePropertySet->setPropertyValue( TKGet( TK_Graphic ), Any( xNewGraphic ) );
+
+ if ( aGraphicUserIter->maGraphicCropLogic.Left || aGraphicUserIter->maGraphicCropLogic.Top
+ || aGraphicUserIter->maGraphicCropLogic.Right || aGraphicUserIter->maGraphicCropLogic.Bottom )
+ { // removing crop area was not possible or should't been applied
+ text::GraphicCrop aGraphicCropLogic( 0, 0, 0, 0 );
+ if ( !aGraphicSettings.mbRemoveCropArea )
+ {
+ awt::Size aNewSize( GraphicCollector::GetOriginalSize( rxMSF, xNewGraphic ) );
+ aGraphicCropLogic.Left = (sal_Int32)((double)aGraphicUserIter->maGraphicCropLogic.Left * ((double)aNewSize.Width / (double)aSize100thMM.Width));
+ aGraphicCropLogic.Top = (sal_Int32)((double)aGraphicUserIter->maGraphicCropLogic.Top * ((double)aNewSize.Height / (double)aSize100thMM.Height));
+ aGraphicCropLogic.Right = (sal_Int32)((double)aGraphicUserIter->maGraphicCropLogic.Right * ((double)aNewSize.Width / (double)aSize100thMM.Width));
+ aGraphicCropLogic.Bottom = (sal_Int32)((double)aGraphicUserIter->maGraphicCropLogic.Bottom * ((double)aNewSize.Height / (double)aSize100thMM.Height));
+ }
+ xShapePropertySet->setPropertyValue( TKGet( TK_GraphicCrop ), Any( aGraphicCropLogic ) );
+ }
+ }
+ else if ( aGraphicUserIter->mxPropertySet.is() )
+ {
+ Reference< XBitmap > xFillBitmap( xNewGraphic, UNO_QUERY );
+ if ( xFillBitmap.is() )
+ {
+ awt::Size aSize;
+ sal_Bool bLogicalSize;
+
+ Reference< XPropertySet >& rxPropertySet( aGraphicUserIter->mxPropertySet );
+ rxPropertySet->setPropertyValue( TKGet( TK_FillBitmap ), Any( xFillBitmap ) );
+ if ( ( rxPropertySet->getPropertyValue( TKGet( TK_FillBitmapLogicalSize ) ) >>= bLogicalSize )
+ && ( rxPropertySet->getPropertyValue( TKGet( TK_FillBitmapSizeX ) ) >>= aSize.Width )
+ && ( rxPropertySet->getPropertyValue( TKGet( TK_FillBitmapSizeY ) ) >>= aSize.Height ) )
+ {
+ if ( !aSize.Width || !aSize.Height )
+ {
+ rxPropertySet->setPropertyValue( TKGet( TK_FillBitmapLogicalSize ), Any( sal_True ) );
+ rxPropertySet->setPropertyValue( TKGet( TK_FillBitmapSizeX ), Any( aGraphicUserIter->maLogicalSize.Width ) );
+ rxPropertySet->setPropertyValue( TKGet( TK_FillBitmapSizeY ), Any( aGraphicUserIter->maLogicalSize.Height ) );
+ }
+ }
+ if ( aGraphicUserIter->mxPagePropertySet.is() )
+ aGraphicUserIter->mxPagePropertySet->setPropertyValue( TKGet( TK_Background ), Any( rxPropertySet ) );
+ }
+ }
+ ++aGraphicUserIter;
+ }
+ }
+ }
+ }
+ ++aGraphicIter;
+ }
+ }
+ catch ( Exception& )
+ {
+ }
+}
+
+// ----------------
+// - ImpOptimizer -
+// ----------------
+
+ImpOptimizer::ImpOptimizer( const Reference< XComponentContext >& rxMSF, const Reference< XModel >& rxModel ) :
+ mxMSF ( rxMSF ),
+ mxModel ( rxModel ),
+ mbJPEGCompression ( sal_False ),
+ mnJPEGQuality ( 90 ),
+ mbRemoveCropArea ( sal_False ),
+ mnImageResolution ( 0 ),
+ mbEmbedLinkedGraphics ( sal_True ),
+ mbOLEOptimization ( sal_False ),
+ mnOLEOptimizationType ( 0 ),
+ mbDeleteUnusedMasterPages ( sal_False ),
+ mbDeleteHiddenSlides ( sal_False ),
+ mbDeleteNotesPages ( sal_False ),
+ mbOpenNewDocument ( sal_True )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+ImpOptimizer::~ImpOptimizer()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void ImpOptimizer::DispatchStatus()
+{
+ if ( mxStatusDispatcher.is() )
+ {
+ URL aURL;
+ aURL.Protocol = OUString( RTL_CONSTASCII_USTRINGPARAM( "vnd.com.sun.star.comp.SunPresentationMinimizer:" ) );
+ aURL.Path = OUString( RTL_CONSTASCII_USTRINGPARAM( "statusupdate" ) );
+ mxStatusDispatcher->dispatch( aURL, GetStatusSequence() );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool ImpOptimizer::Optimize()
+{
+
+ if ( maCustomShowName.getLength() )
+ ImpExtractCustomShow( mxModel, maCustomShowName );
+
+ if ( mbDeleteUnusedMasterPages )
+ {
+ SetStatusValue( TK_Progress, Any( static_cast< sal_Int32 >( 40 ) ) );
+ SetStatusValue( TK_Status, Any( TKGet( STR_DELETING_SLIDES ) ) );
+ DispatchStatus();
+ ImpDeleteUnusedMasterPages( mxModel );
+ }
+
+ if ( mbDeleteHiddenSlides )
+ {
+ SetStatusValue( TK_Progress, Any( static_cast< sal_Int32 >( 40 ) ) );
+ SetStatusValue( TK_Status, Any( TKGet( STR_DELETING_SLIDES ) ) );
+ DispatchStatus();
+ ImpDeleteHiddenSlides( mxModel );
+ }
+
+ if ( mbDeleteNotesPages )
+ {
+ SetStatusValue( TK_Status, Any( TKGet( STR_DELETING_SLIDES ) ) );
+ DispatchStatus();
+ ImpDeleteNotesPages( mxModel );
+ }
+
+ if ( mbOLEOptimization )
+ {
+ SetStatusValue( TK_Progress, Any( static_cast< sal_Int32 >( 45 ) ) );
+ SetStatusValue( TK_Status, Any( TKGet( STR_CREATING_OLE_REPLACEMENTS ) ) );
+ DispatchStatus();
+ ImpConvertOLE( mxModel, mnOLEOptimizationType );
+ }
+
+ if ( mbJPEGCompression || mbRemoveCropArea || mnImageResolution )
+ {
+ SetStatusValue( TK_Progress, Any( static_cast< sal_Int32 >( 50 ) ) );
+ SetStatusValue( TK_Status, Any( TKGet( STR_OPTIMIZING_GRAPHICS ) ) );
+ DispatchStatus();
+
+ std::vector< GraphicCollector::GraphicEntity > aGraphicList;
+ GraphicSettings aGraphicSettings( mbJPEGCompression, mnJPEGQuality, mbRemoveCropArea, mnImageResolution, mbEmbedLinkedGraphics );
+ GraphicCollector::CollectGraphics( mxMSF, mxModel, aGraphicSettings, aGraphicList );
+ CompressGraphics( *this, mxMSF, aGraphicSettings, aGraphicList );
+ }
+ SetStatusValue( TK_Progress, Any( static_cast< sal_Int32 >( 100 ) ) );
+ DispatchStatus();
+ return sal_True;
+}
+
+static void DispatchURL( Reference< XComponentContext > xMSF, OUString sURL, Reference< XFrame > xFrame )
+{
+ try
+ {
+ Reference< XURLTransformer > xURLTransformer( xMSF->getServiceManager()->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.URLTransformer" ) ), xMSF ), UNO_QUERY_THROW );
+ util::URL aUrl;
+ aUrl.Complete = sURL;
+ xURLTransformer->parseStrict( aUrl );
+ Sequence< PropertyValue > aArgs;
+ Reference< XDispatchProvider > xDispatchProvider( xFrame, UNO_QUERY_THROW );
+ Reference< XDispatch > xDispatch = xDispatchProvider->queryDispatch( aUrl, OUString(), 0 ); // "_self"
+ if ( xDispatch.is() )
+ xDispatch->dispatch( aUrl, aArgs );
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool ImpOptimizer::Optimize( const Sequence< PropertyValue >& rArguments )
+{
+ sal_Bool bRet = sal_True;
+
+ if ( mxModel.is() )
+ {
+ sal_Int64 nEstimatedFileSize = 0;
+ SetStatusValue( TK_Progress, Any( static_cast< sal_Int32 >( 0 ) ) );
+ DispatchStatus();
+
+ int i, nICount;
+ for ( i = 0, nICount = rArguments.getLength(); i < nICount; i++ )
+ {
+ switch( TKGet( rArguments[ i ].Name ) )
+ {
+ case TK_StatusDispatcher : rArguments[ i ].Value >>= mxStatusDispatcher; break;
+ case TK_InformationDialog: rArguments[ i ].Value >>= mxInformationDialog; break;
+ case TK_Settings :
+ {
+ com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > aSettings;
+ int j, nJCount;
+ rArguments[ i ].Value >>= aSettings;
+ for ( j = 0, nJCount = aSettings.getLength(); j < nJCount; j++ )
+ {
+ switch( TKGet( aSettings[ j ].Name ) )
+ {
+ case TK_JPEGCompression : aSettings[ j ].Value >>= mbJPEGCompression; break;
+ case TK_JPEGQuality : aSettings[ j ].Value >>= mnJPEGQuality; break;
+ case TK_RemoveCropArea : aSettings[ j ].Value >>= mbRemoveCropArea; break;
+ case TK_ImageResolution : aSettings[ j ].Value >>= mnImageResolution; break;
+ case TK_EmbedLinkedGraphics : aSettings[ j ].Value >>= mbEmbedLinkedGraphics; break;
+ case TK_OLEOptimization : aSettings[ j ].Value >>= mbOLEOptimization; break;
+ case TK_OLEOptimizationType : aSettings[ j ].Value >>= mnOLEOptimizationType; break;
+ case TK_CustomShowName : aSettings[ j ].Value >>= maCustomShowName; break;
+ case TK_DeleteUnusedMasterPages : aSettings[ j ].Value >>= mbDeleteUnusedMasterPages; break;
+ case TK_DeleteHiddenSlides : aSettings[ j ].Value >>= mbDeleteHiddenSlides; break;
+ case TK_DeleteNotesPages : aSettings[ j ].Value >>= mbDeleteNotesPages; break;
+ case TK_SaveAsURL : aSettings[ j ].Value >>= maSaveAsURL; break;
+ case TK_FilterName : aSettings[ j ].Value >>= maFilterName; break;
+ case TK_OpenNewDocument : aSettings[ j ].Value >>= mbOpenNewDocument; break;
+ case TK_EstimatedFileSize : aSettings[ j ].Value >>= nEstimatedFileSize; break;
+ default: break;
+ }
+ }
+ }
+ break;
+ default: break;
+ }
+ }
+
+ sal_Int64 nSourceSize = 0;
+ sal_Int64 nDestSize = 0;
+
+ Reference< XFrame > xSelf;
+ if ( maSaveAsURL.getLength() )
+ {
+
+ SetStatusValue( TK_Progress, Any( static_cast< sal_Int32 >( 10 ) ) );
+ SetStatusValue( TK_Status, Any( TKGet( STR_DUPLICATING_PRESENTATION ) ) );
+ DispatchStatus();
+
+ Reference< XStorable >xStorable( mxModel, UNO_QUERY );
+ if ( xStorable.is() )
+ {
+ if ( xStorable->hasLocation() )
+ nSourceSize = PPPOptimizer::GetFileSize( xStorable->getLocation() );
+
+ Sequence< PropertyValue > aArguments;
+ if ( maFilterName.getLength() )
+ {
+ int nLength = aArguments.getLength();
+ aArguments.realloc( nLength + 1 );
+ aArguments[ nLength ].Name = TKGet( TK_FilterName );
+ aArguments[ nLength ].Value <<= maFilterName;
+ }
+ xStorable->storeToURL( maSaveAsURL, aArguments );
+ if ( !nSourceSize )
+ nSourceSize = PPPOptimizer::GetFileSize( maSaveAsURL );
+
+ SetStatusValue( TK_Progress, Any( static_cast< sal_Int32 >( 30 ) ) );
+ SetStatusValue( TK_Status, Any( TKGet( STR_DUPLICATING_PRESENTATION ) ) );
+ DispatchStatus();
+
+ Reference< XDesktop > xDesktop( mxMSF->getServiceManager()->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ), mxMSF ), UNO_QUERY );
+ Reference< XFrame > xFrame( xDesktop, UNO_QUERY );
+ xSelf = xFrame->findFrame( TKGet( TK__blank ), FrameSearchFlag::CREATE );
+ Reference< XComponentLoader > xComponentLoader( xSelf, UNO_QUERY );
+
+ Sequence< PropertyValue > aLoadProps( 1 );
+ aLoadProps[ 0 ].Name = TKGet( TK_Hidden );
+ aLoadProps[ 0 ].Value <<= (sal_Bool)( sal_True );
+ mxModel = Reference< XModel >( xComponentLoader->loadComponentFromURL(
+ maSaveAsURL, TKGet( TK__self ), 0, aLoadProps ), UNO_QUERY );
+ }
+ }
+
+ // check if the document is ReadOnly -> error
+ Reference< XStorable > xStorable( mxModel, UNO_QUERY );
+ if ( xStorable.is() && !xStorable->isReadonly() )
+ {
+ mxModel->lockControllers();
+ bRet = Optimize();
+ mxModel->unlockControllers();
+
+ // clearing undo stack:
+ Reference< XFrame > xFrame( xSelf.is() ? xSelf : mxInformationDialog );
+ if ( xFrame.is() )
+ {
+ const OUString sSlot( RTL_CONSTASCII_USTRINGPARAM( "slot:27115" ) );
+ DispatchURL( mxMSF, sSlot, xFrame );
+ }
+ }
+
+ if ( maSaveAsURL.getLength() )
+ {
+ if ( xStorable.is() )
+ {
+ xStorable->store();
+ nDestSize = PPPOptimizer::GetFileSize( maSaveAsURL );
+ }
+ }
+
+ if ( mxInformationDialog.is() )
+ {
+ InformationDialog aInformationDialog( mxMSF, mxInformationDialog, maSaveAsURL, mbOpenNewDocument, nSourceSize, nDestSize, nEstimatedFileSize );
+ aInformationDialog.execute();
+ SetStatusValue( TK_OpenNewDocument, Any( mbOpenNewDocument ) );
+ DispatchStatus();
+ }
+
+ if ( maSaveAsURL.getLength() )
+ {
+ if ( mbOpenNewDocument && xSelf.is() )
+ {
+ Reference< awt::XWindow > xContainerWindow( xSelf->getContainerWindow() );
+ xContainerWindow->setVisible( sal_True );
+ }
+ else
+ {
+ Reference< XComponent > xComponent( mxModel, UNO_QUERY );
+ xComponent->dispose();
+ }
+ }
+ if ( nSourceSize && nDestSize )
+ {
+ SetStatusValue( TK_FileSizeSource, Any( nSourceSize ) );
+ SetStatusValue( TK_FileSizeDestination, Any( nDestSize ) );
+ DispatchStatus();
+ }
+ }
+ else
+ bRet = sal_False;
+ return bRet;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/impoptimizer.hxx b/sdext/source/minimizer/impoptimizer.hxx
new file mode 100644
index 000000000000..ac3b4e8c36e4
--- /dev/null
+++ b/sdext/source/minimizer/impoptimizer.hxx
@@ -0,0 +1,88 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef IMPOPTIMIZER_HXX
+#define IMPOPTIMIZER_HXX
+
+#include "pppoptimizertoken.hxx"
+#include "optimizationstats.hxx"
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/task/XStatusIndicator.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+
+class Point;
+class Size;
+
+// -------------
+// - PDFExport -
+// -------------
+
+class ImpOptimizer : public OptimizationStats
+{
+private:
+
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxMSF;
+ com::sun::star::uno::Reference< com::sun::star::frame::XModel > mxModel;
+ com::sun::star::uno::Reference< com::sun::star::frame::XDispatch > mxStatusDispatcher;
+
+ sal_Bool mbJPEGCompression;
+ sal_Int32 mnJPEGQuality;
+ sal_Bool mbRemoveCropArea;
+ sal_Int32 mnImageResolution;
+ sal_Bool mbEmbedLinkedGraphics;
+ sal_Bool mbOLEOptimization;
+ sal_Int32 mnOLEOptimizationType;
+ rtl::OUString maCustomShowName;
+ sal_Bool mbDeleteUnusedMasterPages;
+ sal_Bool mbDeleteHiddenSlides;
+ sal_Bool mbDeleteNotesPages;
+ rtl::OUString maSaveAsURL;
+ rtl::OUString maFilterName;
+ sal_Bool mbOpenNewDocument;
+
+ com::sun::star::uno::Reference< com::sun::star::frame::XFrame > mxInformationDialog;
+
+ sal_Bool Optimize();
+
+public:
+
+ ImpOptimizer( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rXFactory,
+ const com::sun::star::uno::Reference< com::sun::star::frame::XModel >& rxModel );
+ ~ImpOptimizer();
+
+ sal_Bool Optimize( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rArguments );
+ void DispatchStatus();
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/informationdialog.cxx b/sdext/source/minimizer/informationdialog.cxx
new file mode 100644
index 000000000000..946b90f5298c
--- /dev/null
+++ b/sdext/source/minimizer/informationdialog.cxx
@@ -0,0 +1,413 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "informationdialog.hxx"
+#include "optimizationstats.hxx"
+#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
+#include <com/sun/star/graphic/XGraphicProvider.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <rtl/ustrbuf.hxx>
+#include <sal/macros.h>
+#include "com/sun/star/util/URL.hpp"
+#include "com/sun/star/util/XURLTransformer.hpp"
+
+#define DIALOG_WIDTH 240
+#define DIALOG_HEIGHT 80
+#define PAGE_POS_X 35
+#define PAGE_WIDTH ( DIALOG_WIDTH - PAGE_POS_X ) - 6
+
+
+// ---------------------
+// - INFORMATIONDIALOG -
+// ---------------------
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::io;
+using namespace ::com::sun::star::ui;
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::util;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::script;
+using namespace ::com::sun::star::container;
+
+
+
+// -----------------------------------------------------------------------------
+
+rtl::OUString InsertFixedText( InformationDialog& rInformationDialog, const rtl::OUString& rControlName, const OUString& rLabel,
+ sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight, sal_Bool bMultiLine, sal_Int16 nTabIndex )
+{
+ OUString pNames[] = {
+ TKGet( TK_Height ),
+ TKGet( TK_Label ),
+ TKGet( TK_MultiLine ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Step ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( nHeight ),
+ Any( rLabel ),
+ Any( bMultiLine ),
+ Any( nXPos ),
+ Any( nYPos ),
+ Any( (sal_Int16)0 ),
+ Any( nTabIndex ),
+ Any( nWidth ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ rInformationDialog.insertFixedText( rControlName, aNames, aValues );
+ return rControlName;
+}
+
+rtl::OUString InsertImage( InformationDialog& rInformationDialog, const OUString& rControlName, const OUString& rURL,
+ sal_Int32 nPosX, sal_Int32 nPosY, sal_Int32 nWidth, sal_Int32 nHeight )
+{
+ OUString pNames[] = {
+ TKGet( TK_Border ),
+ TKGet( TK_Height ),
+ TKGet( TK_ImageURL ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_ScaleImage ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( sal_Int16( 0 ) ),
+ Any( nHeight ),
+ Any( rURL ),
+ Any( nPosX ),
+ Any( nPosY ),
+ Any( sal_True ),
+ Any( nWidth ) };
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ rInformationDialog.insertImage( rControlName, aNames, aValues );
+ return rControlName;
+}
+
+rtl::OUString InsertCheckBox( InformationDialog& rInformationDialog, const OUString& rControlName,
+ const Reference< XItemListener > xItemListener, const OUString& rLabel,
+ sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int16 nTabIndex )
+{
+ OUString pNames[] = {
+ TKGet( TK_Enabled ),
+ TKGet( TK_Height ),
+ TKGet( TK_Label ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Step ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( sal_True ),
+ Any( nHeight ),
+ Any( rLabel ),
+ Any( nXPos ),
+ Any( nYPos ),
+ Any( (sal_Int16)0 ),
+ Any( nTabIndex ),
+ Any( nWidth ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ Reference< XCheckBox > xCheckBox( rInformationDialog.insertCheckBox( rControlName, aNames, aValues ) );
+ if ( xItemListener.is() )
+ xCheckBox->addItemListener( xItemListener );
+ return rControlName;
+}
+
+rtl::OUString InsertButton( InformationDialog& rInformationDialog, const OUString& rControlName, Reference< XActionListener >& xActionListener,
+ sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int16 nTabIndex, PPPOptimizerTokenEnum nResID )
+{
+ OUString pNames[] = {
+ TKGet( TK_Enabled ),
+ TKGet( TK_Height ),
+ TKGet( TK_Label ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_PushButtonType ),
+ TKGet( TK_Step ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( sal_True ),
+ Any( nHeight ),
+ Any( rInformationDialog.getString( nResID ) ),
+ Any( nXPos ),
+ Any( nYPos ),
+ Any( static_cast< sal_Int16 >( PushButtonType_OK ) ),
+ Any( (sal_Int16)0 ),
+ Any( nTabIndex ),
+ Any( nWidth ) };
+
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ rInformationDialog.insertButton( rControlName, xActionListener, aNames, aValues );
+ return rControlName;
+}
+
+
+static OUString ImpValueOfInMB( const sal_Int64& rVal )
+{
+ double fVal( static_cast<double>( rVal ) );
+ fVal /= ( 1 << 20 );
+ fVal += 0.05;
+ rtl::OUStringBuffer aVal( OUString::valueOf( fVal ) );
+ sal_Int32 nX( OUString( aVal.getStr() ).indexOf( '.', 0 ) );
+ if ( nX > 0 )
+ aVal.setLength( nX + 2 );
+ return aVal.makeStringAndClear();
+}
+
+OUString InformationDialog::ImpGetStandardImage( const OUString& sPrivateURL )
+{
+ rtl::OUString sURL;
+ try
+ {
+ mxTempFile = Reference< XStream >( mxMSF->getServiceManager()->createInstanceWithContext( OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.io.TempFile")), mxMSF ), UNO_QUERY_THROW );
+ Reference< XPropertySet > xPropSet( mxTempFile, UNO_QUERY );
+ Reference< XOutputStream > xOutputStream( mxTempFile->getOutputStream() );
+ if ( xOutputStream.is() && xPropSet.is() )
+ {
+ Reference< graphic::XGraphicProvider > xGraphicProvider( mxMSF->getServiceManager()->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.graphic.GraphicProvider")), mxMSF ), UNO_QUERY_THROW );
+ Sequence< PropertyValue > aArgs( 1 );
+ aArgs[ 0 ].Name = OUString(RTL_CONSTASCII_USTRINGPARAM("URL"));
+ aArgs[ 0 ].Value <<= sPrivateURL;
+ Reference< graphic::XGraphic > xGraphic( xGraphicProvider->queryGraphic( aArgs ) );
+ if ( xGraphic.is() )
+ {
+ OUString aDestMimeType( RTL_CONSTASCII_USTRINGPARAM( "image/png" ) );
+ Sequence< PropertyValue > aArgs2( 2 );
+ aArgs2[ 0 ].Name = TKGet( TK_MimeType ); // the GraphicProvider is using "MimeType", the GraphicExporter "MediaType"...
+ aArgs2[ 0 ].Value <<= aDestMimeType;
+ aArgs2[ 1 ].Name = TKGet( TK_OutputStream );
+ aArgs2[ 1 ].Value <<= xOutputStream;
+ xGraphicProvider->storeGraphic( xGraphic, aArgs2 );
+ }
+ xPropSet->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("Uri")) ) >>= sURL;
+ }
+ }
+ catch( Exception& )
+ {
+ }
+ return sURL;
+}
+
+void InformationDialog::InitDialog()
+{
+ sal_Int32 nDialogHeight = DIALOG_HEIGHT;
+ if ( !maSaveAsURL.getLength() )
+ nDialogHeight -= 22;
+
+ // setting the dialog properties
+ OUString pNames[] = {
+ TKGet( TK_Closeable ),
+ TKGet( TK_Height ),
+ TKGet( TK_Moveable ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Title ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( sal_True ),
+ Any( nDialogHeight ),
+ Any( sal_True ),
+ Any( sal_Int32( 245 ) ),
+ Any( sal_Int32( 115 ) ),
+ Any( getString( STR_SUN_OPTIMIZATION_WIZARD2 ) ),
+ Any( sal_Int32( DIALOG_WIDTH ) ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ mxDialogModelMultiPropertySet->setPropertyValues( aNames, aValues );
+
+ sal_Int64 nSource = mnSourceSize;
+ sal_Int64 nDest = mnDestSize;
+
+ PPPOptimizerTokenEnum eInfoString( STR_INFO_1 );
+ if ( mnSourceSize )
+ {
+ if ( mnDestSize )
+ eInfoString = STR_INFO_1;
+ else
+ {
+ eInfoString = STR_INFO_2;
+ nDest = mnApproxSize;
+ }
+ }
+ else if ( mnDestSize )
+ eInfoString = STR_INFO_3;
+ else
+ {
+ eInfoString = STR_INFO_4;
+ nDest = mnApproxSize;
+ }
+
+ rtl::OUString aTitle;
+ if ( maSaveAsURL.getLength() )
+ {
+ Reference< XURLTransformer > xURLTransformer( mxMSF->getServiceManager()->createInstanceWithContext(
+ OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.URLTransformer" ) ), mxMSF ), UNO_QUERY );
+ if ( xURLTransformer.is() )
+ {
+ util::URL aURL, aPresentationURL;
+ aURL.Complete = maSaveAsURL;
+ xURLTransformer->parseSmart( aURL, rtl::OUString() );
+
+ const OUString sFileProtocol( RTL_CONSTASCII_USTRINGPARAM( "file:///" ) );
+ aPresentationURL.Complete = sFileProtocol.concat( aURL.Name );
+ aTitle = xURLTransformer->getPresentation( aPresentationURL, sal_False );
+
+ if ( aTitle.match( sFileProtocol, 0 ) )
+ aTitle = aTitle.replaceAt( 0, sFileProtocol.getLength(), rtl::OUString() );
+ }
+ }
+
+ OUString aInfoString( getString( eInfoString ) );
+ const OUString aOldSizePlaceholder( RTL_CONSTASCII_USTRINGPARAM( "%OLDFILESIZE" ) );
+ const OUString aNewSizePlaceholder( RTL_CONSTASCII_USTRINGPARAM( "%NEWFILESIZE" ) );
+ const OUString aTitlePlaceholder( aTitle.getLength() ? OUString(RTL_CONSTASCII_USTRINGPARAM("%TITLE" ))
+ : OUString(RTL_CONSTASCII_USTRINGPARAM("'%TITLE'")) );
+
+ sal_Int32 i = aInfoString.indexOf( aOldSizePlaceholder, 0 );
+ if ( i >= 0 )
+ aInfoString = aInfoString.replaceAt( i, aOldSizePlaceholder.getLength(), ImpValueOfInMB( nSource ) );
+
+ sal_Int32 j = aInfoString.indexOf( aNewSizePlaceholder, 0 );
+ if ( j >= 0 )
+ aInfoString = aInfoString.replaceAt( j, aNewSizePlaceholder.getLength(), ImpValueOfInMB( nDest ) );
+
+ sal_Int32 k = aInfoString.indexOf( aTitlePlaceholder, 0 );
+ if ( k >= 0 )
+ aInfoString = aInfoString.replaceAt( k, aTitlePlaceholder.getLength(), aTitle );
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XItemListener > xItemListener;
+ InsertImage( *this, rtl::OUString( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("aboutimage")) ), ImpGetStandardImage( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:standardimage/query")) ), 5, 5, 25, 25 );
+ InsertFixedText( *this, rtl::OUString( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("fixedtext")) ), aInfoString, PAGE_POS_X, 6, PAGE_WIDTH, 24, sal_True, 0 );
+ if ( maSaveAsURL.getLength() )
+ InsertCheckBox( *this, TKGet( TK_OpenNewDocument ), xItemListener, getString( STR_AUTOMATICALLY_OPEN ), PAGE_POS_X, 42, PAGE_WIDTH, 8, 1 );
+ InsertButton( *this, rtl::OUString( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("button")) ), mxActionListener, DIALOG_WIDTH / 2 - 25, nDialogHeight - 20, 50, 14, 2, STR_OK );
+
+ sal_Bool bOpenNewDocument = mrbOpenNewDocument;
+ setControlProperty( TKGet( TK_OpenNewDocument ), TKGet( TK_State ), Any( (sal_Int16)bOpenNewDocument ) );
+}
+
+// -----------------------------------------------------------------------------
+
+InformationDialog::InformationDialog( const Reference< XComponentContext > &rxMSF, Reference< XFrame >& rxFrame, const rtl::OUString& rSaveAsURL, sal_Bool& rbOpenNewDocument, const sal_Int64& rSourceSize, const sal_Int64& rDestSize, const sal_Int64& rApproxSize ) :
+ UnoDialog( rxMSF, rxFrame ),
+ ConfigurationAccess( rxMSF, NULL ),
+ mxMSF( rxMSF ),
+ mxFrame( rxFrame ),
+ mxActionListener( new OKActionListener( *this ) ),
+ mnSourceSize( rSourceSize ),
+ mnDestSize( rDestSize ),
+ mnApproxSize( rApproxSize ),
+ mrbOpenNewDocument( rbOpenNewDocument ),
+ maSaveAsURL( rSaveAsURL )
+{
+ Reference< XFrame > xFrame( mxController->getFrame() );
+ Reference< XWindow > xContainerWindow( xFrame->getContainerWindow() );
+ Reference< XWindowPeer > xWindowPeer( xContainerWindow, UNO_QUERY_THROW );
+ createWindowPeer( xWindowPeer );
+
+ InitDialog();
+}
+
+// -----------------------------------------------------------------------------
+
+InformationDialog::~InformationDialog()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool InformationDialog::execute()
+{
+ UnoDialog::execute();
+
+ if ( maSaveAsURL.getLength() )
+ {
+ sal_Int16 nInt16 = 0;
+ Any aAny( getControlProperty( TKGet( TK_OpenNewDocument ), TKGet( TK_State ) ) );
+ if ( aAny >>= nInt16 )
+ {
+ sal_Bool bOpenNewDocument = static_cast< sal_Bool >( nInt16 );
+ mrbOpenNewDocument = bOpenNewDocument;
+ }
+ }
+ return mbStatus;
+}
+
+// -----------------------------------------------------------------------------
+
+void OKActionListener::actionPerformed( const ActionEvent& rEvent )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+ if ( rEvent.ActionCommand == rtl::OUString( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("button")) ) )
+ {
+ mrInformationDialog.endExecute( sal_True );
+ }
+}
+void OKActionListener::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/informationdialog.hxx b/sdext/source/minimizer/informationdialog.hxx
new file mode 100644
index 000000000000..44d2d4c035be
--- /dev/null
+++ b/sdext/source/minimizer/informationdialog.hxx
@@ -0,0 +1,102 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INFORMATIONDIALOG_HXX
+#define INFORMATIONDIALOG_HXX
+#include <vector>
+#include "unodialog.hxx"
+#include "configurationaccess.hxx"
+#include "pppoptimizertoken.hxx"
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/awt/XItemListener.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/text/XTextRange.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/awt/XItemEventBroadcaster.hpp>
+#include <com/sun/star/frame/XStorable.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/awt/PushButtonType.hpp>
+#include <com/sun/star/io/XStream.hpp>
+
+// ---------------------
+// - InformationDialog -
+// ---------------------
+class InformationDialog : public UnoDialog, public ConfigurationAccess
+{
+public :
+
+ InformationDialog( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF,
+ com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rxFrame, const rtl::OUString& rSaveAsURL,
+ sal_Bool& bOpenNewDocument, const sal_Int64& nSourceSize, const sal_Int64& nDestSize, const sal_Int64& nApproxDest );
+ ~InformationDialog();
+
+ sal_Bool execute();
+
+private :
+
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >mxMSF;
+ com::sun::star::uno::Reference< com::sun::star::frame::XFrame > mxFrame;
+ com::sun::star::uno::Reference< com::sun::star::io::XStream > mxTempFile;
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XActionListener > mxActionListener;
+
+ rtl::OUString ImpGetStandardImage( const rtl::OUString& rPrivateURL );
+ void InitDialog();
+
+ sal_Int64 mnSourceSize;
+ sal_Int64 mnDestSize;
+ sal_Int64 mnApproxSize;
+ sal_Bool& mrbOpenNewDocument;
+ const rtl::OUString& maSaveAsURL;
+
+public :
+
+ com::sun::star::uno::Reference< com::sun::star::frame::XFrame>& GetFrame() { return mxFrame; };
+ const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& GetComponentContext() { return mxMSF; };
+};
+
+class OKActionListener : public ::cppu::WeakImplHelper1< com::sun::star::awt::XActionListener >
+{
+public:
+ OKActionListener( InformationDialog& rInformationDialog ) : mrInformationDialog( rInformationDialog ){};
+
+ virtual void SAL_CALL actionPerformed( const ::com::sun::star::awt::ActionEvent& Event ) throw ( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw ( com::sun::star::uno::RuntimeException);
+private:
+
+ InformationDialog& mrInformationDialog;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/makefile.mk b/sdext/source/minimizer/makefile.mk
new file mode 100644
index 000000000000..164f106c0c5d
--- /dev/null
+++ b/sdext/source/minimizer/makefile.mk
@@ -0,0 +1,148 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=sdext
+TARGET=SunPresentationMinimizer
+GEN_HID=FALSE
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings ----------------------------------
+.INCLUDE : settings.mk
+.IF "$(L10N_framework)"==""
+.INCLUDE : $(PRJ)$/source$/minimizer$/minimizer.pmk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# set in minimizer.pmk
+EXTENSION_ZIPNAME:=presentation-minimizer
+
+.IF "$(ENABLE_MINIMIZER)" != "YES"
+@all:
+ @echo "Presentation Minimizer build disabled."
+.ENDIF
+
+DLLPRE=
+
+# --- Files -------------------------------------
+
+SLOFILES= $(SLO)$/unodialog.obj \
+ $(SLO)$/optimizerdialog.obj \
+ $(SLO)$/optimizerdialogcontrols.obj \
+ $(SLO)$/configurationaccess.obj \
+ $(SLO)$/impoptimizer.obj \
+ $(SLO)$/pppoptimizer.obj \
+ $(SLO)$/pppoptimizeruno.obj \
+ $(SLO)$/pppoptimizertoken.obj \
+ $(SLO)$/pppoptimizerdialog.obj \
+ $(SLO)$/fileopendialog.obj \
+ $(SLO)$/optimizationstats.obj \
+ $(SLO)$/graphiccollector.obj \
+ $(SLO)$/pagecollector.obj \
+ $(SLO)$/informationdialog.obj
+
+# --- Library -----------------------------------
+
+SHL1TARGET= $(TARGET).uno
+
+SHL1STDLIBS= $(CPPUHELPERLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+SHL1DEPN=
+SHL1IMPLIB= i$(SHL1TARGET)
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+SHL1VERSIONMAP=$(SOLARENV)/src/reg-component.map
+SHL1RPATH= OXT
+DEF1NAME= $(SHL1TARGET)
+
+COMPONENT_XCU_REPLACEMENT=s/@MINIMIZEREXTENSIONPRODUCTNAME@/Presentation Minimizer/g
+
+COMPONENT_MERGED_XCU= \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/Addons.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/ProtocolHandler.xcu \
+ $(EXTENSIONDIR)$/registry$/data$/org$/openoffice$/Office$/extension$/SunPresentationMinimizer.xcu
+
+COMPONENT_FILES= \
+ $(EXTENSIONDIR)$/registry$/schema$/org$/openoffice$/Office$/extension$/SunPresentationMinimizer.xcs
+
+# native libraries
+COMPONENT_LIBRARIES= \
+ $(EXTENSIONDIR)$/SunPresentationMinimizer.uno$(DLLPOST)
+
+# rather freestyle or common to all?
+COMPONENT_BITMAPS= \
+ $(EXTENSIONDIR)$/bitmaps$/opt_16.png \
+ $(EXTENSIONDIR)$/bitmaps$/opt_26.png \
+ $(EXTENSIONDIR)$/bitmaps$/minimizepresi_80.png
+
+COMPONENT_IMAGES=\
+ $(EXTENSIONDIR)$/bitmaps$/extension_32.png
+
+# rather freestyle or common to all?
+COMPONENT_HELP= \
+ $(EXTENSIONDIR)$/help$/help_de.odt \
+ $(EXTENSIONDIR)$/help$/help_en-US.odt \
+ $(EXTENSIONDIR)$/help$/component.txt
+
+# make sure to add your custom files here
+EXTENSION_PACKDEPS=$(COMPONENT_BITMAPS) $(COMPONENT_IMAGES) $(COMPONENT_HELP)
+
+ZIP2TARGET= presentation_minimizer_develop
+.IF "$(WITH_LANG)"!=""
+ZIP2DIR= $(MISC)/$(EXTENSIONNAME)_in/merge
+.ELSE # "$(WITH_LANG)"!=""
+ZIP2DIR= registry/data
+.ENDIF # "$(WITH_LANG)"!=""
+ZIP2EXT= .zip
+ZIP2FLAGS=-r
+ZIP2LIST= \
+ org/openoffice/Office/Addons.xcu \
+ org/openoffice/Office/extension/*.xcu
+
+# --- Targets ----------------------------------
+
+.INCLUDE : extension_pre.mk
+
+.ENDIF # L10N_framework
+.INCLUDE : target.mk
+
+.IF "$(L10N_framework)"==""
+.INCLUDE : extension_post.mk
+
+$(COMPONENT_BITMAPS) : $(SOLARSRC)$/$(RSCDEFIMG)$/minimizer$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(COMPONENT_HELP) : help$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+.ENDIF # L10N_framework
diff --git a/sdext/source/minimizer/manifest.xml b/sdext/source/minimizer/manifest.xml
new file mode 100644
index 000000000000..eac189524f26
--- /dev/null
+++ b/sdext/source/minimizer/manifest.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=native"
+ manifest:full-path="SunPresentationMinimizer.unoSHARED_EXTENSION"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-schema"
+ manifest:full-path="registry/schema/org/openoffice/Office/extension/SunPresentationMinimizer.xcs"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="registry/data/org/openoffice/Office/Addons.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="registry/data/org/openoffice/Office/ProtocolHandler.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.package-bundle-description"
+ manifest:full-path="help/component.txt"/>
+</manifest:manifest>
diff --git a/sdext/source/minimizer/minimizer.pmk b/sdext/source/minimizer/minimizer.pmk
new file mode 100644
index 000000000000..f832f2dea2d5
--- /dev/null
+++ b/sdext/source/minimizer/minimizer.pmk
@@ -0,0 +1,28 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+EXTENSIONNAME:=PresentationMinimizer
diff --git a/sdext/source/minimizer/optimizationstats.cxx b/sdext/source/minimizer/optimizationstats.cxx
new file mode 100644
index 000000000000..8f6eaeeb7f1c
--- /dev/null
+++ b/sdext/source/minimizer/optimizationstats.cxx
@@ -0,0 +1,105 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "optimizationstats.hxx"
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
+
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::beans;
+
+// -----------------------------------------------------------------------------
+
+OptimizationStats::OptimizationStats()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizationStats::SetStatusValue( const PPPOptimizerTokenEnum eStat, const uno::Any& rStatValue )
+{
+ maStats[ eStat ] = rStatValue;
+}
+
+// -----------------------------------------------------------------------------
+
+const uno::Any* OptimizationStats::GetStatusValue( const PPPOptimizerTokenEnum eStat ) const
+{
+ std::map< PPPOptimizerTokenEnum, uno::Any, Compare >::const_iterator aIter( maStats.find( eStat ) );
+ return aIter != maStats.end() ? &((*aIter).second) : NULL;
+}
+
+// -----------------------------------------------------------------------------
+
+com::sun::star::beans::PropertyValues OptimizationStats::GetStatusSequence()
+{
+ int i = 0;
+ uno::Sequence< PropertyValue > aStatsSequence( maStats.size() );
+ std::map< PPPOptimizerTokenEnum, uno::Any, Compare >::iterator aIter( maStats.begin() );
+ while( aIter != maStats.end() )
+ {
+ aStatsSequence[ i ].Name = TKGet( (*aIter).first );
+ aStatsSequence[ i++ ].Value <<= (*aIter++).second;
+ }
+ return aStatsSequence;
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizationStats::InitializeStatusValues( const uno::Sequence< PropertyValue >& rOptimizationStats )
+{
+ for( int i = 0; i < rOptimizationStats.getLength(); i++ )
+ rOptimizationStats[ i ].Value >>= maStats[ TKGet( rOptimizationStats[ i ].Name ) ];
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizationStats::InitializeStatusValuesFromDocument( Reference< XModel > rxModel )
+{
+ try
+ {
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ SetStatusValue( TK_Pages, Any( awt::Size( 0, xDrawPages->getCount() ) ) );
+ }
+ catch ( Exception& )
+ {
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/optimizationstats.hxx b/sdext/source/minimizer/optimizationstats.hxx
new file mode 100644
index 000000000000..3359b5888627
--- /dev/null
+++ b/sdext/source/minimizer/optimizationstats.hxx
@@ -0,0 +1,66 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef OPTIMIZATIONSTATS_HXX
+#define OPTIMIZATIONSTATS_HXX
+
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/beans/PropertyValues.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include "pppoptimizertoken.hxx"
+#include <map>
+
+class OptimizationStats
+{
+ struct Compare
+ {
+ bool operator()( const PPPOptimizerTokenEnum s1, const PPPOptimizerTokenEnum s2 ) const
+ {
+ return s1 < s2;
+ }
+ };
+ std::map < PPPOptimizerTokenEnum, com::sun::star::uno::Any, Compare > maStats;
+
+ public :
+
+ OptimizationStats();
+ ~OptimizationStats(){};
+
+ void SetStatusValue( const PPPOptimizerTokenEnum eStat, const com::sun::star::uno::Any& rStatValue );
+ const com::sun::star::uno::Any* GetStatusValue( const PPPOptimizerTokenEnum eStat ) const;
+
+ void InitializeStatusValuesFromDocument( com::sun::star::uno::Reference< com::sun::star::frame::XModel > rxModel );
+ void InitializeStatusValues( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rOptimizationStats );
+
+ com::sun::star::beans::PropertyValues GetStatusSequence();
+};
+
+
+#endif // OPTIMIZATIONSTATS_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/optimizerdialog.cxx b/sdext/source/minimizer/optimizerdialog.cxx
new file mode 100644
index 000000000000..3d60123496fd
--- /dev/null
+++ b/sdext/source/minimizer/optimizerdialog.cxx
@@ -0,0 +1,840 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "optimizerdialog.hxx"
+#include "fileopendialog.hxx"
+#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
+#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/util/XCloseBroadcaster.hpp>
+#include <com/sun/star/frame/XComponentLoader.hpp>
+#include <com/sun/star/frame/XLayoutManager.hpp>
+#include <sal/macros.h>
+#include <osl/time.h>
+
+// -------------------
+// - OPTIMIZERDIALOG -
+// -------------------
+
+using namespace ::rtl;
+using namespace ::com::sun::star::io;
+using namespace ::com::sun::star::ui;
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::ucb;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::util;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::script;
+using namespace ::com::sun::star::container;
+
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::InitDialog()
+{
+ // setting the dialog properties
+ OUString pNames[] = {
+ TKGet( TK_Closeable ),
+ TKGet( TK_Height ),
+ TKGet( TK_Moveable ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Title ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( sal_True ),
+ Any( sal_Int32( DIALOG_HEIGHT ) ),
+ Any( sal_True ),
+ Any( sal_Int32( 200 ) ),
+ Any( sal_Int32( 52 ) ),
+ Any( getString( STR_SUN_OPTIMIZATION_WIZARD2 ) ),
+ Any( sal_Int32( OD_DIALOG_WIDTH ) ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ mxDialogModelMultiPropertySet->setPropertyValues( aNames, aValues );
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::InitRoadmap()
+{
+ try
+ {
+ OUString pNames[] = {
+ TKGet( TK_Height ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Step ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( sal_Int32( DIALOG_HEIGHT - 26 ) ),
+ Any( sal_Int32( 0 ) ),
+ Any( sal_Int32( 0 ) ),
+ Any( sal_Int32( 0 ) ),
+ Any( mnTabIndex++ ),
+ Any( sal_Int32( 85 ) ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ mxRoadmapControlModel = insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlRoadmapModel" ) ),
+ TKGet( TK_rdmNavi ), aNames, aValues );
+
+ Reference< XPropertySet > xPropertySet( mxRoadmapControlModel, UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( TKGet( TK_Name ), Any( TKGet( TK_rdmNavi ) ) );
+ mxRoadmapControl = mxDialogControlContainer->getControl( TKGet( TK_rdmNavi ) );
+ InsertRoadmapItem( 0, sal_True, getString( STR_INTRODUCTION ), ITEM_ID_INTRODUCTION );
+ InsertRoadmapItem( 1, sal_True, getString( STR_SLIDES ), ITEM_ID_SLIDES );
+ InsertRoadmapItem( 2, sal_True, getString( STR_IMAGE_OPTIMIZATION ), ITEM_ID_GRAPHIC_OPTIMIZATION );
+ InsertRoadmapItem( 3, sal_True, getString( STR_OLE_OBJECTS ), ITEM_ID_OLE_OPTIMIZATION );
+ InsertRoadmapItem( 4, sal_True, getString( STR_SUMMARY ), ITEM_ID_SUMMARY );
+
+ rtl::OUString sBitmapPath( getPath( TK_BitmapPath ) );
+ rtl::OUString sBitmap( RTL_CONSTASCII_USTRINGPARAM("/minimizepresi_80.png") );
+ rtl::OUString sURL( sBitmapPath += sBitmap );
+
+ xPropertySet->setPropertyValue( TKGet( TK_ImageURL ), Any( sURL ) );
+ xPropertySet->setPropertyValue( TKGet( TK_Activated ), Any( (sal_Bool)sal_True ) );
+ xPropertySet->setPropertyValue( TKGet( TK_Complete ), Any( (sal_Bool)sal_True ) );
+ xPropertySet->setPropertyValue( TKGet( TK_CurrentItemID ), Any( (sal_Int16)ITEM_ID_INTRODUCTION ) );
+ xPropertySet->setPropertyValue( TKGet( TK_Text ), Any( getString( STR_STEPS ) ) );
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::InsertRoadmapItem( const sal_Int32 nIndex, const sal_Bool bEnabled, const rtl::OUString& rLabel, const sal_Int32 nItemID )
+{
+ try
+ {
+ Reference< XSingleServiceFactory > xSFRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW );
+ Reference< XIndexContainer > aIndexContainerRoadmap( mxRoadmapControlModel, UNO_QUERY_THROW );
+ Reference< XInterface > xRoadmapItem( xSFRoadmap->createInstance(), UNO_QUERY_THROW );
+ Reference< XPropertySet > xPropertySet( xRoadmapItem, UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( TKGet( TK_Label ), Any( rLabel ) );
+ xPropertySet->setPropertyValue( TKGet( TK_Enabled ), Any( bEnabled ) );
+ xPropertySet->setPropertyValue( TKGet( TK_ID ), Any( nItemID ) );
+ aIndexContainerRoadmap->insertByIndex( nIndex, Any( xRoadmapItem ) );
+ }
+ catch( Exception& )
+ {
+
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::UpdateConfiguration()
+{
+ sal_Int16 nInt16 = 0;
+ OUString aString;
+ Any aAny;
+
+ Sequence< sal_Int16 > aSelectedItems;
+ Sequence< OUString > aStringItemList;
+
+ // page0
+ aAny = getControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_SelectedItems ) );
+ if ( aAny >>= aSelectedItems )
+ {
+ if ( aSelectedItems.getLength() )
+ {
+ sal_Int16 nSelectedItem = aSelectedItems[ 0 ];
+ aAny = getControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_StringItemList ) );
+ if ( aAny >>= aStringItemList )
+ {
+ if ( aStringItemList.getLength() > nSelectedItem )
+ SetConfigProperty( TK_Name, Any( aStringItemList[ nSelectedItem ] ) );
+ }
+ }
+ }
+
+ aAny = getControlProperty( TKGet( TK_CheckBox3Pg3 ), TKGet( TK_State ) );
+ if ( aAny >>= nInt16 )
+ {
+ if ( nInt16 )
+ {
+ aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_SelectedItems ) );
+ if ( aAny >>= aSelectedItems )
+ {
+ if ( aSelectedItems.getLength() )
+ {
+ sal_Int16 nSelectedItem = aSelectedItems[ 0 ];
+ aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_StringItemList ) );
+ if ( aAny >>= aStringItemList )
+ {
+ if ( aStringItemList.getLength() > nSelectedItem )
+ SetConfigProperty( TK_CustomShowName, Any( aStringItemList[ nSelectedItem ] ) );
+ }
+ }
+ }
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+OptimizerDialog::OptimizerDialog( const Reference< XComponentContext > &rxMSF, Reference< XFrame >& rxFrame, Reference< XDispatch > rxStatusDispatcher ) :
+ UnoDialog( rxMSF, rxFrame ),
+ ConfigurationAccess( rxMSF, NULL ),
+ mnCurrentStep( 0 ),
+ mnTabIndex( 0 ),
+ mxMSF( rxMSF ),
+ mxFrame( rxFrame ),
+ mxItemListener( new ItemListener( *this ) ),
+ mxActionListener( new ActionListener( *this ) ),
+ mxActionListenerListBox0Pg0( new ActionListenerListBox0Pg0( *this ) ),
+ mxTextListenerFormattedField0Pg1( new TextListenerFormattedField0Pg1( *this ) ),
+ mxTextListenerComboBox0Pg1( new TextListenerComboBox0Pg1( *this ) ),
+ mxSpinListenerFormattedField0Pg1( new SpinListenerFormattedField0Pg1( *this ) ),
+ mxStatusDispatcher( rxStatusDispatcher )
+{
+ Reference< XStorable > xStorable( mxController->getModel(), UNO_QUERY_THROW );
+ mbIsReadonly = xStorable->isReadonly();
+
+ InitDialog();
+ InitRoadmap();
+ InitNavigationBar();
+ InitPage0();
+ InitPage1();
+ InitPage2();
+ InitPage3();
+ InitPage4();
+ ActivatePage( 0 );
+
+ OptimizationStats aStats;
+ aStats.InitializeStatusValuesFromDocument( mxController->getModel() );
+ Sequence< PropertyValue > aStatusSequence( aStats.GetStatusSequence() );
+ UpdateStatus( aStatusSequence );
+}
+
+// -----------------------------------------------------------------------------
+
+OptimizerDialog::~OptimizerDialog()
+{
+ // not saving configuration if the dialog has been finished via cancel or close window
+ if ( mbStatus )
+ SaveConfiguration();
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool OptimizerDialog::execute()
+{
+ Reference< XItemEventBroadcaster > maRoadmapBroadcaster( mxRoadmapControl, UNO_QUERY_THROW );
+ maRoadmapBroadcaster->addItemListener( mxItemListener );
+ UnoDialog::execute();
+ UpdateConfiguration(); // taking actual control settings for the configuration
+ maRoadmapBroadcaster->removeItemListener( mxItemListener );
+ return mbStatus;
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::SwitchPage( sal_Int16 nNewStep )
+{
+ if ( ( nNewStep != mnCurrentStep ) && ( ( nNewStep <= MAX_STEP ) || ( nNewStep >= 0 ) ) )
+ {
+ sal_Int16 nOldStep = mnCurrentStep;
+ if ( nNewStep == 0 )
+ disableControl( TKGet( TK_btnNavBack ) );
+ else if ( nOldStep == 0 )
+ enableControl( TKGet( TK_btnNavBack ) );
+
+ if ( nNewStep == MAX_STEP )
+ disableControl( TKGet( TK_btnNavNext ) );
+ else if ( nOldStep == MAX_STEP )
+ enableControl( TKGet( TK_btnNavNext ) );
+
+ setControlProperty( TKGet( TK_rdmNavi ), TKGet( TK_CurrentItemID ), Any( nNewStep ) );
+
+ DeactivatePage( nOldStep );
+ UpdateControlStates( nNewStep );
+
+ ActivatePage( nNewStep );
+ mnCurrentStep = nNewStep;
+ }
+}
+
+void OptimizerDialog::UpdateControlStates( sal_Int16 nPage )
+{
+ switch( nPage )
+ {
+ case 0 : UpdateControlStatesPage0(); break;
+ case 1 : UpdateControlStatesPage1(); break;
+ case 2 : UpdateControlStatesPage2(); break;
+ case 3 : UpdateControlStatesPage3(); break;
+ case 4 : UpdateControlStatesPage4(); break;
+ default:
+ {
+ UpdateControlStatesPage0();
+ UpdateControlStatesPage1();
+ UpdateControlStatesPage2();
+ UpdateControlStatesPage3();
+ UpdateControlStatesPage4();
+ }
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+rtl::OUString OptimizerDialog::GetSelectedString( const PPPOptimizerTokenEnum eToken )
+{
+ OUString aSelectedItem;
+ Sequence< sal_Int16 > sSelectedItems;
+ Sequence< OUString > sItemList;
+
+ if ( ( getControlProperty( TKGet( eToken ), TKGet( TK_SelectedItems ) ) >>= sSelectedItems ) &&
+ ( getControlProperty( TKGet( eToken ), TKGet( TK_StringItemList ) ) >>= sItemList ) )
+ {
+ if ( sSelectedItems.getLength() == 1 )
+ {
+ sal_Int16 nSelectedItem = sSelectedItems[ 0 ];
+ if ( nSelectedItem < sItemList.getLength() )
+ aSelectedItem = sItemList[ nSelectedItem ];
+ }
+ }
+ return aSelectedItem;
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::UpdateStatus( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rStatus )
+{
+ if ( mxReschedule.is() )
+ {
+ maStats.InitializeStatusValues( rStatus );
+ const Any* pVal( maStats.GetStatusValue( TK_Status ) );
+ if ( pVal )
+ {
+ rtl::OUString sStatus;
+ if ( *pVal >>= sStatus )
+ {
+ setControlProperty( TKGet( TK_FixedText1Pg4 ), TKGet( TK_Enabled ), Any( sal_True ) );
+ setControlProperty( TKGet( TK_FixedText1Pg4 ), TKGet( TK_Label ), Any( getString( TKGet( sStatus ) ) ) );
+ }
+ }
+ pVal = maStats.GetStatusValue( TK_Progress );
+ if ( pVal )
+ {
+ sal_Int32 nProgress = 0;
+ if ( *pVal >>= nProgress )
+ setControlProperty( TKGet( TK_Progress ), TKGet( TK_ProgressValue ), Any( nProgress ) );
+ }
+ pVal = maStats.GetStatusValue( TK_OpenNewDocument );
+ if ( pVal )
+ SetConfigProperty( TK_OpenNewDocument, *pVal );
+
+ mxReschedule->reschedule();
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+void ItemListener::itemStateChanged( const ItemEvent& Event )
+ throw ( RuntimeException )
+{
+ try
+ {
+ sal_Int16 nState;
+ OUString aControlName;
+ Reference< XControl > xControl;
+ Any aSource( Event.Source );
+ if ( aSource >>= xControl )
+ {
+ Reference< XPropertySet > xPropertySet( xControl->getModel(), UNO_QUERY_THROW );
+ xPropertySet->getPropertyValue( TKGet( TK_Name ) ) >>= aControlName;
+ PPPOptimizerTokenEnum eControl( TKGet( aControlName ) );
+ switch( eControl )
+ {
+ case TK_rdmNavi :
+ {
+ mrOptimizerDialog.SwitchPage( static_cast< sal_Int16 >( Event.ItemId ) );
+ }
+ break;
+ case TK_CheckBox1Pg1 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ mrOptimizerDialog.SetConfigProperty( TK_RemoveCropArea, Any( nState != 0 ) );
+ }
+ break;
+ case TK_CheckBox2Pg1 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ mrOptimizerDialog.SetConfigProperty( TK_EmbedLinkedGraphics, Any( nState != 0 ) );
+ }
+ break;
+ case TK_CheckBox0Pg2 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ {
+ mrOptimizerDialog.SetConfigProperty( TK_OLEOptimization, Any( nState != 0 ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_RadioButton0Pg2 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_RadioButton1Pg2 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
+ }
+ }
+ break;
+ case TK_RadioButton0Pg1 :
+ {
+ sal_Int16 nInt16 = 0;
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nInt16 )
+ {
+ nInt16 ^= 1;
+ mrOptimizerDialog.SetConfigProperty( TK_JPEGCompression, Any( nInt16 != 0 ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( nInt16 != 0 ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( nInt16 != 0 ) );
+ }
+ }
+ break;
+ case TK_RadioButton1Pg1 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ {
+ mrOptimizerDialog.SetConfigProperty( TK_JPEGCompression, Any( nState != 0 ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
+ }
+ }
+ break;
+ case TK_RadioButton0Pg2 :
+ {
+ sal_Int16 nInt16;
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nInt16 )
+ {
+ nInt16 ^= 1;
+ mrOptimizerDialog.SetConfigProperty( TK_OLEOptimizationType, Any( nInt16 ) );
+ }
+ }
+ break;
+ case TK_RadioButton1Pg2 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ mrOptimizerDialog.SetConfigProperty( TK_OLEOptimizationType, Any( nState ) );
+ }
+ break;
+ case TK_CheckBox0Pg3 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ mrOptimizerDialog.SetConfigProperty( TK_DeleteUnusedMasterPages, Any( nState != 0 ) );
+ }
+ break;
+ case TK_CheckBox1Pg3 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ mrOptimizerDialog.SetConfigProperty( TK_DeleteNotesPages, Any( nState != 0 ) );
+ }
+ break;
+ case TK_CheckBox2Pg3 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ mrOptimizerDialog.SetConfigProperty( TK_DeleteHiddenSlides, Any( nState != 0 ) );
+ }
+ break;
+ case TK_CheckBox3Pg3 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ mrOptimizerDialog.setControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
+ }
+ break;
+ case TK_CheckBox1Pg4 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ mrOptimizerDialog.setControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Enabled ), Any( nState != 0 ) );
+ }
+ break;
+ case TK_RadioButton0Pg4 :
+ case TK_RadioButton1Pg4 :
+ {
+ if ( xPropertySet->getPropertyValue( TKGet( TK_State ) ) >>= nState )
+ mrOptimizerDialog.SetConfigProperty( TK_SaveAs, Any( eControl == TK_RadioButton1Pg4 ? nState != 0 : nState == 0 ) );
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ catch ( Exception& )
+ {
+
+ }
+}
+void ItemListener::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void ActionListener::actionPerformed( const ActionEvent& rEvent )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+ switch( TKGet( rEvent.ActionCommand ) )
+ {
+ case TK_btnNavHelp :
+ {
+ try
+ {
+ static Reference< XFrame > xHelpFrame;
+ if ( !xHelpFrame.is() )
+ {
+ rtl::OUString sHelpFile( mrOptimizerDialog.getPath( TK_HelpFile ) );
+ Reference< XDesktop > desktop( mrOptimizerDialog.GetComponentContext()->getServiceManager()->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop")), mrOptimizerDialog.GetComponentContext() ), UNO_QUERY_THROW );
+ Reference< XSimpleFileAccess > xSimpleFileAccess( mrOptimizerDialog.GetComponentContext()->getServiceManager()->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ucb.SimpleFileAccess")), mrOptimizerDialog.GetComponentContext() ), UNO_QUERY_THROW );
+ Reference< XInputStream > xInputStream( xSimpleFileAccess->openFileRead( sHelpFile ) );
+ Reference< XDesktop > xDesktop( mrOptimizerDialog.GetComponentContext()->getServiceManager()->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop")), mrOptimizerDialog.GetComponentContext() ), UNO_QUERY_THROW );
+ Reference< XFrame > xDesktopFrame( xDesktop, UNO_QUERY_THROW );
+ xHelpFrame = Reference< XFrame >( xDesktopFrame->findFrame( TKGet( TK__blank ), 0 ) );
+ Reference< XCloseBroadcaster > xCloseBroadcaster( xHelpFrame, UNO_QUERY_THROW );
+ xCloseBroadcaster->addCloseListener( new HelpCloseListener( xHelpFrame ) );
+ Reference< XComponentLoader > xLoader( xHelpFrame, UNO_QUERY_THROW );
+
+ Sequence< PropertyValue > aLoadProps( 2 );
+ aLoadProps[ 0 ].Name = TKGet( TK_ReadOnly );
+ aLoadProps[ 0 ].Value <<= (sal_Bool)( sal_True );
+ aLoadProps[ 1 ].Name = TKGet( TK_InputStream );
+ aLoadProps[ 1 ].Value <<= xInputStream;
+
+ Reference< XComponent >( xLoader->loadComponentFromURL( OUString(RTL_CONSTASCII_USTRINGPARAM("private:stream")),
+ TKGet( TK__self ), 0, aLoadProps ) );
+
+ Reference< XPropertySet > xPropSet( xHelpFrame, UNO_QUERY_THROW );
+ Reference< XLayoutManager > xLayoutManager;
+ if ( xPropSet->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("LayoutManager")) ) >>= xLayoutManager )
+ {
+ xLayoutManager->setVisible( sal_False );
+ xLayoutManager->hideElement( OUString(RTL_CONSTASCII_USTRINGPARAM("private:resource/menubar/menubar")) );
+ xLayoutManager->destroyElement( OUString(RTL_CONSTASCII_USTRINGPARAM("private:resource/statusbar/statusbar")) );
+ }
+ }
+ }
+ catch( Exception& )
+ {
+
+ }
+ }
+ break;
+ case TK_btnNavBack : mrOptimizerDialog.SwitchPage( mrOptimizerDialog.mnCurrentStep - 1 ); break;
+ case TK_btnNavNext : mrOptimizerDialog.SwitchPage( mrOptimizerDialog.mnCurrentStep + 1 ); break;
+ case TK_btnNavFinish :
+ {
+ mrOptimizerDialog.UpdateConfiguration();
+
+ mrOptimizerDialog.SwitchPage( ITEM_ID_SUMMARY );
+ mrOptimizerDialog.DisablePage( ITEM_ID_SUMMARY );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavHelp ), TKGet( TK_Enabled ), Any( sal_False ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavBack ), TKGet( TK_Enabled ), Any( sal_False ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_Enabled ), Any( sal_False ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavFinish ), TKGet( TK_Enabled ), Any( sal_False ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavCancel ), TKGet( TK_Enabled ), Any( sal_False ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_FixedText0Pg4 ), TKGet( TK_Enabled ), Any( sal_True ) );
+
+ // check if we have to open the FileDialog
+ sal_Bool bSuccessfullyExecuted = sal_True;
+ sal_Int16 nInt16 = 0;
+ mrOptimizerDialog.getControlProperty( TKGet( TK_RadioButton1Pg4 ), TKGet( TK_State ) ) >>= nInt16;
+ if ( nInt16 )
+ {
+ rtl::OUString aSaveAsURL;
+ FileOpenDialog aFileOpenDialog( ((UnoDialog&)mrOptimizerDialog).mxMSF );
+
+ // generating default file name
+ Reference< XStorable > xStorable( mrOptimizerDialog.mxController->getModel(), UNO_QUERY );
+ if ( xStorable.is() && xStorable->hasLocation() )
+ {
+ rtl::OUString aLocation( xStorable->getLocation() );
+ if ( aLocation.getLength() )
+ {
+ sal_Int32 nIndex = aLocation.lastIndexOf( '/', aLocation.getLength() - 1 );
+ if ( nIndex >= 0 )
+ {
+ if ( nIndex < aLocation.getLength() - 1 )
+ aLocation = aLocation.copy( nIndex + 1 );
+
+ // remove extension
+ nIndex = aLocation.lastIndexOf( '.', aLocation.getLength() - 1 );
+ if ( nIndex >= 0 )
+ aLocation = aLocation.copy( 0, nIndex );
+
+ // adding .mini
+ aLocation = aLocation.concat( OUString(RTL_CONSTASCII_USTRINGPARAM(".mini")) );
+ aFileOpenDialog.setDefaultName( aLocation );
+ }
+ }
+ }
+ sal_Bool bDialogExecuted = aFileOpenDialog.execute() == dialogs::ExecutableDialogResults::OK;
+ if ( bDialogExecuted )
+ {
+ aSaveAsURL = aFileOpenDialog.getURL();
+ mrOptimizerDialog.SetConfigProperty( TK_SaveAsURL, Any( aSaveAsURL ) );
+ mrOptimizerDialog.SetConfigProperty( TK_FilterName, Any( aFileOpenDialog.getFilterName() ) );
+ }
+ if ( !aSaveAsURL.getLength() )
+ {
+ // something goes wrong...
+ bSuccessfullyExecuted = sal_False;
+ }
+
+ // waiting for 500ms
+ if ( mrOptimizerDialog.mxReschedule.is() )
+ {
+ mrOptimizerDialog.mxReschedule->reschedule();
+ for ( sal_uInt32 i = osl_getGlobalTimer(); ( i + 500 ) > ( osl_getGlobalTimer() ); )
+ mrOptimizerDialog.mxReschedule->reschedule();
+ }
+ }
+ if ( bSuccessfullyExecuted )
+ { // now check if we have to store a session template
+ nInt16 = 0;
+ OUString aSettingsName;
+ mrOptimizerDialog.getControlProperty( TKGet( TK_CheckBox1Pg4 ), TKGet( TK_State ) ) >>= nInt16;
+ mrOptimizerDialog.getControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Text ) ) >>= aSettingsName;
+ if ( nInt16 && aSettingsName.getLength() )
+ {
+ std::vector< OptimizerSettings >::iterator aIter( mrOptimizerDialog.GetOptimizerSettingsByName( aSettingsName ) );
+ std::vector< OptimizerSettings >& rSettings( mrOptimizerDialog.GetOptimizerSettings() );
+ OptimizerSettings aNewSettings( rSettings[ 0 ] );
+ aNewSettings.maName = aSettingsName;
+ if ( aIter == rSettings.end() )
+ rSettings.push_back( aNewSettings );
+ else
+ *aIter = aNewSettings;
+ }
+ }
+ if ( bSuccessfullyExecuted )
+ {
+ Sequence< Any > aArgs( 1 );
+ aArgs[ 0 ] <<= mrOptimizerDialog.GetFrame();
+
+ Reference < XDispatch > xDispatch( mrOptimizerDialog.GetComponentContext()->getServiceManager()->createInstanceWithArgumentsAndContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.PPPOptimizer")), aArgs, mrOptimizerDialog.GetComponentContext() ), UNO_QUERY );
+
+ URL aURL;
+ aURL.Protocol = OUString( RTL_CONSTASCII_USTRINGPARAM( "vnd.com.sun.star.comp.PPPOptimizer:" ) );
+ aURL.Path = OUString( RTL_CONSTASCII_USTRINGPARAM( "optimize" ) );
+
+ Sequence< PropertyValue > lArguments( 3 );
+ lArguments[ 0 ].Name = TKGet( TK_Settings );
+ lArguments[ 0 ].Value <<= mrOptimizerDialog.GetConfigurationSequence();
+ lArguments[ 1 ].Name = TKGet( TK_StatusDispatcher );
+ lArguments[ 1 ].Value <<= mrOptimizerDialog.GetStatusDispatcher();
+ lArguments[ 2 ].Name = TKGet( TK_InformationDialog );
+ lArguments[ 2 ].Value <<= mrOptimizerDialog.GetFrame();
+
+ if( xDispatch.is() )
+ xDispatch->dispatch( aURL, lArguments );
+
+ mrOptimizerDialog.endExecute( bSuccessfullyExecuted );
+ }
+ else
+ {
+ mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavHelp ), TKGet( TK_Enabled ), Any( sal_True ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavBack ), TKGet( TK_Enabled ), Any( sal_True ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_Enabled ), Any( sal_False ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavFinish ), TKGet( TK_Enabled ), Any( sal_True ) );
+ mrOptimizerDialog.setControlProperty( TKGet( TK_btnNavCancel ), TKGet( TK_Enabled ), Any( sal_True ) );
+ mrOptimizerDialog.EnablePage( ITEM_ID_SUMMARY );
+ }
+ }
+ break;
+ case TK_btnNavCancel : mrOptimizerDialog.endExecute( sal_False ); break;
+ case TK_Button0Pg0 : // delete configuration
+ {
+ OUString aSelectedItem( mrOptimizerDialog.GetSelectedString( TK_ListBox0Pg0 ) );
+ if ( aSelectedItem.getLength() )
+ {
+ std::vector< OptimizerSettings >::iterator aIter( mrOptimizerDialog.GetOptimizerSettingsByName( aSelectedItem ) );
+ std::vector< OptimizerSettings >& rList( mrOptimizerDialog.GetOptimizerSettings() );
+ if ( aIter != rList.end() )
+ {
+ rList.erase( aIter );
+ mrOptimizerDialog.UpdateControlStates();
+ }
+ }
+ }
+ break;
+ default: break;
+ }
+}
+void ActionListener::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void ActionListenerListBox0Pg0::actionPerformed( const ActionEvent& rEvent )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+ if ( rEvent.ActionCommand.getLength() )
+ {
+ std::vector< OptimizerSettings >::iterator aIter( mrOptimizerDialog.GetOptimizerSettingsByName( rEvent.ActionCommand ) );
+ std::vector< OptimizerSettings >& rList( mrOptimizerDialog.GetOptimizerSettings() );
+ if ( aIter != rList.end() )
+ rList[ 0 ] = *aIter;
+ }
+ mrOptimizerDialog.UpdateControlStates();
+}
+void ActionListenerListBox0Pg0::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void TextListenerFormattedField0Pg1::textChanged( const TextEvent& /* rEvent */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+ double fDouble = 0;
+ Any aAny = mrOptimizerDialog.getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
+ if ( aAny >>= fDouble )
+ mrOptimizerDialog.SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
+}
+void TextListenerFormattedField0Pg1::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void TextListenerComboBox0Pg1::textChanged( const TextEvent& /* rEvent */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+ rtl::OUString aString;
+ Any aAny = mrOptimizerDialog.getControlProperty( TKGet( TK_ComboBox0Pg1 ), TKGet( TK_Text ) );
+ if ( aAny >>= aString )
+ {
+ sal_Int32 nI0, nI1, nI2, nI3, nI4;
+ nI0 = nI1 = nI2 = nI3 = nI4 = 0;
+
+ if ( mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_0 ).getToken( 1, ';', nI0 ) == aString )
+ aString = mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_0 ).getToken( 0, ';', nI4 );
+ else if ( mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_1 ).getToken( 1, ';', nI1 ) == aString )
+ aString = mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_1 ).getToken( 0, ';', nI4 );
+ else if ( mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_2 ).getToken( 1, ';', nI2 ) == aString )
+ aString = mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_2 ).getToken( 0, ';', nI4 );
+ else if ( mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_3 ).getToken( 1, ';', nI3 ) == aString )
+ aString = mrOptimizerDialog.getString( STR_IMAGE_RESOLUTION_3 ).getToken( 0, ';', nI4 );
+
+ mrOptimizerDialog.SetConfigProperty( TK_ImageResolution, Any( aString.toInt32() ) );
+ }
+}
+void TextListenerComboBox0Pg1::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void SpinListenerFormattedField0Pg1::up( const SpinEvent& /* rEvent */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+ double fDouble;
+ Any aAny = mrOptimizerDialog.getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
+ if ( aAny >>= fDouble )
+ {
+ fDouble += 9;
+ if ( fDouble > 100 )
+ fDouble = 100;
+ mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( fDouble ) );
+ mrOptimizerDialog.SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
+ }
+}
+void SpinListenerFormattedField0Pg1::down( const SpinEvent& /* rEvent */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+ double fDouble;
+ Any aAny = mrOptimizerDialog.getControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ) );
+ if ( aAny >>= fDouble )
+ {
+ fDouble -= 9;
+ if ( fDouble < 0 )
+ fDouble = 0;
+ mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( fDouble ) );
+ mrOptimizerDialog.SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)fDouble ) );
+ }
+}
+void SpinListenerFormattedField0Pg1::first( const SpinEvent& /* rEvent */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+ mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( static_cast< double >( 0 ) ) );
+ mrOptimizerDialog.SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)0 ) );
+}
+void SpinListenerFormattedField0Pg1::last( const SpinEvent& /* rEvent */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+ mrOptimizerDialog.setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( static_cast< double >( 100 ) ) );
+ mrOptimizerDialog.SetConfigProperty( TK_JPEGQuality, Any( (sal_Int32)100 ) );
+}
+void SpinListenerFormattedField0Pg1::disposing( const ::com::sun::star::lang::EventObject& /* Source */ )
+ throw ( com::sun::star::uno::RuntimeException )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+void HelpCloseListener::addCloseListener( const Reference < XCloseListener >& ) throw( RuntimeException )
+{
+}
+void HelpCloseListener::removeCloseListener( const Reference < XCloseListener >& ) throw( RuntimeException )
+{
+}
+void HelpCloseListener::queryClosing( const EventObject&, sal_Bool /* bDeliverOwnership */ )
+ throw ( RuntimeException, CloseVetoException )
+{
+}
+void HelpCloseListener::notifyClosing( const EventObject& )
+ throw ( RuntimeException )
+{
+}
+void HelpCloseListener::disposing( const EventObject& ) throw ( RuntimeException )
+{
+ mrXFrame = NULL;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/optimizerdialog.hrc b/sdext/source/minimizer/optimizerdialog.hrc
new file mode 100644
index 000000000000..bc3fd49a277f
--- /dev/null
+++ b/sdext/source/minimizer/optimizerdialog.hrc
@@ -0,0 +1,36 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _OPTIMIZERDIALOG_HRC
+#define _OPTIMIZERDIALOG_HRC
+
+#define ITEM_ID_INTRODUCTION 0
+#define ITEM_ID_SLIDES 1
+#define ITEM_ID_GRAPHIC_OPTIMIZATION 2
+#define ITEM_ID_OLE_OPTIMIZATION 3
+#define ITEM_ID_SUMMARY 4
+
+#endif
diff --git a/sdext/source/minimizer/optimizerdialog.hxx b/sdext/source/minimizer/optimizerdialog.hxx
new file mode 100644
index 000000000000..08036c056069
--- /dev/null
+++ b/sdext/source/minimizer/optimizerdialog.hxx
@@ -0,0 +1,248 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef OPTIMIZERDIALOG_HXX
+#define OPTIMIZERDIALOG_HXX
+#include "optimizerdialog.hrc"
+#include <vector>
+#include "unodialog.hxx"
+#include "pppoptimizertoken.hxx"
+#include "optimizationstats.hxx"
+#include "configurationaccess.hxx"
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/awt/XItemListener.hpp>
+#include <com/sun/star/awt/XSpinField.hpp>
+#include <com/sun/star/awt/XSpinListener.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/text/XTextRange.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/awt/XItemEventBroadcaster.hpp>
+#include <com/sun/star/util/XCloseListener.hpp>
+#include <com/sun/star/frame/XStorable.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XDesktop.hpp>
+#include <com/sun/star/awt/PushButtonType.hpp>
+
+#define MAX_STEP 4
+#define OD_DIALOG_WIDTH 330
+#define DIALOG_HEIGHT 210
+#define BUTTON_WIDTH 50
+#define BUTTON_HEIGHT 14
+#define BUTTON_POS_Y DIALOG_HEIGHT - BUTTON_HEIGHT - 6
+
+#define PAGE_POS_X 91
+#define PAGE_POS_Y 8
+#define PAGE_WIDTH OD_DIALOG_WIDTH - PAGE_POS_X
+
+// -------------------
+// - OPTIMIZERDIALOG -
+// -------------------
+class OptimizerDialog : public UnoDialog, public ConfigurationAccess
+{
+public :
+
+ OptimizerDialog( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF, com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rxFrame,
+ com::sun::star::uno::Reference< com::sun::star::frame::XDispatch > rxStatusDispatcher );
+ ~OptimizerDialog();
+
+ sal_Bool execute();
+
+ sal_Int16 mnCurrentStep;
+ sal_Int16 mnTabIndex;
+ sal_Bool mbIsReadonly;
+
+private :
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >mxMSF;
+ com::sun::star::uno::Reference< com::sun::star::frame::XFrame > mxFrame;
+
+ com::sun::star::uno::Reference< com::sun::star::uno::XInterface > mxRoadmapControl;
+ com::sun::star::uno::Reference< com::sun::star::uno::XInterface > mxRoadmapControlModel;
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XItemListener > mxItemListener;
+ com::sun::star::uno::Reference< com::sun::star::awt::XActionListener > mxActionListener;
+ com::sun::star::uno::Reference< com::sun::star::awt::XActionListener > mxActionListenerListBox0Pg0;
+ com::sun::star::uno::Reference< com::sun::star::awt::XTextListener > mxTextListenerFormattedField0Pg1;
+ com::sun::star::uno::Reference< com::sun::star::awt::XTextListener > mxTextListenerComboBox0Pg1;
+ com::sun::star::uno::Reference< com::sun::star::awt::XSpinListener > mxSpinListenerFormattedField0Pg1;
+ com::sun::star::uno::Reference< com::sun::star::frame::XDispatch > mxStatusDispatcher;
+
+ std::vector< std::vector< rtl::OUString > > maControlPages;
+
+ void InitDialog();
+ void InitRoadmap();
+ void InitNavigationBar();
+ void InitPage0();
+ void InitPage1();
+ void InitPage2();
+ void InitPage3();
+ void InitPage4();
+ void UpdateControlStatesPage0();
+ void UpdateControlStatesPage1();
+ void UpdateControlStatesPage2();
+ void UpdateControlStatesPage3();
+ void UpdateControlStatesPage4();
+
+ void ActivatePage( sal_Int16 nStep );
+ void DeactivatePage( sal_Int16 nStep );
+ void InsertRoadmapItem( const sal_Int32 nIndex, const sal_Bool bEnabled, const rtl::OUString& rLabel, const sal_Int32 nItemID );
+
+public :
+
+ OptimizationStats maStats;
+
+ void UpdateStatus( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rStatus );
+
+ // the ConfigurationAccess is updated to actual control settings
+ void UpdateConfiguration();
+
+ void EnablePage( sal_Int16 nStep );
+ void DisablePage( sal_Int16 nStep );
+
+ void SwitchPage( sal_Int16 nNewStep );
+ void UpdateControlStates( sal_Int16 nStep = -1 );
+
+ rtl::OUString GetSelectedString( PPPOptimizerTokenEnum eListBox );
+ com::sun::star::uno::Reference< com::sun::star::frame::XDispatch >& GetStatusDispatcher() { return mxStatusDispatcher; };
+ com::sun::star::uno::Reference< com::sun::star::frame::XFrame>& GetFrame() { return mxFrame; };
+ const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& GetComponentContext() { return mxMSF; };
+};
+
+// -----------------------------------------------------------------------------
+
+class ItemListener : public ::cppu::WeakImplHelper1< com::sun::star::awt::XItemListener >
+{
+public:
+ ItemListener( OptimizerDialog& rOptimizerDialog ) : mrOptimizerDialog( rOptimizerDialog ){};
+
+ virtual void SAL_CALL itemStateChanged( const ::com::sun::star::awt::ItemEvent& Event ) throw ( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw ( com::sun::star::uno::RuntimeException);
+private:
+
+ OptimizerDialog& mrOptimizerDialog;
+};
+
+// -----------------------------------------------------------------------------
+
+class ActionListener : public ::cppu::WeakImplHelper1< com::sun::star::awt::XActionListener >
+{
+public:
+ ActionListener( OptimizerDialog& rOptimizerDialog ) : mrOptimizerDialog( rOptimizerDialog ){};
+
+ virtual void SAL_CALL actionPerformed( const ::com::sun::star::awt::ActionEvent& Event ) throw ( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw ( com::sun::star::uno::RuntimeException);
+private:
+
+ OptimizerDialog& mrOptimizerDialog;
+};
+
+// -----------------------------------------------------------------------------
+
+class ActionListenerListBox0Pg0 : public ::cppu::WeakImplHelper1< com::sun::star::awt::XActionListener >
+{
+public:
+ ActionListenerListBox0Pg0( OptimizerDialog& rOptimizerDialog ) : mrOptimizerDialog( rOptimizerDialog ){};
+
+ virtual void SAL_CALL actionPerformed( const ::com::sun::star::awt::ActionEvent& Event ) throw ( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw ( com::sun::star::uno::RuntimeException);
+private:
+
+ OptimizerDialog& mrOptimizerDialog;
+};
+
+// -----------------------------------------------------------------------------
+
+class TextListenerFormattedField0Pg1 : public ::cppu::WeakImplHelper1< com::sun::star::awt::XTextListener >
+{
+public:
+ TextListenerFormattedField0Pg1( OptimizerDialog& rOptimizerDialog ) : mrOptimizerDialog( rOptimizerDialog ){};
+
+ virtual void SAL_CALL textChanged( const ::com::sun::star::awt::TextEvent& Event ) throw ( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw ( com::sun::star::uno::RuntimeException);
+private:
+
+ OptimizerDialog& mrOptimizerDialog;
+};
+
+// -----------------------------------------------------------------------------
+
+class TextListenerComboBox0Pg1 : public ::cppu::WeakImplHelper1< com::sun::star::awt::XTextListener >
+{
+public:
+ TextListenerComboBox0Pg1( OptimizerDialog& rOptimizerDialog ) : mrOptimizerDialog( rOptimizerDialog ){};
+
+ virtual void SAL_CALL textChanged( const ::com::sun::star::awt::TextEvent& Event ) throw ( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw ( com::sun::star::uno::RuntimeException);
+private:
+
+ OptimizerDialog& mrOptimizerDialog;
+};
+
+// -----------------------------------------------------------------------------
+
+class SpinListenerFormattedField0Pg1 : public ::cppu::WeakImplHelper1< com::sun::star::awt::XSpinListener >
+{
+public:
+ SpinListenerFormattedField0Pg1( OptimizerDialog& rOptimizerDialog ) : mrOptimizerDialog( rOptimizerDialog ){};
+
+ virtual void SAL_CALL up( const ::com::sun::star::awt::SpinEvent& Event ) throw ( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL down( const ::com::sun::star::awt::SpinEvent& Event ) throw ( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL first( const ::com::sun::star::awt::SpinEvent& Event ) throw ( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL last( const ::com::sun::star::awt::SpinEvent& Event ) throw ( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw ( com::sun::star::uno::RuntimeException);
+private:
+
+ OptimizerDialog& mrOptimizerDialog;
+};
+
+// -----------------------------------------------------------------------------
+
+class HelpCloseListener : public ::cppu::WeakImplHelper1< com::sun::star::util::XCloseListener >
+{
+public:
+ HelpCloseListener( com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rXFrame ) : mrXFrame( rXFrame ){};
+
+ virtual void SAL_CALL addCloseListener(const com::sun::star::uno::Reference < com::sun::star::util::XCloseListener >& ) throw( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removeCloseListener( const com::sun::star::uno::Reference < com::sun::star::util::XCloseListener >& xListener ) throw( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL notifyClosing( const com::sun::star::lang::EventObject& aEvent ) throw (com::sun::star::uno::RuntimeException) ;
+ virtual void SAL_CALL queryClosing( const com::sun::star::lang::EventObject& aEvent, sal_Bool bDeliverOwnership ) throw (com::sun::star::uno::RuntimeException, com::sun::star::util::CloseVetoException) ;
+ virtual void SAL_CALL disposing( const com::sun::star::lang::EventObject& aEvent ) throw (com::sun::star::uno::RuntimeException) ;
+
+private:
+
+ com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& mrXFrame;
+};
+
+
+#endif // OPTIMIZERDIALOG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/optimizerdialogcontrols.cxx b/sdext/source/minimizer/optimizerdialogcontrols.cxx
new file mode 100644
index 000000000000..d5af7018ec4c
--- /dev/null
+++ b/sdext/source/minimizer/optimizerdialogcontrols.cxx
@@ -0,0 +1,962 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "optimizerdialog.hxx"
+
+// -------------------
+// - OptimizerDialog -
+// -------------------
+#include "pppoptimizer.hxx"
+#include "graphiccollector.hxx"
+#include "pagecollector.hxx"
+#include <com/sun/star/presentation/XCustomPresentationSupplier.hpp>
+#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/awt/FontWeight.hpp>
+#include <rtl/ustrbuf.hxx>
+#include <sal/macros.h>
+
+using namespace ::rtl;
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::util;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::script;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::presentation;
+
+// -----------------------------------------------------------------------------
+
+void SetBold( OptimizerDialog& rOptimizerDialog, const rtl::OUString& rControl )
+{
+ FontDescriptor aFontDescriptor;
+ if ( rOptimizerDialog.getControlProperty( rControl, TKGet( TK_FontDescriptor ) ) >>= aFontDescriptor )
+ {
+ aFontDescriptor.Weight = FontWeight::BOLD;
+ rOptimizerDialog.setControlProperty( rControl, TKGet( TK_FontDescriptor ), Any( aFontDescriptor ) );
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+rtl::OUString InsertSeparator( OptimizerDialog& rOptimizerDialog, const OUString& rControlName, sal_Int32 nOrientation,
+ sal_Int32 nPosX, sal_Int32 nPosY, sal_Int32 nWidth, sal_Int32 nHeight )
+{
+ OUString pNames[] = {
+ TKGet( TK_Height ),
+ TKGet( TK_Orientation ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Step ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( nHeight ),
+ Any( nOrientation ),
+ Any( nPosX ),
+ Any( nPosY ),
+ Any( sal_Int16( 0 ) ),
+ Any( nWidth ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ rOptimizerDialog.insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlFixedLineModel" ) ),
+ rControlName, aNames, aValues );
+ return rControlName;
+}
+
+// -----------------------------------------------------------------------------
+
+rtl::OUString InsertButton( OptimizerDialog& rOptimizerDialog, const OUString& rControlName, Reference< XActionListener >& xActionListener,
+ sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int16 nTabIndex, sal_Bool bEnabled, PPPOptimizerTokenEnum nResID, sal_Int16 nPushButtonType )
+{
+ OUString pNames[] = {
+ TKGet( TK_Enabled ),
+ TKGet( TK_Height ),
+ TKGet( TK_Label ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_PushButtonType ),
+ TKGet( TK_Step ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( bEnabled ),
+ Any( nHeight ),
+ Any( rOptimizerDialog.getString( nResID ) ),
+ Any( nXPos ),
+ Any( nYPos ),
+ Any( nPushButtonType ),
+ Any( (sal_Int16)0 ),
+ Any( nTabIndex ),
+ Any( nWidth ) };
+
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ rOptimizerDialog.insertButton( rControlName, xActionListener, aNames, aValues );
+ return rControlName;
+}
+
+// -----------------------------------------------------------------------------
+
+rtl::OUString InsertFixedText( OptimizerDialog& rOptimizerDialog, const rtl::OUString& rControlName, const OUString& rLabel,
+ sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight, sal_Bool bMultiLine, sal_Bool bBold, sal_Int16 nTabIndex )
+{
+ OUString pNames[] = {
+ TKGet( TK_Height ),
+ TKGet( TK_Label ),
+ TKGet( TK_MultiLine ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Step ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( nHeight ),
+ Any( rLabel ),
+ Any( bMultiLine ),
+ Any( nXPos ),
+ Any( nYPos ),
+ Any( (sal_Int16)0 ),
+ Any( nTabIndex ),
+ Any( nWidth ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ rOptimizerDialog.insertFixedText( rControlName, aNames, aValues );
+ if ( bBold )
+ SetBold( rOptimizerDialog, rControlName );
+ return rControlName;
+}
+
+// -----------------------------------------------------------------------------
+
+rtl::OUString InsertCheckBox( OptimizerDialog& rOptimizerDialog, const OUString& rControlName,
+ const Reference< XItemListener > xItemListener, const OUString& rLabel,
+ sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int16 nTabIndex )
+{
+ OUString pNames[] = {
+ TKGet( TK_Enabled ),
+ TKGet( TK_Height ),
+ TKGet( TK_Label ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Step ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( sal_True ),
+ Any( nHeight ),
+ Any( rLabel ),
+ Any( nXPos ),
+ Any( nYPos ),
+ Any( (sal_Int16)0 ),
+ Any( nTabIndex ),
+ Any( nWidth ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ Reference< XCheckBox > xCheckBox( rOptimizerDialog.insertCheckBox( rControlName, aNames, aValues ) );
+ if ( xItemListener.is() )
+ xCheckBox->addItemListener( xItemListener );
+ return rControlName;
+}
+
+// -----------------------------------------------------------------------------
+
+rtl::OUString InsertFormattedField( OptimizerDialog& rOptimizerDialog, const OUString& rControlName,
+ const Reference< XTextListener > xTextListener, const Reference< XSpinListener > xSpinListener, sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth,
+ double fEffectiveMin, double fEffectiveMax, sal_Int16 nTabIndex )
+{
+ OUString pNames[] = {
+ TKGet( TK_EffectiveMax ),
+ TKGet( TK_EffectiveMin ),
+ TKGet( TK_Enabled ),
+ TKGet( TK_Height ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Repeat ),
+ TKGet( TK_Spin ),
+ TKGet( TK_Step ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( fEffectiveMax ),
+ Any( fEffectiveMin ),
+ Any( sal_True ),
+ Any( (sal_Int32)12 ),
+ Any( nXPos ),
+ Any( nYPos ),
+ Any( (sal_Bool)sal_True ),
+ Any( (sal_Bool)sal_True ),
+ Any( (sal_Int16)0 ),
+ Any( nTabIndex ),
+ Any( nWidth ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ Reference< XTextComponent > xTextComponent( rOptimizerDialog.insertFormattedField( rControlName, aNames, aValues ), UNO_QUERY_THROW );
+ if ( xTextListener.is() )
+ xTextComponent->addTextListener( xTextListener );
+ if ( xSpinListener.is() )
+ {
+ Reference< XSpinField > xSpinField( xTextComponent, UNO_QUERY_THROW );
+ xSpinField->addSpinListener( xSpinListener );
+ }
+ return rControlName;
+}
+
+// -----------------------------------------------------------------------------
+
+rtl::OUString InsertComboBox( OptimizerDialog& rOptimizerDialog, const OUString& rControlName,
+ const Reference< XTextListener > xTextListener, const sal_Bool bEnabled, const Sequence< OUString >& rItemList,
+ sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int16 nTabIndex )
+{
+ OUString pNames[] = {
+ TKGet( TK_Dropdown ),
+ TKGet( TK_Enabled ),
+ TKGet( TK_Height ),
+ TKGet( TK_LineCount ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Step ),
+ TKGet( TK_StringItemList ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( sal_True ),
+ Any( bEnabled ),
+ Any( nHeight ),
+ Any( (sal_Int16)8),
+ Any( nXPos ),
+ Any( nYPos ),
+ Any( (sal_Int16)0 ),
+ Any( rItemList ),
+ Any( nTabIndex ),
+ Any( nWidth ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ Reference< XTextComponent > xTextComponent( rOptimizerDialog.insertComboBox( rControlName, aNames, aValues ), UNO_QUERY_THROW );
+ if ( xTextListener.is() )
+ xTextComponent->addTextListener( xTextListener );
+ return rControlName;
+}
+
+// -----------------------------------------------------------------------------
+
+rtl::OUString InsertRadioButton( OptimizerDialog& rOptimizerDialog, const rtl::OUString& rControlName, const Reference< XItemListener > xItemListener,
+ const OUString& rLabel, sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight, sal_Bool bMultiLine, sal_Int16 nTabIndex )
+{
+ OUString pNames[] = {
+ TKGet( TK_Height ),
+ TKGet( TK_Label ),
+ TKGet( TK_MultiLine ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Step ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( nHeight ),
+ Any( rLabel ),
+ Any( bMultiLine ),
+ Any( nXPos ),
+ Any( nYPos ),
+ Any( (sal_Int16)0 ),
+ Any( nTabIndex ),
+ Any( nWidth ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ Reference< XRadioButton > xRadioButton( rOptimizerDialog.insertRadioButton( rControlName, aNames, aValues ) );
+ if ( xItemListener.is() )
+ xRadioButton->addItemListener( xItemListener );
+ return rControlName;
+}
+
+// -----------------------------------------------------------------------------
+
+rtl::OUString InsertListBox( OptimizerDialog& rOptimizerDialog, const OUString& rControlName,
+ const Reference< XActionListener > xActionListener, const sal_Bool bEnabled, const Sequence< OUString >& rItemList,
+ sal_Int32 nXPos, sal_Int32 nYPos, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int16 nTabIndex )
+{
+ OUString pNames[] = {
+ TKGet( TK_Dropdown ),
+ TKGet( TK_Enabled ),
+ TKGet( TK_Height ),
+ TKGet( TK_LineCount ),
+ TKGet( TK_MultiSelection ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_Step ),
+ TKGet( TK_StringItemList ),
+ TKGet( TK_TabIndex ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( sal_True ),
+ Any( bEnabled ),
+ Any( nHeight ),
+ Any( (sal_Int16)8),
+ Any( sal_False ),
+ Any( nXPos ),
+ Any( nYPos ),
+ Any( (sal_Int16)0 ),
+ Any( rItemList ),
+ Any( nTabIndex ),
+ Any( nWidth ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ Reference< XListBox > xListBox( rOptimizerDialog.insertListBox( rControlName, aNames, aValues ) );
+ if ( xListBox.is() )
+ xListBox->addActionListener( xActionListener );
+ return rControlName;
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::InitNavigationBar()
+{
+ sal_Int32 nCancelPosX = OD_DIALOG_WIDTH - BUTTON_WIDTH - 6;
+ sal_Int32 nFinishPosX = nCancelPosX - 6 - BUTTON_WIDTH;
+ sal_Int32 nNextPosX = nFinishPosX - 6 - BUTTON_WIDTH;
+ sal_Int32 nBackPosX = nNextPosX - 3 - BUTTON_WIDTH;
+
+ InsertSeparator( *this, TKGet( TK_lnNavSep1 ), 0, 0, DIALOG_HEIGHT - 26, OD_DIALOG_WIDTH, 1 );
+ InsertSeparator( *this, TKGet( TK_lnNavSep2 ), 1, 85, 0, 1, BUTTON_POS_Y - 6 );
+
+ InsertButton( *this, TKGet( TK_btnNavHelp ), mxActionListener, 8, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, mnTabIndex++, sal_True, STR_HELP, PushButtonType_STANDARD );
+ InsertButton( *this, TKGet( TK_btnNavBack ), mxActionListener, nBackPosX, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, mnTabIndex++, sal_False, STR_BACK, PushButtonType_STANDARD );
+ InsertButton( *this, TKGet( TK_btnNavNext ), mxActionListener, nNextPosX, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, mnTabIndex++, sal_True, STR_NEXT, PushButtonType_STANDARD );
+ InsertButton( *this, TKGet( TK_btnNavFinish ), mxActionListener, nFinishPosX, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, mnTabIndex++, sal_True, STR_FINISH, PushButtonType_STANDARD );
+ InsertButton( *this, TKGet( TK_btnNavCancel ), mxActionListener, nCancelPosX, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, mnTabIndex++, sal_True, STR_CANCEL, PushButtonType_STANDARD );
+
+ setControlProperty( TKGet( TK_btnNavNext ), TKGet( TK_DefaultButton ), Any( sal_True ) );
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::UpdateControlStatesPage0()
+{
+ sal_uInt32 i;
+ short nSelectedItem = -1;
+ Sequence< OUString > aItemList;
+ const std::vector< OptimizerSettings >& rList( GetOptimizerSettings() );
+ if ( rList.size() > 1 ) // the first session in the list is the actual one -> skipping first one
+ {
+ aItemList.realloc( rList.size() - 1 );
+ for ( i = 1; i < rList.size(); i++ )
+ {
+ aItemList[ i - 1 ] = rList[ i ].maName;
+ if ( nSelectedItem < 0 )
+ {
+ if ( rList[ i ] == rList[ 0 ] )
+ nSelectedItem = static_cast< short >( i - 1 );
+ }
+ }
+ }
+ sal_Bool bRemoveButtonEnabled = sal_False;
+ Sequence< short > aSelectedItems;
+ if ( nSelectedItem >= 0 )
+ {
+ aSelectedItems.realloc( 1 );
+ aSelectedItems[ 0 ] = nSelectedItem;
+ if ( nSelectedItem > 2 ) // only allowing to delete custom themes, the first can|t be deleted
+ bRemoveButtonEnabled = sal_True;
+ }
+ setControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_StringItemList ), Any( aItemList ) );
+ setControlProperty( TKGet( TK_ListBox0Pg0 ), TKGet( TK_SelectedItems ), Any( aSelectedItems ) );
+ setControlProperty( TKGet( TK_Button0Pg0 ), TKGet( TK_Enabled ), Any( bRemoveButtonEnabled ) );
+}
+void OptimizerDialog::InitPage0()
+{
+ Sequence< OUString > aItemList;
+ std::vector< rtl::OUString > aControlList;
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText0Pg0 ), getString( STR_INTRODUCTION ), PAGE_POS_X, PAGE_POS_Y, PAGE_WIDTH, 8, sal_False, sal_True, mnTabIndex++ ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText1Pg0 ), getString( STR_INTRODUCTION_T ), PAGE_POS_X + 6, PAGE_POS_Y + 14, PAGE_WIDTH - 12, 100, sal_True, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertSeparator( *this, TKGet( TK_Separator1Pg0 ), 0, PAGE_POS_X + 6, DIALOG_HEIGHT - 66, PAGE_WIDTH - 12, 1 ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText2Pg0 ), getString( STR_CHOSE_SETTINGS ), PAGE_POS_X + 6, DIALOG_HEIGHT - 60, PAGE_WIDTH - 12, 8, sal_True, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertListBox( *this, TKGet( TK_ListBox0Pg0 ), mxActionListenerListBox0Pg0, sal_True, aItemList, PAGE_POS_X + 6, DIALOG_HEIGHT - 48, ( OD_DIALOG_WIDTH - 50 ) - ( PAGE_POS_X + 6 ), 12, mnTabIndex++ ) );
+ aControlList.push_back( InsertButton( *this, TKGet( TK_Button0Pg0 ), mxActionListener, OD_DIALOG_WIDTH - 46, DIALOG_HEIGHT - 49, 40, 14, mnTabIndex++, sal_True, STR_REMOVE, PushButtonType_STANDARD ) );
+ maControlPages.push_back( aControlList );
+ DeactivatePage( 0 );
+ UpdateControlStatesPage0();
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::UpdateControlStatesPage1()
+{
+ sal_Bool bDeleteUnusedMasterPages( GetConfigProperty( TK_DeleteUnusedMasterPages, sal_False ) );
+ sal_Bool bDeleteHiddenSlides( GetConfigProperty( TK_DeleteHiddenSlides, sal_False ) );
+ sal_Bool bDeleteNotesPages( GetConfigProperty( TK_DeleteNotesPages, sal_False ) );
+
+ setControlProperty( TKGet( TK_CheckBox0Pg3 ), TKGet( TK_State ), Any( (sal_Int16)bDeleteUnusedMasterPages ) );
+ setControlProperty( TKGet( TK_CheckBox1Pg3 ), TKGet( TK_State ), Any( (sal_Int16)bDeleteNotesPages ) );
+ setControlProperty( TKGet( TK_CheckBox2Pg3 ), TKGet( TK_State ), Any( (sal_Int16)bDeleteHiddenSlides ) );
+}
+void OptimizerDialog::InitPage1()
+{
+ Sequence< OUString > aCustomShowList;
+ Reference< XModel > xModel( mxController->getModel() );
+ if ( xModel.is() )
+ {
+ Reference< XCustomPresentationSupplier > aXCPSup( xModel, UNO_QUERY_THROW );
+ Reference< XNameContainer > aXCont( aXCPSup->getCustomPresentations() );
+ if ( aXCont.is() )
+ aCustomShowList = aXCont->getElementNames();
+ }
+ std::vector< rtl::OUString > aControlList;
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText0Pg3 ), getString( STR_CHOOSE_SLIDES ), PAGE_POS_X, PAGE_POS_Y, PAGE_WIDTH, 8, sal_False, sal_True, mnTabIndex++ ) );
+ aControlList.push_back( InsertCheckBox( *this, TKGet( TK_CheckBox0Pg3 ), mxItemListener, getString( STR_DELETE_MASTER_PAGES ), PAGE_POS_X + 6, PAGE_POS_Y + 14, PAGE_WIDTH - 12, 8, mnTabIndex++ ) );
+ aControlList.push_back( InsertCheckBox( *this, TKGet( TK_CheckBox2Pg3 ), mxItemListener, getString( STR_DELETE_HIDDEN_SLIDES ), PAGE_POS_X + 6, PAGE_POS_Y + 28, PAGE_WIDTH - 12, 8, mnTabIndex++ ) );
+ aControlList.push_back( InsertCheckBox( *this, TKGet( TK_CheckBox3Pg3 ), mxItemListener, getString( STR_CUSTOM_SHOW ), PAGE_POS_X + 6, PAGE_POS_Y + 42, PAGE_WIDTH - 12, 8, mnTabIndex++ ) );
+ aControlList.push_back( InsertListBox( *this, TKGet( TK_ListBox0Pg3 ), mxActionListener, sal_True, aCustomShowList, PAGE_POS_X + 14, PAGE_POS_Y + 54, 150, 12, mnTabIndex++ ) );
+ aControlList.push_back( InsertCheckBox( *this, TKGet( TK_CheckBox1Pg3 ), mxItemListener, getString( STR_DELETE_NOTES_PAGES ), PAGE_POS_X + 6, PAGE_POS_Y + 70, PAGE_WIDTH - 12, 8, mnTabIndex++ ) );
+ maControlPages.push_back( aControlList );
+ DeactivatePage( 1 );
+
+ setControlProperty( TKGet( TK_CheckBox3Pg3 ), TKGet( TK_State ), Any( sal_False ) );
+ setControlProperty( TKGet( TK_CheckBox3Pg3 ), TKGet( TK_Enabled ), Any( aCustomShowList.getLength() != 0 ) );
+ setControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_Enabled ), Any( sal_False ) );
+
+ UpdateControlStatesPage1();
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::UpdateControlStatesPage2()
+{
+ sal_Bool bJPEGCompression( GetConfigProperty( TK_JPEGCompression, sal_False ) );
+ sal_Bool bRemoveCropArea( GetConfigProperty( TK_RemoveCropArea, sal_False ) );
+ sal_Bool bEmbedLinkedGraphics( GetConfigProperty( TK_EmbedLinkedGraphics, sal_True ) );
+ sal_Int32 nJPEGQuality( GetConfigProperty( TK_JPEGQuality, (sal_Int32)90 ) );
+
+ sal_Int32 nImageResolution( GetConfigProperty( TK_ImageResolution, (sal_Int32)0 ) );
+
+ sal_Int32 nI0, nI1, nI2, nI3;
+ nI0 = nI1 = nI2 = nI3 = 0;
+ OUString aResolutionText;
+ Sequence< OUString > aResolutionItemList( 4 );
+ aResolutionItemList[ 0 ] = getString( STR_IMAGE_RESOLUTION_0 ).getToken( 1, ';', nI0 );
+ aResolutionItemList[ 1 ] = getString( STR_IMAGE_RESOLUTION_1 ).getToken( 1, ';', nI1 );
+ aResolutionItemList[ 2 ] = getString( STR_IMAGE_RESOLUTION_2 ).getToken( 1, ';', nI2 );
+ aResolutionItemList[ 3 ] = getString( STR_IMAGE_RESOLUTION_3 ).getToken( 1, ';', nI3 );
+ nI0 = nI1 = nI2 = nI3 = 0;
+ if ( getString( STR_IMAGE_RESOLUTION_0 ).getToken( 0, ';', nI0 ).toInt32() == nImageResolution )
+ aResolutionText = aResolutionItemList[ 0 ];
+ else if ( getString( STR_IMAGE_RESOLUTION_1 ).getToken( 0, ';', nI1 ).toInt32() == nImageResolution )
+ aResolutionText = aResolutionItemList[ 1 ];
+ else if ( getString( STR_IMAGE_RESOLUTION_2 ).getToken( 0, ';', nI2 ).toInt32() == nImageResolution )
+ aResolutionText = aResolutionItemList[ 2 ];
+ else if ( getString( STR_IMAGE_RESOLUTION_3 ).getToken( 0, ';', nI3 ).toInt32() == nImageResolution )
+ aResolutionText = aResolutionItemList[ 3 ];
+ if ( !aResolutionText.getLength() )
+ aResolutionText = OUString::valueOf( nImageResolution );
+
+ setControlProperty( TKGet( TK_RadioButton0Pg1 ), TKGet( TK_State ), Any( (sal_Int16)( bJPEGCompression != sal_True ) ) );
+ setControlProperty( TKGet( TK_RadioButton1Pg1 ), TKGet( TK_State ), Any( (sal_Int16)( bJPEGCompression != sal_False ) ) );
+ setControlProperty( TKGet( TK_FixedText1Pg1 ), TKGet( TK_Enabled ), Any( bJPEGCompression ) );
+ setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_Enabled ), Any( bJPEGCompression ) );
+ setControlProperty( TKGet( TK_FormattedField0Pg1 ), TKGet( TK_EffectiveValue ), Any( (double)nJPEGQuality ) );
+ setControlProperty( TKGet( TK_CheckBox1Pg1 ), TKGet( TK_State ), Any( (sal_Int16)bRemoveCropArea ) );
+ setControlProperty( TKGet( TK_ComboBox0Pg1 ), TKGet( TK_Text ), Any( aResolutionText ) );
+ setControlProperty( TKGet( TK_CheckBox2Pg1 ), TKGet( TK_State ), Any( (sal_Int16)bEmbedLinkedGraphics ) );
+}
+void OptimizerDialog::InitPage2()
+{
+ sal_Int32 nI0, nI1, nI2, nI3;
+ nI0 = nI1 = nI2 = nI3 = 0;
+ Sequence< OUString > aResolutionItemList( 4 );
+ aResolutionItemList[ 0 ] = getString( STR_IMAGE_RESOLUTION_0 ).getToken( 1, ';', nI0 );
+ aResolutionItemList[ 1 ] = getString( STR_IMAGE_RESOLUTION_1 ).getToken( 1, ';', nI1 );
+ aResolutionItemList[ 2 ] = getString( STR_IMAGE_RESOLUTION_2 ).getToken( 1, ';', nI2 );
+ aResolutionItemList[ 3 ] = getString( STR_IMAGE_RESOLUTION_3 ).getToken( 1, ';', nI3 );
+
+ std::vector< rtl::OUString > aControlList;
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText0Pg1 ), getString( STR_GRAPHIC_OPTIMIZATION ), PAGE_POS_X, PAGE_POS_Y, PAGE_WIDTH, 8, sal_False, sal_True, mnTabIndex++ ) );
+ aControlList.push_back( InsertRadioButton( *this, TKGet( TK_RadioButton0Pg1 ), mxItemListener, getString( STR_LOSSLESS_COMPRESSION ), PAGE_POS_X + 6, PAGE_POS_Y + 14, PAGE_WIDTH - 12, 8, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertRadioButton( *this, TKGet( TK_RadioButton1Pg1 ), mxItemListener, getString( STR_JPEG_COMPRESSION ), PAGE_POS_X + 6, PAGE_POS_Y + 28, PAGE_WIDTH - 12, 8, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText1Pg1 ), getString( STR_QUALITY ), PAGE_POS_X + 20, PAGE_POS_Y + 40, 72, 8, sal_False, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertFormattedField( *this, TKGet( TK_FormattedField0Pg1 ), mxTextListenerFormattedField0Pg1, mxSpinListenerFormattedField0Pg1, PAGE_POS_X + 106, PAGE_POS_Y + 38, 50, 0, 100, mnTabIndex++ ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText2Pg1 ), getString( STR_IMAGE_RESOLUTION ), PAGE_POS_X + 6, PAGE_POS_Y + 54, 94, 8, sal_False, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertComboBox( *this, TKGet( TK_ComboBox0Pg1 ), mxTextListenerComboBox0Pg1, sal_True, aResolutionItemList, PAGE_POS_X + 106, PAGE_POS_Y + 52, 100, 12, mnTabIndex++ ) );
+ aControlList.push_back( InsertCheckBox( *this, TKGet( TK_CheckBox1Pg1 ), mxItemListener, getString( STR_REMOVE_CROP_AREA ), PAGE_POS_X + 6, PAGE_POS_Y + 68, PAGE_WIDTH - 12, 8, mnTabIndex++ ) );
+ aControlList.push_back( InsertCheckBox( *this, TKGet( TK_CheckBox2Pg1 ), mxItemListener, getString( STR_EMBED_LINKED_GRAPHICS ), PAGE_POS_X + 6, PAGE_POS_Y + 82, PAGE_WIDTH - 12, 8, mnTabIndex++ ) );
+ maControlPages.push_back( aControlList );
+ DeactivatePage( 2 );
+ UpdateControlStatesPage2();
+}
+
+// -----------------------------------------------------------------------------
+
+void OptimizerDialog::UpdateControlStatesPage3()
+{
+ sal_Bool bConvertOLEObjects( GetConfigProperty( TK_OLEOptimization, sal_False ) );
+ sal_Int16 nOLEOptimizationType( GetConfigProperty( TK_OLEOptimizationType, (sal_Int16)0 ) );
+
+ setControlProperty( TKGet( TK_CheckBox0Pg2 ), TKGet( TK_State ), Any( (sal_Int16)bConvertOLEObjects ) );
+ setControlProperty( TKGet( TK_RadioButton0Pg2 ), TKGet( TK_Enabled ), Any( bConvertOLEObjects ) );
+ setControlProperty( TKGet( TK_RadioButton0Pg2 ), TKGet( TK_State ), Any( (sal_Int16)( nOLEOptimizationType == 0 ) ) );
+ setControlProperty( TKGet( TK_RadioButton1Pg2 ), TKGet( TK_Enabled ), Any( bConvertOLEObjects ) );
+ setControlProperty( TKGet( TK_RadioButton1Pg2 ), TKGet( TK_State ), Any( (sal_Int16)( nOLEOptimizationType == 1 ) ) );
+}
+void OptimizerDialog::InitPage3()
+{
+ int nOLECount = 0;
+ Reference< XModel > xModel( mxController->getModel() );
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( xModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ for ( sal_Int32 i = 0; i < xDrawPages->getCount(); i++ )
+ {
+ Reference< XShapes > xShapes( xDrawPages->getByIndex( i ), UNO_QUERY_THROW );
+ for ( sal_Int32 j = 0; j < xShapes->getCount(); j++ )
+ {
+ const OUString sOLE2Shape( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.drawing.OLE2Shape" ) );
+ Reference< XShape > xShape( xShapes->getByIndex( j ), UNO_QUERY_THROW );
+ if ( xShape->getShapeType() == sOLE2Shape )
+ nOLECount++;
+ }
+ }
+
+ std::vector< rtl::OUString > aControlList;
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText0Pg2 ), getString( STR_OLE_OPTIMIZATION ), PAGE_POS_X, PAGE_POS_Y, PAGE_WIDTH, 8, sal_False, sal_True, mnTabIndex++ ) );
+ aControlList.push_back( InsertCheckBox( *this, TKGet( TK_CheckBox0Pg2 ), mxItemListener, getString( STR_OLE_REPLACE ), PAGE_POS_X + 6, PAGE_POS_Y + 14, PAGE_WIDTH - 12, 8, mnTabIndex++ ) );
+ aControlList.push_back( InsertRadioButton( *this, TKGet( TK_RadioButton0Pg2 ), mxItemListener, getString( STR_ALL_OLE_OBJECTS ), PAGE_POS_X + 14, PAGE_POS_Y + 28, PAGE_WIDTH - 22, 8, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertRadioButton( *this, TKGet( TK_RadioButton1Pg2 ), mxItemListener, getString( STR_ALIEN_OLE_OBJECTS_ONLY ), PAGE_POS_X + 14, PAGE_POS_Y + 40, PAGE_WIDTH - 22, 8, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText1Pg2 ), nOLECount ? getString( STR_OLE_OBJECTS_DESC ) : getString( STR_NO_OLE_OBJECTS_DESC ), PAGE_POS_X + 6, PAGE_POS_Y + 64, PAGE_WIDTH - 22, 50, sal_True, sal_False, mnTabIndex++ ) );
+ maControlPages.push_back( aControlList );
+ DeactivatePage( 3 );
+ UpdateControlStatesPage3();
+}
+
+// -----------------------------------------------------------------------------
+
+static OUString ImpValueOfInMB( const sal_Int64& rVal, sal_Unicode nSeparator = '.' )
+{
+ double fVal( static_cast<double>( rVal ) );
+ fVal /= ( 1 << 20 );
+ fVal += 0.05;
+ rtl::OUStringBuffer aVal( OUString::valueOf( fVal ) );
+ sal_Int32 nX( OUString( aVal.getStr() ).indexOf( '.', 0 ) );
+ if ( nX >= 0 )
+ {
+ aVal.setLength( nX + 2 );
+ aVal.setCharAt( nX, nSeparator );
+ }
+ aVal.append( OUString(RTL_CONSTASCII_USTRINGPARAM(" MB")) );
+ return aVal.makeStringAndClear();
+}
+
+void OptimizerDialog::UpdateControlStatesPage4()
+{
+ sal_Bool bSaveAs( GetConfigProperty( TK_SaveAs, sal_True ) );
+ if ( mbIsReadonly )
+ {
+ setControlProperty( TKGet( TK_RadioButton0Pg4 ), TKGet( TK_State ), Any( (sal_Int16)( sal_False ) ) );
+ setControlProperty( TKGet( TK_RadioButton1Pg4 ), TKGet( TK_State ), Any( (sal_Int16)( sal_True ) ) );
+ }
+ else
+ {
+ setControlProperty( TKGet( TK_RadioButton0Pg4 ), TKGet( TK_State ), Any( (sal_Int16)( bSaveAs == sal_False ) ) );
+ setControlProperty( TKGet( TK_RadioButton1Pg4 ), TKGet( TK_State ), Any( (sal_Int16)( bSaveAs == sal_True ) ) );
+ }
+ setControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Enabled ), Any( sal_False ) );
+
+ sal_uInt32 w;
+ Sequence< OUString > aItemList;
+ const std::vector< OptimizerSettings >& rList( GetOptimizerSettings() );
+ if ( rList.size() > 1 ) // the first session in the list is the actual one -> skipping first one
+ {
+ aItemList.realloc( rList.size() - 1 );
+ for ( w = 1; w < rList.size(); w++ )
+ aItemList[ w - 1 ] = rList[ w ].maName;
+ }
+ setControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_StringItemList ), Any( aItemList ) );
+
+ // now check if it is sensible to enable the combo box
+ sal_Bool bSaveSettingsEnabled = sal_True;
+ if ( rList.size() > 1 ) // the first session in the list is the actual one -> skipping first one
+ {
+ for ( w = 1; w < rList.size(); w++ )
+ {
+ if ( rList[ w ] == rList[ 0 ] )
+ {
+ bSaveSettingsEnabled = sal_False;
+ break;
+ }
+ }
+ }
+ sal_Int16 nInt16 = 0;
+ getControlProperty( TKGet( TK_CheckBox1Pg4 ), TKGet( TK_State ) ) >>= nInt16;
+ setControlProperty( TKGet( TK_CheckBox1Pg4 ), TKGet( TK_Enabled ), Any( bSaveSettingsEnabled ) );
+ setControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Enabled ), Any( bSaveSettingsEnabled && nInt16 ) );
+
+ std::vector< OUString > aSummaryStrings;
+
+ // taking care of deleted slides
+ sal_Int32 nDeletedSlides = 0;
+ rtl::OUString aCustomShowName;
+ if ( getControlProperty( TKGet( TK_CheckBox3Pg3 ), TKGet( TK_State ) ) >>= nInt16 )
+ {
+ if ( nInt16 )
+ {
+ Sequence< short > aSelectedItems;
+ Sequence< OUString > aStringItemList;
+ Any aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_SelectedItems ) );
+ if ( aAny >>= aSelectedItems )
+ {
+ if ( aSelectedItems.getLength() )
+ {
+ sal_Int16 nSelectedItem = aSelectedItems[ 0 ];
+ aAny = getControlProperty( TKGet( TK_ListBox0Pg3 ), TKGet( TK_StringItemList ) );
+ if ( aAny >>= aStringItemList )
+ {
+ if ( aStringItemList.getLength() > nSelectedItem )
+ SetConfigProperty( TK_CustomShowName, Any( aStringItemList[ nSelectedItem ] ) );
+ }
+ }
+ }
+ }
+ }
+ if ( aCustomShowName.getLength() )
+ {
+ std::vector< Reference< XDrawPage > > vNonUsedPageList;
+ PageCollector::CollectNonCustomShowPages( mxController->getModel(), aCustomShowName, vNonUsedPageList );
+ nDeletedSlides += vNonUsedPageList.size();
+ }
+ if ( GetConfigProperty( TK_DeleteHiddenSlides, sal_False ) )
+ {
+ if ( aCustomShowName.getLength() )
+ {
+ std::vector< Reference< XDrawPage > > vUsedPageList;
+ PageCollector::CollectCustomShowPages( mxController->getModel(), aCustomShowName, vUsedPageList );
+ std::vector< Reference< XDrawPage > >::iterator aIter( vUsedPageList.begin() );
+ while( aIter != vUsedPageList.end() )
+ {
+ Reference< XPropertySet > xPropSet( *aIter, UNO_QUERY_THROW );
+ sal_Bool bVisible = sal_True;
+ const OUString sVisible( RTL_CONSTASCII_USTRINGPARAM( "Visible" ) );
+ if ( xPropSet->getPropertyValue( sVisible ) >>= bVisible )
+ {
+ if (!bVisible )
+ nDeletedSlides++;
+ }
+ ++aIter;
+ }
+ }
+ else
+ {
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( mxController->getModel(), UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ for( sal_Int32 i = 0; i < xDrawPages->getCount(); i++ )
+ {
+ Reference< XDrawPage > xDrawPage( xDrawPages->getByIndex( i ), UNO_QUERY_THROW );
+ Reference< XPropertySet > xPropSet( xDrawPage, UNO_QUERY_THROW );
+
+ sal_Bool bVisible = sal_True;
+ const OUString sVisible( RTL_CONSTASCII_USTRINGPARAM( "Visible" ) );
+ if ( xPropSet->getPropertyValue( sVisible ) >>= bVisible )
+ {
+ if (!bVisible )
+ nDeletedSlides++;
+ }
+ }
+ }
+ }
+ if ( GetConfigProperty( TK_DeleteUnusedMasterPages, sal_False ) )
+ {
+ std::vector< PageCollector::MasterPageEntity > aMasterPageList;
+ PageCollector::CollectMasterPages( mxController->getModel(), aMasterPageList );
+ Reference< XMasterPagesSupplier > xMasterPagesSupplier( mxController->getModel(), UNO_QUERY_THROW );
+ Reference< XDrawPages > xMasterPages( xMasterPagesSupplier->getMasterPages(), UNO_QUERY_THROW );
+ std::vector< PageCollector::MasterPageEntity >::iterator aIter( aMasterPageList.begin() );
+ while( aIter != aMasterPageList.end() )
+ {
+ if ( !aIter->bUsed )
+ nDeletedSlides++;
+ ++aIter;
+ }
+ }
+ if ( nDeletedSlides > 1 )
+ {
+ OUString aStr( getString( STR_DELETE_SLIDES ) );
+ OUString aPlaceholder( RTL_CONSTASCII_USTRINGPARAM( "%SLIDES" ) );
+ sal_Int32 i = aStr.indexOf( aPlaceholder, 0 );
+ if ( i >= 0 )
+ aStr = aStr.replaceAt( i, aPlaceholder.getLength(), OUString::valueOf( nDeletedSlides ) );
+ aSummaryStrings.push_back( aStr );
+ }
+
+// generating graphic compression info
+ sal_Int32 nGraphics = 0;
+ sal_Bool bJPEGCompression( GetConfigProperty( TK_JPEGCompression, sal_False ) );
+ sal_Int32 nJPEGQuality( GetConfigProperty( TK_JPEGQuality, (sal_Int32)90 ) );
+ sal_Int32 nImageResolution( GetConfigProperty( TK_ImageResolution, (sal_Int32)0 ) );
+ GraphicSettings aGraphicSettings( bJPEGCompression, nJPEGQuality, GetConfigProperty( TK_RemoveCropArea, sal_False ),
+ nImageResolution, GetConfigProperty( TK_EmbedLinkedGraphics, sal_True ) );
+ GraphicCollector::CountGraphics( mxMSF, mxController->getModel(), aGraphicSettings, nGraphics );
+ if ( nGraphics > 1 )
+ {
+ OUString aStr( getString( STR_OPTIMIZE_IMAGES ) );
+ OUString aImagePlaceholder( RTL_CONSTASCII_USTRINGPARAM( "%IMAGES" ) );
+ OUString aQualityPlaceholder( RTL_CONSTASCII_USTRINGPARAM( "%QUALITY" ) );
+ OUString aResolutionPlaceholder( RTL_CONSTASCII_USTRINGPARAM( "%RESOLUTION" ) );
+ sal_Int32 i = aStr.indexOf( aImagePlaceholder, 0 );
+ if ( i >= 0 )
+ aStr = aStr.replaceAt( i, aImagePlaceholder.getLength(), OUString::valueOf( nGraphics ) );
+
+ sal_Int32 j = aStr.indexOf( aQualityPlaceholder, 0 );
+ if ( j >= 0 )
+ aStr = aStr.replaceAt( j, aQualityPlaceholder.getLength(), OUString::valueOf( nJPEGQuality ) );
+
+ sal_Int32 k = aStr.indexOf( aResolutionPlaceholder, 0 );
+ if ( k >= 0 )
+ aStr = aStr.replaceAt( k, aResolutionPlaceholder.getLength(), OUString::valueOf( nImageResolution ) );
+
+ aSummaryStrings.push_back( aStr );
+ }
+
+ if ( GetConfigProperty( TK_OLEOptimization, sal_False ) )
+ {
+ sal_Int32 nOLEReplacements = 0;
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( mxController->getModel(), UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ for ( sal_Int32 i = 0; i < xDrawPages->getCount(); i++ )
+ {
+ Reference< XShapes > xShapes( xDrawPages->getByIndex( i ), UNO_QUERY_THROW );
+ for ( sal_Int32 j = 0; j < xShapes->getCount(); j++ )
+ {
+ const OUString sOLE2Shape( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.drawing.OLE2Shape" ) );
+ Reference< XShape > xShape( xShapes->getByIndex( j ), UNO_QUERY_THROW );
+ if ( xShape->getShapeType() == sOLE2Shape )
+ nOLEReplacements++;
+ }
+ }
+ if ( nOLEReplacements > 1 )
+ {
+ OUString aStr( getString( STR_CREATE_REPLACEMENT ) );
+ OUString aPlaceholder( RTL_CONSTASCII_USTRINGPARAM( "%OLE" ) );
+ sal_Int32 i = aStr.indexOf( aPlaceholder, 0 );
+ if ( i >= 0 )
+ aStr = aStr.replaceAt( i, aPlaceholder.getLength(), OUString::valueOf( nOLEReplacements ) );
+ aSummaryStrings.push_back( aStr );
+ }
+ }
+ while( aSummaryStrings.size() < 3 )
+ aSummaryStrings.push_back( OUString() );
+ setControlProperty( TKGet( TK_FixedText4Pg4 ), TKGet( TK_Label ), Any( aSummaryStrings[ 0 ] ) );
+ setControlProperty( TKGet( TK_FixedText5Pg4 ), TKGet( TK_Label ), Any( aSummaryStrings[ 1 ] ) );
+ setControlProperty( TKGet( TK_FixedText6Pg4 ), TKGet( TK_Label ), Any( aSummaryStrings[ 2 ] ) );
+
+ sal_Int64 nCurrentFileSize = 0;
+ sal_Int64 nEstimatedFileSize = 0;
+ Reference< XStorable > xStorable( mxController->getModel(), UNO_QUERY );
+ if ( xStorable.is() && xStorable->hasLocation() )
+ nCurrentFileSize = PPPOptimizer::GetFileSize( xStorable->getLocation() );
+
+ if ( nCurrentFileSize )
+ {
+ double fE = static_cast< double >( nCurrentFileSize );
+ if ( nImageResolution )
+ {
+ double v = ( static_cast< double >( nImageResolution ) + 75.0 ) / 300.0;
+ if ( v < 1.0 )
+ fE *= v;
+ }
+ if ( bJPEGCompression )
+ {
+ double v = 0.75 - ( ( 100.0 - static_cast< double >( nJPEGQuality ) ) / 400.0 ) ;
+ fE *= v;
+ }
+ nEstimatedFileSize = static_cast< sal_Int64 >( fE );
+ }
+ sal_Unicode nSeparator = '.';
+ OUString aStr( getString( STR_FILESIZESEPARATOR ) );
+ if ( aStr.getLength() )
+ nSeparator = aStr[ 0 ];
+ setControlProperty( TKGet( TK_FixedText7Pg4 ), TKGet( TK_Label ), Any( ImpValueOfInMB( nCurrentFileSize, nSeparator ) ) );
+ setControlProperty( TKGet( TK_FixedText8Pg4 ), TKGet( TK_Label ), Any( ImpValueOfInMB( nEstimatedFileSize, nSeparator ) ) );
+ SetConfigProperty( TK_EstimatedFileSize, Any( nEstimatedFileSize ) );
+}
+
+void OptimizerDialog::InitPage4()
+{
+ { // creating progress bar:
+ OUString pNames[] = {
+ TKGet( TK_Height ),
+ TKGet( TK_Name ),
+ TKGet( TK_PositionX ),
+ TKGet( TK_PositionY ),
+ TKGet( TK_ProgressValue ),
+ TKGet( TK_ProgressValueMax ),
+ TKGet( TK_ProgressValueMin ),
+ TKGet( TK_Width ) };
+
+ Any pValues[] = {
+ Any( (sal_Int32)12 ),
+ Any( TKGet( STR_SAVE_AS ) ),
+ Any( (sal_Int32)( PAGE_POS_X + 6 ) ),
+ Any( (sal_Int32)( DIALOG_HEIGHT - 75 ) ),
+ Any( (sal_Int32)( 0 ) ),
+ Any( (sal_Int32)( 100 ) ),
+ Any( (sal_Int32)( 0 ) ),
+ Any( (sal_Int32)( PAGE_WIDTH - 12 ) ) };
+
+ sal_Int32 nCount = SAL_N_ELEMENTS( pNames );
+
+ Sequence< rtl::OUString > aNames( pNames, nCount );
+ Sequence< Any > aValues( pValues, nCount );
+
+ Reference< XMultiPropertySet > xMultiPropertySet( insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlProgressBarModel" ) ),
+ TKGet( TK_Progress ), aNames, aValues ), UNO_QUERY );
+ }
+ Reference< XTextListener > xTextListener;
+ Sequence< OUString > aItemList;
+ std::vector< rtl::OUString > aControlList;
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText0Pg4 ), getString( STR_SUMMARY_TITLE ), PAGE_POS_X, PAGE_POS_Y, PAGE_WIDTH, 8, sal_False, sal_True, mnTabIndex++ ) );
+// aControlList.push_back( InsertSeparator( *this, TKGet( TK_Separator0Pg4 ), 0, PAGE_POS_X + 6, PAGE_POS_Y + 90, PAGE_WIDTH - 12, 1 ) );
+
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText4Pg4 ), OUString(), PAGE_POS_X + 6, PAGE_POS_Y + 14, PAGE_WIDTH - 12, 8, sal_False, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText5Pg4 ), OUString(), PAGE_POS_X + 6, PAGE_POS_Y + 22, PAGE_WIDTH - 12, 8, sal_False, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText6Pg4 ), OUString(), PAGE_POS_X + 6, PAGE_POS_Y + 30, PAGE_WIDTH - 12, 8, sal_False, sal_False, mnTabIndex++ ) );
+
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText2Pg4 ), getString( STR_CURRENT_FILESIZE ), PAGE_POS_X + 6, PAGE_POS_Y + 50, 88, 8, sal_False, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText7Pg4 ), OUString(), PAGE_POS_X + 100, PAGE_POS_Y + 50, 30, 8, sal_False, sal_False, mnTabIndex++ ) );
+ setControlProperty( TKGet( TK_FixedText7Pg4 ), TKGet( TK_Align ), Any( static_cast< short >( 2 ) ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText3Pg4 ), getString( STR_ESTIMATED_FILESIZE ), PAGE_POS_X + 6, PAGE_POS_Y + 58, 88, 8, sal_False, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText8Pg4 ), OUString(), PAGE_POS_X + 100, PAGE_POS_Y + 58, 30, 8, sal_False, sal_False, mnTabIndex++ ) );
+ setControlProperty( TKGet( TK_FixedText8Pg4 ), TKGet( TK_Align ), Any( static_cast< short >( 2 ) ) );
+
+ aControlList.push_back( InsertRadioButton( *this, TKGet( TK_RadioButton0Pg4 ), mxItemListener, getString( STR_APPLY_TO_CURRENT ), PAGE_POS_X + 6, PAGE_POS_Y + 78, PAGE_WIDTH - 12, 8, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertRadioButton( *this, TKGet( TK_RadioButton1Pg4 ), mxItemListener, getString( STR_SAVE_AS ), PAGE_POS_X + 6, PAGE_POS_Y + 90, PAGE_WIDTH - 12, 8, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( InsertFixedText( *this, TKGet( TK_FixedText1Pg4 ), OUString(), PAGE_POS_X + 6, DIALOG_HEIGHT - 87, PAGE_WIDTH - 12, 8, sal_True, sal_False, mnTabIndex++ ) );
+ aControlList.push_back( TKGet( TK_Progress ) );
+ aControlList.push_back( InsertSeparator( *this, TKGet( TK_Separator1Pg4 ), 0, PAGE_POS_X + 6, DIALOG_HEIGHT - 58, PAGE_WIDTH - 12, 1 ) );
+ aControlList.push_back( InsertCheckBox( *this, TKGet( TK_CheckBox1Pg4 ), mxItemListener, getString( STR_SAVE_SETTINGS ), PAGE_POS_X + 6, DIALOG_HEIGHT - 47, 100, 8, mnTabIndex++ ) );
+ aControlList.push_back( InsertComboBox( *this, TKGet( TK_ComboBox0Pg4 ), xTextListener, sal_True, aItemList, PAGE_POS_X + 106, DIALOG_HEIGHT - 48, 100, 12, mnTabIndex++ ) );
+ maControlPages.push_back( aControlList );
+ DeactivatePage( 4 );
+
+ // creating a default session name that hasn't been used yet
+ OUString aSettingsName;
+ OUString aDefault( getString( STR_MY_SETTINGS ) );
+ sal_Int32 nSession = 1;
+ sal_uInt32 i;
+ const std::vector< OptimizerSettings >& rList( GetOptimizerSettings() );
+ do
+ {
+ OUString aTemp( aDefault.concat( OUString::valueOf( nSession++ ) ) );
+ for ( i = 1; i < rList.size(); i++ )
+ {
+ if ( rList[ i ].maName == aTemp )
+ break;
+ }
+ if ( i == rList.size() )
+ aSettingsName = aTemp;
+ }
+ while( !aSettingsName.getLength() );
+
+ setControlProperty( TKGet( TK_ComboBox0Pg4 ), TKGet( TK_Text ), Any( aSettingsName ) );
+ setControlProperty( TKGet( TK_RadioButton0Pg4 ), TKGet( TK_Enabled ), Any( !mbIsReadonly ) );
+ setControlProperty( TKGet( TK_RadioButton1Pg4 ), TKGet( TK_Enabled ), Any( !mbIsReadonly ) );
+
+ UpdateControlStatesPage4();
+}
+
+// -----------------------------------------------------------------------------
+void OptimizerDialog::EnablePage( sal_Int16 nStep )
+{
+ std::vector< rtl::OUString >::iterator aBeg( maControlPages[ nStep ].begin() );
+ std::vector< rtl::OUString >::iterator aEnd( maControlPages[ nStep ].end() );
+ while( aBeg != aEnd )
+ setControlProperty( *aBeg++, TKGet( TK_Enabled ), Any( sal_True ) );
+}
+void OptimizerDialog::DisablePage( sal_Int16 nStep )
+{
+ std::vector< rtl::OUString >::iterator aBeg( maControlPages[ nStep ].begin() );
+ std::vector< rtl::OUString >::iterator aEnd( maControlPages[ nStep ].end() );
+ while( aBeg != aEnd )
+ setControlProperty( *aBeg++, TKGet( TK_Enabled ), Any( sal_False ) );
+}
+void OptimizerDialog::ActivatePage( sal_Int16 nStep )
+{
+ std::vector< rtl::OUString >::iterator aBeg( maControlPages[ nStep ].begin() );
+ std::vector< rtl::OUString >::iterator aEnd( maControlPages[ nStep ].end() );
+ while( aBeg != aEnd )
+ setVisible( *aBeg++, sal_True );
+}
+void OptimizerDialog::DeactivatePage( sal_Int16 nStep )
+{
+ std::vector< rtl::OUString >::iterator aBeg( maControlPages[ nStep ].begin() );
+ std::vector< rtl::OUString >::iterator aEnd( maControlPages[ nStep ].end() );
+ while( aBeg != aEnd )
+ setVisible( *aBeg++, sal_False );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/pagecollector.cxx b/sdext/source/minimizer/pagecollector.cxx
new file mode 100644
index 000000000000..811d63f8b96c
--- /dev/null
+++ b/sdext/source/minimizer/pagecollector.cxx
@@ -0,0 +1,182 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pagecollector.hxx"
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/presentation/XPresentationPage.hpp>
+#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
+#include <com/sun/star/drawing/XMasterPageTarget.hpp>
+#include <com/sun/star/presentation/XCustomPresentationSupplier.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/container/XIndexContainer.hpp>
+
+using namespace ::rtl;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::drawing;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::presentation;
+
+void PageCollector::CollectCustomShowPages( const com::sun::star::uno::Reference< com::sun::star::frame::XModel >& rxModel, const rtl::OUString& rCustomShowName, std::vector< Reference< XDrawPage > >& rUsedPageList )
+{
+ try
+ {
+ Reference< XCustomPresentationSupplier > aXCPSup( rxModel, UNO_QUERY_THROW );
+ Reference< XNameContainer > aXCont( aXCPSup->getCustomPresentations() );
+ if ( aXCont.is() )
+ {
+ // creating a list of every page that is used within our customshow
+ Sequence< OUString> aNameSeq( aXCont->getElementNames() );
+ const OUString* pUString = aNameSeq.getArray();
+ sal_Int32 i, nCount = aNameSeq.getLength();
+ for ( i = 0; i < nCount; i++ )
+ {
+ if ( pUString[ i ] == rCustomShowName )
+ {
+ Reference< container::XIndexContainer > aXIC( aXCont->getByName( pUString[ i ] ), UNO_QUERY_THROW );
+ sal_Int32 j, nSlideCount = aXIC->getCount();
+ for ( j = 0; j < nSlideCount; j++ )
+ {
+ Reference< XDrawPage > xDrawPage( aXIC->getByIndex( j ), UNO_QUERY_THROW );
+ std::vector< Reference< XDrawPage > >::iterator aIter( rUsedPageList.begin() );
+ std::vector< Reference< XDrawPage > >::iterator aEnd( rUsedPageList.end() );
+ while( aIter != aEnd )
+ {
+ if ( *aIter == xDrawPage )
+ break;
+ ++aIter;
+ }
+ if ( aIter == aEnd )
+ rUsedPageList.push_back( xDrawPage );
+ }
+ }
+ }
+ }
+ }
+ catch( Exception& )
+ {
+
+ }
+}
+
+void PageCollector::CollectNonCustomShowPages( const com::sun::star::uno::Reference< com::sun::star::frame::XModel >& rxModel, const rtl::OUString& rCustomShowName, std::vector< Reference< XDrawPage > >& rNonUsedPageList )
+{
+ try
+ {
+ std::vector< Reference< XDrawPage > > vUsedPageList;
+ PageCollector::CollectCustomShowPages( rxModel, rCustomShowName, vUsedPageList );
+ if ( !vUsedPageList.empty() )
+ {
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ for ( sal_Int32 j = 0; j < xDrawPages->getCount(); j++ )
+ {
+ Reference< XDrawPage > xDrawPage( xDrawPages->getByIndex( j ), UNO_QUERY_THROW );
+ std::vector< Reference< XDrawPage > >::iterator aIter( vUsedPageList.begin() );
+ std::vector< Reference< XDrawPage > >::iterator aEnd( vUsedPageList.end() );
+ while( aIter != aEnd )
+ {
+ if ( *aIter == xDrawPage )
+ break;
+ ++aIter;
+ }
+ if ( aIter == aEnd )
+ rNonUsedPageList.push_back( xDrawPage );
+ }
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+
+void PageCollector::CollectMasterPages( const Reference< XModel >& rxModel, std::vector< PageCollector::MasterPageEntity >& rMasterPageList )
+{
+ typedef std::vector< MasterPageEntity > MasterPageList;
+ typedef MasterPageList::iterator MasterPageIter;
+
+ try
+ {
+ // generating list of all master pages
+ Reference< XMasterPagesSupplier > xMasterPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xMasterPages( xMasterPagesSupplier->getMasterPages(), UNO_QUERY_THROW );
+ for ( sal_Int32 i = 0; i < xMasterPages->getCount(); i++ )
+ {
+ Reference< XDrawPage > xMasterPage( xMasterPages->getByIndex( i ), UNO_QUERY_THROW );
+ MasterPageIter aIter( rMasterPageList.begin() );
+ MasterPageIter aEnd ( rMasterPageList.end() );
+ while( aIter != aEnd )
+ {
+ if ( aIter->xMasterPage == xMasterPage )
+ break;
+ ++aIter;
+ }
+ if ( aIter == aEnd )
+ {
+ MasterPageEntity aMasterPageEntity;
+ aMasterPageEntity.xMasterPage = xMasterPage;
+ aMasterPageEntity.bUsed = sal_False;
+ rMasterPageList.push_back( aMasterPageEntity );
+ }
+ }
+
+ // mark masterpages which are referenced by drawpages
+ Reference< XDrawPagesSupplier > xDrawPagesSupplier( rxModel, UNO_QUERY_THROW );
+ Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
+ for ( sal_Int32 j = 0; j < xDrawPages->getCount(); j++ )
+ {
+ Reference< XMasterPageTarget > xMasterPageTarget( xDrawPages->getByIndex( j ), UNO_QUERY_THROW );
+ Reference< XDrawPage > xMasterPage( xMasterPageTarget->getMasterPage(), UNO_QUERY_THROW );
+ MasterPageIter aIter( rMasterPageList.begin() );
+ MasterPageIter aEnd ( rMasterPageList.end() );
+ while( aIter != aEnd )
+ {
+ if ( aIter->xMasterPage == xMasterPage )
+ {
+ aIter->bUsed = sal_True;
+ break;
+ }
+ ++aIter;
+ }
+ if ( aIter == aEnd )
+ throw uno::RuntimeException();
+ }
+ }
+ catch( Exception& )
+ {
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/pagecollector.hxx b/sdext/source/minimizer/pagecollector.hxx
new file mode 100644
index 000000000000..3387dd92213f
--- /dev/null
+++ b/sdext/source/minimizer/pagecollector.hxx
@@ -0,0 +1,52 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef PAGECOLLECTOR_HXX
+#define PAGECOLLECTOR_HXX
+
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <vector>
+
+class PageCollector
+{
+ public:
+
+ struct MasterPageEntity
+ {
+ com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage > xMasterPage;
+ sal_Bool bUsed;
+ };
+ static void CollectCustomShowPages( const com::sun::star::uno::Reference< com::sun::star::frame::XModel >&, const rtl::OUString& rCustomShow, std::vector< com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage > >& );
+ static void CollectNonCustomShowPages( const com::sun::star::uno::Reference< com::sun::star::frame::XModel >&, const rtl::OUString& rCustomShow, std::vector< com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage > >& );
+ static void CollectMasterPages( const com::sun::star::uno::Reference< com::sun::star::frame::XModel >&, std::vector< MasterPageEntity >& );
+};
+
+#endif // PAGECOLLECTOR_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/pppoptimizer.cxx b/sdext/source/minimizer/pppoptimizer.cxx
new file mode 100644
index 000000000000..f49bfc551531
--- /dev/null
+++ b/sdext/source/minimizer/pppoptimizer.cxx
@@ -0,0 +1,212 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pppoptimizer.hxx"
+#include "impoptimizer.hxx"
+#include <osl/file.hxx>
+
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::util;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+
+#define SERVICE_NAME "com.sun.star.comp.PPPOptimizer"
+
+// ----------------
+// - PPPOptimizer -
+// ----------------
+
+PPPOptimizer::PPPOptimizer( const Reference< XComponentContext > &rxMSF ) :
+ mxMSF( rxMSF )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+PPPOptimizer::~PPPOptimizer()
+{
+}
+
+// -----------------------------------------------------------------------------
+// XInitialization
+// -----------------------------------------------------------------------------
+
+void SAL_CALL PPPOptimizer::initialize( const Sequence< Any >& aArguments )
+ throw ( Exception, RuntimeException )
+{
+ if( aArguments.getLength() != 1 )
+ throw IllegalArgumentException();
+
+ Reference< XFrame > xFrame;
+ aArguments[ 0 ] >>= xFrame;
+ if ( xFrame.is() )
+ mxController = xFrame->getController();
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+OUString SAL_CALL PPPOptimizer::getImplementationName()
+ throw ( RuntimeException )
+{
+ return PPPOptimizer_getImplementationName();
+}
+
+sal_Bool SAL_CALL PPPOptimizer::supportsService( const OUString& rServiceName )
+ throw ( RuntimeException )
+{
+ return rServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( SERVICE_NAME ) );
+}
+
+Sequence< OUString > SAL_CALL PPPOptimizer::getSupportedServiceNames()
+ throw ( RuntimeException )
+{
+ return PPPOptimizer_getSupportedServiceNames();
+}
+
+// -----------------------------------------------------------------------------
+// XDispatchProvider
+// -----------------------------------------------------------------------------
+
+Reference< com::sun::star::frame::XDispatch > SAL_CALL PPPOptimizer::queryDispatch(
+ const URL& aURL, const ::rtl::OUString& /* aTargetFrameName */, sal_Int32 /* nSearchFlags */ ) throw( RuntimeException )
+{
+ Reference < XDispatch > xRet;
+ if ( aURL.Protocol.compareToAscii( "vnd.com.sun.star.comp.PPPOptimizer:" ) == 0 )
+ {
+// if ( aURL.Path.compareToAscii( "Function1" ) == 0 )
+ xRet = this;
+ }
+ return xRet;
+}
+
+//------------------------------------------------------------------------------
+
+Sequence< Reference< com::sun::star::frame::XDispatch > > SAL_CALL PPPOptimizer::queryDispatches(
+ const Sequence< com::sun::star::frame::DispatchDescriptor >& aDescripts ) throw( RuntimeException )
+{
+ Sequence< Reference< com::sun::star::frame::XDispatch> > aReturn( aDescripts.getLength() );
+ Reference< com::sun::star::frame::XDispatch>* pReturn = aReturn.getArray();
+ const com::sun::star::frame::DispatchDescriptor* pDescripts = aDescripts.getConstArray();
+ for (sal_Int16 i = 0; i < aDescripts.getLength(); ++i, ++pReturn, ++pDescripts )
+ {
+ *pReturn = queryDispatch( pDescripts->FeatureURL, pDescripts->FrameName, pDescripts->SearchFlags );
+ }
+ return aReturn;
+}
+
+// -----------------------------------------------------------------------------
+// XDispatch
+// -----------------------------------------------------------------------------
+
+void SAL_CALL PPPOptimizer::dispatch( const URL& rURL, const Sequence< PropertyValue >& lArguments )
+ throw( RuntimeException )
+{
+ if ( mxController.is() && ( rURL.Protocol.compareToAscii( "vnd.com.sun.star.comp.PPPOptimizer:" ) == 0 ) )
+ {
+ if ( rURL.Path.compareToAscii( "optimize" ) == 0 )
+ {
+ Reference< XModel > xModel( mxController->getModel() );
+ if ( xModel.is() )
+ {
+ try
+ {
+ ImpOptimizer aOptimizer( mxMSF, xModel );
+ aOptimizer.Optimize( lArguments );
+ }
+ catch( Exception& )
+ {
+ }
+ }
+ }
+ }
+}
+
+//===============================================
+void SAL_CALL PPPOptimizer::addStatusListener( const Reference< XStatusListener >&, const URL& )
+ throw( RuntimeException )
+{
+ // TODO
+ OSL_FAIL( "PPPOptimizer::addStatusListener()\nNot implemented yet!" );
+}
+
+//===============================================
+void SAL_CALL PPPOptimizer::removeStatusListener( const Reference< XStatusListener >&, const URL& )
+ throw( RuntimeException )
+{
+ // TODO
+ OSL_FAIL( "PPPOptimizer::removeStatusListener()\nNot implemented yet!" );
+}
+
+// -----------------------------------------------------------------------------
+// returning filesize, on error zero is returned
+sal_Int64 PPPOptimizer::GetFileSize( const rtl::OUString& rURL )
+{
+ sal_Int64 nFileSize = 0;
+ osl::DirectoryItem aItem;
+ if ( osl::DirectoryItem::get( rURL, aItem ) == osl::FileBase::E_None )
+ {
+ osl::FileStatus aStatus( osl_FileStatus_Mask_FileSize );
+ if ( aItem.getFileStatus( aStatus ) == osl::FileBase::E_None )
+ {
+ nFileSize = aStatus.getFileSize();
+ }
+ }
+ return nFileSize;
+}
+
+// -----------------------------------------------------------------------------
+
+OUString PPPOptimizer_getImplementationName()
+{
+ return OUString ( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.comp.PPPOptimizerImp" ) );
+}
+
+Sequence< OUString > PPPOptimizer_getSupportedServiceNames()
+{
+ Sequence < OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = OUString ( RTL_CONSTASCII_USTRINGPARAM( SERVICE_NAME ) );
+ return aRet;
+}
+
+Reference< XInterface > PPPOptimizer_createInstance( const Reference< XComponentContext > & rSMgr )
+ throw( Exception )
+{
+ return (cppu::OWeakObject*) new PPPOptimizer( rSMgr );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/pppoptimizer.hxx b/sdext/source/minimizer/pppoptimizer.hxx
new file mode 100644
index 000000000000..eaa4502e8d5f
--- /dev/null
+++ b/sdext/source/minimizer/pppoptimizer.hxx
@@ -0,0 +1,103 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef PPPOPTIMIZER_HXX
+#define PPPOPTIMIZER_HXX
+
+#include <cppuhelper/implbase4.hxx>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XMultiComponentFactory.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/frame/XController.hpp>
+
+// ----------------
+// - PPPOptimizer -
+// ----------------
+
+class PPPOptimizer : public cppu::WeakImplHelper4<
+ com::sun::star::lang::XInitialization,
+ com::sun::star::lang::XServiceInfo,
+ com::sun::star::frame::XDispatchProvider,
+ com::sun::star::frame::XDispatch >
+{
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxMSF;
+ com::sun::star::uno::Reference< com::sun::star::frame::XController > mxController;
+
+public:
+
+ PPPOptimizer( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF );
+ virtual ~PPPOptimizer();
+
+ // XInitialization
+ void SAL_CALL initialize( const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& aArguments )
+ throw( com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw( com::sun::star::uno::RuntimeException );
+
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& sServiceName )
+ throw( com::sun::star::uno::RuntimeException );
+
+ virtual com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw( com::sun::star::uno::RuntimeException );
+
+ // XDispatchProvider
+ virtual com::sun::star::uno::Reference< com::sun::star::frame::XDispatch > SAL_CALL queryDispatch(
+ const com::sun::star::util::URL& aURL, const rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags )
+ throw(com::sun::star::uno::RuntimeException);
+
+ virtual com::sun::star::uno::Sequence< com::sun::star::uno::Reference< com::sun::star::frame::XDispatch > > SAL_CALL queryDispatches(
+ const com::sun::star::uno::Sequence< com::sun::star::frame::DispatchDescriptor >& aDescripts ) throw( com::sun::star::uno::RuntimeException );
+
+ // XDispatch
+ virtual void SAL_CALL dispatch( const com::sun::star::util::URL& aURL,
+ const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& lArguments )
+ throw( com::sun::star::uno::RuntimeException );
+
+ virtual void SAL_CALL addStatusListener( const com::sun::star::uno::Reference< com::sun::star::frame::XStatusListener >& xListener,
+ const com::sun::star::util::URL& aURL )
+ throw( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removeStatusListener( const com::sun::star::uno::Reference< com::sun::star::frame::XStatusListener >& xListener,
+ const com::sun::star::util::URL& aURL )
+ throw( com::sun::star::uno::RuntimeException );
+
+ static sal_Int64 GetFileSize( const rtl::OUString& rURL );
+};
+
+rtl::OUString PPPOptimizer_getImplementationName();
+com::sun::star::uno::Sequence< rtl::OUString > PPPOptimizer_getSupportedServiceNames();
+com::sun::star::uno::Reference< com::sun::star::uno::XInterface > PPPOptimizer_createInstance( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > & rSMgr )
+ throw( com::sun::star::uno::Exception );
+
+#endif // PPPOPTIMIZER_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/pppoptimizerdialog.cxx b/sdext/source/minimizer/pppoptimizerdialog.cxx
new file mode 100644
index 000000000000..a04015ab5be4
--- /dev/null
+++ b/sdext/source/minimizer/pppoptimizerdialog.cxx
@@ -0,0 +1,218 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pppoptimizerdialog.hxx"
+#include "optimizerdialog.hxx"
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::util;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+
+#define SERVICE_NAME "com.sun.star.comp.SunPresentationMinimizer"
+#include <rtl/ustrbuf.hxx>
+
+// ----------------------
+// - PPPOptimizerDialog -
+// ----------------------
+
+PPPOptimizerDialog::PPPOptimizerDialog( const Reference< XComponentContext > &rxMSF ) :
+ mxMSF( rxMSF ),
+ mpOptimizerDialog( NULL )
+{
+}
+
+// -----------------------------------------------------------------------------
+
+PPPOptimizerDialog::~PPPOptimizerDialog()
+{
+}
+
+// -----------------------------------------------------------------------------
+// XInitialization
+// -----------------------------------------------------------------------------
+
+void SAL_CALL PPPOptimizerDialog::initialize( const Sequence< Any >& aArguments )
+ throw ( Exception, RuntimeException )
+{
+ if( aArguments.getLength() != 1 )
+ throw IllegalArgumentException();
+
+ aArguments[ 0 ] >>= mxFrame;
+ if ( mxFrame.is() )
+ mxController = mxFrame->getController();
+}
+
+// -----------------------------------------------------------------------------
+// XServiceInfo
+// -----------------------------------------------------------------------------
+
+OUString SAL_CALL PPPOptimizerDialog::getImplementationName()
+ throw (RuntimeException)
+{
+ return PPPOptimizerDialog_getImplementationName();
+}
+
+sal_Bool SAL_CALL PPPOptimizerDialog::supportsService( const OUString& ServiceName )
+ throw ( RuntimeException )
+{
+ return ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( SERVICE_NAME ) );
+}
+
+Sequence< OUString > SAL_CALL PPPOptimizerDialog::getSupportedServiceNames()
+ throw (RuntimeException)
+{
+ return PPPOptimizerDialog_getSupportedServiceNames();
+}
+
+// -----------------------------------------------------------------------------
+// XDispatchProvider
+// -----------------------------------------------------------------------------
+
+Reference< com::sun::star::frame::XDispatch > SAL_CALL PPPOptimizerDialog::queryDispatch(
+ const URL& aURL, const ::rtl::OUString& /* aTargetFrameName */, sal_Int32 /* nSearchFlags */ ) throw( RuntimeException )
+{
+ Reference < XDispatch > xRet;
+ if ( aURL.Protocol.compareToAscii( "vnd.com.sun.star.comp.SunPresentationMinimizer:" ) == 0 )
+ xRet = this;
+
+ return xRet;
+}
+
+//------------------------------------------------------------------------------
+
+Sequence< Reference< com::sun::star::frame::XDispatch > > SAL_CALL PPPOptimizerDialog::queryDispatches(
+ const Sequence< com::sun::star::frame::DispatchDescriptor >& aDescripts ) throw( RuntimeException )
+{
+ Sequence< Reference< com::sun::star::frame::XDispatch> > aReturn( aDescripts.getLength() );
+ Reference< com::sun::star::frame::XDispatch>* pReturn = aReturn.getArray();
+ const com::sun::star::frame::DispatchDescriptor* pDescripts = aDescripts.getConstArray();
+ for (sal_Int16 i = 0; i < aDescripts.getLength(); ++i, ++pReturn, ++pDescripts )
+ {
+ *pReturn = queryDispatch( pDescripts->FeatureURL, pDescripts->FrameName, pDescripts->SearchFlags );
+ }
+ return aReturn;
+}
+
+// -----------------------------------------------------------------------------
+// XDispatch
+// -----------------------------------------------------------------------------
+
+void SAL_CALL PPPOptimizerDialog::dispatch( const URL& rURL,
+ const Sequence< PropertyValue >& rArguments )
+ throw( RuntimeException )
+{
+
+ if ( mxController.is() && ( rURL.Protocol.compareToAscii( "vnd.com.sun.star.comp.SunPresentationMinimizer:" ) == 0 ) )
+ {
+ if ( rURL.Path.compareToAscii( "execute" ) == 0 )
+ {
+ try
+ {
+ sal_Int64 nFileSizeSource = 0;
+ sal_Int64 nFileSizeDest = 0;
+ mpOptimizerDialog = new OptimizerDialog( mxMSF, mxFrame, this );
+ mpOptimizerDialog->execute();
+
+ const Any* pVal( mpOptimizerDialog->maStats.GetStatusValue( TK_FileSizeSource ) );
+ if ( pVal )
+ *pVal >>= nFileSizeSource;
+ pVal = mpOptimizerDialog->maStats.GetStatusValue( TK_FileSizeDestination );
+ if ( pVal )
+ *pVal >>= nFileSizeDest;
+
+ if ( nFileSizeSource && nFileSizeDest )
+ {
+ rtl::OUStringBuffer sBuf( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Your Presentation has been minimized from:")) );
+ sBuf.append( rtl::OUString::valueOf( nFileSizeSource >> 10 ) );
+ sBuf.append( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("KB to ")) );
+ sBuf.append( rtl::OUString::valueOf( nFileSizeDest >> 10 ) );
+ sBuf.append( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("KB.")) );
+ OUString sResult( sBuf.makeStringAndClear() );
+// mpOptimizerDialog->showMessageBox( sResult, sResult, sal_False );
+ }
+ delete mpOptimizerDialog, mpOptimizerDialog = NULL;
+ }
+ catch( ... )
+ {
+
+ }
+ }
+ else if ( rURL.Path.compareToAscii( "statusupdate" ) == 0 )
+ {
+ if ( mpOptimizerDialog )
+ mpOptimizerDialog->UpdateStatus( rArguments );
+ }
+ }
+}
+
+//===============================================
+void SAL_CALL PPPOptimizerDialog::addStatusListener( const Reference< XStatusListener >&, const URL& )
+ throw( RuntimeException )
+{
+ // TODO
+ // OSL_FAIL( "PPPOptimizerDialog::addStatusListener()\nNot implemented yet!" );
+}
+
+//===============================================
+void SAL_CALL PPPOptimizerDialog::removeStatusListener( const Reference< XStatusListener >&, const URL& )
+ throw( RuntimeException )
+{
+ // TODO
+ // OSL_FAIL( "PPPOptimizerDialog::removeStatusListener()\nNot implemented yet!" );
+}
+
+// -----------------------------------------------------------------------------
+
+OUString PPPOptimizerDialog_getImplementationName()
+{
+ return OUString ( RTL_CONSTASCII_USTRINGPARAM ( "com.sun.star.comp.SunPresentationMinimizerImp" ) );
+}
+
+Sequence< OUString > PPPOptimizerDialog_getSupportedServiceNames()
+{
+ Sequence < OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = OUString ( RTL_CONSTASCII_USTRINGPARAM( SERVICE_NAME ) );
+ return aRet;
+}
+
+Reference< XInterface > PPPOptimizerDialog_createInstance( const Reference< XComponentContext > & rSMgr)
+ throw( Exception )
+{
+ return (cppu::OWeakObject*) new PPPOptimizerDialog( rSMgr );
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/pppoptimizerdialog.hxx b/sdext/source/minimizer/pppoptimizerdialog.hxx
new file mode 100644
index 000000000000..712db18cb7ee
--- /dev/null
+++ b/sdext/source/minimizer/pppoptimizerdialog.hxx
@@ -0,0 +1,112 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef PPPOPTIMIZERDIALOG_HXX
+#define PPPOPTIMIZERDIALOGOG_HXX
+
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/document/XExporter.hpp>
+#include <com/sun/star/beans/XPropertyAccess.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/lang/XMultiComponentFactory.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <cppuhelper/implbase4.hxx>
+
+// ----------------------
+// - PPPOptimizerDialog -
+// ----------------------
+
+class OptimizerDialog;
+class PPPOptimizerDialog : public ::cppu::WeakImplHelper4<
+ com::sun::star::lang::XInitialization,
+ com::sun::star::lang::XServiceInfo,
+ com::sun::star::frame::XDispatchProvider,
+ com::sun::star::frame::XDispatch >
+{
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxMSF;
+ com::sun::star::uno::Reference< com::sun::star::frame::XFrame > mxFrame;
+ com::sun::star::uno::Reference< com::sun::star::frame::XController > mxController;
+
+ OptimizerDialog* mpOptimizerDialog;
+
+public:
+
+ PPPOptimizerDialog( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF );
+ virtual ~PPPOptimizerDialog();
+
+ // XInitialization
+ void SAL_CALL initialize( const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& aArguments )
+ throw( com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw( com::sun::star::uno::RuntimeException );
+
+ virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& sServiceName )
+ throw( com::sun::star::uno::RuntimeException );
+
+ virtual com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
+ throw( com::sun::star::uno::RuntimeException );
+
+ // XDispatchProvider
+ virtual com::sun::star::uno::Reference< com::sun::star::frame::XDispatch > SAL_CALL queryDispatch(
+ const com::sun::star::util::URL& aURL, const rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags )
+ throw(com::sun::star::uno::RuntimeException);
+
+ virtual com::sun::star::uno::Sequence< com::sun::star::uno::Reference< com::sun::star::frame::XDispatch > > SAL_CALL queryDispatches(
+ const com::sun::star::uno::Sequence< com::sun::star::frame::DispatchDescriptor >& aDescripts ) throw( com::sun::star::uno::RuntimeException );
+
+ // XDispatch
+ virtual void SAL_CALL dispatch( const com::sun::star::util::URL& aURL,
+ const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& lArguments )
+ throw( com::sun::star::uno::RuntimeException );
+
+ virtual void SAL_CALL addStatusListener( const com::sun::star::uno::Reference< com::sun::star::frame::XStatusListener >& xListener,
+ const com::sun::star::util::URL& aURL )
+ throw( com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removeStatusListener( const com::sun::star::uno::Reference< com::sun::star::frame::XStatusListener >& xListener,
+ const com::sun::star::util::URL& aURL )
+ throw( com::sun::star::uno::RuntimeException );
+};
+
+rtl::OUString PPPOptimizerDialog_getImplementationName();
+com::sun::star::uno::Sequence< rtl::OUString > PPPOptimizerDialog_getSupportedServiceNames();
+com::sun::star::uno::Reference< com::sun::star::uno::XInterface > PPPOptimizerDialog_createInstance( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > & rSMgr )
+ throw( com::sun::star::uno::Exception );
+
+// -----------------------------------------------------------------------------
+
+#endif // PPPOPTIMIZERDIALOG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/pppoptimizertoken.cxx b/sdext/source/minimizer/pppoptimizertoken.cxx
new file mode 100644
index 000000000000..669132de7cba
--- /dev/null
+++ b/sdext/source/minimizer/pppoptimizertoken.cxx
@@ -0,0 +1,349 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pppoptimizertoken.hxx"
+#include <osl/mutex.hxx>
+#include <sal/macros.h>
+#include <boost/unordered_map.hpp>
+#include <string.h>
+
+struct THash
+{
+ size_t operator()( const char* s ) const
+ {
+ return rtl_str_hashCode(s);
+ }
+};
+struct TCheck
+{
+ bool operator()( const char* s1, const char* s2 ) const
+ {
+ return strcmp( s1, s2 ) == 0;
+ }
+};
+typedef boost::unordered_map< const char*, PPPOptimizerTokenEnum, THash, TCheck> TypeNameHashMap;
+static TypeNameHashMap* pHashMap = NULL;
+static ::osl::Mutex& getHashMapMutex()
+{
+ static osl::Mutex s_aHashMapProtection;
+ return s_aHashMapProtection;
+}
+
+struct TokenTable
+{
+ const char* pS;
+ PPPOptimizerTokenEnum pE;
+};
+
+static const TokenTable pTokenTableArray[] =
+{
+ { "rdmNavi", TK_rdmNavi },
+ { "lnNavSep1", TK_lnNavSep1 },
+ { "lnNavSep2", TK_lnNavSep2 },
+ { "btnNavHelp", TK_btnNavHelp },
+ { "btnNavBack", TK_btnNavBack },
+ { "btnNavNext", TK_btnNavNext },
+ { "btnNavFinish", TK_btnNavFinish },
+ { "btnNavCancel", TK_btnNavCancel },
+
+ { "FixedText0Pg0", TK_FixedText0Pg0 },
+ { "FixedText1Pg0", TK_FixedText1Pg0 },
+ { "Separator1Pg0", TK_Separator1Pg0 },
+ { "FixedText2Pg0", TK_FixedText2Pg0 },
+ { "ListBox0Pg0", TK_ListBox0Pg0 },
+ { "Button0Pg0", TK_Button0Pg0 },
+ { "RadioButton0Pg1", TK_RadioButton0Pg1 },
+ { "RadioButton1Pg1", TK_RadioButton1Pg1 },
+ { "FixedText0Pg1", TK_FixedText0Pg1 },
+ { "CheckBox1Pg1", TK_CheckBox1Pg1 },
+ { "FixedText1Pg1", TK_FixedText1Pg1 },
+ { "FixedText2Pg1", TK_FixedText2Pg1 },
+ { "FormattedField0Pg1", TK_FormattedField0Pg1 },
+ { "ComboBox0Pg1", TK_ComboBox0Pg1 },
+ { "CheckBox2Pg1", TK_CheckBox2Pg1 },
+ { "FixedText0Pg2", TK_FixedText0Pg2 },
+ { "FixedText1Pg2", TK_FixedText1Pg2 },
+ { "CheckBox0Pg2", TK_CheckBox0Pg2 },
+ { "RadioButton0Pg2", TK_RadioButton0Pg2 },
+ { "RadioButton1Pg2", TK_RadioButton1Pg2 },
+ { "FixedText0Pg3", TK_FixedText0Pg3 },
+ { "CheckBox0Pg3", TK_CheckBox0Pg3 },
+ { "FixedText1Pg3", TK_FixedText1Pg3 },
+ { "CheckBox1Pg3", TK_CheckBox1Pg3 },
+ { "FixedText2Pg3", TK_FixedText2Pg3 },
+ { "CheckBox2Pg3", TK_CheckBox2Pg3 },
+ { "CheckBox3Pg3", TK_CheckBox3Pg3 },
+ { "ListBox0Pg3", TK_ListBox0Pg3 },
+ { "Separator0Pg4", TK_Separator0Pg4 },
+ { "RadioButton0Pg4", TK_RadioButton0Pg4 },
+ { "RadioButton1Pg4", TK_RadioButton1Pg4 },
+ { "Separator1Pg4", TK_Separator1Pg4 },
+ { "FixedText0Pg4", TK_FixedText0Pg4 },
+ { "FixedText1Pg4", TK_FixedText1Pg4 },
+ { "FixedText2Pg4", TK_FixedText2Pg4 },
+ { "FixedText3Pg4", TK_FixedText3Pg4 },
+ { "FixedText4Pg4", TK_FixedText4Pg4 },
+ { "FixedText5Pg4", TK_FixedText5Pg4 },
+ { "FixedText6Pg4", TK_FixedText6Pg4 },
+ { "FixedText7Pg4", TK_FixedText7Pg4 },
+ { "FixedText8Pg4", TK_FixedText8Pg4 },
+ { "CheckBox1Pg4", TK_CheckBox1Pg4 },
+ { "ComboBox0Pg4", TK_ComboBox0Pg4 },
+
+ { "_blank", TK__blank },
+ { "_self", TK__self },
+ { "Activated", TK_Activated },
+ { "Align", TK_Align },
+ { "Alpha", TK_Alpha },
+ { "Animated", TK_Animated },
+ { "Background", TK_Background },
+ { "BitmapPath", TK_BitmapPath },
+ { "Border", TK_Border },
+ { "Closeable", TK_Closeable },
+ { "ColorMode", TK_ColorMode },
+ { "Complete", TK_Complete },
+ { "Compression", TK_Compression },
+ { "CurrentItemID", TK_CurrentItemID },
+ { "DefaultButton", TK_DefaultButton },
+ { "DocumentService", TK_DocumentService },
+ { "Dropdown", TK_Dropdown },
+ { "EffectiveValue", TK_EffectiveValue },
+ { "EffectiveMin", TK_EffectiveMin },
+ { "EffectiveMax", TK_EffectiveMax },
+ { "Enabled", TK_Enabled },
+ { "Extensions", TK_Extensions },
+ { "FileSizeDestination",TK_FileSizeDestination },
+ { "FileSizeSource", TK_FileSizeSource },
+ { "FillBitmap", TK_FillBitmap },
+ { "FillBitmapLogicalSize",TK_FillBitmapLogicalSize },
+ { "FillBitmapMode", TK_FillBitmapMode },
+ { "FillBitmapSizeX", TK_FillBitmapSizeX },
+ { "FillBitmapSizeY", TK_FillBitmapSizeY },
+ { "FillBitmapURL", TK_FillBitmapURL },
+ { "FillStyle", TK_FillStyle },
+ { "FilterData", TK_FilterData },
+ { "FilterName", TK_FilterName },
+ { "Flags", TK_Flags },
+ { "FontDescriptor", TK_FontDescriptor },
+ { "Graphic", TK_Graphic },
+ { "GraphicCrop", TK_GraphicCrop },
+ { "GraphicCropLogic", TK_GraphicCropLogic },
+ { "GraphicURL", TK_GraphicURL },
+ { "GraphicStreamURL", TK_GraphicStreamURL },
+ { "Height", TK_Height },
+ { "HelpFile", TK_HelpFile },
+ { "Hidden", TK_Hidden },
+ { "ID", TK_ID },
+ { "ImageURL", TK_ImageURL },
+ { "InformationDialog", TK_InformationDialog },
+ { "InputStream", TK_InputStream },
+ { "Interlaced", TK_Interlaced },
+ { "IsInternal", TK_IsInternal },
+ { "Label", TK_Label },
+ { "LineCount", TK_LineCount },
+ { "LogicalHeight", TK_LogicalHeight },
+ { "LogicalWidth", TK_LogicalWidth },
+ { "LogicalSize", TK_LogicalSize },
+ { "MimeType", TK_MimeType },
+ { "Moveable", TK_Moveable },
+ { "MultiLine", TK_MultiLine },
+ { "MultiSelection", TK_MultiSelection },
+ { "Name", TK_Name },
+ { "Orientation", TK_Orientation },
+ { "OutputStream", TK_OutputStream },
+ { "PixelHeight", TK_PixelHeight },
+ { "PixelWidth", TK_PixelWidth },
+ { "PositionX", TK_PositionX },
+ { "PositionY", TK_PositionY },
+ { "Progress", TK_Progress },
+ { "ProgressValue", TK_ProgressValue },
+ { "ProgressValueMax", TK_ProgressValueMax },
+ { "ProgressValueMin", TK_ProgressValueMin },
+ { "PushButtonType", TK_PushButtonType },
+ { "Quality", TK_Quality },
+ { "ReadOnly", TK_ReadOnly },
+ { "Repeat", TK_Repeat },
+ { "ScaleImage", TK_ScaleImage },
+ { "SelectedItems", TK_SelectedItems },
+ { "Settings", TK_Settings },
+ { "Size100thMM", TK_Size100thMM },
+ { "SizePixel", TK_SizePixel },
+ { "Spin", TK_Spin },
+ { "Step", TK_Step },
+ { "State", TK_State },
+ { "StatusDispatcher", TK_StatusDispatcher },
+ { "StringItemList", TK_StringItemList },
+ { "Strings", TK_Strings },
+ { "TabIndex", TK_TabIndex },
+ { "Template", TK_Template },
+ { "Text", TK_Text },
+ { "Title", TK_Title },
+ { "Transparent", TK_Transparent },
+ { "Type", TK_Type },
+ { "UIName", TK_UIName },
+ { "Value", TK_Value },
+ { "Width", TK_Width },
+ { "ZOrder", TK_ZOrder },
+
+ { "LastUsedSettings", TK_LastUsedSettings },
+ { "Settings/Templates", TK_Settings_Templates },
+ { "Settings/Templates/",TK_Settings_Templates_ },
+ { "JPEGCompression", TK_JPEGCompression },
+ { "JPEGQuality", TK_JPEGQuality },
+ { "RemoveCropArea", TK_RemoveCropArea },
+ { "ImageResolution", TK_ImageResolution },
+ { "EmbedLinkedGraphics",TK_EmbedLinkedGraphics },
+ { "OLEOptimization", TK_OLEOptimization },
+ { "OLEOptimizationType",TK_OLEOptimizationType },
+ { "DeleteUnusedMasterPages", TK_DeleteUnusedMasterPages },
+ { "DeleteHiddenSlides", TK_DeleteHiddenSlides },
+ { "DeleteNotesPages", TK_DeleteNotesPages },
+ { "CustomShowName", TK_CustomShowName },
+ { "SaveAs", TK_SaveAs },
+ { "SaveAsURL", TK_SaveAsURL },
+ { "OpenNewDocument", TK_OpenNewDocument },
+ { "EstimatedFileSize", TK_EstimatedFileSize },
+
+ { "Status", TK_Status },
+ { "Pages", TK_Pages },
+ { "CurrentPage", TK_CurrentPage },
+ { "GraphicObjects", TK_GraphicObjects },
+ { "CurrentGraphicObject",TK_CurrentGraphicObject },
+ { "OLEObjects", TK_OLEObjects },
+ { "CurrentOLEObject", TK_CurrentOLEObject },
+
+ { "STR_SUN_OPTIMIZATION_WIZARD2",STR_SUN_OPTIMIZATION_WIZARD2 },
+ { "STR_STEPS", STR_STEPS },
+ { "STR_HELP", STR_HELP },
+ { "STR_BACK", STR_BACK },
+ { "STR_NEXT", STR_NEXT },
+ { "STR_FINISH", STR_FINISH },
+ { "STR_CANCEL", STR_CANCEL },
+ { "STR_INTRODUCTION", STR_INTRODUCTION },
+ { "STR_INTRODUCTION_T", STR_INTRODUCTION_T },
+ { "STR_CHOSE_SETTINGS", STR_CHOSE_SETTINGS },
+ { "STR_REMOVE", STR_REMOVE },
+ { "STR_GRAPHIC_OPTIMIZATION", STR_GRAPHIC_OPTIMIZATION },
+ { "STR_IMAGE_OPTIMIZATION", STR_IMAGE_OPTIMIZATION },
+ { "STR_LOSSLESS_COMPRESSION", STR_LOSSLESS_COMPRESSION },
+ { "STR_JPEG_COMPRESSION", STR_JPEG_COMPRESSION },
+ { "STR_QUALITY", STR_QUALITY },
+ { "STR_REMOVE_CROP_AREA", STR_REMOVE_CROP_AREA },
+ { "STR_IMAGE_RESOLUTION", STR_IMAGE_RESOLUTION },
+ { "STR_IMAGE_RESOLUTION_0", STR_IMAGE_RESOLUTION_0 },
+ { "STR_IMAGE_RESOLUTION_1", STR_IMAGE_RESOLUTION_1 },
+ { "STR_IMAGE_RESOLUTION_2", STR_IMAGE_RESOLUTION_2 },
+ { "STR_IMAGE_RESOLUTION_3", STR_IMAGE_RESOLUTION_3 },
+ { "STR_EMBED_LINKED_GRAPHICS", STR_EMBED_LINKED_GRAPHICS },
+ { "STR_OLE_OBJECTS", STR_OLE_OBJECTS },
+ { "STR_OLE_OPTIMIZATION", STR_OLE_OPTIMIZATION },
+ { "STR_OLE_REPLACE", STR_OLE_REPLACE },
+ { "STR_ALL_OLE_OBJECTS", STR_ALL_OLE_OBJECTS },
+ { "STR_ALIEN_OLE_OBJECTS_ONLY", STR_ALIEN_OLE_OBJECTS_ONLY },
+ { "STR__OLE_OBJECTS_DESC", STR_OLE_OBJECTS_DESC },
+ { "STR_NO_OLE_OBJECTS_DESC", STR_NO_OLE_OBJECTS_DESC },
+ { "STR_SLIDES", STR_SLIDES },
+ { "STR_CHOOSE_SLIDES", STR_CHOOSE_SLIDES },
+ { "STR_MASTER_PAGES", STR_MASTER_PAGES },
+ { "STR_DELETE_MASTER_PAGES", STR_DELETE_MASTER_PAGES },
+ { "STR_DELETE_NOTES_PAGES", STR_DELETE_NOTES_PAGES },
+ { "STR_DELETE_HIDDEN_SLIDES", STR_DELETE_HIDDEN_SLIDES },
+ { "STR_CUSTOM_SHOW", STR_CUSTOM_SHOW },
+ { "STR_SUMMARY", STR_SUMMARY },
+ { "STR_SUMMARY_TITLE", STR_SUMMARY_TITLE },
+ { "STR_PROGRESS", STR_PROGRESS },
+ { "STR_OBJECTS_OPTIMIZED", STR_OBJECTS_OPTIMIZED },
+ { "STR_APPLY_TO_CURRENT", STR_APPLY_TO_CURRENT },
+ { "STR_AUTOMATICALLY_OPEN", STR_AUTOMATICALLY_OPEN },
+ { "STR_SAVE_SETTINGS", STR_SAVE_SETTINGS },
+ { "STR_SAVE_AS", STR_SAVE_AS },
+ { "STR_DELETE_SLIDES", STR_DELETE_SLIDES },
+ { "STR_OPTIMIZE_IMAGES", STR_OPTIMIZE_IMAGES },
+ { "STR_CREATE_REPLACEMENT", STR_CREATE_REPLACEMENT },
+ { "STR_CURRENT_FILESIZE", STR_CURRENT_FILESIZE },
+ { "STR_ESTIMATED_FILESIZE", STR_ESTIMATED_FILESIZE },
+ { "STR_MB", STR_MB },
+ { "MY_SETTINGS", STR_MY_SETTINGS },
+ { "STR_DEFAULT_SESSION", STR_DEFAULT_SESSION },
+ { "STR_MODIFY_WARNING", STR_MODIFY_WARNING },
+ { "STR_YES", STR_YES },
+ { "STR_OK", STR_OK },
+ { "STR_INFO_1", STR_INFO_1 },
+ { "STR_INFO_2", STR_INFO_2 },
+ { "STR_INFO_3", STR_INFO_3 },
+ { "STR_INFO_4", STR_INFO_4 },
+ { "STR_DUPLICATING_PRESENTATION",STR_DUPLICATING_PRESENTATION },
+ { "STR_DELETING_SLIDES", STR_DELETING_SLIDES },
+ { "STR_OPTIMIZING_GRAPHICS", STR_OPTIMIZING_GRAPHICS },
+ { "STR_CREATING_OLE_REPLACEMENTS",STR_CREATING_OLE_REPLACEMENTS },
+ { "STR_FileSizeSeparator", STR_FILESIZESEPARATOR },
+
+ { "Last", TK_Last },
+ { "NotFound", TK_NotFound }
+};
+
+PPPOptimizerTokenEnum TKGet( const rtl::OUString& rToken )
+{
+ if ( !pHashMap )
+ { // init hash map
+ ::osl::MutexGuard aGuard( getHashMapMutex() );
+ if ( !pHashMap )
+ {
+ TypeNameHashMap* pH = new TypeNameHashMap;
+ const TokenTable* pPtr = pTokenTableArray;
+ const TokenTable* pEnd = pPtr + SAL_N_ELEMENTS( pTokenTableArray );
+ for ( ; pPtr < pEnd; pPtr++ )
+ (*pH)[ pPtr->pS ] = pPtr->pE;
+ pHashMap = pH;
+ }
+ }
+ PPPOptimizerTokenEnum eRetValue = TK_NotFound;
+ int i, nLen = rToken.getLength();
+ char* pBuf = new char[ nLen + 1 ];
+ for ( i = 0; i < nLen; i++ )
+ pBuf[ i ] = (char)rToken[ i ];
+ pBuf[ i ] = 0;
+ TypeNameHashMap::iterator aHashIter( pHashMap->find( pBuf ) );
+ delete[] pBuf;
+ if ( aHashIter != pHashMap->end() )
+ eRetValue = (*aHashIter).second;
+ return eRetValue;
+}
+
+rtl::OUString TKGet( const PPPOptimizerTokenEnum eToken )
+{
+ sal_uInt32 i = eToken >= TK_Last
+ ? (sal_uInt32)TK_NotFound
+ : (sal_uInt32)eToken;
+ return rtl::OUString::createFromAscii( pTokenTableArray[ i ].pS );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/pppoptimizertoken.hxx b/sdext/source/minimizer/pppoptimizertoken.hxx
new file mode 100644
index 000000000000..19ae973c7572
--- /dev/null
+++ b/sdext/source/minimizer/pppoptimizertoken.hxx
@@ -0,0 +1,286 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _PPPOPTIMIZER_TOKEN_HXX
+#define _PPPOPTIMIZER_TOKEN_HXX
+
+#include <rtl/ustring.hxx>
+
+enum PPPOptimizerTokenEnum
+{
+ TK_rdmNavi,
+ TK_lnNavSep1,
+ TK_lnNavSep2,
+ TK_btnNavHelp,
+ TK_btnNavBack,
+ TK_btnNavNext,
+ TK_btnNavFinish,
+ TK_btnNavCancel,
+
+ TK_FixedText0Pg0,
+ TK_FixedText1Pg0,
+ TK_Separator1Pg0,
+ TK_FixedText2Pg0,
+ TK_ListBox0Pg0,
+ TK_Button0Pg0,
+ TK_RadioButton0Pg1,
+ TK_RadioButton1Pg1,
+ TK_FixedText0Pg1,
+ TK_CheckBox1Pg1,
+ TK_FixedText1Pg1,
+ TK_FixedText2Pg1,
+ TK_FormattedField0Pg1,
+ TK_ComboBox0Pg1,
+ TK_CheckBox2Pg1,
+ TK_FixedText0Pg2,
+ TK_FixedText1Pg2,
+ TK_CheckBox0Pg2,
+ TK_RadioButton0Pg2,
+ TK_RadioButton1Pg2,
+ TK_FixedText0Pg3,
+ TK_CheckBox0Pg3,
+ TK_FixedText1Pg3,
+ TK_CheckBox1Pg3,
+ TK_FixedText2Pg3,
+ TK_CheckBox2Pg3,
+ TK_CheckBox3Pg3,
+ TK_ListBox0Pg3,
+ TK_Separator0Pg4,
+ TK_RadioButton0Pg4,
+ TK_RadioButton1Pg4,
+ TK_Separator1Pg4,
+ TK_FixedText0Pg4,
+ TK_FixedText1Pg4,
+ TK_FixedText2Pg4,
+ TK_FixedText3Pg4,
+ TK_FixedText4Pg4,
+ TK_FixedText5Pg4,
+ TK_FixedText6Pg4,
+ TK_FixedText7Pg4,
+ TK_FixedText8Pg4,
+ TK_CheckBox1Pg4,
+ TK_ComboBox0Pg4,
+
+ TK__blank,
+ TK__self,
+ TK_Activated,
+ TK_Align,
+ TK_Alpha,
+ TK_Animated,
+ TK_Background,
+ TK_BitmapPath,
+ TK_Border,
+ TK_Closeable,
+ TK_ColorMode,
+ TK_Complete,
+ TK_Compression,
+ TK_CurrentItemID,
+ TK_DefaultButton,
+ TK_DocumentService,
+ TK_Dropdown,
+ TK_EffectiveValue,
+ TK_EffectiveMin,
+ TK_EffectiveMax,
+ TK_Enabled,
+ TK_Extensions,
+ TK_FileSizeDestination,
+ TK_FileSizeSource,
+ TK_FillBitmap,
+ TK_FillBitmapLogicalSize,
+ TK_FillBitmapMode,
+ TK_FillBitmapSizeX,
+ TK_FillBitmapSizeY,
+ TK_FillBitmapURL,
+ TK_FillStyle,
+ TK_FilterData,
+ TK_FilterName,
+ TK_Flags,
+ TK_FontDescriptor,
+ TK_Graphic,
+ TK_GraphicCrop,
+ TK_GraphicCropLogic,
+ TK_GraphicURL,
+ TK_GraphicStreamURL,
+ TK_Height,
+ TK_HelpFile,
+ TK_Hidden,
+ TK_ID,
+ TK_ImageURL,
+ TK_InformationDialog,
+ TK_InputStream,
+ TK_Interlaced,
+ TK_IsInternal,
+ TK_Label,
+ TK_LineCount,
+ TK_LogicalHeight,
+ TK_LogicalWidth,
+ TK_LogicalSize,
+ TK_MimeType,
+ TK_Moveable,
+ TK_MultiLine,
+ TK_MultiSelection,
+ TK_Name,
+ TK_Orientation,
+ TK_OutputStream,
+ TK_PixelHeight,
+ TK_PixelWidth,
+ TK_PositionX,
+ TK_PositionY,
+ TK_Progress,
+ TK_ProgressValue,
+ TK_ProgressValueMax,
+ TK_ProgressValueMin,
+ TK_PushButtonType,
+ TK_Quality,
+ TK_ReadOnly,
+ TK_Repeat,
+ TK_ScaleImage,
+ TK_SelectedItems,
+ TK_Settings,
+ TK_Size100thMM,
+ TK_SizePixel,
+ TK_Spin,
+ TK_Step,
+ TK_State,
+ TK_StatusDispatcher,
+ TK_StringItemList,
+ TK_Strings,
+ TK_TabIndex,
+ TK_Template,
+ TK_Text,
+ TK_Title,
+ TK_Transparent,
+ TK_Type,
+ TK_UIName,
+ TK_Value,
+ TK_Width,
+ TK_ZOrder,
+
+ TK_LastUsedSettings,
+ TK_Settings_Templates,
+ TK_Settings_Templates_,
+ TK_JPEGCompression,
+ TK_JPEGQuality,
+ TK_RemoveCropArea,
+ TK_ImageResolution,
+ TK_EmbedLinkedGraphics,
+ TK_OLEOptimization,
+ TK_OLEOptimizationType,
+ TK_DeleteUnusedMasterPages,
+ TK_DeleteHiddenSlides,
+ TK_DeleteNotesPages,
+ TK_CustomShowName,
+ TK_SaveAs,
+ TK_SaveAsURL,
+ TK_OpenNewDocument,
+ TK_EstimatedFileSize,
+
+ TK_Status,
+ TK_Pages,
+ TK_CurrentPage,
+ TK_GraphicObjects,
+ TK_CurrentGraphicObject,
+ TK_OLEObjects,
+ TK_CurrentOLEObject,
+
+ STR_SUN_OPTIMIZATION_WIZARD2,
+ STR_STEPS,
+ STR_HELP,
+ STR_BACK,
+ STR_NEXT,
+ STR_FINISH,
+ STR_CANCEL,
+ STR_INTRODUCTION,
+ STR_INTRODUCTION_T,
+ STR_CHOSE_SETTINGS,
+ STR_REMOVE,
+ STR_GRAPHIC_OPTIMIZATION,
+ STR_IMAGE_OPTIMIZATION,
+ STR_LOSSLESS_COMPRESSION,
+ STR_JPEG_COMPRESSION,
+ STR_QUALITY,
+ STR_REMOVE_CROP_AREA,
+ STR_IMAGE_RESOLUTION,
+ STR_IMAGE_RESOLUTION_0,
+ STR_IMAGE_RESOLUTION_1,
+ STR_IMAGE_RESOLUTION_2,
+ STR_IMAGE_RESOLUTION_3,
+ STR_EMBED_LINKED_GRAPHICS,
+ STR_OLE_OBJECTS,
+ STR_OLE_OPTIMIZATION,
+ STR_OLE_REPLACE,
+ STR_ALL_OLE_OBJECTS,
+ STR_ALIEN_OLE_OBJECTS_ONLY,
+ STR_OLE_OBJECTS_DESC,
+ STR_NO_OLE_OBJECTS_DESC,
+ STR_SLIDES,
+ STR_CHOOSE_SLIDES,
+ STR_MASTER_PAGES,
+ STR_DELETE_MASTER_PAGES,
+ STR_DELETE_NOTES_PAGES,
+ STR_DELETE_HIDDEN_SLIDES,
+ STR_CUSTOM_SHOW,
+ STR_SUMMARY,
+ STR_SUMMARY_TITLE,
+ STR_PROGRESS,
+ STR_OBJECTS_OPTIMIZED,
+ STR_APPLY_TO_CURRENT,
+ STR_AUTOMATICALLY_OPEN,
+ STR_SAVE_SETTINGS,
+ STR_SAVE_AS,
+ STR_DELETE_SLIDES,
+ STR_OPTIMIZE_IMAGES,
+ STR_CREATE_REPLACEMENT,
+ STR_CURRENT_FILESIZE,
+ STR_ESTIMATED_FILESIZE,
+ STR_MB,
+ STR_MY_SETTINGS,
+ STR_DEFAULT_SESSION,
+ STR_MODIFY_WARNING,
+ STR_YES,
+ STR_OK,
+ STR_INFO_1,
+ STR_INFO_2,
+ STR_INFO_3,
+ STR_INFO_4,
+ STR_DUPLICATING_PRESENTATION,
+ STR_DELETING_SLIDES,
+ STR_OPTIMIZING_GRAPHICS,
+ STR_CREATING_OLE_REPLACEMENTS,
+ STR_FILESIZESEPARATOR,
+
+ TK_Last,
+ TK_NotFound
+};
+
+PPPOptimizerTokenEnum TKGet( const rtl::OUString& );
+rtl::OUString TKGet( const PPPOptimizerTokenEnum );
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/pppoptimizeruno.cxx b/sdext/source/minimizer/pppoptimizeruno.cxx
new file mode 100644
index 000000000000..3998ce2d9fb3
--- /dev/null
+++ b/sdext/source/minimizer/pppoptimizeruno.cxx
@@ -0,0 +1,115 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include <stdio.h>
+#include <osl/mutex.hxx>
+#include <osl/thread.h>
+#include <cppuhelper/factory.hxx>
+#include <pppoptimizer.hxx>
+#include <pppoptimizerdialog.hxx>
+
+using namespace ::rtl;
+using namespace ::cppu;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::registry;
+
+extern "C"
+{
+ sal_Bool SAL_CALL component_writeInfo( void* /*pServiceManager*/, void* pRegistryKey )
+ {
+ if (pRegistryKey)
+ {
+ try
+ {
+ Reference< XRegistryKey > xNewKey;
+ sal_Int32 nPos;
+
+ xNewKey = reinterpret_cast< XRegistryKey * >( pRegistryKey )->createKey( PPPOptimizer_getImplementationName() );
+ xNewKey = xNewKey->createKey( OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) );
+ const Sequence< OUString > & rSNL1 = PPPOptimizer_getSupportedServiceNames();
+ const OUString * pArray1 = rSNL1.getConstArray();
+ for ( nPos = rSNL1.getLength(); nPos--; )
+ xNewKey->createKey( pArray1[nPos] );
+
+ xNewKey = reinterpret_cast< XRegistryKey * >( pRegistryKey )->createKey( PPPOptimizerDialog_getImplementationName() );
+ xNewKey = xNewKey->createKey( OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) );
+ const Sequence< OUString > & rSNL2 = PPPOptimizerDialog_getSupportedServiceNames();
+ const OUString * pArray2 = rSNL2.getConstArray();
+ for ( nPos = rSNL2.getLength(); nPos--; )
+ xNewKey->createKey( pArray2[nPos] );
+
+ return sal_True;
+ }
+ catch (InvalidRegistryException &)
+ {
+ OSL_FAIL( "### InvalidRegistryException!" );
+ }
+ }
+ return sal_False;
+ }
+
+ // -------------------------------------------------------------------------
+
+ SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( const sal_Char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ )
+ {
+ OUString aImplName( OUString::createFromAscii( pImplName ) );
+ void* pRet = 0;
+
+ if( pServiceManager )
+ {
+ Reference< XSingleComponentFactory > xFactory;
+ if( aImplName.equals( PPPOptimizer_getImplementationName() ) )
+ {
+ xFactory = createSingleComponentFactory(
+ PPPOptimizer_createInstance,
+ OUString::createFromAscii( pImplName ),
+ PPPOptimizer_getSupportedServiceNames() );
+
+ }
+ else if( aImplName.equals( PPPOptimizerDialog_getImplementationName() ) )
+ {
+ xFactory = createSingleComponentFactory(
+ PPPOptimizerDialog_createInstance,
+ OUString::createFromAscii( pImplName ),
+ PPPOptimizerDialog_getSupportedServiceNames() );
+ }
+ if( xFactory.is() )
+ {
+ xFactory->acquire();
+ pRet = xFactory.get();
+ }
+ }
+ return pRet;
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/registry/data/org/openoffice/Office/Addons.xcu b/sdext/source/minimizer/registry/data/org/openoffice/Office/Addons.xcu
new file mode 100644
index 000000000000..2b4465b402f1
--- /dev/null
+++ b/sdext/source/minimizer/registry/data/org/openoffice/Office/Addons.xcu
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Addons" oor:package="org.openoffice.Office">
+ <node oor:name="AddonUI">
+ <node oor:name="Images">
+ <node oor:name="opt-image" oor:op="replace">
+ <prop oor:name="URL">
+ <value>vnd.com.sun.star.comp.SunPresentationMinimizer:execute</value>
+ </prop>
+ <node oor:name="UserDefinedImages">
+ <prop oor:name="ImageSmallURL" oor:type="xs:string">
+ <value>%origin%/../../../../../bitmaps/opt_16.png</value>
+ </prop>
+ <prop oor:name="ImageBigURL" oor:type="xs:string">
+ <value>%origin%/../../../../../bitmaps/opt_26.png</value>
+ </prop>
+ <prop oor:name="ImageSmallHCURL" oor:type="xs:string">
+ <value>%origin%/../../../../../bitmaps/opt_16_h.png</value>
+ </prop>
+ <prop oor:name="ImageBigHCURL" oor:type="xs:string">
+ <value>%origin%/../../../../../bitmaps/opt_26_h.png</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="OfficeMenuBarMerging">
+ <node oor:name="SunPresentationMinimizer" oor:op="replace">
+ <node oor:name="Command1" oor:op="replace">
+ <prop oor:name="MergePoint">
+ <value>.uno:ToolsMenu\.uno:AVMediaPlayer</value>
+ </prop>
+ <prop oor:name="MergeCommand">
+ <value>AddAfter</value>
+ </prop>
+ <prop oor:name="MergeFallback">
+ <value>AddPath</value>
+ </prop>
+ <prop oor:name="MergeContext">
+ <value>com.sun.star.presentation.PresentationDocument</value>
+ </prop>
+ <node oor:name="MenuItems">
+ <node oor:name="SunPresentationMinimizerExecute1" oor:op="replace">
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>private:separator</value>
+ </prop>
+ </node>
+ <node oor:name="SunPresentationMinimizerExecute2" oor:op="replace">
+ <prop oor:name="URL" oor:type="xs:string">
+ <value>vnd.com.sun.star.comp.SunPresentationMinimizer:execute</value>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string">
+ <value xml:lang="en-US">~Minimize Presentation...</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ <prop oor:name="Context" oor:type="xs:string">
+ <value>com.sun.star.presentation.PresentationDocument</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/sdext/source/minimizer/registry/data/org/openoffice/Office/ProtocolHandler.xcu b/sdext/source/minimizer/registry/data/org/openoffice/Office/ProtocolHandler.xcu
new file mode 100644
index 000000000000..9baea2c363df
--- /dev/null
+++ b/sdext/source/minimizer/registry/data/org/openoffice/Office/ProtocolHandler.xcu
@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="ProtocolHandler" oor:package="org.openoffice.Office">
+ <node oor:name="HandlerSet">
+ <node oor:name="com.sun.star.comp.SunPresentationMinimizerImp" oor:op="replace">
+ <prop oor:name="Protocols" oor:type="oor:string-list">
+ <value>vnd.com.sun.star.comp.SunPresentationMinimizer:*</value>
+ </prop>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/sdext/source/minimizer/registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu b/sdext/source/minimizer/registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu
new file mode 100644
index 000000000000..08324953d32c
--- /dev/null
+++ b/sdext/source/minimizer/registry/data/org/openoffice/Office/extension/SunPresentationMinimizer.xcu
@@ -0,0 +1,383 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="SunPresentationMinimizer" oor:package="org.openoffice.Office.extension">
+
+ <prop oor:name="BitmapPath" oor:type="xs:string">
+ <value>%origin%/../../../../../../bitmaps</value>
+ </prop>
+
+ <prop oor:name="HelpFile" oor:type="xs:string">
+ <value xml:lang="en-US">%origin%/../../../../../../help/help_en-US.odt</value>
+ </prop>
+
+ <node oor:name="Strings">
+ <prop oor:name="STR_SUN_OPTIMIZATION_WIZARD2">
+ <value xml:lang="en-US">@MINIMIZEREXTENSIONPRODUCTNAME@</value>
+ </prop>
+ <prop oor:name="STR_STEPS">
+ <value xml:lang="en-US">Steps</value>
+ </prop>
+ <prop oor:name="STR_HELP">
+ <value xml:lang="en-US">~Help</value>
+ </prop>
+ <prop oor:name="STR_BACK">
+ <value xml:lang="en-US">&lt; ~Back</value>
+ </prop>
+ <prop oor:name="STR_NEXT">
+ <value xml:lang="en-US">~Next &gt;</value>
+ </prop>
+ <prop oor:name="STR_FINISH">
+ <value xml:lang="en-US">~Finish</value>
+ </prop>
+ <prop oor:name="STR_CANCEL">
+ <value xml:lang="en-US">Cancel</value>
+ </prop>
+ <prop oor:name="STR_INTRODUCTION">
+ <value xml:lang="en-US">Introduction</value>
+ </prop>
+ <prop oor:name="STR_INTRODUCTION_T">
+ <value xml:lang="en-US">The @MINIMIZEREXTENSIONPRODUCTNAME@ is used to reduce the file size of the current presentation. Images will be compressed and data, that is no longer needed, will be removed.
+
+ At the last step of the wizard you can choose to apply the changes to the current presentation or to create an optimized new version of the presentation.</value>
+ </prop>
+ <prop oor:name="STR_CHOSE_SETTINGS">
+ <value xml:lang="en-US">~Choose settings for @MINIMIZEREXTENSIONPRODUCTNAME@</value>
+ </prop>
+ <prop oor:name="STR_REMOVE">
+ <value xml:lang="en-US">~Delete</value>
+ </prop>
+ <prop oor:name="STR_GRAPHIC_OPTIMIZATION">
+ <value xml:lang="en-US">Choose settings for optimizing pictures and graphics</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_OPTIMIZATION">
+ <value xml:lang="en-US">Graphics</value>
+ </prop>
+ <prop oor:name="STR_LOSSLESS_COMPRESSION">
+ <value xml:lang="en-US">~Lossless compression</value>
+ </prop>
+ <prop oor:name="STR_JPEG_COMPRESSION">
+ <value xml:lang="en-US">~JPEG compression</value>
+ </prop>
+ <prop oor:name="STR_QUALITY">
+ <value xml:lang="en-US">~Quality in %</value>
+ </prop>
+ <prop oor:name="STR_REMOVE_CROP_AREA">
+ <value xml:lang="en-US">~Delete cropped graphic areas</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_RESOLUTION">
+ <value xml:lang="en-US">Reduce ~image resolution</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_RESOLUTION_0">
+ <value xml:lang="en-US">0;&lt;no change&gt;</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_RESOLUTION_1">
+ <value xml:lang="en-US">90;90 DPI (screen resolution)</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_RESOLUTION_2">
+ <value xml:lang="en-US">150;150 DPI (projector resolution)</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_RESOLUTION_3">
+ <value xml:lang="en-US">300;300 DPI (print resolution)</value>
+ </prop>
+ <prop oor:name="STR_EMBED_LINKED_GRAPHICS">
+ <value xml:lang="en-US">~Break links to external graphics</value>
+ </prop>
+ <prop oor:name="STR_OLE_OBJECTS">
+ <value xml:lang="en-US">OLE Objects</value>
+ </prop>
+ <prop oor:name="STR_OLE_OPTIMIZATION">
+ <value xml:lang="en-US">Choose settings for replacing OLE objects</value>
+ </prop>
+ <prop oor:name="STR_OLE_REPLACE">
+ <value xml:lang="en-US">Create static replacement graphics for OLE objects</value>
+ </prop>
+ <prop oor:name="STR_ALL_OLE_OBJECTS">
+ <value xml:lang="en-US">For ~all OLE objects</value>
+ </prop>
+ <prop oor:name="STR_ALIEN_OLE_OBJECTS_ONLY">
+ <value xml:lang="en-US">~For OLE objects not based on OpenDocument format</value>
+ </prop>
+ <prop oor:name="STR_OLE_OBJECTS_DESC">
+ <value xml:lang="en-US">Object Linking and Embedding (OLE) is a technology that allows embedding and linking to documents and other objects.
+
+The current presentation contains OLE objects.</value>
+ </prop>
+ <prop oor:name="STR_NO_OLE_OBJECTS_DESC">
+ <value xml:lang="en-US">Object Linking and Embedding (OLE) is a technology that allows embedding and linking to documents and other objects.
+
+The current presentation contains no OLE objects.</value>
+ </prop>
+ <prop oor:name="STR_SLIDES">
+ <value xml:lang="en-US">Slides</value>
+ </prop>
+ <prop oor:name="STR_CHOOSE_SLIDES">
+ <value xml:lang="en-US">Choose which slides to delete</value>
+ </prop>
+ <prop oor:name="STR_MASTER_PAGES">
+ <value xml:lang="en-US">Master Pages</value>
+ </prop>
+ <prop oor:name="STR_DELETE_MASTER_PAGES">
+ <value xml:lang="en-US">Delete unused ~master pages</value>
+ </prop>
+ <prop oor:name="STR_DELETE_NOTES_PAGES">
+ <value xml:lang="en-US">~Clear notes</value>
+ </prop>
+ <prop oor:name="STR_DELETE_HIDDEN_SLIDES">
+ <value xml:lang="en-US">Delete hidden ~slides</value>
+ </prop>
+ <prop oor:name="STR_CUSTOM_SHOW">
+ <value xml:lang="en-US">Delete slides that are not used for the ~custom slide show</value>
+ </prop>
+ <prop oor:name="STR_SUMMARY">
+ <value xml:lang="en-US">Summary</value>
+ </prop>
+ <prop oor:name="STR_SUMMARY_TITLE">
+ <value xml:lang="en-US">Choose where to apply the following changes</value>
+ </prop>
+ <prop oor:name="STR_PROGRESS">
+ <value xml:lang="en-US">Progress</value>
+ </prop>
+ <prop oor:name="STR_OBJECTS_OPTIMIZED">
+ <value xml:lang="en-US">Objects optimized</value>
+ </prop>
+ <prop oor:name="STR_APPLY_TO_CURRENT">
+ <value xml:lang="en-US">~Apply changes to current presentation</value>
+ </prop>
+ <prop oor:name="STR_AUTOMATICALLY_OPEN">
+ <value xml:lang="en-US">~Open newly created presentation</value>
+ </prop>
+ <prop oor:name="STR_SAVE_SETTINGS">
+ <value xml:lang="en-US">~Save settings as</value>
+ </prop>
+ <prop oor:name="STR_SAVE_AS">
+ <value xml:lang="en-US">~Duplicate presentation before applying changes</value>
+ </prop>
+ <prop oor:name="STR_DELETE_SLIDES">
+ <value xml:lang="en-US">Delete %SLIDES slides.</value>
+ </prop>
+ <prop oor:name="STR_OPTIMIZE_IMAGES">
+ <value xml:lang="en-US">Optimize %IMAGES graphics to %QUALITY% JPEG quality at %RESOLUTION DPI.</value>
+ </prop>
+ <prop oor:name="STR_CREATE_REPLACEMENT">
+ <value xml:lang="en-US">Create replacement graphics for %OLE objects.</value>
+ </prop>
+ <prop oor:name="STR_CURRENT_FILESIZE">
+ <value xml:lang="en-US">Current file size:</value>
+ </prop>
+ <prop oor:name="STR_ESTIMATED_FILESIZE">
+ <value xml:lang="en-US">Estimated new file size:</value>
+ </prop>
+ <prop oor:name="STR_MB">
+ <value xml:lang="en-US">%1 MB</value>
+ </prop>
+ <prop oor:name="MY_SETTINGS">
+ <value xml:lang="en-US">My Settings </value>
+ </prop>
+ <prop oor:name="STR_DEFAULT_SESSION">
+ <value xml:lang="en-US">default session</value>
+ </prop>
+ <prop oor:name="STR_MODIFY_WARNING">
+ <value xml:lang="en-US">The optimization will modify the current document. Do you want to continue?</value>
+ </prop>
+ <prop oor:name="STR_YES">
+ <value xml:lang="en-US">~Yes</value>
+ </prop>
+ <prop oor:name="STR_OK">
+ <value xml:lang="en-US">OK</value>
+ </prop>
+ <prop oor:name="STR_INFO_1">
+ <value xml:lang="en-US">The @MINIMIZEREXTENSIONPRODUCTNAME@ has successfully updated the presentation '%TITLE'. The file size has changed from %OLDFILESIZE MB to %NEWFILESIZE MB.</value>
+ </prop>
+ <prop oor:name="STR_INFO_2">
+ <value xml:lang="en-US">The @MINIMIZEREXTENSIONPRODUCTNAME@ has successfully updated the presentation '%TITLE'. The file size has changed from %OLDFILESIZE MB to approximated %NEWFILESIZE MB.</value>
+ </prop>
+ <prop oor:name="STR_INFO_3">
+ <value xml:lang="en-US">The @MINIMIZEREXTENSIONPRODUCTNAME@ has successfully updated the presentation '%TITLE'. The file size has changed to %NEWFILESIZE MB.</value>
+ </prop>
+ <prop oor:name="STR_INFO_4">
+ <value xml:lang="en-US">The @MINIMIZEREXTENSIONPRODUCTNAME@ has successfully updated the presentation '%TITLE'. The file size has changed to approximated %NEWFILESIZE MB.</value>
+ </prop>
+ <prop oor:name="STR_DUPLICATING_PRESENTATION">
+ <value xml:lang="en-US">Duplicating presentation...</value>
+ </prop>
+ <prop oor:name="STR_DELETING_SLIDES">
+ <value xml:lang="en-US">Deleting slides...</value>
+ </prop>
+ <prop oor:name="STR_OPTIMIZING_GRAPHICS">
+ <value xml:lang="en-US">Optimizing graphics...</value>
+ </prop>
+ <prop oor:name="STR_CREATING_OLE_REPLACEMENTS">
+ <value xml:lang="en-US">Creating replacement graphics for OLE objects...</value>
+ </prop>
+ <prop oor:name="STR_FILESIZESEPARATOR">
+ <value xml:lang="en-US">.</value>
+ </prop>
+ </node>
+ <node oor:name="LastUsedSettings">
+ <prop oor:name="Name">
+ <value xml:lang="en-US">Projector optimized</value>
+ </prop>
+ <prop oor:name="JPEGCompression">
+ <value>true</value>
+ </prop>
+ <prop oor:name="JPEGQuality">
+ <value>50</value>
+ </prop>
+ <prop oor:name="RemoveCropArea">
+ <value>true</value>
+ </prop>
+ <prop oor:name="ImageResolution">
+ <value>150</value>
+ </prop>
+ <prop oor:name="EmbedLinkedGraphics">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OLEOptimization">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OLEOptimizationType">
+ <value>0</value>
+ </prop>
+ <prop oor:name="DeleteUnusedMasterPages">
+ <value>true</value>
+ </prop>
+ <prop oor:name="DeleteHiddenSlides">
+ <value>true</value>
+ </prop>
+ <prop oor:name="DeleteNotesPages">
+ <value>false</value>
+ </prop>
+ <prop oor:name="SaveAs">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OpenNewDocument">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="Settings">
+ <node oor:name="Templates">
+ <node oor:name="template1" oor:op="replace">
+ <prop oor:name="Name">
+ <value xml:lang="en-US">Screen optimized (smallest file size)</value>
+ </prop>
+ <prop oor:name="JPEGCompression">
+ <value>true</value>
+ </prop>
+ <prop oor:name="JPEGQuality">
+ <value>25</value>
+ </prop>
+ <prop oor:name="RemoveCropArea">
+ <value>true</value>
+ </prop>
+ <prop oor:name="ImageResolution">
+ <value>90</value>
+ </prop>
+ <prop oor:name="EmbedLinkedGraphics">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OLEOptimization">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OLEOptimizationType">
+ <value>0</value>
+ </prop>
+ <prop oor:name="DeleteUnusedMasterPages">
+ <value>true</value>
+ </prop>
+ <prop oor:name="DeleteHiddenSlides">
+ <value>true</value>
+ </prop>
+ <prop oor:name="DeleteNotesPages">
+ <value>false</value>
+ </prop>
+ <prop oor:name="SaveAs">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OpenNewDocument">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="template2" oor:op="replace">
+ <prop oor:name="Name">
+ <value xml:lang="en-US">Projector optimized</value>
+ </prop>
+ <prop oor:name="JPEGCompression">
+ <value>true</value>
+ </prop>
+ <prop oor:name="JPEGQuality">
+ <value>50</value>
+ </prop>
+ <prop oor:name="RemoveCropArea">
+ <value>true</value>
+ </prop>
+ <prop oor:name="ImageResolution">
+ <value>150</value>
+ </prop>
+ <prop oor:name="EmbedLinkedGraphics">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OLEOptimization">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OLEOptimizationType">
+ <value>0</value>
+ </prop>
+ <prop oor:name="DeleteUnusedMasterPages">
+ <value>true</value>
+ </prop>
+ <prop oor:name="DeleteHiddenSlides">
+ <value>true</value>
+ </prop>
+ <prop oor:name="DeleteNotesPages">
+ <value>false</value>
+ </prop>
+ <prop oor:name="SaveAs">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OpenNewDocument">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="template3" oor:op="replace">
+ <prop oor:name="Name">
+ <value xml:lang="en-US">Print optimized</value>
+ </prop>
+ <prop oor:name="JPEGCompression">
+ <value>true</value>
+ </prop>
+ <prop oor:name="JPEGQuality">
+ <value>75</value>
+ </prop>
+ <prop oor:name="RemoveCropArea">
+ <value>true</value>
+ </prop>
+ <prop oor:name="ImageResolution">
+ <value>300</value>
+ </prop>
+ <prop oor:name="EmbedLinkedGraphics">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OLEOptimization">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OLEOptimizationType">
+ <value>0</value>
+ </prop>
+ <prop oor:name="DeleteUnusedMasterPages">
+ <value>true</value>
+ </prop>
+ <prop oor:name="DeleteHiddenSlides">
+ <value>true</value>
+ </prop>
+ <prop oor:name="DeleteNotesPages">
+ <value>false</value>
+ </prop>
+ <prop oor:name="SaveAs">
+ <value>true</value>
+ </prop>
+ <prop oor:name="OpenNewDocument">
+ <value>true</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/sdext/source/minimizer/registry/data/org/openoffice/Office/extension/makefile.mk b/sdext/source/minimizer/registry/data/org/openoffice/Office/extension/makefile.mk
new file mode 100644
index 000000000000..aa0d275a969a
--- /dev/null
+++ b/sdext/source/minimizer/registry/data/org/openoffice/Office/extension/makefile.mk
@@ -0,0 +1,50 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+PRJ=..$/..$/..$/..$/..$/..$/..$/..
+
+PRJNAME=sdext
+TARGET=data_ooOfficeext
+PACKAGE=org.openoffice.Office.extension
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/minimizer$/minimizer.pmk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+XCSROOT=$(PRJ)$/source$/minimizer
+ABSXCSROOT=$(PWD)$/$(PRJ)$/source$/minimizer
+
+# --- Targets ------------------------------------------------------
+
+XCUFILES= \
+ SunPresentationMinimizer.xcu
+
+MODULEFILES=
+
+LOCALIZEDFILES= \
+ SunPresentationMinimizer.xcu
+
+.INCLUDE : target.mk
diff --git a/sdext/source/minimizer/registry/data/org/openoffice/Office/makefile.mk b/sdext/source/minimizer/registry/data/org/openoffice/Office/makefile.mk
new file mode 100644
index 000000000000..659e888045d9
--- /dev/null
+++ b/sdext/source/minimizer/registry/data/org/openoffice/Office/makefile.mk
@@ -0,0 +1,48 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+PRJ=..$/..$/..$/..$/..$/..$/..
+
+PRJNAME=sdext
+TARGET=data_ooOffice
+PACKAGE=org.openoffice.Office
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/source$/minimizer$/minimizer.pmk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Targets ------------------------------------------------------
+
+XCUFILES= \
+ Addons.xcu \
+ ProtocolHandler.xcu
+
+MODULEFILES=
+
+LOCALIZEDFILES= \
+ Addons.xcu
+
+.INCLUDE : target.mk
diff --git a/sdext/source/minimizer/registry/schema/org/openoffice/Office/extension/SunPresentationMinimizer.xcs b/sdext/source/minimizer/registry/schema/org/openoffice/Office/extension/SunPresentationMinimizer.xcs
new file mode 100644
index 000000000000..f121768e0e72
--- /dev/null
+++ b/sdext/source/minimizer/registry/schema/org/openoffice/Office/extension/SunPresentationMinimizer.xcs
@@ -0,0 +1,326 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<oor:component-schema oor:name="SunPresentationMinimizer" oor:package="org.openoffice.Office.extension" xml:lang="en-US" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <templates>
+ <group oor:name="OptimizerSettings">
+ <info>
+ <desc>Describes the Presentation Optimization Wizard settings of one session</desc>
+ </info>
+ <prop oor:name="Name" oor:type="xs:string" oor:localized="true">
+ <info>
+ <desc>Specifies the name settings name</desc>
+ </info>
+ <value>Default</value>
+ </prop>
+ <prop oor:name="JPEGCompression" oor:type="xs:boolean">
+ <info>
+ <desc>Specifies if JPEG compression is being used</desc>
+ </info>
+ <value>true</value>
+ </prop>
+ <prop oor:name="JPEGQuality" oor:type="xs:int">
+ <info>
+ <desc>Specifies quality of the JPG export. A higher value results in higher quality and file size.</desc>
+ </info>
+ <constraints>
+ <minInclusive oor:value="1">
+ <info>
+ <desc>Represents lowest value that can be used. The lower the value, the less good is the compression quality and the bigger is be the file size.</desc>
+ </info>
+ </minInclusive>
+ <maxInclusive oor:value="100">
+ <info>
+ <desc>Represents highest value that can be used. The higher the value, the better is the compression quality and the smaller is the file size.</desc>
+ </info>
+ </maxInclusive>
+ </constraints>
+ <value>45</value>
+ </prop>
+ <prop oor:name="RemoveCropArea" oor:type="xs:boolean">
+ <info>
+ <desc>Specifies if the crop area of a picture has to be removed</desc>
+ </info>
+ <value>true</value>
+ </prop>
+ <prop oor:name="ImageResolution" oor:type="xs:int">
+ <info>
+ <desc>Specifies the Image Resolution that should be used in dpi. A value of zero determines that the image resolution should not be changed.</desc>
+ </info>
+ <value>150</value>
+ </prop>
+ <prop oor:name="EmbedLinkedGraphics" oor:type="xs:boolean">
+ <info>
+ <desc>Specifies if linked graphics are to be embedded</desc>
+ </info>
+ <value>true</value>
+ </prop>
+ <prop oor:name="OLEOptimization" oor:type="xs:boolean">
+ <info>
+ <desc>Specifies if OLE Objects are converted to Graphic objects at all</desc>
+ </info>
+ <value>true</value>
+ </prop>
+ <prop oor:name="OLEOptimizationType" oor:type="xs:short">
+ <info>
+ <desc>Specifies the compression type that is being used,.</desc>
+ </info>
+ <constraints>
+ <enumeration oor:value="0"><info><desc>Each</desc></info></enumeration>
+ <enumeration oor:value="1"><info><desc>Alien</desc></info></enumeration>
+ </constraints>
+ <value>0</value>
+ </prop>
+ <prop oor:name="DeleteUnusedMasterPages" oor:type="xs:boolean">
+ <info>
+ <desc>Specifies if unused Master Pages are being deleted</desc>
+ </info>
+ <value>true</value>
+ </prop>
+ <prop oor:name="DeleteHiddenSlides" oor:type="xs:boolean">
+ <info>
+ <desc>Specifies if hidden Slides are being deleted</desc>
+ </info>
+ <value>true</value>
+ </prop>
+ <prop oor:name="DeleteNotesPages" oor:type="xs:boolean">
+ <info>
+ <desc>Specifies if Notes Pages are being deleted</desc>
+ </info>
+ <value>false</value>
+ </prop>
+ <prop oor:name="SaveAs" oor:type="xs:boolean">
+ <info>
+ <desc>Specifies if the optimization is done on a new document.</desc>
+ </info>
+ <value>true</value>
+ </prop>
+ <prop oor:name="OpenNewDocument" oor:type="xs:boolean">
+ <info>
+ <desc>Specifies if the newly created document is opened automatically.</desc>
+ </info>
+ <value>true</value>
+ </prop>
+ </group>
+ </templates>
+ <component>
+ <prop oor:name="BitmapPath" oor:type="xs:string"/>
+ <prop oor:name="HelpFile" oor:type="xs:string"/>
+ <group oor:name="Strings">
+ <prop oor:name="STR_SUN_OPTIMIZATION_WIZARD2" oor:type="xs:string" oor:localized="true">
+ <value>Presentation Minimizer</value>
+ </prop>
+ <prop oor:name="STR_STEPS" oor:type="xs:string" oor:localized="true">
+ <value>Steps</value>
+ </prop>
+ <prop oor:name="STR_HELP" oor:type="xs:string" oor:localized="true">
+ <value>~Help</value>
+ </prop>
+ <prop oor:name="STR_BACK" oor:type="xs:string" oor:localized="true">
+ <value>&lt; ~Back</value>
+ </prop>
+ <prop oor:name="STR_NEXT" oor:type="xs:string" oor:localized="true">
+ <value>~Next &gt;</value>
+ </prop>
+ <prop oor:name="STR_FINISH" oor:type="xs:string" oor:localized="true">
+ <value>~Finish</value>
+ </prop>
+ <prop oor:name="STR_CANCEL" oor:type="xs:string" oor:localized="true">
+ <value>Cancel</value>
+ </prop>
+ <prop oor:name="STR_INTRODUCTION" oor:type="xs:string" oor:localized="true">
+ <value>Introduction</value>
+ </prop>
+ <prop oor:name="STR_INTRODUCTION_T" oor:type="xs:string" oor:localized="true">
+ <value>The Presentation Minimizer is used to reduce the file size of the current presentation. Images will be compressed and data, that is no longer needed, will be removed.
+
+ At the last step of the wizard you can choose to apply the changes to the current presentation or to create an optimized new version of the presentation.</value>
+ </prop>
+ <prop oor:name="STR_CHOSE_SETTINGS" oor:type="xs:string" oor:localized="true">
+ <value>~Choose settings for the Presentation Minimization Wizard</value>
+ </prop>
+ <prop oor:name="STR_REMOVE" oor:type="xs:string" oor:localized="true">
+ <value>~Delete</value>
+ </prop>
+ <prop oor:name="STR_GRAPHIC_OPTIMIZATION" oor:type="xs:string" oor:localized="true">
+ <value>Choose settings for optimizing pictures and graphics</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_OPTIMIZATION" oor:type="xs:string" oor:localized="true">
+ <value>Graphics</value>
+ </prop>
+ <prop oor:name="STR_LOSSLESS_COMPRESSION" oor:type="xs:string" oor:localized="true">
+ <value>~Lossless compression</value>
+ </prop>
+ <prop oor:name="STR_JPEG_COMPRESSION" oor:type="xs:string" oor:localized="true">
+ <value>~JPEG compression</value>
+ </prop>
+ <prop oor:name="STR_QUALITY" oor:type="xs:string" oor:localized="true">
+ <value>~Quality</value>
+ </prop>
+ <prop oor:name="STR_REMOVE_CROP_AREA" oor:type="xs:string" oor:localized="true">
+ <value>~Delete cropped graphic areas</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_RESOLUTION" oor:type="xs:string" oor:localized="true">
+ <value>~Image Resolution</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_RESOLUTION_0" oor:type="xs:string" oor:localized="true">
+ <value>0;&lt;no change&gt;</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_RESOLUTION_1" oor:type="xs:string" oor:localized="true">
+ <value>90;90 DPI (screen resolution)</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_RESOLUTION_2" oor:type="xs:string" oor:localized="true">
+ <value>150;150 DPI (projector resolution)</value>
+ </prop>
+ <prop oor:name="STR_IMAGE_RESOLUTION_3" oor:type="xs:string" oor:localized="true">
+ <value>300;300 DPI (print resolution)</value>
+ </prop>
+ <prop oor:name="STR_EMBED_LINKED_GRAPHICS" oor:type="xs:string" oor:localized="true">
+ <value>~Break links to external graphics</value>
+ </prop>
+ <prop oor:name="STR_OLE_OBJECTS" oor:type="xs:string" oor:localized="true">
+ <value>OLE Objects</value>
+ </prop>
+ <prop oor:name="STR_OLE_OPTIMIZATION" oor:type="xs:string" oor:localized="true">
+ <value>Choose settings for replacing OLE objects</value>
+ </prop>
+ <prop oor:name="STR_OLE_REPLACE" oor:type="xs:string" oor:localized="true">
+ <value>Create static replacement graphics for OLE objects</value>
+ </prop>
+ <prop oor:name="STR_ALL_OLE_OBJECTS" oor:type="xs:string" oor:localized="true">
+ <value>For ~all OLE objects</value>
+ </prop>
+ <prop oor:name="STR_ALIEN_OLE_OBJECTS_ONLY" oor:type="xs:string" oor:localized="true">
+ <value>~For OLE objects not based on OpenDocument format</value>
+ </prop>
+ <prop oor:name="STR_OLE_OBJECTS_DESC" oor:type="xs:string" oor:localized="true">
+ <value>Object Linking and Embedding (OLE) is a technology that allows embedding and linking to documents and other objects.
+
+The current presentation contains no OLE objects.</value>
+ </prop>
+ <prop oor:name="STR_NO_OLE_OBJECTS_DESC" oor:type="xs:string" oor:localized="true">
+ <value>Object Linking and Embedding (OLE) is a technology that allows embedding and linking to documents and other objects.
+
+The current presentation contains no OLE objects.</value>
+ </prop>
+ <prop oor:name="STR_SLIDES" oor:type="xs:string" oor:localized="true">
+ <value>Slides</value>
+ </prop>
+ <prop oor:name="STR_CHOOSE_SLIDES" oor:type="xs:string" oor:localized="true">
+ <value>Choose which slides to delete</value>
+ </prop>
+ <prop oor:name="STR_MASTER_PAGES" oor:type="xs:string" oor:localized="true">
+ <value>Master Pages</value>
+ </prop>
+ <prop oor:name="STR_DELETE_MASTER_PAGES" oor:type="xs:string" oor:localized="true">
+ <value>Delete unused ~master pages</value>
+ </prop>
+ <prop oor:name="STR_DELETE_NOTES_PAGES" oor:type="xs:string" oor:localized="true">
+ <value>~Clear notes</value>
+ </prop>
+ <prop oor:name="STR_DELETE_HIDDEN_SLIDES" oor:type="xs:string" oor:localized="true">
+ <value>Delete hidden ~slides</value>
+ </prop>
+ <prop oor:name="STR_CUSTOM_SHOW" oor:type="xs:string" oor:localized="true">
+ <value>Delete slides that are not used for the ~custom slide show</value>
+ </prop>
+ <prop oor:name="STR_SUMMARY" oor:type="xs:string" oor:localized="true">
+ <value>Summary</value>
+ </prop>
+ <prop oor:name="STR_SUMMARY_TITLE" oor:type="xs:string" oor:localized="true">
+ <value>Choose where to apply the following changes</value>
+ </prop>
+ <prop oor:name="STR_PROGRESS" oor:type="xs:string" oor:localized="true">
+ <value>Progress</value>
+ </prop>
+ <prop oor:name="STR_OBJECTS_OPTIMIZED" oor:type="xs:string" oor:localized="true">
+ <value>Objects optimized</value>
+ </prop>
+ <prop oor:name="STR_APPLY_TO_CURRENT" oor:type="xs:string" oor:localized="true">
+ <value>~Apply changes to current presentation</value>
+ </prop>
+ <prop oor:name="STR_AUTOMATICALLY_OPEN" oor:type="xs:string" oor:localized="true">
+ <value>~Open newly created presentation</value>
+ </prop>
+ <prop oor:name="STR_SAVE_SETTINGS" oor:type="xs:string" oor:localized="true">
+ <value>~Save settings as</value>
+ </prop>
+ <prop oor:name="STR_SAVE_AS" oor:type="xs:string" oor:localized="true">
+ <value>~Duplicate presentation before applying changes</value>
+ </prop>
+ <prop oor:name="STR_DELETE_SLIDES" oor:type="xs:string" oor:localized="true">
+ <value>Delete %SLIDES slides</value>
+ </prop>
+ <prop oor:name="STR_OPTIMIZE_IMAGES" oor:type="xs:string" oor:localized="true">
+ <info>
+ <desc>The following string is only used in plural.</desc>
+ </info>
+ <value>Optimize %IMAGES graphics to %QUALITY% JPEG quality at %RESOLUTION DPI.</value>
+ </prop>
+ <prop oor:name="STR_CREATE_REPLACEMENT" oor:type="xs:string" oor:localized="true">
+ <value>Create replacement graphics for %OLE objects.</value>
+ </prop>
+ <prop oor:name="STR_CURRENT_FILESIZE" oor:type="xs:string" oor:localized="true">
+ <value>Current file size:</value>
+ </prop>
+ <prop oor:name="STR_ESTIMATED_FILESIZE" oor:type="xs:string" oor:localized="true">
+ <value>Estimated new file size:</value>
+ </prop>
+ <prop oor:name="STR_MB" oor:type="xs:string" oor:localized="true">
+ <value>%1 MB</value>
+ </prop>
+ <prop oor:name="MY_SETTINGS" oor:type="xs:string" oor:localized="true">
+ <value>My Settings</value>
+ </prop>
+ <prop oor:name="STR_DEFAULT_SESSION" oor:type="xs:string" oor:localized="true">
+ <value>default session</value>
+ </prop>
+ <prop oor:name="STR_MODIFY_WARNING" oor:type="xs:string" oor:localized="true">
+ <value>The optimization will modify the current document. Do you want to continue?</value>
+ </prop>
+ <prop oor:name="STR_YES" oor:type="xs:string" oor:localized="true">
+ <value>~Yes</value>
+ </prop>
+ <prop oor:name="STR_OK" oor:type="xs:string" oor:localized="true">
+ <value>OK</value>
+ </prop>
+ <prop oor:name="STR_INFO_1" oor:type="xs:string" oor:localized="true">
+ <value>The Presentation Minimizer has successfully updated the presentation '%TITLE'. The file size has changed from %OLDFILESIZE MB to %NEWFILESIZE MB.</value>
+ </prop>
+ <prop oor:name="STR_INFO_2" oor:type="xs:string" oor:localized="true">
+ <value>The Presentation Minimizer has successfully updated the presentation '%TITLE'. The file size has changed from %OLDFILESIZE MB to approximated %NEWFILESIZE MB.</value>
+ </prop>
+ <prop oor:name="STR_INFO_3" oor:type="xs:string" oor:localized="true">
+ <value>The Presentation Minimizer has successfully updated the presentation '%TITLE'. The file size has changed to %NEWFILESIZE MB.</value>
+ </prop>
+ <prop oor:name="STR_INFO_4" oor:type="xs:string" oor:localized="true">
+ <value>The Presentation Minimizer has successfully updated the presentation '%TITLE'. The file size has changed to approximated %NEWFILESIZE MB.</value>
+ </prop>
+ <prop oor:name="STR_DUPLICATING_PRESENTATION" oor:type="xs:string" oor:localized="true">
+ <value>Duplicating presentation...</value>
+ </prop>
+ <prop oor:name="STR_DELETING_SLIDES" oor:type="xs:string" oor:localized="true">
+ <value>Deleting slides...</value>
+ </prop>
+ <prop oor:name="STR_OPTIMIZING_GRAPHICS" oor:type="xs:string" oor:localized="true">
+ <value>Optimizing graphics...</value>
+ </prop>
+ <prop oor:name="STR_CREATING_OLE_REPLACEMENTS" oor:type="xs:string" oor:localized="true">
+ <value>Creating replacement graphics for OLE objects...</value>
+ </prop>
+ <prop oor:name="STR_FILESIZESEPARATOR" oor:type="xs:string" oor:localized="true">
+ <value>.</value>
+ </prop>
+ </group>
+ <node-ref oor:name="LastUsedSettings" oor:node-type="OptimizerSettings">
+ <info>
+ <desc>describes the name of the last used settings</desc>
+ </info>
+ </node-ref>
+ <group oor:name="Settings">
+ <set oor:name="Templates" oor:node-type="OptimizerSettings">
+ <info>
+ <desc>List of the saved Presentation Optimization Wizard settings</desc>
+ </info>
+ </set>
+ </group>
+ </component>
+</oor:component-schema> \ No newline at end of file
diff --git a/sdext/source/minimizer/unodialog.cxx b/sdext/source/minimizer/unodialog.cxx
new file mode 100644
index 000000000000..e5f6fdceeed3
--- /dev/null
+++ b/sdext/source/minimizer/unodialog.cxx
@@ -0,0 +1,406 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "unodialog.hxx"
+#include <com/sun/star/text/XTextRange.hpp>
+#include <com/sun/star/drawing/XShapes.hpp>
+#include <com/sun/star/container/XIndexAccess.hpp>
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#include <com/sun/star/view/XControlAccess.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/awt/XMessageBoxFactory.hpp>
+#include <com/sun/star/awt/MessageBoxButtons.hpp>
+
+// -------------
+// - UnoDialog -
+// -------------
+
+using namespace ::rtl;
+using namespace ::com::sun::star::awt;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::util;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::view;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::script;
+
+UnoDialog::UnoDialog( const Reference< XComponentContext > &rxMSF, Reference< XFrame >& rxFrame ) :
+ mxMSF( rxMSF ),
+ mxController( rxFrame->getController() ),
+ mxDialogModel( mxMSF->getServiceManager()->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.awt.UnoControlDialogModel" ) ), mxMSF ), UNO_QUERY_THROW ),
+ mxDialogModelMultiPropertySet( mxDialogModel, UNO_QUERY_THROW ),
+ mxDialogModelPropertySet( mxDialogModel, UNO_QUERY_THROW ),
+ mxDialogModelMSF( mxDialogModel, UNO_QUERY_THROW ),
+ mxDialogModelNameContainer( mxDialogModel, UNO_QUERY_THROW ),
+ mxDialogModelNameAccess( mxDialogModel, UNO_QUERY_THROW ),
+ mxControlModel( mxDialogModel, UNO_QUERY_THROW ),
+ mxDialog( mxMSF->getServiceManager()->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.awt.UnoControlDialog" ) ), mxMSF ), UNO_QUERY_THROW ),
+ mxControl( mxDialog, UNO_QUERY_THROW ),
+ mbStatus( sal_False )
+{
+ mxControl->setModel( mxControlModel );
+ mxDialogControlContainer = Reference< XControlContainer >( mxDialog, UNO_QUERY_THROW );
+ mxDialogComponent = Reference< XComponent >( mxDialog, UNO_QUERY_THROW );
+ mxDialogWindow = Reference< XWindow >( mxDialog, UNO_QUERY_THROW );
+
+ Reference< XFrame > xFrame( mxController->getFrame() );
+ Reference< XWindow > xContainerWindow( xFrame->getContainerWindow() );
+ mxWindowPeer = Reference< XWindowPeer >( xContainerWindow, UNO_QUERY_THROW );
+ createWindowPeer( mxWindowPeer );
+}
+
+// -----------------------------------------------------------------------------
+
+UnoDialog::~UnoDialog()
+{
+
+}
+
+// -----------------------------------------------------------------------------
+
+void UnoDialog::execute()
+{
+ mxDialogWindow->setEnable( sal_True );
+ mxDialogWindow->setVisible( sal_True );
+ mxDialog->execute();
+}
+
+void UnoDialog::endExecute( sal_Bool bStatus )
+{
+ mbStatus = bStatus;
+ mxDialog->endExecute();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XWindowPeer > UnoDialog::createWindowPeer( Reference< XWindowPeer > xParentPeer )
+ throw ( Exception )
+{
+ mxDialogWindow->setVisible( sal_False );
+ Reference< XToolkit > xToolkit( mxMSF->getServiceManager()->createInstanceWithContext( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.Toolkit" ) ), mxMSF ), UNO_QUERY_THROW );
+ if ( !xParentPeer.is() )
+ xParentPeer = xToolkit->getDesktopWindow();
+ mxReschedule = Reference< XReschedule >( xToolkit, UNO_QUERY );
+ mxControl->createPeer( xToolkit, xParentPeer );
+// xWindowPeer = xControl.getPeer();
+ return mxControl->getPeer();
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XInterface > UnoDialog::insertControlModel( const OUString& rServiceName, const OUString& rName,
+ const Sequence< OUString >& rPropertyNames, const Sequence< Any >& rPropertyValues )
+{
+ Reference< XInterface > xControlModel;
+ try
+ {
+ xControlModel = mxDialogModelMSF->createInstance( rServiceName );
+ Reference< XMultiPropertySet > xMultiPropSet( xControlModel, UNO_QUERY_THROW );
+ xMultiPropSet->setPropertyValues( rPropertyNames, rPropertyValues );
+ mxDialogModelNameContainer->insertByName( rName, Any( xControlModel ) );
+ }
+ catch( Exception& )
+ {
+ }
+ return xControlModel;
+}
+
+// -----------------------------------------------------------------------------
+
+void UnoDialog::setVisible( const OUString& rName, sal_Bool bVisible )
+{
+ try
+ {
+ Reference< XInterface > xControl( mxDialogControlContainer->getControl( rName ), UNO_QUERY_THROW );
+ Reference< XWindow > xWindow( xControl, UNO_QUERY_THROW );
+ xWindow->setVisible( bVisible );
+ }
+ catch ( Exception& )
+ {
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Bool UnoDialog::isHighContrast()
+{
+ sal_Bool bHighContrast = sal_False;
+ try
+ {
+ sal_Int32 nBackgroundColor = 0;
+ if ( mxDialogModelPropertySet->getPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "BackgroundColor" ) ) ) >>= nBackgroundColor )
+ {
+ sal_uInt8 nLum( static_cast< sal_uInt8 >( ( static_cast< sal_uInt8 >( nBackgroundColor >> 16 ) * 28 +
+ static_cast< sal_uInt8 >( nBackgroundColor >> 8 ) * 151 +
+ static_cast< sal_uInt8 >( nBackgroundColor ) * 77 ) >> 8 ) );
+ bHighContrast = nLum <= 38;
+ }
+ }
+ catch( Exception& )
+ {
+ }
+ return bHighContrast;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XButton > UnoDialog::insertButton( const OUString& rName, Reference< XActionListener > xActionListener,
+ const Sequence< OUString >& rPropertyNames, const Sequence< Any >& rPropertyValues )
+{
+ Reference< XButton > xButton;
+ try
+ {
+ Reference< XInterface > xButtonModel( insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlButtonModel" ) ),
+ rName, rPropertyNames, rPropertyValues ) );
+ Reference< XPropertySet > xPropertySet( xButtonModel, UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ), Any( rName ) );
+ xButton = Reference< XButton >( mxDialogControlContainer->getControl( rName ), UNO_QUERY_THROW );
+
+ if ( xActionListener.is() )
+ {
+ xButton->addActionListener( xActionListener );
+ xButton->setActionCommand( rName );
+ }
+ return xButton;
+ }
+ catch( Exception& )
+ {
+ }
+ return xButton;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XFixedText > UnoDialog::insertFixedText( const OUString& rName, const Sequence< OUString > rPropertyNames, const Sequence< Any > rPropertyValues )
+{
+ Reference< XFixedText > xFixedText;
+ try
+ {
+ Reference< XPropertySet > xPropertySet( insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlFixedTextModel" ) ),
+ rName, rPropertyNames, rPropertyValues ), UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ), Any( rName ) );
+ xFixedText = Reference< XFixedText >( mxDialogControlContainer->getControl( rName ), UNO_QUERY_THROW );
+ }
+ catch ( Exception& )
+ {
+ }
+ return xFixedText;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XCheckBox > UnoDialog::insertCheckBox( const OUString& rName, const Sequence< OUString > rPropertyNames, const Sequence< Any > rPropertyValues )
+{
+ Reference< XCheckBox > xCheckBox;
+ try
+ {
+ Reference< XPropertySet > xPropertySet( insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlCheckBoxModel" ) ),
+ rName, rPropertyNames, rPropertyValues ), UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ), Any( rName ) );
+ xCheckBox = Reference< XCheckBox >( mxDialogControlContainer->getControl( rName ), UNO_QUERY_THROW );
+ }
+ catch ( Exception& )
+ {
+ }
+ return xCheckBox;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XControl > UnoDialog::insertFormattedField( const OUString& rName, const Sequence< OUString > rPropertyNames, const Sequence< Any > rPropertyValues )
+{
+ Reference< XControl > xControl;
+ try
+ {
+ Reference< XPropertySet > xPropertySet( insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlFormattedFieldModel" ) ),
+ rName, rPropertyNames, rPropertyValues ), UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ), Any( rName ) );
+ xControl = Reference< XControl >( mxDialogControlContainer->getControl( rName ), UNO_QUERY_THROW );
+ }
+ catch ( Exception& )
+ {
+ }
+ return xControl;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XComboBox > UnoDialog::insertComboBox( const OUString& rName, const Sequence< OUString > rPropertyNames, const Sequence< Any > rPropertyValues )
+{
+ Reference< XComboBox > xControl;
+ try
+ {
+ Reference< XPropertySet > xPropertySet( insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlComboBoxModel" ) ),
+ rName, rPropertyNames, rPropertyValues ), UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ), Any( rName ) );
+ xControl = Reference< XComboBox >( mxDialogControlContainer->getControl( rName ), UNO_QUERY_THROW );
+ }
+ catch ( Exception& )
+ {
+ }
+ return xControl;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XRadioButton > UnoDialog::insertRadioButton( const OUString& rName, const Sequence< OUString > rPropertyNames, const Sequence< Any > rPropertyValues )
+{
+ Reference< XRadioButton > xControl;
+ try
+ {
+ Reference< XPropertySet > xPropertySet( insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlRadioButtonModel" ) ),
+ rName, rPropertyNames, rPropertyValues ), UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ), Any( rName ) );
+ xControl = Reference< XRadioButton >( mxDialogControlContainer->getControl( rName ), UNO_QUERY_THROW );
+ }
+ catch ( Exception& )
+ {
+ }
+ return xControl;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XListBox > UnoDialog::insertListBox( const OUString& rName, const Sequence< OUString > rPropertyNames, const Sequence< Any > rPropertyValues )
+{
+ Reference< XListBox > xControl;
+ try
+ {
+ Reference< XPropertySet > xPropertySet( insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlListBoxModel" ) ),
+ rName, rPropertyNames, rPropertyValues ), UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ), Any( rName ) );
+ xControl = Reference< XListBox >( mxDialogControlContainer->getControl( rName ), UNO_QUERY_THROW );
+ }
+ catch ( Exception& )
+ {
+ }
+ return xControl;
+}
+
+// -----------------------------------------------------------------------------
+
+Reference< XControl > UnoDialog::insertImage( const OUString& rName, const Sequence< OUString > rPropertyNames, const Sequence< Any > rPropertyValues )
+{
+ Reference< XControl > xControl;
+ try
+ {
+ Reference< XPropertySet > xPropertySet( insertControlModel( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlImageControlModel" ) ),
+ rName, rPropertyNames, rPropertyValues ), UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ), Any( rName ) );
+ xControl = Reference< XControl >( mxDialogControlContainer->getControl( rName ), UNO_QUERY_THROW );
+ }
+ catch ( Exception& )
+ {
+ }
+ return xControl;
+}
+
+// -----------------------------------------------------------------------------
+
+void UnoDialog::setControlProperty( const OUString& rControlName, const OUString& rPropertyName, const Any& rPropertyValue )
+{
+ try
+ {
+ if ( mxDialogModelNameAccess->hasByName( rControlName ) )
+ {
+ Reference< XPropertySet > xPropertySet( mxDialogModelNameAccess->getByName( rControlName ), UNO_QUERY_THROW );
+ xPropertySet->setPropertyValue( rPropertyName, rPropertyValue );
+ }
+ }
+ catch ( Exception& )
+ {
+ }
+}
+
+// -----------------------------------------------------------------------------
+
+sal_Int32 UnoDialog::getMapsFromPixels( sal_Int32 nPixels ) const
+{
+ double dMaps = 0;
+ try
+ {
+ sal_Int32 nMapWidth = 0;
+ const OUString sWidth( RTL_CONSTASCII_USTRINGPARAM( "Width" ) );
+ if ( mxDialogModelPropertySet->getPropertyValue( sWidth ) >>= nMapWidth )
+ {
+ Reference< XWindow > xWindow( mxDialog, UNO_QUERY_THROW );
+ double pxWidth = xWindow->getPosSize().Width;
+ double mapRatio = ( pxWidth / nMapWidth );
+ dMaps = nPixels / mapRatio;
+ }
+ }
+ catch ( Exception& )
+ {
+ }
+ return static_cast< sal_Int32 >( dMaps );
+}
+
+// -----------------------------------------------------------------------------
+
+Any UnoDialog::getControlProperty( const OUString& rControlName, const OUString& rPropertyName )
+{
+ Any aRet;
+ try
+ {
+ if ( mxDialogModelNameAccess->hasByName( rControlName ) )
+ {
+ Reference< XPropertySet > xPropertySet( mxDialogModelNameAccess->getByName( rControlName ), UNO_QUERY_THROW );
+ aRet = xPropertySet->getPropertyValue( rPropertyName );
+ }
+ }
+ catch ( Exception& )
+ {
+ }
+ return aRet;
+}
+
+// -----------------------------------------------------------------------------
+
+void UnoDialog::enableControl( const OUString& rControlName )
+{
+ const OUString sEnabled( RTL_CONSTASCII_USTRINGPARAM( "Enabled" ) );
+ setControlProperty( rControlName, sEnabled, Any( sal_True ) );
+}
+
+// -----------------------------------------------------------------------------
+
+void UnoDialog::disableControl( const OUString& rControlName )
+{
+ const OUString sEnabled( RTL_CONSTASCII_USTRINGPARAM( "Enabled" ) );
+ setControlProperty( rControlName, sEnabled, Any( sal_False ) );
+}
+
+// -----------------------------------------------------------------------------
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/minimizer/unodialog.hxx b/sdext/source/minimizer/unodialog.hxx
new file mode 100644
index 000000000000..78e3fd0f409c
--- /dev/null
+++ b/sdext/source/minimizer/unodialog.hxx
@@ -0,0 +1,148 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef UNODIALOG_HXX
+#define UNODIALOG_HXX
+
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/lang/XSingleServiceFactory.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/container/XIndexContainer.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/script/XInvocation.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/XMultiPropertySet.hpp>
+#include <com/sun/star/awt/XControl.hpp>
+#include <com/sun/star/awt/XControlModel.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/awt/XActionListener.hpp>
+#include <com/sun/star/awt/XTextListener.hpp>
+#include <com/sun/star/awt/XButton.hpp>
+#include <com/sun/star/awt/XCheckBox.hpp>
+#include <com/sun/star/awt/XComboBox.hpp>
+#include <com/sun/star/awt/XTextComponent.hpp>
+#include <com/sun/star/awt/XRadioButton.hpp>
+#include <com/sun/star/awt/XListBox.hpp>
+#include <com/sun/star/awt/XFixedText.hpp>
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <com/sun/star/awt/XReschedule.hpp>
+#include <com/sun/star/awt/XDialog.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <cppuhelper/implbase1.hxx>
+#include <cppuhelper/implbase2.hxx>
+#include <cppuhelper/implbase3.hxx>
+
+// -------------
+// - UnoDialog -
+// -------------
+
+////////////////////////////////////////////////////////////////////////
+
+class UnoDialog
+{
+public :
+
+ UnoDialog( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF, com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rxFrame );
+ ~UnoDialog();
+
+ void execute();
+ void endExecute( sal_Bool bStatus );
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer > createWindowPeer( com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer > xParentPeer )
+ throw ( com::sun::star::uno::Exception );
+
+ com::sun::star::uno::Reference< com::sun::star::uno::XInterface > insertControlModel( const rtl::OUString& rServiceName, const rtl::OUString& rName,
+ const com::sun::star::uno::Sequence< rtl::OUString >& rPropertyNames, const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& rPropertyValues );
+
+ void setVisible( const rtl::OUString& rName, sal_Bool bVisible );
+
+ sal_Bool isHighContrast();
+
+ sal_Int32 getMapsFromPixels( sal_Int32 nPixels ) const;
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XButton > insertButton( const rtl::OUString& rName,
+ com::sun::star::uno::Reference< com::sun::star::awt::XActionListener > xActionListener, const com::sun::star::uno::Sequence< rtl::OUString >& rPropertyNames,
+ const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& rPropertyValues );
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XFixedText > insertFixedText( const rtl::OUString& rName,
+ const com::sun::star::uno::Sequence< rtl::OUString > rPropertyNames, const com::sun::star::uno::Sequence< com::sun::star::uno::Any > rPropertyValues );
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XCheckBox > insertCheckBox( const rtl::OUString& rName,
+ const com::sun::star::uno::Sequence< rtl::OUString > rPropertyNames, const com::sun::star::uno::Sequence< com::sun::star::uno::Any > rPropertyValues );
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XControl > insertFormattedField( const rtl::OUString& rName,
+ const com::sun::star::uno::Sequence< rtl::OUString > rPropertyNames, const com::sun::star::uno::Sequence< com::sun::star::uno::Any > rPropertyValues );
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XComboBox > insertComboBox( const rtl::OUString& rName,
+ const com::sun::star::uno::Sequence< rtl::OUString > rPropertyNames, const com::sun::star::uno::Sequence< com::sun::star::uno::Any > rPropertyValues );
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XRadioButton > insertRadioButton( const rtl::OUString& rName,
+ const com::sun::star::uno::Sequence< rtl::OUString > rPropertyNames, const com::sun::star::uno::Sequence< com::sun::star::uno::Any > rPropertyValues );
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XListBox > insertListBox( const rtl::OUString& rName,
+ const com::sun::star::uno::Sequence< rtl::OUString > rPropertyNames, const com::sun::star::uno::Sequence< com::sun::star::uno::Any > rPropertyValues );
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XControl > insertImage( const rtl::OUString& rName,
+ const com::sun::star::uno::Sequence< rtl::OUString > rPropertyNames, const com::sun::star::uno::Sequence< com::sun::star::uno::Any > rPropertyValues );
+
+ void setControlProperty( const rtl::OUString& rControlName, const rtl::OUString& rPropertyName, const com::sun::star::uno::Any& rPropertyValue );
+ com::sun::star::uno::Any getControlProperty( const rtl::OUString& rControlName, const rtl::OUString& rPropertyName );
+
+ void enableControl( const rtl::OUString& rControlName );
+ void disableControl( const rtl::OUString& rControlName );
+
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxMSF;
+ com::sun::star::uno::Reference< com::sun::star::frame::XController > mxController;
+ com::sun::star::uno::Reference< com::sun::star::awt::XReschedule > mxReschedule;
+
+ com::sun::star::uno::Reference< com::sun::star::uno::XInterface > mxDialogModel;
+ com::sun::star::uno::Reference< com::sun::star::beans::XMultiPropertySet > mxDialogModelMultiPropertySet;
+ com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > mxDialogModelPropertySet;
+ com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > mxDialogModelMSF;
+ com::sun::star::uno::Reference< com::sun::star::container::XNameContainer > mxDialogModelNameContainer;
+ com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > mxDialogModelNameAccess;
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XControlModel > mxControlModel;
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XDialog > mxDialog;
+ com::sun::star::uno::Reference< com::sun::star::awt::XControl > mxControl;
+ com::sun::star::uno::Reference< com::sun::star::awt::XWindowPeer > mxWindowPeer;
+
+ com::sun::star::uno::Reference< com::sun::star::awt::XControlContainer > mxDialogControlContainer;
+ com::sun::star::uno::Reference< com::sun::star::lang::XComponent > mxDialogComponent;
+ com::sun::star::uno::Reference< com::sun::star::awt::XWindow > mxDialogWindow;
+
+ sal_Bool mbStatus;
+};
+
+#endif // UNODIALOG_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/config/description.xml b/sdext/source/pdfimport/config/description.xml
new file mode 100644
index 000000000000..300bad702f60
--- /dev/null
+++ b/sdext/source/pdfimport/config/description.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description
+
+ xmlns="http://openoffice.org/extensions/description/2006"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dep="http://openoffice.org/extensions/description/2006">
+ <identifier value="UPDATED_IDENTIFIER" />
+
+ <dependencies>
+ <OpenOffice.org-minimal-version value="3.0" dep:name="OpenOffice.org 3.0"/>
+ </dependencies>
+
+ <version value="1.0.5" />
+
+ <platform value="UPDATED_SUPPORTED_PLATFORM" />
+
+ <publisher>
+ <name xlink:href="http://www.oracle.com/us/products/applications/open-office" lang="en">Oracle</name>
+ </publisher>
+
+ <display-name>
+ <name lang="en-US">PDF Import</name>
+ </display-name>
+
+ <icon>
+ <default xlink:href="images/extension_32.png" />
+ </icon>
+
+</description>
diff --git a/sdext/source/pdfimport/config/manifest.xml b/sdext/source/pdfimport/config/manifest.xml
new file mode 100644
index 000000000000..013f2a1b453a
--- /dev/null
+++ b/sdext/source/pdfimport/config/manifest.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=native"
+ manifest:full-path="pdfimport.unoSHARED_EXTENSION"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.executable"
+ manifest:full-path="xpdfimportEXEC_EXTENSION"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="pdf_import_filter.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="pdf_types.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.basic-library"
+ manifest:full-path="basic/"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.package-bundle-description"
+ manifest:full-path="help/component.txt"/>
+</manifest:manifest>
diff --git a/sdext/source/pdfimport/config/pdf_import_filter.xcu b/sdext/source/pdfimport/config/pdf_import_filter.xcu
new file mode 100644
index 000000000000..628be6db8be9
--- /dev/null
+++ b/sdext/source/pdfimport/config/pdf_import_filter.xcu
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Filter" oor:package="org.openoffice.TypeDetection">
+ <node oor:name="Filters">
+ <node oor:name="draw_pdf_import" oor:type="xs:string" oor:op="replace">
+ <prop oor:name="DocumentService">
+ <value>com.sun.star.drawing.DrawingDocument</value>
+ </prop>
+ <prop oor:name="FileFormatVersion" oor:type="xs:int">
+ <value>0</value>
+ </prop>
+ <prop oor:name="FilterService" oor:type="xs:string">
+ <!-- stacks filters for XML import. see UserData below.
+ the _Writer_ in the impl name is a misnomer -->
+ <value>com.sun.star.comp.Writer.XmlFilterAdaptor</value>
+ </prop>
+ <prop oor:name="Flags" oor:type="oor:string-list">
+ <value>3RDPARTYFILTER ALIEN IMPORT PREFERRED</value>
+ </prop>
+ <prop oor:name="Type" oor:type="xs:string">
+ <value>pdf_Portable_Document_Format</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">PDF - Portable Document Format (Draw)</value>
+ </prop>
+ <prop oor:name="TemplateName"/>
+ <prop oor:name="UIComponent"/>
+ <prop oor:name="UserData" oor:type="oor:string-list">
+ <!-- converter service, ,import service,export service, , ,bool for pretty printing on or off -->
+ <value oor:separator=",">com.sun.star.comp.documents.DrawPDFImport,,com.sun.star.comp.Draw.XMLOasisImporter,,,,true</value>
+ </prop>
+ </node>
+
+ <node oor:name="impress_pdf_import" oor:type="xs:string" oor:op="replace">
+ <prop oor:name="DocumentService">
+ <value>com.sun.star.presentation.PresentationDocument</value>
+ </prop>
+ <prop oor:name="FileFormatVersion" oor:type="xs:int">
+ <value>0</value>
+ </prop>
+ <prop oor:name="FilterService" oor:type="xs:string">
+ <!-- stacks filters for XML import. see UserData below.
+ the _Writer_ in the impl name is a misnomer -->
+ <value>com.sun.star.comp.Writer.XmlFilterAdaptor</value>
+ </prop>
+ <prop oor:name="Flags" oor:type="oor:string-list">
+ <value>3RDPARTYFILTER ALIEN IMPORT PREFERRED</value>
+ </prop>
+ <prop oor:name="Type" oor:type="xs:string">
+ <value>pdf_Portable_Document_Format</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">PDF - Portable Document Format (Impress)</value>
+ </prop>
+ <prop oor:name="TemplateName"/>
+ <prop oor:name="UIComponent"/>
+ <prop oor:name="UserData" oor:type="oor:string-list">
+ <!-- converter service, ,import service,export service, , ,bool for pretty printing on or off -->
+ <value oor:separator=",">com.sun.star.comp.documents.ImpressPDFImport,,com.sun.star.comp.Impress.XMLOasisImporter,,,,true</value>
+ </prop>
+ </node>
+
+ <node oor:name="writer_pdf_import" oor:type="xs:string" oor:op="replace">
+ <prop oor:name="DocumentService">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="FileFormatVersion" oor:type="xs:int">
+ <value>0</value>
+ </prop>
+ <prop oor:name="FilterService" oor:type="xs:string">
+ <!-- stacks filters for XML import. see UserData below.
+ the _Writer_ in the impl name is a misnomer -->
+ <value>com.sun.star.comp.Writer.XmlFilterAdaptor</value>
+ </prop>
+ <prop oor:name="Flags" oor:type="oor:string-list">
+ <value>3RDPARTYFILTER ALIEN IMPORT PREFERRED</value>
+ </prop>
+ <prop oor:name="Type" oor:type="xs:string">
+ <value>pdf_Portable_Document_Format</value>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">PDF - Portable Document Format (Writer)</value>
+ </prop>
+ <prop oor:name="TemplateName"/>
+ <prop oor:name="UIComponent"/>
+ <prop oor:name="UserData" oor:type="oor:string-list">
+ <!-- converter service, ,import service,export service, , ,bool for pretty printing on or off -->
+ <value oor:separator=",">com.sun.star.comp.documents.WriterPDFImport,,com.sun.star.comp.Writer.XMLOasisImporter,,,,true</value>
+ </prop>
+ </node>
+
+ <node oor:name="writer_pdf_addstream_import" oor:op="replace">
+ <prop oor:name="DocumentService" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument</value>
+ </prop>
+ <prop oor:name="FileFormatVersion" oor:type="xs:int">
+ <value>0</value>
+ </prop>
+ <prop oor:name="FilterService" oor:type="xs:string">
+ <value>com.sun.star.comp.documents.HybridPDFImport</value>
+ </prop>
+ <prop oor:name="Flags" oor:type="oor:string-list">
+ <value>3RDPARTYFILTER ALIEN IMPORT NOTINFILEDIALOG NOTINCHOOSER</value>
+ </prop>
+ <prop oor:name="TemplateName" oor:type="xs:string">
+ <value/>
+ </prop>
+ <prop oor:name="Type" oor:type="xs:string">
+ <value>pdf_Portable_Document_Format</value>
+ </prop>
+ <prop oor:name="UIComponent" oor:type="xs:string">
+ <value/>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">PDF - Portable Document Format</value>
+ </prop>
+ </node>
+
+ <node oor:name="impress_pdf_addstream_import" oor:op="replace">
+ <prop oor:name="DocumentService" oor:type="xs:string">
+ <value>com.sun.star.presentation.PresentationDocument</value>
+ </prop>
+ <prop oor:name="FileFormatVersion" oor:type="xs:int">
+ <value>0</value>
+ </prop>
+ <prop oor:name="FilterService" oor:type="xs:string">
+ <value>com.sun.star.comp.documents.HybridPDFImport</value>
+ </prop>
+ <prop oor:name="Flags" oor:type="oor:string-list">
+ <value>3RDPARTYFILTER ALIEN IMPORT NOTINFILEDIALOG NOTINCHOOSER</value>
+ </prop>
+ <prop oor:name="TemplateName" oor:type="xs:string">
+ <value/>
+ </prop>
+ <prop oor:name="Type" oor:type="xs:string">
+ <value>pdf_Portable_Document_Format</value>
+ </prop>
+ <prop oor:name="UIComponent" oor:type="xs:string">
+ <value/>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">PDF - Portable Document Format</value>
+ </prop>
+ </node>
+
+ <node oor:name="draw_pdf_addstream_import" oor:op="replace">
+ <prop oor:name="DocumentService" oor:type="xs:string">
+ <value>com.sun.star.drawing.DrawingDocument</value>
+ </prop>
+ <prop oor:name="FileFormatVersion" oor:type="xs:int">
+ <value>0</value>
+ </prop>
+ <prop oor:name="FilterService" oor:type="xs:string">
+ <value>com.sun.star.comp.documents.HybridPDFImport</value>
+ </prop>
+ <prop oor:name="Flags" oor:type="oor:string-list">
+ <value>3RDPARTYFILTER ALIEN IMPORT NOTINFILEDIALOG NOTINCHOOSER</value>
+ </prop>
+ <prop oor:name="TemplateName" oor:type="xs:string">
+ <value/>
+ </prop>
+ <prop oor:name="Type" oor:type="xs:string">
+ <value>pdf_Portable_Document_Format</value>
+ </prop>
+ <prop oor:name="UIComponent" oor:type="xs:string">
+ <value/>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">PDF - Portable Document Format</value>
+ </prop>
+ </node>
+
+ <node oor:name="calc_pdf_addstream_import" oor:op="replace">
+ <prop oor:name="DocumentService" oor:type="xs:string">
+ <value>com.sun.star.sheet.SpreadsheetDocument</value>
+ </prop>
+ <prop oor:name="FileFormatVersion" oor:type="xs:int">
+ <value>0</value>
+ </prop>
+ <prop oor:name="FilterService" oor:type="xs:string">
+ <value>com.sun.star.comp.documents.HybridPDFImport</value>
+ </prop>
+ <prop oor:name="Flags" oor:type="oor:string-list">
+ <value>3RDPARTYFILTER ALIEN IMPORT NOTINFILEDIALOG NOTINCHOOSER</value>
+ </prop>
+ <prop oor:name="TemplateName" oor:type="xs:string">
+ <value/>
+ </prop>
+ <prop oor:name="Type" oor:type="xs:string">
+ <value>pdf_Portable_Document_Format</value>
+ </prop>
+ <prop oor:name="UIComponent" oor:type="xs:string">
+ <value/>
+ </prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">PDF - Portable Document Format</value>
+ </prop>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/sdext/source/pdfimport/config/pdf_types.xcu b/sdext/source/pdfimport/config/pdf_types.xcu
new file mode 100644
index 000000000000..11990a89dcdd
--- /dev/null
+++ b/sdext/source/pdfimport/config/pdf_types.xcu
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd">
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:package="org.openoffice.TypeDetection" oor:name="Types">
+ <node oor:name="Types">
+ <node oor:name="pdf_Portable_Document_Format" oor:op="replace" >
+ <prop oor:name="DetectService"><value>com.sun.star.comp.documents.PDFDetector</value></prop>
+ <prop oor:name="URLPattern"/>
+ <prop oor:name="Extensions"><value>pdf</value></prop>
+ <prop oor:name="MediaType"><value>application/pdf</value></prop>
+ <prop oor:name="Preferred"><value>true</value></prop>
+ <prop oor:name="PreferredFilter"><value>draw_pdf_import</value></prop>
+ <prop oor:name="UIName">
+ <value>PDF - Portable Document Format (Draw)</value>
+ </prop>
+ <prop oor:name="ClipboardFormat"/>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/sdext/source/pdfimport/delzip b/sdext/source/pdfimport/delzip
new file mode 100644
index 000000000000..e16c76dff888
--- /dev/null
+++ b/sdext/source/pdfimport/delzip
@@ -0,0 +1 @@
+""
diff --git a/sdext/source/pdfimport/dialogs/Module1.xba b/sdext/source/pdfimport/dialogs/Module1.xba
new file mode 100644
index 000000000000..d7e2398cc642
--- /dev/null
+++ b/sdext/source/pdfimport/dialogs/Module1.xba
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Module1" script:language="StarBasic">REM ***** BASIC *****
+
+Sub Main
+
+End Sub</script:module> \ No newline at end of file
diff --git a/sdext/source/pdfimport/dialogs/TargetChooser.xdl b/sdext/source/pdfimport/dialogs/TargetChooser.xdl
new file mode 100644
index 000000000000..2622cbfca6c4
--- /dev/null
+++ b/sdext/source/pdfimport/dialogs/TargetChooser.xdl
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="TargetChooser" dlg:left="136" dlg:top="72" dlg:width="201" dlg:height="119" dlg:closeable="true" dlg:moveable="true">
+ <dlg:bulletinboard>
+ <dlg:menulist dlg:id="ListBox" dlg:tab-index="0" dlg:left="80" dlg:top="18" dlg:width="113" dlg:height="14" dlg:spin="true" dlg:linecount="3">
+ <script:event script:event-name="on-itemstatechange" script:macro-name="vnd.sun.star.UNO:SelectionChanged" script:language="UNO"/>
+ </dlg:menulist>
+ <dlg:text dlg:id="ComboLabel" dlg:left="74" dlg:top="7" dlg:width="82" dlg:height="9" dlg:value="Import %FILENAME as"/>
+ <dlg:fixedline dlg:id="FixedLine1" dlg:left="-2" dlg:top="93" dlg:width="204" dlg:height="2"/>
+ <dlg:button dlg:id="HelpButton" dlg:tab-index="1" dlg:left="4" dlg:top="100" dlg:width="50" dlg:height="14" dlg:value="Help" dlg:button-type="help"/>
+ <dlg:button dlg:id="ImportButton" dlg:tab-index="2" dlg:left="93" dlg:top="100" dlg:width="50" dlg:height="14" dlg:default="true" dlg:value="Import" dlg:button-type="ok"/>
+ <dlg:button dlg:id="CancelButton" dlg:tab-index="3" dlg:left="146" dlg:top="100" dlg:width="50" dlg:height="14" dlg:value="Cancel" dlg:button-type="cancel"/>
+ <dlg:img dlg:id="ImpressImage" dlg:left="4" dlg:top="8" dlg:width="60" dlg:height="70" dlg:src="file:///x:/thb/pdf.png"/>
+ <dlg:text dlg:id="InfoWriter" dlg:left="80" dlg:top="38" dlg:width="114" dlg:height="42" dlg:value="Choose &apos;Text Document&apos; to edit major parts of the text. The document might look different because of reformatting." dlg:multiline="true"/>
+ <dlg:text dlg:id="InfoImpress" dlg:left="80" dlg:top="38" dlg:width="114" dlg:height="42" dlg:value="Choose &apos;Presentation&apos; to edit the slides of a presentation in PDF format." dlg:multiline="true"/>
+ <dlg:text dlg:id="InfoDraw" dlg:left="80" dlg:top="38" dlg:width="114" dlg:height="42" dlg:value="Choose &apos;Drawing&apos; to edit minor details of the PDF document. This option is best to preserve the layout." dlg:multiline="true"/>
+ <dlg:text dlg:id="ListBoxWriter" dlg:left="0" dlg:top="0" dlg:width="114" dlg:height="9" dlg:value="Item 1"/>
+ <dlg:text dlg:id="ListBoxImpress" dlg:left="0" dlg:top="10" dlg:width="114" dlg:height="9" dlg:value="Item 2"/>
+ <dlg:text dlg:id="ListBoxDraw" dlg:left="0" dlg:top="20" dlg:width="114" dlg:height="9" dlg:value="Item 3"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/sdext/source/pdfimport/dialogs/dialog.xlb b/sdext/source/pdfimport/dialogs/dialog.xlb
new file mode 100644
index 000000000000..e025c4b13f7f
--- /dev/null
+++ b/sdext/source/pdfimport/dialogs/dialog.xlb
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
+<library:library xmlns:library="http://openoffice.org/2000/library" library:name="PDFImport" library:readonly="false" library:passwordprotected="false">
+ <library:element library:name="TargetChooser"/>
+</library:library> \ No newline at end of file
diff --git a/sdext/source/pdfimport/dialogs/impress.png b/sdext/source/pdfimport/dialogs/impress.png
new file mode 100644
index 000000000000..8951bae55c26
--- /dev/null
+++ b/sdext/source/pdfimport/dialogs/impress.png
Binary files differ
diff --git a/sdext/source/pdfimport/dialogs/script.xlb b/sdext/source/pdfimport/dialogs/script.xlb
new file mode 100644
index 000000000000..370d9dfe973c
--- /dev/null
+++ b/sdext/source/pdfimport/dialogs/script.xlb
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
+<library:library xmlns:library="http://openoffice.org/2000/library" library:name="PDFImport" library:readonly="false" library:passwordprotected="false">
+ <library:element library:name="Module1"/>
+</library:library>
diff --git a/sdext/source/pdfimport/dialogs/writer.png b/sdext/source/pdfimport/dialogs/writer.png
new file mode 100644
index 000000000000..f4d0ecd792a2
--- /dev/null
+++ b/sdext/source/pdfimport/dialogs/writer.png
Binary files differ
diff --git a/sdext/source/pdfimport/dialogs/xpdfimport_err.pdf b/sdext/source/pdfimport/dialogs/xpdfimport_err.pdf
new file mode 100755
index 000000000000..dc0f9292c680
--- /dev/null
+++ b/sdext/source/pdfimport/dialogs/xpdfimport_err.pdf
Binary files differ
diff --git a/sdext/source/pdfimport/filterdet.cxx b/sdext/source/pdfimport/filterdet.cxx
new file mode 100644
index 000000000000..c75a3eeececa
--- /dev/null
+++ b/sdext/source/pdfimport/filterdet.cxx
@@ -0,0 +1,757 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "filterdet.hxx"
+#include "inc/pdfparse.hxx"
+
+#include <osl/diagnose.h>
+#include <osl/file.h>
+#include <osl/thread.h>
+#include <rtl/digest.h>
+#include <rtl/ref.hxx>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/XListBox.hpp>
+#include <com/sun/star/awt/XDialogEventHandler.hpp>
+#include <com/sun/star/awt/XDialogProvider2.hpp>
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/io/XStream.hpp>
+#include <com/sun/star/io/XSeekable.hpp>
+
+#include <boost/scoped_ptr.hpp>
+
+using namespace com::sun::star;
+
+namespace pdfi
+{
+
+// TODO(T3): locking/thread safety
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper1<
+ com::sun::star::awt::XDialogEventHandler > ChooserDialogHandlerBase;
+ class ChooserDialogHandler : private cppu::BaseMutex,
+ public ChooserDialogHandlerBase
+ {
+ uno::Reference<awt::XListBox> m_xListbox;
+ uno::Reference<awt::XWindow> m_xWriterText;
+ uno::Reference<awt::XWindow> m_xDrawText;
+ uno::Reference<awt::XWindow> m_xImpressText;
+
+ enum{ DRAW_INDEX=0, IMPRESS_INDEX=1, WRITER_INDEX=2 };
+ void selectionChanged( sal_Int32 nIndex ) const
+ {
+ sal_Bool bWriterState(sal_False);
+ sal_Bool bDrawState(sal_False);
+ sal_Bool bImpressState(sal_False);
+ switch(nIndex)
+ {
+ default:
+ OSL_FAIL("Unexpected case!");
+ break;
+ case DRAW_INDEX:
+ bDrawState=sal_True;
+ break;
+ case IMPRESS_INDEX:
+ bImpressState=sal_True;
+ break;
+ case WRITER_INDEX:
+ bWriterState=sal_True;
+ break;
+ }
+ m_xWriterText->setVisible(bWriterState);
+ m_xDrawText->setVisible(bDrawState);
+ m_xImpressText->setVisible(bImpressState);
+ }
+ public:
+ ChooserDialogHandler() :
+ ChooserDialogHandlerBase(m_aMutex),
+ m_xListbox(),
+ m_xWriterText(),
+ m_xDrawText(),
+ m_xImpressText()
+ {}
+
+ void initControls( const uno::Reference<awt::XControlContainer>& xControls,
+ const rtl::OUString& rFilename )
+ {
+ m_xListbox.set(xControls->getControl(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ListBox" ))),
+ uno::UNO_QUERY_THROW );
+ m_xWriterText.set(xControls->getControl(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "InfoWriter" ))),
+ uno::UNO_QUERY_THROW );
+ m_xImpressText.set(xControls->getControl(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "InfoImpress" ))),
+ uno::UNO_QUERY_THROW );
+ m_xDrawText.set(xControls->getControl(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "InfoDraw" ))),
+ uno::UNO_QUERY_THROW );
+
+ uno::Reference<awt::XWindow> xControl;
+ xControl.set(xControls->getControl(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ListBoxWriter" ))),
+ uno::UNO_QUERY_THROW );
+ xControl->setVisible(sal_False);
+ xControl.set(xControls->getControl(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ListBoxImpress" ))),
+ uno::UNO_QUERY_THROW );
+ xControl->setVisible(sal_False);
+ xControl.set(xControls->getControl(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ListBoxDraw" ))),
+ uno::UNO_QUERY_THROW );
+ xControl->setVisible(sal_False);
+ uno::Reference<beans::XPropertySet> xPropSet(
+ xControls->getControl(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ComboLabel" )))->getModel(),
+ uno::UNO_QUERY_THROW );
+ rtl::OUString aFilename( rFilename.copy(rFilename.lastIndexOf('/')+1) );
+ rtl::OUString aLabel;
+ xPropSet->getPropertyValue(rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Label" ))) >>= aLabel;
+ const char pFileName[] = "%FILENAME";
+ aLabel = aLabel.replaceAt(
+ aLabel.indexOfAsciiL(pFileName,sizeof(pFileName)/sizeof(*pFileName)-1),
+ sizeof(pFileName)/sizeof(*pFileName)-1,
+ aFilename );
+ xPropSet->setPropertyValue(rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Label" )),
+ uno::makeAny(aLabel));
+
+ uno::Sequence<rtl::OUString> aListboxItems(3);
+ aListboxItems[DRAW_INDEX] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Drawing" ));
+ aListboxItems[IMPRESS_INDEX] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Presentation" ));
+ aListboxItems[WRITER_INDEX] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Text Document" ));
+
+ m_xListbox->addItems(aListboxItems,0);
+ m_xListbox->selectItemPos(0,sal_True);
+ selectionChanged(0);
+ }
+
+ sal_Int32 getSelectedItem() const
+ {
+ return m_xListbox->getSelectedItemPos();
+ }
+
+ virtual ::sal_Bool SAL_CALL callHandlerMethod( const uno::Reference< awt::XDialog >& /*xDialog*/,
+ const uno::Any& /*EventObject*/,
+ const ::rtl::OUString& MethodName ) throw (lang::WrappedTargetException, uno::RuntimeException)
+ {
+ (void)MethodName;
+ OSL_ENSURE( MethodName.compareToAscii("SelectionChanged") == 0,
+ "Invalid event name" );
+ selectionChanged(getSelectedItem());
+ return sal_True;
+ }
+
+ virtual uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedMethodNames( ) throw (uno::RuntimeException)
+ {
+ uno::Sequence< ::rtl::OUString > aMethods(1);
+ aMethods[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "SelectionChanged" ));
+ return aMethods;
+ }
+ };
+}
+
+class FileEmitContext : public pdfparse::EmitContext
+{
+private:
+ oslFileHandle m_aReadHandle;
+ unsigned int m_nReadLen;
+ uno::Reference< io::XStream > m_xContextStream;
+ uno::Reference< io::XSeekable > m_xSeek;
+ uno::Reference< io::XOutputStream > m_xOut;
+
+public:
+ FileEmitContext( const rtl::OUString& rOrigFile,
+ const uno::Reference< uno::XComponentContext >& xContext,
+ const pdfparse::PDFContainer* pTop );
+ virtual ~FileEmitContext();
+
+ virtual bool write( const void* pBuf, unsigned int nLen );
+ virtual unsigned int getCurPos();
+ virtual bool copyOrigBytes( unsigned int nOrigOffset, unsigned int nLen );
+ virtual unsigned int readOrigBytes( unsigned int nOrigOffset, unsigned int nLen, void* pBuf );
+
+ const uno::Reference< io::XStream >& getContextStream() const { return m_xContextStream; }
+};
+
+FileEmitContext::FileEmitContext( const rtl::OUString& rOrigFile,
+ const uno::Reference< uno::XComponentContext >& xContext,
+ const pdfparse::PDFContainer* pTop ) :
+ pdfparse::EmitContext( pTop ),
+ m_aReadHandle(NULL),
+ m_nReadLen(0),
+ m_xContextStream(),
+ m_xSeek(),
+ m_xOut()
+{
+ m_xContextStream = uno::Reference< io::XStream >(
+ xContext->getServiceManager()->createInstanceWithContext(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.io.TempFile" ) ),
+ xContext ), uno::UNO_QUERY_THROW );
+ m_xOut = m_xContextStream->getOutputStream();
+ m_xSeek = uno::Reference<io::XSeekable>(m_xOut, uno::UNO_QUERY_THROW );
+
+ oslFileError aErr = osl_File_E_None;
+ if( (aErr=osl_openFile( rOrigFile.pData,
+ &m_aReadHandle,
+ osl_File_OpenFlag_Read )) == osl_File_E_None )
+ {
+ if( (aErr=osl_setFilePos( m_aReadHandle,
+ osl_Pos_End,
+ 0 )) == osl_File_E_None )
+ {
+ sal_uInt64 nFileSize = 0;
+ if( (aErr=osl_getFilePos( m_aReadHandle,
+ &nFileSize )) == osl_File_E_None )
+ {
+ m_nReadLen = static_cast<unsigned int>(nFileSize);
+ }
+ }
+ if( aErr != osl_File_E_None )
+ {
+ osl_closeFile( m_aReadHandle );
+ m_aReadHandle = NULL;
+ }
+ }
+ m_bDeflate = true;
+}
+
+FileEmitContext::~FileEmitContext()
+{
+ if( m_aReadHandle )
+ osl_closeFile( m_aReadHandle );
+}
+
+bool FileEmitContext::write( const void* pBuf, unsigned int nLen )
+{
+ if( ! m_xOut.is() )
+ return false;
+
+ uno::Sequence< sal_Int8 > aSeq( nLen );
+ rtl_copyMemory( aSeq.getArray(), pBuf, nLen );
+ m_xOut->writeBytes( aSeq );
+ return true;
+}
+
+unsigned int FileEmitContext::getCurPos()
+{
+ unsigned int nPos = 0;
+ if( m_xSeek.is() )
+ {
+ nPos = static_cast<unsigned int>( m_xSeek->getPosition() );
+ }
+ return nPos;
+}
+
+bool FileEmitContext::copyOrigBytes( unsigned int nOrigOffset, unsigned int nLen )
+{
+ if( nOrigOffset + nLen > m_nReadLen )
+ return false;
+
+ if( osl_setFilePos( m_aReadHandle, osl_Pos_Absolut, nOrigOffset ) != osl_File_E_None )
+ return false;
+
+ uno::Sequence< sal_Int8 > aSeq( nLen );
+
+ sal_uInt64 nBytesRead = 0;
+ if( osl_readFile( m_aReadHandle,
+ aSeq.getArray(),
+ nLen,
+ &nBytesRead ) != osl_File_E_None
+ || nBytesRead != static_cast<sal_uInt64>(nLen) )
+ {
+ return false;
+ }
+
+ m_xOut->writeBytes( aSeq );
+ return true;
+}
+
+unsigned int FileEmitContext::readOrigBytes( unsigned int nOrigOffset, unsigned int nLen, void* pBuf )
+{
+ if( nOrigOffset + nLen > m_nReadLen )
+ return 0;
+
+ if( osl_setFilePos( m_aReadHandle,
+ osl_Pos_Absolut,
+ nOrigOffset ) != osl_File_E_None )
+ {
+ return 0;
+ }
+
+ sal_uInt64 nBytesRead = 0;
+ if( osl_readFile( m_aReadHandle,
+ pBuf,
+ nLen,
+ &nBytesRead ) != osl_File_E_None )
+ {
+ return 0;
+ }
+ return static_cast<unsigned int>(nBytesRead);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+PDFDetector::PDFDetector( const uno::Reference< uno::XComponentContext >& xContext) :
+ PDFDetectorBase( m_aMutex ),
+ m_xContext( xContext )
+{}
+
+// XExtendedFilterDetection
+rtl::OUString SAL_CALL PDFDetector::detect( uno::Sequence< beans::PropertyValue >& rFilterData ) throw( uno::RuntimeException )
+{
+ osl::MutexGuard const guard( m_aMutex );
+ bool bSuccess = false;
+
+ // get the InputStream carrying the PDF content
+ uno::Reference< io::XInputStream > xInput;
+ uno::Reference< io::XStream > xEmbedStream;
+ rtl::OUString aOutFilterName, aOutTypeName;
+ rtl::OUString aURL;
+ rtl::OUString aPwd;
+ const beans::PropertyValue* pAttribs = rFilterData.getConstArray();
+ sal_Int32 nAttribs = rFilterData.getLength();
+ sal_Int32 nFilterNamePos = -1;
+ sal_Int32 nPwdPos = -1;
+ for( sal_Int32 i = 0; i < nAttribs; i++ )
+ {
+#if OSL_DEBUG_LEVEL > 1
+ rtl::OUString aVal( RTL_CONSTASCII_USTRINGPARAM( "<no string>" ) );
+ pAttribs[i].Value >>= aVal;
+ OSL_TRACE( "doDetection: Attrib: %s = %s\n",
+ rtl::OUStringToOString( pAttribs[i].Name, RTL_TEXTENCODING_UTF8 ).getStr(),
+ rtl::OUStringToOString( aVal, RTL_TEXTENCODING_UTF8 ).getStr() );
+#endif
+ if( pAttribs[i].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "InputStream" ) ) )
+ pAttribs[i].Value >>= xInput;
+ else if( pAttribs[i].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "URL" ) ) )
+ pAttribs[i].Value >>= aURL;
+ else if( pAttribs[i].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "FilterName" ) ) )
+ nFilterNamePos = i;
+ else if( pAttribs[i].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Password" ) ) )
+ {
+ nPwdPos = i;
+ pAttribs[i].Value >>= aPwd;
+ }
+ }
+ if( xInput.is() )
+ {
+ uno::Reference< io::XSeekable > xSeek( xInput, uno::UNO_QUERY );
+ if( xSeek.is() )
+ xSeek->seek( 0 );
+ // read the first 1024 byte (see PDF reference implementation note 12)
+ const sal_Int32 nHeaderSize = 1024;
+ uno::Sequence< sal_Int8 > aBuf( nHeaderSize );
+ sal_uInt64 nBytes = 0;
+ nBytes = xInput->readBytes( aBuf, nHeaderSize );
+ if( nBytes > 5 )
+ {
+ const sal_Int8* pBytes = aBuf.getConstArray();
+ for( unsigned int i = 0; i < nBytes-5; i++ )
+ {
+ if( pBytes[i] == '%' &&
+ pBytes[i+1] == 'P' &&
+ pBytes[i+2] == 'D' &&
+ pBytes[i+3] == 'F' &&
+ pBytes[i+4] == '-' )
+ {
+ bSuccess = true;
+ break;
+ }
+ }
+ }
+
+ // check for hybrid PDF
+ oslFileHandle aFile = NULL;
+ if( bSuccess &&
+ ( aURL.getLength() == 0 || aURL.compareToAscii( "file:", 5 ) != 0 )
+ )
+ {
+ sal_uInt64 nWritten = 0;
+ if( osl_createTempFile( NULL, &aFile, &aURL.pData ) != osl_File_E_None )
+ {
+ bSuccess = false;
+ }
+ else
+ {
+#if OSL_DEBUG_LEVEL > 1
+ OSL_TRACE( "created temp file %s\n",
+ rtl::OUStringToOString( aURL, RTL_TEXTENCODING_UTF8 ).getStr() );
+#endif
+ osl_writeFile( aFile, aBuf.getConstArray(), nBytes, &nWritten );
+
+ OSL_ENSURE( nWritten == nBytes, "writing of header bytes failed" );
+
+ if( nWritten == nBytes )
+ {
+ const sal_uInt32 nBufSize = 4096;
+ aBuf = uno::Sequence<sal_Int8>(nBufSize);
+ // copy the bytes
+ do
+ {
+ nBytes = xInput->readBytes( aBuf, nBufSize );
+ if( nBytes > 0 )
+ {
+ osl_writeFile( aFile, aBuf.getConstArray(), nBytes, &nWritten );
+ if( nWritten != nBytes )
+ {
+ bSuccess = false;
+ break;
+ }
+ }
+ } while( nBytes == nBufSize );
+ }
+ }
+ osl_closeFile( aFile );
+ }
+ rtl::OUString aEmbedMimetype;
+ xEmbedStream = getAdditionalStream( aURL, aEmbedMimetype, aPwd, m_xContext, rFilterData, false );
+ if( aFile )
+ osl_removeFile( aURL.pData );
+ if( aEmbedMimetype.getLength() )
+ {
+ if( aEmbedMimetype.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "application/vnd.oasis.opendocument.text" ) )
+ || aEmbedMimetype.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "application/vnd.oasis.opendocument.text-master" ) ) )
+ aOutFilterName = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "writer_pdf_addstream_import" ) );
+ else if( aEmbedMimetype.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "application/vnd.oasis.opendocument.presentation" ) ) )
+ aOutFilterName = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "impress_pdf_addstream_import" ) );
+ else if( aEmbedMimetype.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "application/vnd.oasis.opendocument.graphics" ) )
+ || aEmbedMimetype.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "application/vnd.oasis.opendocument.drawing" ) ) )
+ aOutFilterName = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "draw_pdf_addstream_import" ) );
+ else if( aEmbedMimetype.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "application/vnd.oasis.opendocument.spreadsheet" ) ) )
+ aOutFilterName = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "calc_pdf_addstream_import" ) );
+ }
+ }
+
+ if( bSuccess )
+ {
+ if( aOutFilterName.getLength() )
+ {
+ if( nFilterNamePos == -1 )
+ {
+ nFilterNamePos = nAttribs;
+ rFilterData.realloc( ++nAttribs );
+ rFilterData[ nFilterNamePos ].Name =
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FilterName" ) );
+ }
+ aOutTypeName = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("pdf_Portable_Document_Format") );
+
+ OSL_TRACE( "setting filter name %s, input stream %s\n",
+ rtl::OUStringToOString( aOutFilterName, RTL_TEXTENCODING_UTF8 ).getStr(),
+ xEmbedStream.is() ? "present" : "not present" );
+
+ rFilterData[nFilterNamePos].Value <<= aOutFilterName;
+ if( xEmbedStream.is() )
+ {
+ rFilterData.realloc( ++nAttribs );
+ rFilterData[nAttribs-1].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "EmbeddedSubstream" ) );
+ rFilterData[nAttribs-1].Value <<= xEmbedStream;
+ }
+ if( aPwd.getLength() )
+ {
+ if( nPwdPos == -1 )
+ {
+ nPwdPos = nAttribs;
+ rFilterData.realloc( ++nAttribs );
+ rFilterData[ nPwdPos ].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Password" ) );
+ }
+ rFilterData[ nPwdPos ].Value <<= aPwd;
+ }
+ }
+ else
+ {
+ if( nFilterNamePos == -1 )
+ {
+ nFilterNamePos = nAttribs;
+ rFilterData.realloc( ++nAttribs );
+ rFilterData[ nFilterNamePos ].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FilterName" ) );
+ }
+
+ const sal_Int32 nDocumentType = 0; //const sal_Int32 nDocumentType = queryDocumentTypeDialog(m_xContext,aURL);
+ if( nDocumentType < 0 )
+ {
+ return rtl::OUString();
+ }
+ else switch( nDocumentType )
+ {
+ case 0:
+ rFilterData[nFilterNamePos].Value <<= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "draw_pdf_import" ) );
+ break;
+
+ case 1:
+ rFilterData[nFilterNamePos].Value <<= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "impress_pdf_import" ) );
+ break;
+
+ case 2:
+ rFilterData[nFilterNamePos].Value <<= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "writer_pdf_import" ) );
+ break;
+
+ default:
+ OSL_FAIL("Unexpected case");
+ }
+
+ aOutTypeName = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("pdf_Portable_Document_Format") );
+ }
+ }
+
+ return aOutTypeName;
+}
+
+bool checkDocChecksum( const rtl::OUString& rInPDFFileURL,
+ sal_uInt32 nBytes,
+ const rtl::OUString& rChkSum )
+{
+ bool bRet = false;
+ if( rChkSum.getLength() != 2* RTL_DIGEST_LENGTH_MD5 )
+ {
+ OSL_TRACE( "checksum of length %d, expected %d\n",
+ rChkSum.getLength(), 2*RTL_DIGEST_LENGTH_MD5 );
+ return false;
+ }
+
+ // prepare checksum to test
+ sal_uInt8 nTestChecksum[ RTL_DIGEST_LENGTH_MD5 ];
+ const sal_Unicode* pChar = rChkSum.getStr();
+ for( unsigned int i = 0; i < RTL_DIGEST_LENGTH_MD5; i++ )
+ {
+ sal_uInt8 nByte = sal_uInt8( ( (*pChar >= '0' && *pChar <= '9') ? *pChar - '0' :
+ ( (*pChar >= 'A' && *pChar <= 'F') ? *pChar - 'A' + 10 :
+ ( (*pChar >= 'a' && *pChar <= 'f') ? *pChar - 'a' + 10 :
+ 0 ) ) ) );
+ nByte <<= 4;
+ pChar++;
+ nByte |= ( (*pChar >= '0' && *pChar <= '9') ? *pChar - '0' :
+ ( (*pChar >= 'A' && *pChar <= 'F') ? *pChar - 'A' + 10 :
+ ( (*pChar >= 'a' && *pChar <= 'f') ? *pChar - 'a' + 10 :
+ 0 ) ) );
+ pChar++;
+ nTestChecksum[i] = nByte;
+ }
+
+ // open file and calculate actual checksum up to index nBytes
+ sal_uInt8 nActualChecksum[ RTL_DIGEST_LENGTH_MD5 ];
+ rtl_zeroMemory( nActualChecksum, sizeof(nActualChecksum) );
+ rtlDigest aActualDigest = rtl_digest_createMD5();
+ oslFileHandle aRead = NULL;
+ oslFileError aErr = osl_File_E_None;
+ if( (aErr = osl_openFile(rInPDFFileURL.pData,
+ &aRead,
+ osl_File_OpenFlag_Read )) == osl_File_E_None )
+ {
+ sal_Int8 aBuf[4096];
+ sal_uInt32 nCur = 0;
+ sal_uInt64 nBytesRead = 0;
+ while( nCur < nBytes )
+ {
+ sal_uInt32 nPass = (nBytes - nCur) > sizeof( aBuf ) ? sizeof( aBuf ) : nBytes - nCur;
+ if( (aErr = osl_readFile( aRead, aBuf, nPass, &nBytesRead)) != osl_File_E_None
+ || nBytesRead == 0 )
+ {
+ break;
+ }
+ nPass = static_cast<sal_uInt32>(nBytesRead);
+ nCur += nPass;
+ rtl_digest_updateMD5( aActualDigest, aBuf, nPass );
+ }
+ rtl_digest_getMD5( aActualDigest, nActualChecksum, sizeof(nActualChecksum) );
+ osl_closeFile( aRead );
+ }
+ rtl_digest_destroyMD5( aActualDigest );
+
+ // compare the contents
+ bRet = (0 == rtl_compareMemory( nActualChecksum, nTestChecksum, sizeof( nActualChecksum ) ));
+#if OSL_DEBUG_LEVEL > 1
+ OSL_TRACE( "test checksum: " );
+ for( unsigned int i = 0; i < sizeof(nTestChecksum); i++ )
+ OSL_TRACE( "%.2X", int(nTestChecksum[i]) );
+ OSL_TRACE( "\n" );
+ OSL_TRACE( "file checksum: " );
+ for( unsigned int i = 0; i < sizeof(nActualChecksum); i++ )
+ OSL_TRACE( "%.2X", int(nActualChecksum[i]) );
+ OSL_TRACE( "\n" );
+#endif
+ return bRet;
+}
+
+uno::Reference< io::XStream > getAdditionalStream( const rtl::OUString& rInPDFFileURL,
+ rtl::OUString& rOutMimetype,
+ rtl::OUString& io_rPwd,
+ const uno::Reference<uno::XComponentContext>& xContext,
+ const uno::Sequence<beans::PropertyValue>& rFilterData,
+ bool bMayUseUI )
+{
+ uno::Reference< io::XStream > xEmbed;
+ rtl::OString aPDFFile;
+ rtl::OUString aSysUPath;
+ if( osl_getSystemPathFromFileURL( rInPDFFileURL.pData, &aSysUPath.pData ) != osl_File_E_None )
+ return xEmbed;
+ aPDFFile = rtl::OUStringToOString( aSysUPath, osl_getThreadTextEncoding() );
+
+ pdfparse::PDFReader aParser;
+ boost::scoped_ptr<pdfparse::PDFEntry> pEntry( aParser.read( aPDFFile.getStr() ));
+ if( pEntry )
+ {
+ pdfparse::PDFFile* pPDFFile = dynamic_cast<pdfparse::PDFFile*>(pEntry.get());
+ if( pPDFFile )
+ {
+ unsigned int nElements = pPDFFile->m_aSubElements.size();
+ while( nElements-- > 0 )
+ {
+ pdfparse::PDFTrailer* pTrailer = dynamic_cast<pdfparse::PDFTrailer*>(pPDFFile->m_aSubElements[nElements]);
+ if( pTrailer && pTrailer->m_pDict )
+ {
+ // search document checksum entry
+ boost::unordered_map< rtl::OString,
+ pdfparse::PDFEntry*,
+ rtl::OStringHash >::iterator chk;
+ chk = pTrailer->m_pDict->m_aMap.find( "DocChecksum" );
+ if( chk == pTrailer->m_pDict->m_aMap.end() )
+ {
+ OSL_TRACE( "no DocChecksum entry\n" );
+ continue;
+ }
+ pdfparse::PDFName* pChkSumName = dynamic_cast<pdfparse::PDFName*>(chk->second);
+ if( pChkSumName == NULL )
+ {
+ OSL_TRACE( "no name for DocChecksum entry\n" );
+ continue;
+ }
+
+ // search for AdditionalStreams entry
+ boost::unordered_map< rtl::OString,
+ pdfparse::PDFEntry*,
+ rtl::OStringHash >::iterator add_stream;
+ add_stream = pTrailer->m_pDict->m_aMap.find( "AdditionalStreams" );
+ if( add_stream == pTrailer->m_pDict->m_aMap.end() )
+ {
+ OSL_TRACE( "no AdditionalStreams entry\n" );
+ continue;
+ }
+ pdfparse::PDFArray* pStreams = dynamic_cast<pdfparse::PDFArray*>(add_stream->second);
+ if( ! pStreams || pStreams->m_aSubElements.size() < 2 )
+ {
+ OSL_TRACE( "AdditionalStreams array too small\n" );
+ continue;
+ }
+
+ // check checksum
+ rtl::OUString aChkSum = pChkSumName->getFilteredName();
+ if( ! checkDocChecksum( rInPDFFileURL, pTrailer->m_nOffset, aChkSum ) )
+ continue;
+
+ // extract addstream and mimetype
+ pdfparse::PDFName* pMimeType = dynamic_cast<pdfparse::PDFName*>(pStreams->m_aSubElements[0]);
+ pdfparse::PDFObjectRef* pStreamRef = dynamic_cast<pdfparse::PDFObjectRef*>(pStreams->m_aSubElements[1]);
+
+ OSL_ENSURE( pMimeType, "error: no mimetype element\n" );
+ OSL_ENSURE( pStreamRef, "error: no stream ref element\n" );
+
+ if( pMimeType && pStreamRef )
+ {
+ pdfparse::PDFObject* pObject = pPDFFile->findObject( pStreamRef->m_nNumber, pStreamRef->m_nGeneration );
+ OSL_ENSURE( pObject, "object not found\n" );
+ if( pObject )
+ {
+ if( pPDFFile->isEncrypted() )
+ {
+ bool bAuthenticated = false;
+ if( io_rPwd.getLength() )
+ {
+ rtl::OString aIsoPwd = rtl::OUStringToOString( io_rPwd,
+ RTL_TEXTENCODING_ISO_8859_1 );
+ bAuthenticated = pPDFFile->setupDecryptionData( aIsoPwd.getStr() );
+ // trash password string on heap
+ rtl_zeroMemory( (void*)aIsoPwd.getStr(), aIsoPwd.getLength() );
+ }
+ if( ! bAuthenticated )
+ {
+ const beans::PropertyValue* pAttribs = rFilterData.getConstArray();
+ sal_Int32 nAttribs = rFilterData.getLength();
+ uno::Reference< task::XInteractionHandler > xIntHdl;
+ for( sal_Int32 i = 0; i < nAttribs; i++ )
+ {
+ if( pAttribs[i].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "InteractionHandler" ) ) )
+ pAttribs[i].Value >>= xIntHdl;
+ }
+ if( ! bMayUseUI || ! xIntHdl.is() )
+ {
+ rOutMimetype = pMimeType->getFilteredName();
+ xEmbed.clear();
+ break;
+ }
+
+ rtl::OUString aDocName( rInPDFFileURL.copy( rInPDFFileURL.lastIndexOf( sal_Unicode('/') )+1 ) );
+
+ bool bEntered = false;
+ do
+ {
+ bEntered = getPassword( xIntHdl, io_rPwd, ! bEntered, aDocName );
+ rtl::OString aIsoPwd = rtl::OUStringToOString( io_rPwd,
+ RTL_TEXTENCODING_ISO_8859_1 );
+ bAuthenticated = pPDFFile->setupDecryptionData( aIsoPwd.getStr() );
+ // trash password string on heap
+ rtl_zeroMemory( (void*)aIsoPwd.getStr(), aIsoPwd.getLength() );
+ } while( bEntered && ! bAuthenticated );
+ }
+
+ OSL_TRACE( "password: %s\n", bAuthenticated ? "matches" : "does not match" );
+ if( ! bAuthenticated )
+ continue;
+ }
+ rOutMimetype = pMimeType->getFilteredName();
+ FileEmitContext aContext( rInPDFFileURL,
+ xContext,
+ pPDFFile );
+ aContext.m_bDecrypt = pPDFFile->isEncrypted();
+ pObject->writeStream( aContext, pPDFFile );
+ xEmbed = aContext.getContextStream();
+ break; // success
+ }
+ }
+ }
+ }
+ }
+ }
+
+ OSL_TRACE( "extracted add stream: mimetype %s\n",
+ rtl::OUStringToOString( rOutMimetype,
+ RTL_TEXTENCODING_UTF8 ).getStr());
+ return xEmbed;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/filterdet.hxx b/sdext/source/pdfimport/filterdet.hxx
new file mode 100644
index 000000000000..3532b0180333
--- /dev/null
+++ b/sdext/source/pdfimport/filterdet.hxx
@@ -0,0 +1,116 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_FILTERDET_HXX
+#define INCLUDED_PDFI_FILTERDET_HXX
+
+#include <com/sun/star/document/XExtendedFilterDetection.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/io/XStream.hpp>
+#include <com/sun/star/task/XInteractionHandler.hpp>
+
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/basemutex.hxx>
+
+
+namespace pdfi
+{
+
+typedef ::cppu::WeakComponentImplHelper1<
+ com::sun::star::document::XExtendedFilterDetection > PDFDetectorBase;
+
+class PDFDetector : private cppu::BaseMutex,
+ public PDFDetectorBase
+{
+private:
+ com::sun::star::uno::Reference<
+ com::sun::star::uno::XComponentContext > m_xContext;
+
+public:
+ explicit PDFDetector( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XComponentContext >& xContext );
+
+ // XExtendedFilterDetection
+ virtual rtl::OUString SAL_CALL detect( com::sun::star::uno::Sequence<
+ com::sun::star::beans::PropertyValue >& io_rDescriptor )
+ throw (com::sun::star::uno::RuntimeException);
+};
+
+
+/** Retrieve embedded substream from PDF file
+
+ Useful e.g. for hybrid PDF
+
+ @param rPDFFile
+ URI of the pdf file
+
+ @param o_rOutMimetype
+ Output parameter. Receives the mime type of the
+ substream. Used to distinguish between
+ draw/impress/writer/calc during import
+
+ @param o_rOutPwd
+ In/Out parameter. If given password is wrong, user is queried
+ for another (if bMayUseUI is true)
+
+ @param xContext
+ Component context
+
+ @param rFilterData
+ Basically used to pass on XFilter::filter properties (function
+ uses it to retrieve interaction handler)
+
+ @param bMayUseUI
+ When false, no dialog is opened to query user for alternate
+ password
+ */
+com::sun::star::uno::Reference< com::sun::star::io::XStream >
+ getAdditionalStream( const rtl::OUString& rPDFFile,
+ rtl::OUString& o_rOutMimetype,
+ rtl::OUString& io_rOutPwd,
+ const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& xContext,
+ const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rFilterData,
+ bool bMayUseUI );
+
+
+bool checkDocChecksum( const rtl::OUString& rInPDFFileURL,
+ sal_uInt32 nBytes,
+ const rtl::OUString& rChkSum );
+
+bool getPassword( const com::sun::star::uno::Reference< com::sun::star::task::XInteractionHandler >& xHandler,
+ rtl::OUString& o_rPwd,
+ bool bFirstTry,
+ const rtl::OUString& i_rDocName
+ );
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/help/component.txt b/sdext/source/pdfimport/help/component.txt
new file mode 100755
index 000000000000..969581ef2fbf
--- /dev/null
+++ b/sdext/source/pdfimport/help/component.txt
@@ -0,0 +1 @@
+The PDF Import Extension allows you to import and modify PDF documents. Best results with 100% layout accuracy can be achieved with the "PDF/ODF hybrid file" format, which this extension also enables. A hybrid PDF/ODF file is a PDF file that contains an embedded ODF source file. Hybrid PDF/ODF files will be opened in OpenOffice.org as an ODF file without any layout changes.
diff --git a/sdext/source/pdfimport/inc/contentsink.hxx b/sdext/source/pdfimport/inc/contentsink.hxx
new file mode 100644
index 000000000000..204eb7499a50
--- /dev/null
+++ b/sdext/source/pdfimport/inc/contentsink.hxx
@@ -0,0 +1,186 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_CONTENTSINK_HXX
+#define INCLUDED_PDFI_CONTENTSINK_HXX
+
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/rendering/ARGBColor.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace rtl { class OUString; }
+namespace com { namespace sun { namespace star {
+namespace rendering
+{
+ class XPolyPolygon2D;
+}
+namespace geometry
+{
+ struct Matrix2D;
+ struct AffineMatrix2D;
+ struct RealRectangle2D;
+ struct RealPoint2D;
+ struct RealSize2D;
+}
+namespace beans
+{
+ struct PropertyValue;
+} } } }
+
+namespace pdfi
+{
+ struct FontAttributes
+ {
+ FontAttributes( const rtl::OUString& familyName_,
+ bool isBold_,
+ bool isItalic_,
+ bool isUnderline_,
+ bool isOutline_,
+ double size_ ) :
+ familyName(familyName_),
+ isBold(isBold_),
+ isItalic(isItalic_),
+ isUnderline(isUnderline_),
+ isOutline(isOutline_),
+ size(size_)
+ {}
+
+ FontAttributes() :
+ familyName(),
+ isBold(false),
+ isItalic(false),
+ isUnderline(false),
+ isOutline(false),
+ size(0.0)
+ {}
+
+ ::rtl::OUString familyName;
+ bool isBold;
+ bool isItalic;
+ bool isUnderline;
+ bool isOutline;
+ double size; // device pixel
+
+ bool operator==(const FontAttributes& rFont) const
+ {
+ return familyName == rFont.familyName &&
+ !isBold == !rFont.isBold &&
+ !isItalic == !rFont.isItalic &&
+ !isUnderline == !rFont.isUnderline &&
+ !isOutline == !rFont.isOutline &&
+ size == rFont.size;
+ }
+ };
+
+ /** (preliminary) API wrapper around xpdf
+
+ Wraps the functionality currently used from xpdf's OutputDev
+ interface. Subject to change.
+ */
+ struct ContentSink
+ {
+ virtual ~ContentSink() {}
+
+ /// Total number of pages for upcoming document
+ virtual void setPageNum( sal_Int32 nNumPages ) = 0;
+ virtual void startPage( const ::com::sun::star::geometry::RealSize2D& rSize ) = 0;
+ virtual void endPage() = 0;
+
+ virtual void hyperLink( const ::com::sun::star::geometry::RealRectangle2D& rBounds,
+ const ::rtl::OUString& rURI ) = 0;
+
+ virtual void pushState() = 0;
+ virtual void popState() = 0;
+
+ virtual void setFlatness( double ) = 0;
+ virtual void setTransformation( const ::com::sun::star::geometry::AffineMatrix2D& rMatrix ) = 0;
+ virtual void setLineDash( const ::com::sun::star::uno::Sequence<double>& dashes,
+ double start ) = 0;
+ virtual void setLineJoin( sal_Int8 lineJoin ) = 0;
+ virtual void setLineCap( sal_Int8 lineCap ) = 0;
+ virtual void setMiterLimit(double) = 0;
+ virtual void setLineWidth(double) = 0;
+ virtual void setFillColor( const ::com::sun::star::rendering::ARGBColor& rColor ) = 0;
+ virtual void setStrokeColor( const ::com::sun::star::rendering::ARGBColor& rColor ) = 0;
+ virtual void setBlendMode( sal_Int8 blendMode ) = 0;
+ virtual void setFont( const FontAttributes& rFont ) = 0;
+ virtual void setTextRenderMode( sal_Int32 ) = 0;
+
+
+ virtual void strokePath( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPath ) = 0;
+ virtual void fillPath( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPath ) = 0;
+ virtual void eoFillPath( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPath ) = 0;
+
+ virtual void intersectClip(const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPath) = 0;
+ virtual void intersectEoClip(const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPath) = 0;
+
+ virtual void drawGlyphs( const rtl::OUString& rGlyphs,
+ const ::com::sun::star::geometry::RealRectangle2D& rRect,
+ const ::com::sun::star::geometry::Matrix2D& rFontMatrix ) = 0;
+
+ /// issued when a sequence of associated glyphs is drawn
+ virtual void endText() = 0;
+
+ /// draws given bitmap as a mask (using current fill color)
+ virtual void drawMask(const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xBitmap,
+ bool bInvert ) = 0;
+ /// Given image must already be color-mapped and normalized to sRGB.
+ virtual void drawImage(const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xBitmap ) = 0;
+ /** Given image must already be color-mapped and normalized to sRGB.
+
+ maskColors must contain two sequences of color components
+ */
+ virtual void drawColorMaskedImage(const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xBitmap,
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Any>& xMaskColors ) = 0;
+ virtual void drawMaskedImage(const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xBitmap,
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xMask,
+ bool bInvertMask) = 0;
+ virtual void drawAlphaMaskedImage(const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xImage,
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xMask) = 0;
+ };
+
+ typedef boost::shared_ptr<ContentSink> ContentSinkSharedPtr;
+}
+
+#endif /* INCLUDED_PDFI_CONTENTSINK_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/inc/odfemitter.hxx b/sdext/source/pdfimport/inc/odfemitter.hxx
new file mode 100644
index 000000000000..d7e1c27097b7
--- /dev/null
+++ b/sdext/source/pdfimport/inc/odfemitter.hxx
@@ -0,0 +1,48 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_ODFEMITTER_HXX
+#define INCLUDED_PDFI_ODFEMITTER_HXX
+
+#include "xmlemitter.hxx"
+#include <com/sun/star/uno/Reference.hxx>
+
+namespace com { namespace sun { namespace star { namespace io
+{
+ class XOutputStream;
+} } } }
+
+namespace pdfi
+{
+ XmlEmitterSharedPtr createOdfEmitter( const com::sun::star::uno::Reference<
+ com::sun::star::io::XOutputStream>& xOut );
+}
+
+#endif /* INCLUDED_PDFI_ODFEMITTER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/inc/pdfihelper.hxx b/sdext/source/pdfimport/inc/pdfihelper.hxx
new file mode 100644
index 000000000000..d8f7d3c60e44
--- /dev/null
+++ b/sdext/source/pdfimport/inc/pdfihelper.hxx
@@ -0,0 +1,205 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_HELPER_HXX
+#define INCLUDED_PDFI_HELPER_HXX
+
+#define BASEGFX_STATICLIBRARY
+
+#include "contentsink.hxx"
+
+#include <rtl/ustring.hxx>
+#include <rtl/math.h>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <com/sun/star/rendering/XColorSpace.hpp>
+
+#include <vector>
+#include <boost/unordered_map.hpp>
+
+// virtual resolution of the PDF OutputDev in dpi
+#define PDFI_OUTDEV_RESOLUTION 7200
+
+namespace com { namespace sun { namespace star { namespace task
+{ class XInteractionHandler; }}}}
+
+namespace pdfi
+{
+ typedef boost::unordered_map< rtl::OUString, rtl::OUString, rtl::OUStringHash > PropertyMap;
+ typedef sal_Int32 ImageId;
+
+ /// What to do with a polygon. values can be ORed together
+ enum PolygonAction { PATH_STROKE=1, PATH_FILL=2, PATH_EOFILL=4 };
+
+ rtl::OUString unitMMString( double fMM );
+ rtl::OUString convertPixelToUnitString( double fPix );
+
+ inline double convPx2mm( double fPix )
+ {
+ const double px2mm = 25.4/PDFI_OUTDEV_RESOLUTION;
+ fPix *= px2mm;
+ return fPix;
+ }
+
+ inline double convmm2Px( double fMM )
+ {
+ const double mm2px = PDFI_OUTDEV_RESOLUTION/25.4;
+ fMM *= mm2px;
+ return fMM;
+ }
+
+ inline double convPx2mmPrec2( double fPix )
+ {
+ return rtl_math_round( convPx2mm( fPix ), 2, rtl_math_RoundingMode_Floor );
+ }
+
+ /// Convert color to "#FEFEFE" color notation
+ rtl::OUString getColorString( const ::com::sun::star::rendering::ARGBColor& );
+
+ struct FontAttrHash
+ {
+ size_t operator()(const FontAttributes& rFont ) const
+ {
+ return (size_t)rFont.familyName.hashCode()
+ ^ size_t(rFont.isBold ? 0xd47be593 : 0)
+ ^ size_t(rFont.isItalic ? 0x1efd51a1 : 0)
+ ^ size_t(rFont.isUnderline ? 0xf6bd325a : 0)
+ ^ size_t(rFont.isOutline ? 0x12345678 : 0)
+ ^ size_t(rFont.size)
+ ;
+ }
+ };
+
+ struct GraphicsContext
+ {
+ ::com::sun::star::rendering::ARGBColor LineColor;
+ ::com::sun::star::rendering::ARGBColor FillColor;
+ sal_Int8 LineJoin;
+ sal_Int8 LineCap;
+ sal_Int8 BlendMode;
+ double Flatness;
+ double LineWidth;
+ double MiterLimit;
+ std::vector<double> DashArray;
+ sal_Int32 FontId;
+ sal_Int32 TextRenderMode;
+ basegfx::B2DHomMatrix Transformation;
+ basegfx::B2DPolyPolygon Clip;
+
+ GraphicsContext() :
+ LineColor(),
+ FillColor(),
+ LineJoin(0),
+ LineCap(0),
+ BlendMode(0),
+ Flatness(0.0),
+ LineWidth(1.0),
+ MiterLimit(10.0),
+ DashArray(),
+ FontId(0),
+ TextRenderMode(0),
+ Transformation(),
+ Clip()
+ {}
+
+ bool operator==(const GraphicsContext& rRight ) const
+ {
+ return LineColor.Red == rRight.LineColor.Red &&
+ LineColor.Green == rRight.LineColor.Green &&
+ LineColor.Blue == rRight.LineColor.Blue &&
+ LineColor.Alpha == rRight.LineColor.Alpha &&
+ FillColor.Red == rRight.FillColor.Red &&
+ FillColor.Green == rRight.FillColor.Green &&
+ FillColor.Blue == rRight.FillColor.Blue &&
+ FillColor.Alpha == rRight.FillColor.Alpha &&
+ LineJoin == rRight.LineJoin &&
+ LineCap == rRight.LineCap &&
+ BlendMode == rRight.BlendMode &&
+ LineWidth == rRight.LineWidth &&
+ Flatness == rRight.Flatness &&
+ MiterLimit == rRight.MiterLimit &&
+ DashArray == rRight.DashArray &&
+ FontId == rRight.FontId &&
+ TextRenderMode == rRight.TextRenderMode &&
+ Transformation == rRight.Transformation &&
+ Clip == rRight.Clip;
+ }
+
+ bool isRotatedOrSkewed() const
+ { return Transformation.get( 0, 1 ) != 0.0 ||
+ Transformation.get( 1, 0 ) != 0.0; }
+ };
+
+ struct GraphicsContextHash
+ {
+ size_t operator()(const GraphicsContext& rGC ) const
+ {
+ return size_t(rGC.LineColor.Red)
+ ^ size_t(rGC.LineColor.Green)
+ ^ size_t(rGC.LineColor.Blue)
+ ^ size_t(rGC.LineColor.Alpha)
+ ^ size_t(rGC.FillColor.Red)
+ ^ size_t(rGC.FillColor.Green)
+ ^ size_t(rGC.FillColor.Blue)
+ ^ size_t(rGC.FillColor.Alpha)
+ ^ size_t(rGC.LineJoin)
+ ^ size_t(rGC.LineCap)
+ ^ size_t(rGC.BlendMode)
+ ^ size_t(rGC.LineWidth)
+ ^ size_t(rGC.Flatness)
+ ^ size_t(rGC.MiterLimit)
+ ^ rGC.DashArray.size()
+ ^ size_t(rGC.FontId)
+ ^ size_t(rGC.TextRenderMode)
+ ^ size_t(rGC.Transformation.get( 0, 0 ))
+ ^ size_t(rGC.Transformation.get( 1, 0 ))
+ ^ size_t(rGC.Transformation.get( 0, 1 ))
+ ^ size_t(rGC.Transformation.get( 1, 1 ))
+ ^ size_t(rGC.Transformation.get( 0, 2 ))
+ ^ size_t(rGC.Transformation.get( 1, 2 ))
+ ^ size_t(rGC.Clip.count() ? rGC.Clip.getB2DPolygon(0).count() : 0)
+ ;
+ }
+ };
+
+ /** retrieve password from user
+ */
+ bool getPassword( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::task::XInteractionHandler >& xHandler,
+ rtl::OUString& rOutPwd,
+ bool bFirstTry,
+ const rtl::OUString& rDocName
+ );
+}
+
+#define USTR(x) rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( x ) )
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/inc/pdfparse.hxx b/sdext/source/pdfimport/inc/pdfparse.hxx
new file mode 100644
index 000000000000..1cfd82e9c4cd
--- /dev/null
+++ b/sdext/source/pdfimport/inc/pdfparse.hxx
@@ -0,0 +1,314 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_PDFPARSE_HXX
+#define INCLUDED_PDFI_PDFPARSE_HXX
+
+#include <sal/types.h>
+#include <rtl/ustring.hxx>
+#include <rtl/string.hxx>
+
+#include <vector>
+#include <boost/unordered_map.hpp>
+
+namespace pdfparse
+{
+
+struct EmitImplData;
+struct PDFContainer;
+class EmitContext
+{
+ public:
+ virtual bool write( const void* pBuf, unsigned int nLen ) = 0;
+ virtual unsigned int getCurPos() = 0;
+ virtual bool copyOrigBytes( unsigned int nOrigOffset, unsigned int nLen ) = 0;
+ virtual unsigned int readOrigBytes( unsigned int nOrigOffset, unsigned int nLen, void* pBuf ) = 0;
+
+ EmitContext( const PDFContainer* pTop = NULL );
+ virtual ~EmitContext();
+
+ // set this to deflate contained streams
+ bool m_bDeflate;
+ // set this to decrypt the PDF file
+ bool m_bDecrypt;
+
+ private:
+ friend struct PDFEntry;
+ EmitImplData* m_pImplData;
+};
+
+struct PDFEntry
+{
+ PDFEntry() {}
+ virtual ~PDFEntry();
+
+ virtual bool emit( EmitContext& rWriteContext ) const = 0;
+ virtual PDFEntry* clone() const = 0;
+
+ protected:
+ EmitImplData* getEmitData( EmitContext& rContext ) const;
+ void setEmitData( EmitContext& rContext, EmitImplData* pNewEmitData ) const;
+};
+
+struct PDFComment : public PDFEntry
+{
+ rtl::OString m_aComment;
+
+ PDFComment( const rtl::OString& rComment )
+ : PDFEntry(), m_aComment( rComment ) {}
+ virtual ~PDFComment();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+};
+
+struct PDFValue : public PDFEntry
+{
+ // abstract base class for simple values
+ PDFValue() : PDFEntry() {}
+ virtual ~PDFValue();
+};
+
+struct PDFName : public PDFValue
+{
+ rtl::OString m_aName;
+
+ PDFName( const rtl::OString& rName )
+ : PDFValue(), m_aName( rName ) {}
+ virtual ~PDFName();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+
+ rtl::OUString getFilteredName() const;
+};
+
+struct PDFString : public PDFValue
+{
+ rtl::OString m_aString;
+
+ PDFString( const rtl::OString& rString )
+ : PDFValue(), m_aString( rString ) {}
+ virtual ~PDFString();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+
+ rtl::OString getFilteredString() const;
+};
+
+struct PDFNumber : public PDFValue
+{
+ double m_fValue;
+
+ PDFNumber( double fVal )
+ : PDFValue(), m_fValue( fVal ) {}
+ virtual ~PDFNumber();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+};
+
+struct PDFBool : public PDFValue
+{
+ bool m_bValue;
+
+ PDFBool( bool bVal )
+ : PDFValue(), m_bValue( bVal ) {}
+ virtual ~PDFBool();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+};
+
+struct PDFObjectRef : public PDFValue
+{
+ unsigned int m_nNumber;
+ unsigned int m_nGeneration;
+
+ PDFObjectRef( unsigned int nNr, unsigned int nGen )
+ : PDFValue(), m_nNumber( nNr ), m_nGeneration( nGen ) {}
+ virtual ~PDFObjectRef();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+};
+
+struct PDFNull : public PDFValue
+{
+ PDFNull() {}
+ virtual ~PDFNull();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+};
+
+struct PDFObject;
+struct PDFContainer : public PDFEntry
+{
+ sal_Int32 m_nOffset;
+ std::vector<PDFEntry*> m_aSubElements;
+
+ // this is an abstract base class for identifying
+ // entries that can contain sub elements besides comments
+ PDFContainer() : PDFEntry(), m_nOffset( 0 ) {}
+ virtual ~PDFContainer();
+ virtual bool emitSubElements( EmitContext& rWriteContext ) const;
+ virtual void cloneSubElements( std::vector<PDFEntry*>& rNewSubElements ) const;
+
+ PDFObject* findObject( unsigned int nNumber, unsigned int nGeneration ) const;
+ PDFObject* findObject( PDFObjectRef* pRef ) const
+ { return findObject( pRef->m_nNumber, pRef->m_nGeneration ); }
+};
+
+struct PDFArray : public PDFContainer
+{
+ PDFArray() {}
+ virtual ~PDFArray();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+};
+
+struct PDFDict : public PDFContainer
+{
+ typedef boost::unordered_map<rtl::OString,PDFEntry*,rtl::OStringHash> Map;
+ Map m_aMap;
+
+ PDFDict() {}
+ virtual ~PDFDict();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+
+ // inserting a value of NULL will remove rName and the previous value
+ // from the dictionary
+ void insertValue( const rtl::OString& rName, PDFEntry* pValue );
+ // removes a name/value pair from the dict
+ void eraseValue( const rtl::OString& rName );
+ // builds new map as of sub elements
+ // returns NULL if successfull, else the first offending element
+ PDFEntry* buildMap();
+};
+
+struct PDFStream : public PDFEntry
+{
+ unsigned int m_nBeginOffset;
+ unsigned int m_nEndOffset; // offset of the byte after the stream
+ PDFDict* m_pDict;
+
+ PDFStream( unsigned int nBegin, unsigned int nEnd, PDFDict* pStreamDict )
+ : PDFEntry(), m_nBeginOffset( nBegin ), m_nEndOffset( nEnd ), m_pDict( pStreamDict ) {}
+ virtual ~PDFStream();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+
+ unsigned int getDictLength( const PDFContainer* pObjectContainer = NULL ) const; // get contents of the "Length" entry of the dict
+};
+
+struct PDFTrailer : public PDFContainer
+{
+ PDFDict* m_pDict;
+
+ PDFTrailer() : PDFContainer(), m_pDict( NULL ) {}
+ virtual ~PDFTrailer();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+};
+
+struct PDFFileImplData;
+struct PDFFile : public PDFContainer
+{
+ private:
+ mutable PDFFileImplData* m_pData;
+ PDFFileImplData* impl_getData() const;
+ public:
+ unsigned int m_nMajor; // PDF major
+ unsigned int m_nMinor; // PDF minor
+
+ PDFFile()
+ : PDFContainer(),
+ m_pData( NULL ),
+ m_nMajor( 0 ), m_nMinor( 0 )
+ {}
+ virtual ~PDFFile();
+
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+
+ bool isEncrypted() const;
+ // this method checks whether rPwd is compatible with
+ // either user or owner password and sets up decrypt data in that case
+ // returns true if decryption can be done
+ bool setupDecryptionData( const rtl::OString& rPwd ) const;
+
+ bool decrypt( const sal_uInt8* pInBuffer, sal_uInt32 nLen,
+ sal_uInt8* pOutBuffer,
+ unsigned int nObject, unsigned int nGeneration ) const;
+
+ rtl::OUString getDecryptionKey() const;
+};
+
+struct PDFObject : public PDFContainer
+{
+ PDFEntry* m_pObject;
+ PDFStream* m_pStream;
+ unsigned int m_nNumber;
+ unsigned int m_nGeneration;
+
+ PDFObject( unsigned int nNr, unsigned int nGen )
+ : m_pObject( NULL ), m_pStream( NULL ), m_nNumber( nNr ), m_nGeneration( nGen ) {}
+ virtual ~PDFObject();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+
+ // writes only the contained stream, deflated if necessary
+ bool writeStream( EmitContext& rContext, const PDFFile* pPDFFile ) const;
+
+ private:
+ // returns true if stream is deflated
+ // fills *ppStream and *pBytes with start of stream and count of bytes
+ // memory returned in *ppStream must be freed with rtl_freeMemory afterwards
+ // fills in NULL and 0 in case of error
+ bool getDeflatedStream( char** ppStream, unsigned int* pBytes, const PDFContainer* pObjectContainer, EmitContext& rContext ) const;
+};
+
+struct PDFPart : public PDFContainer
+{
+ PDFPart() : PDFContainer() {}
+ virtual ~PDFPart();
+ virtual bool emit( EmitContext& rWriteContext ) const;
+ virtual PDFEntry* clone() const;
+};
+
+class PDFReader
+{
+ public:
+ PDFReader() {}
+ ~PDFReader() {}
+
+ PDFEntry* read( const char* pFileName );
+ PDFEntry* read( const char* pBuffer, unsigned int nLen );
+};
+
+} // namespace
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/inc/saxemitter.hxx b/sdext/source/pdfimport/inc/saxemitter.hxx
new file mode 100644
index 000000000000..c8a394ab746e
--- /dev/null
+++ b/sdext/source/pdfimport/inc/saxemitter.hxx
@@ -0,0 +1,49 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_SAXEMITTER_HXX
+#define INCLUDED_PDFI_SAXEMITTER_HXX
+
+#include "xmlemitter.hxx"
+#include <com/sun/star/uno/Reference.hxx>
+
+namespace com { namespace sun { namespace star { namespace xml {
+namespace sax
+{
+ class XDocumentHandler;
+} } } } }
+
+namespace pdfi
+{
+ XmlEmitterSharedPtr createSaxEmitter( const com::sun::star::uno::Reference<
+ com::sun::star::xml::sax::XDocumentHandler >& xDocHdl );
+}
+
+#endif /* INCLUDED_PDFI_SAXEMITTER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/inc/treevisitorfactory.hxx b/sdext/source/pdfimport/inc/treevisitorfactory.hxx
new file mode 100644
index 000000000000..b8f0e7b85805
--- /dev/null
+++ b/sdext/source/pdfimport/inc/treevisitorfactory.hxx
@@ -0,0 +1,69 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_TREEVISITORFACTORY_HXX
+#define INCLUDED_PDFI_TREEVISITORFACTORY_HXX
+
+#include "pdfihelper.hxx"
+#include <boost/shared_ptr.hpp>
+
+namespace pdfi
+{
+ struct ElementTreeVisitor;
+ struct EmitContext;
+ class PDFIProcessor;
+ class StyleContainer;
+
+ /** Tree manipulation factory
+
+ Creates visitor objects performing various operations on the
+ pdf parse tree
+ */
+ struct TreeVisitorFactory
+ {
+ virtual ~TreeVisitorFactory() {}
+
+ /// Create visitor that combines tree nodes
+ virtual boost::shared_ptr<ElementTreeVisitor> createOptimizingVisitor(PDFIProcessor&) const = 0;
+ /// Create visitor that prepares style info
+ virtual boost::shared_ptr<ElementTreeVisitor> createStyleCollectingVisitor(
+ StyleContainer&, PDFIProcessor&) const = 0;
+ /// Create visitor that emits tree to an output target
+ virtual boost::shared_ptr<ElementTreeVisitor> createEmittingVisitor(EmitContext&, PDFIProcessor&) const = 0;
+ };
+
+ typedef boost::shared_ptr<TreeVisitorFactory> TreeVisitorFactorySharedPtr;
+
+ TreeVisitorFactorySharedPtr createWriterTreeVisitorFactory();
+ TreeVisitorFactorySharedPtr createImpressTreeVisitorFactory();
+ TreeVisitorFactorySharedPtr createDrawTreeVisitorFactory();
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/inc/wrapper.hxx b/sdext/source/pdfimport/inc/wrapper.hxx
new file mode 100644
index 000000000000..a7ca18574a39
--- /dev/null
+++ b/sdext/source/pdfimport/inc/wrapper.hxx
@@ -0,0 +1,66 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_WRAPPER_HXX
+#define INCLUDED_PDFI_WRAPPER_HXX
+
+#include "contentsink.hxx"
+#include <com/sun/star/uno/Reference.hxx>
+
+namespace rtl { class OUString; }
+namespace com { namespace sun { namespace star {
+ namespace uno {
+ class XComponentContext;
+ }
+ namespace io {
+ class XInputStream;
+ }
+} } }
+
+namespace pdfi
+{
+ bool xpdf_ImportFromFile( const rtl::OUString& rURL,
+ const ContentSinkSharedPtr& rSink,
+ const com::sun::star::uno::Reference<
+ com::sun::star::task::XInteractionHandler >& xIHdl,
+ const rtl::OUString& rPwd,
+ const com::sun::star::uno::Reference<
+ com::sun::star::uno::XComponentContext >& xContext );
+ bool xpdf_ImportFromStream( const com::sun::star::uno::Reference<
+ com::sun::star::io::XInputStream >& xInput,
+ const ContentSinkSharedPtr& rSink,
+ const com::sun::star::uno::Reference<
+ com::sun::star::task::XInteractionHandler >& xIHdl,
+ const rtl::OUString& rPwd,
+ const com::sun::star::uno::Reference<
+ com::sun::star::uno::XComponentContext >& xContext );
+}
+
+#endif /* INCLUDED_PDFI_WRAPPER_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/inc/xmlemitter.hxx b/sdext/source/pdfimport/inc/xmlemitter.hxx
new file mode 100644
index 000000000000..3700e67b8006
--- /dev/null
+++ b/sdext/source/pdfimport/inc/xmlemitter.hxx
@@ -0,0 +1,62 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_XMLEMITTER_HXX
+#define INCLUDED_PDFI_XMLEMITTER_HXX
+
+#include "pdfihelper.hxx"
+#include <boost/shared_ptr.hpp>
+
+namespace pdfi
+{
+ /** Output interface to ODF
+
+ Should be easy to implement using either SAX events or plain ODF
+ */
+ class XmlEmitter
+ {
+ public:
+ virtual ~XmlEmitter() {}
+
+ /** Open up a tag with the given properties
+ */
+ virtual void beginTag( const char* pTag, const PropertyMap& rProperties ) = 0;
+ /** Write PCTEXT as-is to output
+ */
+ virtual void write( const rtl::OUString& rString ) = 0;
+ /** Close previously opened tag
+ */
+ virtual void endTag( const char* pTag ) = 0;
+ };
+
+ typedef boost::shared_ptr<XmlEmitter> XmlEmitterSharedPtr;
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/makefile.mk b/sdext/source/pdfimport/makefile.mk
new file mode 100644
index 000000000000..64accdaea7be
--- /dev/null
+++ b/sdext/source/pdfimport/makefile.mk
@@ -0,0 +1,154 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJNAME=sdext
+TARGET=pdfimport
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+MKDEPENDSOLVER:=
+.INCLUDE: settings.mk
+
+.IF "$(L10N_framework)"==""
+
+.INCLUDE: pdfisettings.pmk
+INCPRE=-I$(PRJ)$/source$/pdfimport$/inc
+
+# --- Files --------------------------------------------------------
+
+EXTENSIONNAME:=PDFImport
+EXTENSION_ZIPNAME:=pdfimport
+
+.IF "$(ENABLE_PDFIMPORT)" == "NO"
+@all:
+ @echo "PDF Import extension disabled."
+.ENDIF
+
+SLOFILES=\
+ $(SLO)$/filterdet.obj \
+ $(SLO)$/pdfiadaptor.obj \
+ $(SLO)$/services.obj
+
+SHL1DLLPRE=
+SHL1TARGET=$(TARGET).uno
+
+SHL1LIBS=\
+ $(SLB)$/pdfmisc.lib \
+ $(SLB)$/pdfparse.lib \
+ $(SLB)$/pdfsax.lib \
+ $(SLB)$/pdfparsetree.lib \
+ $(SLB)$/pdfodf.lib \
+ $(SLB)$/xpdfwrapper.lib \
+ $(SLB)$/$(TARGET).lib
+
+SHL1STDLIBS=\
+ $(CPPUHELPERLIB) \
+ $(ZLIB3RDLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+
+.IF "$(GUI)" == "UNX"
+ SHL1STDLIBS+=-lbasegfx_s
+.ELSE
+.IF "$(GUI)" == "WNT"
+.IF "$(COM)"=="GCC"
+ SHL1STDLIBS+=-lbasegfx_s
+.ELSE
+ SHL1LIBS+=$(SOLARLIBDIR)$/basegfx_s.lib
+.ENDIF
+
+.ENDIF # WNT
+.ENDIF # UNX
+
+SHL1DEPN=
+SHL1IMPLIB= i$(SHL1TARGET)
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+SHL1VERSIONMAP=$(SOLARENV)/src/reg-component.map
+SHL1RPATH=OXT
+
+DEF1NAME=$(SHL1TARGET)
+
+# --- Extension packaging ------------------------------------------
+
+DESCRIPTION_SRC:=config$/description.xml
+MANIFEST_SRC:=config$/manifest.xml
+COMPONENT_CONFIGDIR:=config
+COMPONENT_CONFIGDEST:=.
+COMPONENT_XCU= \
+ $(EXTENSIONDIR)$/pdf_import_filter.xcu \
+ $(EXTENSIONDIR)$/pdf_types.xcu
+
+CONVERTER_FILE= \
+ $(EXTENSIONDIR)$/xpdfimport$(EXECPOST)
+
+COMPONENT_DIALOGS= \
+ $(EXTENSIONDIR)$/basic$/Module1.xba \
+ $(EXTENSIONDIR)$/basic$/TargetChooser.xdl \
+ $(EXTENSIONDIR)$/basic$/dialog.xlb \
+ $(EXTENSIONDIR)$/basic$/impress.png \
+ $(EXTENSIONDIR)$/basic$/script.xlb \
+ $(EXTENSIONDIR)$/basic$/writer.png \
+ $(EXTENSIONDIR)$/xpdfimport_err.pdf
+
+COMPONENT_HELP= \
+ $(EXTENSIONDIR)$/help/component.txt
+
+# native libraries
+COMPONENT_LIBRARIES= \
+ $(EXTENSIONDIR)$/$(SHL1TARGET)$(DLLPOST)
+
+COMPONENT_IMAGES=\
+ $(EXTENSIONDIR)$/images$/extension_32.png
+
+EXTENSION_PACKDEPS=$(CONVERTER_FILE) $(COMPONENT_DIALOGS) $(COMPONENT_HELP) $(COMPONENT_IMAGES) makefile.mk
+
+.INCLUDE : extension_pre.mk
+.ENDIF # L10N_framework
+.INCLUDE : target.mk
+.IF "$(L10N_framework)"==""
+.INCLUDE : extension_post.mk
+
+$(CONVERTER_FILE) : $(BIN)$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(COMPONENT_DIALOGS) : dialogs$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(COMPONENT_HELP) : help$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+.ENDIF # L10N_framework
+
diff --git a/sdext/source/pdfimport/misc/makefile.mk b/sdext/source/pdfimport/misc/makefile.mk
new file mode 100644
index 000000000000..27f71cca46e4
--- /dev/null
+++ b/sdext/source/pdfimport/misc/makefile.mk
@@ -0,0 +1,51 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sdext
+TARGET=pdfmisc
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES=\
+ $(SLO)$/pdfihelper.obj \
+ $(SLO)$/pwdinteract.obj
+
+# --- Targets ------------------------------------------------------
+
+.IF "$(ENABLE_PDFIMPORT)" == "NO"
+@all:
+ @echo "PDF Import extension disabled."
+.ENDIF
+
+.INCLUDE: target.mk
diff --git a/sdext/source/pdfimport/misc/pdfihelper.cxx b/sdext/source/pdfimport/misc/pdfihelper.cxx
new file mode 100644
index 000000000000..1c888e1e6d1f
--- /dev/null
+++ b/sdext/source/pdfimport/misc/pdfihelper.cxx
@@ -0,0 +1,82 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pdfihelper.hxx"
+
+#include <rtl/ustrbuf.hxx>
+#include <basegfx/numeric/ftools.hxx>
+
+using namespace pdfi;
+using namespace com::sun::star;
+
+rtl::OUString pdfi::getColorString( const rendering::ARGBColor& rCol )
+{
+ rtl::OUStringBuffer aBuf( 7 );
+ const sal_uInt8 nRed ( sal::static_int_cast<sal_Int8>( basegfx::fround( rCol.Red * 255.0 ) ) );
+ const sal_uInt8 nGreen( sal::static_int_cast<sal_Int8>( basegfx::fround( rCol.Green * 255.0 ) ) );
+ const sal_uInt8 nBlue ( sal::static_int_cast<sal_Int8>( basegfx::fround( rCol.Blue * 255.0 ) ) );
+ aBuf.append( sal_Unicode('#') );
+ if( nRed < 10 )
+ aBuf.append( sal_Unicode('0') );
+ aBuf.append( sal_Int32(nRed), 16 );
+ if( nGreen < 10 )
+ aBuf.append( sal_Unicode('0') );
+ aBuf.append( sal_Int32(nGreen), 16 );
+ if( nBlue < 10 )
+ aBuf.append( sal_Unicode('0') );
+ aBuf.append( sal_Int32(nBlue), 16 );
+
+ // TODO(F3): respect alpha transparency (polygons etc.)
+ OSL_ASSERT(rCol.Alpha == 1.0);
+
+ return aBuf.makeStringAndClear();
+}
+
+rtl::OUString pdfi::unitMMString( double fMM )
+{
+ rtl::OUStringBuffer aBuf( 32 );
+ aBuf.append( rtl_math_round( fMM, 2, rtl_math_RoundingMode_Floor ) );
+ aBuf.appendAscii( "mm" );
+
+ return aBuf.makeStringAndClear();
+}
+
+rtl::OUString pdfi::convertPixelToUnitString( double fPix )
+{
+ rtl::OUStringBuffer aBuf( 32 );
+ aBuf.append( rtl_math_round( convPx2mm( fPix ), 2, rtl_math_RoundingMode_Floor ) );
+ aBuf.appendAscii( "mm" );
+
+ return aBuf.makeStringAndClear();
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/misc/pwdinteract.cxx b/sdext/source/pdfimport/misc/pwdinteract.cxx
new file mode 100644
index 000000000000..6ef2a17c2875
--- /dev/null
+++ b/sdext/source/pdfimport/misc/pwdinteract.cxx
@@ -0,0 +1,166 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pdfihelper.hxx"
+
+#include <com/sun/star/task/XInteractionHandler.hpp>
+#include <com/sun/star/task/XInteractionRequest.hpp>
+#include <com/sun/star/task/XInteractionPassword.hpp>
+#include <com/sun/star/task/DocumentPasswordRequest.hpp>
+
+#include <cppuhelper/exc_hlp.hxx>
+#include <cppuhelper/compbase2.hxx>
+#include <cppuhelper/basemutex.hxx>
+
+
+using namespace com::sun::star;
+
+namespace
+{
+
+typedef ::cppu::WeakComponentImplHelper2<
+ com::sun::star::task::XInteractionRequest,
+ com::sun::star::task::XInteractionPassword > PDFPasswordRequestBase;
+
+class PDFPasswordRequest : private cppu::BaseMutex,
+ public PDFPasswordRequestBase
+{
+private:
+ task::DocumentPasswordRequest m_aRequest;
+ rtl::OUString m_aPassword;
+ bool m_bSelected;
+
+public:
+ explicit PDFPasswordRequest(bool bFirstTry, const rtl::OUString& rName);
+
+ // XInteractionRequest
+ virtual uno::Any SAL_CALL getRequest( ) throw (uno::RuntimeException);
+ virtual uno::Sequence< uno::Reference< task::XInteractionContinuation > > SAL_CALL getContinuations( ) throw (uno::RuntimeException);
+
+ // XInteractionPassword
+ virtual void SAL_CALL setPassword( const rtl::OUString& rPwd ) throw (uno::RuntimeException);
+ virtual rtl::OUString SAL_CALL getPassword() throw (uno::RuntimeException);
+
+ // XInteractionContinuation
+ virtual void SAL_CALL select() throw (uno::RuntimeException);
+
+ bool isSelected() const { osl::MutexGuard const guard( m_aMutex ); return m_bSelected; }
+};
+
+PDFPasswordRequest::PDFPasswordRequest( bool bFirstTry, const rtl::OUString& rName ) :
+ PDFPasswordRequestBase( m_aMutex ),
+ m_aRequest(),
+ m_aPassword(),
+ m_bSelected(false)
+{
+ m_aRequest.Mode = bFirstTry ?
+ task::PasswordRequestMode_PASSWORD_ENTER :
+ task::PasswordRequestMode_PASSWORD_REENTER;
+ m_aRequest.Classification = task::InteractionClassification_QUERY;
+ m_aRequest.Name = rName;
+}
+
+uno::Any SAL_CALL PDFPasswordRequest::getRequest() throw (uno::RuntimeException)
+{
+ osl::MutexGuard const guard( m_aMutex );
+
+ uno::Any aRet;
+ aRet <<= m_aRequest;
+ return aRet;
+}
+
+uno::Sequence< uno::Reference< task::XInteractionContinuation > > SAL_CALL PDFPasswordRequest::getContinuations() throw (uno::RuntimeException)
+{
+ osl::MutexGuard const guard( m_aMutex );
+
+ uno::Sequence< uno::Reference< task::XInteractionContinuation > > aRet( 1 );
+ aRet.getArray()[0] = static_cast<task::XInteractionContinuation*>(this);
+ return aRet;
+}
+
+void SAL_CALL PDFPasswordRequest::setPassword( const rtl::OUString& rPwd ) throw (uno::RuntimeException)
+{
+ osl::MutexGuard const guard( m_aMutex );
+
+ m_aPassword = rPwd;
+}
+
+rtl::OUString SAL_CALL PDFPasswordRequest::getPassword() throw (uno::RuntimeException)
+{
+ osl::MutexGuard const guard( m_aMutex );
+
+ return m_aPassword;
+}
+
+void SAL_CALL PDFPasswordRequest::select() throw (uno::RuntimeException)
+{
+ osl::MutexGuard const guard( m_aMutex );
+
+ m_bSelected = true;
+}
+
+} // namespace
+
+namespace pdfi
+{
+
+bool getPassword( const uno::Reference< task::XInteractionHandler >& xHandler,
+ rtl::OUString& rOutPwd,
+ bool bFirstTry,
+ const rtl::OUString& rDocName
+ )
+{
+ bool bSuccess = false;
+
+ PDFPasswordRequest* pRequest;
+ uno::Reference< task::XInteractionRequest > xReq(
+ pRequest = new PDFPasswordRequest( bFirstTry, rDocName ) );
+ try
+ {
+ xHandler->handle( xReq );
+ }
+ catch( uno::Exception& )
+ {
+ }
+
+ OSL_TRACE( "request %s selected\n", pRequest->isSelected() ? "was" : "was not" );
+ if( pRequest->isSelected() )
+ {
+ bSuccess = true;
+ rOutPwd = pRequest->getPassword();
+ }
+
+ return bSuccess;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/odf/makefile.mk b/sdext/source/pdfimport/odf/makefile.mk
new file mode 100644
index 000000000000..0f0f5b15b611
--- /dev/null
+++ b/sdext/source/pdfimport/odf/makefile.mk
@@ -0,0 +1,50 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sdext
+TARGET=pdfodf
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES=\
+ $(SLO)$/odfemitter.obj
+
+# --- Targets ------------------------------------------------------
+
+.IF "$(ENABLE_PDFIMPORT)" == "NO"
+@all:
+ @echo "PDF Import extension disabled."
+.ENDIF
+
+.INCLUDE: target.mk
diff --git a/sdext/source/pdfimport/odf/odfemitter.cxx b/sdext/source/pdfimport/odf/odfemitter.cxx
new file mode 100644
index 000000000000..c2d30ac16304
--- /dev/null
+++ b/sdext/source/pdfimport/odf/odfemitter.cxx
@@ -0,0 +1,139 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "odfemitter.hxx"
+
+#include <rtl/ustrbuf.hxx>
+#include <cppuhelper/exc_hlp.hxx>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/io/XOutputStream.hpp>
+#include <boost/bind.hpp>
+
+using namespace com::sun::star;
+
+namespace pdfi
+{
+
+class OdfEmitter : public XmlEmitter
+{
+private:
+ uno::Reference<io::XOutputStream> m_xOutput;
+ uno::Sequence<sal_Int8> m_aLineFeed;
+ uno::Sequence<sal_Int8> m_aBuf;
+
+public:
+ explicit OdfEmitter( const uno::Reference<io::XOutputStream>& xOutput );
+
+ virtual void beginTag( const char* pTag, const PropertyMap& rProperties );
+ virtual void write( const rtl::OUString& rString );
+ virtual void endTag( const char* pTag );
+};
+
+OdfEmitter::OdfEmitter( const uno::Reference<io::XOutputStream>& xOutput ) :
+ m_xOutput( xOutput ),
+ m_aLineFeed(1),
+ m_aBuf()
+{
+ OSL_PRECOND(m_xOutput.is(), "OdfEmitter(): invalid output stream");
+ m_aLineFeed[0] = '\n';
+
+ rtl::OUStringBuffer aElement;
+ aElement.appendAscii("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+ write(aElement.makeStringAndClear());
+}
+
+void OdfEmitter::beginTag( const char* pTag, const PropertyMap& rProperties )
+{
+ OSL_PRECOND(pTag,"Invalid tag string");
+
+ rtl::OUStringBuffer aElement;
+ aElement.appendAscii("<");
+ aElement.appendAscii(pTag);
+ aElement.appendAscii(" ");
+
+ std::vector<rtl::OUString> aAttributes;
+ PropertyMap::const_iterator aCurr(rProperties.begin());
+ const PropertyMap::const_iterator aEnd(rProperties.end());
+ while( aCurr != aEnd )
+ {
+ rtl::OUStringBuffer aAttribute;
+ aAttribute.append(aCurr->first);
+ aAttribute.appendAscii("=\"");
+ aAttribute.append(aCurr->second);
+ aAttribute.appendAscii("\" ");
+ aAttributes.push_back(aAttribute.makeStringAndClear());
+ ++aCurr;
+ }
+
+ // since the hash map's sorting is undefined (and varies across
+ // platforms, and even between different compile-time settings),
+ // sort the attributes.
+ std::sort(aAttributes.begin(), aAttributes.end());
+ std::for_each(aAttributes.begin(),
+ aAttributes.end(),
+ boost::bind( (rtl::OUStringBuffer& (rtl::OUStringBuffer::*)(const rtl::OUString&))
+ (&rtl::OUStringBuffer::append),
+ boost::ref(aElement),
+ _1 ));
+ aElement.appendAscii(">");
+
+ write(aElement.makeStringAndClear());
+}
+
+void OdfEmitter::write( const rtl::OUString& rText )
+{
+ const rtl::OString aStr = rtl::OUStringToOString(rText,RTL_TEXTENCODING_UTF8);
+ const sal_Int32 nLen( aStr.getLength() );
+ m_aBuf.realloc( nLen );
+ const sal_Char* pStr = aStr.getStr();
+ std::copy(pStr,pStr+nLen,m_aBuf.getArray());
+
+ m_xOutput->writeBytes(m_aBuf);
+ m_xOutput->writeBytes(m_aLineFeed);
+}
+
+void OdfEmitter::endTag( const char* pTag )
+{
+ rtl::OUStringBuffer aElement;
+ aElement.appendAscii("</");
+ aElement.appendAscii(pTag);
+ aElement.appendAscii(">");
+ write(aElement.makeStringAndClear());
+}
+
+XmlEmitterSharedPtr createOdfEmitter( const uno::Reference<io::XOutputStream>& xOut )
+{
+ return XmlEmitterSharedPtr(new OdfEmitter(xOut));
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/pdfiadaptor.cxx b/sdext/source/pdfimport/pdfiadaptor.cxx
new file mode 100644
index 000000000000..df1a6898dfac
--- /dev/null
+++ b/sdext/source/pdfimport/pdfiadaptor.cxx
@@ -0,0 +1,332 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pdfiadaptor.hxx"
+#include "filterdet.hxx"
+#include "saxemitter.hxx"
+#include "odfemitter.hxx"
+#include "inc/wrapper.hxx"
+#include "inc/contentsink.hxx"
+#include "tree/pdfiprocessor.hxx"
+
+#include <osl/file.h>
+#include <osl/thread.h>
+#include <osl/diagnose.h>
+#include <cppuhelper/factory.hxx>
+#include <cppuhelper/implementationentry.hxx>
+#include <com/sun/star/lang/XMultiComponentFactory.hpp>
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/frame/XLoadable.hpp>
+#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+#include <com/sun/star/io/XSeekable.hpp>
+
+
+#include <boost/shared_ptr.hpp>
+
+using namespace com::sun::star;
+
+
+namespace pdfi
+{
+
+PDFIHybridAdaptor::PDFIHybridAdaptor( const uno::Reference< uno::XComponentContext >& xContext ) :
+ PDFIHybridAdaptorBase( m_aMutex ),
+ m_xContext( xContext ),
+ m_xModel()
+{
+}
+
+// XFilter
+sal_Bool SAL_CALL PDFIHybridAdaptor::filter( const uno::Sequence< beans::PropertyValue >& rFilterData ) throw( uno::RuntimeException )
+{
+ sal_Bool bRet = sal_False;
+ if( m_xModel.is() )
+ {
+ uno::Reference< io::XStream > xSubStream;
+ rtl::OUString aPwd;
+ const beans::PropertyValue* pAttribs = rFilterData.getConstArray();
+ sal_Int32 nAttribs = rFilterData.getLength();
+ sal_Int32 nPwPos = -1;
+ for( sal_Int32 i = 0; i < nAttribs; i++ )
+ {
+ #if OSL_DEBUG_LEVEL > 1
+ rtl::OUString aVal( RTL_CONSTASCII_USTRINGPARAM( "<no string>" ) );
+ pAttribs[i].Value >>= aVal;
+ OSL_TRACE( "filter: Attrib: %s = %s\n",
+ rtl::OUStringToOString( pAttribs[i].Name, RTL_TEXTENCODING_UTF8 ).getStr(),
+ rtl::OUStringToOString( aVal, RTL_TEXTENCODING_UTF8 ).getStr() );
+ #endif
+ if( pAttribs[i].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "EmbeddedSubstream" ) ) )
+ pAttribs[i].Value >>= xSubStream;
+ else if( pAttribs[i].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Password" ) ) )
+ {
+ nPwPos = i;
+ pAttribs[i].Value >>= aPwd;
+ }
+ }
+ bool bAddPwdProp = false;
+ if( ! xSubStream.is() )
+ {
+ uno::Reference< io::XInputStream > xInput;
+ for( sal_Int32 i = 0; i < nAttribs; i++ )
+ {
+ if( pAttribs[i].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "InputStream" ) ) )
+ {
+ pAttribs[i].Value >>= xInput;
+ break;
+ }
+ }
+ if( xInput.is() )
+ {
+ // TODO(P2): extracting hybrid substream twice - once during detection, second time here
+ uno::Reference< io::XSeekable > xSeek( xInput, uno::UNO_QUERY );
+ if( xSeek.is() )
+ xSeek->seek( 0 );
+ oslFileHandle aFile = NULL;
+ sal_uInt64 nWritten = 0;
+ rtl::OUString aURL;
+ if( osl_createTempFile( NULL, &aFile, &aURL.pData ) == osl_File_E_None )
+ {
+ OSL_TRACE( "created temp file %s\n", rtl::OUStringToOString( aURL, RTL_TEXTENCODING_UTF8 ).getStr() );
+ const sal_Int32 nBufSize = 4096;
+ uno::Sequence<sal_Int8> aBuf(nBufSize);
+ // copy the bytes
+ sal_Int32 nBytes;
+ do
+ {
+ nBytes = xInput->readBytes( aBuf, nBufSize );
+ if( nBytes > 0 )
+ {
+ osl_writeFile( aFile, aBuf.getConstArray(), nBytes, &nWritten );
+ if( static_cast<sal_Int32>(nWritten) != nBytes )
+ {
+ xInput.clear();
+ break;
+ }
+ }
+ } while( nBytes == nBufSize );
+ osl_closeFile( aFile );
+ if( xInput.is() )
+ {
+ rtl::OUString aEmbedMimetype;
+ rtl::OUString aOrgPwd( aPwd );
+ xSubStream = getAdditionalStream( aURL, aEmbedMimetype, aPwd, m_xContext, rFilterData, true );
+ if( aOrgPwd != aPwd )
+ bAddPwdProp = true;
+ }
+ osl_removeFile( aURL.pData );
+ }
+ else
+ xSubStream.clear();
+ }
+ }
+ if( xSubStream.is() )
+ {
+ uno::Sequence< uno::Any > aArgs( 2 );
+ aArgs[0] <<= m_xModel;
+ aArgs[1] <<= xSubStream;
+
+ OSL_TRACE( "try to instantiate subfilter\n" );
+ uno::Reference< document::XFilter > xSubFilter;
+ try {
+ xSubFilter = uno::Reference<document::XFilter>(
+ m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.OwnSubFilter" ) ),
+ aArgs,
+ m_xContext ),
+ uno::UNO_QUERY );
+ }
+ catch(uno::Exception& e)
+ {
+ (void)e;
+ OSL_TRACE( "subfilter exception: %s\n",
+ OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
+ }
+
+ OSL_TRACE( "subfilter: %p\n", xSubFilter.get() );
+ if( xSubFilter.is() )
+ {
+ if( bAddPwdProp )
+ {
+ uno::Sequence<beans::PropertyValue> aFilterData( rFilterData );
+ if( nPwPos == -1 )
+ {
+ nPwPos = aFilterData.getLength();
+ aFilterData.realloc( nPwPos+1 );
+ aFilterData[nPwPos].Name = rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "Password" ) );
+ }
+ aFilterData[nPwPos].Value <<= aPwd;
+ bRet = xSubFilter->filter( aFilterData );
+ }
+ else
+ bRet = xSubFilter->filter( rFilterData );
+ }
+ }
+ #if OSL_DEBUG_LEVEL > 1
+ else
+ OSL_TRACE( "PDFIAdaptor::filter: no embedded substream set\n" );
+ #endif
+ }
+ #if OSL_DEBUG_LEVEL > 1
+ else
+ OSL_TRACE( "PDFIAdaptor::filter: no model set\n" );
+ #endif
+
+ return bRet;
+}
+
+void SAL_CALL PDFIHybridAdaptor::cancel() throw()
+{
+}
+
+//XImporter
+void SAL_CALL PDFIHybridAdaptor::setTargetDocument( const uno::Reference< lang::XComponent >& xDocument ) throw( lang::IllegalArgumentException )
+{
+ OSL_TRACE( "PDFIAdaptor::setTargetDocument\n" );
+ m_xModel = uno::Reference< frame::XModel >( xDocument, uno::UNO_QUERY );
+ if( xDocument.is() && ! m_xModel.is() )
+ throw lang::IllegalArgumentException();
+}
+
+//---------------------------------------------------------------------------------------
+
+PDFIRawAdaptor::PDFIRawAdaptor( const uno::Reference< uno::XComponentContext >& xContext ) :
+ PDFIAdaptorBase( m_aMutex ),
+ m_xContext( xContext ),
+ m_xModel(),
+ m_pVisitorFactory(),
+ m_bEnableToplevelText(false)
+{
+}
+
+void PDFIRawAdaptor::setTreeVisitorFactory(const TreeVisitorFactorySharedPtr& rVisitorFactory)
+{
+ m_pVisitorFactory = rVisitorFactory;
+}
+
+bool PDFIRawAdaptor::parse( const uno::Reference<io::XInputStream>& xInput,
+ const uno::Reference<task::XInteractionHandler>& xIHdl,
+ const rtl::OUString& rPwd,
+ const uno::Reference<task::XStatusIndicator>& xStatus,
+ const XmlEmitterSharedPtr& rEmitter,
+ const rtl::OUString& rURL )
+{
+ // container for metaformat
+ boost::shared_ptr<PDFIProcessor> pSink(
+ new PDFIProcessor(xStatus, m_xContext));
+
+ // TEMP! TEMP!
+ if( m_bEnableToplevelText )
+ pSink->enableToplevelText();
+
+ bool bSuccess=false;
+
+ if( xInput.is() )
+ bSuccess = xpdf_ImportFromStream( xInput, pSink, xIHdl, rPwd, m_xContext );
+ else
+ bSuccess = xpdf_ImportFromFile( rURL, pSink, xIHdl, rPwd, m_xContext );
+
+ if( bSuccess )
+ pSink->emit(*rEmitter,*m_pVisitorFactory);
+
+ return bSuccess;
+}
+
+bool PDFIRawAdaptor::odfConvert( const rtl::OUString& rURL,
+ const uno::Reference<io::XOutputStream>& xOutput,
+ const uno::Reference<task::XStatusIndicator>& xStatus )
+{
+ XmlEmitterSharedPtr pEmitter = createOdfEmitter(xOutput);
+ const bool bSuccess = parse(uno::Reference<io::XInputStream>(),
+ uno::Reference<task::XInteractionHandler>(),
+ rtl::OUString(),
+ xStatus,pEmitter,rURL);
+
+ // tell input stream that it is no longer needed
+ xOutput->closeOutput();
+
+ return bSuccess;
+}
+
+// XImportFilter
+sal_Bool SAL_CALL PDFIRawAdaptor::importer( const uno::Sequence< beans::PropertyValue >& rSourceData,
+ const uno::Reference< xml::sax::XDocumentHandler >& rHdl,
+ const uno::Sequence< rtl::OUString >& /*rUserData*/ ) throw( uno::RuntimeException )
+{
+ // get the InputStream carrying the PDF content
+ uno::Reference< io::XInputStream > xInput;
+ uno::Reference< task::XStatusIndicator > xStatus;
+ uno::Reference< task::XInteractionHandler > xInteractionHandler;
+ rtl::OUString aURL;
+ rtl::OUString aPwd;
+ const beans::PropertyValue* pAttribs = rSourceData.getConstArray();
+ sal_Int32 nAttribs = rSourceData.getLength();
+ for( sal_Int32 i = 0; i < nAttribs; i++, pAttribs++ )
+ {
+ OSL_TRACE("importer Attrib: %s\n", OUStringToOString( pAttribs->Name, RTL_TEXTENCODING_UTF8 ).getStr() );
+ if( pAttribs->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "InputStream" ) ) )
+ pAttribs->Value >>= xInput;
+ else if( pAttribs->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "URL" ) ) )
+ pAttribs->Value >>= aURL;
+ else if( pAttribs->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "StatusIndicator" ) ) )
+ pAttribs->Value >>= xStatus;
+ else if( pAttribs->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "InteractionHandler" ) ) )
+ pAttribs->Value >>= xInteractionHandler;
+ else if( pAttribs->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Password" ) ) )
+ pAttribs->Value >>= aPwd;
+ }
+ if( !xInput.is() )
+ return sal_False;
+
+ XmlEmitterSharedPtr pEmitter = createSaxEmitter(rHdl);
+ const bool bSuccess = parse(xInput,xInteractionHandler, aPwd, xStatus,pEmitter,aURL);
+
+ // tell input stream that it is no longer needed
+ xInput->closeInput();
+ xInput.clear();
+
+ return bSuccess;
+}
+
+//XImporter
+void SAL_CALL PDFIRawAdaptor::setTargetDocument( const uno::Reference< lang::XComponent >& xDocument ) throw( lang::IllegalArgumentException )
+{
+ OSL_TRACE( "PDFIAdaptor::setTargetDocument\n" );
+ m_xModel = uno::Reference< frame::XModel >( xDocument, uno::UNO_QUERY );
+ if( xDocument.is() && ! m_xModel.is() )
+ throw lang::IllegalArgumentException();
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/pdfiadaptor.hxx b/sdext/source/pdfimport/pdfiadaptor.hxx
new file mode 100644
index 000000000000..d9d6d71356f7
--- /dev/null
+++ b/sdext/source/pdfimport/pdfiadaptor.hxx
@@ -0,0 +1,141 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFIADAPTOR_HXX
+#define INCLUDED_PDFIADAPTOR_HXX
+
+#include "xmlemitter.hxx"
+#include "treevisitorfactory.hxx"
+
+#include <com/sun/star/xml/XImportFilter.hpp>
+#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/task/XStatusIndicator.hpp>
+#include <com/sun/star/document/XFilter.hpp>
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/io/XOutputStream.hpp>
+#include <com/sun/star/document/XImporter.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+
+#include <cppuhelper/compbase2.hxx>
+#include <cppuhelper/basemutex.hxx>
+
+
+namespace pdfi
+{
+ typedef ::cppu::WeakComponentImplHelper2<
+ com::sun::star::document::XFilter,
+ com::sun::star::document::XImporter > PDFIHybridAdaptorBase;
+
+ class PDFIHybridAdaptor : private cppu::BaseMutex,
+ public PDFIHybridAdaptorBase
+ {
+ private:
+ com::sun::star::uno::Reference<
+ com::sun::star::uno::XComponentContext > m_xContext;
+ com::sun::star::uno::Reference<
+ com::sun::star::frame::XModel > m_xModel;
+
+ public:
+ explicit PDFIHybridAdaptor( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XComponentContext >& xContext );
+
+ // XFilter
+ virtual sal_Bool SAL_CALL filter( const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rFilterData ) throw(com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL cancel() throw();
+
+ // XImporter
+ virtual void SAL_CALL setTargetDocument( const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xDocument )
+ throw( com::sun::star::lang::IllegalArgumentException );
+
+ };
+
+ typedef ::cppu::WeakComponentImplHelper2<
+ com::sun::star::xml::XImportFilter,
+ com::sun::star::document::XImporter > PDFIAdaptorBase;
+
+ /** Adapts raw pdf import to XImportFilter interface
+ */
+ class PDFIRawAdaptor : private cppu::BaseMutex,
+ public PDFIAdaptorBase
+ {
+ private:
+ com::sun::star::uno::Reference<
+ com::sun::star::uno::XComponentContext > m_xContext;
+ com::sun::star::uno::Reference<
+ com::sun::star::frame::XModel > m_xModel;
+ TreeVisitorFactorySharedPtr m_pVisitorFactory;
+ bool m_bEnableToplevelText;
+
+ bool parse( const com::sun::star::uno::Reference<com::sun::star::io::XInputStream>& xInput,
+ const com::sun::star::uno::Reference<com::sun::star::task::XInteractionHandler>& xIHdl,
+ const rtl::OUString& rPwd,
+ const com::sun::star::uno::Reference<com::sun::star::task::XStatusIndicator>& xStatus,
+ const XmlEmitterSharedPtr& rEmitter,
+ const rtl::OUString& rURL );
+
+ public:
+ explicit PDFIRawAdaptor( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XComponentContext >& xContext );
+
+ /** Set factory object used to create the tree visitors
+
+ Used for customizing the tree to the specific output
+ format (writer, draw, etc)
+ */
+ void setTreeVisitorFactory(const TreeVisitorFactorySharedPtr& rVisitorFactory);
+
+ /// TEMP - enable writer-like text:p on doc level
+ void enableToplevelText() { m_bEnableToplevelText=true; }
+
+ /** Export pdf document to ODG
+
+ @param xOutput
+ Stream to write the flat xml file to
+
+ @param xStatus
+ Optional status indicator
+ */
+ bool odfConvert( const rtl::OUString& rURL,
+ const com::sun::star::uno::Reference<com::sun::star::io::XOutputStream>& xOutput,
+ const com::sun::star::uno::Reference<com::sun::star::task::XStatusIndicator>& xStatus );
+
+ // XImportFilter
+ virtual sal_Bool SAL_CALL importer( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rSourceData,
+ const com::sun::star::uno::Reference< com::sun::star::xml::sax::XDocumentHandler >& rHdl,
+ const com::sun::star::uno::Sequence< rtl::OUString >& rUserData ) throw( com::sun::star::uno::RuntimeException );
+
+ // XImporter
+ virtual void SAL_CALL setTargetDocument( const com::sun::star::uno::Reference< com::sun::star::lang::XComponent >& xDocument )
+ throw( com::sun::star::lang::IllegalArgumentException );
+ };
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/pdfisettings.pmk b/sdext/source/pdfimport/pdfisettings.pmk
new file mode 100644
index 000000000000..b0f6ae4b5939
--- /dev/null
+++ b/sdext/source/pdfimport/pdfisettings.pmk
@@ -0,0 +1,28 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+IMPLEMENTATION_IDENTIFIER="com.sun.star.PDFImport-$(PLATFORMID)"
diff --git a/sdext/source/pdfimport/pdfparse/makefile.mk b/sdext/source/pdfimport/pdfparse/makefile.mk
new file mode 100644
index 000000000000..db549581e6f5
--- /dev/null
+++ b/sdext/source/pdfimport/pdfparse/makefile.mk
@@ -0,0 +1,58 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sdext
+TARGET=pdfparse
+ENABLE_EXCEPTIONS=TRUE
+EXTERNAL_WARNINGS_NOT_ERRORS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(SYSTEM_ZLIB)" == "YES"
+CFLAGS+=-DSYSTEM_ZLIB
+.ENDIF
+
+ENVCFLAGS += -DBOOST_SPIRIT_USE_OLD_NAMESPACE
+
+# --- Files --------------------------------------------------------
+
+SLOFILES=\
+ $(SLO)$/pdfparse.obj \
+ $(SLO)$/pdfentries.obj
+
+# --- Targets ------------------------------------------------------
+
+.IF "$(ENABLE_PDFIMPORT)" == "NO"
+@all:
+ @echo "PDF Import extension disabled."
+.ENDIF
+
+.INCLUDE : target.mk
diff --git a/sdext/source/pdfimport/pdfparse/pdfentries.cxx b/sdext/source/pdfimport/pdfparse/pdfentries.cxx
new file mode 100644
index 000000000000..c286b44fe329
--- /dev/null
+++ b/sdext/source/pdfimport/pdfparse/pdfentries.cxx
@@ -0,0 +1,1487 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include <pdfparse.hxx>
+
+#include <rtl/strbuf.hxx>
+#include <rtl/ustring.hxx>
+#include <rtl/ustrbuf.hxx>
+#include <rtl/alloc.h>
+#include <rtl/digest.h>
+#include <rtl/cipher.h>
+#include <rtl/memory.h>
+#ifdef SYSTEM_ZLIB
+#include "zlib.h"
+#else
+#include <zlib/zlib.h>
+#endif
+
+#include <math.h>
+#include <map>
+
+#include <stdio.h>
+
+using ::rtl::OUString;
+using ::rtl::OString;
+using ::rtl::OStringHash;
+using ::rtl::OStringBuffer;
+
+
+namespace pdfparse
+{
+
+struct EmitImplData
+{
+ // xref table: maps object number to a pair of (generation, buffer offset)
+ typedef std::map< unsigned int, std::pair< unsigned int, unsigned int > > XRefTable;
+ XRefTable m_aXRefTable;
+ // container of all indirect objects (usually a PDFFile*)
+ const PDFContainer* m_pObjectContainer;
+ unsigned int m_nDecryptObject;
+ unsigned int m_nDecryptGeneration;
+
+ // returns true if the xref table was updated
+ bool insertXref( unsigned int nObject, unsigned int nGeneration, unsigned int nOffset )
+ {
+ XRefTable::iterator it = m_aXRefTable.find( nObject );
+ if( it == m_aXRefTable.end() )
+ {
+ // new entry
+ m_aXRefTable[ nObject ] = std::pair<unsigned int, unsigned int>(nGeneration,nOffset);
+ return true;
+ }
+ // update old entry, if generation number is higher
+ if( it->second.first < nGeneration )
+ {
+ it->second = std::pair<unsigned int, unsigned int>(nGeneration,nOffset);
+ return true;
+ }
+ return false;
+ }
+
+ EmitImplData( const PDFContainer* pTopContainer ) :
+ m_pObjectContainer( pTopContainer ),
+ m_nDecryptObject( 0 ),
+ m_nDecryptGeneration( 0 )
+ {}
+ ~EmitImplData() {}
+ bool decrypt( const sal_uInt8* pInBuffer, sal_uInt32 nLen, sal_uInt8* pOutBuffer,
+ unsigned int nObject, unsigned int nGeneration ) const
+ {
+ const PDFFile* pFile = dynamic_cast<const PDFFile*>(m_pObjectContainer);
+ return pFile ? pFile->decrypt( pInBuffer, nLen, pOutBuffer, nObject, nGeneration ) : false;
+ }
+
+ void setDecryptObject( unsigned int nObject, unsigned int nGeneration )
+ {
+ m_nDecryptObject = nObject;
+ m_nDecryptGeneration = nGeneration;
+ }
+};
+
+}
+
+using namespace pdfparse;
+
+EmitContext::EmitContext( const PDFContainer* pTop ) :
+ m_bDeflate( false ),
+ m_bDecrypt( false ),
+ m_pImplData( NULL )
+{
+ if( pTop )
+ m_pImplData = new EmitImplData( pTop );
+}
+
+EmitContext::~EmitContext()
+{
+ delete m_pImplData;
+}
+
+PDFEntry::~PDFEntry()
+{
+}
+
+EmitImplData* PDFEntry::getEmitData( EmitContext& rContext ) const
+{
+ return rContext.m_pImplData;
+}
+
+void PDFEntry::setEmitData( EmitContext& rContext, EmitImplData* pNewEmitData ) const
+{
+ if( rContext.m_pImplData && rContext.m_pImplData != pNewEmitData )
+ delete rContext.m_pImplData;
+ rContext.m_pImplData = pNewEmitData;
+}
+
+PDFValue::~PDFValue()
+{
+}
+
+PDFComment::~PDFComment()
+{
+}
+
+bool PDFComment::emit( EmitContext& rWriteContext ) const
+{
+ return rWriteContext.write( m_aComment.getStr(), m_aComment.getLength() );
+}
+
+PDFEntry* PDFComment::clone() const
+{
+ return new PDFComment( m_aComment );
+}
+
+PDFName::~PDFName()
+{
+}
+
+bool PDFName::emit( EmitContext& rWriteContext ) const
+{
+ if( ! rWriteContext.write( " /", 2 ) )
+ return false;
+ return rWriteContext.write( m_aName.getStr(), m_aName.getLength() );
+}
+
+PDFEntry* PDFName::clone() const
+{
+ return new PDFName( m_aName );
+}
+
+OUString PDFName::getFilteredName() const
+{
+ OStringBuffer aFilter( m_aName.getLength() );
+ const sal_Char* pStr = m_aName.getStr();
+ unsigned int nLen = m_aName.getLength();
+ for( unsigned int i = 0; i < nLen; i++ )
+ {
+ if( pStr[i] == '#' && i < nLen - 3 )
+ {
+ sal_Char rResult = 0;
+ i++;
+ if( pStr[i] >= '0' && pStr[i] <= '9' )
+ rResult = sal_Char( pStr[i]-'0' ) << 4;
+ else if( pStr[i] >= 'a' && pStr[i] <= 'f' )
+ rResult = sal_Char( pStr[i]-'a' + 10 ) << 4;
+ else if( pStr[i] >= 'A' && pStr[i] <= 'F' )
+ rResult = sal_Char( pStr[i]-'A' + 10 ) << 4;
+ i++;
+ if( pStr[i] >= '0' && pStr[i] <= '9' )
+ rResult |= sal_Char( pStr[i]-'0' );
+ else if( pStr[i] >= 'a' && pStr[i] <= 'f' )
+ rResult |= sal_Char( pStr[i]-'a' + 10 );
+ else if( pStr[i] >= 'A' && pStr[i] <= 'F' )
+ rResult |= sal_Char( pStr[i]-'A' + 10 );
+ aFilter.append( rResult );
+ }
+ else
+ aFilter.append( pStr[i] );
+ }
+ return OStringToOUString( aFilter.makeStringAndClear(), RTL_TEXTENCODING_UTF8 );
+}
+
+PDFString::~PDFString()
+{
+}
+
+bool PDFString::emit( EmitContext& rWriteContext ) const
+{
+ if( ! rWriteContext.write( " ", 1 ) )
+ return false;
+ EmitImplData* pEData = getEmitData( rWriteContext );
+ if( rWriteContext.m_bDecrypt && pEData && pEData->m_nDecryptObject )
+ {
+ OString aFiltered( getFilteredString() );
+ // decrypt inplace (evil since OString is supposed to be const
+ // however in this case we know that getFilteredString returned a singular string instance
+ pEData->decrypt( (sal_uInt8*)aFiltered.getStr(), aFiltered.getLength(),
+ (sal_uInt8*)aFiltered.getStr(),
+ pEData->m_nDecryptObject, pEData->m_nDecryptGeneration );
+ // check for string or hex string
+ const sal_Char* pStr = aFiltered.getStr();
+ if( aFiltered.getLength() > 1 &&
+ ( (pStr[0] == sal_Char(0xff) && pStr[1] == sal_Char(0xfe)) ||
+ (pStr[0] == sal_Char(0xfe) && pStr[1] == sal_Char(0xff)) ) )
+ {
+ static const char pHexTab[16] = { '0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+ if( ! rWriteContext.write( "<", 1 ) )
+ return false;
+ for( sal_Int32 i = 0; i < aFiltered.getLength(); i++ )
+ {
+ if( ! rWriteContext.write( pHexTab + ((sal_uInt32(pStr[i]) >> 4) & 0x0f), 1 ) )
+ return false;
+ if( ! rWriteContext.write( pHexTab + (sal_uInt32(pStr[i]) & 0x0f), 1 ) )
+ return false;
+ }
+ if( ! rWriteContext.write( ">", 1 ) )
+ return false;
+ }
+ else
+ {
+ if( ! rWriteContext.write( "(", 1 ) )
+ return false;
+ if( ! rWriteContext.write( aFiltered.getStr(), aFiltered.getLength() ) )
+ return false;
+ if( ! rWriteContext.write( ")", 1 ) )
+ return false;
+ }
+ return true;
+ }
+ return rWriteContext.write( m_aString.getStr(), m_aString.getLength() );
+}
+
+PDFEntry* PDFString::clone() const
+{
+ return new PDFString( m_aString );
+}
+
+OString PDFString::getFilteredString() const
+{
+ int nLen = m_aString.getLength();
+ OStringBuffer aBuf( nLen );
+
+ const sal_Char* pStr = m_aString.getStr();
+ if( *pStr == '(' )
+ {
+ const sal_Char* pRun = pStr+1;
+ while( pRun - pStr < nLen-1 )
+ {
+ if( *pRun == '\\' )
+ {
+ pRun++;
+ if( pRun - pStr < nLen )
+ {
+ sal_Char aEsc = 0;
+ if( *pRun == 'n' )
+ aEsc = '\n';
+ else if( *pRun == 'r' )
+ aEsc = '\r';
+ else if( *pRun == 't' )
+ aEsc = '\t';
+ else if( *pRun == 'b' )
+ aEsc = '\b';
+ else if( *pRun == 'f' )
+ aEsc = '\f';
+ else if( *pRun == '(' )
+ aEsc = '(';
+ else if( *pRun == ')' )
+ aEsc = ')';
+ else if( *pRun == '\\' )
+ aEsc = '\\';
+ else if( *pRun == '\n' )
+ {
+ pRun++;
+ continue;
+ }
+ else if( *pRun == '\r' )
+ {
+ pRun++;
+ if( *pRun == '\n' )
+ pRun++;
+ continue;
+ }
+ else
+ {
+ int i = 0;
+ while( i++ < 3 && *pRun >= '0' && *pRun <= '7' )
+ aEsc = 8*aEsc + (*pRun++ - '0');
+ // move pointer back to last character of octal sequence
+ pRun--;
+ }
+ aBuf.append( aEsc );
+ }
+ }
+ else
+ aBuf.append( *pRun );
+ // move pointer to next character
+ pRun++;
+ }
+ }
+ else if( *pStr == '<' )
+ {
+ const sal_Char* pRun = pStr+1;
+ while( *pRun != '>' && pRun - pStr < nLen )
+ {
+ sal_Char rResult = 0;
+ if( *pRun >= '0' && *pRun <= '9' )
+ rResult = sal_Char( *pRun-'0' ) << 4;
+ else if( *pRun >= 'a' && *pRun <= 'f' )
+ rResult = sal_Char( *pRun-'a' + 10 ) << 4;
+ else if( *pRun >= 'A' && *pRun <= 'F' )
+ rResult = sal_Char( *pRun-'A' + 10 ) << 4;
+ pRun++;
+ if( *pRun != '>' && pRun - pStr < nLen )
+ {
+ if( *pRun >= '0' && *pRun <= '9' )
+ rResult |= sal_Char( *pRun-'0' );
+ else if( *pRun >= 'a' && *pRun <= 'f' )
+ rResult |= sal_Char( *pRun-'a' + 10 );
+ else if( *pRun >= 'A' && *pRun <= 'F' )
+ rResult |= sal_Char( *pRun-'A' + 10 );
+ }
+ pRun++;
+ aBuf.append( rResult );
+ }
+ }
+
+ return aBuf.makeStringAndClear();
+}
+
+PDFNumber::~PDFNumber()
+{
+}
+
+bool PDFNumber::emit( EmitContext& rWriteContext ) const
+{
+ rtl::OStringBuffer aBuf( 32 );
+ aBuf.append( ' ' );
+
+ double fValue = m_fValue;
+ bool bNeg = false;
+ int nPrecision = 5;
+ if( fValue < 0.0 )
+ {
+ bNeg = true;
+ fValue=-fValue;
+ }
+
+ sal_Int64 nInt = (sal_Int64)fValue;
+ fValue -= (double)nInt;
+ // optimizing hardware may lead to a value of 1.0 after the subtraction
+ if( fValue == 1.0 || log10( 1.0-fValue ) <= -nPrecision )
+ {
+ nInt++;
+ fValue = 0.0;
+ }
+ sal_Int64 nFrac = 0;
+ if( fValue )
+ {
+ fValue *= pow( 10.0, (double)nPrecision );
+ nFrac = (sal_Int64)fValue;
+ }
+ if( bNeg && ( nInt || nFrac ) )
+ aBuf.append( '-' );
+ aBuf.append( nInt );
+ if( nFrac )
+ {
+ int i;
+ aBuf.append( '.' );
+ sal_Int64 nBound = (sal_Int64)(pow( 10.0, nPrecision - 1.0 )+0.5);
+ for ( i = 0; ( i < nPrecision ) && nFrac; i++ )
+ {
+ sal_Int64 nNumb = nFrac / nBound;
+ nFrac -= nNumb * nBound;
+ aBuf.append( nNumb );
+ nBound /= 10;
+ }
+ }
+
+ return rWriteContext.write( aBuf.getStr(), aBuf.getLength() );
+}
+
+PDFEntry* PDFNumber::clone() const
+{
+ return new PDFNumber( m_fValue );
+}
+
+
+PDFBool::~PDFBool()
+{
+}
+
+bool PDFBool::emit( EmitContext& rWriteContext ) const
+{
+ return m_bValue ? rWriteContext.write( " true", 5 ) : rWriteContext.write( " false", 6 );
+}
+
+PDFEntry* PDFBool::clone() const
+{
+ return new PDFBool( m_bValue );
+}
+
+PDFNull::~PDFNull()
+{
+}
+
+bool PDFNull::emit( EmitContext& rWriteContext ) const
+{
+ return rWriteContext.write( " null", 5 );
+}
+
+PDFEntry* PDFNull::clone() const
+{
+ return new PDFNull();
+}
+
+
+PDFObjectRef::~PDFObjectRef()
+{
+}
+
+bool PDFObjectRef::emit( EmitContext& rWriteContext ) const
+{
+ OStringBuffer aBuf( 16 );
+ aBuf.append( ' ' );
+ aBuf.append( sal_Int32( m_nNumber ) );
+ aBuf.append( ' ' );
+ aBuf.append( sal_Int32( m_nGeneration ) );
+ aBuf.append( " R", 2 );
+ return rWriteContext.write( aBuf.getStr(), aBuf.getLength() );
+}
+
+PDFEntry* PDFObjectRef::clone() const
+{
+ return new PDFObjectRef( m_nNumber, m_nGeneration );
+}
+
+PDFContainer::~PDFContainer()
+{
+ int nEle = m_aSubElements.size();
+ for( int i = 0; i < nEle; i++ )
+ delete m_aSubElements[i];
+}
+
+bool PDFContainer::emitSubElements( EmitContext& rWriteContext ) const
+{
+ int nEle = m_aSubElements.size();
+ for( int i = 0; i < nEle; i++ )
+ {
+ if( rWriteContext.m_bDecrypt )
+ {
+ const PDFName* pName = dynamic_cast<PDFName*>(m_aSubElements[i]);
+ if (pName && pName->m_aName.equalsL(RTL_CONSTASCII_STRINGPARAM("Encrypt")))
+ {
+ i++;
+ continue;
+ }
+ }
+ if( ! m_aSubElements[i]->emit( rWriteContext ) )
+ return false;
+ }
+ return true;
+}
+
+void PDFContainer::cloneSubElements( std::vector<PDFEntry*>& rNewSubElements ) const
+{
+ int nEle = m_aSubElements.size();
+ for( int i = 0; i < nEle; i++ )
+ rNewSubElements.push_back( m_aSubElements[i]->clone() );
+}
+
+PDFObject* PDFContainer::findObject( unsigned int nNumber, unsigned int nGeneration ) const
+{
+ unsigned int nEle = m_aSubElements.size();
+ for( unsigned int i = 0; i < nEle; i++ )
+ {
+ PDFObject* pObject = dynamic_cast<PDFObject*>(m_aSubElements[i]);
+ if( pObject &&
+ pObject->m_nNumber == nNumber &&
+ pObject->m_nGeneration == nGeneration )
+ {
+ return pObject;
+ }
+ }
+ return NULL;
+}
+
+PDFArray::~PDFArray()
+{
+}
+
+bool PDFArray::emit( EmitContext& rWriteContext ) const
+{
+ if( ! rWriteContext.write( "[", 1 ) )
+ return false;
+ if( ! emitSubElements( rWriteContext ) )
+ return false;
+ return rWriteContext.write( "]", 1 );
+}
+
+PDFEntry* PDFArray::clone() const
+{
+ PDFArray* pNewAr = new PDFArray();
+ cloneSubElements( pNewAr->m_aSubElements );
+ return pNewAr;
+}
+
+PDFDict::~PDFDict()
+{
+}
+
+bool PDFDict::emit( EmitContext& rWriteContext ) const
+{
+ if( ! rWriteContext.write( "<<\n", 3 ) )
+ return false;
+ if( ! emitSubElements( rWriteContext ) )
+ return false;
+ return rWriteContext.write( "\n>>\n", 4 );
+}
+
+void PDFDict::insertValue( const OString& rName, PDFEntry* pValue )
+{
+ if( ! pValue )
+ eraseValue( rName );
+
+ boost::unordered_map<OString,PDFEntry*,OStringHash>::iterator it = m_aMap.find( rName );
+ if( it == m_aMap.end() )
+ {
+ // new name/value, pair, append it
+ m_aSubElements.push_back( new PDFName( rName ) );
+ m_aSubElements.push_back( pValue );
+ }
+ else
+ {
+ unsigned int nSub = m_aSubElements.size();
+ for( unsigned int i = 0; i < nSub; i++ )
+ if( m_aSubElements[i] == it->second )
+ m_aSubElements[i] = pValue;
+ delete it->second;
+ }
+ m_aMap[ rName ] = pValue;
+}
+
+void PDFDict::eraseValue( const OString& rName )
+{
+ unsigned int nEle = m_aSubElements.size();
+ for( unsigned int i = 0; i < nEle; i++ )
+ {
+ PDFName* pName = dynamic_cast<PDFName*>(m_aSubElements[i]);
+ if( pName && pName->m_aName.equals( rName ) )
+ {
+ for( unsigned int j = i+1; j < nEle; j++ )
+ {
+ if( dynamic_cast<PDFComment*>(m_aSubElements[j]) == NULL )
+ {
+ // free name and value
+ delete m_aSubElements[j];
+ delete m_aSubElements[i];
+ // remove subelements from vector
+ m_aSubElements.erase( m_aSubElements.begin()+j );
+ m_aSubElements.erase( m_aSubElements.begin()+i );
+ buildMap();
+ return;
+ }
+ }
+ }
+ }
+}
+
+PDFEntry* PDFDict::buildMap()
+{
+ // clear map
+ m_aMap.clear();
+ // build map
+ unsigned int nEle = m_aSubElements.size();
+ PDFName* pName = NULL;
+ for( unsigned int i = 0; i < nEle; i++ )
+ {
+ if( dynamic_cast<PDFComment*>(m_aSubElements[i]) == NULL )
+ {
+ if( pName )
+ {
+ m_aMap[ pName->m_aName ] = m_aSubElements[i];
+ pName = NULL;
+ }
+ else if( (pName = dynamic_cast<PDFName*>(m_aSubElements[i])) == NULL )
+ return m_aSubElements[i];
+ }
+ }
+ return pName;
+}
+
+PDFEntry* PDFDict::clone() const
+{
+ PDFDict* pNewDict = new PDFDict();
+ cloneSubElements( pNewDict->m_aSubElements );
+ pNewDict->buildMap();
+ return pNewDict;
+}
+
+PDFStream::~PDFStream()
+{
+}
+
+bool PDFStream::emit( EmitContext& rWriteContext ) const
+{
+ return rWriteContext.copyOrigBytes( m_nBeginOffset, m_nEndOffset-m_nBeginOffset );
+}
+
+PDFEntry* PDFStream::clone() const
+{
+ return new PDFStream( m_nBeginOffset, m_nEndOffset, NULL );
+}
+
+unsigned int PDFStream::getDictLength( const PDFContainer* pContainer ) const
+{
+ if( ! m_pDict )
+ return 0;
+ // find /Length entry, can either be a direct or indirect number object
+ boost::unordered_map<OString,PDFEntry*,OStringHash>::const_iterator it =
+ m_pDict->m_aMap.find( "Length" );
+ if( it == m_pDict->m_aMap.end() )
+ return 0;
+ PDFNumber* pNum = dynamic_cast<PDFNumber*>(it->second);
+ if( ! pNum && pContainer )
+ {
+ PDFObjectRef* pRef = dynamic_cast<PDFObjectRef*>(it->second);
+ if( pRef )
+ {
+ int nEle = pContainer->m_aSubElements.size();
+ for( int i = 0; i < nEle && ! pNum; i++ )
+ {
+ PDFObject* pObj = dynamic_cast<PDFObject*>(pContainer->m_aSubElements[i]);
+ if( pObj &&
+ pObj->m_nNumber == pRef->m_nNumber &&
+ pObj->m_nGeneration == pRef->m_nGeneration )
+ {
+ if( pObj->m_pObject )
+ pNum = dynamic_cast<PDFNumber*>(pObj->m_pObject);
+ break;
+ }
+ }
+ }
+ }
+ return pNum ? static_cast<unsigned int>(pNum->m_fValue) : 0;
+}
+
+PDFObject::~PDFObject()
+{
+}
+
+bool PDFObject::getDeflatedStream( char** ppStream, unsigned int* pBytes, const PDFContainer* pObjectContainer, EmitContext& rContext ) const
+{
+ bool bIsDeflated = false;
+ if( m_pStream && m_pStream->m_pDict &&
+ m_pStream->m_nEndOffset > m_pStream->m_nBeginOffset+15
+ )
+ {
+ unsigned int nOuterStreamLen = m_pStream->m_nEndOffset - m_pStream->m_nBeginOffset;
+ *ppStream = static_cast<char*>(rtl_allocateMemory( nOuterStreamLen ));
+ if( ! ppStream )
+ {
+ *pBytes = 0;
+ return false;
+ }
+ unsigned int nRead = rContext.readOrigBytes( m_pStream->m_nBeginOffset, nOuterStreamLen, *ppStream );
+ if( nRead != nOuterStreamLen )
+ {
+ rtl_freeMemory( *ppStream );
+ *ppStream = NULL;
+ *pBytes = 0;
+ return false;
+ }
+ // is there a filter entry ?
+ boost::unordered_map<OString,PDFEntry*,OStringHash>::const_iterator it =
+ m_pStream->m_pDict->m_aMap.find( "Filter" );
+ if( it != m_pStream->m_pDict->m_aMap.end() )
+ {
+ PDFName* pFilter = dynamic_cast<PDFName*>(it->second);
+ if( ! pFilter )
+ {
+ PDFArray* pArray = dynamic_cast<PDFArray*>(it->second);
+ if( pArray && ! pArray->m_aSubElements.empty() )
+ {
+ pFilter = dynamic_cast<PDFName*>(pArray->m_aSubElements.front());
+ }
+ }
+
+ // is the (first) filter FlateDecode ?
+ if (pFilter && pFilter->m_aName.equalsL(RTL_CONSTASCII_STRINGPARAM("FlateDecode")))
+ {
+ bIsDeflated = true;
+ }
+ }
+ // prepare compressed data section
+ char* pStream = *ppStream;
+ if( pStream[0] == 's' )
+ pStream += 6; // skip "stream"
+ // skip line end after "stream"
+ while( *pStream == '\r' || *pStream == '\n' )
+ pStream++;
+ // get the compressed length
+ *pBytes = m_pStream->getDictLength( pObjectContainer );
+ if( pStream != *ppStream )
+ rtl_moveMemory( *ppStream, pStream, *pBytes );
+ if( rContext.m_bDecrypt )
+ {
+ EmitImplData* pEData = getEmitData( rContext );
+ pEData->decrypt( reinterpret_cast<const sal_uInt8*>(*ppStream),
+ *pBytes,
+ reinterpret_cast<sal_uInt8*>(*ppStream),
+ m_nNumber,
+ m_nGeneration
+ ); // decrypt inplace
+ }
+ }
+ else
+ *ppStream = NULL, *pBytes = 0;
+ return bIsDeflated;
+}
+
+static void unzipToBuffer( const char* pBegin, unsigned int nLen,
+ sal_uInt8** pOutBuf, sal_uInt32* pOutLen )
+{
+ z_stream aZStr;
+ aZStr.next_in = (Bytef*)pBegin;
+ aZStr.avail_in = nLen;
+ aZStr.zalloc = ( alloc_func )0;
+ aZStr.zfree = ( free_func )0;
+ aZStr.opaque = ( voidpf )0;
+ inflateInit(&aZStr);
+
+ const unsigned int buf_increment_size = 16384;
+
+ *pOutBuf = (sal_uInt8*)rtl_reallocateMemory( *pOutBuf, buf_increment_size );
+ aZStr.next_out = (Bytef*)*pOutBuf;
+ aZStr.avail_out = buf_increment_size;
+ int err = Z_OK;
+ *pOutLen = buf_increment_size;
+ while( err != Z_STREAM_END && err >= Z_OK && aZStr.avail_in )
+ {
+ err = inflate( &aZStr, Z_NO_FLUSH );
+ if( aZStr.avail_out == 0 )
+ {
+ if( err != Z_STREAM_END )
+ {
+ const int nNewAlloc = *pOutLen + buf_increment_size;
+ *pOutBuf = (sal_uInt8*)rtl_reallocateMemory( *pOutBuf, nNewAlloc );
+ aZStr.next_out = (Bytef*)(*pOutBuf + *pOutLen);
+ aZStr.avail_out = buf_increment_size;
+ *pOutLen = nNewAlloc;
+ }
+ }
+ }
+ if( err == Z_STREAM_END )
+ {
+ if( aZStr.avail_out > 0 )
+ *pOutLen -= aZStr.avail_out;;
+ }
+ inflateEnd(&aZStr);
+ if( err < Z_OK )
+ {
+ rtl_freeMemory( *pOutBuf );
+ *pOutBuf = NULL;
+ *pOutLen = 0;
+ }
+}
+
+bool PDFObject::writeStream( EmitContext& rWriteContext, const PDFFile* pParsedFile ) const
+{
+ bool bSuccess = false;
+ if( m_pStream )
+ {
+ char* pStream = NULL;
+ unsigned int nBytes = 0;
+ if( getDeflatedStream( &pStream, &nBytes, pParsedFile, rWriteContext ) && nBytes && rWriteContext.m_bDeflate )
+ {
+ sal_uInt8* pOutBytes = NULL;
+ sal_uInt32 nOutBytes = 0;
+ unzipToBuffer( pStream, nBytes, &pOutBytes, &nOutBytes );
+ rWriteContext.write( pOutBytes, nOutBytes );
+ rtl_freeMemory( pOutBytes );
+ }
+ else if( pStream && nBytes )
+ rWriteContext.write( pStream, nBytes );
+ rtl_freeMemory( pStream );
+ }
+ return bSuccess;
+}
+
+bool PDFObject::emit( EmitContext& rWriteContext ) const
+{
+ if( ! rWriteContext.write( "\n", 1 ) )
+ return false;
+
+ EmitImplData* pEData = getEmitData( rWriteContext );
+ if( pEData )
+ pEData->insertXref( m_nNumber, m_nGeneration, rWriteContext.getCurPos() );
+
+ OStringBuffer aBuf( 32 );
+ aBuf.append( sal_Int32( m_nNumber ) );
+ aBuf.append( ' ' );
+ aBuf.append( sal_Int32( m_nGeneration ) );
+ aBuf.append( " obj\n" );
+ if( ! rWriteContext.write( aBuf.getStr(), aBuf.getLength() ) )
+ return false;
+
+ if( pEData )
+ pEData->setDecryptObject( m_nNumber, m_nGeneration );
+ if( (rWriteContext.m_bDeflate || rWriteContext.m_bDecrypt) && pEData )
+ {
+ char* pStream = NULL;
+ unsigned int nBytes = 0;
+ bool bDeflate = getDeflatedStream( &pStream, &nBytes, pEData->m_pObjectContainer, rWriteContext );
+ if( pStream && nBytes )
+ {
+ // unzip the stream
+ sal_uInt8* pOutBytes = NULL;
+ sal_uInt32 nOutBytes = 0;
+ if( bDeflate && rWriteContext.m_bDeflate )
+ unzipToBuffer( pStream, nBytes, &pOutBytes, &nOutBytes );
+ else
+ {
+ // nothing to deflate, but decryption has happened
+ pOutBytes = (sal_uInt8*)pStream;
+ nOutBytes = (sal_uInt32)nBytes;
+ }
+
+ if( nOutBytes )
+ {
+ // clone this object
+ PDFObject* pClone = static_cast<PDFObject*>(clone());
+ // set length in the dictionary to new stream length
+ PDFNumber* pNewLen = new PDFNumber( double(nOutBytes) );
+ pClone->m_pStream->m_pDict->insertValue( "Length", pNewLen );
+
+ if( bDeflate && rWriteContext.m_bDeflate )
+ {
+ // delete flatedecode filter
+ boost::unordered_map<OString,PDFEntry*,OStringHash>::const_iterator it =
+ pClone->m_pStream->m_pDict->m_aMap.find( "Filter" );
+ if( it != pClone->m_pStream->m_pDict->m_aMap.end() )
+ {
+ PDFName* pFilter = dynamic_cast<PDFName*>(it->second);
+ if (pFilter && pFilter->m_aName.equalsL(RTL_CONSTASCII_STRINGPARAM("FlateDecode")))
+ pClone->m_pStream->m_pDict->eraseValue( "Filter" );
+ else
+ {
+ PDFArray* pArray = dynamic_cast<PDFArray*>(it->second);
+ if( pArray && ! pArray->m_aSubElements.empty() )
+ {
+ pFilter = dynamic_cast<PDFName*>(pArray->m_aSubElements.front());
+ if (pFilter && pFilter->m_aName.equalsL(RTL_CONSTASCII_STRINGPARAM("FlateDecode")))
+ {
+ delete pFilter;
+ pArray->m_aSubElements.erase( pArray->m_aSubElements.begin() );
+ }
+ }
+ }
+ }
+ }
+
+ // write sub elements except stream
+ bool bRet = true;
+ unsigned int nEle = pClone->m_aSubElements.size();
+ for( unsigned int i = 0; i < nEle && bRet; i++ )
+ {
+ if( pClone->m_aSubElements[i] != pClone->m_pStream )
+ bRet = pClone->m_aSubElements[i]->emit( rWriteContext );
+ }
+ delete pClone;
+ // write stream
+ if( bRet )
+ rWriteContext.write( "stream\n", 7 );
+ if( bRet )
+ bRet = rWriteContext.write( pOutBytes, nOutBytes );
+ if( bRet )
+ bRet = rWriteContext.write( "\nendstream\nendobj\n", 18 );
+ rtl_freeMemory( pStream );
+ if( pOutBytes != (sal_uInt8*)pStream )
+ rtl_freeMemory( pOutBytes );
+ if( pEData )
+ pEData->setDecryptObject( 0, 0 );
+ return bRet;
+ }
+ if( pOutBytes != (sal_uInt8*)pStream )
+ rtl_freeMemory( pOutBytes );
+ }
+ rtl_freeMemory( pStream );
+ }
+
+ bool bRet = emitSubElements( rWriteContext ) &&
+ rWriteContext.write( "\nendobj\n", 8 );
+ if( pEData )
+ pEData->setDecryptObject( 0, 0 );
+ return bRet;
+}
+
+PDFEntry* PDFObject::clone() const
+{
+ PDFObject* pNewOb = new PDFObject( m_nNumber, m_nGeneration );
+ cloneSubElements( pNewOb->m_aSubElements );
+ unsigned int nEle = m_aSubElements.size();
+ for( unsigned int i = 0; i < nEle; i++ )
+ {
+ if( m_aSubElements[i] == m_pObject )
+ pNewOb->m_pObject = pNewOb->m_aSubElements[i];
+ else if( m_aSubElements[i] == m_pStream && pNewOb->m_pObject )
+ {
+ pNewOb->m_pStream = dynamic_cast<PDFStream*>(pNewOb->m_aSubElements[i]);
+ PDFDict* pNewDict = dynamic_cast<PDFDict*>(pNewOb->m_pObject);
+ if( pNewDict )
+ pNewOb->m_pStream->m_pDict = pNewDict;
+ }
+ }
+ return pNewOb;
+}
+
+PDFTrailer::~PDFTrailer()
+{
+}
+
+bool PDFTrailer::emit( EmitContext& rWriteContext ) const
+{
+ // get xref offset
+ unsigned int nXRefPos = rWriteContext.getCurPos();
+ // begin xref section, object 0 is always free
+ if( ! rWriteContext.write( "xref\r\n"
+ "0 1\r\n"
+ "0000000000 65535 f\r\n", 31 ) )
+ return false;
+ // check if we are emitting a complete PDF file
+ EmitImplData* pEData = getEmitData( rWriteContext );
+ if( pEData )
+ {
+ // emit object xrefs
+ const EmitImplData::XRefTable& rXRefs = pEData->m_aXRefTable;
+ EmitImplData::XRefTable::const_iterator section_begin, section_end;
+ section_begin = rXRefs.begin();
+ while( section_begin != rXRefs.end() )
+ {
+ // find end of continuous object numbers
+ section_end = section_begin;
+ unsigned int nLast = section_begin->first;
+ while( (++section_end) != rXRefs.end() &&
+ section_end->first == nLast+1 )
+ nLast = section_end->first;
+ // write first object number and number of following entries
+ OStringBuffer aBuf( 21 );
+ aBuf.append( sal_Int32( section_begin->first ) );
+ aBuf.append( ' ' );
+ aBuf.append( sal_Int32(nLast - section_begin->first + 1) );
+ aBuf.append( "\r\n" );
+ if( ! rWriteContext.write( aBuf.getStr(), aBuf.getLength() ) )
+ return false;
+ while( section_begin != section_end )
+ {
+ // write 20 char entry of form
+ // 0000offset 00gen n\r\n
+ aBuf.setLength( 0 );
+ OString aOffset( OString::valueOf( sal_Int64(section_begin->second.second ) ) );
+ int nPad = 10 - aOffset.getLength();
+ for( int i = 0; i < nPad; i++ )
+ aBuf.append( '0' );
+ aBuf.append( aOffset );
+ aBuf.append( ' ' );
+ OString aGeneration( OString::valueOf( sal_Int32(section_begin->second.first ) ) );
+ nPad = 5 - aGeneration.getLength();
+ for( int i = 0; i < nPad; i++ )
+ aBuf.append( '0' );
+ aBuf.append( aGeneration );
+ aBuf.append( " n\r\n" );
+ if( ! rWriteContext.write( aBuf.getStr(), 20 ) )
+ return false;
+ ++section_begin;
+ }
+ }
+ }
+ if( ! rWriteContext.write( "trailer\n", 8 ) )
+ return false;
+ if( ! emitSubElements( rWriteContext ) )
+ return false;
+ if( ! rWriteContext.write( "startxref\n", 10 ) )
+ return false;
+ rtl::OString aOffset( rtl::OString::valueOf( sal_Int32(nXRefPos) ) );
+ if( ! rWriteContext.write( aOffset.getStr(), aOffset.getLength() ) )
+ return false;
+ return rWriteContext.write( "\n%%EOF\n", 7 );
+}
+
+PDFEntry* PDFTrailer::clone() const
+{
+ PDFTrailer* pNewTr = new PDFTrailer();
+ cloneSubElements( pNewTr->m_aSubElements );
+ unsigned int nEle = m_aSubElements.size();
+ for( unsigned int i = 0; i < nEle; i++ )
+ {
+ if( m_aSubElements[i] == m_pDict )
+ {
+ pNewTr->m_pDict = dynamic_cast<PDFDict*>(pNewTr->m_aSubElements[i]);
+ break;
+ }
+ }
+ return pNewTr;
+}
+
+#define ENCRYPTION_KEY_LEN 16
+#define ENCRYPTION_BUF_LEN 32
+
+namespace pdfparse {
+struct PDFFileImplData
+{
+ bool m_bIsEncrypted;
+ bool m_bStandardHandler;
+ sal_uInt32 m_nAlgoVersion;
+ sal_uInt32 m_nStandardRevision;
+ sal_uInt32 m_nKeyLength;
+ sal_uInt8 m_aOEntry[32];
+ sal_uInt8 m_aUEntry[32];
+ sal_uInt32 m_nPEntry;
+ OString m_aDocID;
+ rtlCipher m_aCipher;
+ rtlDigest m_aDigest;
+
+ sal_uInt8 m_aDecryptionKey[ENCRYPTION_KEY_LEN+5]; // maximum handled key length
+
+ PDFFileImplData() :
+ m_bIsEncrypted( false ),
+ m_bStandardHandler( false ),
+ m_nAlgoVersion( 0 ),
+ m_nStandardRevision( 0 ),
+ m_nKeyLength( 0 ),
+ m_nPEntry( 0 ),
+ m_aCipher( NULL ),
+ m_aDigest( NULL )
+ {
+ rtl_zeroMemory( m_aOEntry, sizeof( m_aOEntry ) );
+ rtl_zeroMemory( m_aUEntry, sizeof( m_aUEntry ) );
+ rtl_zeroMemory( m_aDecryptionKey, sizeof( m_aDecryptionKey ) );
+ }
+
+ ~PDFFileImplData()
+ {
+ if( m_aCipher )
+ rtl_cipher_destroyARCFOUR( m_aCipher );
+ if( m_aDigest )
+ rtl_digest_destroyMD5( m_aDigest );
+ }
+};
+}
+
+PDFFile::~PDFFile()
+{
+ if( m_pData )
+ delete m_pData;
+}
+
+bool PDFFile::isEncrypted() const
+{
+ return impl_getData()->m_bIsEncrypted;
+}
+
+bool PDFFile::decrypt( const sal_uInt8* pInBuffer, sal_uInt32 nLen, sal_uInt8* pOutBuffer,
+ unsigned int nObject, unsigned int nGeneration ) const
+{
+ if( ! isEncrypted() )
+ return false;
+
+ if( ! m_pData->m_aCipher )
+ m_pData->m_aCipher = rtl_cipher_createARCFOUR( rtl_Cipher_ModeStream );
+
+ // modify encryption key
+ sal_uInt32 i = m_pData->m_nKeyLength;
+ m_pData->m_aDecryptionKey[i++] = sal_uInt8(nObject&0xff);
+ m_pData->m_aDecryptionKey[i++] = sal_uInt8((nObject>>8)&0xff);
+ m_pData->m_aDecryptionKey[i++] = sal_uInt8((nObject>>16)&0xff);
+ m_pData->m_aDecryptionKey[i++] = sal_uInt8(nGeneration&0xff);
+ m_pData->m_aDecryptionKey[i++] = sal_uInt8((nGeneration>>8)&0xff);
+
+ sal_uInt8 aSum[ENCRYPTION_KEY_LEN];
+ rtl_digest_updateMD5( m_pData->m_aDigest, m_pData->m_aDecryptionKey, i );
+ rtl_digest_getMD5( m_pData->m_aDigest, aSum, sizeof( aSum ) );
+
+ if( i > 16 )
+ i = 16;
+
+ rtlCipherError aErr = rtl_cipher_initARCFOUR( m_pData->m_aCipher,
+ rtl_Cipher_DirectionDecode,
+ aSum, i,
+ NULL, 0 );
+ if( aErr == rtl_Cipher_E_None )
+ aErr = rtl_cipher_decodeARCFOUR( m_pData->m_aCipher,
+ pInBuffer, nLen,
+ pOutBuffer, nLen );
+ return aErr == rtl_Cipher_E_None;
+}
+
+static const sal_uInt8 nPadString[32] =
+{
+ 0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08,
+ 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A
+};
+
+static void pad_or_truncate_to_32( const OString& rStr, sal_Char* pBuffer )
+{
+ int nLen = rStr.getLength();
+ if( nLen > 32 )
+ nLen = 32;
+ const sal_Char* pStr = rStr.getStr();
+ rtl_copyMemory( pBuffer, pStr, nLen );
+ int i = 0;
+ while( nLen < 32 )
+ pBuffer[nLen++] = nPadString[i++];
+}
+
+// pass at least pData->m_nKeyLength bytes in
+static sal_uInt32 password_to_key( const OString& rPwd, sal_uInt8* pOutKey, PDFFileImplData* pData, bool bComputeO )
+{
+ // see PDF reference 1.4 Algorithm 3.2
+ // encrypt pad string
+ sal_Char aPadPwd[ENCRYPTION_BUF_LEN];
+ pad_or_truncate_to_32( rPwd, aPadPwd );
+ rtl_digest_updateMD5( pData->m_aDigest, aPadPwd, sizeof( aPadPwd ) );
+ if( ! bComputeO )
+ {
+ rtl_digest_updateMD5( pData->m_aDigest, pData->m_aOEntry, 32 );
+ sal_uInt8 aPEntry[4];
+ aPEntry[0] = static_cast<sal_uInt8>(pData->m_nPEntry & 0xff);
+ aPEntry[1] = static_cast<sal_uInt8>((pData->m_nPEntry >> 8 ) & 0xff);
+ aPEntry[2] = static_cast<sal_uInt8>((pData->m_nPEntry >> 16) & 0xff);
+ aPEntry[3] = static_cast<sal_uInt8>((pData->m_nPEntry >> 24) & 0xff);
+ rtl_digest_updateMD5( pData->m_aDigest, aPEntry, sizeof(aPEntry) );
+ rtl_digest_updateMD5( pData->m_aDigest, pData->m_aDocID.getStr(), pData->m_aDocID.getLength() );
+ }
+ sal_uInt8 nSum[RTL_DIGEST_LENGTH_MD5];
+ rtl_digest_getMD5( pData->m_aDigest, nSum, sizeof(nSum) );
+ if( pData->m_nStandardRevision == 3 )
+ {
+ for( int i = 0; i < 50; i++ )
+ {
+ rtl_digest_updateMD5( pData->m_aDigest, nSum, sizeof(nSum) );
+ rtl_digest_getMD5( pData->m_aDigest, nSum, sizeof(nSum) );
+ }
+ }
+ sal_uInt32 nLen = pData->m_nKeyLength;
+ if( nLen > RTL_DIGEST_LENGTH_MD5 )
+ nLen = RTL_DIGEST_LENGTH_MD5;
+ rtl_copyMemory( pOutKey, nSum, nLen );
+ return nLen;
+}
+
+static bool check_user_password( const OString& rPwd, PDFFileImplData* pData )
+{
+ // see PDF reference 1.4 Algorithm 3.6
+ bool bValid = false;
+ sal_uInt8 aKey[ENCRYPTION_KEY_LEN];
+ sal_uInt8 nEncryptedEntry[ENCRYPTION_BUF_LEN];
+ rtl_zeroMemory( nEncryptedEntry, sizeof(nEncryptedEntry) );
+ sal_uInt32 nKeyLen = password_to_key( rPwd, aKey, pData, false );
+ // save (at this time potential) decryption key for later use
+ rtl_copyMemory( pData->m_aDecryptionKey, aKey, nKeyLen );
+ if( pData->m_nStandardRevision == 2 )
+ {
+ // see PDF reference 1.4 Algorithm 3.4
+ // encrypt pad string
+ rtl_cipher_initARCFOUR( pData->m_aCipher, rtl_Cipher_DirectionEncode,
+ aKey, nKeyLen,
+ NULL, 0 );
+ rtl_cipher_encodeARCFOUR( pData->m_aCipher, nPadString, sizeof( nPadString ),
+ nEncryptedEntry, sizeof( nEncryptedEntry ) );
+ bValid = (rtl_compareMemory( nEncryptedEntry, pData->m_aUEntry, 32 ) == 0);
+ }
+ else if( pData->m_nStandardRevision == 3 )
+ {
+ // see PDF reference 1.4 Algorithm 3.5
+ rtl_digest_updateMD5( pData->m_aDigest, nPadString, sizeof( nPadString ) );
+ rtl_digest_updateMD5( pData->m_aDigest, pData->m_aDocID.getStr(), pData->m_aDocID.getLength() );
+ rtl_digest_getMD5( pData->m_aDigest, nEncryptedEntry, sizeof(nEncryptedEntry) );
+ rtl_cipher_initARCFOUR( pData->m_aCipher, rtl_Cipher_DirectionEncode,
+ aKey, sizeof(aKey), NULL, 0 );
+ rtl_cipher_encodeARCFOUR( pData->m_aCipher,
+ nEncryptedEntry, 16,
+ nEncryptedEntry, 16 ); // encrypt in place
+ for( int i = 1; i <= 19; i++ ) // do it 19 times, start with 1
+ {
+ sal_uInt8 aTempKey[ENCRYPTION_KEY_LEN];
+ for( sal_uInt32 j = 0; j < sizeof(aTempKey); j++ )
+ aTempKey[j] = static_cast<sal_uInt8>( aKey[j] ^ i );
+
+ rtl_cipher_initARCFOUR( pData->m_aCipher, rtl_Cipher_DirectionEncode,
+ aTempKey, sizeof(aTempKey), NULL, 0 );
+ rtl_cipher_encodeARCFOUR( pData->m_aCipher,
+ nEncryptedEntry, 16,
+ nEncryptedEntry, 16 ); // encrypt in place
+ }
+ bValid = (rtl_compareMemory( nEncryptedEntry, pData->m_aUEntry, 16 ) == 0);
+ }
+ return bValid;
+}
+
+bool PDFFile::setupDecryptionData( const OString& rPwd ) const
+{
+ if( !impl_getData()->m_bIsEncrypted )
+ return rPwd.getLength() == 0;
+
+ // check if we can handle this encryption at all
+ if( ! m_pData->m_bStandardHandler ||
+ m_pData->m_nAlgoVersion < 1 ||
+ m_pData->m_nAlgoVersion > 2 ||
+ m_pData->m_nStandardRevision < 2 ||
+ m_pData->m_nStandardRevision > 3 )
+ return false;
+
+ if( ! m_pData->m_aCipher )
+ m_pData->m_aCipher = rtl_cipher_createARCFOUR(rtl_Cipher_ModeStream);
+ if( ! m_pData->m_aDigest )
+ m_pData->m_aDigest = rtl_digest_createMD5();
+
+ // first try user password
+ bool bValid = check_user_password( rPwd, m_pData );
+
+ if( ! bValid )
+ {
+ // try owner password
+ // see PDF reference 1.4 Algorithm 3.7
+ sal_uInt8 aKey[ENCRYPTION_KEY_LEN];
+ sal_uInt8 nPwd[ENCRYPTION_BUF_LEN];
+ rtl_zeroMemory( nPwd, sizeof(nPwd) );
+ sal_uInt32 nKeyLen = password_to_key( rPwd, aKey, m_pData, true );
+ if( m_pData->m_nStandardRevision == 2 )
+ {
+ rtl_cipher_initARCFOUR( m_pData->m_aCipher, rtl_Cipher_DirectionDecode,
+ aKey, nKeyLen, NULL, 0 );
+ rtl_cipher_decodeARCFOUR( m_pData->m_aCipher,
+ m_pData->m_aOEntry, 32,
+ nPwd, 32 );
+ }
+ else if( m_pData->m_nStandardRevision == 3 )
+ {
+ rtl_copyMemory( nPwd, m_pData->m_aOEntry, 32 );
+ for( int i = 19; i >= 0; i-- )
+ {
+ sal_uInt8 nTempKey[ENCRYPTION_KEY_LEN];
+ for( unsigned int j = 0; j < sizeof(nTempKey); j++ )
+ nTempKey[j] = sal_uInt8(aKey[j] ^ i);
+ rtl_cipher_initARCFOUR( m_pData->m_aCipher, rtl_Cipher_DirectionDecode,
+ nTempKey, nKeyLen, NULL, 0 );
+ rtl_cipher_decodeARCFOUR( m_pData->m_aCipher,
+ nPwd, 32,
+ nPwd, 32 ); // decrypt inplace
+ }
+ }
+ bValid = check_user_password( OString( (sal_Char*)nPwd, 32 ), m_pData );
+ }
+
+ return bValid;
+}
+
+rtl::OUString PDFFile::getDecryptionKey() const
+{
+ rtl::OUStringBuffer aBuf( ENCRYPTION_KEY_LEN * 2 );
+ if( impl_getData()->m_bIsEncrypted )
+ {
+ for( sal_uInt32 i = 0; i < m_pData->m_nKeyLength; i++ )
+ {
+ static const sal_Unicode pHexTab[16] = { '0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+ aBuf.append( pHexTab[(m_pData->m_aDecryptionKey[i] >> 4) & 0x0f] );
+ aBuf.append( pHexTab[(m_pData->m_aDecryptionKey[i] & 0x0f)] );
+ }
+
+ }
+ return aBuf.makeStringAndClear();
+}
+
+PDFFileImplData* PDFFile::impl_getData() const
+{
+ if( m_pData )
+ return m_pData;
+ m_pData = new PDFFileImplData();
+ // check for encryption dict in a trailer
+ unsigned int nElements = m_aSubElements.size();
+ while( nElements-- > 0 )
+ {
+ PDFTrailer* pTrailer = dynamic_cast<PDFTrailer*>(m_aSubElements[nElements]);
+ if( pTrailer && pTrailer->m_pDict )
+ {
+ // search doc id
+ PDFDict::Map::iterator doc_id = pTrailer->m_pDict->m_aMap.find( "ID" );
+ if( doc_id != pTrailer->m_pDict->m_aMap.end() )
+ {
+ PDFArray* pArr = dynamic_cast<PDFArray*>(doc_id->second);
+ if( pArr && pArr->m_aSubElements.size() > 0 )
+ {
+ PDFString* pStr = dynamic_cast<PDFString*>(pArr->m_aSubElements[0]);
+ if( pStr )
+ m_pData->m_aDocID = pStr->getFilteredString();
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "DocId is <" );
+ for( int i = 0; i < m_pData->m_aDocID.getLength(); i++ )
+ fprintf( stderr, "%.2x", (unsigned int)sal_uInt8(m_pData->m_aDocID.getStr()[i]) );
+ fprintf( stderr, ">\n" );
+ #endif
+ }
+ }
+ // search Encrypt entry
+ PDFDict::Map::iterator enc =
+ pTrailer->m_pDict->m_aMap.find( "Encrypt" );
+ if( enc != pTrailer->m_pDict->m_aMap.end() )
+ {
+ PDFDict* pDict = dynamic_cast<PDFDict*>(enc->second);
+ if( ! pDict )
+ {
+ PDFObjectRef* pRef = dynamic_cast<PDFObjectRef*>(enc->second);
+ if( pRef )
+ {
+ PDFObject* pObj = findObject( pRef );
+ if( pObj && pObj->m_pObject )
+ pDict = dynamic_cast<PDFDict*>(pObj->m_pObject);
+ }
+ }
+ if( pDict )
+ {
+ PDFDict::Map::iterator filter = pDict->m_aMap.find( "Filter" );
+ PDFDict::Map::iterator version = pDict->m_aMap.find( "V" );
+ PDFDict::Map::iterator len = pDict->m_aMap.find( "Length" );
+ PDFDict::Map::iterator o_ent = pDict->m_aMap.find( "O" );
+ PDFDict::Map::iterator u_ent = pDict->m_aMap.find( "U" );
+ PDFDict::Map::iterator r_ent = pDict->m_aMap.find( "R" );
+ PDFDict::Map::iterator p_ent = pDict->m_aMap.find( "P" );
+ if( filter != pDict->m_aMap.end() )
+ {
+ m_pData->m_bIsEncrypted = true;
+ m_pData->m_nKeyLength = 5;
+ if( version != pDict->m_aMap.end() )
+ {
+ PDFNumber* pNum = dynamic_cast<PDFNumber*>(version->second);
+ if( pNum )
+ m_pData->m_nAlgoVersion = static_cast<sal_uInt32>(pNum->m_fValue);
+ }
+ if( m_pData->m_nAlgoVersion >= 3 )
+ m_pData->m_nKeyLength = 16;
+ if( len != pDict->m_aMap.end() )
+ {
+ PDFNumber* pNum = dynamic_cast<PDFNumber*>(len->second);
+ if( pNum )
+ m_pData->m_nKeyLength = static_cast<sal_uInt32>(pNum->m_fValue) / 8;
+ }
+ PDFName* pFilter = dynamic_cast<PDFName*>(filter->second);
+ if( pFilter && pFilter->getFilteredName().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Standard" ) ) )
+ m_pData->m_bStandardHandler = true;
+ if( o_ent != pDict->m_aMap.end() )
+ {
+ PDFString* pString = dynamic_cast<PDFString*>(o_ent->second);
+ if( pString )
+ {
+ OString aEnt = pString->getFilteredString();
+ if( aEnt.getLength() == 32 )
+ rtl_copyMemory( m_pData->m_aOEntry, aEnt.getStr(), 32 );
+ #if OSL_DEBUG_LEVEL > 1
+ else
+ {
+ fprintf( stderr, "O entry has length %d, should be 32 <", (int)aEnt.getLength() );
+ for( int i = 0; i < aEnt.getLength(); i++ )
+ fprintf( stderr, " %.2X", (unsigned int)sal_uInt8(aEnt.getStr()[i]) );
+ fprintf( stderr, ">\n" );
+ }
+ #endif
+ }
+ }
+ if( u_ent != pDict->m_aMap.end() )
+ {
+ PDFString* pString = dynamic_cast<PDFString*>(u_ent->second);
+ if( pString )
+ {
+ OString aEnt = pString->getFilteredString();
+ if( aEnt.getLength() == 32 )
+ rtl_copyMemory( m_pData->m_aUEntry, aEnt.getStr(), 32 );
+ #if OSL_DEBUG_LEVEL > 1
+ else
+ {
+ fprintf( stderr, "U entry has length %d, should be 32 <", (int)aEnt.getLength() );
+ for( int i = 0; i < aEnt.getLength(); i++ )
+ fprintf( stderr, " %.2X", (unsigned int)sal_uInt8(aEnt.getStr()[i]) );
+ fprintf( stderr, ">\n" );
+ }
+ #endif
+ }
+ }
+ if( r_ent != pDict->m_aMap.end() )
+ {
+ PDFNumber* pNum = dynamic_cast<PDFNumber*>(r_ent->second);
+ if( pNum )
+ m_pData->m_nStandardRevision = static_cast<sal_uInt32>(pNum->m_fValue);
+ }
+ if( p_ent != pDict->m_aMap.end() )
+ {
+ PDFNumber* pNum = dynamic_cast<PDFNumber*>(p_ent->second);
+ if( pNum )
+ m_pData->m_nPEntry = static_cast<sal_uInt32>(static_cast<sal_Int32>(pNum->m_fValue));
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "p entry is %p\n", (void*)m_pData->m_nPEntry );
+ #endif
+ }
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "Encryption dict: sec handler: %s, version = %d, revision = %d, key length = %d\n",
+ pFilter ? OUStringToOString( pFilter->getFilteredName(), RTL_TEXTENCODING_UTF8 ).getStr() : "<unknown>",
+ (int)m_pData->m_nAlgoVersion, (int)m_pData->m_nStandardRevision, (int)m_pData->m_nKeyLength );
+ #endif
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return m_pData;
+}
+
+bool PDFFile::emit( EmitContext& rWriteContext ) const
+{
+ setEmitData( rWriteContext, new EmitImplData( this ) );
+
+ OStringBuffer aBuf( 32 );
+ aBuf.append( "%PDF-" );
+ aBuf.append( sal_Int32( m_nMajor ) );
+ aBuf.append( '.' );
+ aBuf.append( sal_Int32( m_nMinor ) );
+ aBuf.append( "\n" );
+ if( ! rWriteContext.write( aBuf.getStr(), aBuf.getLength() ) )
+ return false;
+ return emitSubElements( rWriteContext );
+}
+
+PDFEntry* PDFFile::clone() const
+{
+ PDFFile* pNewFl = new PDFFile();
+ pNewFl->m_nMajor = m_nMajor;
+ pNewFl->m_nMinor = m_nMinor;
+ cloneSubElements( pNewFl->m_aSubElements );
+ return pNewFl;
+}
+
+PDFPart::~PDFPart()
+{
+}
+
+bool PDFPart::emit( EmitContext& rWriteContext ) const
+{
+ return emitSubElements( rWriteContext );
+}
+
+PDFEntry* PDFPart::clone() const
+{
+ PDFPart* pNewPt = new PDFPart();
+ cloneSubElements( pNewPt->m_aSubElements );
+ return pNewPt;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/pdfparse/pdfparse.cxx b/sdext/source/pdfimport/pdfparse/pdfparse.cxx
new file mode 100644
index 000000000000..46a2b72ca7b9
--- /dev/null
+++ b/sdext/source/pdfimport/pdfparse/pdfparse.cxx
@@ -0,0 +1,708 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#if defined __SUNPRO_CC
+#pragma disable_warn
+#elif defined _MSC_VER
+#pragma warning(push, 1)
+#endif
+
+#include "pdfparse.hxx"
+
+// workaround windows compiler: do not include multi_pass.hpp
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_utility.hpp>
+#include <boost/spirit/include/classic_error_handling.hpp>
+#include <boost/spirit/include/classic_file_iterator.hpp>
+#include <boost/bind.hpp>
+#include <string>
+
+#include <rtl/strbuf.hxx>
+#include <rtl/memory.h>
+#include <rtl/alloc.h>
+
+// disable warnings again because someone along the line has enabled them
+#if defined __SUNPRO_CC
+#pragma disable_warn
+#elif defined _MSC_VER
+#pragma warning(push, 1)
+#endif
+
+using namespace boost::spirit;
+using namespace pdfparse;
+
+using ::rtl::OString;
+using ::rtl::OStringBuffer;
+
+class StringEmitContext : public EmitContext
+{
+ OStringBuffer m_aBuf;
+ public:
+ StringEmitContext() : EmitContext(), m_aBuf(256) {}
+ virtual ~StringEmitContext() {}
+ virtual bool write( const void* pBuf, unsigned int nLen ) throw()
+ {
+ m_aBuf.append( (const sal_Char*)pBuf, nLen );
+ return true;
+ }
+ virtual unsigned int getCurPos() throw() { return m_aBuf.getLength(); }
+ virtual bool copyOrigBytes( unsigned int nOrigOffset, unsigned int nLen ) throw()
+ { return (nOrigOffset+nLen < static_cast<unsigned int>(m_aBuf.getLength()) ) ?
+ write( m_aBuf.getStr() + nOrigOffset, nLen ) : false; }
+ virtual unsigned int readOrigBytes( unsigned int nOrigOffset, unsigned int nLen, void* pBuf ) throw()
+ {
+ if( nOrigOffset+nLen < static_cast<unsigned int>(m_aBuf.getLength()) )
+ {
+ rtl_copyMemory( pBuf, m_aBuf.getStr()+nOrigOffset, nLen );
+ return nLen;
+ }
+ return 0;
+ }
+
+ OString getString() { return m_aBuf.makeStringAndClear(); }
+};
+
+template< class iteratorT >
+class PDFGrammar : public grammar< PDFGrammar<iteratorT> >
+{
+public:
+
+ PDFGrammar( const iteratorT& first )
+ : m_fDouble( 0.0 ), m_aGlobalBegin( first ) {}
+ ~PDFGrammar()
+ {
+ if( !m_aObjectStack.empty() )
+ delete m_aObjectStack.front();
+ }
+
+ double m_fDouble;
+ std::vector< unsigned int > m_aUIntStack;
+ std::vector< PDFEntry* > m_aObjectStack;
+ rtl::OString m_aErrorString;
+ iteratorT m_aGlobalBegin;
+
+public:
+ struct pdf_string_parser
+ {
+ typedef nil_t result_t;
+ template <typename ScannerT>
+ std::ptrdiff_t
+ operator()(ScannerT const& scan, result_t&) const
+ {
+ std::ptrdiff_t len = 0;
+
+ int nBraceLevel = 0;
+ while( ! scan.at_end() )
+ {
+ char c = *scan;
+ if( c == ')' )
+ {
+ nBraceLevel--;
+ if( nBraceLevel < 0 )
+ break;
+ }
+ else if( c == '(' )
+ nBraceLevel++;
+ else if( c == '\\' ) // ignore escaped braces
+ {
+ ++len;
+ ++scan;
+ if( scan.at_end() )
+ break;
+ }
+ ++len;
+ ++scan;
+ }
+ return scan.at_end() ? -1 : len;
+ }
+ };
+
+ template< typename ScannerT >
+ struct definition
+ {
+ definition( const PDFGrammar<iteratorT>& rSelf )
+ {
+ PDFGrammar<iteratorT>* pSelf = const_cast< PDFGrammar<iteratorT>* >( &rSelf );
+
+ // workaround workshop compiler: comment_p doesn't work
+ // comment = comment_p("%")[boost::bind(&PDFGrammar::pushComment, pSelf, _1, _2 )];
+ comment = lexeme_d[ (ch_p('%') >> *(~ch_p('\r') & ~ch_p('\n')) >> eol_p)[boost::bind(&PDFGrammar::pushComment, pSelf, _1, _2 )] ];
+
+ boolean = (str_p("true") | str_p("false"))[boost::bind(&PDFGrammar::pushBool, pSelf, _1, _2)];
+
+ // workaround workshop compiler: confix_p doesn't work
+ //stream = confix_p( "stream", *anychar_p, "endstream" )[boost::bind(&PDFGrammar::emitStream, pSelf, _1, _2 )];
+ stream = (str_p("stream") >> *(anychar_p - str_p("endstream")) >> str_p("endstream"))[boost::bind(&PDFGrammar::emitStream, pSelf, _1, _2 )];
+
+ name = lexeme_d[
+ ch_p('/')
+ >> (*(anychar_p-chset_p("\t\n\f\r ()<>[]{}/%")-ch_p('\0')))
+ [boost::bind(&PDFGrammar::pushName, pSelf, _1, _2)] ];
+
+ // workaround workshop compiler: confix_p doesn't work
+ //stringtype = ( confix_p("(",*anychar_p, ")") |
+ // confix_p("<",*xdigit_p, ">") )
+ // [boost::bind(&PDFGrammar::pushString,pSelf, _1, _2)];
+
+ stringtype = ( ( ch_p('(') >> functor_parser<pdf_string_parser>() >> ch_p(')') ) |
+ ( ch_p('<') >> *xdigit_p >> ch_p('>') ) )
+ [boost::bind(&PDFGrammar::pushString,pSelf, _1, _2)];
+
+ null_object = str_p( "null" )[boost::bind(&PDFGrammar::pushNull, pSelf, _1, _2)];
+
+ #ifdef USE_ASSIGN_ACTOR
+ objectref = ( uint_p[push_back_a(pSelf->m_aUIntStack)]
+ >> uint_p[push_back_a(pSelf->m_aUIntStack)]
+ >> ch_p('R')
+ >> eps_p
+ )[boost::bind(&PDFGrammar::pushObjectRef, pSelf, _1, _2)];
+ #else
+ objectref = ( uint_p[boost::bind(&PDFGrammar::push_back_action_uint, pSelf, _1)]
+ >> uint_p[boost::bind(&PDFGrammar::push_back_action_uint, pSelf, _1)]
+ >> ch_p('R')
+ >> eps_p
+ )[boost::bind(&PDFGrammar::pushObjectRef, pSelf, _1, _2)];
+ #endif
+
+ #ifdef USE_ASSIGN_ACTOR
+ simple_type = objectref | name |
+ ( real_p[assign_a(pSelf->m_fDouble)] >> eps_p )
+ [boost::bind(&PDFGrammar::pushDouble, pSelf, _1, _2)]
+ | stringtype | boolean | null_object;
+ #else
+ simple_type = objectref | name |
+ ( real_p[boost::bind(&PDFGrammar::assign_action_double, pSelf, _1)] >> eps_p )
+ [boost::bind(&PDFGrammar::pushDouble, pSelf, _1, _2)]
+ | stringtype | boolean | null_object;
+ #endif
+
+ dict_begin = str_p( "<<" )[boost::bind(&PDFGrammar::beginDict, pSelf, _1, _2)];
+ dict_end = str_p( ">>" )[boost::bind(&PDFGrammar::endDict, pSelf, _1, _2)];
+
+ array_begin = str_p("[")[boost::bind(&PDFGrammar::beginArray,pSelf, _1, _2)];
+ array_end = str_p("]")[boost::bind(&PDFGrammar::endArray,pSelf, _1, _2)];
+
+ #ifdef USE_ASSIGN_ACTOR
+ object_begin= uint_p[push_back_a(pSelf->m_aUIntStack)]
+ >> uint_p[push_back_a(pSelf->m_aUIntStack)]
+ >> str_p("obj" )[boost::bind(&PDFGrammar::beginObject, pSelf, _1, _2)];
+ #else
+ object_begin= uint_p[boost::bind(&PDFGrammar::push_back_action_uint, pSelf, _1)]
+ >> uint_p[boost::bind(&PDFGrammar::push_back_action_uint, pSelf, _1)]
+ >> str_p("obj" )[boost::bind(&PDFGrammar::beginObject, pSelf, _1, _2)];
+ #endif
+ object_end = str_p( "endobj" )[boost::bind(&PDFGrammar::endObject, pSelf, _1, _2)];
+
+ xref = str_p( "xref" ) >> uint_p >> uint_p
+ >> lexeme_d[
+ +( repeat_p(10)[digit_p]
+ >> blank_p
+ >> repeat_p(5)[digit_p]
+ >> blank_p
+ >> ( ch_p('n') | ch_p('f') )
+ >> repeat_p(2)[space_p]
+ ) ];
+
+ dict_element= dict_begin | comment | simple_type
+ | array_begin | array_end | dict_end;
+
+ object = object_begin
+ >> *dict_element
+ >> !stream
+ >> object_end;
+
+ trailer = str_p( "trailer" )[boost::bind(&PDFGrammar::beginTrailer,pSelf,_1,_2)]
+ >> *dict_element
+ >> str_p("startxref")
+ >> uint_p
+ >> str_p("%%EOF")[boost::bind(&PDFGrammar::endTrailer,pSelf,_1,_2)];
+
+ #ifdef USE_ASSIGN_ACTOR
+ pdfrule = ! (lexeme_d[
+ str_p( "%PDF-" )
+ >> uint_p[push_back_a(pSelf->m_aUIntStack)]
+ >> ch_p('.')
+ >> uint_p[push_back_a(pSelf->m_aUIntStack)]
+ >> *((~ch_p('\r') & ~ch_p('\n')))
+ >> eol_p
+ ])[boost::bind(&PDFGrammar::haveFile,pSelf, _1, _2)]
+ >> *( comment | object | ( xref >> trailer ) );
+ #else
+ pdfrule = ! (lexeme_d[
+ str_p( "%PDF-" )
+ >> uint_p[boost::bind(&PDFGrammar::push_back_action_uint, pSelf, _1)]
+ >> ch_p('.')
+ >> uint_p[boost::bind(&PDFGrammar::push_back_action_uint, pSelf, _1)]
+ >> *((~ch_p('\r') & ~ch_p('\n')))
+ >> eol_p
+ ])[boost::bind(&PDFGrammar::haveFile,pSelf, _1, _2)]
+ >> *( comment | object | ( xref >> trailer ) );
+ #endif
+ }
+ rule< ScannerT > comment, stream, boolean, name, stringtype, null_object, simple_type,
+ objectref, array, value, dict_element, dict_begin, dict_end,
+ array_begin, array_end, object, object_begin, object_end,
+ xref, trailer, pdfrule;
+
+ const rule< ScannerT >& start() const { return pdfrule; }
+ };
+
+ #ifndef USE_ASSIGN_ACTOR
+ void push_back_action_uint( unsigned int i )
+ {
+ m_aUIntStack.push_back( i );
+ }
+ void assign_action_double( double d )
+ {
+ m_fDouble = d;
+ }
+ #endif
+
+ void parseError( const char* pMessage, iteratorT pLocation )
+ {
+ throw_( pLocation, pMessage );
+ }
+
+ rtl::OString iteratorToString( iteratorT first, iteratorT last ) const
+ {
+ rtl::OStringBuffer aStr( 32 );
+ while( first != last )
+ {
+ aStr.append( *first );
+ ++first;
+ }
+ return aStr.makeStringAndClear();
+ }
+
+ void haveFile( iteratorT pBegin, iteratorT /*pEnd*/ )
+ {
+ if( m_aObjectStack.empty() )
+ {
+ PDFFile* pFile = new PDFFile();
+ pFile->m_nMinor = m_aUIntStack.back();
+ m_aUIntStack.pop_back();
+ pFile->m_nMajor = m_aUIntStack.back();
+ m_aUIntStack.pop_back();
+ m_aObjectStack.push_back( pFile );
+ }
+ else
+ parseError( "found file header in unusual place", pBegin );
+ }
+
+ void pushComment( iteratorT first, iteratorT last )
+ {
+ // add a comment to the current stack element
+ PDFComment* pComment =
+ new PDFComment(iteratorToString(first,last));
+ if( m_aObjectStack.empty() )
+ m_aObjectStack.push_back( new PDFPart() );
+ PDFContainer* pContainer = dynamic_cast<PDFContainer*>(m_aObjectStack.back());
+ if( pContainer == NULL )
+ parseError( "comment without container", first );
+ pContainer->m_aSubElements.push_back( pComment );
+ }
+
+ void insertNewValue( PDFEntry* pNewValue, iteratorT pPos )
+ {
+ PDFContainer* pContainer = NULL;
+ const char* pMsg = NULL;
+ if( ! m_aObjectStack.empty() &&
+ (pContainer = dynamic_cast<PDFContainer*>(m_aObjectStack.back())) != NULL )
+ {
+ if( dynamic_cast<PDFDict*>(pContainer) == NULL &&
+ dynamic_cast<PDFArray*>(pContainer) == NULL )
+ {
+ PDFObject* pObj = dynamic_cast<PDFObject*>(pContainer);
+ if( pObj )
+ {
+ if( pObj->m_pObject == NULL )
+ pObj->m_pObject = pNewValue;
+ else
+ {
+ pMsg = "second value for object";
+ pContainer = NULL;
+ }
+ }
+ else if( dynamic_cast<PDFDict*>(pNewValue) )
+ {
+ PDFTrailer* pTrailer = dynamic_cast<PDFTrailer*>(pContainer);
+ if( pTrailer )
+ {
+ if( pTrailer->m_pDict == NULL )
+ pTrailer->m_pDict = dynamic_cast<PDFDict*>(pNewValue);
+ else
+ pContainer = NULL;
+ }
+ else
+ pContainer = NULL;
+ }
+ else
+ pContainer = NULL;
+ }
+ }
+ if( pContainer )
+ pContainer->m_aSubElements.push_back( pNewValue );
+ else
+ {
+ if( ! pMsg )
+ {
+ if( dynamic_cast<PDFContainer*>(pNewValue) )
+ pMsg = "array without container";
+ else
+ pMsg = "value without container";
+ }
+ delete pNewValue;
+ parseError( pMsg, pPos );
+ }
+ }
+
+ void pushName( iteratorT first, iteratorT last )
+ {
+ insertNewValue( new PDFName(iteratorToString(first,last)), first );
+ }
+
+ void pushDouble( iteratorT first, iteratorT /*last*/ )
+ {
+ insertNewValue( new PDFNumber(m_fDouble), first );
+ }
+
+ void pushString( iteratorT first, iteratorT last )
+ {
+ insertNewValue( new PDFString(iteratorToString(first,last)), first );
+ }
+
+ void pushBool( iteratorT first, iteratorT last )
+ {
+ insertNewValue( new PDFBool( (last-first == 4) ), first );
+ }
+
+ void pushNull( iteratorT first, iteratorT )
+ {
+ insertNewValue( new PDFNull(), first );
+ }
+
+
+ void beginObject( iteratorT first, iteratorT /*last*/ )
+ {
+ if( m_aObjectStack.empty() )
+ m_aObjectStack.push_back( new PDFPart() );
+
+ unsigned int nGeneration = m_aUIntStack.back();
+ m_aUIntStack.pop_back();
+ unsigned int nObject = m_aUIntStack.back();
+ m_aUIntStack.pop_back();
+
+ PDFObject* pObj = new PDFObject( nObject, nGeneration );
+ pObj->m_nOffset = first - m_aGlobalBegin;
+
+ PDFContainer* pContainer = dynamic_cast<PDFContainer*>(m_aObjectStack.back());
+ if( pContainer &&
+ ( dynamic_cast<PDFFile*>(pContainer) ||
+ dynamic_cast<PDFPart*>(pContainer) ) )
+ {
+ pContainer->m_aSubElements.push_back( pObj );
+ m_aObjectStack.push_back( pObj );
+ }
+ else
+ parseError( "object in wrong place", first );
+ }
+
+ void endObject( iteratorT first, iteratorT )
+ {
+ if( m_aObjectStack.empty() )
+ parseError( "endobj without obj", first );
+ else if( dynamic_cast<PDFObject*>(m_aObjectStack.back()) == NULL )
+ parseError( "spurious endobj", first );
+ else
+ m_aObjectStack.pop_back();
+ }
+
+ void pushObjectRef( iteratorT first, iteratorT )
+ {
+ unsigned int nGeneration = m_aUIntStack.back();
+ m_aUIntStack.pop_back();
+ unsigned int nObject = m_aUIntStack.back();
+ m_aUIntStack.pop_back();
+ insertNewValue( new PDFObjectRef(nObject,nGeneration), first );
+ }
+
+ void beginDict( iteratorT first, iteratorT )
+ {
+ PDFDict* pDict = new PDFDict();
+ pDict->m_nOffset = first - m_aGlobalBegin;
+
+ insertNewValue( pDict, first );
+ // will not come here if insertion fails (exception)
+ m_aObjectStack.push_back( pDict );
+ }
+ void endDict( iteratorT first, iteratorT )
+ {
+ PDFDict* pDict = NULL;
+ if( m_aObjectStack.empty() )
+ parseError( "dictionary end without begin", first );
+ else if( (pDict = dynamic_cast<PDFDict*>(m_aObjectStack.back())) == NULL )
+ parseError( "spurious dictionary end", first );
+ else
+ m_aObjectStack.pop_back();
+
+ PDFEntry* pOffender = pDict->buildMap();
+ if( pOffender )
+ {
+ StringEmitContext aCtx;
+ aCtx.write( "offending dictionary element: ", 30 );
+ pOffender->emit( aCtx );
+ m_aErrorString = aCtx.getString();
+ parseError( m_aErrorString.getStr(), first );
+ }
+ }
+
+ void beginArray( iteratorT first, iteratorT )
+ {
+ PDFArray* pArray = new PDFArray();
+ pArray->m_nOffset = first - m_aGlobalBegin;
+
+ insertNewValue( pArray, first );
+ // will not come here if insertion fails (exception)
+ m_aObjectStack.push_back( pArray );
+ }
+
+ void endArray( iteratorT first, iteratorT )
+ {
+ if( m_aObjectStack.empty() )
+ parseError( "array end without begin", first );
+ else if( dynamic_cast<PDFArray*>(m_aObjectStack.back()) == NULL )
+ parseError( "spurious array end", first );
+ else
+ m_aObjectStack.pop_back();
+ }
+
+ void emitStream( iteratorT first, iteratorT last )
+ {
+ if( m_aObjectStack.empty() )
+ parseError( "stream without object", first );
+ PDFObject* pObj = dynamic_cast<PDFObject*>(m_aObjectStack.back());
+ if( pObj && pObj->m_pObject )
+ {
+ if( pObj->m_pStream )
+ parseError( "multiple streams in object", first );
+
+ PDFDict* pDict = dynamic_cast<PDFDict*>(pObj->m_pObject);
+ if( pDict )
+ {
+ PDFStream* pStream = new PDFStream( first - m_aGlobalBegin, last - m_aGlobalBegin, pDict );
+
+ pObj->m_pStream = pStream;
+ pObj->m_aSubElements.push_back( pStream );
+ }
+ }
+ else
+ parseError( "stream without object", first );
+ }
+
+ void beginTrailer( iteratorT first, iteratorT )
+ {
+ if( m_aObjectStack.empty() )
+ m_aObjectStack.push_back( new PDFPart() );
+
+ PDFTrailer* pTrailer = new PDFTrailer();
+ pTrailer->m_nOffset = first - m_aGlobalBegin;
+
+ PDFContainer* pContainer = dynamic_cast<PDFContainer*>(m_aObjectStack.back());
+ if( pContainer &&
+ ( dynamic_cast<PDFFile*>(pContainer) ||
+ dynamic_cast<PDFPart*>(pContainer) ) )
+ {
+ pContainer->m_aSubElements.push_back( pTrailer );
+ m_aObjectStack.push_back( pTrailer );
+ }
+ else
+ parseError( "trailer in wrong place", first );
+ }
+
+ void endTrailer( iteratorT first, iteratorT )
+ {
+ if( m_aObjectStack.empty() )
+ parseError( "%%EOF without trailer", first );
+ else if( dynamic_cast<PDFTrailer*>(m_aObjectStack.back()) == NULL )
+ parseError( "spurious %%EOF", first );
+ else
+ m_aObjectStack.pop_back();
+ }
+};
+
+PDFEntry* PDFReader::read( const char* pBuffer, unsigned int nLen )
+{
+ PDFGrammar<const char*> aGrammar( pBuffer );
+
+ try
+ {
+ #if OSL_DEBUG_LEVEL > 1
+ boost::spirit::parse_info<const char*> aInfo =
+ #endif
+ boost::spirit::parse( pBuffer,
+ pBuffer+nLen,
+ aGrammar,
+ boost::spirit::space_p );
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "parseinfo: stop = %p (buff=%p, offset = %d), hit = %s, full = %s, length = %d\n",
+ aInfo.stop, pBuffer, aInfo.stop - pBuffer,
+ aInfo.hit ? "true" : "false",
+ aInfo.full ? "true" : "false",
+ (int)aInfo.length );
+ #endif
+ }
+ catch( parser_error<const char*, const char*>& rError )
+ {
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "parse error: %s at buffer pos %u\nobject stack:\n",
+ rError.descriptor, rError.where - pBuffer );
+ unsigned int nElem = aGrammar.m_aObjectStack.size();
+ for( unsigned int i = 0; i < nElem; i++ )
+ {
+ fprintf( stderr, " %s\n", typeid( *(aGrammar.m_aObjectStack[i]) ).name() );
+ }
+ #endif
+ }
+
+ PDFEntry* pRet = NULL;
+ unsigned int nEntries = aGrammar.m_aObjectStack.size();
+ if( nEntries == 1 )
+ {
+ pRet = aGrammar.m_aObjectStack.back();
+ aGrammar.m_aObjectStack.pop_back();
+ }
+ #if OSL_DEBUG_LEVEL > 1
+ else if( nEntries > 1 )
+ fprintf( stderr, "error got %u stack objects in parse\n", nEntries );
+ #endif
+
+ return pRet;
+}
+
+PDFEntry* PDFReader::read( const char* pFileName )
+{
+ #ifdef WIN32
+ /* #i106583#
+ since converting to boost 1.39 file_iterator does not work anymore on all Windows systems
+ C++ stdlib istream_iterator does not allow "-" apparently
+ using spirit 2.0 doesn't work in our environment with the MSC
+
+ So for the time being bite the bullet and read the whole file.
+ FIXME: give Spirit 2.x another try when we upgrade boost again.
+ */
+ PDFEntry* pRet = NULL;
+ FILE* fp = fopen( pFileName, "rb" );
+ if( fp )
+ {
+ fseek( fp, 0, SEEK_END );
+ unsigned int nLen = (unsigned int)ftell( fp );
+ fseek( fp, 0, SEEK_SET );
+ char* pBuf = (char*)rtl_allocateMemory( nLen );
+ if( pBuf )
+ {
+ fread( pBuf, 1, nLen, fp );
+ pRet = read( pBuf, nLen );
+ rtl_freeMemory( pBuf );
+ }
+ fclose( fp );
+ }
+ return pRet;
+ #else
+ file_iterator<> file_start( pFileName );
+ if( ! file_start )
+ return NULL;
+ file_iterator<> file_end = file_start.make_end();
+ PDFGrammar< file_iterator<> > aGrammar( file_start );
+
+ try
+ {
+ #if OSL_DEBUG_LEVEL > 1
+ boost::spirit::parse_info< file_iterator<> > aInfo =
+ #endif
+ boost::spirit::parse( file_start,
+ file_end,
+ aGrammar,
+ boost::spirit::space_p );
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "parseinfo: stop at offset = %d, hit = %s, full = %s, length = %d\n",
+ aInfo.stop - file_start,
+ aInfo.hit ? "true" : "false",
+ aInfo.full ? "true" : "false",
+ (int)aInfo.length );
+ #endif
+ }
+ catch( parser_error< const char*, file_iterator<> >& rError )
+ {
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "parse error: %s at buffer pos %u\nobject stack:\n",
+ rError.descriptor, rError.where - file_start );
+ unsigned int nElem = aGrammar.m_aObjectStack.size();
+ for( unsigned int i = 0; i < nElem; i++ )
+ {
+ fprintf( stderr, " %s\n", typeid( *(aGrammar.m_aObjectStack[i]) ).name() );
+ }
+ #endif
+ }
+
+ PDFEntry* pRet = NULL;
+ unsigned int nEntries = aGrammar.m_aObjectStack.size();
+ if( nEntries == 1 )
+ {
+ pRet = aGrammar.m_aObjectStack.back();
+ aGrammar.m_aObjectStack.pop_back();
+ }
+ #if OSL_DEBUG_LEVEL > 1
+ else if( nEntries > 1 )
+ {
+ fprintf( stderr, "error got %u stack objects in parse\n", nEntries );
+ for( unsigned int i = 0; i < nEntries; i++ )
+ {
+ fprintf( stderr, "%s\n", typeid(*aGrammar.m_aObjectStack[i]).name() );
+ PDFObject* pObj = dynamic_cast<PDFObject*>(aGrammar.m_aObjectStack[i]);
+ if( pObj )
+ fprintf( stderr, " -> object %d generation %d\n", pObj->m_nNumber, pObj->m_nGeneration );
+ else
+ fprintf( stderr, "(type %s)\n", typeid(*aGrammar.m_aObjectStack[i]).name() );
+ }
+ }
+ #endif
+ return pRet;
+ #endif // WIN32
+}
+
+#if defined __SUNPRO_CC
+#pragma enable_warn
+#elif defined _MSC_VER
+#pragma warning(pop)
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/sax/emitcontext.cxx b/sdext/source/pdfimport/sax/emitcontext.cxx
new file mode 100644
index 000000000000..4384de556233
--- /dev/null
+++ b/sdext/source/pdfimport/sax/emitcontext.cxx
@@ -0,0 +1,193 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "saxemitter.hxx"
+#include "emitcontext.hxx"
+#include "saxattrlist.hxx"
+
+#include <rtl/strbuf.hxx>
+#include <cppuhelper/exc_hlp.hxx>
+#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+
+#if OSL_DEBUG_LEVEL > 1
+#include <osl/file.hxx>
+static osl::File* pStream = NULL;
+static int nIndent = 0;
+#endif
+
+using namespace com::sun::star;
+
+namespace pdfi
+{
+
+SaxEmitter::SaxEmitter( const uno::Reference< xml::sax::XDocumentHandler >& xDocHdl ) :
+ m_xDocHdl( xDocHdl )
+{
+ OSL_PRECOND(m_xDocHdl.is(), "SaxEmitter(): invalid doc handler");
+ try
+ {
+ m_xDocHdl->startDocument();
+ }
+ catch( xml::sax::SAXException& )
+ {
+ }
+#if OSL_DEBUG_LEVEL > 1
+ static const char* pDir = getenv( "DBG_PDFIMPORT_DIR" );
+ if( pDir )
+ {
+ rtl::OUString aStr( rtl::OStringToOUString( pDir, RTL_TEXTENCODING_UTF8 ) );
+ rtl::OUString aFileURL;
+ osl_getFileURLFromSystemPath( aStr.pData, &aFileURL.pData );
+ rtl::OUStringBuffer aBuf( 256 );
+ aBuf.append( aFileURL );
+ aBuf.appendAscii( "/pdfimport.xml" );
+ pStream = new osl::File( aBuf.makeStringAndClear() );
+ if( pStream->open( osl_File_OpenFlag_Write | osl_File_OpenFlag_Create ) )
+ {
+ pStream->open( osl_File_OpenFlag_Write );
+ pStream->setSize( 0 );
+ }
+ }
+ else
+ pStream = 0;
+#endif
+}
+
+SaxEmitter::~SaxEmitter()
+{
+ try
+ {
+ m_xDocHdl->endDocument();
+ }
+ catch( xml::sax::SAXException& )
+ {
+ }
+#if OSL_DEBUG_LEVEL > 1
+ if( pStream )
+ {
+ pStream->close();
+ delete pStream;
+ pStream = 0;
+ }
+#endif
+}
+
+void SaxEmitter::beginTag( const char* pTag, const PropertyMap& rProperties )
+{
+ rtl::OUString aTag = rtl::OUString::createFromAscii( pTag );
+ uno::Reference< xml::sax::XAttributeList > xAttr(
+ new SaxAttrList( rProperties ) );
+ try
+ {
+ m_xDocHdl->startElement( aTag, xAttr );
+ }
+ catch( xml::sax::SAXException& )
+ {
+ }
+#if OSL_DEBUG_LEVEL > 1
+ if( pStream )
+ {
+ sal_uInt64 nWritten = 0;
+ for( int i = 0; i < nIndent; i++ )
+ pStream->write( " ", 4, nWritten );
+
+ rtl::OStringBuffer aBuf( 1024 );
+ aBuf.append( '<' );
+ aBuf.append( pTag );
+ for( PropertyMap::const_iterator it = rProperties.begin(); it != rProperties.end(); ++it )
+ {
+ aBuf.append( ' ' );
+ aBuf.append( rtl::OUStringToOString( it->first, RTL_TEXTENCODING_UTF8 ) );
+ aBuf.append( "=\"" );
+ aBuf.append( rtl::OUStringToOString( it->second, RTL_TEXTENCODING_UTF8 ) );
+ aBuf.append( "\"" );
+ }
+ aBuf.append( ">\n" );
+ pStream->write( aBuf.getStr(), aBuf.getLength(), nWritten );
+ nIndent++;
+ }
+#endif
+}
+
+void SaxEmitter::write( const rtl::OUString& rText )
+{
+ try
+ {
+ m_xDocHdl->characters( rText );
+ }
+ catch( xml::sax::SAXException& )
+ {
+ }
+#if OSL_DEBUG_LEVEL > 1
+ if( pStream )
+ {
+ rtl::OString aStr( rtl::OUStringToOString( rText, RTL_TEXTENCODING_UTF8 ) );
+ sal_uInt64 nWritten = 0;
+ pStream->write( aStr.getStr(), aStr.getLength(), nWritten );
+ }
+#endif
+}
+
+void SaxEmitter::endTag( const char* pTag )
+{
+ rtl::OUString aTag = rtl::OUString::createFromAscii( pTag );
+ try
+ {
+ m_xDocHdl->endElement( aTag );
+ }
+ catch( xml::sax::SAXException& )
+ {
+ }
+#if OSL_DEBUG_LEVEL > 1
+ if( pStream )
+ {
+ sal_uInt64 nWritten = 0;
+ for( int i = 0; i < nIndent; i++ )
+ pStream->write( " ", 4, nWritten );
+
+ rtl::OStringBuffer aBuf( 1024 );
+ aBuf.append( "</" );
+ aBuf.append( pTag );
+ aBuf.append( ">\n" );
+ pStream->write( aBuf.getStr(), aBuf.getLength(), nWritten );
+ nIndent--;
+ }
+#endif
+}
+
+XmlEmitterSharedPtr createSaxEmitter( const uno::Reference< xml::sax::XDocumentHandler >& xDocHdl )
+{
+ return XmlEmitterSharedPtr(new SaxEmitter(xDocHdl));
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/sax/emitcontext.hxx b/sdext/source/pdfimport/sax/emitcontext.hxx
new file mode 100644
index 000000000000..e617763636f3
--- /dev/null
+++ b/sdext/source/pdfimport/sax/emitcontext.hxx
@@ -0,0 +1,62 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_EMITCONTEXT_HXX
+#define INCLUDED_PDFI_EMITCONTEXT_HXX
+
+#include "xmlemitter.hxx"
+
+#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+
+#include <rtl/ustring.hxx>
+
+
+namespace pdfi
+{
+ class PDFIProcessor;
+ class StyleContainer;
+ class SaxEmitter : public XmlEmitter
+ {
+ private:
+ com::sun::star::uno::Reference<
+ com::sun::star::xml::sax::XDocumentHandler > m_xDocHdl;
+
+ public:
+ explicit SaxEmitter( const com::sun::star::uno::Reference<
+ com::sun::star::xml::sax::XDocumentHandler >& xDocHdl );
+ ~SaxEmitter();
+
+ virtual void beginTag( const char* pTag, const PropertyMap& rProperties );
+ virtual void write( const rtl::OUString& rString );
+ virtual void endTag( const char* pTag );
+ };
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/sax/makefile.mk b/sdext/source/pdfimport/sax/makefile.mk
new file mode 100644
index 000000000000..39c3c9f1e4d2
--- /dev/null
+++ b/sdext/source/pdfimport/sax/makefile.mk
@@ -0,0 +1,51 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sdext
+TARGET=pdfsax
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES=\
+ $(SLO)$/emitcontext.obj \
+ $(SLO)$/saxattrlist.obj
+
+# --- Targets ------------------------------------------------------
+
+.IF "$(ENABLE_PDFIMPORT)" == "NO"
+@all:
+ @echo "PDF Import extension disabled."
+.ENDIF
+
+.INCLUDE: target.mk
diff --git a/sdext/source/pdfimport/sax/saxattrlist.cxx b/sdext/source/pdfimport/sax/saxattrlist.cxx
new file mode 100644
index 000000000000..1143d122bb11
--- /dev/null
+++ b/sdext/source/pdfimport/sax/saxattrlist.cxx
@@ -0,0 +1,106 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "saxattrlist.hxx"
+
+namespace pdfi
+{
+
+SaxAttrList::SaxAttrList( const boost::unordered_map< rtl::OUString, rtl::OUString, rtl::OUStringHash >& rMap )
+{
+ m_aAttributes.reserve(rMap.size());
+ for( boost::unordered_map< rtl::OUString,
+ rtl::OUString,
+ rtl::OUStringHash >::const_iterator it = rMap.begin();
+ it != rMap.end(); ++it )
+ {
+ m_aIndexMap[ it->first ] = m_aAttributes.size();
+ m_aAttributes.push_back( AttrEntry( it->first, it->second ) );
+ }
+}
+
+SaxAttrList::SaxAttrList( const SaxAttrList& rClone ) :
+ cppu::WeakImplHelper2<com::sun::star::xml::sax::XAttributeList, com::sun::star::util::XCloneable>(rClone),
+ m_aAttributes( rClone.m_aAttributes ),
+ m_aIndexMap( rClone.m_aIndexMap )
+{
+}
+
+SaxAttrList::~SaxAttrList()
+{
+}
+
+namespace {
+ static const rtl::OUString& getCDATAString()
+ {
+ static rtl::OUString aStr( RTL_CONSTASCII_USTRINGPARAM( "CDATA" ) );
+ return aStr;
+ }
+}
+
+sal_Int16 SAL_CALL SaxAttrList::getLength() throw()
+{
+ return sal_Int16(m_aAttributes.size());
+}
+rtl::OUString SAL_CALL SaxAttrList::getNameByIndex( sal_Int16 i_nIndex ) throw()
+{
+ return (i_nIndex < sal_Int16(m_aAttributes.size())) ? m_aAttributes[i_nIndex].m_aName : rtl::OUString();
+}
+
+rtl::OUString SAL_CALL SaxAttrList::getTypeByIndex( sal_Int16 i_nIndex) throw()
+{
+ return (i_nIndex < sal_Int16(m_aAttributes.size())) ? getCDATAString() : rtl::OUString();
+}
+
+rtl::OUString SAL_CALL SaxAttrList::getTypeByName( const ::rtl::OUString& i_rName ) throw()
+{
+ return (m_aIndexMap.find( i_rName ) != m_aIndexMap.end()) ? getCDATAString() : rtl::OUString();
+}
+
+rtl::OUString SAL_CALL SaxAttrList::getValueByIndex( sal_Int16 i_nIndex ) throw()
+{
+ return (i_nIndex < sal_Int16(m_aAttributes.size())) ? m_aAttributes[i_nIndex].m_aValue : rtl::OUString();
+}
+
+rtl::OUString SAL_CALL SaxAttrList::getValueByName(const ::rtl::OUString& i_rName) throw()
+{
+ boost::unordered_map< rtl::OUString, size_t, rtl::OUStringHash >::const_iterator it = m_aIndexMap.find( i_rName );
+ return (it != m_aIndexMap.end()) ? m_aAttributes[it->second].m_aValue : rtl::OUString();
+}
+
+com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL SaxAttrList::createClone() throw()
+{
+ return new SaxAttrList( *this );
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/sax/saxattrlist.hxx b/sdext/source/pdfimport/sax/saxattrlist.hxx
new file mode 100644
index 000000000000..6a2279762925
--- /dev/null
+++ b/sdext/source/pdfimport/sax/saxattrlist.hxx
@@ -0,0 +1,79 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_SAXATTRLIST_HXX
+#define INCLUDED_PDFI_SAXATTRLIST_HXX
+
+#include <rtl/ustring.hxx>
+#include <vector>
+#include <boost/unordered_map.hpp>
+#include <cppuhelper/implbase2.hxx>
+
+#include <com/sun/star/util/XCloneable.hpp>
+#include <com/sun/star/xml/sax/XAttributeList.hpp>
+
+namespace pdfi
+{
+ class SaxAttrList : public ::cppu::WeakImplHelper2<
+ com::sun::star::xml::sax::XAttributeList,
+ com::sun::star::util::XCloneable
+ >
+ {
+ struct AttrEntry
+ {
+ rtl::OUString m_aName;
+ rtl::OUString m_aValue;
+
+ AttrEntry( const rtl::OUString& i_rName, const rtl::OUString& i_rValue )
+ : m_aName( i_rName ), m_aValue( i_rValue ) {}
+ };
+ std::vector< AttrEntry > m_aAttributes;
+ boost::unordered_map< rtl::OUString, size_t, rtl::OUStringHash > m_aIndexMap;
+
+ public:
+ SaxAttrList() {}
+ SaxAttrList( const boost::unordered_map< rtl::OUString, rtl::OUString, rtl::OUStringHash >& );
+ SaxAttrList( const SaxAttrList& );
+ virtual ~SaxAttrList();
+
+ // ::com::sun::star::xml::sax::XAttributeList
+ virtual sal_Int16 SAL_CALL getLength() throw();
+ virtual rtl::OUString SAL_CALL getNameByIndex(sal_Int16 i) throw();
+ virtual rtl::OUString SAL_CALL getTypeByIndex(sal_Int16 i) throw();
+ virtual rtl::OUString SAL_CALL getTypeByName(const ::rtl::OUString& aName) throw();
+ virtual rtl::OUString SAL_CALL getValueByIndex(sal_Int16 i) throw();
+ virtual rtl::OUString SAL_CALL getValueByName(const ::rtl::OUString& aName) throw();
+
+ // ::com::sun::star::util::XCloneable
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL createClone() throw();
+ };
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/services.cxx b/sdext/source/pdfimport/services.cxx
new file mode 100644
index 000000000000..b158e4433500
--- /dev/null
+++ b/sdext/source/pdfimport/services.cxx
@@ -0,0 +1,184 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pdfiadaptor.hxx"
+#include "filterdet.hxx"
+#include "treevisitorfactory.hxx"
+
+#include <cppuhelper/factory.hxx>
+#include <cppuhelper/implementationentry.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::registry;
+
+
+namespace
+{
+ static Reference< XInterface > Create_PDFIHybridAdaptor( const Reference< XComponentContext >& _rxContext )
+ {
+ return *(new pdfi::PDFIHybridAdaptor( _rxContext ));
+ }
+
+ static Reference< XInterface > Create_PDFIRawAdaptor_Writer( const Reference< XComponentContext >& _rxContext )
+ {
+ pdfi::PDFIRawAdaptor* pAdaptor = new pdfi::PDFIRawAdaptor( _rxContext );
+
+ pAdaptor->setTreeVisitorFactory(pdfi::createWriterTreeVisitorFactory());
+ pAdaptor->enableToplevelText(); // TEMP! TEMP!
+
+ return uno::Reference<uno::XInterface>(static_cast<xml::XImportFilter*>(pAdaptor));
+ }
+
+ static Reference< XInterface > Create_PDFIRawAdaptor_Draw( const Reference< XComponentContext >& _rxContext )
+ {
+ pdfi::PDFIRawAdaptor* pAdaptor = new pdfi::PDFIRawAdaptor( _rxContext );
+
+ pAdaptor->setTreeVisitorFactory(pdfi::createDrawTreeVisitorFactory());
+
+ return uno::Reference<uno::XInterface>(static_cast<xml::XImportFilter*>(pAdaptor));
+ }
+
+ static Reference< XInterface > Create_PDFIRawAdaptor_Impress( const Reference< XComponentContext >& _rxContext )
+ {
+ pdfi::PDFIRawAdaptor* pAdaptor = new pdfi::PDFIRawAdaptor( _rxContext );
+
+ pAdaptor->setTreeVisitorFactory(pdfi::createImpressTreeVisitorFactory());
+
+ return uno::Reference<uno::XInterface>(static_cast<xml::XImportFilter*>(pAdaptor));
+ }
+
+ static Reference< XInterface > Create_PDFDetector( const Reference< XComponentContext >& _rxContext )
+ {
+ return *(new pdfi::PDFDetector( _rxContext ) );
+ }
+}
+
+namespace
+{
+ typedef Reference< XInterface > (SAL_CALL * ComponentFactory)( const Reference< XComponentContext >& );
+
+ struct ComponentDescription
+ {
+ const sal_Char* pAsciiServiceName;
+ const sal_Char* pAsciiImplementationName;
+ ComponentFactory pFactory;
+
+ ComponentDescription()
+ :pAsciiServiceName( NULL )
+ ,pAsciiImplementationName( NULL )
+ ,pFactory( NULL )
+ {
+ }
+ ComponentDescription( const sal_Char* _pAsciiServiceName, const sal_Char* _pAsciiImplementationName, ComponentFactory _pFactory )
+ :pAsciiServiceName( _pAsciiServiceName )
+ ,pAsciiImplementationName( _pAsciiImplementationName )
+ ,pFactory( _pFactory )
+ {
+ }
+ };
+
+ static const ComponentDescription* lcl_getComponents()
+ {
+ static const ComponentDescription aDescriptions[] = {
+ ComponentDescription( "com.sun.star.document.ImportFilter", "com.sun.star.comp.documents.HybridPDFImport", Create_PDFIHybridAdaptor ),
+ ComponentDescription( "com.sun.star.document.ImportFilter", "com.sun.star.comp.documents.WriterPDFImport", Create_PDFIRawAdaptor_Writer ),
+ ComponentDescription( "com.sun.star.document.ImportFilter", "com.sun.star.comp.documents.DrawPDFImport", Create_PDFIRawAdaptor_Draw ),
+ ComponentDescription( "com.sun.star.document.ImportFilter", "com.sun.star.comp.documents.ImpressPDFImport", Create_PDFIRawAdaptor_Impress ),
+ ComponentDescription( "com.sun.star.document.ImportFilter", "com.sun.star.comp.documents.PDFDetector", Create_PDFDetector ),
+ ComponentDescription()
+ };
+ return aDescriptions;
+ }
+}
+
+extern "C" sal_Bool SAL_CALL component_writeInfo( void* /*pServiceManager*/, void* pRegistryKey )
+{
+ Reference< XRegistryKey > xRootKey( static_cast< XRegistryKey* >( pRegistryKey ) );
+
+ ::rtl::OUString sRootKey( "/", 1, RTL_TEXTENCODING_ASCII_US );
+
+ const ComponentDescription* pComponents = lcl_getComponents();
+ while ( pComponents->pAsciiServiceName != NULL )
+ {
+ ::rtl::OUString sMainKeyName( sRootKey );
+ sMainKeyName += ::rtl::OUString::createFromAscii( pComponents->pAsciiImplementationName );
+ sMainKeyName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES"));
+
+ try
+ {
+ Reference< XRegistryKey > xNewKey( xRootKey->createKey( sMainKeyName ) );
+ xNewKey->createKey( ::rtl::OUString::createFromAscii( pComponents->pAsciiServiceName ) );
+ }
+ catch( Exception& )
+ {
+ OSL_FAIL( "OModule::writeComponentInfos: something went wrong while creating the keys!" );
+ return sal_False;
+ }
+ ++pComponents;
+ }
+ return sal_True;
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory(
+ const sal_Char* pImplementationName, void* /*pServiceManager*/, void* /*pRegistryKey*/ )
+{
+ ::rtl::OUString sImplementationName( ::rtl::OUString::createFromAscii( pImplementationName ) );
+
+ Reference< XSingleComponentFactory > xFactory;
+
+ const ComponentDescription* pComponents = lcl_getComponents();
+ while ( pComponents->pAsciiServiceName != NULL )
+ {
+ if ( 0 == sImplementationName.compareToAscii( pComponents->pAsciiImplementationName ) )
+ {
+ Sequence< ::rtl::OUString > sServices(1);
+ sServices[0] = ::rtl::OUString::createFromAscii( pComponents->pAsciiServiceName );
+
+ xFactory = ::cppu::createSingleComponentFactory(
+ pComponents->pFactory,
+ sImplementationName,
+ sServices,
+ NULL
+ );
+ break;
+ }
+
+ ++pComponents;
+ }
+
+ // by definition, objects returned via this C API need to ber acquired once
+ xFactory->acquire();
+ return xFactory.get();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/test/export.map b/sdext/source/pdfimport/test/export.map
new file mode 100755
index 000000000000..7321bbca16ad
--- /dev/null
+++ b/sdext/source/pdfimport/test/export.map
@@ -0,0 +1,34 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+UDK_3_0_0 {
+ global:
+ registerAllTestFunction;
+
+ local:
+ *;
+};
diff --git a/sdext/source/pdfimport/test/makefile.mk b/sdext/source/pdfimport/test/makefile.mk
new file mode 100755
index 000000000000..b6f60d52e7fc
--- /dev/null
+++ b/sdext/source/pdfimport/test/makefile.mk
@@ -0,0 +1,161 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+PRJNAME=sdext
+TARGET=tests
+TARGETTYPE=CUI
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+# --- test lib ------------------------------------------------------
+
+.IF "$(ENABLE_PDFIMPORT)" == "NO"
+@all:
+ @echo "PDF Import extension disabled."
+.ENDIF
+
+CFLAGSCXX += $(CPPUNIT_CFLAGS)
+
+.IF "$(SYSTEM_ZLIB)" == "YES"
+CFLAGS+=-DSYSTEM_ZLIB
+.ENDIF
+
+SHL1OBJS= \
+ $(SLO)$/tests.obj
+
+SHL1LIBS=\
+ $(SLB)$/pdfmisc.lib \
+ $(SLB)$/pdfparse.lib \
+ $(SLB)$/pdfsax.lib \
+ $(SLB)$/pdfparsetree.lib \
+ $(SLB)$/pdfodf.lib \
+ $(SLB)$/xpdfwrapper.lib \
+ $(SLB)$/pdfimport.lib
+
+SHL1TARGET=$(TARGET)
+SHL1STDLIBS=\
+ $(BASEGFXLIB) \
+ $(UNOTOOLSLIB) \
+ $(CANVASTOOLSLIB) \
+ $(COMPHELPERLIB) \
+ $(CPPUHELPERLIB) \
+ $(CPPUNITLIB) \
+ $(ZLIB3RDLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+
+
+SHL1IMPLIB= i$(SHL1TARGET)
+DEF1NAME =$(SHL1TARGET)
+SHL1VERSIONMAP = export.map
+
+# --- pdf2xml binary ------------------------------------------------------
+
+TARGET2=pdf2xml
+
+APP1TARGET=$(TARGET2)
+APP1LIBSALCPPRT=
+APP1OBJS=$(SLO)$/pdf2xml.obj
+
+APP1LIBS=\
+ $(SLB)$/pdfmisc.lib \
+ $(SLB)$/pdfparse.lib \
+ $(SLB)$/pdfsax.lib \
+ $(SLB)$/pdfparsetree.lib \
+ $(SLB)$/pdfodf.lib \
+ $(SLB)$/xpdfwrapper.lib \
+ $(SLB)$/pdfimport.lib
+
+APP1STDLIBS=\
+ $(BASEGFXLIB) \
+ $(UNOTOOLSLIB) \
+ $(CANVASTOOLSLIB) \
+ $(COMPHELPERLIB) \
+ $(CPPUHELPERLIB) \
+ $(CPPUNITLIB) \
+ $(ZLIB3RDLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+
+# --- pdfunzip binary ------------------------------------------------------
+
+TARGET3=pdfunzip
+
+APP2TARGET=$(TARGET3)
+APP2LIBSALCPPRT=
+APP2OBJS=$(SLO)$/pdfunzip.obj
+
+APP2LIBS=\
+ $(SLB)$/pdfmisc.lib \
+ $(SLB)$/pdfparse.lib \
+ $(SLB)$/pdfsax.lib \
+ $(SLB)$/pdfparsetree.lib \
+ $(SLB)$/pdfodf.lib \
+ $(SLB)$/xpdfwrapper.lib \
+ $(SLB)$/pdfimport.lib
+
+APP2STDLIBS=\
+ $(BASEGFXLIB) \
+ $(UNOTOOLSLIB) \
+ $(CANVASTOOLSLIB) \
+ $(COMPHELPERLIB) \
+ $(CPPUHELPERLIB) \
+ $(CPPUNITLIB) \
+ $(ZLIB3RDLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+
+# --- Targets ------------------------------------------------------
+
+ .INCLUDE : target.mk
+ .INCLUDE : _cppunit.mk
+
+# --- Fake uno bootstrap & copy testfile ------------------------
+
+ $(BIN)$/pdfi_unittest_test.pdf : testinput.pdf
+ rm -f $@
+ $(GNUCOPY) testinput.pdf $@
+
+ $(BIN)$/pdfi_unittest_test.ini : makefile.mk
+ rm -f $@
+ @echo UNO_SERVICES= > $@
+ @echo UNO_TYPES=$(UNOUCRRDB:s/\/\\/) >> $@
+
+# --- Enable testshl2 execution in normal build ------------------------
+
+ $(MISC)$/pdfi_unittest_succeeded : $(SHL1TARGETN) $(BIN)$/pdfi_unittest_test.pdf $(BIN)$/pdfi_unittest_test.ini
+ rm -f $(BIN)$/pdfi_unittest_draw.xml
+ rm -f $(BIN)$/pdfi_unittest_writer.xml
+ @echo ----------------------------------------------------------
+ @echo - start unit test on library $(SHL1TARGETN)
+ @echo ----------------------------------------------------------
+ testshl2 -forward $(BIN)$/ $(SHL1TARGETN)
+ $(TOUCH) $@
diff --git a/sdext/source/pdfimport/test/outputwrap.hxx b/sdext/source/pdfimport/test/outputwrap.hxx
new file mode 100644
index 000000000000..0e9fbb0925a0
--- /dev/null
+++ b/sdext/source/pdfimport/test/outputwrap.hxx
@@ -0,0 +1,75 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+#ifndef INCLUDED_PDFIMPORT_OUTPUTWRAP_HXX
+#define INCLUDED_PDFIMPORT_OUTPUTWRAP_HXX
+
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase1.hxx>
+#include <com/sun/star/io/XOutputStream.hpp>
+#include <osl/file.hxx>
+
+namespace pdfi
+{
+
+typedef ::cppu::WeakComponentImplHelper1<
+ com::sun::star::io::XOutputStream > OutputWrapBase;
+
+ class OutputWrap : private cppu::BaseMutex, public OutputWrapBase
+ {
+ osl::File maFile;
+
+ public:
+
+ explicit OutputWrap( const rtl::OUString& rURL ) : OutputWrapBase(m_aMutex), maFile(rURL)
+ {
+ maFile.open(osl_File_OpenFlag_Create|osl_File_OpenFlag_Write);
+ }
+
+ virtual void SAL_CALL writeBytes( const com::sun::star::uno::Sequence< ::sal_Int8 >& aData ) throw (com::sun::star::io::NotConnectedException,com::sun::star::io::BufferSizeExceededException, com::sun::star::io::IOException, com::sun::star::uno::RuntimeException)
+
+ {
+ sal_uInt64 nBytesWritten(0);
+ maFile.write(aData.getConstArray(),aData.getLength(),nBytesWritten);
+ }
+
+ virtual void SAL_CALL flush() throw (com::sun::star::io::NotConnectedException, com::sun::star::io::BufferSizeExceededException, com::sun::star::io::IOException, com::sun::star::uno::RuntimeException)
+ {
+ }
+
+ virtual void SAL_CALL closeOutput() throw (com::sun::star::io::NotConnectedException, com::sun::star::io::BufferSizeExceededException, com::sun::star::io::IOException, com::sun::star::uno::RuntimeException)
+ {
+ maFile.close();
+ }
+ };
+}
+#endif
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/test/pdf2xml.cxx b/sdext/source/pdfimport/test/pdf2xml.cxx
new file mode 100644
index 000000000000..a8278ccf2267
--- /dev/null
+++ b/sdext/source/pdfimport/test/pdf2xml.cxx
@@ -0,0 +1,108 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "outputwrap.hxx"
+#include "contentsink.hxx"
+#include "pdfihelper.hxx"
+#include "wrapper.hxx"
+#include "pdfparse.hxx"
+#include "../pdfiadaptor.hxx"
+
+#include <sal/main.h>
+#include <osl/process.h>
+#include <rtl/bootstrap.hxx>
+
+#include <cppuhelper/bootstrap.hxx>
+#include <cppuhelper/servicefactory.hxx>
+#include <comphelper/processfactory.hxx>
+
+using namespace ::pdfi;
+using namespace ::com::sun::star;
+
+SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
+{
+ if( argc != 5 )
+ return 1;
+
+ ::rtl::OUString aBaseURL, aTmpURL, aSrcURL, aDstURL, aIniUrl;
+
+ TreeVisitorFactorySharedPtr pTreeFactory;
+ if( rtl_str_compare(argv[1], "-writer") == 0 )
+ pTreeFactory = createWriterTreeVisitorFactory();
+ else if( rtl_str_compare(argv[1], "-draw") == 0 )
+ pTreeFactory = createDrawTreeVisitorFactory();
+ else if( rtl_str_compare(argv[1], "-impress") == 0 )
+ pTreeFactory = createImpressTreeVisitorFactory();
+ else
+ return 1;
+
+ osl_getProcessWorkingDir(&aBaseURL.pData);
+ osl_getFileURLFromSystemPath( rtl::OUString::createFromAscii(argv[2]).pData,
+ &aTmpURL.pData );
+ osl_getAbsoluteFileURL(aBaseURL.pData,aTmpURL.pData,&aSrcURL.pData);
+
+ osl_getFileURLFromSystemPath( rtl::OUString::createFromAscii(argv[3]).pData,
+ &aTmpURL.pData );
+ osl_getAbsoluteFileURL(aBaseURL.pData,aTmpURL.pData,&aDstURL.pData);
+
+ osl_getFileURLFromSystemPath( rtl::OUString::createFromAscii(argv[4]).pData,
+ &aTmpURL.pData );
+ osl_getAbsoluteFileURL(aBaseURL.pData,aTmpURL.pData,&aIniUrl.pData);
+
+ // bootstrap UNO
+ uno::Reference< lang::XMultiServiceFactory > xFactory;
+ uno::Reference< uno::XComponentContext > xCtx;
+ try
+ {
+ xCtx = ::cppu::defaultBootstrap_InitialComponentContext(aIniUrl);
+ xFactory = uno::Reference< lang::XMultiServiceFactory >( xCtx->getServiceManager(),
+ uno::UNO_QUERY );
+ if( xFactory.is() )
+ ::comphelper::setProcessServiceFactory( xFactory );
+ }
+ catch( uno::Exception& )
+ {
+ }
+
+ if( !xFactory.is() )
+ {
+ OSL_TRACE( "Could not bootstrap UNO, installation must be in disorder. Exiting.\n" );
+ return 1;
+ }
+
+ pdfi::PDFIRawAdaptor aAdaptor( xCtx );
+ aAdaptor.setTreeVisitorFactory(pTreeFactory);
+ aAdaptor.odfConvert( aSrcURL, new OutputWrap(aDstURL), NULL );
+
+ return 0;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/test/pdfunzip.cxx b/sdext/source/pdfimport/test/pdfunzip.cxx
new file mode 100644
index 000000000000..e14ca69b6381
--- /dev/null
+++ b/sdext/source/pdfimport/test/pdfunzip.cxx
@@ -0,0 +1,544 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include <stdio.h>
+#include <sal/main.h>
+#include <osl/file.h>
+#include <osl/thread.h>
+#include <rtl/alloc.h>
+#include <rtl/ustring.hxx>
+#include <rtl/strbuf.hxx>
+
+#include "pdfparse.hxx"
+
+using namespace pdfparse;
+
+using ::rtl::OUString;
+using ::rtl::OString;
+using ::rtl::OStringBuffer;
+using ::rtl::OStringToOUString;
+
+void printHelp( const char* pExe )
+{
+ fprintf( stdout,
+ "USAGE: %s [-h,--help]\n"
+ " %s [-pw, --password <password>] <inputfile> [<outputfile>]\n"
+ " %s <-a, --extract-add-streams> [-pw, --password <password>] <inputfile> [<outputfile>]\n"
+ " %s <-f, --extract-fonts> [-pw, --password <password>] <inputfile> [<outputfile>]\n"
+ " %s <-o, --extract-objects> <o0>[:<g0>][,<o1>[:g1][,...]] [-pw, --password <password>] <inputfile> [<outputfile>]\n"
+ " -h, --help: show help\n"
+ " -a, --extract-add-streams: extracts additional streams to outputfile_object\n"
+ " and prints the mimetype found to stdout\n"
+ " -f, --extract-fonts: extracts fonts (currently only type1 and truetype are supported\n"
+ " -o, --extract-objects: extracts object streams, the syntax of the argument is comma separated\n"
+ " object numbers, where object number and generation number are separated by \':\'\n"
+ " an omitted generation number defaults to 0\n"
+ " -pw, --password: use password for decryption\n"
+ "\n"
+ "note: -f, -a, -o and normal unzip operation are mutually exclusive\n"
+ , pExe, pExe, pExe, pExe, pExe );
+}
+
+class FileEmitContext : public EmitContext
+{
+ oslFileHandle m_aHandle;
+ oslFileHandle m_aReadHandle;
+ unsigned int m_nReadLen;
+
+ void openReadFile( const char* pOrigName );
+
+ public:
+ FileEmitContext( const char* pFileName, const char* pOrigName, const PDFContainer* pTop );
+ virtual ~FileEmitContext();
+
+ virtual bool write( const void* pBuf, unsigned int nLen ) throw();
+ virtual unsigned int getCurPos() throw();
+ virtual bool copyOrigBytes( unsigned int nOrigOffset, unsigned int nLen ) throw();
+ virtual unsigned int readOrigBytes( unsigned int nOrigOffset, unsigned int nLen, void* pBuf ) throw();
+};
+
+FileEmitContext::FileEmitContext( const char* pFileName, const char* pOrigName, const PDFContainer* pTop )
+ : EmitContext( pTop ),
+ m_aHandle( NULL ),
+ m_aReadHandle( NULL ),
+ m_nReadLen( 0 )
+{
+ OUString aSysFile( OStringToOUString( OString( pFileName ), osl_getThreadTextEncoding() ) );
+ OUString aURL;
+ if( osl_getFileURLFromSystemPath( aSysFile.pData, &aURL.pData ) != osl_File_E_None )
+ {
+ fprintf( stderr, "filename conversion \"%s\" failed\n", pFileName );
+ return;
+ }
+
+ if( osl_openFile( aURL.pData, &m_aHandle, osl_File_OpenFlag_Write ) == osl_File_E_None )
+ {
+ if( osl_setFileSize( m_aHandle, 0 ) != osl_File_E_None )
+ {
+ fprintf( stderr, "could not truncate %s\n", pFileName );
+ osl_closeFile( m_aHandle );
+ m_aHandle = NULL;
+ }
+ }
+ else if( osl_openFile( aURL.pData, &m_aHandle,
+ osl_File_OpenFlag_Write |osl_File_OpenFlag_Create ) != osl_File_E_None )
+ {
+ fprintf( stderr, "could not open %s\n", pFileName );
+ return;
+ }
+ m_bDeflate = true;
+
+ openReadFile( pOrigName );
+}
+
+FileEmitContext::~FileEmitContext()
+{
+ if( m_aHandle )
+ osl_closeFile( m_aHandle );
+ if( m_aReadHandle )
+ osl_closeFile( m_aReadHandle );
+}
+
+void FileEmitContext::openReadFile( const char* pInFile )
+{
+ OUString aSysFile( OStringToOUString( OString( pInFile ), osl_getThreadTextEncoding() ) );
+ OUString aURL;
+ if( osl_getFileURLFromSystemPath( aSysFile.pData, &aURL.pData ) != osl_File_E_None )
+ {
+ fprintf( stderr, "filename conversion \"%s\" failed\n", pInFile );
+ return;
+ }
+
+ if( osl_openFile( aURL.pData, &m_aReadHandle, osl_File_OpenFlag_Read ) != osl_File_E_None )
+ {
+ fprintf( stderr, "could not open %s\n", pInFile );
+ return;
+ }
+
+ if( osl_setFilePos( m_aReadHandle, osl_Pos_End, 0 ) != osl_File_E_None )
+ {
+ fprintf( stderr, "could not seek to end of %s\n", pInFile );
+ osl_closeFile( m_aReadHandle );
+ return;
+ }
+
+ sal_uInt64 nFileSize = 0;
+ if( osl_getFilePos( m_aReadHandle, &nFileSize ) != osl_File_E_None )
+ {
+ fprintf( stderr, "could not get end pos of %s\n", pInFile );
+ osl_closeFile( m_aReadHandle );
+ return;
+ }
+
+ m_nReadLen = static_cast<unsigned int>(nFileSize);
+}
+
+bool FileEmitContext::write( const void* pBuf, unsigned int nLen ) throw()
+{
+ if( ! m_aHandle )
+ return false;
+
+ sal_uInt64 nWrite = static_cast<sal_uInt64>(nLen);
+ sal_uInt64 nWritten = 0;
+ return (osl_writeFile( m_aHandle, pBuf, nWrite, &nWritten ) == osl_File_E_None)
+ && nWrite == nWritten;
+}
+
+unsigned int FileEmitContext::getCurPos() throw()
+{
+ sal_uInt64 nFileSize = 0;
+ if( m_aHandle )
+ {
+ if( osl_getFilePos( m_aHandle, &nFileSize ) != osl_File_E_None )
+ nFileSize = 0;
+ }
+ return static_cast<unsigned int>(nFileSize);
+}
+
+bool FileEmitContext::copyOrigBytes( unsigned int nOrigOffset, unsigned int nLen ) throw()
+{
+ if( nOrigOffset + nLen > m_nReadLen )
+ return false;
+
+ if( osl_setFilePos( m_aReadHandle, osl_Pos_Absolut, nOrigOffset ) != osl_File_E_None )
+ {
+ fprintf( stderr, "could not seek to offset %u\n", nOrigOffset );
+ return false;
+ }
+ void* pBuf = rtl_allocateMemory( nLen );
+ if( ! pBuf )
+ return false;
+ sal_uInt64 nBytesRead = 0;
+ if( osl_readFile( m_aReadHandle, pBuf, nLen, &nBytesRead ) != osl_File_E_None
+ || nBytesRead != static_cast<sal_uInt64>(nLen) )
+ {
+ fprintf( stderr, "could not read %u bytes\n", nLen );
+ rtl_freeMemory( pBuf );
+ return false;
+ }
+ bool bRet = write( pBuf, nLen );
+ rtl_freeMemory( pBuf );
+ return bRet;
+}
+
+unsigned int FileEmitContext::readOrigBytes( unsigned int nOrigOffset, unsigned int nLen, void* pBuf ) throw()
+{
+ if( nOrigOffset + nLen > m_nReadLen )
+ return 0;
+
+ if( osl_setFilePos( m_aReadHandle, osl_Pos_Absolut, nOrigOffset ) != osl_File_E_None )
+ {
+ fprintf( stderr, "could not seek to offset %u\n", nOrigOffset );
+ return 0;
+ }
+ sal_uInt64 nBytesRead = 0;
+ if( osl_readFile( m_aReadHandle, pBuf, nLen, &nBytesRead ) != osl_File_E_None )
+ return 0;
+ return static_cast<unsigned int>(nBytesRead);
+}
+
+typedef int(*PDFFileHdl)(const char*, const char*, PDFFile*);
+
+int handleFile( const char* pInFile, const char* pOutFile, const char* pPassword, PDFFileHdl pHdl )
+{
+
+ PDFReader aParser;
+ int nRet = 0;
+ PDFEntry* pEntry = aParser.read( pInFile );
+ if( pEntry )
+ {
+ PDFFile* pPDFFile = dynamic_cast<PDFFile*>(pEntry);
+ if( pPDFFile )
+ {
+ fprintf( stdout, "have a %s PDF file\n", pPDFFile->isEncrypted() ? "encrypted" : "unencrypted" );
+ if( pPassword )
+ fprintf( stdout, "password %s\n",
+ pPDFFile->setupDecryptionData( pPassword ) ? "matches" : "does not match" );
+ nRet = pHdl( pInFile, pOutFile, pPDFFile );
+ }
+ else
+ nRet = 20;
+ delete pEntry;
+ }
+ return nRet;
+}
+
+int write_unzipFile( const char* pInFile, const char* pOutFile, PDFFile* pPDFFile )
+{
+ FileEmitContext aContext( pOutFile, pInFile, pPDFFile );
+ aContext.m_bDecrypt = pPDFFile->isEncrypted();
+ pPDFFile->emit(aContext);
+ return 0;
+}
+
+int write_addStreamArray( const char* pOutFile, PDFArray* pStreams, PDFFile* pPDFFile, const char* pInFile )
+{
+ int nRet = 0;
+ unsigned int nArrayElements = pStreams->m_aSubElements.size();
+ for( unsigned int i = 0; i < nArrayElements-1 && nRet == 0; i++ )
+ {
+ PDFName* pMimeType = dynamic_cast<PDFName*>(pStreams->m_aSubElements[i]);
+ PDFObjectRef* pStreamRef = dynamic_cast<PDFObjectRef*>(pStreams->m_aSubElements[i+1]);
+ if( ! pMimeType )
+ fprintf( stderr, "error: no mimetype element\n" );
+ if( ! pStreamRef )
+ fprintf( stderr, "error: no stream ref element\n" );
+ if( pMimeType && pStreamRef )
+ {
+ fprintf( stdout, "found stream %d %d with mimetype %s\n",
+ pStreamRef->m_nNumber, pStreamRef->m_nGeneration,
+ pMimeType->m_aName.getStr() );
+ PDFObject* pObject = pPDFFile->findObject( pStreamRef->m_nNumber, pStreamRef->m_nGeneration );
+ if( pObject )
+ {
+ rtl::OStringBuffer aOutStream( pOutFile );
+ aOutStream.append( "_stream_" );
+ aOutStream.append( sal_Int32(pStreamRef->m_nNumber) );
+ aOutStream.append( "_" );
+ aOutStream.append( sal_Int32(pStreamRef->m_nGeneration) );
+ FileEmitContext aContext( aOutStream.getStr(), pInFile, pPDFFile );
+ aContext.m_bDecrypt = pPDFFile->isEncrypted();
+ pObject->writeStream( aContext, pPDFFile );
+ }
+ else
+ {
+ fprintf( stderr, "object not found\n" );
+ nRet = 121;
+ }
+ }
+ else
+ nRet = 120;
+ }
+ return nRet;
+}
+
+int write_addStreams( const char* pInFile, const char* pOutFile, PDFFile* pPDFFile )
+{
+ // find all trailers
+ int nRet = 0;
+ unsigned int nElements = pPDFFile->m_aSubElements.size();
+ for( unsigned i = 0; i < nElements && nRet == 0; i++ )
+ {
+ PDFTrailer* pTrailer = dynamic_cast<PDFTrailer*>(pPDFFile->m_aSubElements[i]);
+ if( pTrailer && pTrailer->m_pDict )
+ {
+ // search for AdditionalStreams entry
+ boost::unordered_map<rtl::OString,PDFEntry*,rtl::OStringHash>::iterator add_stream;
+ add_stream = pTrailer->m_pDict->m_aMap.find( "AdditionalStreams" );
+ if( add_stream != pTrailer->m_pDict->m_aMap.end() )
+ {
+ PDFArray* pStreams = dynamic_cast<PDFArray*>(add_stream->second);
+ if( pStreams )
+ nRet = write_addStreamArray( pOutFile, pStreams, pPDFFile, pInFile );
+ }
+ }
+ }
+ return nRet;
+}
+
+int write_fonts( const char* i_pInFile, const char* i_pOutFile, PDFFile* i_pPDFFile )
+{
+ int nRet = 0;
+ unsigned int nElements = i_pPDFFile->m_aSubElements.size();
+ for( unsigned i = 0; i < nElements && nRet == 0; i++ )
+ {
+ // search FontDescriptors
+ PDFObject* pObj = dynamic_cast<PDFObject*>(i_pPDFFile->m_aSubElements[i]);
+ if( ! pObj )
+ continue;
+ PDFDict* pDict = dynamic_cast<PDFDict*>(pObj->m_pObject);
+ if( ! pDict )
+ continue;
+
+ boost::unordered_map<rtl::OString,PDFEntry*,rtl::OStringHash>::iterator map_it =
+ pDict->m_aMap.find( "Type" );
+ if( map_it == pDict->m_aMap.end() )
+ continue;
+
+ PDFName* pName = dynamic_cast<PDFName*>(map_it->second);
+ if( ! pName )
+ continue;
+ if( ! pName->m_aName.equals( "FontDescriptor" ) )
+ continue;
+
+ // the font name will be helpful, also there must be one in
+ // a font descriptor
+ map_it = pDict->m_aMap.find( "FontName" );
+ if( map_it == pDict->m_aMap.end() )
+ continue;
+ pName = dynamic_cast<PDFName*>(map_it->second);
+ if( ! pName )
+ continue;
+ rtl::OString aFontName( pName->m_aName );
+
+ PDFObjectRef* pStreamRef = 0;
+ const char* pFileType = NULL;
+ // we have a font descriptor, try for a type 1 font
+ map_it = pDict->m_aMap.find( "FontFile" );
+ if( map_it != pDict->m_aMap.end() )
+ {
+ pStreamRef = dynamic_cast<PDFObjectRef*>(map_it->second);
+ if( pStreamRef )
+ pFileType = "pfa";
+ }
+
+ // perhaps it's a truetype file ?
+ if( ! pStreamRef )
+ {
+ map_it = pDict->m_aMap.find( "FontFile2" );
+ if( map_it != pDict->m_aMap.end() )
+ {
+ pStreamRef = dynamic_cast<PDFObjectRef*>(map_it->second);
+ if( pStreamRef )
+ pFileType = "ttf";
+ }
+ }
+
+ if( ! pStreamRef )
+ continue;
+
+ PDFObject* pStream = i_pPDFFile->findObject( pStreamRef );
+ if( ! pStream )
+ continue;
+
+ rtl::OStringBuffer aOutStream( i_pOutFile );
+ aOutStream.append( "_font_" );
+ aOutStream.append( sal_Int32(pStreamRef->m_nNumber) );
+ aOutStream.append( "_" );
+ aOutStream.append( sal_Int32(pStreamRef->m_nGeneration) );
+ aOutStream.append( "_" );
+ aOutStream.append( aFontName );
+ if( pFileType )
+ {
+ aOutStream.append( "." );
+ aOutStream.append( pFileType );
+ }
+ FileEmitContext aContext( aOutStream.getStr(), i_pInFile, i_pPDFFile );
+ aContext.m_bDecrypt = i_pPDFFile->isEncrypted();
+ pStream->writeStream( aContext, i_pPDFFile );
+ }
+ return nRet;
+}
+
+std::vector< std::pair< sal_Int32, sal_Int32 > > s_aEmitObjects;
+
+int write_objects( const char* i_pInFile, const char* i_pOutFile, PDFFile* i_pPDFFile )
+{
+ int nRet = 0;
+ unsigned int nElements = s_aEmitObjects.size();
+ for( unsigned i = 0; i < nElements && nRet == 0; i++ )
+ {
+ sal_Int32 nObject = s_aEmitObjects[i].first;
+ sal_Int32 nGeneration = s_aEmitObjects[i].second;
+ PDFObject* pStream = i_pPDFFile->findObject( nObject, nGeneration );
+ if( ! pStream )
+ {
+ fprintf( stderr, "object %d %d not found !\n", (int)nObject, (int)nGeneration );
+ continue;
+ }
+
+ rtl::OStringBuffer aOutStream( i_pOutFile );
+ aOutStream.append( "_stream_" );
+ aOutStream.append( nObject );
+ aOutStream.append( "_" );
+ aOutStream.append( nGeneration );
+ FileEmitContext aContext( aOutStream.getStr(), i_pInFile, i_pPDFFile );
+ aContext.m_bDecrypt = i_pPDFFile->isEncrypted();
+ pStream->writeStream( aContext, i_pPDFFile );
+ }
+ return nRet;
+}
+
+SAL_IMPLEMENT_MAIN_WITH_ARGS( argc, argv )
+{
+ const char* pInFile = NULL;
+ const char* pOutFile = NULL;
+ const char* pPassword = NULL;
+ OStringBuffer aOutFile( 256 );
+ PDFFileHdl aHdl = write_unzipFile;
+
+ for( int nArg = 1; nArg < argc; nArg++ )
+ {
+ if( argv[nArg][0] == '-' )
+ {
+ if( ! rtl_str_compare( "-pw", argv[nArg] ) ||
+ ! rtl_str_compare( "--password" , argv[nArg] ) )
+ {
+ if( nArg == argc-1 )
+ {
+ fprintf( stderr, "no password given\n" );
+ return 1;
+ }
+ nArg++;
+ pPassword = argv[nArg];
+ }
+ else if( ! rtl_str_compare( "-h", argv[nArg] ) ||
+ ! rtl_str_compare( "--help", argv[nArg] ) )
+ {
+ printHelp( argv[0] );
+ return 0;
+ }
+ else if( ! rtl_str_compare( "-a", argv[nArg] ) ||
+ ! rtl_str_compare( "--extract-add-streams", argv[nArg] ) )
+ {
+ aHdl = write_addStreams;
+ }
+ else if( ! rtl_str_compare( "-f", argv[nArg] ) ||
+ ! rtl_str_compare( "--extract-fonts", argv[nArg] ) )
+ {
+ aHdl = write_fonts;
+ }
+ else if( ! rtl_str_compare( "-o", argv[nArg] ) ||
+ ! rtl_str_compare( "--extract-objects", argv[nArg] ) )
+ {
+ aHdl = write_objects;
+ nArg++;
+ if( nArg < argc )
+ {
+ rtl::OString aObjs( argv[nArg] );
+ sal_Int32 nIndex = 0;
+ while( nIndex != -1 )
+ {
+ rtl::OString aToken( aObjs.getToken( 0, ',', nIndex ) );
+ sal_Int32 nObject = 0;
+ sal_Int32 nGeneration = 0;
+ sal_Int32 nGenIndex = 0;
+ nObject = aToken.getToken( 0, ':', nGenIndex ).toInt32();
+ if( nGenIndex != -1 )
+ nGeneration = aToken.getToken( 0, ':', nGenIndex ).toInt32();
+ s_aEmitObjects.push_back( std::pair<sal_Int32,sal_Int32>(nObject,nGeneration) );
+ }
+ }
+ }
+ else
+ {
+ fprintf( stderr, "unrecognized option \"%s\"\n",
+ argv[nArg] );
+ printHelp( argv[0] );
+ return 1;
+ }
+ }
+ else if( pInFile == NULL )
+ pInFile = argv[nArg];
+ else if( pOutFile == NULL )
+ pOutFile = argv[nArg];
+ }
+ if( ! pInFile )
+ {
+ fprintf( stderr, "no input file given\n" );
+ return 10;
+ }
+ if( ! pOutFile )
+ {
+ OString aFile( pInFile );
+ if( aFile.getLength() > 0 )
+ {
+ if( aFile.getLength() > 4 )
+ {
+ if( aFile.matchIgnoreAsciiCase( OString( ".pdf" ), aFile.getLength()-4 ) )
+ aOutFile.append( pInFile, aFile.getLength() - 4 );
+ else
+ aOutFile.append( aFile );
+ }
+ aOutFile.append( "_unzip.pdf" );
+ pOutFile = aOutFile.getStr();
+ }
+ else
+ {
+ fprintf( stderr, "no output file given\n" );
+ return 11;
+ }
+ }
+
+ return handleFile( pInFile, pOutFile, pPassword, aHdl );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/test/testdocs/graphicformats.pdf b/sdext/source/pdfimport/test/testdocs/graphicformats.pdf
new file mode 100644
index 000000000000..f41c83f15642
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/graphicformats.pdf
Binary files differ
diff --git a/sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_draw.xml b/sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_draw.xml
new file mode 100644
index 000000000000..c362f0474529
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_draw.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="20mm" fo:margin-right="10mm" fo:margin-top="20mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:auto-grow-height="true" draw:auto-grow-width="true" draw:fill="none" draw:stroke="none" draw:textarea-horizontal-align="left" draw:textarea-vertical-align="top" fo:padding-bottom="0cm" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+<style:style style:family="graphic" style:name="graphic9" >
+<style:graphic-properties draw:fill-color="#ffffff" draw:fill="solid" draw:stroke="solid" svg:stroke-color="#000000" svg:stroke-width="3" >
+
+</style:graphic-properties>
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:drawing >
+<draw:page draw:master-page-name="master-page3" >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="8.95mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+M
+P
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 37.21mm )" draw:z-index="11" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 42.26mm )" draw:z-index="1" svg:height="4.23mm" svg:width="8.7mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+E
+M
+F
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 92.6mm 56.86mm )" draw:z-index="14" svg:height="-9.95mm" svg:width="25.25mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:path draw:style-name="graphic9" draw:transform="translate( 92.6mm 46.95mm )" draw:z-index="12" svg:d="m9260 5640h2476v-945h-2476v945z" svg:height="9.45mm" svg:viewBox="0 0 2476 945" svg:width="24.76mm" >
+</draw:path>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 61.45mm )" draw:z-index="2" svg:height="4.23mm" svg:width="6.83mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+G
+I
+F
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 76.72mm )" draw:z-index="15" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vyMlsxebqxserS8xvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vyEhrRUXpxUYpxUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRUXpRTYqRkcqxZZqRUYpxUYpy0vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vzc5vzc4vzs7vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vzc4vTc4vxUYpxUXqSBisy0vvxcaqxUXpxcZpS8wuz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vy8xuSKjqxoboxkaoxkaoxcYoRscpycnrzEyuT8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk6vx8hqxkbpzM1vyMlsxUXpxUYpyMltS1wvxkbqRUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vx8gqxcYoR8gqS8vtzk4vTZ3vSwttRkbpxUYpRUYpSMkrz8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vy0vuRUYoxUXpxkbqTEzvyFksxUXpxUYpyFksy1wvRcaqxUXpxUYpS8vtz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzM0uxcZpxUXpScnsz0+vz8/vz8/vz8/vz8/vzE0vxUYpxUYpx0frT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vx8gqSkqtSsuvRUYpxUYpxkbqTE0vyEjsRUYpxUXpyFksy8xvxcZpxUXpxUYpS8wuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vxkbpxUXpxmcqTs9vz8/vz8/vz8/vz8/vz8/vz8/vx8gqxUXpSaosz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUnsRUYpRUYpSkqtystuxUXpxUYpxkcqy9yvyEjsRUXqRUYpyMlsy1wvxebqxUXpxcZozU2vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vykqtRUYpRUXpyUntT8/vz8/vz8/vz8/vz8/vz8/vz8/vyMlrxcYozByvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vyMlry0vuxveqxUXpxUXpycqtystuxUYpxUXpxscqy9yvyMlsxUXpRUXpyFksy1wvRkbpycqtSkqsy0utz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vxsdqxTYqRUXqSkrtz8/vz8/vz8/vz8/vz8/vz8/vz8/vycnrxcZozs8vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vx8gqxUYpRsdqTEzvx0frxUXpxUXpSkquSsuvRcYqRUYpxkcqy8xvyMlsxUYpxUYpx8irzY3vycptxUYpRcYoS8wuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk6vxcZpxUXqRUXqSEjrz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUmrR8fpz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz08vx8irRUYpxUXpyEiry9yvy8xvR0erRUXpxUYpykruSstuxUYpxUXpxscqzM1vx8hrxUXpSaosystuxUYpxUXpxmcqS8vuTMzuz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk5vxUZpxTYqRMXqxZZqTc5vz8/vz8/vz8/vz8/vz8/vz8/vyqrsSsssT8/vz8/vz8/vzk7vy0utyUnsy0utz0+vz8/vz8/vz8/vz8/vz8/vz8/vz08vzY3vzU2vTc4vz8/vz8/vz8/vz8/vz8/vzEyuyUmryUnsTk7vz8/vz8/vz8/vz8/vz8/vzc4vysttyepsy0utz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vyEjrxUXpRUYpyFksy1wvxcZpR0fqy1wvRsdqxUYpxUXpScqtyksuxTYqRUYpSXotTs8vy0vuSkruRUYpxUXpxkcrS8xvx8irRcYoS0ttz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vxkbqRUXqROYqxUXpyEjrT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8xuRkbpxUYpRUXpxUYpS8vtT8/vz8/vz8/vz8/vz8/vz8/vyUlrRUYpRUYpR0epT09vz8/vz8/vz08vyMlrxUXpRUYpRUXpSkqsz8/vz8/vz8/vz09vybosRcYoRUXpRUYpRUYpSUnsT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vx8gqxUXpxUYpyMlsy1wvRebqxUXpxcYozEzvTc5vxsdqRUYpxUXqR8hsxZZqRUXpyMlsz8/vyksuRUYpxUXqRveqy9yvx8isRUXpxUYpSMlrT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyMlsRUXpxUXqRUXqRUYpycptT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8wuRUYpRUYpRUYpxTYqRUYpSsssz8/vz8/vz8/vz8/vz8/vzY3vxUYpRUXpxUYpSbosT8/vz8/vzs7vx8hqxUYpRTYqRUYpxUXpyRmsT8/vz8/vzk6vx1fqRkaoyaosx8hrxUXpxUXpxmcqT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vx8hrRUXpxUXpyFksy8xvxcZpxUYpxUYpzByvTs8vzk7vzY3vxscqxTYqRUXpxUYpxUXpy1wvSstuRUYpRUXpxkcqzEzvx8isRUXpxUYpyMlszs8vzk6vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzByvRUYpRTYqROYqxUXqRUYpywttT8/vz8/vz8/vz8/vz8/vz8/vzV2uxcYoS0vuyotvRUXqRUXqRUYpzM0uz8/vz8/vz8/vz8/vz8/vycqtRUYpxUXpxUYpzU2vz8/vz8/vyDhqRkcpzU2vxkdrRUXqRUXpykqtT8/vzs8vx0dpx8hqzk7vz8/vy1wvRTYqRTYqRmcqT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vx8irRUYpRUXpyEksS1wvRkaqxUXpxUYpy1wvSkquRebqxcaqSEjsS9yvx8hrRcZpRcapycqtSksuRUXpxUYpxscqy8xvx8isRUYpxUYpSPmtS9yvx0frRcZpxsdqS8vtz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx8gqxUXpxTYqRMXqxUYpxUZpzM0vT8/vz8/vz8/vz8/vzs8vxsdpSkqsT8/vyQmsxUXqRTYqRsdqz09vz8/vz8/vz8/vz8/vz8/vx0frRUXqRTYqRserT0+vz8/vykqsxcapTc4vzs8vxcaqRUXqRUYpS9yvz09vx8gqSEiqT09vz8/vz8/vyUntRUXpxUXqR0grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUnsRUYpxUXpyUnty0vvxcaqRUYpxcYqS1wvSXotxUXpxUYpxUXqRUYpx0grTs9vzc4vzk6vzM1vxUYpRTYqRkdrS8xvx8irxUYpxUXpyPmtS1wvRZZqRUXpxUXqRUXpxUYpTU2vT8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vxcZpxUXqRTYqRMXqxTYqRkbqTc5vz8/vz8/vz8/vykqsx0fpz0+vzk7vxcaqRUXpxUYpycptT8/vz8/vz8/vz8/vz8/vzU2vRUYpxTYqRUXpycptT8/vzc4vRgZoTM0vT8/vzEyuxUYpxUXqRUZpzk6vyMlrx1fqT09vz8/vz8/vz0+vxsdqxTYqRUXpycnsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vxcZpRTYqRsdrSotvRebqxUXpxcZpy8xvyXotxUYpxUXpx0frxsfrxUYpxUYpTc4vz8/vz8/vykqtRUXpxTYqSsuvSBisxUYpxUXpSPmtS1wvxZZqRUXpxcaqyBisxUYpxUXpSkrtT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0vuRUXpRTYqRTYqRUXqRUYpx8gqz0+vz8/vzk4uxobozY3vz8/vy0utxUYpxUXqRUYpTU1vz8/vz8/vz8/vz8/vz8/vybosRUXpxUXpxUZpzY3vz8/vycorSkprz8/vz8/vybosRUXpxUXqSEjsSstuRsdpzs7vz8/vz8/vz8/vzEyuRUYpxUXqRUXpTEzvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vxmcqRUXpxcYqRUXpxUYpxZZqS1wvScptxUYpxUYpx0gry9yvx0frxUYpxcZpTs7vz8/vz8/vystuRUYpxUYpxcaqRUXqRUXpyPmtS8xvxcaqRUXpxZZqS0vvyUntxUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyRmsRUXpxMXqxOYqxTYqRUYpykstz8/vzZ3uy8vtT8/vz0+vx8gqxTYqRUYpx0eqT0+vz8/vz8/vz8/vz8/vzs9vxmcqRTYqRUXpx0fqz0+vz8/vzk5vT09vz8/vz09vxsdqRTYqRTYqSMlsxscpzP1uz8/vz8/vz8/vz8/vyMkrxUXpxTYqRkcpzs9vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8vtxUYpRUYpRUXpxcZpy0vvSXotxUXpxUXpx0gry9yvx0frRUYpxUXpykstzE0vykqtS0uuTM1vxsdqRUXpxUXpxUXpSUnsy1wvxcaqRUXpxcaqS1wvSUntRUYpxUXpx1fqT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs9vxveqxUYpxUXqRTYqRUXqRcapzs7vz8/vz8/vz8/vzU2vxUYpRUXqRUXpysstT8/vz8/vz8/vz8/vz8/vystuRUXpxTYqRUXpykqsz8/vz8/vz8/vz8/vz8/vzM1vxUXpRUXqRTYqRUYpSkqtT8/vz8/vz8/vz8/vzk5vxcapRTYqRUXpyUnsT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzMzuyMlsSUnszEzvyXotRUXpxUYpx0gry8xvxsdrRUXpxUYpScquSksuRUYpRUXpRUYpRserS9yvycptyMlsS0vvS1wvRZZqRUXpxcaqS1wvyPmtRUYpRUXpx8hrTk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vxcaqRUXqRMXqxTYqRUYpy8wuT8/vz8/vz8/vycqtRUYpxUXqRUZpzc4vz8/vz8/vz8/vz8/vzs9vxsdqxTYqRUXqRUYpzU2vT8/vz8/vz8/vz8/vz8/vykrtxUXpxTYqRUXqRsdqTs8vz8/vz8/vz8/vz8/vycptRUYpxUXqRUYpTM0uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vyXotRUYpxUXpx0erTEzvxserRUYpxUYpycptTk6vxUYpxTYqRUYpxUYpxUXpxserTk7vz8/vy9yvxUYpxUXpxcZpy1wvyQmsxUXpxUXpx0fqzs8vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vybosRUXpxOYqxMXqxUYpynrsz8/vz8/vz09vxkcqxUYpxUXqSEjrz8/vz8/vz8/vz8/vz8/vyepsxUXpxUXqRTYqRserT8/vz8/vz8/vz8/vz8/vz0+vxveqxTYqRUXqRUYpy8wuT8/vz8/vz8/vz8/vzs8vxkbqRUXqRUYpx0frT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzM0uRcYoxUYpR0grzEzvx0erRUXpxUXpyUntT8/vzY3vxUYpxTYqSEktSXotxUXqRUXpx1fqTc4vx0grRUYpRcaqS0vvSUntRUYpxUXpx0fqzs6vz8/vz8/vz8/vz8/vz8/vzV2uy0usz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk5vxcaqRUXqRMXqxUXpybosT8/vz8/vzM0uxUXpxUXqRUYpS8wuz8/vz8/vz8/vz8/vzR1vRUYpRZZqRUXqRTYqSUnsz8/vz8/vz8/vz8/vz8/vzR1vRUYpxTYqRUXqRveqz0+vz8/vz8/vz8/vz8/vy8xuRUXpxTYqRUXpy0uuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utR8hqy8xvxserRUXpxUXpykquSkrtyEjrzk7vxveqxUXpxcaqSsuvykruRUXpRUYpxsdqy8xvR8hrS0vuyUntRUXpxUXpx0fqzk6vz8/vz8/vz8/vz8/vz8/vz8/vyMlrx0epz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyEjsRUXqRUXqRUYpykqsz8/vz8/vybosRUXpxTYqRkbpzk7vz8/vz8/vz8/vzs8vx1fqSQmsxcaqxUXqRUXpTM0vT8/vz0+vykprzc5vz8/vybosRUXpxUXqRUYpTEzvT8/vz8/vz8/vz8/vz8/vyEjrRUXpxTYqRUZpzk6vz8/vzU1uS0usz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vx0eqRUXpxUYpycquS8xvRUYpRUYpSMlszEzvxebqxUYpxcZpy0uvSXotRTYqRUYpx0frTc4vycqtRUXpRUYpRveqzk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vx0fqx8grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vycptRTYqRTYqRUXpy8wuT8/vzs9vxmcqRUYpxUXpyRmsT8/vz8/vz8/vz8/vyUmrSMlrystuxUXqRTYqRsdqTs9vz8/vzM0uRkaoTs7vz0+vxveqxUXpxUYpx0fqz8/vz8/vz8/vz8/vz8/vzc5vxUYpRUXqRUXpyMlrz8/vz0+vx8gpysrrz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysstRcYoyXotSstuy0vuyEjrxUXpxUYpyMlsy8xvxkbqRUXpxZZqS0uvSXotRUYpRUXpx0gry1wvRsdqR0eqTs7vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vxcapx8grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyXotRUXpxUXqRcapzk7vz8/vzM1vxUYpRTYqRUYpzR1vT8/vz8/vz8/vysstRsdqTs8vyEirxUYpxUXpyaosz8/vz09vx0epyxtsz8/vzU1vxUYpRTYqRUXpy0vuT8/vz8/vz8/vz8/vz8/vy0uuRUYpxUXqRUYpzEyuz8/vy0utx0dpz0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzR1vSkrtRUYoxkbpy1wvSEjsxUYpxUXpyMlsy8xvxebqxUXpxcYqS0uvScptxUXpxUXpxveqzEyuzk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRUYpRveqz8+vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx0erRUYpxUYpSsstz8/vz8/vysttxUXpxUXqRsdqz0+vz8/vz8/vyxtsxobozc4vzs9vxcapxUXqRUYpzEyuz8/vyUnsR0fpz8+vz8/vyXotRUXpxTYqRsdqz09vz8/vz8/vz8/vz8/vz8/vyEjrxUXqRTYqRebqz0+vzY3vxkaozEzvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxcYoxUXpxebqy8xvx8isRUYpxUXpyMlsy9yvxcaqRUYpxUYpy0vvycptxUYox0epzs7vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8wtxUYpxcZpzk6vz8/vz8/vz8/vz8/vz8/vz8/vzEyuRUYpRUXpx8irT8/vz8/vz8/vyMlsRUYpxUXqSEjsT8/vz8/vykrtRkZozP1uz8/vzU2vxUYpRTYqRTYqTY3vy0uuRgZoTc4vz8/vz0+vx0frRUYpxUXpycnsz8/vz8/vz8/vz8/vz8/vzs8vxcaqRUXqRTYqSPmtTk6vxscpyUnrz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysttxUYpRUXpxscqy1wvx8isRUXpxUYpyPmtS9yvxcaqRUYpxUYpysstysstTk5vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vynrsxUYpRUXpynrsz8/vz8/vz8/vz8/vz8/vzk7vxsdpxUXpR0fqzs6vz8/vz8/vz8/vx0grRUYpxUXqRkcqysstyHjqRkbpTR1vT8/vz8/vzEzvRUYpRTYqRTYqR0fqxcYozEyuT8/vz8/vzZ3vRUYpxUXpxUYpTM0vT8/vz8/vz8/vz8/vz8/vzZ3vRUYpxTYqRUXqRebqxkbpyMkrTc4vy0uszMztz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0ttxUYpRUYpxebqy8xvyEksRUXpxUXpyMlsy8xvxcaqRcYox1fqT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzZ3vRscpxUYpRUXpSaoszk5vzs9vzs7vy8wuxscpxUYoyUmrzs8vz8/vz8/vz8/vz8/vyEjrxUXpxTYqRUXpxUYox8gqTk5vz8/vz8/vz8/vzExuxUYpRUXpxUYpxcZpTExuT8/vz8/vz8/vykqrxUXpRUYpRscpz0+vz8/vz8/vz8/vz8/vz8/vzZ3vRUYpRUXqRTYqRUYpSMjrT09vzV2uy0ssTAwtT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0vuRUYpRUYpxkbqS1wvyEktRUYpxUXpSwuuzEzvx8irTs6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vy8wuyMkrxcapRsbpR0dpRscpRkbpSUmrzU1vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRsdqRkbpyEjry8xuz0+vz8/vz8/vz8/vz8/vzk5vxscpxcZpSMlsTc4vz8/vz8/vz8/vz8/vzP1uysstSsstTMzuT8/vz8/vz8/vz8/vz8/vz8/vz09vyEjrxcapxveqy0ttz0+vz8/vzs8vzV2uzk5uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysttxUYpRUXpxebqyksvRcaqRUXpyMksT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vzk4vTP1uzZ3uz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vzs6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8+vzs7vz8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxUYpxUXpxUYpxUXpxUYpSepsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxkapRUXpRUYpR1fqTk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzV2uy8vsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzZ3vTP1uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vyssty0vuT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8+vzs7vTc4uzU1uT0+vzM0uTk5vT8/vzP1uzZ3vT8/vz8/vzU2uTU1uT8+vzs7vTc4uzs7vz8/vzU0tzZ3uz8/vz8/vzk6vTU0tzs8vzk5uz8/vz8/vzk5vT8/vzk4uzU1uTs8vybosSanrTk5vT8/vzk6vzU1uT0+vz8/vzs6vzc4uzV2uz8+vzU1uTk5vT8/vz8+vzU1uTk5uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx/hpykqsScorSKjqyxtsx8gqTk7vysssysssz8/vykqrykqrzAwtTs8vx/hpycorTk6vykprywttSUmrS0vtzc4vyUlqzEytzk6vyUmrTc4vTc4vykpry0utyMlrTM0uTk6vyMlryMkrTU2vTM0uSUlrSwttScorTs9vx8gqSnrsyMlrSEjrSsssyMkqzs9vyUmqyxtszk5vT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vyDhqT09vzEyuSUnrz8/vyEjrTc4vzR1vSsstTs7vyEiqT8/vz8/vz09vyDhqTs8vzc4vSMkrT8/vzk7vyMkrTc4vyKjqy0utT09vy8wuSbosSnrszEyuTEyuyDhqTEytz8/vy8wuS0utz8/vyUnryMkrSsttyUmrTs7vyEiqz0+vy0uuSRmsT8/vyUmrzs7vycorybosTc4vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs9vyKjqz0+vzExtykprz8/vyKjqzc4vzMzuyssszs8vx/hpz08vz0+vzs8vyUlqz8+vzk5vSDhqT0+vzM0vSUnrz8/vzs7vyUlrSkrtT09vx0fpyDhqTs8vz8+vzk5vyEiqTR1vS8wuSsstT8/vyanrSkqszs8vz0+vz08vyKjqz8/vy0ttykqsz8/vyUlrTs7vz0+vzExtyDhqT8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vykorz8/vzMzty0usz8/vykorzk6vzU2vS8vtT8/vyqrsSanrSqrsTs7vysqrz09vz8/vykqsScoryUmrTZ3vTs7vysssScorTR1vT0+vycnryanrT8/vzV2uysrrycorzs7vzY3vyHjqTMzuTk4vSUlqyqrsTExtT09vykprz8/vy8wty0utT8/vysrrzs8vzExtSkpsS0utT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz08vz09vz8/vz8/vz8/vz8/vz8/vz08vz8+vz8/vz8/vz08vz09vz8/vz09vyUmrTP1uz8/vz09vz08vz8+vz8/vz8/vz09vz09vz8/vz8+vz08vz09vz8/vz8/vz8/vz8+vz8/vz8/vz8/vz8/vz09vz08vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vycorysssz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vw=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 81.77mm )" draw:z-index="3" svg:height="4.23mm" svg:width="7.04mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+J
+P
+G
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 97.04mm )" draw:z-index="16" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAoAGQDASIAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAAAAUGBwIDBAgB/8QAOBAAAQMCBAQFAgMGBwAAAAAAAQIDBAURAAYSIRMxQWEHFCIyUXGBFSORJDNCcqHhNENSU2KSwf/EABkBAAMBAQEAAAAAAAAAAAAAAAECAwQABf/EACMRAAICAgEEAwEBAAAAAAAAAAABAhEDIRIEIjFBE1GhcYH/2gAMAwEAAhEDEQA/APVOE+Z6/FoEEOyFJVIdJRHYKwkvLtcJBOw+pxqzhmWJlilGVKu48s6GGE+51fQD/wBOKPnVKRWapKXX3W1h3T5zWohmA3f0pRa5Lv0v1G91W1dP0zydz8E5z46Ma/WZFXzAa6JkmEr0NtkKP7A8ALoWm3tJB378jYjFu+H+cU19tcCooEatxk/nNdHB/uI+Qdv1HQjFNoiy1S2n4qPxCCFcN2pJSQy9HHuD4I9Kki25seXOwOMkTfLSY6qMuYmG08fw9BNpEshRtqI5NJ+Pr1Jt6GXBHLFRXolGTTs9KYQ5yzNFyvTEypKFvPOrDTDCPc6s9Ow7448k5uh12O3EcmxXaw03qkNsatN+RKSRuOXK4xEPH+DKMCk1SNq4cN1QWR/AVadKv1Tb7jHm4sN5VCei0pdtok9SlZwiUd6pkUfU02XlQuG4TpAuRxNW6rf8bYeZUqrlcy7BqTsfyy5Levh6tVtz178/vhPkvMsTO+WnQTw5PDLMppJ3QSLXHY72/tiIZyznUqBDp0XK7TCKchfk2HHRrW+WwEkoTy0g2TfqeW2+CsUpv46pg5JbLdwYRZnrSqDlOVVJCUeYZZBCL+kuGwA+mo/piOZfzdVpWVIUqTHjvVioKcMVlAKEJaTsXHDc2SOZPW4A3OJRxSlHkv4NyXgsDBir8g57qdSo0x+pNolzFyeBCYYSEF1Wm5HZKQQSo8h9sb6TmjMCPEtGX6qqA60touLTGQQGToKgNR3PTn89MO+nmm19A5osnBgwYgORfPeUGM1R4hXJfiyYalLZdZtfe1xv9BvfpijZMZ2JJEJUThPRypbMJ4ghkD3SJB5E2FwOXLpYK9NYiGfcprrkRUilOpiVZuxDgAAfAvZDnyNzz2xt6XqXj7JeCc4XtFReflUiLLy/TvLzqZJZEl5YuFzNaRqU0emm1gLX9JuDuMcMpiHHjJegyZLtNdaShyY7bjObf4ZtO+k9D27WCtCw21JTBlIchr8wEKj7h2E+T72upQeo/scW9kLIq4DyqjXm2TOKv3LZCmipJ2etbZZ7fPS9huyZI4Vy+/0jFOWjR4W5OegPiu1RlMWStrhRoaBYMNn/AFdSo99999+U3jPwMy0NSwjjwJSVtlK021AEpP8AUHHfKQtyM6hpQQ4pBCVHobbHEGyYK9lehN0efRXppjlQZfiPNlKwVE2VqUkp3PxjzJSeVubey6XHRXWXafIyh4vt0lhxaozyy0Rf94ytNxfuNvuMPkxmsx+MMeFHbSmk0BsJShI9IKOn/cgfROJdlvKslWaJeZ8wcL8SdGmPHbVqTGRa3u6qttcbbn5xHckZVzVTKhWkPCNCbnvanJ2sLd03UfywNgTq5q5fBxqlmjK5XtKv99k1FrRw+NNYdq9Qp2W6aCpC5AS4sclO7AIH8urfuexxJM8Tqdl7Ik5unlsy47KKUlaR6kkpB03/AJTqwsr2TqyM90iTQY8dFPhRwht59epKFXVqUU31KVdWrueZx1ZwyNOqn4DTYZSulsPF+a865+Y6tShqWR1JGr9bYS8dQjelsNPbDwoo6MuZNVWqr6XVsqfGr/KZ91h3Va5+w6YU+EShOrVWzXVVpbdnSPKRgrqpXqKR9AEj6A4nXiHTZ1RyVOp9FbSZDiUIS2FBN0hQuBfbkDhHkLK9XpEKlKqSIuuLqQiOk3DIWSVuE/xOG9vgDYczhfkUoSm3tv8AA8aaRYeDBgxiKhgwYMccLZVCpcupM1CTAjOzWraHlIBULct+3T4wywYMFtvydQYiy4tf81xUyXdHFKuHdvTp44sOV7cK/wB++DBgxdAez4mNW2WHGW+MkiM5wFIU3pDpLm6789i3a2173xm8xXUy30NPyOElKkodPDUCnhix07Hia7noLfbBgw3P3R1HG0/XZEh6Ih4tKbipdWUaXVNukFIbN7A3A187/wBMfVxK+lTzzHHbdfTHLgDiXAkAELCbkeq9j3F974MGGc6ekBKzbJh5iUpSm5j3tUABw0g2ZTpNrGxLmq+/LthzSBPTKnidqU0XAWVqIGxv6QkdBtv1+MGDCOVqg0NMGDBhAn//2Q==
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.09mm )" draw:z-index="4" svg:height="4.23mm" svg:width="8.94mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+P
+B
+M
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 117.36mm )" draw:z-index="17" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDQKMTAwIDQwCgAAHAAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAA/AAAAAAAAAAAAAAAAO8AAAH8AAAAAAAAAAb/AAAHHwAAAAAAAAAHe8AADgcAAAAAAAAAG73gABwHAAAAAAAAAD/e4AA8BgAAAAAAAABd79gAPAYAAAAAAAAA73e4ADwGAAAAAAAAAfe7fAA8BBgAAYBgAAPf/PcAPgA+B4fD8AAH+f3vAD8A/gePx/AAD3D73gAfgLwPG8xwAB/vf73gH4G8DzOY8AA9/4d74A/DPA8jsPAAP7+P/+AH4ngeZ+DgAD+7h+7wB/J4HgfB4AA+9ze94APweD4HweAADe/7f8AB8PA8D4PAAAPe/HeAAfjwfA8DwAADuP7vAAD48HwPA8AAAX73fgMA8eD4ngeAAAD3f5wDAPnhuJ4HmAAA17v4AwDxw3kcDzAAAD/f4AMA8cZ7PA8gAAA97uADAePMcjwPYAAAD/eAB4HD+H44D9AAAA9/gAPDg/B4eA+QAAADuQAA/gHAcCAOAAAAA/wAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAA+AAAAQAAAAAAAAAAACAAAAAAAADAAAAAAAAAAAFqJqScyrUAAAAAAAABKUSUpFqVgAAAAAAAAUlEkmJYpEAAAAAAAAEoZKZmSpSAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAIAAAAAA=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="5" svg:height="4.23mm" svg:width="8.25mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+P
+X
+C
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 137.68mm )" draw:z-index="18" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 142.73mm )" draw:z-index="6" svg:height="4.23mm" svg:width="9.16mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+P
+G
+M
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 158mm )" draw:z-index="19" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6YmJhubm59fX3Hx8f7+/v9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/eJiYlhYWFiYmJiYmJjY2O/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3c3NxiYmJiYmJ1dXVqampiYmJkZGS/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v79/f38/Pzz8/Pl5eXj4+Ps7Oz29vb8/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3w8PDh4eHk5ORiYmJiYmKOjo6/v79ubm5iYmJmZmbFxcX8/Pz+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v79/f329vbGxsaOjo5ubm5ra2tqampjY2N1dXWfn5/MzMz39/f+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3q6uqIiIhubm7W1taYmJhhYWFiYmKZmZnFxcVubm5iYmJjY2O+vr78/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f3a2tqDg4NiYmKDg4O/v7/h4eHe3t63t7dubm5jY2NiYmKUlJT6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f309PS/v79gYGBhYWFxcXHR0dGUlJRiYmJhYWGTk5PDw8Nubm5hYWFiYmK/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f3S0tJnZ2diYmKfn5/4+Pj8/Pz9/f39/f38/PzS0tJmZmZjY2OBgYH6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3w8PCDg4Oqqqq+vr5jY2NiYmJubm7Q0NCQkJBiYmJiYmKUlJTHx8doaGhiYmJiYmLExMT8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f3s7Oxvb29hYWFzc3Py8vL9/f3+/v7+/v79/f39/f36+vqEhIRiYmKkpKT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f38/Pyenp5hYWFiYmKrq6u3t7djY2NiYmJ0dHTMzMyOjo5iYmJjY2OYmJjGxsZubm5iYmJlZWXb29v8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f2tra1iYmJiYmKgoKD8/Pz+/v7+/v7+/v7+/v79/f38/PyZmZliYmLMzMz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6ampq9vb19fX1iYmJiYmKrq6u3t7diYmJiYmJ0dHTNzc2YmJhiYmJiYmKUlJTCwsJxcXGpqamtra28vLz8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/d4eHhiYmJiYmKurq78/Pz+/v7+/v7+/v7+/v7+/v78/Pyfn59mZmbw8PD9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3v7++FhYViYmJ4eHjR0dF+fn5iYmJhYWGrq6u9vb1lZWViYmJycnLKysqVlZViYmJiYmKLi4vc3NypqalhYWFiYmLExMT7+/v+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3q6upmZmZiYmJiYmKPj4/8/Pz+/v7+/v7+/v7+/v7+/v78/PyZmZmAgID8/Pz9/f3+/v79/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v79/f39/f39/f39/f3+/v7+/v79/f39/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v79/f39/f39/f38/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3x8fGNjY1iYmJiYmKMjIzLy8vHx8d9fX1iYmJjY2OysrK2trZlZWViYmJzc3PX19eJiYlhYWGioqK1tbVjY2NiYmJycnK/v7/Ozs78/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7o6OhnZ2diYmJiYmJoaGjk5OT9/f3+/v7+/v7+/v7+/v78/Pyurq6ysrL9/f39/f39/f3s7Oy8vLyhoaG6urr39/f9/f3+/v7+/v7+/v7+/v79/f3z8/Pc3Nzb29vj4+P9/f39/f39/f38/Pz8/PzJycmampqgoKDr6+v9/f3+/v7+/v79/f38/Pzh4eG3t7empqa8vLz09PT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6NjY1iYmJiYmKUlJTDw8NpaWl/f3/Dw8N6enpiYmJiYmKrq6uzs7NmZmZiYmKjo6Pv7++9vb2ysrJjY2NiYmJ1dXXJycmKiopiYmK6urr6+vr+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7z8/Nvb29iYmJhYWFiYmKQkJD5+fn8/Pz9/f3+/v7+/v79/f36+vr9/f39/f38/PzHx8dxcXFiYmJiYmJhYWG/v7/9/f3+/v7+/v7+/v79/f38/PyWlpZkZGRkZGR6enr39/f9/f39/f3y8vKWlpZiYmJiYmJhYWGpqan9/f3+/v79/f3y8vKjo6NiYmJiYmJiYmJiYmKhoaH9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6EhIRiYmJiYmKYmJjGxsZubm5iYmJjY2POzs7n5+d4eHhiYmJiYmKKiopoaGhhYWGYmJj6+vq2trZiYmJiYmJ6enrKysqMjIxiYmJiYmKWlpb9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PyWlpZiYmJiYmJiYmJiYmKrq6v8/Pz9/f3+/v79/f39/f3+/v7+/v78/PzCwsJiYmJjY2NiYmJjY2NiYmKysrL9/f39/f3+/v7+/v79/f3f399jY2NiYmJiYmKkpKT7+/v9/f3u7u6Hh4djY2NlZWViYmJiYmKZmZn8/Pz9/f3q6uqAgIBtbW2jo6OIiIhiYmJiYmJ0dHT39/f+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3z8/OHh4diYmJiYmKUlJTHx8doaGhiYmJlZWXJycnx8fHs7Oze3t53d3diYmJiYmJiYmJiYmLDw8O3t7diYmJhYWF0dHTR0dGMjIxiYmJiYmKXl5fw8PDq6ur09PT9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3KyspiYmJiYmJjY2NiYmJiYmK4uLj8/Pz+/v7+/v7+/v7+/v79/f3Y2NhiYmK/v7+3t7diYmJiYmJjY2PS0tL9/f3+/v7+/v7+/v78/Pyrq6thYWFiYmJkZGTb29v8/Pz5+fmIiIhycnLc3Nx4eHhiYmJiYmKtra38/Pzw8PB4eHiFhYXt7e36+vrBwcFiYmJiYmJycnL19fX+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3z8/ONjY1iYmJiYmKTk5PDw8Nubm5iYmJmZmbBwcGurq5wcHBqamqPj4/JycmKiopmZmZra2upqamysrJiYmJiYmJ0dHTKysqKiopiYmJiYmKcnJzLy8t/f39oaGh2dna9vb38/Pz+/v7+/v7+/v7+/v7+/v79/f329vaEhIRiYmJiYmJiYmJiYmJoaGjR0dH9/f3+/v7+/v79/f3y8vJ2dnapqan6+vqamppiYmJiYmJ3d3f09PT+/v7+/v7+/v7+/v78/PyAgIBiYmJiYmJ8fHz5+fn8/PysrKxra2vj4+Pw8PBqampiYmJiYmLKysr09PSEhISKior19fX9/f38/PyhoaFhYWFiYmKDg4P6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f2enp5iYmJiYmKamprExMRtbW1iYmJmZmbCwsKkpKRiYmJiYmJiYmJiYmKEhITy8vLi4uLq6urY2NhjY2NiYmJ3d3fKysqKiopiYmJjY2OdnZ3Dw8NqampiYmJiYmJiYmJiYmLa2tr9/f3+/v7+/v7+/v7+/v7+/v79/f3b29tnZ2diYmJiYmJiYmJiYmJwcHDl5eX9/f3+/v79/f2pqal/f3/5+fns7OxqampiYmJiYmKpqan8/Pz+/v7+/v7+/v79/f3b29tlZWViYmJiYmKoqKj8/Pzh4eFoaGjS0tL8/PzKyspiYmJiYmJoaGjq6uqWlpZ/f3/19fX9/f3+/v729vZ4eHhiYmJiYmKgoKD8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PxpaWliYmJ6enq3t7dubm5iYmJpaWnIyMijo6NiYmJiYmJ/f3+AgIBiYmJiYmLi4uL8/Pz8/Pyrq6tiYmJmZma6urqMjIxiYmJiYmKdnZ3CwsJqampiYmJra2uOjo5kZGRiYmKurq79/f3+/v7+/v7+/v7+/v7+/v7+/v78/Py9vb1iYmJiYmJiYmJiYmJjY2OEhIT4+Pj9/f3k5ORvb2/e3t78/Py9vb1iYmJiYmJiYmLX19f9/f3+/v7+/v7+/v78/PyhoaFiYmJiYmJlZWXd3d38/Pyjo6OkpKT8/Pz8/Pyjo6NiYmJhYWGQkJC2trZ2dnbs7Oz9/f3+/v79/f3Ly8tiYmJiYmJiYmLOzs79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v77+/tzc3NiYmJmZmZiYmJiYmJoaGjCwsKpqaliYmJiYmKEhITNzc2AgIBiYmJoaGjv7+/8/Pz8/Py4uLhiYmJjY2NqampiYmJhYWGdnZ3IyMhra2tjY2NnZ2fBwcGfn59iYmJiYmK/v7/9/f39/f3+/v7+/v7+/v79/f3+/v79/f38/PyampphYWFiYmJiYmJhYWFiYmK1tbX8/Pzc3Ny8vLz7+/v4+PiFhYViYmJiYmJ7e3v29vb9/f39/f3+/v79/f3y8vJ0dHRiYmJiYmJ9fX36+vr8/Pzk5OT29vb8/Pz19fV4eHhiYmJjY2OYmJh1dXXU1NT9/f3+/v7+/v78/PyTk5NiYmJjY2Nzc3Pz8/P9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3BwcFiYmJiYmJhYWFoaGjBwcGkpKRhYWFiYmKEhITMzMyAgIBiYmJiYmKysrLS0tKtra28vLzW1tZ5eXlhYWFiYmJiYmKenp7CwsJra2tiYmJra2vExMSfn59iYmJiYmKAgIDz8/P9/f3+/v79/f39/f3+/v7+/v7+/v79/f39/f3z8/N9fX1jY2NiYmJiYmJiYmJra2vt7e39/f39/f38/Pzc3NxjY2NiYmJiYmKzs7P9/f3+/v7+/v7+/v78/Py4uLhiYmJiYmJiYmKoqKj8/Pz9/f3+/v7+/v79/f3X19diYmJhYWFkZGRjY2Opqan8/Pz+/v7+/v78/Pzn5+dpaWliYmJiYmKcnJz8/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PzLy8uZmZmfn5/S0tKjo6NiYmJiYmKDg4PLy8t5eXlhYWFiYmKtra2ysrJjY2NiYmJiYmJ+fn7KysqoqKiXl5e+vr7Dw8NqampiYmJra2vDw8OdnZ1iYmJjY2OFhYXq6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3c3NxqampiYmJhYWFiYmJiYmLFxcX9/f3+/v78/PypqaliYmJiYmJmZmbk5OT9/f3+/v7+/v79/f3y8vJ3d3diYmJiYmJkZGTa2tr9/f3+/v7+/v7+/v78/Pyurq5iYmJiYmJiYmJ3d3fx8fH9/f3+/v7+/v79/f2oqKhiYmJiYmJiYmLS0tL9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f38/Pz39/ekpKRiYmJhYWF+fn7Ozs56enpjY2NiYmKpqanp6elmZmZiYmJlZWViYmJiYmJ7e3vs7Oz6+vrLy8tmZmZiYmJnZ2fExMScnJxiYmJhYWF/f3/u7u79/f3+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v79/f38/PyhoaFiYmJiYmJhYWFiYmKtra39/f39/f309PR1dXViYmJiYmKNjY38/Pz+/v7+/v7+/v78/PyoqKhiYmJiYmJiYmJ9fX35+fn+/v7+/v7+/v7+/v75+fl9fX1iYmJiYmJiYmLDw8P9/f3+/v7+/v79/f3w8PBwcHBiYmJiYmJ/f3/6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3S0tJiYmJiYmKEhITOzs5+fn5hYWFiYmKhoaH6+vre3t5iYmJiYmKTk5Ojo6NiYmJhYWF9fX3j4+ODg4NiYmJqamq/v7+fn59iYmJiYmJ+fn7p6en9/f3+/v7+/v7+/v7+/v7Z2dm6urr+/v7+/v7+/v7+/v7+/v7+/v79/f3m5uZqampiYmJhYWFiYmKjo6P8/Pz9/f3S0tJhYWFiYmJiYmLDw8P9/f3+/v7+/v79/f3W1tZnZ2dmZmZiYmJiYmKioqL8/Pz+/v79/f39/f39/f3U1NRjY2NiYmJiYmJ8fHz19fX+/v7+/v7+/v79/f3FxcViYmJiYmJjY2O6urr8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vq6urqGhobJycl7e3tiYmJiYmKtra2wsLCQkJDq6up4eHhiYmJra2u+vr6tra1iYmJiYmJ6enrFxcWIiIi9vb2goKBiYmJhYWF/f3/p6en9/f3+/v7+/v7+/v7+/v79/f2ZmZl6enr9/f3+/v7+/v7+/v7+/v79/f3+/v78/PyPj49iYmJjY2NiYmKrq6v8/Pz7+/ujo6NjY2NiYmJubm7u7u79/f3+/v79/f3y8vJ9fX2cnJxra2tiYmJiYmLS0tL8/Pz6+vqlpaXm5ub8/PyioqJiYmJiYmJjY2POzs79/f3+/v7+/v79/f38/PyNjY1iYmJiYmJnZ2fp6en8/PzW1ta5ubn9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3q6up7e3tiYmJiYmKqqqrHx8diYmJiYmKZmZnOzs5vb29jY2NmZma9vb2lpaViYmJiYmKAgIDh4eGrq6thYWFiYmJ9fX3q6ur9/f3+/v7+/v7+/v7+/v7+/v78/PyAgICCgoL8/Pz+/v7+/v7+/v7+/v7+/v7+/v78/PyoqKhiYmJiYmJgYGDFxcX8/Pz09PR1dXViYmJiYmKampr8/Pz8/Pz9/f38/PyZmZmZmZm4uLhiYmJjY2N2dnb19fX8/PzS0tJra2vv7+/5+fl7e3tiYmJiYmKAgID7+/v9/f3+/v7+/v79/f3l5eVmZmZhYWFiYmKVlZX7+/v4+PiAgICtra39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PyysrJkZGSioqK6urq/v7+Pj49iYmJiYmKZmZnIyMhvb29iYmJmZma8vLykpKRiYmJiYmKCgoLDw8N4eHh7e3vq6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v709PRqamqEhIT8/Pz9/f39/f3+/v7+/v7+/v7+/v78/Pyjo6NiYmJhYWFra2vs7Oz8/PzY2NhiYmJiYmJkZGTW1tb9/f39/f39/f2zs7N6enrx8fGNjY1iYmJiYmKjo6P6+vr19fV7e3u1tbX8/PzX19djY2NiYmJiYmK+vr79/f3+/v7+/v7+/v79/f28vLxiYmJiYmJiYmLMzMz8/Py6urp4eHj29vb+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PzW1tatra1iYmJubm7ExMSRkZFiYmJhYWGYmJjIyMhvb29iYmJlZWW8vLyoqKhiYmJiYmJ+fn7Kysrq6ur9/f3+/v7+/v7+/v7+/v7+/v79/f3+/v7c3NxiYmJ7e3v6+vr+/v7+/v7+/v7+/v7+/v7+/v74+Ph9fX1iYmJiYmK1tbX9/f38/Py1tbViYmJiYmJ4eHj4+Pj9/f38/Py1tbVubm7i4uLz8/Nra2tiYmJiYmLJycn7+/ufn5+AgID6+vr8/PylpaViYmJiYmJ1dXX09PT+/v7+/v7+/v7+/v78/PyNjY1iYmJiYmJycnL39/ff399qamrR0dH9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Py6urpiYmJiYmJubm7IyMiNjY1iYmJiYmKZmZnMzMxubm5iYmJlZWXCwsKoqKhiYmJ6enrr6+v8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3CwsJiYmJoaGjq6ur+/v7+/v7+/v79/f39/f39/f3JycliYmJiYmKJiYn5+fn9/f38/PyYmJhiYmJiYmKRkZH7+/v7+/uvr69oaGjU1NT8/Pzc3NxjY2NiYmJlZWXf39+9vb1mZmbh4eH9/f35+fl+fn5iYmJiYmKhoaH8/Pz+/v7+/v7+/v7+/v7w8PBra2tiYmJiYmKamprq6upycnKenp77+/v9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Py3t7diYmJiYmJzc3PFxcWNjY1iYmJiYmKcnJzLy8tubm5iYmJlZWW0tLSzs7Pm5ub9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f2tra1jY2NiYmKtra38/Pz9/f39/f39/f38/Pzt7e14eHhiYmKAgIDr6+v9/f3+/v76+vqEhIRiYmJiYmJzc3O0tLSMjIxubm7Y2Nj9/f39/f3Nzc1iYmJjY2NlZWV+fn5lZWXHx8f8/Pz9/f3d3d1lZWViYmJjY2PU1NT9/f3+/v7+/v7+/v7+/v7f399kZGRiYmJiYmJxcXFubm6Tk5Pg4OC6urrOzs7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pz8/Py3t7djY2NiYmJycnLIyMiSkpJiYmJiYmKWlpbKyspra2thYWGAgID6+vr9/f3+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7c3Nx2dnZiYmJhYWGjo6Pn5+f09PTv7+/FxcVzc3NiYmKZmZnv7+/9/f3+/v7+/v79/f2Pj49iYmJiYmJiYmJiYmKDg4Pk5OT9/f3+/v79/f3IyMhiYmJiYmJiYmJoaGjFxcX9/f39/f39/f2oqKhhYWFiYmJzc3P29vb+/v7+/v7+/v7+/v7+/v7c3NxiYmJiYmJiYmJiYmKPj4/09PTb29uysrLDw8P9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pz8/Py/v79iYmJiYmJubm7ExMSUlJRjY2NiYmK6urrT09OKioro6Oj8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u7BwcGTk5Nra2tvb294eHhzc3Nvb2+ZmZnW1tb8/Pz9/f3+/v7+/v7+/v79/f3X19d4eHhtbW2Ojo7FxcX4+Pj9/f3+/v7+/v79/f3m5uZ1dXVoaGiVlZXi4uL8/Pz+/v7+/v79/f3T09Ozs7OwsLDOzs79/f3+/v79/f3+/v7+/v7+/v719fWQkJBqamp6enq5ubn4+Pj9/f3v7+/Z2dnj4+P+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v79/f38/Py3t7diYmJiYmJwcHCzs7NqampiYmKUlJT7+/v6+vr9/f3+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f38/Pzz8/Ph4eHU1NTd3d3y8vL9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f329vby8vL8/Pz9/f39/f3+/v7+/v7+/v7+/v79/f3y8vLq6ur8/Pz9/f3+/v7+/v7+/v7+/v7+/v79/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vrt7e339/f9/f39/f3+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f38/Py4uLhjY2NiYmJiYmJiYmJhYWGmpqb9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v78/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f38/Py8vLxpaWliYmJiYmJ9fX3q6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v79/f39/f3b29u/v7/+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v79/f3e3t7U1NT9/f3+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pze3t6zs7O+vr7y8vL9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vrr6+vh4eHW1tb39/fU1NTm5ub9/f3W1tbc3Nz9/f3+/v7Z2dnW1tb5+fnr6+vg4ODv7+/9/f3U1NTc3Nz9/f39/f3o6OjS0tLv7+/l5eX9/f39/f3m5ub9/f3j4+PV1dXx8fGkpKScnJzo6Oj9/f3q6urW1tb4+Pj9/f3r6+vg4ODa2tr39/fU1NTo6Oj9/f34+PjU1NTm5ub9/f3+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/eHh4erq6ugoKCQkJC2traEhITt7e2xsbGzs7P8/PyoqKirq6vBwcHx8fGIiIifn5/r6+umpqa1tbWZmZm/v7/i4uKYmJjKysrr6+uamprf39/j4+Ojo6O9vb2UlJTS0tLr6+uZmZmTk5Pc3NzS0tKZmZm2tragoKD09PSFhYWurq6WlpaQkJC0tLSRkZHz8/Obm5u4uLjj4+P+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f309PSGhob29vbLy8uenp77+/uRkZHi4uLW1ta0tLTu7u6MjIz8/Pz8/Pz19fWHh4fz8/Pi4uKTk5P6+vrt7e2Tk5Pg4OCNjY28vLz19fXCwsKlpaWurq7KysrKysqIiIjIyMj7+/vDw8O6urr7+/ucnJyTk5O1tbWampru7u6IiIj39/e8vLydnZ36+vqbm5vu7u6goKCkpKTk5OT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f309PSOjo75+fnExMSpqan7+/uPj4/i4uLR0dGysrLw8PCEhITz8/P4+Pjx8fGVlZX5+fnj4+OIiIj4+PjU1NScnJz8/Pzt7e2YmJiwsLD19fV9fX2Hh4fx8fH7+/vm5uaIiIjX19fDw8OwsLD7+/ufn5+pqanz8/P39/fy8vKRkZH7+/u3t7epqan7+/uYmJjv7+/5+fnExMSIiIj4+Pj9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v719fWjo6P6+vrOzs65ubn8/PykpKTo6OjZ2dm/v7/8/Pyurq6cnJyurq7v7++rq6v39/f9/f2rq6uhoaGZmZng4ODu7u6zs7Ofn5/W1tb6+vqgoKCfn5/8/PzX19eurq6jo6Pu7u7f39+Ojo7Pz8/h4eGWlpavr6/ExMT19fWmpqb8/PzExMS6urr8/Pytra3w8PDFxcWoqKi5ubn9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f37+/v+/v77+/v7+/v+/v76+vr9/f39/f37+/v8/Pz9/f3x8fH09PT9/f37+/v+/v79/f39/f3x8fH4+Pj9/f37+/vv7+/29vb8/Pz09PSYmJjX19f9/f339/fv7+/6+vr9/f39/f319fX19fX+/v76+vrv7+/29vb9/f37+/v9/f36+vr6+vr+/v77+/v+/v7y8vLx8fH9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7t7e2hoaGwsLD9/f3+/v79/f3+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v4=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 163.05mm )" draw:z-index="7" svg:height="4.23mm" svg:width="8.45mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+P
+N
+G
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 178.32mm )" draw:z-index="20" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 183.37mm )" draw:z-index="8" svg:height="4.23mm" svg:width="8.45mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+P
+P
+M
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 199.84mm )" draw:z-index="21" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 204.89mm )" draw:z-index="9" svg:height="4.23mm" svg:width="8.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+T
+G
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 220.16mm )" draw:z-index="22" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 225.21mm )" draw:z-index="10" svg:height="4.23mm" svg:width="6.33mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+T
+I
+F
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 240.48mm )" draw:z-index="23" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+</draw:page>
+</office:drawing>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_impress.xml b/sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_impress.xml
new file mode 100644
index 000000000000..1957b7974ae8
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_impress.xml
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="20mm" fo:margin-right="10mm" fo:margin-top="20mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:auto-grow-height="true" draw:auto-grow-width="true" draw:fill="none" draw:stroke="none" draw:textarea-horizontal-align="left" draw:textarea-vertical-align="top" fo:padding-bottom="0cm" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+<style:style style:family="graphic" style:name="graphic9" >
+<style:graphic-properties draw:fill-color="#ffffff" draw:fill="solid" draw:stroke="solid" svg:stroke-color="#000000" svg:stroke-width="3" >
+
+</style:graphic-properties>
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:presentation >
+<draw:page draw:master-page-name="master-page3" >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="8.95mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+M
+P
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 37.21mm )" draw:z-index="11" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 42.26mm )" draw:z-index="1" svg:height="4.23mm" svg:width="8.7mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+E
+M
+F
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 92.6mm 56.86mm )" draw:z-index="14" svg:height="-9.95mm" svg:width="25.25mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:path draw:style-name="graphic9" draw:transform="translate( 92.6mm 46.95mm )" draw:z-index="12" svg:d="m9260 5640h2476v-945h-2476v945z" svg:height="9.45mm" svg:viewBox="0 0 2476 945" svg:width="24.76mm" >
+</draw:path>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 61.45mm )" draw:z-index="2" svg:height="4.23mm" svg:width="6.83mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+G
+I
+F
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 76.72mm )" draw:z-index="15" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vyMlsxebqxserS8xvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vyEhrRUXpxUYpxUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRUXpRTYqRkcqxZZqRUYpxUYpy0vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vzc5vzc4vzs7vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vzc4vTc4vxUYpxUXqSBisy0vvxcaqxUXpxcZpS8wuz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vy8xuSKjqxoboxkaoxkaoxcYoRscpycnrzEyuT8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk6vx8hqxkbpzM1vyMlsxUXpxUYpyMltS1wvxkbqRUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vx8gqxcYoR8gqS8vtzk4vTZ3vSwttRkbpxUYpRUYpSMkrz8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vy0vuRUYoxUXpxkbqTEzvyFksxUXpxUYpyFksy1wvRcaqxUXpxUYpS8vtz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzM0uxcZpxUXpScnsz0+vz8/vz8/vz8/vz8/vzE0vxUYpxUYpx0frT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vx8gqSkqtSsuvRUYpxUYpxkbqTE0vyEjsRUYpxUXpyFksy8xvxcZpxUXpxUYpS8wuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vxkbpxUXpxmcqTs9vz8/vz8/vz8/vz8/vz8/vz8/vx8gqxUXpSaosz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUnsRUYpRUYpSkqtystuxUXpxUYpxkcqy9yvyEjsRUXqRUYpyMlsy1wvxebqxUXpxcZozU2vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vykqtRUYpRUXpyUntT8/vz8/vz8/vz8/vz8/vz8/vz8/vyMlrxcYozByvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vyMlry0vuxveqxUXpxUXpycqtystuxUYpxUXpxscqy9yvyMlsxUXpRUXpyFksy1wvRkbpycqtSkqsy0utz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vxsdqxTYqRUXqSkrtz8/vz8/vz8/vz8/vz8/vz8/vz8/vycnrxcZozs8vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vx8gqxUYpRsdqTEzvx0frxUXpxUXpSkquSsuvRcYqRUYpxkcqy8xvyMlsxUYpxUYpx8irzY3vycptxUYpRcYoS8wuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk6vxcZpxUXqRUXqSEjrz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUmrR8fpz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz08vx8irRUYpxUXpyEiry9yvy8xvR0erRUXpxUYpykruSstuxUYpxUXpxscqzM1vx8hrxUXpSaosystuxUYpxUXpxmcqS8vuTMzuz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk5vxUZpxTYqRMXqxZZqTc5vz8/vz8/vz8/vz8/vz8/vz8/vyqrsSsssT8/vz8/vz8/vzk7vy0utyUnsy0utz0+vz8/vz8/vz8/vz8/vz8/vz8/vz08vzY3vzU2vTc4vz8/vz8/vz8/vz8/vz8/vzEyuyUmryUnsTk7vz8/vz8/vz8/vz8/vz8/vzc4vysttyepsy0utz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vyEjrxUXpRUYpyFksy1wvxcZpR0fqy1wvRsdqxUYpxUXpScqtyksuxTYqRUYpSXotTs8vy0vuSkruRUYpxUXpxkcrS8xvx8irRcYoS0ttz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vxkbqRUXqROYqxUXpyEjrT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8xuRkbpxUYpRUXpxUYpS8vtT8/vz8/vz8/vz8/vz8/vz8/vyUlrRUYpRUYpR0epT09vz8/vz8/vz08vyMlrxUXpRUYpRUXpSkqsz8/vz8/vz8/vz09vybosRcYoRUXpRUYpRUYpSUnsT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vx8gqxUXpxUYpyMlsy1wvRebqxUXpxcYozEzvTc5vxsdqRUYpxUXqR8hsxZZqRUXpyMlsz8/vyksuRUYpxUXqRveqy9yvx8isRUXpxUYpSMlrT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyMlsRUXpxUXqRUXqRUYpycptT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8wuRUYpRUYpRUYpxTYqRUYpSsssz8/vz8/vz8/vz8/vz8/vzY3vxUYpRUXpxUYpSbosT8/vz8/vzs7vx8hqxUYpRTYqRUYpxUXpyRmsT8/vz8/vzk6vx1fqRkaoyaosx8hrxUXpxUXpxmcqT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vx8hrRUXpxUXpyFksy8xvxcZpxUYpxUYpzByvTs8vzk7vzY3vxscqxTYqRUXpxUYpxUXpy1wvSstuRUYpRUXpxkcqzEzvx8isRUXpxUYpyMlszs8vzk6vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzByvRUYpRTYqROYqxUXqRUYpywttT8/vz8/vz8/vz8/vz8/vz8/vzV2uxcYoS0vuyotvRUXqRUXqRUYpzM0uz8/vz8/vz8/vz8/vz8/vycqtRUYpxUXpxUYpzU2vz8/vz8/vyDhqRkcpzU2vxkdrRUXqRUXpykqtT8/vzs8vx0dpx8hqzk7vz8/vy1wvRTYqRTYqRmcqT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vx8irRUYpRUXpyEksS1wvRkaqxUXpxUYpy1wvSkquRebqxcaqSEjsS9yvx8hrRcZpRcapycqtSksuRUXpxUYpxscqy8xvx8isRUYpxUYpSPmtS9yvx0frRcZpxsdqS8vtz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx8gqxUXpxTYqRMXqxUYpxUZpzM0vT8/vz8/vz8/vz8/vzs8vxsdpSkqsT8/vyQmsxUXqRTYqRsdqz09vz8/vz8/vz8/vz8/vz8/vx0frRUXqRTYqRserT0+vz8/vykqsxcapTc4vzs8vxcaqRUXqRUYpS9yvz09vx8gqSEiqT09vz8/vz8/vyUntRUXpxUXqR0grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUnsRUYpxUXpyUnty0vvxcaqRUYpxcYqS1wvSXotxUXpxUYpxUXqRUYpx0grTs9vzc4vzk6vzM1vxUYpRTYqRkdrS8xvx8irxUYpxUXpyPmtS1wvRZZqRUXpxUXqRUXpxUYpTU2vT8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vxcZpxUXqRTYqRMXqxTYqRkbqTc5vz8/vz8/vz8/vykqsx0fpz0+vzk7vxcaqRUXpxUYpycptT8/vz8/vz8/vz8/vz8/vzU2vRUYpxTYqRUXpycptT8/vzc4vRgZoTM0vT8/vzEyuxUYpxUXqRUZpzk6vyMlrx1fqT09vz8/vz8/vz0+vxsdqxTYqRUXpycnsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vxcZpRTYqRsdrSotvRebqxUXpxcZpy8xvyXotxUYpxUXpx0frxsfrxUYpxUYpTc4vz8/vz8/vykqtRUXpxTYqSsuvSBisxUYpxUXpSPmtS1wvxZZqRUXpxcaqyBisxUYpxUXpSkrtT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0vuRUXpRTYqRTYqRUXqRUYpx8gqz0+vz8/vzk4uxobozY3vz8/vy0utxUYpxUXqRUYpTU1vz8/vz8/vz8/vz8/vz8/vybosRUXpxUXpxUZpzY3vz8/vycorSkprz8/vz8/vybosRUXpxUXqSEjsSstuRsdpzs7vz8/vz8/vz8/vzEyuRUYpxUXqRUXpTEzvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vxmcqRUXpxcYqRUXpxUYpxZZqS1wvScptxUYpxUYpx0gry9yvx0frxUYpxcZpTs7vz8/vz8/vystuRUYpxUYpxcaqRUXqRUXpyPmtS8xvxcaqRUXpxZZqS0vvyUntxUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyRmsRUXpxMXqxOYqxTYqRUYpykstz8/vzZ3uy8vtT8/vz0+vx8gqxTYqRUYpx0eqT0+vz8/vz8/vz8/vz8/vzs9vxmcqRTYqRUXpx0fqz0+vz8/vzk5vT09vz8/vz09vxsdqRTYqRTYqSMlsxscpzP1uz8/vz8/vz8/vz8/vyMkrxUXpxTYqRkcpzs9vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8vtxUYpRUYpRUXpxcZpy0vvSXotxUXpxUXpx0gry9yvx0frRUYpxUXpykstzE0vykqtS0uuTM1vxsdqRUXpxUXpxUXpSUnsy1wvxcaqRUXpxcaqS1wvSUntRUYpxUXpx1fqT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs9vxveqxUYpxUXqRTYqRUXqRcapzs7vz8/vz8/vz8/vzU2vxUYpRUXqRUXpysstT8/vz8/vz8/vz8/vz8/vystuRUXpxTYqRUXpykqsz8/vz8/vz8/vz8/vz8/vzM1vxUXpRUXqRTYqRUYpSkqtT8/vz8/vz8/vz8/vzk5vxcapRTYqRUXpyUnsT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzMzuyMlsSUnszEzvyXotRUXpxUYpx0gry8xvxsdrRUXpxUYpScquSksuRUYpRUXpRUYpRserS9yvycptyMlsS0vvS1wvRZZqRUXpxcaqS1wvyPmtRUYpRUXpx8hrTk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vxcaqRUXqRMXqxTYqRUYpy8wuT8/vz8/vz8/vycqtRUYpxUXqRUZpzc4vz8/vz8/vz8/vz8/vzs9vxsdqxTYqRUXqRUYpzU2vT8/vz8/vz8/vz8/vz8/vykrtxUXpxTYqRUXqRsdqTs8vz8/vz8/vz8/vz8/vycptRUYpxUXqRUYpTM0uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vyXotRUYpxUXpx0erTEzvxserRUYpxUYpycptTk6vxUYpxTYqRUYpxUYpxUXpxserTk7vz8/vy9yvxUYpxUXpxcZpy1wvyQmsxUXpxUXpx0fqzs8vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vybosRUXpxOYqxMXqxUYpynrsz8/vz8/vz09vxkcqxUYpxUXqSEjrz8/vz8/vz8/vz8/vz8/vyepsxUXpxUXqRTYqRserT8/vz8/vz8/vz8/vz8/vz0+vxveqxTYqRUXqRUYpy8wuT8/vz8/vz8/vz8/vzs8vxkbqRUXqRUYpx0frT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzM0uRcYoxUYpR0grzEzvx0erRUXpxUXpyUntT8/vzY3vxUYpxTYqSEktSXotxUXqRUXpx1fqTc4vx0grRUYpRcaqS0vvSUntRUYpxUXpx0fqzs6vz8/vz8/vz8/vz8/vz8/vzV2uy0usz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk5vxcaqRUXqRMXqxUXpybosT8/vz8/vzM0uxUXpxUXqRUYpS8wuz8/vz8/vz8/vz8/vzR1vRUYpRZZqRUXqRTYqSUnsz8/vz8/vz8/vz8/vz8/vzR1vRUYpxTYqRUXqRveqz0+vz8/vz8/vz8/vz8/vy8xuRUXpxTYqRUXpy0uuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utR8hqy8xvxserRUXpxUXpykquSkrtyEjrzk7vxveqxUXpxcaqSsuvykruRUXpRUYpxsdqy8xvR8hrS0vuyUntRUXpxUXpx0fqzk6vz8/vz8/vz8/vz8/vz8/vz8/vyMlrx0epz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyEjsRUXqRUXqRUYpykqsz8/vz8/vybosRUXpxTYqRkbpzk7vz8/vz8/vz8/vzs8vx1fqSQmsxcaqxUXqRUXpTM0vT8/vz0+vykprzc5vz8/vybosRUXpxUXqRUYpTEzvT8/vz8/vz8/vz8/vz8/vyEjrRUXpxTYqRUZpzk6vz8/vzU1uS0usz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vx0eqRUXpxUYpycquS8xvRUYpRUYpSMlszEzvxebqxUYpxcZpy0uvSXotRTYqRUYpx0frTc4vycqtRUXpRUYpRveqzk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vx0fqx8grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vycptRTYqRTYqRUXpy8wuT8/vzs9vxmcqRUYpxUXpyRmsT8/vz8/vz8/vz8/vyUmrSMlrystuxUXqRTYqRsdqTs9vz8/vzM0uRkaoTs7vz0+vxveqxUXpxUYpx0fqz8/vz8/vz8/vz8/vz8/vzc5vxUYpRUXqRUXpyMlrz8/vz0+vx8gpysrrz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysstRcYoyXotSstuy0vuyEjrxUXpxUYpyMlsy8xvxkbqRUXpxZZqS0uvSXotRUYpRUXpx0gry1wvRsdqR0eqTs7vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vxcapx8grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyXotRUXpxUXqRcapzk7vz8/vzM1vxUYpRTYqRUYpzR1vT8/vz8/vz8/vysstRsdqTs8vyEirxUYpxUXpyaosz8/vz09vx0epyxtsz8/vzU1vxUYpRTYqRUXpy0vuT8/vz8/vz8/vz8/vz8/vy0uuRUYpxUXqRUYpzEyuz8/vy0utx0dpz0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzR1vSkrtRUYoxkbpy1wvSEjsxUYpxUXpyMlsy8xvxebqxUXpxcYqS0uvScptxUXpxUXpxveqzEyuzk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRUYpRveqz8+vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx0erRUYpxUYpSsstz8/vz8/vysttxUXpxUXqRsdqz0+vz8/vz8/vyxtsxobozc4vzs9vxcapxUXqRUYpzEyuz8/vyUnsR0fpz8+vz8/vyXotRUXpxTYqRsdqz09vz8/vz8/vz8/vz8/vz8/vyEjrxUXqRTYqRebqz0+vzY3vxkaozEzvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxcYoxUXpxebqy8xvx8isRUYpxUXpyMlsy9yvxcaqRUYpxUYpy0vvycptxUYox0epzs7vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8wtxUYpxcZpzk6vz8/vz8/vz8/vz8/vz8/vz8/vzEyuRUYpRUXpx8irT8/vz8/vz8/vyMlsRUYpxUXqSEjsT8/vz8/vykrtRkZozP1uz8/vzU2vxUYpRTYqRTYqTY3vy0uuRgZoTc4vz8/vz0+vx0frRUYpxUXpycnsz8/vz8/vz8/vz8/vz8/vzs8vxcaqRUXqRTYqSPmtTk6vxscpyUnrz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysttxUYpRUXpxscqy1wvx8isRUXpxUYpyPmtS9yvxcaqRUYpxUYpysstysstTk5vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vynrsxUYpRUXpynrsz8/vz8/vz8/vz8/vz8/vzk7vxsdpxUXpR0fqzs6vz8/vz8/vz8/vx0grRUYpxUXqRkcqysstyHjqRkbpTR1vT8/vz8/vzEzvRUYpRTYqRTYqR0fqxcYozEyuT8/vz8/vzZ3vRUYpxUXpxUYpTM0vT8/vz8/vz8/vz8/vz8/vzZ3vRUYpxTYqRUXqRebqxkbpyMkrTc4vy0uszMztz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0ttxUYpRUYpxebqy8xvyEksRUXpxUXpyMlsy8xvxcaqRcYox1fqT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzZ3vRscpxUYpRUXpSaoszk5vzs9vzs7vy8wuxscpxUYoyUmrzs8vz8/vz8/vz8/vz8/vyEjrxUXpxTYqRUXpxUYox8gqTk5vz8/vz8/vz8/vzExuxUYpRUXpxUYpxcZpTExuT8/vz8/vz8/vykqrxUXpRUYpRscpz0+vz8/vz8/vz8/vz8/vz8/vzZ3vRUYpRUXqRTYqRUYpSMjrT09vzV2uy0ssTAwtT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0vuRUYpRUYpxkbqS1wvyEktRUYpxUXpSwuuzEzvx8irTs6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vy8wuyMkrxcapRsbpR0dpRscpRkbpSUmrzU1vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRsdqRkbpyEjry8xuz0+vz8/vz8/vz8/vz8/vzk5vxscpxcZpSMlsTc4vz8/vz8/vz8/vz8/vzP1uysstSsstTMzuT8/vz8/vz8/vz8/vz8/vz8/vz09vyEjrxcapxveqy0ttz0+vz8/vzs8vzV2uzk5uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysttxUYpRUXpxebqyksvRcaqRUXpyMksT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vzk4vTP1uzZ3uz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vzs6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8+vzs7vz8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxUYpxUXpxUYpxUXpxUYpSepsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxkapRUXpRUYpR1fqTk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzV2uy8vsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzZ3vTP1uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vyssty0vuT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8+vzs7vTc4uzU1uT0+vzM0uTk5vT8/vzP1uzZ3vT8/vz8/vzU2uTU1uT8+vzs7vTc4uzs7vz8/vzU0tzZ3uz8/vz8/vzk6vTU0tzs8vzk5uz8/vz8/vzk5vT8/vzk4uzU1uTs8vybosSanrTk5vT8/vzk6vzU1uT0+vz8/vzs6vzc4uzV2uz8+vzU1uTk5vT8/vz8+vzU1uTk5uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx/hpykqsScorSKjqyxtsx8gqTk7vysssysssz8/vykqrykqrzAwtTs8vx/hpycorTk6vykprywttSUmrS0vtzc4vyUlqzEytzk6vyUmrTc4vTc4vykpry0utyMlrTM0uTk6vyMlryMkrTU2vTM0uSUlrSwttScorTs9vx8gqSnrsyMlrSEjrSsssyMkqzs9vyUmqyxtszk5vT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vyDhqT09vzEyuSUnrz8/vyEjrTc4vzR1vSsstTs7vyEiqT8/vz8/vz09vyDhqTs8vzc4vSMkrT8/vzk7vyMkrTc4vyKjqy0utT09vy8wuSbosSnrszEyuTEyuyDhqTEytz8/vy8wuS0utz8/vyUnryMkrSsttyUmrTs7vyEiqz0+vy0uuSRmsT8/vyUmrzs7vycorybosTc4vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs9vyKjqz0+vzExtykprz8/vyKjqzc4vzMzuyssszs8vx/hpz08vz0+vzs8vyUlqz8+vzk5vSDhqT0+vzM0vSUnrz8/vzs7vyUlrSkrtT09vx0fpyDhqTs8vz8+vzk5vyEiqTR1vS8wuSsstT8/vyanrSkqszs8vz0+vz08vyKjqz8/vy0ttykqsz8/vyUlrTs7vz0+vzExtyDhqT8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vykorz8/vzMzty0usz8/vykorzk6vzU2vS8vtT8/vyqrsSanrSqrsTs7vysqrz09vz8/vykqsScoryUmrTZ3vTs7vysssScorTR1vT0+vycnryanrT8/vzV2uysrrycorzs7vzY3vyHjqTMzuTk4vSUlqyqrsTExtT09vykprz8/vy8wty0utT8/vysrrzs8vzExtSkpsS0utT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz08vz09vz8/vz8/vz8/vz8/vz8/vz08vz8+vz8/vz8/vz08vz09vz8/vz09vyUmrTP1uz8/vz09vz08vz8+vz8/vz8/vz09vz09vz8/vz8+vz08vz09vz8/vz8/vz8/vz8+vz8/vz8/vz8/vz8/vz09vz08vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vycorysssz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vw=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 81.77mm )" draw:z-index="3" svg:height="4.23mm" svg:width="7.04mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+J
+P
+G
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 97.04mm )" draw:z-index="16" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAoAGQDASIAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAAAAUGBwIDBAgB/8QAOBAAAQMCBAQFAgMGBwAAAAAAAQIDBAURAAYSIRMxQWEHFCIyUXGBFSORJDNCcqHhNENSU2KSwf/EABkBAAMBAQEAAAAAAAAAAAAAAAECAwQABf/EACMRAAICAgEEAwEBAAAAAAAAAAABAhEDIRIEIjFBE1GhcYH/2gAMAwEAAhEDEQA/APVOE+Z6/FoEEOyFJVIdJRHYKwkvLtcJBOw+pxqzhmWJlilGVKu48s6GGE+51fQD/wBOKPnVKRWapKXX3W1h3T5zWohmA3f0pRa5Lv0v1G91W1dP0zydz8E5z46Ma/WZFXzAa6JkmEr0NtkKP7A8ALoWm3tJB378jYjFu+H+cU19tcCooEatxk/nNdHB/uI+Qdv1HQjFNoiy1S2n4qPxCCFcN2pJSQy9HHuD4I9Kki25seXOwOMkTfLSY6qMuYmG08fw9BNpEshRtqI5NJ+Pr1Jt6GXBHLFRXolGTTs9KYQ5yzNFyvTEypKFvPOrDTDCPc6s9Ow7448k5uh12O3EcmxXaw03qkNsatN+RKSRuOXK4xEPH+DKMCk1SNq4cN1QWR/AVadKv1Tb7jHm4sN5VCei0pdtok9SlZwiUd6pkUfU02XlQuG4TpAuRxNW6rf8bYeZUqrlcy7BqTsfyy5Levh6tVtz178/vhPkvMsTO+WnQTw5PDLMppJ3QSLXHY72/tiIZyznUqBDp0XK7TCKchfk2HHRrW+WwEkoTy0g2TfqeW2+CsUpv46pg5JbLdwYRZnrSqDlOVVJCUeYZZBCL+kuGwA+mo/piOZfzdVpWVIUqTHjvVioKcMVlAKEJaTsXHDc2SOZPW4A3OJRxSlHkv4NyXgsDBir8g57qdSo0x+pNolzFyeBCYYSEF1Wm5HZKQQSo8h9sb6TmjMCPEtGX6qqA60touLTGQQGToKgNR3PTn89MO+nmm19A5osnBgwYgORfPeUGM1R4hXJfiyYalLZdZtfe1xv9BvfpijZMZ2JJEJUThPRypbMJ4ghkD3SJB5E2FwOXLpYK9NYiGfcprrkRUilOpiVZuxDgAAfAvZDnyNzz2xt6XqXj7JeCc4XtFReflUiLLy/TvLzqZJZEl5YuFzNaRqU0emm1gLX9JuDuMcMpiHHjJegyZLtNdaShyY7bjObf4ZtO+k9D27WCtCw21JTBlIchr8wEKj7h2E+T72upQeo/scW9kLIq4DyqjXm2TOKv3LZCmipJ2etbZZ7fPS9huyZI4Vy+/0jFOWjR4W5OegPiu1RlMWStrhRoaBYMNn/AFdSo99999+U3jPwMy0NSwjjwJSVtlK021AEpP8AUHHfKQtyM6hpQQ4pBCVHobbHEGyYK9lehN0efRXppjlQZfiPNlKwVE2VqUkp3PxjzJSeVubey6XHRXWXafIyh4vt0lhxaozyy0Rf94ytNxfuNvuMPkxmsx+MMeFHbSmk0BsJShI9IKOn/cgfROJdlvKslWaJeZ8wcL8SdGmPHbVqTGRa3u6qttcbbn5xHckZVzVTKhWkPCNCbnvanJ2sLd03UfywNgTq5q5fBxqlmjK5XtKv99k1FrRw+NNYdq9Qp2W6aCpC5AS4sclO7AIH8urfuexxJM8Tqdl7Ik5unlsy47KKUlaR6kkpB03/AJTqwsr2TqyM90iTQY8dFPhRwht59epKFXVqUU31KVdWrueZx1ZwyNOqn4DTYZSulsPF+a865+Y6tShqWR1JGr9bYS8dQjelsNPbDwoo6MuZNVWqr6XVsqfGr/KZ91h3Va5+w6YU+EShOrVWzXVVpbdnSPKRgrqpXqKR9AEj6A4nXiHTZ1RyVOp9FbSZDiUIS2FBN0hQuBfbkDhHkLK9XpEKlKqSIuuLqQiOk3DIWSVuE/xOG9vgDYczhfkUoSm3tv8AA8aaRYeDBgxiKhgwYMccLZVCpcupM1CTAjOzWraHlIBULct+3T4wywYMFtvydQYiy4tf81xUyXdHFKuHdvTp44sOV7cK/wB++DBgxdAez4mNW2WHGW+MkiM5wFIU3pDpLm6789i3a2173xm8xXUy30NPyOElKkodPDUCnhix07Hia7noLfbBgw3P3R1HG0/XZEh6Ih4tKbipdWUaXVNukFIbN7A3A187/wBMfVxK+lTzzHHbdfTHLgDiXAkAELCbkeq9j3F974MGGc6ekBKzbJh5iUpSm5j3tUABw0g2ZTpNrGxLmq+/LthzSBPTKnidqU0XAWVqIGxv6QkdBtv1+MGDCOVqg0NMGDBhAn//2Q==
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.09mm )" draw:z-index="4" svg:height="4.23mm" svg:width="8.94mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+P
+B
+M
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 117.36mm )" draw:z-index="17" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDQKMTAwIDQwCgAAHAAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAA/AAAAAAAAAAAAAAAAO8AAAH8AAAAAAAAAAb/AAAHHwAAAAAAAAAHe8AADgcAAAAAAAAAG73gABwHAAAAAAAAAD/e4AA8BgAAAAAAAABd79gAPAYAAAAAAAAA73e4ADwGAAAAAAAAAfe7fAA8BBgAAYBgAAPf/PcAPgA+B4fD8AAH+f3vAD8A/gePx/AAD3D73gAfgLwPG8xwAB/vf73gH4G8DzOY8AA9/4d74A/DPA8jsPAAP7+P/+AH4ngeZ+DgAD+7h+7wB/J4HgfB4AA+9ze94APweD4HweAADe/7f8AB8PA8D4PAAAPe/HeAAfjwfA8DwAADuP7vAAD48HwPA8AAAX73fgMA8eD4ngeAAAD3f5wDAPnhuJ4HmAAA17v4AwDxw3kcDzAAAD/f4AMA8cZ7PA8gAAA97uADAePMcjwPYAAAD/eAB4HD+H44D9AAAA9/gAPDg/B4eA+QAAADuQAA/gHAcCAOAAAAA/wAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAA+AAAAQAAAAAAAAAAACAAAAAAAADAAAAAAAAAAAFqJqScyrUAAAAAAAABKUSUpFqVgAAAAAAAAUlEkmJYpEAAAAAAAAEoZKZmSpSAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAIAAAAAA=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="5" svg:height="4.23mm" svg:width="8.25mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+P
+X
+C
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 137.68mm )" draw:z-index="18" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 142.73mm )" draw:z-index="6" svg:height="4.23mm" svg:width="9.16mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+P
+G
+M
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 158mm )" draw:z-index="19" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6YmJhubm59fX3Hx8f7+/v9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/eJiYlhYWFiYmJiYmJjY2O/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3c3NxiYmJiYmJ1dXVqampiYmJkZGS/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v79/f38/Pzz8/Pl5eXj4+Ps7Oz29vb8/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3w8PDh4eHk5ORiYmJiYmKOjo6/v79ubm5iYmJmZmbFxcX8/Pz+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v79/f329vbGxsaOjo5ubm5ra2tqampjY2N1dXWfn5/MzMz39/f+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3q6uqIiIhubm7W1taYmJhhYWFiYmKZmZnFxcVubm5iYmJjY2O+vr78/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f3a2tqDg4NiYmKDg4O/v7/h4eHe3t63t7dubm5jY2NiYmKUlJT6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f309PS/v79gYGBhYWFxcXHR0dGUlJRiYmJhYWGTk5PDw8Nubm5hYWFiYmK/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f3S0tJnZ2diYmKfn5/4+Pj8/Pz9/f39/f38/PzS0tJmZmZjY2OBgYH6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3w8PCDg4Oqqqq+vr5jY2NiYmJubm7Q0NCQkJBiYmJiYmKUlJTHx8doaGhiYmJiYmLExMT8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f3s7Oxvb29hYWFzc3Py8vL9/f3+/v7+/v79/f39/f36+vqEhIRiYmKkpKT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f38/Pyenp5hYWFiYmKrq6u3t7djY2NiYmJ0dHTMzMyOjo5iYmJjY2OYmJjGxsZubm5iYmJlZWXb29v8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f2tra1iYmJiYmKgoKD8/Pz+/v7+/v7+/v7+/v79/f38/PyZmZliYmLMzMz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6ampq9vb19fX1iYmJiYmKrq6u3t7diYmJiYmJ0dHTNzc2YmJhiYmJiYmKUlJTCwsJxcXGpqamtra28vLz8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/d4eHhiYmJiYmKurq78/Pz+/v7+/v7+/v7+/v7+/v78/Pyfn59mZmbw8PD9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3v7++FhYViYmJ4eHjR0dF+fn5iYmJhYWGrq6u9vb1lZWViYmJycnLKysqVlZViYmJiYmKLi4vc3NypqalhYWFiYmLExMT7+/v+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3q6upmZmZiYmJiYmKPj4/8/Pz+/v7+/v7+/v7+/v7+/v78/PyZmZmAgID8/Pz9/f3+/v79/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v79/f39/f39/f39/f3+/v7+/v79/f39/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v79/f39/f39/f38/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3x8fGNjY1iYmJiYmKMjIzLy8vHx8d9fX1iYmJjY2OysrK2trZlZWViYmJzc3PX19eJiYlhYWGioqK1tbVjY2NiYmJycnK/v7/Ozs78/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7o6OhnZ2diYmJiYmJoaGjk5OT9/f3+/v7+/v7+/v7+/v78/Pyurq6ysrL9/f39/f39/f3s7Oy8vLyhoaG6urr39/f9/f3+/v7+/v7+/v7+/v79/f3z8/Pc3Nzb29vj4+P9/f39/f39/f38/Pz8/PzJycmampqgoKDr6+v9/f3+/v7+/v79/f38/Pzh4eG3t7empqa8vLz09PT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6NjY1iYmJiYmKUlJTDw8NpaWl/f3/Dw8N6enpiYmJiYmKrq6uzs7NmZmZiYmKjo6Pv7++9vb2ysrJjY2NiYmJ1dXXJycmKiopiYmK6urr6+vr+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7z8/Nvb29iYmJhYWFiYmKQkJD5+fn8/Pz9/f3+/v7+/v79/f36+vr9/f39/f38/PzHx8dxcXFiYmJiYmJhYWG/v7/9/f3+/v7+/v7+/v79/f38/PyWlpZkZGRkZGR6enr39/f9/f39/f3y8vKWlpZiYmJiYmJhYWGpqan9/f3+/v79/f3y8vKjo6NiYmJiYmJiYmJiYmKhoaH9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6EhIRiYmJiYmKYmJjGxsZubm5iYmJjY2POzs7n5+d4eHhiYmJiYmKKiopoaGhhYWGYmJj6+vq2trZiYmJiYmJ6enrKysqMjIxiYmJiYmKWlpb9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PyWlpZiYmJiYmJiYmJiYmKrq6v8/Pz9/f3+/v79/f39/f3+/v7+/v78/PzCwsJiYmJjY2NiYmJjY2NiYmKysrL9/f39/f3+/v7+/v79/f3f399jY2NiYmJiYmKkpKT7+/v9/f3u7u6Hh4djY2NlZWViYmJiYmKZmZn8/Pz9/f3q6uqAgIBtbW2jo6OIiIhiYmJiYmJ0dHT39/f+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3z8/OHh4diYmJiYmKUlJTHx8doaGhiYmJlZWXJycnx8fHs7Oze3t53d3diYmJiYmJiYmJiYmLDw8O3t7diYmJhYWF0dHTR0dGMjIxiYmJiYmKXl5fw8PDq6ur09PT9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3KyspiYmJiYmJjY2NiYmJiYmK4uLj8/Pz+/v7+/v7+/v7+/v79/f3Y2NhiYmK/v7+3t7diYmJiYmJjY2PS0tL9/f3+/v7+/v7+/v78/Pyrq6thYWFiYmJkZGTb29v8/Pz5+fmIiIhycnLc3Nx4eHhiYmJiYmKtra38/Pzw8PB4eHiFhYXt7e36+vrBwcFiYmJiYmJycnL19fX+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3z8/ONjY1iYmJiYmKTk5PDw8Nubm5iYmJmZmbBwcGurq5wcHBqamqPj4/JycmKiopmZmZra2upqamysrJiYmJiYmJ0dHTKysqKiopiYmJiYmKcnJzLy8t/f39oaGh2dna9vb38/Pz+/v7+/v7+/v7+/v7+/v79/f329vaEhIRiYmJiYmJiYmJiYmJoaGjR0dH9/f3+/v7+/v79/f3y8vJ2dnapqan6+vqamppiYmJiYmJ3d3f09PT+/v7+/v7+/v7+/v78/PyAgIBiYmJiYmJ8fHz5+fn8/PysrKxra2vj4+Pw8PBqampiYmJiYmLKysr09PSEhISKior19fX9/f38/PyhoaFhYWFiYmKDg4P6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f2enp5iYmJiYmKamprExMRtbW1iYmJmZmbCwsKkpKRiYmJiYmJiYmJiYmKEhITy8vLi4uLq6urY2NhjY2NiYmJ3d3fKysqKiopiYmJjY2OdnZ3Dw8NqampiYmJiYmJiYmJiYmLa2tr9/f3+/v7+/v7+/v7+/v7+/v79/f3b29tnZ2diYmJiYmJiYmJiYmJwcHDl5eX9/f3+/v79/f2pqal/f3/5+fns7OxqampiYmJiYmKpqan8/Pz+/v7+/v7+/v79/f3b29tlZWViYmJiYmKoqKj8/Pzh4eFoaGjS0tL8/PzKyspiYmJiYmJoaGjq6uqWlpZ/f3/19fX9/f3+/v729vZ4eHhiYmJiYmKgoKD8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PxpaWliYmJ6enq3t7dubm5iYmJpaWnIyMijo6NiYmJiYmJ/f3+AgIBiYmJiYmLi4uL8/Pz8/Pyrq6tiYmJmZma6urqMjIxiYmJiYmKdnZ3CwsJqampiYmJra2uOjo5kZGRiYmKurq79/f3+/v7+/v7+/v7+/v7+/v7+/v78/Py9vb1iYmJiYmJiYmJiYmJjY2OEhIT4+Pj9/f3k5ORvb2/e3t78/Py9vb1iYmJiYmJiYmLX19f9/f3+/v7+/v7+/v78/PyhoaFiYmJiYmJlZWXd3d38/Pyjo6OkpKT8/Pz8/Pyjo6NiYmJhYWGQkJC2trZ2dnbs7Oz9/f3+/v79/f3Ly8tiYmJiYmJiYmLOzs79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v77+/tzc3NiYmJmZmZiYmJiYmJoaGjCwsKpqaliYmJiYmKEhITNzc2AgIBiYmJoaGjv7+/8/Pz8/Py4uLhiYmJjY2NqampiYmJhYWGdnZ3IyMhra2tjY2NnZ2fBwcGfn59iYmJiYmK/v7/9/f39/f3+/v7+/v7+/v79/f3+/v79/f38/PyampphYWFiYmJiYmJhYWFiYmK1tbX8/Pzc3Ny8vLz7+/v4+PiFhYViYmJiYmJ7e3v29vb9/f39/f3+/v79/f3y8vJ0dHRiYmJiYmJ9fX36+vr8/Pzk5OT29vb8/Pz19fV4eHhiYmJjY2OYmJh1dXXU1NT9/f3+/v7+/v78/PyTk5NiYmJjY2Nzc3Pz8/P9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3BwcFiYmJiYmJhYWFoaGjBwcGkpKRhYWFiYmKEhITMzMyAgIBiYmJiYmKysrLS0tKtra28vLzW1tZ5eXlhYWFiYmJiYmKenp7CwsJra2tiYmJra2vExMSfn59iYmJiYmKAgIDz8/P9/f3+/v79/f39/f3+/v7+/v7+/v79/f39/f3z8/N9fX1jY2NiYmJiYmJiYmJra2vt7e39/f39/f38/Pzc3NxjY2NiYmJiYmKzs7P9/f3+/v7+/v7+/v78/Py4uLhiYmJiYmJiYmKoqKj8/Pz9/f3+/v7+/v79/f3X19diYmJhYWFkZGRjY2Opqan8/Pz+/v7+/v78/Pzn5+dpaWliYmJiYmKcnJz8/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PzLy8uZmZmfn5/S0tKjo6NiYmJiYmKDg4PLy8t5eXlhYWFiYmKtra2ysrJjY2NiYmJiYmJ+fn7KysqoqKiXl5e+vr7Dw8NqampiYmJra2vDw8OdnZ1iYmJjY2OFhYXq6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3c3NxqampiYmJhYWFiYmJiYmLFxcX9/f3+/v78/PypqaliYmJiYmJmZmbk5OT9/f3+/v7+/v79/f3y8vJ3d3diYmJiYmJkZGTa2tr9/f3+/v7+/v7+/v78/Pyurq5iYmJiYmJiYmJ3d3fx8fH9/f3+/v7+/v79/f2oqKhiYmJiYmJiYmLS0tL9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f38/Pz39/ekpKRiYmJhYWF+fn7Ozs56enpjY2NiYmKpqanp6elmZmZiYmJlZWViYmJiYmJ7e3vs7Oz6+vrLy8tmZmZiYmJnZ2fExMScnJxiYmJhYWF/f3/u7u79/f3+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v79/f38/PyhoaFiYmJiYmJhYWFiYmKtra39/f39/f309PR1dXViYmJiYmKNjY38/Pz+/v7+/v7+/v78/PyoqKhiYmJiYmJiYmJ9fX35+fn+/v7+/v7+/v7+/v75+fl9fX1iYmJiYmJiYmLDw8P9/f3+/v7+/v79/f3w8PBwcHBiYmJiYmJ/f3/6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3S0tJiYmJiYmKEhITOzs5+fn5hYWFiYmKhoaH6+vre3t5iYmJiYmKTk5Ojo6NiYmJhYWF9fX3j4+ODg4NiYmJqamq/v7+fn59iYmJiYmJ+fn7p6en9/f3+/v7+/v7+/v7+/v7Z2dm6urr+/v7+/v7+/v7+/v7+/v7+/v79/f3m5uZqampiYmJhYWFiYmKjo6P8/Pz9/f3S0tJhYWFiYmJiYmLDw8P9/f3+/v7+/v79/f3W1tZnZ2dmZmZiYmJiYmKioqL8/Pz+/v79/f39/f39/f3U1NRjY2NiYmJiYmJ8fHz19fX+/v7+/v7+/v79/f3FxcViYmJiYmJjY2O6urr8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vq6urqGhobJycl7e3tiYmJiYmKtra2wsLCQkJDq6up4eHhiYmJra2u+vr6tra1iYmJiYmJ6enrFxcWIiIi9vb2goKBiYmJhYWF/f3/p6en9/f3+/v7+/v7+/v7+/v79/f2ZmZl6enr9/f3+/v7+/v7+/v7+/v79/f3+/v78/PyPj49iYmJjY2NiYmKrq6v8/Pz7+/ujo6NjY2NiYmJubm7u7u79/f3+/v79/f3y8vJ9fX2cnJxra2tiYmJiYmLS0tL8/Pz6+vqlpaXm5ub8/PyioqJiYmJiYmJjY2POzs79/f3+/v7+/v79/f38/PyNjY1iYmJiYmJnZ2fp6en8/PzW1ta5ubn9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3q6up7e3tiYmJiYmKqqqrHx8diYmJiYmKZmZnOzs5vb29jY2NmZma9vb2lpaViYmJiYmKAgIDh4eGrq6thYWFiYmJ9fX3q6ur9/f3+/v7+/v7+/v7+/v7+/v78/PyAgICCgoL8/Pz+/v7+/v7+/v7+/v7+/v7+/v78/PyoqKhiYmJiYmJgYGDFxcX8/Pz09PR1dXViYmJiYmKampr8/Pz8/Pz9/f38/PyZmZmZmZm4uLhiYmJjY2N2dnb19fX8/PzS0tJra2vv7+/5+fl7e3tiYmJiYmKAgID7+/v9/f3+/v7+/v79/f3l5eVmZmZhYWFiYmKVlZX7+/v4+PiAgICtra39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PyysrJkZGSioqK6urq/v7+Pj49iYmJiYmKZmZnIyMhvb29iYmJmZma8vLykpKRiYmJiYmKCgoLDw8N4eHh7e3vq6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v709PRqamqEhIT8/Pz9/f39/f3+/v7+/v7+/v7+/v78/Pyjo6NiYmJhYWFra2vs7Oz8/PzY2NhiYmJiYmJkZGTW1tb9/f39/f39/f2zs7N6enrx8fGNjY1iYmJiYmKjo6P6+vr19fV7e3u1tbX8/PzX19djY2NiYmJiYmK+vr79/f3+/v7+/v7+/v79/f28vLxiYmJiYmJiYmLMzMz8/Py6urp4eHj29vb+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PzW1tatra1iYmJubm7ExMSRkZFiYmJhYWGYmJjIyMhvb29iYmJlZWW8vLyoqKhiYmJiYmJ+fn7Kysrq6ur9/f3+/v7+/v7+/v7+/v7+/v79/f3+/v7c3NxiYmJ7e3v6+vr+/v7+/v7+/v7+/v7+/v7+/v74+Ph9fX1iYmJiYmK1tbX9/f38/Py1tbViYmJiYmJ4eHj4+Pj9/f38/Py1tbVubm7i4uLz8/Nra2tiYmJiYmLJycn7+/ufn5+AgID6+vr8/PylpaViYmJiYmJ1dXX09PT+/v7+/v7+/v7+/v78/PyNjY1iYmJiYmJycnL39/ff399qamrR0dH9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Py6urpiYmJiYmJubm7IyMiNjY1iYmJiYmKZmZnMzMxubm5iYmJlZWXCwsKoqKhiYmJ6enrr6+v8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3CwsJiYmJoaGjq6ur+/v7+/v7+/v79/f39/f39/f3JycliYmJiYmKJiYn5+fn9/f38/PyYmJhiYmJiYmKRkZH7+/v7+/uvr69oaGjU1NT8/Pzc3NxjY2NiYmJlZWXf39+9vb1mZmbh4eH9/f35+fl+fn5iYmJiYmKhoaH8/Pz+/v7+/v7+/v7+/v7w8PBra2tiYmJiYmKamprq6upycnKenp77+/v9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Py3t7diYmJiYmJzc3PFxcWNjY1iYmJiYmKcnJzLy8tubm5iYmJlZWW0tLSzs7Pm5ub9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f2tra1jY2NiYmKtra38/Pz9/f39/f39/f38/Pzt7e14eHhiYmKAgIDr6+v9/f3+/v76+vqEhIRiYmJiYmJzc3O0tLSMjIxubm7Y2Nj9/f39/f3Nzc1iYmJjY2NlZWV+fn5lZWXHx8f8/Pz9/f3d3d1lZWViYmJjY2PU1NT9/f3+/v7+/v7+/v7+/v7f399kZGRiYmJiYmJxcXFubm6Tk5Pg4OC6urrOzs7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pz8/Py3t7djY2NiYmJycnLIyMiSkpJiYmJiYmKWlpbKyspra2thYWGAgID6+vr9/f3+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7c3Nx2dnZiYmJhYWGjo6Pn5+f09PTv7+/FxcVzc3NiYmKZmZnv7+/9/f3+/v7+/v79/f2Pj49iYmJiYmJiYmJiYmKDg4Pk5OT9/f3+/v79/f3IyMhiYmJiYmJiYmJoaGjFxcX9/f39/f39/f2oqKhhYWFiYmJzc3P29vb+/v7+/v7+/v7+/v7+/v7c3NxiYmJiYmJiYmJiYmKPj4/09PTb29uysrLDw8P9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pz8/Py/v79iYmJiYmJubm7ExMSUlJRjY2NiYmK6urrT09OKioro6Oj8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u7BwcGTk5Nra2tvb294eHhzc3Nvb2+ZmZnW1tb8/Pz9/f3+/v7+/v7+/v79/f3X19d4eHhtbW2Ojo7FxcX4+Pj9/f3+/v7+/v79/f3m5uZ1dXVoaGiVlZXi4uL8/Pz+/v7+/v79/f3T09Ozs7OwsLDOzs79/f3+/v79/f3+/v7+/v7+/v719fWQkJBqamp6enq5ubn4+Pj9/f3v7+/Z2dnj4+P+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v79/f38/Py3t7diYmJiYmJwcHCzs7NqampiYmKUlJT7+/v6+vr9/f3+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f38/Pzz8/Ph4eHU1NTd3d3y8vL9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f329vby8vL8/Pz9/f39/f3+/v7+/v7+/v7+/v79/f3y8vLq6ur8/Pz9/f3+/v7+/v7+/v7+/v7+/v79/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vrt7e339/f9/f39/f3+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f38/Py4uLhjY2NiYmJiYmJiYmJhYWGmpqb9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v78/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f38/Py8vLxpaWliYmJiYmJ9fX3q6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v79/f39/f3b29u/v7/+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v79/f3e3t7U1NT9/f3+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pze3t6zs7O+vr7y8vL9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vrr6+vh4eHW1tb39/fU1NTm5ub9/f3W1tbc3Nz9/f3+/v7Z2dnW1tb5+fnr6+vg4ODv7+/9/f3U1NTc3Nz9/f39/f3o6OjS0tLv7+/l5eX9/f39/f3m5ub9/f3j4+PV1dXx8fGkpKScnJzo6Oj9/f3q6urW1tb4+Pj9/f3r6+vg4ODa2tr39/fU1NTo6Oj9/f34+PjU1NTm5ub9/f3+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/eHh4erq6ugoKCQkJC2traEhITt7e2xsbGzs7P8/PyoqKirq6vBwcHx8fGIiIifn5/r6+umpqa1tbWZmZm/v7/i4uKYmJjKysrr6+uamprf39/j4+Ojo6O9vb2UlJTS0tLr6+uZmZmTk5Pc3NzS0tKZmZm2tragoKD09PSFhYWurq6WlpaQkJC0tLSRkZHz8/Obm5u4uLjj4+P+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f309PSGhob29vbLy8uenp77+/uRkZHi4uLW1ta0tLTu7u6MjIz8/Pz8/Pz19fWHh4fz8/Pi4uKTk5P6+vrt7e2Tk5Pg4OCNjY28vLz19fXCwsKlpaWurq7KysrKysqIiIjIyMj7+/vDw8O6urr7+/ucnJyTk5O1tbWampru7u6IiIj39/e8vLydnZ36+vqbm5vu7u6goKCkpKTk5OT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f309PSOjo75+fnExMSpqan7+/uPj4/i4uLR0dGysrLw8PCEhITz8/P4+Pjx8fGVlZX5+fnj4+OIiIj4+PjU1NScnJz8/Pzt7e2YmJiwsLD19fV9fX2Hh4fx8fH7+/vm5uaIiIjX19fDw8OwsLD7+/ufn5+pqanz8/P39/fy8vKRkZH7+/u3t7epqan7+/uYmJjv7+/5+fnExMSIiIj4+Pj9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v719fWjo6P6+vrOzs65ubn8/PykpKTo6OjZ2dm/v7/8/Pyurq6cnJyurq7v7++rq6v39/f9/f2rq6uhoaGZmZng4ODu7u6zs7Ofn5/W1tb6+vqgoKCfn5/8/PzX19eurq6jo6Pu7u7f39+Ojo7Pz8/h4eGWlpavr6/ExMT19fWmpqb8/PzExMS6urr8/Pytra3w8PDFxcWoqKi5ubn9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f37+/v+/v77+/v7+/v+/v76+vr9/f39/f37+/v8/Pz9/f3x8fH09PT9/f37+/v+/v79/f39/f3x8fH4+Pj9/f37+/vv7+/29vb8/Pz09PSYmJjX19f9/f339/fv7+/6+vr9/f39/f319fX19fX+/v76+vrv7+/29vb9/f37+/v9/f36+vr6+vr+/v77+/v+/v7y8vLx8fH9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7t7e2hoaGwsLD9/f3+/v79/f3+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v4=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 163.05mm )" draw:z-index="7" svg:height="4.23mm" svg:width="8.45mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+P
+N
+G
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 178.32mm )" draw:z-index="20" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 183.37mm )" draw:z-index="8" svg:height="4.23mm" svg:width="8.45mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+P
+P
+M
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 199.84mm )" draw:z-index="21" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 204.89mm )" draw:z-index="9" svg:height="4.23mm" svg:width="8.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+T
+G
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 220.16mm )" draw:z-index="22" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 225.21mm )" draw:z-index="10" svg:height="4.23mm" svg:width="6.33mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+T
+I
+F
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 240.48mm )" draw:z-index="23" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+</draw:page>
+</office:presentation>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_writer.xml b/sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_writer.xml
new file mode 100644
index 000000000000..047e46dad074
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/graphicformats_pdfi_unittest_writer.xml
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="10mm" fo:margin-right="10mm" fo:margin-top="10mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:fill="none" draw:stroke="none" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+<style:style style:family="graphic" style:name="graphic9" >
+<style:graphic-properties draw:fill-color="#ffffff" draw:fill="solid" draw:stroke="solid" svg:stroke-color="#000000" svg:stroke-width="3" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="paragraph" style:master-page-name="master-page3" style:name="paragraph10" >
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:text >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="8.95mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+BMP
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 37.21mm )" draw:z-index="11" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 42.26mm )" draw:z-index="1" svg:height="4.23mm" svg:width="8.7mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+EMF
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 92.6mm 56.86mm )" draw:z-index="14" svg:height="-9.95mm" svg:width="25.25mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:path draw:style-name="graphic9" draw:transform="translate( 92.6mm 46.95mm )" draw:z-index="12" svg:d="m9260 5640h2476v-945h-2476v945z" svg:height="9.45mm" svg:viewBox="0 0 2476 945" svg:width="24.76mm" text:anchor-page-number="1" text:anchor-type="page" >
+</draw:path>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 61.45mm )" draw:z-index="2" svg:height="4.23mm" svg:width="6.83mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+GIF
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 76.72mm )" draw:z-index="15" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vyMlsxebqxserS8xvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vyEhrRUXpxUYpxUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRUXpRTYqRkcqxZZqRUYpxUYpy0vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vzc5vzc4vzs7vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vzc4vTc4vxUYpxUXqSBisy0vvxcaqxUXpxcZpS8wuz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vy8xuSKjqxoboxkaoxkaoxcYoRscpycnrzEyuT8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk6vx8hqxkbpzM1vyMlsxUXpxUYpyMltS1wvxkbqRUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vx8gqxcYoR8gqS8vtzk4vTZ3vSwttRkbpxUYpRUYpSMkrz8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vy0vuRUYoxUXpxkbqTEzvyFksxUXpxUYpyFksy1wvRcaqxUXpxUYpS8vtz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzM0uxcZpxUXpScnsz0+vz8/vz8/vz8/vz8/vzE0vxUYpxUYpx0frT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vx8gqSkqtSsuvRUYpxUYpxkbqTE0vyEjsRUYpxUXpyFksy8xvxcZpxUXpxUYpS8wuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vxkbpxUXpxmcqTs9vz8/vz8/vz8/vz8/vz8/vz8/vx8gqxUXpSaosz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUnsRUYpRUYpSkqtystuxUXpxUYpxkcqy9yvyEjsRUXqRUYpyMlsy1wvxebqxUXpxcZozU2vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vykqtRUYpRUXpyUntT8/vz8/vz8/vz8/vz8/vz8/vz8/vyMlrxcYozByvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vyMlry0vuxveqxUXpxUXpycqtystuxUYpxUXpxscqy9yvyMlsxUXpRUXpyFksy1wvRkbpycqtSkqsy0utz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vxsdqxTYqRUXqSkrtz8/vz8/vz8/vz8/vz8/vz8/vz8/vycnrxcZozs8vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vx8gqxUYpRsdqTEzvx0frxUXpxUXpSkquSsuvRcYqRUYpxkcqy8xvyMlsxUYpxUYpx8irzY3vycptxUYpRcYoS8wuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk6vxcZpxUXqRUXqSEjrz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUmrR8fpz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz08vx8irRUYpxUXpyEiry9yvy8xvR0erRUXpxUYpykruSstuxUYpxUXpxscqzM1vx8hrxUXpSaosystuxUYpxUXpxmcqS8vuTMzuz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk5vxUZpxTYqRMXqxZZqTc5vz8/vz8/vz8/vz8/vz8/vz8/vyqrsSsssT8/vz8/vz8/vzk7vy0utyUnsy0utz0+vz8/vz8/vz8/vz8/vz8/vz8/vz08vzY3vzU2vTc4vz8/vz8/vz8/vz8/vz8/vzEyuyUmryUnsTk7vz8/vz8/vz8/vz8/vz8/vzc4vysttyepsy0utz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vyEjrxUXpRUYpyFksy1wvxcZpR0fqy1wvRsdqxUYpxUXpScqtyksuxTYqRUYpSXotTs8vy0vuSkruRUYpxUXpxkcrS8xvx8irRcYoS0ttz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vxkbqRUXqROYqxUXpyEjrT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8xuRkbpxUYpRUXpxUYpS8vtT8/vz8/vz8/vz8/vz8/vz8/vyUlrRUYpRUYpR0epT09vz8/vz8/vz08vyMlrxUXpRUYpRUXpSkqsz8/vz8/vz8/vz09vybosRcYoRUXpRUYpRUYpSUnsT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vx8gqxUXpxUYpyMlsy1wvRebqxUXpxcYozEzvTc5vxsdqRUYpxUXqR8hsxZZqRUXpyMlsz8/vyksuRUYpxUXqRveqy9yvx8isRUXpxUYpSMlrT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyMlsRUXpxUXqRUXqRUYpycptT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8wuRUYpRUYpRUYpxTYqRUYpSsssz8/vz8/vz8/vz8/vz8/vzY3vxUYpRUXpxUYpSbosT8/vz8/vzs7vx8hqxUYpRTYqRUYpxUXpyRmsT8/vz8/vzk6vx1fqRkaoyaosx8hrxUXpxUXpxmcqT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vx8hrRUXpxUXpyFksy8xvxcZpxUYpxUYpzByvTs8vzk7vzY3vxscqxTYqRUXpxUYpxUXpy1wvSstuRUYpRUXpxkcqzEzvx8isRUXpxUYpyMlszs8vzk6vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzByvRUYpRTYqROYqxUXqRUYpywttT8/vz8/vz8/vz8/vz8/vz8/vzV2uxcYoS0vuyotvRUXqRUXqRUYpzM0uz8/vz8/vz8/vz8/vz8/vycqtRUYpxUXpxUYpzU2vz8/vz8/vyDhqRkcpzU2vxkdrRUXqRUXpykqtT8/vzs8vx0dpx8hqzk7vz8/vy1wvRTYqRTYqRmcqT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vx8irRUYpRUXpyEksS1wvRkaqxUXpxUYpy1wvSkquRebqxcaqSEjsS9yvx8hrRcZpRcapycqtSksuRUXpxUYpxscqy8xvx8isRUYpxUYpSPmtS9yvx0frRcZpxsdqS8vtz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx8gqxUXpxTYqRMXqxUYpxUZpzM0vT8/vz8/vz8/vz8/vzs8vxsdpSkqsT8/vyQmsxUXqRTYqRsdqz09vz8/vz8/vz8/vz8/vz8/vx0frRUXqRTYqRserT0+vz8/vykqsxcapTc4vzs8vxcaqRUXqRUYpS9yvz09vx8gqSEiqT09vz8/vz8/vyUntRUXpxUXqR0grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUnsRUYpxUXpyUnty0vvxcaqRUYpxcYqS1wvSXotxUXpxUYpxUXqRUYpx0grTs9vzc4vzk6vzM1vxUYpRTYqRkdrS8xvx8irxUYpxUXpyPmtS1wvRZZqRUXpxUXqRUXpxUYpTU2vT8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vxcZpxUXqRTYqRMXqxTYqRkbqTc5vz8/vz8/vz8/vykqsx0fpz0+vzk7vxcaqRUXpxUYpycptT8/vz8/vz8/vz8/vz8/vzU2vRUYpxTYqRUXpycptT8/vzc4vRgZoTM0vT8/vzEyuxUYpxUXqRUZpzk6vyMlrx1fqT09vz8/vz8/vz0+vxsdqxTYqRUXpycnsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vxcZpRTYqRsdrSotvRebqxUXpxcZpy8xvyXotxUYpxUXpx0frxsfrxUYpxUYpTc4vz8/vz8/vykqtRUXpxTYqSsuvSBisxUYpxUXpSPmtS1wvxZZqRUXpxcaqyBisxUYpxUXpSkrtT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0vuRUXpRTYqRTYqRUXqRUYpx8gqz0+vz8/vzk4uxobozY3vz8/vy0utxUYpxUXqRUYpTU1vz8/vz8/vz8/vz8/vz8/vybosRUXpxUXpxUZpzY3vz8/vycorSkprz8/vz8/vybosRUXpxUXqSEjsSstuRsdpzs7vz8/vz8/vz8/vzEyuRUYpxUXqRUXpTEzvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vxmcqRUXpxcYqRUXpxUYpxZZqS1wvScptxUYpxUYpx0gry9yvx0frxUYpxcZpTs7vz8/vz8/vystuRUYpxUYpxcaqRUXqRUXpyPmtS8xvxcaqRUXpxZZqS0vvyUntxUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyRmsRUXpxMXqxOYqxTYqRUYpykstz8/vzZ3uy8vtT8/vz0+vx8gqxTYqRUYpx0eqT0+vz8/vz8/vz8/vz8/vzs9vxmcqRTYqRUXpx0fqz0+vz8/vzk5vT09vz8/vz09vxsdqRTYqRTYqSMlsxscpzP1uz8/vz8/vz8/vz8/vyMkrxUXpxTYqRkcpzs9vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8vtxUYpRUYpRUXpxcZpy0vvSXotxUXpxUXpx0gry9yvx0frRUYpxUXpykstzE0vykqtS0uuTM1vxsdqRUXpxUXpxUXpSUnsy1wvxcaqRUXpxcaqS1wvSUntRUYpxUXpx1fqT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs9vxveqxUYpxUXqRTYqRUXqRcapzs7vz8/vz8/vz8/vzU2vxUYpRUXqRUXpysstT8/vz8/vz8/vz8/vz8/vystuRUXpxTYqRUXpykqsz8/vz8/vz8/vz8/vz8/vzM1vxUXpRUXqRTYqRUYpSkqtT8/vz8/vz8/vz8/vzk5vxcapRTYqRUXpyUnsT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzMzuyMlsSUnszEzvyXotRUXpxUYpx0gry8xvxsdrRUXpxUYpScquSksuRUYpRUXpRUYpRserS9yvycptyMlsS0vvS1wvRZZqRUXpxcaqS1wvyPmtRUYpRUXpx8hrTk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vxcaqRUXqRMXqxTYqRUYpy8wuT8/vz8/vz8/vycqtRUYpxUXqRUZpzc4vz8/vz8/vz8/vz8/vzs9vxsdqxTYqRUXqRUYpzU2vT8/vz8/vz8/vz8/vz8/vykrtxUXpxTYqRUXqRsdqTs8vz8/vz8/vz8/vz8/vycptRUYpxUXqRUYpTM0uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vyXotRUYpxUXpx0erTEzvxserRUYpxUYpycptTk6vxUYpxTYqRUYpxUYpxUXpxserTk7vz8/vy9yvxUYpxUXpxcZpy1wvyQmsxUXpxUXpx0fqzs8vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vybosRUXpxOYqxMXqxUYpynrsz8/vz8/vz09vxkcqxUYpxUXqSEjrz8/vz8/vz8/vz8/vz8/vyepsxUXpxUXqRTYqRserT8/vz8/vz8/vz8/vz8/vz0+vxveqxTYqRUXqRUYpy8wuT8/vz8/vz8/vz8/vzs8vxkbqRUXqRUYpx0frT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzM0uRcYoxUYpR0grzEzvx0erRUXpxUXpyUntT8/vzY3vxUYpxTYqSEktSXotxUXqRUXpx1fqTc4vx0grRUYpRcaqS0vvSUntRUYpxUXpx0fqzs6vz8/vz8/vz8/vz8/vz8/vzV2uy0usz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk5vxcaqRUXqRMXqxUXpybosT8/vz8/vzM0uxUXpxUXqRUYpS8wuz8/vz8/vz8/vz8/vzR1vRUYpRZZqRUXqRTYqSUnsz8/vz8/vz8/vz8/vz8/vzR1vRUYpxTYqRUXqRveqz0+vz8/vz8/vz8/vz8/vy8xuRUXpxTYqRUXpy0uuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utR8hqy8xvxserRUXpxUXpykquSkrtyEjrzk7vxveqxUXpxcaqSsuvykruRUXpRUYpxsdqy8xvR8hrS0vuyUntRUXpxUXpx0fqzk6vz8/vz8/vz8/vz8/vz8/vz8/vyMlrx0epz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyEjsRUXqRUXqRUYpykqsz8/vz8/vybosRUXpxTYqRkbpzk7vz8/vz8/vz8/vzs8vx1fqSQmsxcaqxUXqRUXpTM0vT8/vz0+vykprzc5vz8/vybosRUXpxUXqRUYpTEzvT8/vz8/vz8/vz8/vz8/vyEjrRUXpxTYqRUZpzk6vz8/vzU1uS0usz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vx0eqRUXpxUYpycquS8xvRUYpRUYpSMlszEzvxebqxUYpxcZpy0uvSXotRTYqRUYpx0frTc4vycqtRUXpRUYpRveqzk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vx0fqx8grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vycptRTYqRTYqRUXpy8wuT8/vzs9vxmcqRUYpxUXpyRmsT8/vz8/vz8/vz8/vyUmrSMlrystuxUXqRTYqRsdqTs9vz8/vzM0uRkaoTs7vz0+vxveqxUXpxUYpx0fqz8/vz8/vz8/vz8/vz8/vzc5vxUYpRUXqRUXpyMlrz8/vz0+vx8gpysrrz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysstRcYoyXotSstuy0vuyEjrxUXpxUYpyMlsy8xvxkbqRUXpxZZqS0uvSXotRUYpRUXpx0gry1wvRsdqR0eqTs7vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vxcapx8grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyXotRUXpxUXqRcapzk7vz8/vzM1vxUYpRTYqRUYpzR1vT8/vz8/vz8/vysstRsdqTs8vyEirxUYpxUXpyaosz8/vz09vx0epyxtsz8/vzU1vxUYpRTYqRUXpy0vuT8/vz8/vz8/vz8/vz8/vy0uuRUYpxUXqRUYpzEyuz8/vy0utx0dpz0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzR1vSkrtRUYoxkbpy1wvSEjsxUYpxUXpyMlsy8xvxebqxUXpxcYqS0uvScptxUXpxUXpxveqzEyuzk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRUYpRveqz8+vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx0erRUYpxUYpSsstz8/vz8/vysttxUXpxUXqRsdqz0+vz8/vz8/vyxtsxobozc4vzs9vxcapxUXqRUYpzEyuz8/vyUnsR0fpz8+vz8/vyXotRUXpxTYqRsdqz09vz8/vz8/vz8/vz8/vz8/vyEjrxUXqRTYqRebqz0+vzY3vxkaozEzvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxcYoxUXpxebqy8xvx8isRUYpxUXpyMlsy9yvxcaqRUYpxUYpy0vvycptxUYox0epzs7vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8wtxUYpxcZpzk6vz8/vz8/vz8/vz8/vz8/vz8/vzEyuRUYpRUXpx8irT8/vz8/vz8/vyMlsRUYpxUXqSEjsT8/vz8/vykrtRkZozP1uz8/vzU2vxUYpRTYqRTYqTY3vy0uuRgZoTc4vz8/vz0+vx0frRUYpxUXpycnsz8/vz8/vz8/vz8/vz8/vzs8vxcaqRUXqRTYqSPmtTk6vxscpyUnrz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysttxUYpRUXpxscqy1wvx8isRUXpxUYpyPmtS9yvxcaqRUYpxUYpysstysstTk5vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vynrsxUYpRUXpynrsz8/vz8/vz8/vz8/vz8/vzk7vxsdpxUXpR0fqzs6vz8/vz8/vz8/vx0grRUYpxUXqRkcqysstyHjqRkbpTR1vT8/vz8/vzEzvRUYpRTYqRTYqR0fqxcYozEyuT8/vz8/vzZ3vRUYpxUXpxUYpTM0vT8/vz8/vz8/vz8/vz8/vzZ3vRUYpxTYqRUXqRebqxkbpyMkrTc4vy0uszMztz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0ttxUYpRUYpxebqy8xvyEksRUXpxUXpyMlsy8xvxcaqRcYox1fqT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzZ3vRscpxUYpRUXpSaoszk5vzs9vzs7vy8wuxscpxUYoyUmrzs8vz8/vz8/vz8/vz8/vyEjrxUXpxTYqRUXpxUYox8gqTk5vz8/vz8/vz8/vzExuxUYpRUXpxUYpxcZpTExuT8/vz8/vz8/vykqrxUXpRUYpRscpz0+vz8/vz8/vz8/vz8/vz8/vzZ3vRUYpRUXqRTYqRUYpSMjrT09vzV2uy0ssTAwtT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0vuRUYpRUYpxkbqS1wvyEktRUYpxUXpSwuuzEzvx8irTs6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vy8wuyMkrxcapRsbpR0dpRscpRkbpSUmrzU1vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRsdqRkbpyEjry8xuz0+vz8/vz8/vz8/vz8/vzk5vxscpxcZpSMlsTc4vz8/vz8/vz8/vz8/vzP1uysstSsstTMzuT8/vz8/vz8/vz8/vz8/vz8/vz09vyEjrxcapxveqy0ttz0+vz8/vzs8vzV2uzk5uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysttxUYpRUXpxebqyksvRcaqRUXpyMksT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vzk4vTP1uzZ3uz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vzs6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8+vzs7vz8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxUYpxUXpxUYpxUXpxUYpSepsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxkapRUXpRUYpR1fqTk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzV2uy8vsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzZ3vTP1uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vyssty0vuT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8+vzs7vTc4uzU1uT0+vzM0uTk5vT8/vzP1uzZ3vT8/vz8/vzU2uTU1uT8+vzs7vTc4uzs7vz8/vzU0tzZ3uz8/vz8/vzk6vTU0tzs8vzk5uz8/vz8/vzk5vT8/vzk4uzU1uTs8vybosSanrTk5vT8/vzk6vzU1uT0+vz8/vzs6vzc4uzV2uz8+vzU1uTk5vT8/vz8+vzU1uTk5uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx/hpykqsScorSKjqyxtsx8gqTk7vysssysssz8/vykqrykqrzAwtTs8vx/hpycorTk6vykprywttSUmrS0vtzc4vyUlqzEytzk6vyUmrTc4vTc4vykpry0utyMlrTM0uTk6vyMlryMkrTU2vTM0uSUlrSwttScorTs9vx8gqSnrsyMlrSEjrSsssyMkqzs9vyUmqyxtszk5vT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vyDhqT09vzEyuSUnrz8/vyEjrTc4vzR1vSsstTs7vyEiqT8/vz8/vz09vyDhqTs8vzc4vSMkrT8/vzk7vyMkrTc4vyKjqy0utT09vy8wuSbosSnrszEyuTEyuyDhqTEytz8/vy8wuS0utz8/vyUnryMkrSsttyUmrTs7vyEiqz0+vy0uuSRmsT8/vyUmrzs7vycorybosTc4vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs9vyKjqz0+vzExtykprz8/vyKjqzc4vzMzuyssszs8vx/hpz08vz0+vzs8vyUlqz8+vzk5vSDhqT0+vzM0vSUnrz8/vzs7vyUlrSkrtT09vx0fpyDhqTs8vz8+vzk5vyEiqTR1vS8wuSsstT8/vyanrSkqszs8vz0+vz08vyKjqz8/vy0ttykqsz8/vyUlrTs7vz0+vzExtyDhqT8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vykorz8/vzMzty0usz8/vykorzk6vzU2vS8vtT8/vyqrsSanrSqrsTs7vysqrz09vz8/vykqsScoryUmrTZ3vTs7vysssScorTR1vT0+vycnryanrT8/vzV2uysrrycorzs7vzY3vyHjqTMzuTk4vSUlqyqrsTExtT09vykprz8/vy8wty0utT8/vysrrzs8vzExtSkpsS0utT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz08vz09vz8/vz8/vz8/vz8/vz8/vz08vz8+vz8/vz8/vz08vz09vz8/vz09vyUmrTP1uz8/vz09vz08vz8+vz8/vz8/vz09vz09vz8/vz8+vz08vz09vz8/vz8/vz8/vz8+vz8/vz8/vz8/vz8/vz09vz08vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vycorysssz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vw=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 81.77mm )" draw:z-index="3" svg:height="4.23mm" svg:width="7.04mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+JPG
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 97.04mm )" draw:z-index="16" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAoAGQDASIAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAAAAUGBwIDBAgB/8QAOBAAAQMCBAQFAgMGBwAAAAAAAQIDBAURAAYSIRMxQWEHFCIyUXGBFSORJDNCcqHhNENSU2KSwf/EABkBAAMBAQEAAAAAAAAAAAAAAAECAwQABf/EACMRAAICAgEEAwEBAAAAAAAAAAABAhEDIRIEIjFBE1GhcYH/2gAMAwEAAhEDEQA/APVOE+Z6/FoEEOyFJVIdJRHYKwkvLtcJBOw+pxqzhmWJlilGVKu48s6GGE+51fQD/wBOKPnVKRWapKXX3W1h3T5zWohmA3f0pRa5Lv0v1G91W1dP0zydz8E5z46Ma/WZFXzAa6JkmEr0NtkKP7A8ALoWm3tJB378jYjFu+H+cU19tcCooEatxk/nNdHB/uI+Qdv1HQjFNoiy1S2n4qPxCCFcN2pJSQy9HHuD4I9Kki25seXOwOMkTfLSY6qMuYmG08fw9BNpEshRtqI5NJ+Pr1Jt6GXBHLFRXolGTTs9KYQ5yzNFyvTEypKFvPOrDTDCPc6s9Ow7448k5uh12O3EcmxXaw03qkNsatN+RKSRuOXK4xEPH+DKMCk1SNq4cN1QWR/AVadKv1Tb7jHm4sN5VCei0pdtok9SlZwiUd6pkUfU02XlQuG4TpAuRxNW6rf8bYeZUqrlcy7BqTsfyy5Levh6tVtz178/vhPkvMsTO+WnQTw5PDLMppJ3QSLXHY72/tiIZyznUqBDp0XK7TCKchfk2HHRrW+WwEkoTy0g2TfqeW2+CsUpv46pg5JbLdwYRZnrSqDlOVVJCUeYZZBCL+kuGwA+mo/piOZfzdVpWVIUqTHjvVioKcMVlAKEJaTsXHDc2SOZPW4A3OJRxSlHkv4NyXgsDBir8g57qdSo0x+pNolzFyeBCYYSEF1Wm5HZKQQSo8h9sb6TmjMCPEtGX6qqA60touLTGQQGToKgNR3PTn89MO+nmm19A5osnBgwYgORfPeUGM1R4hXJfiyYalLZdZtfe1xv9BvfpijZMZ2JJEJUThPRypbMJ4ghkD3SJB5E2FwOXLpYK9NYiGfcprrkRUilOpiVZuxDgAAfAvZDnyNzz2xt6XqXj7JeCc4XtFReflUiLLy/TvLzqZJZEl5YuFzNaRqU0emm1gLX9JuDuMcMpiHHjJegyZLtNdaShyY7bjObf4ZtO+k9D27WCtCw21JTBlIchr8wEKj7h2E+T72upQeo/scW9kLIq4DyqjXm2TOKv3LZCmipJ2etbZZ7fPS9huyZI4Vy+/0jFOWjR4W5OegPiu1RlMWStrhRoaBYMNn/AFdSo99999+U3jPwMy0NSwjjwJSVtlK021AEpP8AUHHfKQtyM6hpQQ4pBCVHobbHEGyYK9lehN0efRXppjlQZfiPNlKwVE2VqUkp3PxjzJSeVubey6XHRXWXafIyh4vt0lhxaozyy0Rf94ytNxfuNvuMPkxmsx+MMeFHbSmk0BsJShI9IKOn/cgfROJdlvKslWaJeZ8wcL8SdGmPHbVqTGRa3u6qttcbbn5xHckZVzVTKhWkPCNCbnvanJ2sLd03UfywNgTq5q5fBxqlmjK5XtKv99k1FrRw+NNYdq9Qp2W6aCpC5AS4sclO7AIH8urfuexxJM8Tqdl7Ik5unlsy47KKUlaR6kkpB03/AJTqwsr2TqyM90iTQY8dFPhRwht59epKFXVqUU31KVdWrueZx1ZwyNOqn4DTYZSulsPF+a865+Y6tShqWR1JGr9bYS8dQjelsNPbDwoo6MuZNVWqr6XVsqfGr/KZ91h3Va5+w6YU+EShOrVWzXVVpbdnSPKRgrqpXqKR9AEj6A4nXiHTZ1RyVOp9FbSZDiUIS2FBN0hQuBfbkDhHkLK9XpEKlKqSIuuLqQiOk3DIWSVuE/xOG9vgDYczhfkUoSm3tv8AA8aaRYeDBgxiKhgwYMccLZVCpcupM1CTAjOzWraHlIBULct+3T4wywYMFtvydQYiy4tf81xUyXdHFKuHdvTp44sOV7cK/wB++DBgxdAez4mNW2WHGW+MkiM5wFIU3pDpLm6789i3a2173xm8xXUy30NPyOElKkodPDUCnhix07Hia7noLfbBgw3P3R1HG0/XZEh6Ih4tKbipdWUaXVNukFIbN7A3A187/wBMfVxK+lTzzHHbdfTHLgDiXAkAELCbkeq9j3F974MGGc6ekBKzbJh5iUpSm5j3tUABw0g2ZTpNrGxLmq+/LthzSBPTKnidqU0XAWVqIGxv6QkdBtv1+MGDCOVqg0NMGDBhAn//2Q==
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.09mm )" draw:z-index="4" svg:height="4.23mm" svg:width="8.94mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+PBM
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 117.36mm )" draw:z-index="17" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDQKMTAwIDQwCgAAHAAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAA/AAAAAAAAAAAAAAAAO8AAAH8AAAAAAAAAAb/AAAHHwAAAAAAAAAHe8AADgcAAAAAAAAAG73gABwHAAAAAAAAAD/e4AA8BgAAAAAAAABd79gAPAYAAAAAAAAA73e4ADwGAAAAAAAAAfe7fAA8BBgAAYBgAAPf/PcAPgA+B4fD8AAH+f3vAD8A/gePx/AAD3D73gAfgLwPG8xwAB/vf73gH4G8DzOY8AA9/4d74A/DPA8jsPAAP7+P/+AH4ngeZ+DgAD+7h+7wB/J4HgfB4AA+9ze94APweD4HweAADe/7f8AB8PA8D4PAAAPe/HeAAfjwfA8DwAADuP7vAAD48HwPA8AAAX73fgMA8eD4ngeAAAD3f5wDAPnhuJ4HmAAA17v4AwDxw3kcDzAAAD/f4AMA8cZ7PA8gAAA97uADAePMcjwPYAAAD/eAB4HD+H44D9AAAA9/gAPDg/B4eA+QAAADuQAA/gHAcCAOAAAAA/wAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAA+AAAAQAAAAAAAAAAACAAAAAAAADAAAAAAAAAAAFqJqScyrUAAAAAAAABKUSUpFqVgAAAAAAAAUlEkmJYpEAAAAAAAAEoZKZmSpSAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAIAAAAAA=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="5" svg:height="4.23mm" svg:width="8.25mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+PXC
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 137.68mm )" draw:z-index="18" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 142.73mm )" draw:z-index="6" svg:height="4.23mm" svg:width="9.16mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+PGM
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 158mm )" draw:z-index="19" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6YmJhubm59fX3Hx8f7+/v9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/eJiYlhYWFiYmJiYmJjY2O/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3c3NxiYmJiYmJ1dXVqampiYmJkZGS/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v79/f38/Pzz8/Pl5eXj4+Ps7Oz29vb8/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3w8PDh4eHk5ORiYmJiYmKOjo6/v79ubm5iYmJmZmbFxcX8/Pz+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v79/f329vbGxsaOjo5ubm5ra2tqampjY2N1dXWfn5/MzMz39/f+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3q6uqIiIhubm7W1taYmJhhYWFiYmKZmZnFxcVubm5iYmJjY2O+vr78/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f3a2tqDg4NiYmKDg4O/v7/h4eHe3t63t7dubm5jY2NiYmKUlJT6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f309PS/v79gYGBhYWFxcXHR0dGUlJRiYmJhYWGTk5PDw8Nubm5hYWFiYmK/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f3S0tJnZ2diYmKfn5/4+Pj8/Pz9/f39/f38/PzS0tJmZmZjY2OBgYH6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3w8PCDg4Oqqqq+vr5jY2NiYmJubm7Q0NCQkJBiYmJiYmKUlJTHx8doaGhiYmJiYmLExMT8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f3s7Oxvb29hYWFzc3Py8vL9/f3+/v7+/v79/f39/f36+vqEhIRiYmKkpKT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f38/Pyenp5hYWFiYmKrq6u3t7djY2NiYmJ0dHTMzMyOjo5iYmJjY2OYmJjGxsZubm5iYmJlZWXb29v8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f2tra1iYmJiYmKgoKD8/Pz+/v7+/v7+/v7+/v79/f38/PyZmZliYmLMzMz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6ampq9vb19fX1iYmJiYmKrq6u3t7diYmJiYmJ0dHTNzc2YmJhiYmJiYmKUlJTCwsJxcXGpqamtra28vLz8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/d4eHhiYmJiYmKurq78/Pz+/v7+/v7+/v7+/v7+/v78/Pyfn59mZmbw8PD9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3v7++FhYViYmJ4eHjR0dF+fn5iYmJhYWGrq6u9vb1lZWViYmJycnLKysqVlZViYmJiYmKLi4vc3NypqalhYWFiYmLExMT7+/v+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3q6upmZmZiYmJiYmKPj4/8/Pz+/v7+/v7+/v7+/v7+/v78/PyZmZmAgID8/Pz9/f3+/v79/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v79/f39/f39/f39/f3+/v7+/v79/f39/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v79/f39/f39/f38/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3x8fGNjY1iYmJiYmKMjIzLy8vHx8d9fX1iYmJjY2OysrK2trZlZWViYmJzc3PX19eJiYlhYWGioqK1tbVjY2NiYmJycnK/v7/Ozs78/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7o6OhnZ2diYmJiYmJoaGjk5OT9/f3+/v7+/v7+/v7+/v78/Pyurq6ysrL9/f39/f39/f3s7Oy8vLyhoaG6urr39/f9/f3+/v7+/v7+/v7+/v79/f3z8/Pc3Nzb29vj4+P9/f39/f39/f38/Pz8/PzJycmampqgoKDr6+v9/f3+/v7+/v79/f38/Pzh4eG3t7empqa8vLz09PT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6NjY1iYmJiYmKUlJTDw8NpaWl/f3/Dw8N6enpiYmJiYmKrq6uzs7NmZmZiYmKjo6Pv7++9vb2ysrJjY2NiYmJ1dXXJycmKiopiYmK6urr6+vr+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7z8/Nvb29iYmJhYWFiYmKQkJD5+fn8/Pz9/f3+/v7+/v79/f36+vr9/f39/f38/PzHx8dxcXFiYmJiYmJhYWG/v7/9/f3+/v7+/v7+/v79/f38/PyWlpZkZGRkZGR6enr39/f9/f39/f3y8vKWlpZiYmJiYmJhYWGpqan9/f3+/v79/f3y8vKjo6NiYmJiYmJiYmJiYmKhoaH9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6EhIRiYmJiYmKYmJjGxsZubm5iYmJjY2POzs7n5+d4eHhiYmJiYmKKiopoaGhhYWGYmJj6+vq2trZiYmJiYmJ6enrKysqMjIxiYmJiYmKWlpb9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PyWlpZiYmJiYmJiYmJiYmKrq6v8/Pz9/f3+/v79/f39/f3+/v7+/v78/PzCwsJiYmJjY2NiYmJjY2NiYmKysrL9/f39/f3+/v7+/v79/f3f399jY2NiYmJiYmKkpKT7+/v9/f3u7u6Hh4djY2NlZWViYmJiYmKZmZn8/Pz9/f3q6uqAgIBtbW2jo6OIiIhiYmJiYmJ0dHT39/f+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3z8/OHh4diYmJiYmKUlJTHx8doaGhiYmJlZWXJycnx8fHs7Oze3t53d3diYmJiYmJiYmJiYmLDw8O3t7diYmJhYWF0dHTR0dGMjIxiYmJiYmKXl5fw8PDq6ur09PT9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3KyspiYmJiYmJjY2NiYmJiYmK4uLj8/Pz+/v7+/v7+/v7+/v79/f3Y2NhiYmK/v7+3t7diYmJiYmJjY2PS0tL9/f3+/v7+/v7+/v78/Pyrq6thYWFiYmJkZGTb29v8/Pz5+fmIiIhycnLc3Nx4eHhiYmJiYmKtra38/Pzw8PB4eHiFhYXt7e36+vrBwcFiYmJiYmJycnL19fX+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3z8/ONjY1iYmJiYmKTk5PDw8Nubm5iYmJmZmbBwcGurq5wcHBqamqPj4/JycmKiopmZmZra2upqamysrJiYmJiYmJ0dHTKysqKiopiYmJiYmKcnJzLy8t/f39oaGh2dna9vb38/Pz+/v7+/v7+/v7+/v7+/v79/f329vaEhIRiYmJiYmJiYmJiYmJoaGjR0dH9/f3+/v7+/v79/f3y8vJ2dnapqan6+vqamppiYmJiYmJ3d3f09PT+/v7+/v7+/v7+/v78/PyAgIBiYmJiYmJ8fHz5+fn8/PysrKxra2vj4+Pw8PBqampiYmJiYmLKysr09PSEhISKior19fX9/f38/PyhoaFhYWFiYmKDg4P6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f2enp5iYmJiYmKamprExMRtbW1iYmJmZmbCwsKkpKRiYmJiYmJiYmJiYmKEhITy8vLi4uLq6urY2NhjY2NiYmJ3d3fKysqKiopiYmJjY2OdnZ3Dw8NqampiYmJiYmJiYmJiYmLa2tr9/f3+/v7+/v7+/v7+/v7+/v79/f3b29tnZ2diYmJiYmJiYmJiYmJwcHDl5eX9/f3+/v79/f2pqal/f3/5+fns7OxqampiYmJiYmKpqan8/Pz+/v7+/v7+/v79/f3b29tlZWViYmJiYmKoqKj8/Pzh4eFoaGjS0tL8/PzKyspiYmJiYmJoaGjq6uqWlpZ/f3/19fX9/f3+/v729vZ4eHhiYmJiYmKgoKD8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PxpaWliYmJ6enq3t7dubm5iYmJpaWnIyMijo6NiYmJiYmJ/f3+AgIBiYmJiYmLi4uL8/Pz8/Pyrq6tiYmJmZma6urqMjIxiYmJiYmKdnZ3CwsJqampiYmJra2uOjo5kZGRiYmKurq79/f3+/v7+/v7+/v7+/v7+/v7+/v78/Py9vb1iYmJiYmJiYmJiYmJjY2OEhIT4+Pj9/f3k5ORvb2/e3t78/Py9vb1iYmJiYmJiYmLX19f9/f3+/v7+/v7+/v78/PyhoaFiYmJiYmJlZWXd3d38/Pyjo6OkpKT8/Pz8/Pyjo6NiYmJhYWGQkJC2trZ2dnbs7Oz9/f3+/v79/f3Ly8tiYmJiYmJiYmLOzs79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v77+/tzc3NiYmJmZmZiYmJiYmJoaGjCwsKpqaliYmJiYmKEhITNzc2AgIBiYmJoaGjv7+/8/Pz8/Py4uLhiYmJjY2NqampiYmJhYWGdnZ3IyMhra2tjY2NnZ2fBwcGfn59iYmJiYmK/v7/9/f39/f3+/v7+/v7+/v79/f3+/v79/f38/PyampphYWFiYmJiYmJhYWFiYmK1tbX8/Pzc3Ny8vLz7+/v4+PiFhYViYmJiYmJ7e3v29vb9/f39/f3+/v79/f3y8vJ0dHRiYmJiYmJ9fX36+vr8/Pzk5OT29vb8/Pz19fV4eHhiYmJjY2OYmJh1dXXU1NT9/f3+/v7+/v78/PyTk5NiYmJjY2Nzc3Pz8/P9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3BwcFiYmJiYmJhYWFoaGjBwcGkpKRhYWFiYmKEhITMzMyAgIBiYmJiYmKysrLS0tKtra28vLzW1tZ5eXlhYWFiYmJiYmKenp7CwsJra2tiYmJra2vExMSfn59iYmJiYmKAgIDz8/P9/f3+/v79/f39/f3+/v7+/v7+/v79/f39/f3z8/N9fX1jY2NiYmJiYmJiYmJra2vt7e39/f39/f38/Pzc3NxjY2NiYmJiYmKzs7P9/f3+/v7+/v7+/v78/Py4uLhiYmJiYmJiYmKoqKj8/Pz9/f3+/v7+/v79/f3X19diYmJhYWFkZGRjY2Opqan8/Pz+/v7+/v78/Pzn5+dpaWliYmJiYmKcnJz8/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PzLy8uZmZmfn5/S0tKjo6NiYmJiYmKDg4PLy8t5eXlhYWFiYmKtra2ysrJjY2NiYmJiYmJ+fn7KysqoqKiXl5e+vr7Dw8NqampiYmJra2vDw8OdnZ1iYmJjY2OFhYXq6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3c3NxqampiYmJhYWFiYmJiYmLFxcX9/f3+/v78/PypqaliYmJiYmJmZmbk5OT9/f3+/v7+/v79/f3y8vJ3d3diYmJiYmJkZGTa2tr9/f3+/v7+/v7+/v78/Pyurq5iYmJiYmJiYmJ3d3fx8fH9/f3+/v7+/v79/f2oqKhiYmJiYmJiYmLS0tL9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f38/Pz39/ekpKRiYmJhYWF+fn7Ozs56enpjY2NiYmKpqanp6elmZmZiYmJlZWViYmJiYmJ7e3vs7Oz6+vrLy8tmZmZiYmJnZ2fExMScnJxiYmJhYWF/f3/u7u79/f3+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v79/f38/PyhoaFiYmJiYmJhYWFiYmKtra39/f39/f309PR1dXViYmJiYmKNjY38/Pz+/v7+/v7+/v78/PyoqKhiYmJiYmJiYmJ9fX35+fn+/v7+/v7+/v7+/v75+fl9fX1iYmJiYmJiYmLDw8P9/f3+/v7+/v79/f3w8PBwcHBiYmJiYmJ/f3/6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3S0tJiYmJiYmKEhITOzs5+fn5hYWFiYmKhoaH6+vre3t5iYmJiYmKTk5Ojo6NiYmJhYWF9fX3j4+ODg4NiYmJqamq/v7+fn59iYmJiYmJ+fn7p6en9/f3+/v7+/v7+/v7+/v7Z2dm6urr+/v7+/v7+/v7+/v7+/v7+/v79/f3m5uZqampiYmJhYWFiYmKjo6P8/Pz9/f3S0tJhYWFiYmJiYmLDw8P9/f3+/v7+/v79/f3W1tZnZ2dmZmZiYmJiYmKioqL8/Pz+/v79/f39/f39/f3U1NRjY2NiYmJiYmJ8fHz19fX+/v7+/v7+/v79/f3FxcViYmJiYmJjY2O6urr8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vq6urqGhobJycl7e3tiYmJiYmKtra2wsLCQkJDq6up4eHhiYmJra2u+vr6tra1iYmJiYmJ6enrFxcWIiIi9vb2goKBiYmJhYWF/f3/p6en9/f3+/v7+/v7+/v7+/v79/f2ZmZl6enr9/f3+/v7+/v7+/v7+/v79/f3+/v78/PyPj49iYmJjY2NiYmKrq6v8/Pz7+/ujo6NjY2NiYmJubm7u7u79/f3+/v79/f3y8vJ9fX2cnJxra2tiYmJiYmLS0tL8/Pz6+vqlpaXm5ub8/PyioqJiYmJiYmJjY2POzs79/f3+/v7+/v79/f38/PyNjY1iYmJiYmJnZ2fp6en8/PzW1ta5ubn9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3q6up7e3tiYmJiYmKqqqrHx8diYmJiYmKZmZnOzs5vb29jY2NmZma9vb2lpaViYmJiYmKAgIDh4eGrq6thYWFiYmJ9fX3q6ur9/f3+/v7+/v7+/v7+/v7+/v78/PyAgICCgoL8/Pz+/v7+/v7+/v7+/v7+/v7+/v78/PyoqKhiYmJiYmJgYGDFxcX8/Pz09PR1dXViYmJiYmKampr8/Pz8/Pz9/f38/PyZmZmZmZm4uLhiYmJjY2N2dnb19fX8/PzS0tJra2vv7+/5+fl7e3tiYmJiYmKAgID7+/v9/f3+/v7+/v79/f3l5eVmZmZhYWFiYmKVlZX7+/v4+PiAgICtra39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PyysrJkZGSioqK6urq/v7+Pj49iYmJiYmKZmZnIyMhvb29iYmJmZma8vLykpKRiYmJiYmKCgoLDw8N4eHh7e3vq6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v709PRqamqEhIT8/Pz9/f39/f3+/v7+/v7+/v7+/v78/Pyjo6NiYmJhYWFra2vs7Oz8/PzY2NhiYmJiYmJkZGTW1tb9/f39/f39/f2zs7N6enrx8fGNjY1iYmJiYmKjo6P6+vr19fV7e3u1tbX8/PzX19djY2NiYmJiYmK+vr79/f3+/v7+/v7+/v79/f28vLxiYmJiYmJiYmLMzMz8/Py6urp4eHj29vb+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PzW1tatra1iYmJubm7ExMSRkZFiYmJhYWGYmJjIyMhvb29iYmJlZWW8vLyoqKhiYmJiYmJ+fn7Kysrq6ur9/f3+/v7+/v7+/v7+/v7+/v79/f3+/v7c3NxiYmJ7e3v6+vr+/v7+/v7+/v7+/v7+/v7+/v74+Ph9fX1iYmJiYmK1tbX9/f38/Py1tbViYmJiYmJ4eHj4+Pj9/f38/Py1tbVubm7i4uLz8/Nra2tiYmJiYmLJycn7+/ufn5+AgID6+vr8/PylpaViYmJiYmJ1dXX09PT+/v7+/v7+/v7+/v78/PyNjY1iYmJiYmJycnL39/ff399qamrR0dH9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Py6urpiYmJiYmJubm7IyMiNjY1iYmJiYmKZmZnMzMxubm5iYmJlZWXCwsKoqKhiYmJ6enrr6+v8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3CwsJiYmJoaGjq6ur+/v7+/v7+/v79/f39/f39/f3JycliYmJiYmKJiYn5+fn9/f38/PyYmJhiYmJiYmKRkZH7+/v7+/uvr69oaGjU1NT8/Pzc3NxjY2NiYmJlZWXf39+9vb1mZmbh4eH9/f35+fl+fn5iYmJiYmKhoaH8/Pz+/v7+/v7+/v7+/v7w8PBra2tiYmJiYmKamprq6upycnKenp77+/v9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Py3t7diYmJiYmJzc3PFxcWNjY1iYmJiYmKcnJzLy8tubm5iYmJlZWW0tLSzs7Pm5ub9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f2tra1jY2NiYmKtra38/Pz9/f39/f39/f38/Pzt7e14eHhiYmKAgIDr6+v9/f3+/v76+vqEhIRiYmJiYmJzc3O0tLSMjIxubm7Y2Nj9/f39/f3Nzc1iYmJjY2NlZWV+fn5lZWXHx8f8/Pz9/f3d3d1lZWViYmJjY2PU1NT9/f3+/v7+/v7+/v7+/v7f399kZGRiYmJiYmJxcXFubm6Tk5Pg4OC6urrOzs7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pz8/Py3t7djY2NiYmJycnLIyMiSkpJiYmJiYmKWlpbKyspra2thYWGAgID6+vr9/f3+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7c3Nx2dnZiYmJhYWGjo6Pn5+f09PTv7+/FxcVzc3NiYmKZmZnv7+/9/f3+/v7+/v79/f2Pj49iYmJiYmJiYmJiYmKDg4Pk5OT9/f3+/v79/f3IyMhiYmJiYmJiYmJoaGjFxcX9/f39/f39/f2oqKhhYWFiYmJzc3P29vb+/v7+/v7+/v7+/v7+/v7c3NxiYmJiYmJiYmJiYmKPj4/09PTb29uysrLDw8P9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pz8/Py/v79iYmJiYmJubm7ExMSUlJRjY2NiYmK6urrT09OKioro6Oj8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u7BwcGTk5Nra2tvb294eHhzc3Nvb2+ZmZnW1tb8/Pz9/f3+/v7+/v7+/v79/f3X19d4eHhtbW2Ojo7FxcX4+Pj9/f3+/v7+/v79/f3m5uZ1dXVoaGiVlZXi4uL8/Pz+/v7+/v79/f3T09Ozs7OwsLDOzs79/f3+/v79/f3+/v7+/v7+/v719fWQkJBqamp6enq5ubn4+Pj9/f3v7+/Z2dnj4+P+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v79/f38/Py3t7diYmJiYmJwcHCzs7NqampiYmKUlJT7+/v6+vr9/f3+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f38/Pzz8/Ph4eHU1NTd3d3y8vL9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f329vby8vL8/Pz9/f39/f3+/v7+/v7+/v7+/v79/f3y8vLq6ur8/Pz9/f3+/v7+/v7+/v7+/v7+/v79/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vrt7e339/f9/f39/f3+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f38/Py4uLhjY2NiYmJiYmJiYmJhYWGmpqb9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v78/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f38/Py8vLxpaWliYmJiYmJ9fX3q6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v79/f39/f3b29u/v7/+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v79/f3e3t7U1NT9/f3+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pze3t6zs7O+vr7y8vL9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vrr6+vh4eHW1tb39/fU1NTm5ub9/f3W1tbc3Nz9/f3+/v7Z2dnW1tb5+fnr6+vg4ODv7+/9/f3U1NTc3Nz9/f39/f3o6OjS0tLv7+/l5eX9/f39/f3m5ub9/f3j4+PV1dXx8fGkpKScnJzo6Oj9/f3q6urW1tb4+Pj9/f3r6+vg4ODa2tr39/fU1NTo6Oj9/f34+PjU1NTm5ub9/f3+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/eHh4erq6ugoKCQkJC2traEhITt7e2xsbGzs7P8/PyoqKirq6vBwcHx8fGIiIifn5/r6+umpqa1tbWZmZm/v7/i4uKYmJjKysrr6+uamprf39/j4+Ojo6O9vb2UlJTS0tLr6+uZmZmTk5Pc3NzS0tKZmZm2tragoKD09PSFhYWurq6WlpaQkJC0tLSRkZHz8/Obm5u4uLjj4+P+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f309PSGhob29vbLy8uenp77+/uRkZHi4uLW1ta0tLTu7u6MjIz8/Pz8/Pz19fWHh4fz8/Pi4uKTk5P6+vrt7e2Tk5Pg4OCNjY28vLz19fXCwsKlpaWurq7KysrKysqIiIjIyMj7+/vDw8O6urr7+/ucnJyTk5O1tbWampru7u6IiIj39/e8vLydnZ36+vqbm5vu7u6goKCkpKTk5OT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f309PSOjo75+fnExMSpqan7+/uPj4/i4uLR0dGysrLw8PCEhITz8/P4+Pjx8fGVlZX5+fnj4+OIiIj4+PjU1NScnJz8/Pzt7e2YmJiwsLD19fV9fX2Hh4fx8fH7+/vm5uaIiIjX19fDw8OwsLD7+/ufn5+pqanz8/P39/fy8vKRkZH7+/u3t7epqan7+/uYmJjv7+/5+fnExMSIiIj4+Pj9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v719fWjo6P6+vrOzs65ubn8/PykpKTo6OjZ2dm/v7/8/Pyurq6cnJyurq7v7++rq6v39/f9/f2rq6uhoaGZmZng4ODu7u6zs7Ofn5/W1tb6+vqgoKCfn5/8/PzX19eurq6jo6Pu7u7f39+Ojo7Pz8/h4eGWlpavr6/ExMT19fWmpqb8/PzExMS6urr8/Pytra3w8PDFxcWoqKi5ubn9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f37+/v+/v77+/v7+/v+/v76+vr9/f39/f37+/v8/Pz9/f3x8fH09PT9/f37+/v+/v79/f39/f3x8fH4+Pj9/f37+/vv7+/29vb8/Pz09PSYmJjX19f9/f339/fv7+/6+vr9/f39/f319fX19fX+/v76+vrv7+/29vb9/f37+/v9/f36+vr6+vr+/v77+/v+/v7y8vLx8fH9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7t7e2hoaGwsLD9/f3+/v79/f3+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v4=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 163.05mm )" draw:z-index="7" svg:height="4.23mm" svg:width="8.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+PNG
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 178.32mm )" draw:z-index="20" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 183.37mm )" draw:z-index="8" svg:height="4.23mm" svg:width="8.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+PPM
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 199.84mm )" draw:z-index="21" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 204.89mm )" draw:z-index="9" svg:height="4.23mm" svg:width="8.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+TGA
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 220.16mm )" draw:z-index="22" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 225.21mm )" draw:z-index="10" svg:height="4.23mm" svg:width="6.33mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+TIF
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 240.48mm )" draw:z-index="23" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<text:p text:style-name="paragraph10" >
+</text:p>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="8.95mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 37.21mm )" draw:z-index="11" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 42.26mm )" draw:z-index="1" svg:height="4.23mm" svg:width="8.7mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 92.6mm 56.86mm )" draw:z-index="14" svg:height="-9.95mm" svg:width="25.25mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:path draw:style-name="graphic9" draw:transform="translate( 32.66mm 16.56mm )" draw:z-index="12" svg:d="m3266 1989h874v-333h-874v333z" svg:height="3.33mm" svg:viewBox="0 0 873 333" svg:width="8.73mm" text:anchor-page-number="1" text:anchor-type="page" >
+</draw:path>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 61.45mm )" draw:z-index="2" svg:height="4.23mm" svg:width="6.83mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 76.72mm )" draw:z-index="15" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vyMlsxebqxserS8xvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vyEhrRUXpxUYpxUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRUXpRTYqRkcqxZZqRUYpxUYpy0vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vzc5vzc4vzs7vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vzc4vTc4vxUYpxUXqSBisy0vvxcaqxUXpxcZpS8wuz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vy8xuSKjqxoboxkaoxkaoxcYoRscpycnrzEyuT8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk6vx8hqxkbpzM1vyMlsxUXpxUYpyMltS1wvxkbqRUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vx8gqxcYoR8gqS8vtzk4vTZ3vSwttRkbpxUYpRUYpSMkrz8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vy0vuRUYoxUXpxkbqTEzvyFksxUXpxUYpyFksy1wvRcaqxUXpxUYpS8vtz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzM0uxcZpxUXpScnsz0+vz8/vz8/vz8/vz8/vzE0vxUYpxUYpx0frT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vx8gqSkqtSsuvRUYpxUYpxkbqTE0vyEjsRUYpxUXpyFksy8xvxcZpxUXpxUYpS8wuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vxkbpxUXpxmcqTs9vz8/vz8/vz8/vz8/vz8/vz8/vx8gqxUXpSaosz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUnsRUYpRUYpSkqtystuxUXpxUYpxkcqy9yvyEjsRUXqRUYpyMlsy1wvxebqxUXpxcZozU2vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vykqtRUYpRUXpyUntT8/vz8/vz8/vz8/vz8/vz8/vz8/vyMlrxcYozByvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vyMlry0vuxveqxUXpxUXpycqtystuxUYpxUXpxscqy9yvyMlsxUXpRUXpyFksy1wvRkbpycqtSkqsy0utz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vxsdqxTYqRUXqSkrtz8/vz8/vz8/vz8/vz8/vz8/vz8/vycnrxcZozs8vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vx8gqxUYpRsdqTEzvx0frxUXpxUXpSkquSsuvRcYqRUYpxkcqy8xvyMlsxUYpxUYpx8irzY3vycptxUYpRcYoS8wuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk6vxcZpxUXqRUXqSEjrz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUmrR8fpz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz08vx8irRUYpxUXpyEiry9yvy8xvR0erRUXpxUYpykruSstuxUYpxUXpxscqzM1vx8hrxUXpSaosystuxUYpxUXpxmcqS8vuTMzuz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk5vxUZpxTYqRMXqxZZqTc5vz8/vz8/vz8/vz8/vz8/vz8/vyqrsSsssT8/vz8/vz8/vzk7vy0utyUnsy0utz0+vz8/vz8/vz8/vz8/vz8/vz8/vz08vzY3vzU2vTc4vz8/vz8/vz8/vz8/vz8/vzEyuyUmryUnsTk7vz8/vz8/vz8/vz8/vz8/vzc4vysttyepsy0utz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vyEjrxUXpRUYpyFksy1wvxcZpR0fqy1wvRsdqxUYpxUXpScqtyksuxTYqRUYpSXotTs8vy0vuSkruRUYpxUXpxkcrS8xvx8irRcYoS0ttz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vxkbqRUXqROYqxUXpyEjrT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8xuRkbpxUYpRUXpxUYpS8vtT8/vz8/vz8/vz8/vz8/vz8/vyUlrRUYpRUYpR0epT09vz8/vz8/vz08vyMlrxUXpRUYpRUXpSkqsz8/vz8/vz8/vz09vybosRcYoRUXpRUYpRUYpSUnsT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vx8gqxUXpxUYpyMlsy1wvRebqxUXpxcYozEzvTc5vxsdqRUYpxUXqR8hsxZZqRUXpyMlsz8/vyksuRUYpxUXqRveqy9yvx8isRUXpxUYpSMlrT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyMlsRUXpxUXqRUXqRUYpycptT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8wuRUYpRUYpRUYpxTYqRUYpSsssz8/vz8/vz8/vz8/vz8/vzY3vxUYpRUXpxUYpSbosT8/vz8/vzs7vx8hqxUYpRTYqRUYpxUXpyRmsT8/vz8/vzk6vx1fqRkaoyaosx8hrxUXpxUXpxmcqT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vx8hrRUXpxUXpyFksy8xvxcZpxUYpxUYpzByvTs8vzk7vzY3vxscqxTYqRUXpxUYpxUXpy1wvSstuRUYpRUXpxkcqzEzvx8isRUXpxUYpyMlszs8vzk6vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzByvRUYpRTYqROYqxUXqRUYpywttT8/vz8/vz8/vz8/vz8/vz8/vzV2uxcYoS0vuyotvRUXqRUXqRUYpzM0uz8/vz8/vz8/vz8/vz8/vycqtRUYpxUXpxUYpzU2vz8/vz8/vyDhqRkcpzU2vxkdrRUXqRUXpykqtT8/vzs8vx0dpx8hqzk7vz8/vy1wvRTYqRTYqRmcqT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vx8irRUYpRUXpyEksS1wvRkaqxUXpxUYpy1wvSkquRebqxcaqSEjsS9yvx8hrRcZpRcapycqtSksuRUXpxUYpxscqy8xvx8isRUYpxUYpSPmtS9yvx0frRcZpxsdqS8vtz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx8gqxUXpxTYqRMXqxUYpxUZpzM0vT8/vz8/vz8/vz8/vzs8vxsdpSkqsT8/vyQmsxUXqRTYqRsdqz09vz8/vz8/vz8/vz8/vz8/vx0frRUXqRTYqRserT0+vz8/vykqsxcapTc4vzs8vxcaqRUXqRUYpS9yvz09vx8gqSEiqT09vz8/vz8/vyUntRUXpxUXqR0grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyUnsRUYpxUXpyUnty0vvxcaqRUYpxcYqS1wvSXotxUXpxUYpxUXqRUYpx0grTs9vzc4vzk6vzM1vxUYpRTYqRkdrS8xvx8irxUYpxUXpyPmtS1wvRZZqRUXpxUXqRUXpxUYpTU2vT8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vxcZpxUXqRTYqRMXqxTYqRkbqTc5vz8/vz8/vz8/vykqsx0fpz0+vzk7vxcaqRUXpxUYpycptT8/vz8/vz8/vz8/vz8/vzU2vRUYpxTYqRUXpycptT8/vzc4vRgZoTM0vT8/vzEyuxUYpxUXqRUZpzk6vyMlrx1fqT09vz8/vz8/vz0+vxsdqxTYqRUXpycnsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vxcZpRTYqRsdrSotvRebqxUXpxcZpy8xvyXotxUYpxUXpx0frxsfrxUYpxUYpTc4vz8/vz8/vykqtRUXpxTYqSsuvSBisxUYpxUXpSPmtS1wvxZZqRUXpxcaqyBisxUYpxUXpSkrtT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0vuRUXpRTYqRTYqRUXqRUYpx8gqz0+vz8/vzk4uxobozY3vz8/vy0utxUYpxUXqRUYpTU1vz8/vz8/vz8/vz8/vz8/vybosRUXpxUXpxUZpzY3vz8/vycorSkprz8/vz8/vybosRUXpxUXqSEjsSstuRsdpzs7vz8/vz8/vz8/vzEyuRUYpxUXqRUXpTEzvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vxmcqRUXpxcYqRUXpxUYpxZZqS1wvScptxUYpxUYpx0gry9yvx0frxUYpxcZpTs7vz8/vz8/vystuRUYpxUYpxcaqRUXqRUXpyPmtS8xvxcaqRUXpxZZqS0vvyUntxUXpxUYpS8vuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyRmsRUXpxMXqxOYqxTYqRUYpykstz8/vzZ3uy8vtT8/vz0+vx8gqxTYqRUYpx0eqT0+vz8/vz8/vz8/vz8/vzs9vxmcqRTYqRUXpx0fqz0+vz8/vzk5vT09vz8/vz09vxsdqRTYqRTYqSMlsxscpzP1uz8/vz8/vz8/vz8/vyMkrxUXpxTYqRkcpzs9vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8vtxUYpRUYpRUXpxcZpy0vvSXotxUXpxUXpx0gry9yvx0frRUYpxUXpykstzE0vykqtS0uuTM1vxsdqRUXpxUXpxUXpSUnsy1wvxcaqRUXpxcaqS1wvSUntRUYpxUXpx1fqT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs9vxveqxUYpxUXqRTYqRUXqRcapzs7vz8/vz8/vz8/vzU2vxUYpRUXqRUXpysstT8/vz8/vz8/vz8/vz8/vystuRUXpxTYqRUXpykqsz8/vz8/vz8/vz8/vz8/vzM1vxUXpRUXqRTYqRUYpSkqtT8/vz8/vz8/vz8/vzk5vxcapRTYqRUXpyUnsT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzMzuyMlsSUnszEzvyXotRUXpxUYpx0gry8xvxsdrRUXpxUYpScquSksuRUYpRUXpRUYpRserS9yvycptyMlsS0vvS1wvRZZqRUXpxcaqS1wvyPmtRUYpRUXpx8hrTk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vxcaqRUXqRMXqxTYqRUYpy8wuT8/vz8/vz8/vycqtRUYpxUXqRUZpzc4vz8/vz8/vz8/vz8/vzs9vxsdqxTYqRUXqRUYpzU2vT8/vz8/vz8/vz8/vz8/vykrtxUXpxTYqRUXqRsdqTs8vz8/vz8/vz8/vz8/vycptRUYpxUXqRUYpTM0uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vyXotRUYpxUXpx0erTEzvxserRUYpxUYpycptTk6vxUYpxTYqRUYpxUYpxUXpxserTk7vz8/vy9yvxUYpxUXpxcZpy1wvyQmsxUXpxUXpx0fqzs8vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vybosRUXpxOYqxMXqxUYpynrsz8/vz8/vz09vxkcqxUYpxUXqSEjrz8/vz8/vz8/vz8/vz8/vyepsxUXpxUXqRTYqRserT8/vz8/vz8/vz8/vz8/vz0+vxveqxTYqRUXqRUYpy8wuT8/vz8/vz8/vz8/vzs8vxkbqRUXqRUYpx0frT0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzM0uRcYoxUYpR0grzEzvx0erRUXpxUXpyUntT8/vzY3vxUYpxTYqSEktSXotxUXqRUXpx1fqTc4vx0grRUYpRcaqS0vvSUntRUYpxUXpx0fqzs6vz8/vz8/vz8/vz8/vz8/vzV2uy0usz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk5vxcaqRUXqRMXqxUXpybosT8/vz8/vzM0uxUXpxUXqRUYpS8wuz8/vz8/vz8/vz8/vzR1vRUYpRZZqRUXqRTYqSUnsz8/vz8/vz8/vz8/vz8/vzR1vRUYpxTYqRUXqRveqz0+vz8/vz8/vz8/vz8/vy8xuRUXpxTYqRUXpy0uuT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utR8hqy8xvxserRUXpxUXpykquSkrtyEjrzk7vxveqxUXpxcaqSsuvykruRUXpRUYpxsdqy8xvR8hrS0vuyUntRUXpxUXpx0fqzk6vz8/vz8/vz8/vz8/vz8/vz8/vyMlrx0epz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyEjsRUXqRUXqRUYpykqsz8/vz8/vybosRUXpxTYqRkbpzk7vz8/vz8/vz8/vzs8vx1fqSQmsxcaqxUXqRUXpTM0vT8/vz0+vykprzc5vz8/vybosRUXpxUXqRUYpTEzvT8/vz8/vz8/vz8/vz8/vyEjrRUXpxTYqRUZpzk6vz8/vzU1uS0usz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzk7vx0eqRUXpxUYpycquS8xvRUYpRUYpSMlszEzvxebqxUYpxcZpy0uvSXotRTYqRUYpx0frTc4vycqtRUXpRUYpRveqzk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vx0fqx8grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vycptRTYqRTYqRUXpy8wuT8/vzs9vxmcqRUYpxUXpyRmsT8/vz8/vz8/vz8/vyUmrSMlrystuxUXqRTYqRsdqTs9vz8/vzM0uRkaoTs7vz0+vxveqxUXpxUYpx0fqz8/vz8/vz8/vz8/vz8/vzc5vxUYpRUXqRUXpyMlrz8/vz0+vx8gpysrrz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysstRcYoyXotSstuy0vuyEjrxUXpxUYpyMlsy8xvxkbqRUXpxZZqS0uvSXotRUYpRUXpx0gry1wvRsdqR0eqTs7vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vxcapx8grT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vyXotRUXpxUXqRcapzk7vz8/vzM1vxUYpRTYqRUYpzR1vT8/vz8/vz8/vysstRsdqTs8vyEirxUYpxUXpyaosz8/vz09vx0epyxtsz8/vzU1vxUYpRTYqRUXpy0vuT8/vz8/vz8/vz8/vz8/vy0uuRUYpxUXqRUYpzEyuz8/vy0utx0dpz0+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzR1vSkrtRUYoxkbpy1wvSEjsxUYpxUXpyMlsy8xvxebqxUXpxcYqS0uvScptxUXpxUXpxveqzEyuzk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRUYpRveqz8+vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx0erRUYpxUYpSsstz8/vz8/vysttxUXpxUXqRsdqz0+vz8/vz8/vyxtsxobozc4vzs9vxcapxUXqRUYpzEyuz8/vyUnsR0fpz8+vz8/vyXotRUXpxTYqRsdqz09vz8/vz8/vz8/vz8/vz8/vyEjrxUXqRTYqRebqz0+vzY3vxkaozEzvT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxcYoxUXpxebqy8xvx8isRUYpxUXpyMlsy9yvxcaqRUYpxUYpy0vvycptxUYox0epzs7vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy8wtxUYpxcZpzk6vz8/vz8/vz8/vz8/vz8/vz8/vzEyuRUYpRUXpx8irT8/vz8/vz8/vyMlsRUYpxUXqSEjsT8/vz8/vykrtRkZozP1uz8/vzU2vxUYpRTYqRTYqTY3vy0uuRgZoTc4vz8/vz0+vx0frRUYpxUXpycnsz8/vz8/vz8/vz8/vz8/vzs8vxcaqRUXqRTYqSPmtTk6vxscpyUnrz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysttxUYpRUXpxscqy1wvx8isRUXpxUYpyPmtS9yvxcaqRUYpxUYpysstysstTk5vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vynrsxUYpRUXpynrsz8/vz8/vz8/vz8/vz8/vzk7vxsdpxUXpR0fqzs6vz8/vz8/vz8/vx0grRUYpxUXqRkcqysstyHjqRkbpTR1vT8/vz8/vzEzvRUYpRTYqRTYqR0fqxcYozEyuT8/vz8/vzZ3vRUYpxUXpxUYpTM0vT8/vz8/vz8/vz8/vz8/vzZ3vRUYpxTYqRUXqRebqxkbpyMkrTc4vy0uszMztz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0ttxUYpRUYpxebqy8xvyEksRUXpxUXpyMlsy8xvxcaqRcYox1fqT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzZ3vRscpxUYpRUXpSaoszk5vzs9vzs7vy8wuxscpxUYoyUmrzs8vz8/vz8/vz8/vz8/vyEjrxUXpxTYqRUXpxUYox8gqTk5vz8/vz8/vz8/vzExuxUYpRUXpxUYpxcZpTExuT8/vz8/vz8/vykqrxUXpRUYpRscpz0+vz8/vz8/vz8/vz8/vz8/vzZ3vRUYpRUXqRTYqRUYpSMjrT09vzV2uy0ssTAwtT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0vuRUYpRUYpxkbqS1wvyEktRUYpxUXpSwuuzEzvx8irTs6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs8vy8wuyMkrxcapRsbpR0dpRscpRkbpSUmrzU1vz8/vz8/vz8/vz8/vz8/vz8/vzU2vRsdqRkbpyEjry8xuz0+vz8/vz8/vz8/vz8/vzk5vxscpxcZpSMlsTc4vz8/vz8/vz8/vz8/vzP1uysstSsstTMzuT8/vz8/vz8/vz8/vz8/vz8/vz09vyEjrxcapxveqy0ttz0+vz8/vzs8vzV2uzk5uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vysttxUYpRUXpxebqyksvRcaqRUXpyMksT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vzk4vTP1uzZ3uz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vz09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vzs6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8+vzs7vz8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxUYpxUXpxUYpxUXpxUYpSepsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vy0utxkapRUXpRUYpR1fqTk6vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzV2uy8vsz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzZ3vTP1uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzY3vyssty0vuT09vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8+vzs7vTc4uzU1uT0+vzM0uTk5vT8/vzP1uzZ3vT8/vz8/vzU2uTU1uT8+vzs7vTc4uzs7vz8/vzU0tzZ3uz8/vz8/vzk6vTU0tzs8vzk5uz8/vz8/vzk5vT8/vzk4uzU1uTs8vybosSanrTk5vT8/vzk6vzU1uT0+vz8/vzs6vzc4uzV2uz8+vzU1uTk5vT8/vz8+vzU1uTk5uz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz0+vx/hpykqsScorSKjqyxtsx8gqTk7vysssysssz8/vykqrykqrzAwtTs8vx/hpycorTk6vykprywttSUmrS0vtzc4vyUlqzEytzk6vyUmrTc4vTc4vykpry0utyMlrTM0uTk6vyMlryMkrTU2vTM0uSUlrSwttScorTs9vx8gqSnrsyMlrSEjrSsssyMkqzs9vyUmqyxtszk5vT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vyDhqT09vzEyuSUnrz8/vyEjrTc4vzR1vSsstTs7vyEiqT8/vz8/vz09vyDhqTs8vzc4vSMkrT8/vzk7vyMkrTc4vyKjqy0utT09vy8wuSbosSnrszEyuTEyuyDhqTEytz8/vy8wuS0utz8/vyUnryMkrSsttyUmrTs7vyEiqz0+vy0uuSRmsT8/vyUmrzs7vycorybosTc4vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs9vyKjqz0+vzExtykprz8/vyKjqzc4vzMzuyssszs8vx/hpz08vz0+vzs8vyUlqz8+vzk5vSDhqT0+vzM0vSUnrz8/vzs7vyUlrSkrtT09vx0fpyDhqTs8vz8+vzk5vyEiqTR1vS8wuSsstT8/vyanrSkqszs8vz0+vz08vyKjqz8/vy0ttykqsz8/vyUlrTs7vz0+vzExtyDhqT8+vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz09vykorz8/vzMzty0usz8/vykorzk6vzU2vS8vtT8/vyqrsSanrSqrsTs7vysqrz09vz8/vykqsScoryUmrTZ3vTs7vysssScorTR1vT0+vycnryanrT8/vzV2uysrrycorzs7vzY3vyHjqTMzuTk4vSUlqyqrsTExtT09vykprz8/vy8wty0utT8/vysrrzs8vzExtSkpsS0utT8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz08vz09vz8/vz8/vz8/vz8/vz8/vz08vz8+vz8/vz8/vz08vz09vz8/vz09vyUmrTP1uz8/vz09vz08vz8+vz8/vz8/vz09vz09vz8/vz8+vz08vz09vz8/vz8/vz8/vz8+vz8/vz8/vz8/vz8/vz09vz08vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzs7vycorysssz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vw=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 81.77mm )" draw:z-index="3" svg:height="4.23mm" svg:width="7.04mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 97.04mm )" draw:z-index="16" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAoAGQDASIAAhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAAAAUGBwIDBAgB/8QAOBAAAQMCBAQFAgMGBwAAAAAAAQIDBAURAAYSIRMxQWEHFCIyUXGBFSORJDNCcqHhNENSU2KSwf/EABkBAAMBAQEAAAAAAAAAAAAAAAECAwQABf/EACMRAAICAgEEAwEBAAAAAAAAAAABAhEDIRIEIjFBE1GhcYH/2gAMAwEAAhEDEQA/APVOE+Z6/FoEEOyFJVIdJRHYKwkvLtcJBOw+pxqzhmWJlilGVKu48s6GGE+51fQD/wBOKPnVKRWapKXX3W1h3T5zWohmA3f0pRa5Lv0v1G91W1dP0zydz8E5z46Ma/WZFXzAa6JkmEr0NtkKP7A8ALoWm3tJB378jYjFu+H+cU19tcCooEatxk/nNdHB/uI+Qdv1HQjFNoiy1S2n4qPxCCFcN2pJSQy9HHuD4I9Kki25seXOwOMkTfLSY6qMuYmG08fw9BNpEshRtqI5NJ+Pr1Jt6GXBHLFRXolGTTs9KYQ5yzNFyvTEypKFvPOrDTDCPc6s9Ow7448k5uh12O3EcmxXaw03qkNsatN+RKSRuOXK4xEPH+DKMCk1SNq4cN1QWR/AVadKv1Tb7jHm4sN5VCei0pdtok9SlZwiUd6pkUfU02XlQuG4TpAuRxNW6rf8bYeZUqrlcy7BqTsfyy5Levh6tVtz178/vhPkvMsTO+WnQTw5PDLMppJ3QSLXHY72/tiIZyznUqBDp0XK7TCKchfk2HHRrW+WwEkoTy0g2TfqeW2+CsUpv46pg5JbLdwYRZnrSqDlOVVJCUeYZZBCL+kuGwA+mo/piOZfzdVpWVIUqTHjvVioKcMVlAKEJaTsXHDc2SOZPW4A3OJRxSlHkv4NyXgsDBir8g57qdSo0x+pNolzFyeBCYYSEF1Wm5HZKQQSo8h9sb6TmjMCPEtGX6qqA60touLTGQQGToKgNR3PTn89MO+nmm19A5osnBgwYgORfPeUGM1R4hXJfiyYalLZdZtfe1xv9BvfpijZMZ2JJEJUThPRypbMJ4ghkD3SJB5E2FwOXLpYK9NYiGfcprrkRUilOpiVZuxDgAAfAvZDnyNzz2xt6XqXj7JeCc4XtFReflUiLLy/TvLzqZJZEl5YuFzNaRqU0emm1gLX9JuDuMcMpiHHjJegyZLtNdaShyY7bjObf4ZtO+k9D27WCtCw21JTBlIchr8wEKj7h2E+T72upQeo/scW9kLIq4DyqjXm2TOKv3LZCmipJ2etbZZ7fPS9huyZI4Vy+/0jFOWjR4W5OegPiu1RlMWStrhRoaBYMNn/AFdSo99999+U3jPwMy0NSwjjwJSVtlK021AEpP8AUHHfKQtyM6hpQQ4pBCVHobbHEGyYK9lehN0efRXppjlQZfiPNlKwVE2VqUkp3PxjzJSeVubey6XHRXWXafIyh4vt0lhxaozyy0Rf94ytNxfuNvuMPkxmsx+MMeFHbSmk0BsJShI9IKOn/cgfROJdlvKslWaJeZ8wcL8SdGmPHbVqTGRa3u6qttcbbn5xHckZVzVTKhWkPCNCbnvanJ2sLd03UfywNgTq5q5fBxqlmjK5XtKv99k1FrRw+NNYdq9Qp2W6aCpC5AS4sclO7AIH8urfuexxJM8Tqdl7Ik5unlsy47KKUlaR6kkpB03/AJTqwsr2TqyM90iTQY8dFPhRwht59epKFXVqUU31KVdWrueZx1ZwyNOqn4DTYZSulsPF+a865+Y6tShqWR1JGr9bYS8dQjelsNPbDwoo6MuZNVWqr6XVsqfGr/KZ91h3Va5+w6YU+EShOrVWzXVVpbdnSPKRgrqpXqKR9AEj6A4nXiHTZ1RyVOp9FbSZDiUIS2FBN0hQuBfbkDhHkLK9XpEKlKqSIuuLqQiOk3DIWSVuE/xOG9vgDYczhfkUoSm3tv8AA8aaRYeDBgxiKhgwYMccLZVCpcupM1CTAjOzWraHlIBULct+3T4wywYMFtvydQYiy4tf81xUyXdHFKuHdvTp44sOV7cK/wB++DBgxdAez4mNW2WHGW+MkiM5wFIU3pDpLm6789i3a2173xm8xXUy30NPyOElKkodPDUCnhix07Hia7noLfbBgw3P3R1HG0/XZEh6Ih4tKbipdWUaXVNukFIbN7A3A187/wBMfVxK+lTzzHHbdfTHLgDiXAkAELCbkeq9j3F974MGGc6ekBKzbJh5iUpSm5j3tUABw0g2ZTpNrGxLmq+/LthzSBPTKnidqU0XAWVqIGxv6QkdBtv1+MGDCOVqg0NMGDBhAn//2Q==
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.09mm )" draw:z-index="4" svg:height="4.23mm" svg:width="8.94mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 117.36mm )" draw:z-index="17" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDQKMTAwIDQwCgAAHAAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAA/AAAAAAAAAAAAAAAAO8AAAH8AAAAAAAAAAb/AAAHHwAAAAAAAAAHe8AADgcAAAAAAAAAG73gABwHAAAAAAAAAD/e4AA8BgAAAAAAAABd79gAPAYAAAAAAAAA73e4ADwGAAAAAAAAAfe7fAA8BBgAAYBgAAPf/PcAPgA+B4fD8AAH+f3vAD8A/gePx/AAD3D73gAfgLwPG8xwAB/vf73gH4G8DzOY8AA9/4d74A/DPA8jsPAAP7+P/+AH4ngeZ+DgAD+7h+7wB/J4HgfB4AA+9ze94APweD4HweAADe/7f8AB8PA8D4PAAAPe/HeAAfjwfA8DwAADuP7vAAD48HwPA8AAAX73fgMA8eD4ngeAAAD3f5wDAPnhuJ4HmAAA17v4AwDxw3kcDzAAAD/f4AMA8cZ7PA8gAAA97uADAePMcjwPYAAAD/eAB4HD+H44D9AAAA9/gAPDg/B4eA+QAAADuQAA/gHAcCAOAAAAA/wAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAAA+AAAAQAAAAAAAAAAACAAAAAAAADAAAAAAAAAAAFqJqScyrUAAAAAAAABKUSUpFqVgAAAAAAAAUlEkmJYpEAAAAAAAAEoZKZmSpSAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAIAAAAAA=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="5" svg:height="4.23mm" svg:width="8.25mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 137.68mm )" draw:z-index="18" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 142.73mm )" draw:z-index="6" svg:height="4.23mm" svg:width="9.16mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 158mm )" draw:z-index="19" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6YmJhubm59fX3Hx8f7+/v9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/eJiYlhYWFiYmJiYmJjY2O/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3c3NxiYmJiYmJ1dXVqampiYmJkZGS/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v79/f38/Pzz8/Pl5eXj4+Ps7Oz29vb8/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3w8PDh4eHk5ORiYmJiYmKOjo6/v79ubm5iYmJmZmbFxcX8/Pz+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v79/f329vbGxsaOjo5ubm5ra2tqampjY2N1dXWfn5/MzMz39/f+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3q6uqIiIhubm7W1taYmJhhYWFiYmKZmZnFxcVubm5iYmJjY2O+vr78/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f3a2tqDg4NiYmKDg4O/v7/h4eHe3t63t7dubm5jY2NiYmKUlJT6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f309PS/v79gYGBhYWFxcXHR0dGUlJRiYmJhYWGTk5PDw8Nubm5hYWFiYmK/v7/8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f3S0tJnZ2diYmKfn5/4+Pj8/Pz9/f39/f38/PzS0tJmZmZjY2OBgYH6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3w8PCDg4Oqqqq+vr5jY2NiYmJubm7Q0NCQkJBiYmJiYmKUlJTHx8doaGhiYmJiYmLExMT8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f3s7Oxvb29hYWFzc3Py8vL9/f3+/v7+/v79/f39/f36+vqEhIRiYmKkpKT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f38/Pyenp5hYWFiYmKrq6u3t7djY2NiYmJ0dHTMzMyOjo5iYmJjY2OYmJjGxsZubm5iYmJlZWXb29v8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f2tra1iYmJiYmKgoKD8/Pz+/v7+/v7+/v7+/v79/f38/PyZmZliYmLMzMz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6ampq9vb19fX1iYmJiYmKrq6u3t7diYmJiYmJ0dHTNzc2YmJhiYmJiYmKUlJTCwsJxcXGpqamtra28vLz8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/d4eHhiYmJiYmKurq78/Pz+/v7+/v7+/v7+/v7+/v78/Pyfn59mZmbw8PD9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3v7++FhYViYmJ4eHjR0dF+fn5iYmJhYWGrq6u9vb1lZWViYmJycnLKysqVlZViYmJiYmKLi4vc3NypqalhYWFiYmLExMT7+/v+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3q6upmZmZiYmJiYmKPj4/8/Pz+/v7+/v7+/v7+/v7+/v78/PyZmZmAgID8/Pz9/f3+/v79/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v79/f39/f39/f39/f3+/v7+/v79/f39/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v79/f39/f39/f38/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3x8fGNjY1iYmJiYmKMjIzLy8vHx8d9fX1iYmJjY2OysrK2trZlZWViYmJzc3PX19eJiYlhYWGioqK1tbVjY2NiYmJycnK/v7/Ozs78/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7o6OhnZ2diYmJiYmJoaGjk5OT9/f3+/v7+/v7+/v7+/v78/Pyurq6ysrL9/f39/f39/f3s7Oy8vLyhoaG6urr39/f9/f3+/v7+/v7+/v7+/v79/f3z8/Pc3Nzb29vj4+P9/f39/f39/f38/Pz8/PzJycmampqgoKDr6+v9/f3+/v7+/v79/f38/Pzh4eG3t7empqa8vLz09PT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6NjY1iYmJiYmKUlJTDw8NpaWl/f3/Dw8N6enpiYmJiYmKrq6uzs7NmZmZiYmKjo6Pv7++9vb2ysrJjY2NiYmJ1dXXJycmKiopiYmK6urr6+vr+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7z8/Nvb29iYmJhYWFiYmKQkJD5+fn8/Pz9/f3+/v7+/v79/f36+vr9/f39/f38/PzHx8dxcXFiYmJiYmJhYWG/v7/9/f3+/v7+/v7+/v79/f38/PyWlpZkZGRkZGR6enr39/f9/f39/f3y8vKWlpZiYmJiYmJhYWGpqan9/f3+/v79/f3y8vKjo6NiYmJiYmJiYmJiYmKhoaH9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u6EhIRiYmJiYmKYmJjGxsZubm5iYmJjY2POzs7n5+d4eHhiYmJiYmKKiopoaGhhYWGYmJj6+vq2trZiYmJiYmJ6enrKysqMjIxiYmJiYmKWlpb9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PyWlpZiYmJiYmJiYmJiYmKrq6v8/Pz9/f3+/v79/f39/f3+/v7+/v78/PzCwsJiYmJjY2NiYmJjY2NiYmKysrL9/f39/f3+/v7+/v79/f3f399jY2NiYmJiYmKkpKT7+/v9/f3u7u6Hh4djY2NlZWViYmJiYmKZmZn8/Pz9/f3q6uqAgIBtbW2jo6OIiIhiYmJiYmJ0dHT39/f+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3z8/OHh4diYmJiYmKUlJTHx8doaGhiYmJlZWXJycnx8fHs7Oze3t53d3diYmJiYmJiYmJiYmLDw8O3t7diYmJhYWF0dHTR0dGMjIxiYmJiYmKXl5fw8PDq6ur09PT9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3KyspiYmJiYmJjY2NiYmJiYmK4uLj8/Pz+/v7+/v7+/v7+/v79/f3Y2NhiYmK/v7+3t7diYmJiYmJjY2PS0tL9/f3+/v7+/v7+/v78/Pyrq6thYWFiYmJkZGTb29v8/Pz5+fmIiIhycnLc3Nx4eHhiYmJiYmKtra38/Pzw8PB4eHiFhYXt7e36+vrBwcFiYmJiYmJycnL19fX+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3z8/ONjY1iYmJiYmKTk5PDw8Nubm5iYmJmZmbBwcGurq5wcHBqamqPj4/JycmKiopmZmZra2upqamysrJiYmJiYmJ0dHTKysqKiopiYmJiYmKcnJzLy8t/f39oaGh2dna9vb38/Pz+/v7+/v7+/v7+/v7+/v79/f329vaEhIRiYmJiYmJiYmJiYmJoaGjR0dH9/f3+/v7+/v79/f3y8vJ2dnapqan6+vqamppiYmJiYmJ3d3f09PT+/v7+/v7+/v7+/v78/PyAgIBiYmJiYmJ8fHz5+fn8/PysrKxra2vj4+Pw8PBqampiYmJiYmLKysr09PSEhISKior19fX9/f38/PyhoaFhYWFiYmKDg4P6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f2enp5iYmJiYmKamprExMRtbW1iYmJmZmbCwsKkpKRiYmJiYmJiYmJiYmKEhITy8vLi4uLq6urY2NhjY2NiYmJ3d3fKysqKiopiYmJjY2OdnZ3Dw8NqampiYmJiYmJiYmJiYmLa2tr9/f3+/v7+/v7+/v7+/v7+/v79/f3b29tnZ2diYmJiYmJiYmJiYmJwcHDl5eX9/f3+/v79/f2pqal/f3/5+fns7OxqampiYmJiYmKpqan8/Pz+/v7+/v7+/v79/f3b29tlZWViYmJiYmKoqKj8/Pzh4eFoaGjS0tL8/PzKyspiYmJiYmJoaGjq6uqWlpZ/f3/19fX9/f3+/v729vZ4eHhiYmJiYmKgoKD8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PxpaWliYmJ6enq3t7dubm5iYmJpaWnIyMijo6NiYmJiYmJ/f3+AgIBiYmJiYmLi4uL8/Pz8/Pyrq6tiYmJmZma6urqMjIxiYmJiYmKdnZ3CwsJqampiYmJra2uOjo5kZGRiYmKurq79/f3+/v7+/v7+/v7+/v7+/v7+/v78/Py9vb1iYmJiYmJiYmJiYmJjY2OEhIT4+Pj9/f3k5ORvb2/e3t78/Py9vb1iYmJiYmJiYmLX19f9/f3+/v7+/v7+/v78/PyhoaFiYmJiYmJlZWXd3d38/Pyjo6OkpKT8/Pz8/Pyjo6NiYmJhYWGQkJC2trZ2dnbs7Oz9/f3+/v79/f3Ly8tiYmJiYmJiYmLOzs79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v77+/tzc3NiYmJmZmZiYmJiYmJoaGjCwsKpqaliYmJiYmKEhITNzc2AgIBiYmJoaGjv7+/8/Pz8/Py4uLhiYmJjY2NqampiYmJhYWGdnZ3IyMhra2tjY2NnZ2fBwcGfn59iYmJiYmK/v7/9/f39/f3+/v7+/v7+/v79/f3+/v79/f38/PyampphYWFiYmJiYmJhYWFiYmK1tbX8/Pzc3Ny8vLz7+/v4+PiFhYViYmJiYmJ7e3v29vb9/f39/f3+/v79/f3y8vJ0dHRiYmJiYmJ9fX36+vr8/Pzk5OT29vb8/Pz19fV4eHhiYmJjY2OYmJh1dXXU1NT9/f3+/v7+/v78/PyTk5NiYmJjY2Nzc3Pz8/P9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3BwcFiYmJiYmJhYWFoaGjBwcGkpKRhYWFiYmKEhITMzMyAgIBiYmJiYmKysrLS0tKtra28vLzW1tZ5eXlhYWFiYmJiYmKenp7CwsJra2tiYmJra2vExMSfn59iYmJiYmKAgIDz8/P9/f3+/v79/f39/f3+/v7+/v7+/v79/f39/f3z8/N9fX1jY2NiYmJiYmJiYmJra2vt7e39/f39/f38/Pzc3NxjY2NiYmJiYmKzs7P9/f3+/v7+/v7+/v78/Py4uLhiYmJiYmJiYmKoqKj8/Pz9/f3+/v7+/v79/f3X19diYmJhYWFkZGRjY2Opqan8/Pz+/v7+/v78/Pzn5+dpaWliYmJiYmKcnJz8/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PzLy8uZmZmfn5/S0tKjo6NiYmJiYmKDg4PLy8t5eXlhYWFiYmKtra2ysrJjY2NiYmJiYmJ+fn7KysqoqKiXl5e+vr7Dw8NqampiYmJra2vDw8OdnZ1iYmJjY2OFhYXq6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3c3NxqampiYmJhYWFiYmJiYmLFxcX9/f3+/v78/PypqaliYmJiYmJmZmbk5OT9/f3+/v7+/v79/f3y8vJ3d3diYmJiYmJkZGTa2tr9/f3+/v7+/v7+/v78/Pyurq5iYmJiYmJiYmJ3d3fx8fH9/f3+/v7+/v79/f2oqKhiYmJiYmJiYmLS0tL9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f38/Pz39/ekpKRiYmJhYWF+fn7Ozs56enpjY2NiYmKpqanp6elmZmZiYmJlZWViYmJiYmJ7e3vs7Oz6+vrLy8tmZmZiYmJnZ2fExMScnJxiYmJhYWF/f3/u7u79/f3+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v79/f38/PyhoaFiYmJiYmJhYWFiYmKtra39/f39/f309PR1dXViYmJiYmKNjY38/Pz+/v7+/v7+/v78/PyoqKhiYmJiYmJiYmJ9fX35+fn+/v7+/v7+/v7+/v75+fl9fX1iYmJiYmJiYmLDw8P9/f3+/v7+/v79/f3w8PBwcHBiYmJiYmJ/f3/6+vr+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3S0tJiYmJiYmKEhITOzs5+fn5hYWFiYmKhoaH6+vre3t5iYmJiYmKTk5Ojo6NiYmJhYWF9fX3j4+ODg4NiYmJqamq/v7+fn59iYmJiYmJ+fn7p6en9/f3+/v7+/v7+/v7+/v7Z2dm6urr+/v7+/v7+/v7+/v7+/v7+/v79/f3m5uZqampiYmJhYWFiYmKjo6P8/Pz9/f3S0tJhYWFiYmJiYmLDw8P9/f3+/v7+/v79/f3W1tZnZ2dmZmZiYmJiYmKioqL8/Pz+/v79/f39/f39/f3U1NRjY2NiYmJiYmJ8fHz19fX+/v7+/v7+/v79/f3FxcViYmJiYmJjY2O6urr8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vq6urqGhobJycl7e3tiYmJiYmKtra2wsLCQkJDq6up4eHhiYmJra2u+vr6tra1iYmJiYmJ6enrFxcWIiIi9vb2goKBiYmJhYWF/f3/p6en9/f3+/v7+/v7+/v7+/v79/f2ZmZl6enr9/f3+/v7+/v7+/v7+/v79/f3+/v78/PyPj49iYmJjY2NiYmKrq6v8/Pz7+/ujo6NjY2NiYmJubm7u7u79/f3+/v79/f3y8vJ9fX2cnJxra2tiYmJiYmLS0tL8/Pz6+vqlpaXm5ub8/PyioqJiYmJiYmJjY2POzs79/f3+/v7+/v79/f38/PyNjY1iYmJiYmJnZ2fp6en8/PzW1ta5ubn9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3q6up7e3tiYmJiYmKqqqrHx8diYmJiYmKZmZnOzs5vb29jY2NmZma9vb2lpaViYmJiYmKAgIDh4eGrq6thYWFiYmJ9fX3q6ur9/f3+/v7+/v7+/v7+/v7+/v78/PyAgICCgoL8/Pz+/v7+/v7+/v7+/v7+/v7+/v78/PyoqKhiYmJiYmJgYGDFxcX8/Pz09PR1dXViYmJiYmKampr8/Pz8/Pz9/f38/PyZmZmZmZm4uLhiYmJjY2N2dnb19fX8/PzS0tJra2vv7+/5+fl7e3tiYmJiYmKAgID7+/v9/f3+/v7+/v79/f3l5eVmZmZhYWFiYmKVlZX7+/v4+PiAgICtra39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PyysrJkZGSioqK6urq/v7+Pj49iYmJiYmKZmZnIyMhvb29iYmJmZma8vLykpKRiYmJiYmKCgoLDw8N4eHh7e3vq6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v709PRqamqEhIT8/Pz9/f39/f3+/v7+/v7+/v7+/v78/Pyjo6NiYmJhYWFra2vs7Oz8/PzY2NhiYmJiYmJkZGTW1tb9/f39/f39/f2zs7N6enrx8fGNjY1iYmJiYmKjo6P6+vr19fV7e3u1tbX8/PzX19djY2NiYmJiYmK+vr79/f3+/v7+/v7+/v79/f28vLxiYmJiYmJiYmLMzMz8/Py6urp4eHj29vb+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/PzW1tatra1iYmJubm7ExMSRkZFiYmJhYWGYmJjIyMhvb29iYmJlZWW8vLyoqKhiYmJiYmJ+fn7Kysrq6ur9/f3+/v7+/v7+/v7+/v7+/v79/f3+/v7c3NxiYmJ7e3v6+vr+/v7+/v7+/v7+/v7+/v7+/v74+Ph9fX1iYmJiYmK1tbX9/f38/Py1tbViYmJiYmJ4eHj4+Pj9/f38/Py1tbVubm7i4uLz8/Nra2tiYmJiYmLJycn7+/ufn5+AgID6+vr8/PylpaViYmJiYmJ1dXX09PT+/v7+/v7+/v7+/v78/PyNjY1iYmJiYmJycnL39/ff399qamrR0dH9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Py6urpiYmJiYmJubm7IyMiNjY1iYmJiYmKZmZnMzMxubm5iYmJlZWXCwsKoqKhiYmJ6enrr6+v8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3CwsJiYmJoaGjq6ur+/v7+/v7+/v79/f39/f39/f3JycliYmJiYmKJiYn5+fn9/f38/PyYmJhiYmJiYmKRkZH7+/v7+/uvr69oaGjU1NT8/Pzc3NxjY2NiYmJlZWXf39+9vb1mZmbh4eH9/f35+fl+fn5iYmJiYmKhoaH8/Pz+/v7+/v7+/v7+/v7w8PBra2tiYmJiYmKamprq6upycnKenp77+/v9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Py3t7diYmJiYmJzc3PFxcWNjY1iYmJiYmKcnJzLy8tubm5iYmJlZWW0tLSzs7Pm5ub9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f2tra1jY2NiYmKtra38/Pz9/f39/f39/f38/Pzt7e14eHhiYmKAgIDr6+v9/f3+/v76+vqEhIRiYmJiYmJzc3O0tLSMjIxubm7Y2Nj9/f39/f3Nzc1iYmJjY2NlZWV+fn5lZWXHx8f8/Pz9/f3d3d1lZWViYmJjY2PU1NT9/f3+/v7+/v7+/v7+/v7f399kZGRiYmJiYmJxcXFubm6Tk5Pg4OC6urrOzs7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pz8/Py3t7djY2NiYmJycnLIyMiSkpJiYmJiYmKWlpbKyspra2thYWGAgID6+vr9/f3+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7c3Nx2dnZiYmJhYWGjo6Pn5+f09PTv7+/FxcVzc3NiYmKZmZnv7+/9/f3+/v7+/v79/f2Pj49iYmJiYmJiYmJiYmKDg4Pk5OT9/f3+/v79/f3IyMhiYmJiYmJiYmJoaGjFxcX9/f39/f39/f2oqKhhYWFiYmJzc3P29vb+/v7+/v7+/v7+/v7+/v7c3NxiYmJiYmJiYmJiYmKPj4/09PTb29uysrLDw8P9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pz8/Py/v79iYmJiYmJubm7ExMSUlJRjY2NiYmK6urrT09OKioro6Oj8/Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3u7u7BwcGTk5Nra2tvb294eHhzc3Nvb2+ZmZnW1tb8/Pz9/f3+/v7+/v7+/v79/f3X19d4eHhtbW2Ojo7FxcX4+Pj9/f3+/v7+/v79/f3m5uZ1dXVoaGiVlZXi4uL8/Pz+/v7+/v79/f3T09Ozs7OwsLDOzs79/f3+/v79/f3+/v7+/v7+/v719fWQkJBqamp6enq5ubn4+Pj9/f3v7+/Z2dnj4+P+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v79/f38/Py3t7diYmJiYmJwcHCzs7NqampiYmKUlJT7+/v6+vr9/f3+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f38/Pzz8/Ph4eHU1NTd3d3y8vL9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f329vby8vL8/Pz9/f39/f3+/v7+/v7+/v7+/v79/f3y8vLq6ur8/Pz9/f3+/v7+/v7+/v7+/v7+/v79/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vrt7e339/f9/f39/f3+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f38/Py4uLhjY2NiYmJiYmJiYmJhYWGmpqb9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v78/Pz9/f3+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f38/Py8vLxpaWliYmJiYmJ9fX3q6ur9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v79/f39/f3b29u/v7/+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v79/f3e3t7U1NT9/f3+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/Pze3t6zs7O+vr7y8vL9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v76+vrr6+vh4eHW1tb39/fU1NTm5ub9/f3W1tbc3Nz9/f3+/v7Z2dnW1tb5+fnr6+vg4ODv7+/9/f3U1NTc3Nz9/f39/f3o6OjS0tLv7+/l5eX9/f39/f3m5ub9/f3j4+PV1dXx8fGkpKScnJzo6Oj9/f3q6urW1tb4+Pj9/f3r6+vg4ODa2tr39/fU1NTo6Oj9/f34+PjU1NTm5ub9/f3+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v739/eHh4erq6ugoKCQkJC2traEhITt7e2xsbGzs7P8/PyoqKirq6vBwcHx8fGIiIifn5/r6+umpqa1tbWZmZm/v7/i4uKYmJjKysrr6+uamprf39/j4+Ojo6O9vb2UlJTS0tLr6+uZmZmTk5Pc3NzS0tKZmZm2tragoKD09PSFhYWurq6WlpaQkJC0tLSRkZHz8/Obm5u4uLjj4+P+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f309PSGhob29vbLy8uenp77+/uRkZHi4uLW1ta0tLTu7u6MjIz8/Pz8/Pz19fWHh4fz8/Pi4uKTk5P6+vrt7e2Tk5Pg4OCNjY28vLz19fXCwsKlpaWurq7KysrKysqIiIjIyMj7+/vDw8O6urr7+/ucnJyTk5O1tbWampru7u6IiIj39/e8vLydnZ36+vqbm5vu7u6goKCkpKTk5OT9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v79/f309PSOjo75+fnExMSpqan7+/uPj4/i4uLR0dGysrLw8PCEhITz8/P4+Pjx8fGVlZX5+fnj4+OIiIj4+PjU1NScnJz8/Pzt7e2YmJiwsLD19fV9fX2Hh4fx8fH7+/vm5uaIiIjX19fDw8OwsLD7+/ufn5+pqanz8/P39/fy8vKRkZH7+/u3t7epqan7+/uYmJjv7+/5+fnExMSIiIj4+Pj9/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v719fWjo6P6+vrOzs65ubn8/PykpKTo6OjZ2dm/v7/8/Pyurq6cnJyurq7v7++rq6v39/f9/f2rq6uhoaGZmZng4ODu7u6zs7Ofn5/W1tb6+vqgoKCfn5/8/PzX19eurq6jo6Pu7u7f39+Ojo7Pz8/h4eGWlpavr6/ExMT19fWmpqb8/PzExMS6urr8/Pytra3w8PDFxcWoqKi5ubn9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v79/f37+/v+/v77+/v7+/v+/v76+vr9/f39/f37+/v8/Pz9/f3x8fH09PT9/f37+/v+/v79/f39/f3x8fH4+Pj9/f37+/vv7+/29vb8/Pz09PSYmJjX19f9/f339/fv7+/6+vr9/f39/f319fX19fX+/v76+vrv7+/29vb9/f37+/v9/f36+vr6+vr+/v77+/v+/v7y8vLx8fH9/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7t7e2hoaGwsLD9/f3+/v79/f3+/v79/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v4=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 163.05mm )" draw:z-index="7" svg:height="4.23mm" svg:width="8.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 178.32mm )" draw:z-index="20" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 183.37mm )" draw:z-index="8" svg:height="4.23mm" svg:width="8.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 199.84mm )" draw:z-index="21" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 204.89mm )" draw:z-index="9" svg:height="4.23mm" svg:width="8.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 220.16mm )" draw:z-index="22" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 225.21mm )" draw:z-index="10" svg:height="4.23mm" svg:width="6.33mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 240.48mm )" draw:z-index="23" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////8/v/p7/+MlstebKtve7e9xvH4/v/+/v/////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////////////////3///3////////+/vz///3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1+P+Ah7FVX5pSYJ9UYJxYYpO4vuL7/v/+///////////////////////////////////////////////////////////////////////////////////////////+///+///8///8///8///8///+/v/+//////////////////////3///3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v///////////////////////////////////////////////v/+/v/X2/RVYJZRYKNncrBcaKRSYJ9XYpi4vuL7/v/+///////////////////////////////////////////////////////////+/v7////////////////////+///8/v/5/v/v9f/g5f/c4//n7P/z9//7/v/+/v/+/////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+/////////////////////////////v///v/////////////////////////////////////+///+/v/u8P/e4PXe5P9UYJpRYKOAi8mxvPpebK1UX51aZJe+xOj7/v/+///+/v/////////////////////////////////////////////////+/v7////////////+///8/v/09//Bxd6IjapnbY1kaopjaYtaY4RudJiYnr7Hy+T1+P/+///////////////////+/v7//////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////////+///+//////////////////////////////3///3////////////////////////////////+/v78///m6v9/h6xkbZjL1f+Nls1VX5pSYJ2Jl9S4w/thbKRUX51WYZe3veH7/v/+/////////////////////////////////////////////////////////v/+/v///v/8/v/T2ft6ga1ZYYh8gqS6vtfe4fTb3fKxttNkbJpXYZZWYJOLk7j5+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+//////////////////////////////////////3///3////////////////////////////+///8///w9f+2vuNVX5BUX5djcKfE0P+HkshUYJxRYJuGkcm2wflebKlTX5tXYZK4vuD7/v/+/////////////////////////////////////////////////////v///v/8/v/M0e5cZpdWYJWWncf1+v/7/v/8///+/v/5/v/J0PpZZJpVYZ13f674+/////////////////////////////////////////////////////////////////////////////////////////////////////////3///3////////////////////////+///+///////////////////////////////////////////+///+//////////////////////38///r8f96gqegqdSyvO9VYZtSYZxgbaTD0P+Cj8ZUYJpUX52Gks66xftbZpxUYJxVYZW9w+P7/v/+/////////////////////////////////v///v////////////38///n7P9lbZtVX5pncaTv8//8///+///+/////v/8/v/3/P97gqxWYJWbos78/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////+///+///////////////+///+/v/5/v+VncJWYJFWYJOeqd+ptu1VYZtSYZxkc6y/yv+AjcRUX51VYZ2Llsy5xPpebKlUYJpbZI3V2vf7/v/+/////////////////////////////v///v/////////////7//+kq9VVYJhUX52Vn9D7/v/////////////////+/v/5/v+SmLhZYI7FyvD8/v///////////////////////////////////////////////////////v///v/////////////////////////+///+///////////////////////////////////////////////////////////////////////////////////////////////////////////////8///q7v+Rmb6zvOdxe65UYJxUX52eqd+qtetUYJxSYJ1nca7By/+Lls5VYJhUX52Gks61wfVlcJ6dqNWkrNG2u9j7/v/+///////////////+///+///////////////////////1+P9sdqlSYKFUX5+krNv7/v/////////////////+///7/v+ZnrtfZIrs8f/8/////////////////////////////////////////v///v///////////////////////////v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/8///r8P98g69WYJNudqXG0P9wfLhUX51UX5eeqd+vu/VXY59UYJxmcKu+yP2Ik8lUYJxUYJqAirvS3f+cqNpWYJFZYYi+w+D6/f/+///////////+///+/////////////////////v/l6v5ZZJpRYKVSX6ODjcD7/v/+///////////////+///7/v+Uma96f5z5/v/+/v/+///8///8/v/8/v/8/v/+/////////////////////////v/+///8///8///+/v///v///////////v/+/v/8/v/7///8/v/8///////////////////+///8///8/v/8/v/7/f/+/v///////////////////////////////////////////////////v/+/v/t8v+DjLdVYJhUYJqAir3Byfi7xfhwe7FUX51VYJ6lsOaptOpXY59UYJxmcafN1/9+iLlWYJGWoc+otOhTYZ5UX51ncaK2vuPIzev7/v/+///////////////////////////////+///j6PxaZZ1PYKhRX6haZqDe5P78///+///////////+///7/f+rrr2vssP8/v/+/v/8/v/n7P+zu+CYn8mzudv1+P/9/v/+///+///+///+///+/v/x9P/W2/nU2/jg4vf8/v///v///v/9/f/7/v/AyeqQmcCXoMHm7P/+/v/////////+/v/7/v/b4P6uttudpcy1u93x9v/+/v/////////////////////////////////////////+///+/v/q7/+DjLdVYJhUYJyGks62wfdeaJl1fau5wfBteK5UYJpVYJaeqeGlsO5WZKFVYJiYotPo8f+xveemsONVYZtSYJ9lc7C8x/1+ibdZYYi0udb5/P/////////////////+/v7////////+///v9P9ibqJRX6ZPX6pSYJ+Hj7b2+//9/f/+/v/////////+/v/5/P/8///8/v/7/v/Bx+FncJtVYJZUYJpWYJG6v9X8///+///+///+///8///7/v+QlbVYY5FaYpB0eZb2+P/+/v/8///w8v+PlbdWYJNUYZhWYJGgqcr8/v/+///8/v/w8/+dor9ZYYhWYJNVYJZWYJOYoMX8/v/////////////////////////////////////+///8///q7/96grBUYJpUYJyLl8u5xPpebKlUYJpZYo3FzfHg6P9ud6JUYJpSX6N6h8tYZqVVX5qMlsn0/f+qteJUYJxUX51teK69yf1+isZUYJpWYY+PlbX8/v/+//////////3////////////////////7/v+KlcJSYJ9RX6ZRYKVUYJqiqdP8/f///v/////+/v///v/+///+///7/v+5wuFWYY5VYpdSYJ1SYaRVYJisssz8///9/v/////////8/v/Z3v5YYpNUX51VYJaeo8H6/f/8/v/q7/9+hqtXYZRXYqBUX59UYJqPmMH7/v/8///l6v93f6NmbIyaosd7h7tUYJxSYJ1pc6T1+P/////////////////////////////////+///8///v9f99hbNVYJhUX52Gks66xftbZpxSYJ1XY5+9yPbr8//l7f/V3v9qda1SYJ9SYJ1UYJxVYJi2wvSrtuRVYZNTX5tmca/E0P9/i79UYJxUYJyKlsrp8v/k6v/y9f/8///+///////////////////////8/v/Bye1VYJZRYKNQYalRYKVVYJiyttn8/f/+///////////+///8/v/T2OxZYYWyv+yptfFRYKFRX6ZVYpnM0uz8///+///////////7/v+hqtNTX5tRYKNWYpzV2vf7/v/2+/+Ch6VpcZjS3P9qdbdSX6NUYJyjq9n5/v/t8P9xd5l8hKjo7v/3/f+0wPRSYJ9RYKNlcaXz9v/////////////////////////////////8///v9f+DjLVUYZhUYJyGkce2wfdga6lUX51ZZJq0wPShrORibqhcaKKBjsO+yPl+ibZaZZNfapidqNalseNUYJxSYZxncqi9yP58iMRUYJxVYJiPmtC+yf9yfbNbZpxqdaO2vdr7/v/+///////////////////+/v/z+P96g6pSYJ9PYKhPYKhSYKFbZ5vK0PT7///+///////8///t8/9vdZWjqcH3/f+MmdBRYKFRYKNqdqjx9v/+///////////+///5/v90frFSYKFSYKFve6/2+//7/v+lq81iao/d4/3r8f9caKRSX6NVYJbAyPbv9/9+g6GFiaTz9v/8/v/5/v+Vn9JRX6BSYKF3gbT4+//////////////////////////////////8/v+VncRVYJhSYJ+KmNe3wvhga6FUX51YY6G1wfWXo9dUYJxSYJ9RYKNSYZx4g7Ds9P/c4v/k6v/O1/9WYpZSYKFndba9yP59ib1UYJxVYJ6Qm9O2wfdcaKJUX51SX6NUX51YYI7U2fb8///////////////////+///8/v/V2/VaZppRYKNPYKZPYKZSYKFjb6Hf5f38///+///8/v+iqMh4fqD2+//n7P9caaBRYKFUYJyfqNP7/v/////////+///+/v/V2/VYY5tRYKNUX52eptT5/v/e4fJhZ4fL0fP5/v/EyedUYJxRYKNbZ5vj6/+NlL54fp7z9v/+/v/+///z+P9rd6tSYKFUX52Wnsz7/v/////////////////////////////////7/v9eaJlSYJ9qeLentfRebK1SYJ1eZ568xvuVodtUYJxUYJxxfblvfr9SYZxWYY/c4v/7/v/7/f+iqdVVYJhWZKOquPl8islUYJxVYJiQm9G2wPtcaKRUX51daKiAi8tWYp5VYJalrdL8/v/////////////////////+///7/v+0vOFVYJZRYKNPYKhPYKZTYZ56g670+v/8/v/i5PFpb4nX3vv5/v+2vN5UYJxSYKFVYZXQ1vj8/v////3////+///7/v+aoMRUX51SYKFYZJjV3f/5/v+go7KhpLf5/v/5/v+cosZUX51QX6KDjsastOJvdZfo7f/8///+///8/v/FyudUYJpSX6NVYJbFzfH8/v/////////////////////////////////6/f9pcaBUX51YY6FUX51SYJ9aZaO2wPWdp9xUYJxSYJ12grzAzP9wfr1SYZxcZ5Xq8P/7/f/5/v+vtuJVYJhVYZ1aaKdSYJ9TX5uQm9G7xvxdaaVVYJ5ZZaGzv/uRnNxUYJxWYJO4vuL8/v/+/v7////////////+/v7////+/v/5/v+RmMJTX5tRX6ZPYKhPYKVUYZirtNv7/v/a3Oi3vM/4/v/1+v98g61SYJ9SYJ9xeqXz9//+/v/+/vz////8///u8/9oc6FSYKFSYJ9zfKf2/P/7/v/i5PD09//7/v/y9v9vdqRSYKFSYaaLls5rdJ3O1O77///+///+///7/f+KkrdSYJ1TYaJncqDv9P/8///////////////////////////////////8/v+6wOBWYY9VYJhVX5pcZpu1v/SYot1TX5tUYJp2gry/yv9yfrhSYJ9UYJymsd/I0fqkq9WzuuTN1f9td6pVX5pUYJpVYJaRndG1wPhdaaVUX51daaW3wviSndVSYJ9UYJp3f6Tv9P/+/v///////v///v///////////////v/+/v/w9P9yfK1TYaBRX6ZPYKhRYKNeapzp7v/+/v/+/v/7/v/V2/9XYZZSX6NUX52sstT8/v/+///////+///7/v+ut+BUYJxRYKVSYJ2hp8n7/v/8///+///+///7///Q1vpXYJdRXqJTYqVWYZegqM37/v/+///////9/f/i5/9eaJlSYKFSYJ2Tm7/7/v/8///+///////////////////////////////+///5/v/Ey+iQl8GVnczI0P+XodRUYJxUX513gby+yf9td7JVX5pVYJagrOClseNWYpRVYJZVYJZyfLG+yPucptmMlsezve63wfZcaKJUX51daaW2wfmQm9FVYJZVYZt5hLLk6v/8/v/+///////////////////////////////////8/v/V2/9daZ1RYKNPX6pOYKhSYZq/xOH+/v/+///7/v+fqNNUYJxSX6NZZJzf4/z+/v/////+///8///u9P9qdqhRYKNRX6ZWYpzU2vT8///+///////+///7/v+krdhUX51RYKVSYKFtdaTt8v/8///////////8/v+ep9BUYJpSYKFUYZjM0uz8///+///+///////////////////////////////+///8///8/v/7/v/0+f+Zo9RUYJpVX5pxfLTCzf9ueLNVYKBVYJigqM3i6v9YZJ5RYZ9VZJ9UYJxUX59uebHm7v/1/f/AyvtZZJxUYJxZZaG3wviPmtBUX51VX5p2fanp7//8/v/+///////////+/v/+/v////////3////////////+/v/5/v+YoMVSYJ1QYKtPX6pSYZymrMz7///+/v/x9v9pc6hSYKFSYJ+BjLr7/v/////////+///5/v+fp8xUYJxRX6ZRYKVwfLD2+//+///////////+///2+/9xe65RYKNRX6ZUYJq8wuL8/v/+/////////v/s8f9jb6NRYKFSYKF0fq/4+//+///////////////////////////////////////////+///+/////v/P0uNYYYxUYZZ3grjCzf9yfLdTX5tUX52Wn9b3/f/W3v9SYZxPYaODkdCTod5UX6FVX5pzfKXb4/94grNVYJZcaaCxvvWSndVVYJhUYJpzfa7l6f/8/v/+///////////+///W2ey3us3+//////3////////////+///8///g5v5daKBRX6hPX6pUX52cosT7/v/8/v/M0uxVX5pSX6NUYZi5wun8/v/////+///8/v/Q1fJdZZRWZKVRX6ZSYJ+YoM77/v/+///+/v/8///8/v/O1O5VYplRYKVSYKFxe6zy9//+///////+///8/v+/xOJUYJpRYKVVYZ2wueT7/v/+///+///+///////////////////////////////////////////////5/P+0utR8hay8yPptebNUX51UX52gq+Glr+CGj7rh7P9qd65SYJ1baaawvPigq+NVYJZUYJpsea65xPJ8h7SyvO2TntRUX51TX5l1fqnk6f/8/v/+///////////////8/v+QmLxxeZ38/v/////////////////+/v7+///5/v+DjcBSX6NSYKlUYJykqsr7/v/4/f+cosZVYJ5SYKFibZvo7//8///+///8///u8/92fKCQms9baKxRYKNVYJbJ0fX7/v/5/P+gpbnh5f75/v+ZocVUX51RYKNWYZfFzfH8/v/////////+/v/5/v+EjLNUX59SYKFcZpfj6f/5/v/T1uW2ucj8/v/+///////////////////////////////////////////+///7///l6/9xeqVVYJZUYJyeqOO8xvdWYY9VYZOLmMzBzv9hbadVYZ1YZJ6wu/GYo9lSYJ1SYZxzf7PX4v+fqthWYJFVYJhyfK3l6v/8/v/+///////////////////7/v92fqx4gK77/v/////////////////////////7/v+eptVSYKFRYKVUXpm/xOH7/v/w9f9rdJ9SYJ9SYJ2Qmr75/v/7/v/+/v/7/v+TmbOQmL+stutSX6NTYaJqdaLw9//5/v/P0uVmaoPr8P/1+/9xeadSYJ9SYJ92f6r5/f/+/v/////////8/v/g5f9aZJdRX6BUX5+MlLv4/f/1+v96gJiorr78/v/+///////////////////////////////////////////////+///7/v+rsdFaY46XodKuuOu1veuEjr9UYJpSYZyMl8+7xvxhbadUYJxYZKCwuvWXothUYZhUYJx0gLq3wfRud6Jyep7l6//8/v/+//////////3////////+///w9f9eaJt5g7T7/v/+/v7+/v7////////////////7/v+XotBSYJ9QX6Beapzo7f/7/v/P1/tVYZVSYKFWYpzQ1fL8/v/+/v/8/v+tstBxeZ7r8/+Di7lSYKFSYJ2aosb3/f/x9/91epiytMn5/v/O1v1WYpZRYKNUYJy3vd38/v/+///////////8/v+zuuRUYJpRYKVUYJzFy+v5/v+xuttxd5f09//+///////////////////////////////////////////////////////+///7/v/P1vOkrNNWYY5jbZ63wviDj8tUYJxVX5qLls67xv5hbadUX51XY5+vuvCbptxUX51UYJp0fKrDyevl6v78/v/+//////////3///3////+/v/+///X2/RVYJZueq74+//////////////////+///+///1+v9xe65SYJ1UYZartNv7///7/v+rtN1UYJpSX6Nrdq72+v/8/v/7/v+wtM1obY3b4f/t9f9fapdSYKFSYJ3AyO34/f+WnsJ5f5/4+//7/f+bo9FUYJxSYKFodKjx9v/+///////////////7/v+CjL1SYKFRYKVkcKrz+f/Z3/lhaY3K0PD8/v/////////////////////////////////////////////////////////////+///7/v+zutdWYY5UYJpebKm7xvyAjMBUX51UX52Ml82/yv9gbKZUYJxXY5+0wPqbptxYYI5zeZvm6//7/f/+///////////////////////+///8/v+8wd5UYJpaZ57m6v/+///////////+//38///7///CyeZVYJhUYJqAiK32+//+/v/7/v+Ml8RSYJ1SX6OEj8f4/f/5/f+ortJhZ4nR0+r5/v/T2/9WYpZRYKFVY6TV3/+0vOFfZYXb4fn8/v/2+/9yfLFSYJ9UX52Xn837/v/////////////+///s8f9eaZ9RYKVRYKWKmdTh7P9pcZaXnb35/f/8/v/+//////////////////////////////////////////////////////////////3+///5/v+uttpVYJZUYJxmcae4w/l/i8dUYJxVYJiPmtC+yf9gbKZUYJxYY5uqs96sstLh5vr8/v/+///////////////////////////+///8//+nrcdWYZdVYJimrM75/v/8/v/8///8///5///o7v9vd5xWYJN2fqzm6//8///+///4+/94g7BSYJ1SYKFlcaurs9iFjKllbZHS1/X8/v/8/v/EzPFVYJZTYaJVY6JyfK9cZInBx+H7/v/8/v/Y3fNYZJhUX51XYZTN0/X8/v////////3////+///a3/VWY5pPYKZRYKNjb6libZuMkrba3/y3us3Mztr+/////////////////////////////v///v/////////+///+///////////////////9/f/7/v+wttpXYZRSYZxicK27xvyFkMZUX51UYJyJlMq+yP1eaaFWYJF5f5/4+//8///+///////////+/v7////////////////////+///X3O9tdJ5WYJNWYJGZos3h5//v9v/q8P+8xOhpcptYYYqSmLrr8P/8///+///+///7//+FjrdUYJpSYKFSYZxWYY56g6Lf5Pj8/v/+///8/v/Bx+tVYZVSYJ9UYJxeZ5K/xOH8/v/8///8/v+iqMBWYJFVYZVscZfz+P/+//////3////////+///X3PJVYJZRYKVSYKFVYZWIjrDx9v/W2++vssPBw9D+/v///////////////////////////v///v/////////+///+///////////////////////9/f/7/f+2vuJUYZZSYZxhbKK3wvqEktFTYaBVYJawuOnJ0f+Dia3j6Pz7/v/+///////////////////////////////////////+///8/v/p7/+4wOWJkr1hapNobpBxd5dscpRmbpKQmL3P1fX7/v/+/v/////////+///8///Q1/Rud6JibJ2Cjbu8xOj0+v/8///+///////8///h5f9sdJlcZ5WLlL/c4f/7/v/+///+///8///O0+aqs9Snr9PJzuT8/v/+///+/vz////////+///z9v+HjrhdaZtveaqwuN33+f/8/v/s8PzW2ubh5O3+/////////////////////////////////////////////////////////////v///v/////////+/v/5/v+tt9pVYZNUYJxgbq+jsfJaaKdUYJqKksH5/f/5+//+/v/+///////+/v7////////////////////////////////////+///8///8/v/7/v/x9P/e4fLR1OXa3ezw8//7///8/v/+//////////////3////+///8///09//w8//7/v/8/v/8///+///////////+///+/v/v8//n6vv7/v/8///+///////////+///+///8/v/8/v/+/v/+///////////////////////+///5+//q7f/1+P/8/v/+/v/+///+///+/////v///////////////////////////////////////////////////////////////v///v/////////////8///5/v+vt9tWYZdUX51SYJ1UYJpUYJSdpcr8/v/+/v7//////////////////////////////////////////////////////////////////v/+///9/f/8///+///+///+///+//////////3+/v7////////////////////////////////////////////////////////////+///+///////////////+///+///+/////////////////////////////////////////////v///v///////////////////////////v///v/////////////////////////////////////////////////////////////////////////////+///+/v/7/v+1u91fZ5VVYJZVYZN0fKHl6v/+/v/////////////////////////////////////////////////////////////+///+///+///+/v/+/v/+/////v/+/v/Z2+i9v8v////////+///+///+///+///+///+///+///+///+///+/////v///v/+///+/////v///v/+///+///+///+///+///8///Z3vHR1Of+/v/////+///+///////+/v/+///+///+///+///+///+///////////+///+///////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///7/v/Y3fqqste1veHu8//8/v///v/////////////////////////////////////////////////////////+///7+//p7PXe4u7T1+P2+P/S1ODk5vL8/v/R1urX3O/+/v/+///X2uPU1uL4+v/p7PXe4ert8Pn8/v/S1ODa3Oj8/v/8/v/m6PTS0tzt8Pnl5fH8/v/8///k5/D8/v/h4+/T1t/u8f+eo8CWm7jm6PX+/v/o6vnU1uP2+f/8///p6/jd4e3X2un1+f/S1OHm6PT+/v/4+P/S1ODk5/D//v/////+/v7////////////////////////////////////////////////////////////////////////////////////////////+///8///8/v/8/v/+/v///v/////////////////////////////////////////////////////////////+///1+P+Ch52mq8Gbn7iKkKiwttB+hJ7o7v+rsM2ts835/v+lqLmoq7q+wdLt8v+DiJycn7Dm6/6hpryvtc+TmbO5v9nc4vyTmK7Hytvo6/yVmrDZ3/nd4/udo7u3vNqOlK7P0uPm6/6SmLqMkrTX3PLN0uaTmLavttOaoLbw9v9/hKGnrc2PlbeJj6+us9CLkanv9P+Wm6+zuMzg4/T+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////////////////////////////////////////////////////+/v/x9v+AhaLy+P/Fy+WYnbr4/f+KkLDb4f/P1fWttNHq7/+GjKT5/v/5/v/y9v+ChqHx9P/d4vWNkq/3/f/m7/+MkrLZ4P2Hjae3u9Ty9v+8wd+epMSnrsvDyufDyeuCh6XDyN74/v+8wuazud34/v+WnLaKkrastNiUmrTp7/+Bh6fy+v+zuuSUnMP3/f+Vmrfp7/+aoLieo8Df5Pr+/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+/v/w9f+Ijqj2+/+/xNekqb35/f+Jjqzc4f/L0O2ssc7r8f9+hJzv9P/1+v/u8v+SlKv4+v/h4/KCh6T0+v/N0/WVnLj5/v/p7v+Sl7Spr8/y9/93fJmBhqPs8v/5/f/h5f6CiKLQ1/S8wuSpr8/4/v+Zn7eiqMjv9P/1+P/w8/+MkKn4/f+wttiiqMr4/f+TmK7s7//2+/+9xOGCiKL4+P///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v/////////////////+///z9v+go7b4/P/Mztq3ucb7/v+ho7jj6P7U2e26v9L5/v+prsGZnK+rrsHs7/+pq7r39//+/v+oqr+bobuUmLHb4PTr7/uws8KZn7fQ1fP3/P+an7yan7X5/v/U1+arrr+eo7fq7v/a3vmJjqTMz+Le4fSRlqyqr8PCxND19f+kprX7/f+/w9y1utD7/v+qrbzu8PzDxdSjp8C0uc/+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////////+///+///+///9/v/7/P/+///7/P/7/P/+///7+//+/v/+/v/7/P/9/f/+/v/v8vn09Pz+/v/8+////////v/+/v/v8vv4+P/+/v/7/P/v8PX19//7/v/x9v+SmLLU1+b8///39//v7/f7+//+/v/+/v/19f/19vv+///7+//v7/f29/v+/f/7/P/+/v/7+//7+//+///7/P/+///y8/jx8fv+/v///v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///v/////////+///+///+///+///////////////////+/v7////////////////////////////+///+/////v///v/////////////////////////////////+///r7fmbobuqsMr8/v/+/////v///////v///v///v///v/+/v7////////////////////////////////////////////////////////////////+/v7///////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+</office:text>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/makefile.mk b/sdext/source/pdfimport/test/testdocs/makefile.mk
new file mode 100644
index 000000000000..41e869e74f68
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/makefile.mk
@@ -0,0 +1,81 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..
+PRJNAME=sdext
+TARGET=testdocs
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+.INCLUDE : target.mk
+
+TESTFILES=\
+ graphicformats.pdf \
+ pictxt.pdf \
+ txtpic.pdf \
+ txtpictxt.pdf \
+ verticaltext.pdf
+
+# --- Fake uno bootstrap ------------------------
+.IF "$(ENABLE_PDFIMPORT)" != "NO"
+
+$(BIN)$/pdfi_unittest_test.ini : makefile.mk
+ rm -f $@
+ @echo UNO_SERVICES= > $@
+ @echo UNO_TYPES=$(UNOUCRRDB:s/\/\\/) >> $@
+
+# --- Enable test execution in normal build, diff all test docs ---
+
+ALLTAR : $(BIN)$/pdfi_unittest_test.ini \
+ $(foreach,i,$(TESTFILES:s/.pdf/_pdfi_unittest_writer_succeeded/:f) $(MISC)$/$i) \
+ $(foreach,i,$(TESTFILES:s/.pdf/_pdfi_unittest_impress_succeeded/:f) $(MISC)$/$i) \
+ $(foreach,i,$(TESTFILES:s/.pdf/_pdfi_unittest_draw_succeeded/:f) $(MISC)$/$i)
+
+$(MISC)$/%_pdfi_unittest_writer_succeeded : $$(@:s/_succeeded/.xml/:f)
+ rm -f $(MISC)$/$(@:s/_succeeded/.xml/:f)
+ $(BIN)$/pdf2xml -writer $(@:s/_pdfi_unittest_writer_succeeded/.pdf/:f) $(MISC)$/$(@:s/_succeeded/.xml/:f) $(BIN)$/pdfi_unittest_test.ini
+ diff $(MISC)$/$(@:s/_succeeded/.xml/:f) $(@:s/_succeeded/.xml/:f)
+ $(TOUCH) $@
+$(MISC)$/%_pdfi_unittest_impress_succeeded : $$(@:s/_succeeded/.xml/:f)
+ rm -f $(MISC)$/$(@:s/_succeeded/.xml/:f)
+ $(BIN)$/pdf2xml -impress $(@:s/_pdfi_unittest_impress_succeeded/.pdf/:f) $(MISC)$/$(@:s/_succeeded/.xml/:f) $(BIN)$/pdfi_unittest_test.ini
+ diff $(MISC)$/$(@:s/_succeeded/.xml/:f) $(@:s/_succeeded/.xml/:f)
+ $(TOUCH) $@
+$(MISC)$/%_pdfi_unittest_draw_succeeded : $$(@:s/_succeeded/.xml/:f)
+ rm -f $(MISC)$/$(@:s/_succeeded/.xml/:f)
+ $(BIN)$/pdf2xml -draw $(@:s/_pdfi_unittest_draw_succeeded/.pdf/:f) $(MISC)$/$(@:s/_succeeded/.xml/:f) $(BIN)$/pdfi_unittest_test.ini
+ diff $(MISC)$/$(@:s/_succeeded/.xml/:f) $(@:s/_succeeded/.xml/:f)
+ $(TOUCH) $@
+
+# hackaround for dmake's insufficiency to have more than one
+# prerequisite on template rules
+$(foreach,i,$(TESTFILES:s/.pdf/_pdfi_unittest_writer_succeeded/:f) $(MISC)$/$i) : $(BIN)$/pdfi_unittest_test.ini $(BIN)$/pdf2xml$(EXECPOST)
+$(foreach,i,$(TESTFILES:s/.pdf/_pdfi_unittest_impress_succeeded/:f) $(MISC)$/$i) : $(BIN)$/pdfi_unittest_test.ini $(BIN)$/pdf2xml$(EXECPOST)
+$(foreach,i,$(TESTFILES:s/.pdf/_pdfi_unittest_draw_succeeded/:f) $(MISC)$/$i) : $(BIN)$/pdfi_unittest_test.ini $(BIN)$/pdf2xml$(EXECPOST)
+
+.ENDIF
diff --git a/sdext/source/pdfimport/test/testdocs/pictxt.pdf b/sdext/source/pdfimport/test/testdocs/pictxt.pdf
new file mode 100644
index 000000000000..b47b95ec15cb
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/pictxt.pdf
Binary files differ
diff --git a/sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_draw.xml b/sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_draw.xml
new file mode 100644
index 000000000000..f864c4dfb01a
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_draw.xml
@@ -0,0 +1,3379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="20mm" fo:margin-right="10mm" fo:margin-top="31mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:auto-grow-height="true" draw:auto-grow-width="true" draw:fill="none" draw:stroke="none" draw:textarea-horizontal-align="left" draw:textarea-vertical-align="top" fo:padding-bottom="0cm" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:drawing >
+<draw:page draw:master-page-name="master-page3" >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 92.56mm 31.82mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 31.99mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 36.86mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 41.73mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 46.6mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 51.47mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 56.34mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 61.2mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 66.07mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 70.94mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 75.81mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 80.68mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 85.55mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 90.41mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 95.28mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 100.15mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 105.02mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 109.89mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 114.76mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 119.62mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 124.49mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 129.36mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 134.23mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 139.1mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 143.97mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 148.83mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 153.7mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 158.57mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 163.44mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 168.31mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 173.18mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 178.04mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 182.91mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+</draw:page>
+</office:drawing>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_impress.xml b/sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_impress.xml
new file mode 100644
index 000000000000..6d777866ee33
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_impress.xml
@@ -0,0 +1,3379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="20mm" fo:margin-right="10mm" fo:margin-top="31mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:auto-grow-height="true" draw:auto-grow-width="true" draw:fill="none" draw:stroke="none" draw:textarea-horizontal-align="left" draw:textarea-vertical-align="top" fo:padding-bottom="0cm" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:presentation >
+<draw:page draw:master-page-name="master-page3" >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 92.56mm 31.82mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 31.99mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 36.86mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 41.73mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 46.6mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 51.47mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 56.34mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 61.2mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 66.07mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 70.94mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 75.81mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 80.68mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 85.55mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 90.41mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 95.28mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 100.15mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 105.02mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 109.89mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 114.76mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 119.62mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 124.49mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 129.36mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 134.23mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 139.1mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 143.97mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 148.83mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 153.7mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 158.57mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 163.44mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 168.31mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 173.18mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 178.04mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 182.91mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+</draw:page>
+</office:presentation>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_writer.xml b/sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_writer.xml
new file mode 100644
index 000000000000..8b773553d793
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/pictxt_pdfi_unittest_writer.xml
@@ -0,0 +1,533 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="10mm" fo:margin-right="10mm" fo:margin-top="10mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:fill="none" draw:stroke="none" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+<style:style style:family="paragraph" style:master-page-name="master-page3" style:name="paragraph8" >
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:text >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 92.56mm 31.82mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 31.99mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+He heard quiet steps behind him. That didn't bode well. Who could be following him this late at
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 36.86mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+night and in this deadbeat part of town? And at this particular moment, just after he pulled off the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 41.73mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+big time and was making off with the greenbacks. Was there another crook who'd had the same
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 46.6mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+idea, and was now watching him and waiting for a chance to grab the fruit of his labor? Or did the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 51.47mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+steps behind him mean that one of many law officers in town was on to him and just waiting to
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 56.34mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+pounce and snap those cuffs on his wrists? He nervously looked all around. Suddenly he saw the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 61.2mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+alley. Like lightning he darted off to the left and disappeared between the two warehouses almost
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 66.07mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+falling over the trash can lying in the middle of the sidewalk. He tried to nervously tap his way
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 70.94mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+along in the inky darkness and suddenly stiffened: it was a dead-end, he would have to go back the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 75.81mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+way he had come. The steps got louder and louder, he saw the black outline of a figure coming
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 80.68mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+around the corner. Is this the end of the line? he thought pressing himself back against the wall
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 85.55mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+trying to make himself invisible in the dark, was all that planning and energy wasted? He was
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 90.41mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+dripping with sweat now, cold and wet, he could smell the fear coming off his clothes. Suddenly
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 95.28mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+next to him, with a barely noticeable squeak, a door swung quietly to and fro in the night's breeze.
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 100.15mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+Could this be the haven he'd prayed for? Slowly he slid toward the door, pressing himself more and
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 105.02mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+more into the wall, into the dark, away from his enemy. Would this door save his hide?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 109.89mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+He heard quiet steps behind him. That didn't bode well. Who could be following him this late at
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 114.76mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+night and in this deadbeat part of town? And at this particular moment, just after he pulled off the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 119.62mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+big time and was making off with the greenbacks. Was there another crook who'd had the same
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 124.49mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+idea, and was now watching him and waiting for a chance to grab the fruit of his labor? Or did the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 129.36mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+steps behind him mean that one of many law officers in town was on to him and just waiting to
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 134.23mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+pounce and snap those cuffs on his wrists? He nervously looked all around. Suddenly he saw the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 139.1mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+alley. Like lightning he darted off to the left and disappeared between the two warehouses almost
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 143.97mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+falling over the trash can lying in the middle of the sidewalk. He tried to nervously tap his way
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 148.83mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+along in the inky darkness and suddenly stiffened: it was a dead-end, he would have to go back the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 153.7mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+way he had come. The steps got louder and louder, he saw the black outline of a figure coming
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 158.57mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+around the corner. Is this the end of the line? he thought pressing himself back against the wall
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 163.44mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+trying to make himself invisible in the dark, was all that planning and energy wasted? He was
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 168.31mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+dripping with sweat now, cold and wet, he could smell the fear coming off his clothes. Suddenly
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 173.18mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+next to him, with a barely noticeable squeak, a door swung quietly to and fro in the night's breeze.
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 178.04mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+Could this be the haven he'd prayed for? Slowly he slid toward the door, pressing himself more and
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 182.91mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+more into the wall, into the dark, away from his enemy. Would this door save his hide?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<text:p text:style-name="paragraph8" >
+</text:p>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 92.56mm 31.82mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 31.99mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 36.86mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 41.73mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 46.6mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 51.47mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 56.34mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 61.2mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 66.07mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 70.94mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 75.81mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 80.68mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 85.55mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 90.41mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 95.28mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 100.15mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 105.02mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 109.89mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 114.76mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 119.62mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 124.49mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 129.36mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 134.23mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 139.1mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 143.97mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 148.83mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 153.7mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 158.57mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 163.44mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 168.31mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 173.18mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 178.04mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 182.91mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+</office:text>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/txtpic.pdf b/sdext/source/pdfimport/test/testdocs/txtpic.pdf
new file mode 100644
index 000000000000..a81c9d25c5cf
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/txtpic.pdf
Binary files differ
diff --git a/sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_draw.xml b/sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_draw.xml
new file mode 100644
index 000000000000..da1251864b43
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_draw.xml
@@ -0,0 +1,3379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="20mm" fo:margin-right="10mm" fo:margin-top="20mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:auto-grow-height="true" draw:auto-grow-width="true" draw:fill="none" draw:stroke="none" draw:textarea-horizontal-align="left" draw:textarea-vertical-align="top" fo:padding-bottom="0cm" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:drawing >
+<draw:page draw:master-page-name="master-page3" >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 25.05mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 29.91mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 34.78mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 39.65mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 44.52mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 49.39mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 54.26mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 59.12mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 63.99mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 68.86mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 73.73mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 78.6mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 83.47mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 88.33mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 93.2mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 98.07mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.94mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 107.81mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 112.68mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 117.54mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 127.28mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 132.15mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 137.02mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 141.89mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 146.75mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 151.62mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 156.49mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 161.36mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 166.23mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 171.1mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 94.4mm 192.51mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+</draw:page>
+</office:drawing>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_impress.xml b/sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_impress.xml
new file mode 100644
index 000000000000..a57b2bc750de
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_impress.xml
@@ -0,0 +1,3379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="20mm" fo:margin-right="10mm" fo:margin-top="20mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:auto-grow-height="true" draw:auto-grow-width="true" draw:fill="none" draw:stroke="none" draw:textarea-horizontal-align="left" draw:textarea-vertical-align="top" fo:padding-bottom="0cm" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:presentation >
+<draw:page draw:master-page-name="master-page3" >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 25.05mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 29.91mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 34.78mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 39.65mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 44.52mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 49.39mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 54.26mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 59.12mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 63.99mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 68.86mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 73.73mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 78.6mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 83.47mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 88.33mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 93.2mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 98.07mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.94mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 107.81mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 112.68mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 117.54mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 127.28mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 132.15mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 137.02mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 141.89mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 146.75mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 151.62mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 156.49mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 161.36mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 166.23mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 171.1mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 94.4mm 192.51mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+</draw:page>
+</office:presentation>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_writer.xml b/sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_writer.xml
new file mode 100644
index 000000000000..955b81b73a36
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/txtpic_pdfi_unittest_writer.xml
@@ -0,0 +1,533 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="10mm" fo:margin-right="10mm" fo:margin-top="10mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:fill="none" draw:stroke="none" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+<style:style style:family="paragraph" style:master-page-name="master-page3" style:name="paragraph8" >
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:text >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+He heard quiet steps behind him. That didn't bode well. Who could be following him this late at
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 25.05mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+night and in this deadbeat part of town? And at this particular moment, just after he pulled off the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 29.91mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+big time and was making off with the greenbacks. Was there another crook who'd had the same
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 34.78mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+idea, and was now watching him and waiting for a chance to grab the fruit of his labor? Or did the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 39.65mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+steps behind him mean that one of many law officers in town was on to him and just waiting to
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 44.52mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+pounce and snap those cuffs on his wrists? He nervously looked all around. Suddenly he saw the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 49.39mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+alley. Like lightning he darted off to the left and disappeared between the two warehouses almost
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 54.26mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+falling over the trash can lying in the middle of the sidewalk. He tried to nervously tap his way
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 59.12mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+along in the inky darkness and suddenly stiffened: it was a dead-end, he would have to go back the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 63.99mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+way he had come. The steps got louder and louder, he saw the black outline of a figure coming
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 68.86mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+around the corner. Is this the end of the line? he thought pressing himself back against the wall
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 73.73mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+trying to make himself invisible in the dark, was all that planning and energy wasted? He was
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 78.6mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+dripping with sweat now, cold and wet, he could smell the fear coming off his clothes. Suddenly
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 83.47mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+next to him, with a barely noticeable squeak, a door swung quietly to and fro in the night's breeze.
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 88.33mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+Could this be the haven he'd prayed for? Slowly he slid toward the door, pressing himself more and
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 93.2mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+more into the wall, into the dark, away from his enemy. Would this door save his hide?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 98.07mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+He heard quiet steps behind him. That didn't bode well. Who could be following him this late at
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.94mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+night and in this deadbeat part of town? And at this particular moment, just after he pulled off the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 107.81mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+big time and was making off with the greenbacks. Was there another crook who'd had the same
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 112.68mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+idea, and was now watching him and waiting for a chance to grab the fruit of his labor? Or did the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 117.54mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+steps behind him mean that one of many law officers in town was on to him and just waiting to
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+pounce and snap those cuffs on his wrists? He nervously looked all around. Suddenly he saw the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 127.28mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+alley. Like lightning he darted off to the left and disappeared between the two warehouses almost
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 132.15mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+falling over the trash can lying in the middle of the sidewalk. He tried to nervously tap his way
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 137.02mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+along in the inky darkness and suddenly stiffened: it was a dead-end, he would have to go back the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 141.89mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+way he had come. The steps got louder and louder, he saw the black outline of a figure coming
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 146.75mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+around the corner. Is this the end of the line? he thought pressing himself back against the wall
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 151.62mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+trying to make himself invisible in the dark, was all that planning and energy wasted? He was
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 156.49mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+dripping with sweat now, cold and wet, he could smell the fear coming off his clothes. Suddenly
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 161.36mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+next to him, with a barely noticeable squeak, a door swung quietly to and fro in the night's breeze.
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 166.23mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+Could this be the haven he'd prayed for? Slowly he slid toward the door, pressing himself more and
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 171.1mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+more into the wall, into the dark, away from his enemy. Would this door save his hide?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 94.4mm 192.51mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<text:p text:style-name="paragraph8" >
+</text:p>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 25.05mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 29.91mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 34.78mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 39.65mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 44.52mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 49.39mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 54.26mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 59.12mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 63.99mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 68.86mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 73.73mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 78.6mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 83.47mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 88.33mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 93.2mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 98.07mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.94mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 107.81mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 112.68mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 117.54mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 127.28mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 132.15mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 137.02mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 141.89mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 146.75mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 151.62mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 156.49mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 161.36mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 166.23mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 171.1mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 94.4mm 192.51mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+</office:text>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/txtpictxt.pdf b/sdext/source/pdfimport/test/testdocs/txtpictxt.pdf
new file mode 100644
index 000000000000..bd79f7406b2a
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/txtpictxt.pdf
Binary files differ
diff --git a/sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_draw.xml b/sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_draw.xml
new file mode 100644
index 000000000000..01cdab8eaf68
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_draw.xml
@@ -0,0 +1,3379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="20mm" fo:margin-right="10mm" fo:margin-top="20mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:auto-grow-height="true" draw:auto-grow-width="true" draw:fill="none" draw:stroke="none" draw:textarea-horizontal-align="left" draw:textarea-vertical-align="top" fo:padding-bottom="0cm" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:drawing >
+<draw:page draw:master-page-name="master-page3" >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 25.05mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 29.91mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 34.78mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 39.65mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 44.52mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 49.39mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 54.26mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 59.12mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 63.99mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 68.86mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 73.73mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 78.6mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 83.47mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 88.33mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 93.2mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 98.07mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.94mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 107.81mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 112.68mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 117.54mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 127.28mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 132.15mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 147.42mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 147.6mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 152.47mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 157.34mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 162.21mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 167.07mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 171.94mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 176.81mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 181.68mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+</draw:page>
+</office:drawing>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_impress.xml b/sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_impress.xml
new file mode 100644
index 000000000000..b4e9bfdc2468
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_impress.xml
@@ -0,0 +1,3379 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="20mm" fo:margin-right="10mm" fo:margin-top="20mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:auto-grow-height="true" draw:auto-grow-width="true" draw:fill="none" draw:stroke="none" draw:textarea-horizontal-align="left" draw:textarea-vertical-align="top" fo:padding-bottom="0cm" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:presentation >
+<draw:page draw:master-page-name="master-page3" >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 25.05mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 29.91mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 34.78mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 39.65mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 44.52mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 49.39mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 54.26mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 59.12mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 63.99mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 68.86mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 73.73mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 78.6mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 83.47mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 88.33mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 93.2mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 98.07mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+H
+e
+
+h
+e
+a
+r
+d
+
+q
+u
+i
+e
+t
+
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+.
+
+T
+h
+a
+t
+
+d
+i
+d
+n
+'
+t
+
+b
+o
+d
+e
+
+w
+e
+l
+l
+.
+
+W
+h
+o
+
+c
+o
+u
+l
+d
+
+b
+e
+
+f
+o
+l
+l
+o
+w
+i
+n
+g
+
+h
+i
+m
+
+t
+h
+i
+s
+
+l
+a
+t
+e
+
+a
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.94mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+i
+g
+h
+t
+
+a
+n
+d
+
+i
+n
+
+t
+h
+i
+s
+
+d
+e
+a
+d
+b
+e
+a
+t
+
+p
+a
+r
+t
+
+o
+f
+
+t
+o
+w
+n
+?
+
+A
+n
+d
+
+a
+t
+
+t
+h
+i
+s
+
+p
+a
+r
+t
+i
+c
+u
+l
+a
+r
+
+m
+o
+m
+e
+n
+t
+,
+
+j
+u
+s
+t
+
+a
+f
+t
+e
+r
+
+h
+e
+
+p
+u
+l
+l
+e
+d
+
+o
+f
+f
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 107.81mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+i
+g
+
+t
+i
+m
+e
+
+a
+n
+d
+
+w
+a
+s
+
+m
+a
+k
+i
+n
+g
+
+o
+f
+f
+
+w
+i
+t
+h
+
+t
+h
+e
+
+g
+r
+e
+e
+n
+b
+a
+c
+k
+s
+.
+
+W
+a
+s
+
+t
+h
+e
+r
+e
+
+a
+n
+o
+t
+h
+e
+r
+
+c
+r
+o
+o
+k
+
+w
+h
+o
+'
+d
+
+h
+a
+d
+
+t
+h
+e
+
+s
+a
+m
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 112.68mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+i
+d
+e
+a
+,
+
+a
+n
+d
+
+w
+a
+s
+
+n
+o
+w
+
+w
+a
+t
+c
+h
+i
+n
+g
+
+h
+i
+m
+
+a
+n
+d
+
+w
+a
+i
+t
+i
+n
+g
+
+f
+o
+r
+
+a
+
+c
+h
+a
+n
+c
+e
+
+t
+o
+
+g
+r
+a
+b
+
+t
+h
+e
+
+f
+r
+u
+i
+t
+
+o
+f
+
+h
+i
+s
+
+l
+a
+b
+o
+r
+?
+
+O
+r
+
+d
+i
+d
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 117.54mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+t
+e
+p
+s
+
+b
+e
+h
+i
+n
+d
+
+h
+i
+m
+
+m
+e
+a
+n
+
+t
+h
+a
+t
+
+o
+n
+e
+
+o
+f
+
+m
+a
+n
+y
+
+l
+a
+w
+
+o
+f
+f
+i
+c
+e
+r
+s
+
+i
+n
+
+t
+o
+w
+n
+
+w
+a
+s
+
+o
+n
+
+t
+o
+
+h
+i
+m
+
+a
+n
+d
+
+j
+u
+s
+t
+
+w
+a
+i
+t
+i
+n
+g
+
+t
+o
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+p
+o
+u
+n
+c
+e
+
+a
+n
+d
+
+s
+n
+a
+p
+
+t
+h
+o
+s
+e
+
+c
+u
+f
+f
+s
+
+o
+n
+
+h
+i
+s
+
+w
+r
+i
+s
+t
+s
+?
+
+H
+e
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+l
+o
+o
+k
+e
+d
+
+a
+l
+l
+
+a
+r
+o
+u
+n
+d
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 127.28mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+l
+e
+y
+.
+
+L
+i
+k
+e
+
+l
+i
+g
+h
+t
+n
+i
+n
+g
+
+h
+e
+
+d
+a
+r
+t
+e
+d
+
+o
+f
+f
+
+t
+o
+
+t
+h
+e
+
+l
+e
+f
+t
+
+a
+n
+d
+
+d
+i
+s
+a
+p
+p
+e
+a
+r
+e
+d
+
+b
+e
+t
+w
+e
+e
+n
+
+t
+h
+e
+
+t
+w
+o
+
+w
+a
+r
+e
+h
+o
+u
+s
+e
+s
+
+a
+l
+m
+o
+s
+t
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 132.15mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+f
+a
+l
+l
+i
+n
+g
+
+o
+v
+e
+r
+
+t
+h
+e
+
+t
+r
+a
+s
+h
+
+c
+a
+n
+
+l
+y
+i
+n
+g
+
+i
+n
+
+t
+h
+e
+
+m
+i
+d
+d
+l
+e
+
+o
+f
+
+t
+h
+e
+
+s
+i
+d
+e
+w
+a
+l
+k
+.
+
+H
+e
+
+t
+r
+i
+e
+d
+
+t
+o
+
+n
+e
+r
+v
+o
+u
+s
+l
+y
+
+t
+a
+p
+
+h
+i
+s
+
+w
+a
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 147.42mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 147.6mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+l
+o
+n
+g
+
+i
+n
+
+t
+h
+e
+
+i
+n
+k
+y
+
+d
+a
+r
+k
+n
+e
+s
+s
+
+a
+n
+d
+
+s
+u
+d
+d
+e
+n
+l
+y
+
+s
+t
+i
+f
+f
+e
+n
+e
+d
+:
+
+i
+t
+
+w
+a
+s
+
+a
+
+d
+e
+a
+d
+-
+e
+n
+d
+,
+
+h
+e
+
+w
+o
+u
+l
+d
+
+h
+a
+v
+e
+
+t
+o
+
+g
+o
+
+b
+a
+c
+k
+
+t
+h
+e
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 152.47mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+w
+a
+y
+
+h
+e
+
+h
+a
+d
+
+c
+o
+m
+e
+.
+
+T
+h
+e
+
+s
+t
+e
+p
+s
+
+g
+o
+t
+
+l
+o
+u
+d
+e
+r
+
+a
+n
+d
+
+l
+o
+u
+d
+e
+r
+,
+
+h
+e
+
+s
+a
+w
+
+t
+h
+e
+
+b
+l
+a
+c
+k
+
+o
+u
+t
+l
+i
+n
+e
+
+o
+f
+
+a
+
+f
+i
+g
+u
+r
+e
+
+c
+o
+m
+i
+n
+g
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 157.34mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+a
+r
+o
+u
+n
+d
+
+t
+h
+e
+
+c
+o
+r
+n
+e
+r
+.
+
+I
+s
+
+t
+h
+i
+s
+
+t
+h
+e
+
+e
+n
+d
+
+o
+f
+
+t
+h
+e
+
+l
+i
+n
+e
+?
+
+h
+e
+
+t
+h
+o
+u
+g
+h
+t
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+b
+a
+c
+k
+
+a
+g
+a
+i
+n
+s
+t
+
+t
+h
+e
+
+w
+a
+l
+l
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 162.21mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+t
+r
+y
+i
+n
+g
+
+t
+o
+
+m
+a
+k
+e
+
+h
+i
+m
+s
+e
+l
+f
+
+i
+n
+v
+i
+s
+i
+b
+l
+e
+
+i
+n
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+w
+a
+s
+
+a
+l
+l
+
+t
+h
+a
+t
+
+p
+l
+a
+n
+n
+i
+n
+g
+
+a
+n
+d
+
+e
+n
+e
+r
+g
+y
+
+w
+a
+s
+t
+e
+d
+?
+
+H
+e
+
+w
+a
+s
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 167.07mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+d
+r
+i
+p
+p
+i
+n
+g
+
+w
+i
+t
+h
+
+s
+w
+e
+a
+t
+
+n
+o
+w
+,
+
+c
+o
+l
+d
+
+a
+n
+d
+
+w
+e
+t
+,
+
+h
+e
+
+c
+o
+u
+l
+d
+
+s
+m
+e
+l
+l
+
+t
+h
+e
+
+f
+e
+a
+r
+
+c
+o
+m
+i
+n
+g
+
+o
+f
+f
+
+h
+i
+s
+
+c
+l
+o
+t
+h
+e
+s
+.
+
+S
+u
+d
+d
+e
+n
+l
+y
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 171.94mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+n
+e
+x
+t
+
+t
+o
+
+h
+i
+m
+,
+
+w
+i
+t
+h
+
+a
+
+b
+a
+r
+e
+l
+y
+
+n
+o
+t
+i
+c
+e
+a
+b
+l
+e
+
+s
+q
+u
+e
+a
+k
+,
+
+a
+
+d
+o
+o
+r
+
+s
+w
+u
+n
+g
+
+q
+u
+i
+e
+t
+l
+y
+
+t
+o
+
+a
+n
+d
+
+f
+r
+o
+
+i
+n
+
+t
+h
+e
+
+n
+i
+g
+h
+t
+'
+s
+
+b
+r
+e
+e
+z
+e
+.
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 176.81mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+C
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+b
+e
+
+t
+h
+e
+
+h
+a
+v
+e
+n
+
+h
+e
+'
+d
+
+p
+r
+a
+y
+e
+d
+
+f
+o
+r
+?
+
+S
+l
+o
+w
+l
+y
+
+h
+e
+
+s
+l
+i
+d
+
+t
+o
+w
+a
+r
+d
+
+t
+h
+e
+
+d
+o
+o
+r
+,
+
+p
+r
+e
+s
+s
+i
+n
+g
+
+h
+i
+m
+s
+e
+l
+f
+
+m
+o
+r
+e
+
+a
+n
+d
+
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 181.68mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+m
+o
+r
+e
+
+i
+n
+t
+o
+
+t
+h
+e
+
+w
+a
+l
+l
+,
+
+i
+n
+t
+o
+
+t
+h
+e
+
+d
+a
+r
+k
+,
+
+a
+w
+a
+y
+
+f
+r
+o
+m
+
+h
+i
+s
+
+e
+n
+e
+m
+y
+.
+
+W
+o
+u
+l
+d
+
+t
+h
+i
+s
+
+d
+o
+o
+r
+
+s
+a
+v
+e
+
+h
+i
+s
+
+h
+i
+d
+e
+?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+</draw:page>
+</office:presentation>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_writer.xml b/sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_writer.xml
new file mode 100644
index 000000000000..2b68f12e6bb5
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/txtpictxt_pdfi_unittest_writer.xml
@@ -0,0 +1,533 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="10mm" fo:margin-right="10mm" fo:margin-top="10mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:fill="none" draw:stroke="none" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Thorndale" fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt" >
+
+</style:text-properties>
+
+</style:style>
+<style:style style:family="paragraph" style:master-page-name="master-page3" style:name="paragraph8" >
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:text >
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+He heard quiet steps behind him. That didn't bode well. Who could be following him this late at
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 25.05mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+night and in this deadbeat part of town? And at this particular moment, just after he pulled off the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 29.91mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+big time and was making off with the greenbacks. Was there another crook who'd had the same
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 34.78mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+idea, and was now watching him and waiting for a chance to grab the fruit of his labor? Or did the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 39.65mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+steps behind him mean that one of many law officers in town was on to him and just waiting to
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 44.52mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+pounce and snap those cuffs on his wrists? He nervously looked all around. Suddenly he saw the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 49.39mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+alley. Like lightning he darted off to the left and disappeared between the two warehouses almost
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 54.26mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+falling over the trash can lying in the middle of the sidewalk. He tried to nervously tap his way
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 59.12mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+along in the inky darkness and suddenly stiffened: it was a dead-end, he would have to go back the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 63.99mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+way he had come. The steps got louder and louder, he saw the black outline of a figure coming
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 68.86mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+around the corner. Is this the end of the line? he thought pressing himself back against the wall
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 73.73mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+trying to make himself invisible in the dark, was all that planning and energy wasted? He was
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 78.6mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+dripping with sweat now, cold and wet, he could smell the fear coming off his clothes. Suddenly
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 83.47mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+next to him, with a barely noticeable squeak, a door swung quietly to and fro in the night's breeze.
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 88.33mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+Could this be the haven he'd prayed for? Slowly he slid toward the door, pressing himself more and
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 93.2mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+more into the wall, into the dark, away from his enemy. Would this door save his hide?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 98.07mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+He heard quiet steps behind him. That didn't bode well. Who could be following him this late at
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.94mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+night and in this deadbeat part of town? And at this particular moment, just after he pulled off the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 107.81mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+big time and was making off with the greenbacks. Was there another crook who'd had the same
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 112.68mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+idea, and was now watching him and waiting for a chance to grab the fruit of his labor? Or did the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 117.54mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+steps behind him mean that one of many law officers in town was on to him and just waiting to
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+pounce and snap those cuffs on his wrists? He nervously looked all around. Suddenly he saw the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 127.28mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+alley. Like lightning he darted off to the left and disappeared between the two warehouses almost
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 132.15mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+falling over the trash can lying in the middle of the sidewalk. He tried to nervously tap his way
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 147.42mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 147.6mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+along in the inky darkness and suddenly stiffened: it was a dead-end, he would have to go back the
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 152.47mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+way he had come. The steps got louder and louder, he saw the black outline of a figure coming
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 157.34mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+around the corner. Is this the end of the line? he thought pressing himself back against the wall
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 162.21mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+trying to make himself invisible in the dark, was all that planning and energy wasted? He was
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 167.07mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+dripping with sweat now, cold and wet, he could smell the fear coming off his clothes. Suddenly
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 171.94mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+next to him, with a barely noticeable squeak, a door swung quietly to and fro in the night's breeze.
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 176.81mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+Could this be the haven he'd prayed for? Slowly he slid toward the door, pressing himself more and
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 181.68mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+more into the wall, into the dark, away from his enemy. Would this door save his hide?
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<text:p text:style-name="paragraph8" >
+</text:p>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 20.18mm )" draw:z-index="0" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 25.05mm )" draw:z-index="1" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 29.91mm )" draw:z-index="2" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 34.78mm )" draw:z-index="3" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 39.65mm )" draw:z-index="4" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 44.52mm )" draw:z-index="5" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 49.39mm )" draw:z-index="6" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 54.26mm )" draw:z-index="7" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 59.12mm )" draw:z-index="8" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 63.99mm )" draw:z-index="9" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 68.86mm )" draw:z-index="10" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 73.73mm )" draw:z-index="11" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 78.6mm )" draw:z-index="12" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 83.47mm )" draw:z-index="13" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 88.33mm )" draw:z-index="14" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 93.2mm )" draw:z-index="15" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 98.07mm )" draw:z-index="16" svg:height="4.23mm" svg:width="163.08mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 102.94mm )" draw:z-index="17" svg:height="4.23mm" svg:width="165.69mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 107.81mm )" draw:z-index="18" svg:height="4.23mm" svg:width="162.03mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 112.68mm )" draw:z-index="19" svg:height="4.23mm" svg:width="167.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 117.54mm )" draw:z-index="20" svg:height="4.23mm" svg:width="161.92mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 122.41mm )" draw:z-index="21" svg:height="4.23mm" svg:width="164.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 127.28mm )" draw:z-index="22" svg:height="4.23mm" svg:width="165.52mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 132.15mm )" draw:z-index="23" svg:height="4.23mm" svg:width="161.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 91.75mm 147.42mm )" draw:z-index="32" svg:height="-10.59mm" svg:width="26.45mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:image >
+<office:binary-data >
+UDYKMTAwIDQwCjI1NQr////////////////////////////////////////////////////////////////////////w8fiMlsdda7Bve7nBxuH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx8h79QX6pQX6pQX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Z3O1QX6pQX6plcrRYZ65QX6pSYau4vt3////////////////////////////////////////////////////////////////////////////////////////////////////19vrk5/Lg4/Ds7fb5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fjd4O/j5fFQX6pQX6qBjMK4vt1da7BQX6pVY6y/xeD////////////////////////////////////////////////////////////////////////////////////3+PvAxeCBjMJda7BaaK9YZ65RYKplcrSUncvHzOT5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o6vR7hr9da7DT1+qOl8hQX6pQX6qOmMi+w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////////////X2ut1gbxQX6p1gby4vt3e4e/b3u6vtthda7BQX6pQX6qIksX8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vq4vt1QX6pQX6pgbrLM0eaIksVQX6pQX6qGkcS9w99da7BQX6pRYKq4vt3////////////////////////////////////////////////////////////////////M0eZWZa1QX6qUncv8/P7////////////////O0udVY6xQX6p0gLv8/P7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////x8vh2gr2gqNG2vNtRYKpQX6pda7DM0eaDjsNQX6pQX6qIksXBxuFWZa1QX6pRYKq+w9/////////////////////////////////////////////////////////////s7fZebLFQX6pjcbP19vr///////////////////////92gr1QX6qbpM////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+UnctQX6pQX6qiqtKvtthRYKpQX6pkcbTHzOSBjMJQX6pQX6qMlsfAxeBda7BQX6pTYqzY2+z///////////////////////////////////////////////////////+krNNQX6pQX6qXoM3///////////////////////////+OmMhQX6rHzOT////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////u7/ePmcm2vNxve7lQX6pQX6qiqtKvtthQX6pQX6plcrTJzeWMlsdQX6pQX6qIksW7wd5gbrKgqNGkrNO0u9v////////////////////////////////////////////////5+fxodbZQX6pQX6qmrdT///////////////////////////+VnstVY6zy8/n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////w8fh4g71QX6ppdrbO0udve7lQX6pQX6qiqtK2vNtTYqtQX6pkcbTFyuOJk8ZQX6pQX6p/isHb3u2gqNFQX6pQX6q+w9/////////////////////////////////////////////o6vRVY6xQX6pQX6qDjcP///////////////////////////+Ol8hyfrv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z9PmAi8FQX6pQX6p/isHGy+PBxuFve7lQX6pQX6qpsdWutdhTYqtQX6pjcbPV2et9iMBQX6qYoc2ttNdRYKpQX6pjcbO4vt3JzuX////////////////////////////////////////m6PNVZK1QX6pQX6pWZa3h5PH///////////////////////+mrdSqsdb////////////s7fa0u9uXoM2zudr5+fz////////////////////////09frZ3O3X2+zg4/D////////////////////EyeKOmMiWn8zq7PX////////////////////e4e+vttidpc+0u9v39/v////////////////////////////////////////////////////v8PeBjMJQX6pQX6qIksW9w99YZ65xfbq9w99rd7dQX6pQX6qiqtKrstZVY6xQX6qao87y8/m2vNypsdVRYKpQX6plcrTEyeJ9iMBQX6qzudr8/P7////////////////////////////////09fpebLFQX6pQX6pQX6qDjsP8/P7////////////////////8/P7////////////Cx+FgbrJQX6pQX6pQX6q4vt3///////////////////////+KlMZSYatSYatrd7f5+fz////////z9PmKlMZQX6pQX6pQX6qgqNH////////////z9PmZos1QX6pQX6pQX6pQX6qXoM3////////////////////////////////////////////////v8Pd4g71QX6pQX6qMlsfAxeBda7BQX6pRYKrJzeXo6vRodbZQX6pQX6p9iMBWZa1QX6qMlsf///+utdhQX6pQX6prd7fFyuN/isFQX6pQX6qKlMb///////////////////////////////////////+KlMZQX6pQX6pQX6pQX6qiqtL///////////////////////////////+6wN1QX6pRYKpQX6pQX6pQX6qpsdX////////////////////c3+5SYatQX6pQX6qZos3////////v8Pd5hb5RYKpTYqtQX6pQX6qOl8j////////o6vRyfrtda7CZos56hb5QX6pQX6plcrT5+fz////////////////////////////////////////19vp5hb5QX6pQX6qIksXBxuFWZa1QX6pTYqzEyeL09frt7/bd4O9mc7VQX6pQX6pQX6pQX6q9w9+vtthQX6pQX6pkcbTM0eZ/isFQX6pQX6qMlsfz9Pno6vT19vr////////////////////////////////FyuNQX6pQX6pQX6pQX6pQX6qxt9n////////////////////////U1+pQX6q4vt2vtthQX6pQX6pQX6rO0uf///////////////////+iqtJQX6pQX6pSYavY2+z////8/P57hr9ib7Pb3u5pdrZQX6pQX6qkrNP////w8fhpdrZ4g73s7fb///+6wN1QX6pQX6pib7P39/v////////////////////////////////////19vqAi8FQX6pQX6qGkcS9w99da7BQX6pVY6y6wN2mrdRgbbJYZ66DjcPFyuN9iMBVY6xaaK+gqNGqsdZQX6pQX6pkcbTFyuN9iMBQX6pQX6qRmsnFyuNxfbpWZa1ndLW2vNv////////////////////////////5+fx2gr1QX6pQX6pQX6pQX6pWZa3M0eb////////////////z9Plmc7WgqNH///+PmclQX6pQX6pndLX39/v///////////////////9yfrtQX6pQX6pve7n8/P7///+krNNaaK/g4/Dy8/lYZ65QX6pQX6rFyuP5+fx2gr1+icD39/v///////+XoM1QX6pQX6p1gbz8/P7///////////////////////////////////+TnMtQX6pQX6qPmcm+w99da7BQX6pVY6y7wd6ao85QX6pQX6pQX6pQX6p2gr319vrg4/Dq7PXT1+pRYKpQX6pndLXFyuN9iMBQX6pQX6qSm8q7wd5YZ65QX6pQX6pQX6pRYKrX2uv////////////////////////////Y2+xVY6xQX6pQX6pQX6pQX6pgbbLj5fH///////////+gqNFxfbr8/P7s7fZYZ65QX6pQX6qgqNH////////////////////X2+xTYqtQX6pQX6qep9D////d4O9WZa3O0uf////FyuNQX6pQX6pWZa3s7faKlMZxfbr39/v////////5+fxodbZQX6pQX6qWn8z///////////////////////////////////////9YZ65QX6prd7ext9lda7BQX6pYZ67DyOKZos5QX6pQX6pwfLlyfrtQX6pQX6rg4/D///////+iqtJQX6pVY6yzudp/isFQX6pQX6qSm8q9w99YZ65QX6paaK+BjMJRYKpQX6qmrdT///////////////////////////////+2vNtQX6pQX6pQX6pQX6pQX6p2gr36+/3////h5PFebLHb3u3///+2vNxQX6pQX6pQX6rU1+r///////////////////+XoM1QX6pQX6pTYqvb3u3///+Zos6ao87///////+Zos5QX6pQX6qDjsOttNdmc7Xs7fb////////////FyuNQX6pQX6pQX6rJzeX///////////////////////////////////////9jcbNQX6pVY6xRYKpQX6pWZa26wN2gqNFQX6pQX6p2gr3JzeVyfrtQX6pWZa3x8vj///////+xt9lQX6pRYKpYZ65QX6pQX6qSm8rDyOJaaK9QX6pVZK26wN2VnstQX6pQX6q4vt3///////////////////////////////////+PmclQX6pQX6pQX6pQX6pQX6qttNf////Z3O20u9v////8/P54g71QX6pQX6preLf5+fz////////////////09fpkcbRQX6pQX6pve7n8/P7////h5PH39/v////3+PtodbZQX6pRYKqMlsdlcrTQ1Oj///////////////+GkcRQX6pQX6pjcbP19vr///////////////////////////////////////+6wN1QX6pQX6pQX6pWZa26wN2bpM9QX6pQX6p2gr3HzORyfrtQX6pQX6qpsdXO0uekrNO0u9vU1+prd7dQX6pQX6pQX6qTnMu7wd5aaK9QX6paaK++w9+VnstQX6pQX6pyfrv09fr////////////////////////////////////19vpwfLlQX6pQX6pQX6pQX6paaK/s7fb////////////Z3O1RYKpQX6pQX6qrstb///////////////////+xt9lQX6pQX6pQX6qep9D////////////////////U1+pRYKpQX6pSYatRYKqgqNH////////////////m6PNYZ65QX6pQX6qRmsn////////////////////////////////////////////////Gy+OOmMiTnMvO0ueZos5QX6pQX6p1gbzGy+NreLdQX6pQX6qkrNOpsdVRYKpQX6pQX6pwfLnFyuOgqNGMlse4vt29w99YZ65QX6paaK+9w9+Sm8pQX6pQX6p4g73o6vT////////////////////////////////////////////Z3O1YZ65QX6pQX6pQX6pQX6q/xeD///////////+gqNFQX6pQX6pVY6zh5PH////////////////09fpndLVQX6pQX6pSYavX2uv///////////////////+mrdRQX6pQX6pQX6pndLXz9Pn///////////////+ep9BQX6pQX6pQX6rO0uf////////////////////////////////////////////////////////6+/2bpM9QX6pQX6pwfLnLz+ZsebhQX6pQX6qgqNHq7PVVY6xQX6pSYatQX6pQX6psebju7/f////HzORVY6xQX6pVZK2+w9+Rm8pQX6pQX6pxfbrv8Pf///////////////////////////////////////////////////+XoM1QX6pQX6pQX6pQX6qkrNP////////39/tlcrRQX6pQX6qAi8H///////////////////+ep9BQX6pQX6pQX6pve7n8/P7////////////////6+/1ve7lQX6pQX6pQX6q9w9/////////////////x8vhebLFQX6pQX6pyfrv8/P7////////////////////////////////////////////////////////O0udQX6pQX6p2gr3Lz+ZxfbpQX6pQX6qYoc3////c3+5QX6pQX6qGkcSZos1QX6pQX6pwfLnh5PF2gr1QX6pYZ664vt2VnstQX6pQX6pwfLno6vT////////////////////V2euzudr////////////////////////////k5/JYZ65QX6pQX6pQX6qZos7////////O0udQX6pQX6pQX6q9w9/////////////////S1ulVZK1VY6xQX6pQX6qYoc3////////////////////Q1OhRYKpQX6pQX6pve7n3+Pv////////////////AxeBQX6pQX6pQX6qzudr////////////////////////////////////////////////////////////8/P6zudp4g73EyeJsebhQX6pQX6qkrNOpsdWDjsPs7fZodbZQX6paaK+2vNykrNNQX6pQX6preLe/xeB7hr+4vt2Wn8xQX6pQX6pxfbro6vT///////////////////////+Nl8hrd7f///////////////////////////////+DjcNQX6pQX6pQX6qiqtL///////+Zos1QX6pQX6pda7Dv8Pf////////////z9Plve7mRm8paaK9QX6pQX6rO0uf////8/P6ao87k5/L///+Yoc1QX6pQX6pRYKrJzeX///////////////////+Ai8FQX6pQX6pWZa3o6vT////S1umzudr////////////////////////////////////////////////////////o6vRsebhQX6pQX6qiqtLDyOJQX6pQX6qOmMjLz+ZebLFQX6pVY6y2vNyao85QX6pQX6pyfrvg4/CiqtJQX6pQX6pwfLnq7PX///////////////////////////9yfrt0gLv///////////////////////////////+ep9BQX6pQX6pQX6q/xeD////39/tlcrRQX6pQX6qPmcn///////////////+OmMiOl8ixt9lQX6pQX6pmc7X3+Pv////O0udaaK/x8vj8/P5sebhQX6pQX6pyfrv////////////////////k5/JVY6xQX6pQX6qJk8b////8/P5yfrukrNP///////////////////////////////////////////////////////////+qsdZSYauZos2zudq4vt2DjsNQX6pQX6qNl8jDyOJebLFQX6pVY6y2vNuao85QX6pQX6p0gLu9w99pdrZsebjq7PX////////////////////////////19vpYZ654g73///////////////////////////////+Zos1QX6pQX6paaK/s7fb////T1+pQX6pQX6pRYKrS1un///////////+rstZrd7f09fqAi8FQX6pQX6qZos3////3+PtsebittNf////U1+pRYKpQX6pQX6q4vt3///////////////////+0u9tQX6pQX6pQX6rHzOT///+zudppdrb3+Pv////////////////////////////////////////////////////////////////S1umkrNNQX6pebLG+w9+Fj8RQX6pQX6qMlsfDyOJebLFQX6pVY6y0u9uep9BQX6pQX6pwfLnFyuPo6vT////////////////////////////////Z3O1QX6psebj8/P7////////////////////////6+/1wfLlQX6pQX6qttNf///////+ttNdQX6pQX6ppdrb6+/3///////+ttNdda7Dg4/D39/taaK9QX6pQX6rEyeL///+Vnstyfrv8/P7///+bpM9QX6pQX6plcrT39/v///////////////////+BjMJQX6pQX6pib7P6+/3c3+5YZ67M0eb///////////////////////////////////////////////////////////////////////+zudpQX6pQX6pda7DDyOKAi8FQX6pQX6qNl8jHzORda7BQX6pTYqy7wd6ep9BQX6preLfq7PX///////////////////////////////////+7wd5QX6pWZa3q7PX////////////////////////EyeJQX6pQX6p8h7/8/P7///////+MlsdQX6pQX6qFj8T///////+nr9RWZa3Q1Oj////Z3O1SYatQX6pTYqve4e+2vNxTYqvf4vD////8/P5wfLlQX6pQX6qXoM3////////////////////x8vhaaK9QX6pQX6qPmcns7fZib7OTnMv///////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pjcbO/xeCAi8FQX6pQX6qRm8rGy+Nda7BQX6pTYqyss9erstbk5/L///////////////////////////////////////+mrdRQX6pQX6qkrNP////////////////////s7fZpdrZQX6pyfrvq7PX////////8/P52gr1QX6pQX6pjcbOss9d/isFebLHT1+r////////HzORQX6pQX6pTYqtwfLlTYqzCx+H////////a3e1TYqxQX6pRYKrQ1Oj////////////////////b3u1SYatQX6pQX6pgbrJda7CGkcTd4O+zudrJzeX///////////////////////////////////////////////////////////////////////////+vtthRYKpQX6pib7PDyOKFj8RQX6pQX6qKlMbFyuNaaK9QX6pyfrv8/P7////////////////////////////////////////////Z3O1ndLVQX6pQX6qZos7m6PP39/vx8vi/xeBjcbNQX6qOl8jv8Pf///////////////+DjcNQX6pQX6pQX6pQX6p1gbzh5PH////////////DyOJQX6pQX6pQX6pWZa2/xeD///////////+ep9BQX6pQX6pjcbP5+fz////////////////////Z3O1QX6pQX6pQX6pQX6qDjcP39/vX2+ypsdW9w9////////////////////////////////////////////////////////////////////////////////+4vt1QX6pQX6pda7C+w9+IksVRYKpQX6qzudrP0+h9iMDm6PP////////////////////////////////////////////////////v8Pe6wN2GkcRaaK9ebLFpdrZjcbNebLGOmMjS1un////////////////////////U1+ppdrZda7CBjMK/xeD6+/3////////////////k5/JlcrRWZa2Jk8be4e/////////////////P0+ipsdWnr9TJzeX////////////////////////39/uDjsNYZ65sebixuNn6+/3////u7/fW2evg4/D///////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pgbbKpsdVYZ65QX6qIksX////8/P7////////////////////////////////////////////////////////////////////09frd4O/Q1Oja3e3z9Pn////////////////////////////////////3+Pvz9Pn////////////////////////////////x8vjo6vT////////////////////////////////////////////////////////////////////8/P7s7fb5+fz///////////////////////////////////////////////////////////////////////////////////////////////////////////////+vtthQX6pQX6pQX6pQX6pQX6qdpc////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+0u9tYZ65QX6pQX6pve7no6vT////////////////////////////////////////////////////////////////////////////////////////////////X2+y4vt3////////////////////////////////////////////////////////////////////////////////////////////////b3u7Q1Oj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////b3u6rsta4vt3y8/n////////////////////////////////////////////////////////////////////8/P7q7PXe4e/S1un5+fzQ1Ojk5/L////S1unZ3O3////////V2evS1un6+/3q7PXd4O/v8Pf////Q1OjZ3O3////////m6PPO0ufv8Pfj5fH////////j5fH////g4/DS1unx8viao86Rmsnm6PP////o6vTS1un5+fz////q7PXd4O/X2uv5+fzQ1Ojm6PP////5+fzQ1Ojk5/L////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////5+fx5hb6iqtKVnsyDjsOutdh4g73t7/apsdWrstb///+ep9CiqtK6wN3y8/l7hr+Vnsvq7PWdpc+ttNeOmMi4vt3f4u+MlsfFyuPq7PWOmMjc3+7g4/CZos62vNyIksXO0ufq7PWPmcmGkcTZ3O3O0ueNl8iutdiUncv39/t4g72mrdSKlMaDjsOttNeFj8T09fqRm8qxt9nf4u/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/t6hb75+fzGy+OTnMv///+Fj8Tf4u/S1umss9fv8Pd/isH////////3+Pt6hb709frf4u+GkcT////u7/eGkcTd4O+Ai8G0u9v5+fy7wd6bpM+mrdTFyuPFyuN7hr/DyOL///+9w9+zudr///+Rm8qGkcSttNePmcnu7/d7hr/8/P60u9uSm8r///+Pmcnv8PeVnsyao87j5fH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////19vqBjML8/P6+w9+gqNH///+DjcPf4vDM0eaqsdbx8vh1gbz09fr6+/3z9PmJk8b6+/3g4/B7hr/8/P3Q1OiRmsn////t7/aMlsenr9T5+fxve7l5hb7y8/n////k5/J7hr/U1+q9w9+or9X///+VnsugqNH19vr5+fzz9PmFj8T///+vttigqNH///+Nl8jv8Pf8/P6+w997hr/5+fz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/uZos78/P3Lz+axuNn///+ao87m6PPW2eu4vt3///+mrdSRmsmmrdTu7/eiqtL3+Pv///+iqtKXoM2Ol8jd4O/t7/aqsdaVnsvS1un///+VnsyVnsv////T1+qmrdSZos3v8Pfc3+6BjMLLz+bf4u+KlMamrdS+w9/19vqdpc////++w9+zudr///+krNPw8fi/xeCep9CxuNn////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8/P3////8/P78/P7////8/P3////////8/P7////////x8vjz9Pn////8/P7////////////x8vj5+fz////8/P3u7/f3+Pv////39/uNl8jT1+r////3+Pvu7/f8/P7////////19vr19vr////8/P3v8Pf39/v////8/P3////8/P78/P7////8/P7////z9Pnx8vj////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////s7faXoM2nr9T///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8=
+</office:binary-data>
+</draw:image>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 147.6mm )" draw:z-index="24" svg:height="4.23mm" svg:width="168.27mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 152.47mm )" draw:z-index="25" svg:height="4.23mm" svg:width="161.39mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 157.34mm )" draw:z-index="26" svg:height="4.23mm" svg:width="161.18mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 162.21mm )" draw:z-index="27" svg:height="4.23mm" svg:width="159.56mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 167.07mm )" draw:z-index="28" svg:height="4.23mm" svg:width="164mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 171.94mm )" draw:z-index="29" svg:height="4.23mm" svg:width="167mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 176.81mm )" draw:z-index="30" svg:height="4.23mm" svg:width="169.29mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="translate( 20.03mm 181.68mm )" draw:z-index="31" svg:height="4.23mm" svg:width="146.82mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+</office:text>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/verticaltext.pdf b/sdext/source/pdfimport/test/testdocs/verticaltext.pdf
new file mode 100644
index 000000000000..a83af3bfb1a7
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/verticaltext.pdf
Binary files differ
diff --git a/sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_draw.xml b/sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_draw.xml
new file mode 100644
index 000000000000..26f1f9c109c5
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_draw.xml
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="36mm" fo:margin-right="10mm" fo:margin-top="60mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:auto-grow-height="true" draw:auto-grow-width="true" draw:fill="none" draw:stroke="none" draw:textarea-horizontal-align="left" draw:textarea-vertical-align="top" fo:padding-bottom="0cm" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Albany" fo:font-size="18pt" style:font-size-asian="18pt" style:font-size-complex="18pt" >
+
+</style:text-properties>
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:drawing >
+<draw:page draw:master-page-name="master-page3" >
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 64.24mm )" draw:z-index="13" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 60mm )" draw:z-index="12" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 68.47mm )" draw:z-index="14" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+S
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 72.71mm )" draw:z-index="15" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+4
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 78.45mm )" draw:z-index="7" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+2
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 82.69mm )" draw:z-index="6" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+S
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 86.96mm )" draw:z-index="5" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 91.15mm )" draw:z-index="4" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 102.51mm )" draw:z-index="0" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 110.98mm )" draw:z-index="2" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+S
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 106.75mm )" draw:z-index="1" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 115.22mm )" draw:z-index="3" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+1
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 159.76mm )" draw:z-index="19" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+5
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 162.94mm )" draw:z-index="18" svg:height="6.35mm" svg:width="3.17mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 170.7mm )" draw:z-index="16" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 166.47mm )" draw:z-index="17" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 230.18mm )" draw:z-index="11" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+3
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 233.35mm )" draw:z-index="10" svg:height="6.35mm" svg:width="3.17mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 241.12mm )" draw:z-index="8" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 236.88mm )" draw:z-index="9" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+</draw:page>
+</office:drawing>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_impress.xml b/sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_impress.xml
new file mode 100644
index 000000000000..6bc625b04647
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_impress.xml
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="36mm" fo:margin-right="10mm" fo:margin-top="60mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:auto-grow-height="true" draw:auto-grow-width="true" draw:fill="none" draw:stroke="none" draw:textarea-horizontal-align="left" draw:textarea-vertical-align="top" fo:padding-bottom="0cm" fo:padding-left="0cm" fo:padding-right="0cm" fo:padding-top="0cm" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Albany" fo:font-size="18pt" style:font-size-asian="18pt" style:font-size-complex="18pt" >
+
+</style:text-properties>
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:presentation >
+<draw:page draw:master-page-name="master-page3" >
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 64.24mm )" draw:z-index="13" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 60mm )" draw:z-index="12" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 68.47mm )" draw:z-index="14" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+S
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 72.71mm )" draw:z-index="15" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+4
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 78.45mm )" draw:z-index="7" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+2
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 82.69mm )" draw:z-index="6" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+S
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 86.96mm )" draw:z-index="5" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 91.15mm )" draw:z-index="4" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 102.51mm )" draw:z-index="0" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 110.98mm )" draw:z-index="2" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+S
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 106.75mm )" draw:z-index="1" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 115.22mm )" draw:z-index="3" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+1
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 159.76mm )" draw:z-index="19" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+5
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 162.94mm )" draw:z-index="18" svg:height="6.35mm" svg:width="3.17mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 170.7mm )" draw:z-index="16" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 166.47mm )" draw:z-index="17" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 230.18mm )" draw:z-index="11" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+3
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 233.35mm )" draw:z-index="10" svg:height="6.35mm" svg:width="3.17mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 241.12mm )" draw:z-index="8" svg:height="6.35mm" svg:width="4.22mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 236.88mm )" draw:z-index="9" svg:height="6.35mm" svg:width="3.53mm" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+</draw:page>
+</office:presentation>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_writer.xml b/sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_writer.xml
new file mode 100644
index 000000000000..ed2df0e34f41
--- /dev/null
+++ b/sdext/source/pdfimport/test/testdocs/verticaltext_pdfi_unittest_writer.xml
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<office:document office:version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
+<office:automatic-styles >
+<style:page-layout style:name="page-layout2" >
+<style:page-layout-properties fo:margin-bottom="10mm" fo:margin-left="10mm" fo:margin-right="10mm" fo:margin-top="10mm" fo:page-height="297.03mm" fo:page-width="209.9mm" style:print-orientation="portrait" style:writing-mode="lr-tb" >
+
+</style:page-layout-properties>
+
+</style:page-layout>
+<style:style style:family="graphic" style:name="graphic5" >
+<style:graphic-properties draw:fill="none" draw:stroke="none" >
+
+</style:graphic-properties>
+
+</style:style>
+<style:style style:family="text" style:name="text7" >
+<style:text-properties fo:color="#000000" fo:font-family="Albany" fo:font-size="18pt" style:font-size-asian="18pt" style:font-size-complex="18pt" >
+
+</style:text-properties>
+
+</style:style>
+<style:style style:family="paragraph" style:master-page-name="master-page3" style:name="paragraph8" >
+
+</style:style>
+</office:automatic-styles>
+<office:styles >
+</office:styles>
+<office:master-styles >
+<style:master-page style:name="master-page3" style:page-layout-name="page-layout2" >
+
+</style:master-page>
+</office:master-styles>
+<office:body >
+<office:text >
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 64.24mm )" draw:z-index="13" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 60mm )" draw:z-index="12" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 68.47mm )" draw:z-index="14" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+S
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 72.71mm )" draw:z-index="15" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+4
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 78.45mm )" draw:z-index="7" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+2
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 82.69mm )" draw:z-index="6" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+S
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 86.96mm )" draw:z-index="5" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 91.15mm )" draw:z-index="4" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 102.51mm )" draw:z-index="0" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 110.98mm )" draw:z-index="2" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+S
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 106.75mm )" draw:z-index="1" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+B
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 115.22mm )" draw:z-index="3" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+1
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 159.76mm )" draw:z-index="19" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+5
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 162.94mm )" draw:z-index="18" svg:height="6.35mm" svg:width="3.17mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 170.7mm )" draw:z-index="16" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 166.47mm )" draw:z-index="17" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 230.18mm )" draw:z-index="11" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+3
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 233.35mm )" draw:z-index="10" svg:height="6.35mm" svg:width="3.17mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+s
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 241.12mm )" draw:z-index="8" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+A
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 236.88mm )" draw:z-index="9" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+<text:span text:style-name="text7" >
+b
+</text:span>
+</text:p>
+</draw:text-box>
+</draw:frame>
+<text:p text:style-name="paragraph8" >
+</text:p>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 64.24mm )" draw:z-index="13" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 60mm )" draw:z-index="12" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 68.47mm )" draw:z-index="14" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 121.28mm 72.71mm )" draw:z-index="15" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 78.45mm )" draw:z-index="7" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 82.69mm )" draw:z-index="6" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 86.96mm )" draw:z-index="5" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 151.23mm 91.15mm )" draw:z-index="4" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 102.51mm )" draw:z-index="0" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 110.98mm )" draw:z-index="2" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 106.75mm )" draw:z-index="1" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( -1.5707963267949 ) translate( 48.78mm 115.22mm )" draw:z-index="3" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 159.76mm )" draw:z-index="19" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 162.94mm )" draw:z-index="18" svg:height="6.35mm" svg:width="3.17mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 170.7mm )" draw:z-index="16" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 161.71mm 166.47mm )" draw:z-index="17" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 230.18mm )" draw:z-index="11" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 233.35mm )" draw:z-index="10" svg:height="6.35mm" svg:width="3.17mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 241.12mm )" draw:z-index="8" svg:height="6.35mm" svg:width="4.22mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+<draw:frame draw:style-name="graphic5" draw:transform="rotate( 1.5707963267949 ) translate( 36.69mm 236.88mm )" draw:z-index="9" svg:height="6.35mm" svg:width="3.53mm" text:anchor-page-number="1" text:anchor-type="page" >
+<draw:text-box >
+<text:p >
+</text:p>
+</draw:text-box>
+</draw:frame>
+</office:text>
+</office:body>
+</office:document>
diff --git a/sdext/source/pdfimport/test/testinput.odp b/sdext/source/pdfimport/test/testinput.odp
new file mode 100644
index 000000000000..fe1ac44e8b87
--- /dev/null
+++ b/sdext/source/pdfimport/test/testinput.odp
Binary files differ
diff --git a/sdext/source/pdfimport/test/testinput.pdf b/sdext/source/pdfimport/test/testinput.pdf
new file mode 100755
index 000000000000..4c44ac469b3f
--- /dev/null
+++ b/sdext/source/pdfimport/test/testinput.pdf
Binary files differ
diff --git a/sdext/source/pdfimport/test/tests.cxx b/sdext/source/pdfimport/test/tests.cxx
new file mode 100644
index 000000000000..145f9387948a
--- /dev/null
+++ b/sdext/source/pdfimport/test/tests.cxx
@@ -0,0 +1,584 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#define BASEGFX_STATICLIBRARY
+
+#ifdef SYSTEM_ZLIB
+#include "zlib.h"
+#else
+#include <zlib/zlib.h>
+#endif
+
+#include "outputwrap.hxx"
+#include "contentsink.hxx"
+#include "pdfihelper.hxx"
+#include "wrapper.hxx"
+#include "pdfparse.hxx"
+#include "../pdfiadaptor.hxx"
+
+#include <rtl/math.hxx>
+#include <osl/file.hxx>
+#include <osl/process.h>
+#include <testshl/simpleheader.hxx>
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/bootstrap.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <comphelper/sequence.hxx>
+
+
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/rendering/XColorSpace.hpp>
+#include <com/sun/star/rendering/PathJoinType.hpp>
+#include <com/sun/star/rendering/PathCapType.hpp>
+#include <com/sun/star/rendering/BlendMode.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/registry/XSimpleRegistry.hpp>
+
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/tools/canvastools.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolygonclipper.hxx>
+
+#include <vector>
+#include <boost/unordered_map.hpp>
+
+
+using namespace ::pdfparse;
+using namespace ::pdfi;
+using namespace ::com::sun::star;
+
+namespace
+{
+ class TestSink : public ContentSink
+ {
+ public:
+ TestSink() :
+ m_nNextFontId( 1 ),
+ m_aIdToFont(),
+ m_aFontToId(),
+ m_aGCStack(1),
+ m_aPageSize(),
+ m_aHyperlinkBounds(),
+ m_aURI(),
+ m_aTextOut(),
+ m_nNumPages(0),
+ m_bPageEnded(false),
+ m_bRedCircleSeen(false),
+ m_bGreenStrokeSeen(false),
+ m_bDashedLineSeen(false)
+ {}
+
+ ~TestSink()
+ {
+ CPPUNIT_ASSERT_MESSAGE( "A4 page size (in 100th of points)",
+ m_aPageSize.Width == 79400 && m_aPageSize.Height == 59500 );
+ CPPUNIT_ASSERT_MESSAGE( "endPage() called", m_bPageEnded );
+ CPPUNIT_ASSERT_MESSAGE( "Num pages equal one", m_nNumPages == 1 );
+ CPPUNIT_ASSERT_MESSAGE( "Correct hyperlink bounding box",
+ rtl::math::approxEqual(m_aHyperlinkBounds.X1,34.7 ) &&
+ rtl::math::approxEqual(m_aHyperlinkBounds.Y1,386.0) &&
+ rtl::math::approxEqual(m_aHyperlinkBounds.X2,166.7) &&
+ rtl::math::approxEqual(m_aHyperlinkBounds.Y2,406.2) );
+ CPPUNIT_ASSERT_MESSAGE( "Correct hyperlink URI",
+ m_aURI == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("http://download.openoffice.org/")) );
+
+ const char* sText = " \n \nThis is a testtext\nNew paragraph,\nnew line\n"
+ "Hyperlink, this is\n?\nThis is more text\noutline mode\n?\nNew paragraph\n";
+ ::rtl::OString aTmp;
+ m_aTextOut.makeStringAndClear().convertToString( &aTmp,
+ RTL_TEXTENCODING_ASCII_US,
+ OUSTRING_TO_OSTRING_CVTFLAGS );
+ CPPUNIT_ASSERT_MESSAGE( "Imported text is \"This is a testtext New paragraph, new line"
+ " Hyperlink, this is * This is more text outline mode * New paragraph\"",
+ sText == aTmp );
+
+ CPPUNIT_ASSERT_MESSAGE( "red circle seen in input", m_bRedCircleSeen );
+ CPPUNIT_ASSERT_MESSAGE( "green stroke seen in input", m_bGreenStrokeSeen );
+ CPPUNIT_ASSERT_MESSAGE( "dashed line seen in input", m_bDashedLineSeen );
+ }
+
+ private:
+ GraphicsContext& getCurrentContext() { return m_aGCStack.back(); }
+
+ // ContentSink interface implementation
+ virtual void setPageNum( sal_Int32 nNumPages )
+ {
+ m_nNumPages = nNumPages;
+ }
+
+ virtual void startPage( const geometry::RealSize2D& rSize )
+ {
+ m_aPageSize = rSize;
+ }
+
+ virtual void endPage()
+ {
+ m_bPageEnded = true;
+ }
+
+ virtual void hyperLink( const geometry::RealRectangle2D& rBounds,
+ const ::rtl::OUString& rURI )
+ {
+ m_aHyperlinkBounds = rBounds;
+ m_aURI = rURI;
+ }
+
+ virtual void pushState()
+ {
+ m_aGCStack.push_back( m_aGCStack.back() );
+ }
+
+ virtual void popState()
+ {
+ m_aGCStack.pop_back();
+ }
+
+ virtual void setTransformation( const geometry::AffineMatrix2D& rMatrix )
+ {
+ basegfx::unotools::homMatrixFromAffineMatrix(
+ getCurrentContext().Transformation,
+ rMatrix );
+ }
+
+ virtual void setLineDash( const uno::Sequence<double>& dashes,
+ double start )
+ {
+ GraphicsContext& rContext( getCurrentContext() );
+ if( dashes.getLength() )
+ comphelper::sequenceToContainer(rContext.DashArray,dashes);
+ CPPUNIT_ASSERT_MESSAGE( "line dashing start offset", start == 0.0 );
+ }
+
+ virtual void setFlatness( double nFlatness )
+ {
+ getCurrentContext().Flatness = nFlatness;
+ }
+
+ virtual void setLineJoin(sal_Int8 nJoin)
+ {
+ getCurrentContext().LineJoin = nJoin;
+ }
+
+ virtual void setLineCap(sal_Int8 nCap)
+ {
+ getCurrentContext().LineCap = nCap;
+ }
+
+ virtual void setMiterLimit(double nVal)
+ {
+ getCurrentContext().MiterLimit = nVal;
+ }
+
+ virtual void setLineWidth(double nVal)
+ {
+ getCurrentContext().LineWidth = nVal;
+ }
+
+ virtual void setFillColor( const rendering::ARGBColor& rColor )
+ {
+ getCurrentContext().FillColor = rColor;
+ }
+
+ virtual void setStrokeColor( const rendering::ARGBColor& rColor )
+ {
+ getCurrentContext().LineColor = rColor;
+ }
+
+ virtual void setBlendMode(sal_Int8 nMode)
+ {
+ getCurrentContext().BlendMode = nMode;
+ }
+
+ virtual void setFont( const FontAttributes& rFont )
+ {
+ FontToIdMap::const_iterator it = m_aFontToId.find( rFont );
+ if( it != m_aFontToId.end() )
+ getCurrentContext().FontId = it->second;
+ else
+ {
+ m_aFontToId[ rFont ] = m_nNextFontId;
+ m_aIdToFont[ m_nNextFontId ] = rFont;
+ getCurrentContext().FontId = m_nNextFontId;
+ m_nNextFontId++;
+ }
+ }
+
+ virtual void strokePath( const uno::Reference<rendering::XPolyPolygon2D>& rPath )
+ {
+ GraphicsContext& rContext( getCurrentContext() );
+ basegfx::B2DPolyPolygon aPath = basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
+ aPath.transform( rContext.Transformation );
+
+ if( rContext.DashArray.empty() )
+ {
+ CPPUNIT_ASSERT_MESSAGE( "Line color is green",
+ rContext.LineColor.Alpha == 1.0 &&
+ rContext.LineColor.Red == 0.0 &&
+ rContext.LineColor.Green == 1.0 &&
+ rContext.LineColor.Blue == 0.0 );
+
+ CPPUNIT_ASSERT_MESSAGE( "Line width is 0",
+ rtl::math::approxEqual(rContext.LineWidth, 28.3) );
+
+ const char* sExportString = "m53570 7650-35430 24100";
+ CPPUNIT_ASSERT_MESSAGE( "Stroke is m535.7 518.5-354.3-241",
+ basegfx::tools::exportToSvgD( aPath ).compareToAscii(sExportString) == 0 );
+
+ m_bGreenStrokeSeen = true;
+ }
+ else
+ {
+ CPPUNIT_ASSERT_MESSAGE( "Dash array cons ists of four entries",
+ rContext.DashArray.size() == 4 &&
+ rtl::math::approxEqual(rContext.DashArray[0],14.3764) &&
+ rContext.DashArray[0] == rContext.DashArray[1] &&
+ rContext.DashArray[1] == rContext.DashArray[2] &&
+ rContext.DashArray[2] == rContext.DashArray[3] );
+
+ CPPUNIT_ASSERT_MESSAGE( "Line color is black",
+ rContext.LineColor.Alpha == 1.0 &&
+ rContext.LineColor.Red == 0.0 &&
+ rContext.LineColor.Green == 0.0 &&
+ rContext.LineColor.Blue == 0.0 );
+
+ CPPUNIT_ASSERT_MESSAGE( "Line width is 0",
+ rContext.LineWidth == 0 );
+
+ const char* sExportString = "m49890 5670.00000000001-35430 24090";
+ CPPUNIT_ASSERT_MESSAGE( "Stroke is m49890 5670.00000000001-35430 24090",
+ basegfx::tools::exportToSvgD( aPath ).compareToAscii(sExportString) == 0 );
+
+ m_bDashedLineSeen = true;
+ }
+ CPPUNIT_ASSERT_MESSAGE( "Blend mode is normal",
+ rContext.BlendMode == rendering::BlendMode::NORMAL );
+ CPPUNIT_ASSERT_MESSAGE( "Join type is round",
+ rContext.LineJoin == rendering::PathJoinType::ROUND );
+ CPPUNIT_ASSERT_MESSAGE( "Cap type is butt",
+ rContext.LineCap == rendering::PathCapType::BUTT );
+ CPPUNIT_ASSERT_MESSAGE( "Line miter limit is 10",
+ rContext.MiterLimit == 10 );
+ CPPUNIT_ASSERT_MESSAGE( "Flatness is 0",
+ rContext.Flatness == 1 );
+ CPPUNIT_ASSERT_MESSAGE( "Font id is 0",
+ rContext.FontId == 0 );
+ }
+
+ virtual void fillPath( const uno::Reference<rendering::XPolyPolygon2D>& rPath )
+ {
+ GraphicsContext& rContext( getCurrentContext() );
+ basegfx::B2DPolyPolygon aPath = basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
+ aPath.transform( rContext.Transformation );
+
+ CPPUNIT_ASSERT_MESSAGE( "Fill color is black",
+ rContext.FillColor.Alpha == 1.0 &&
+ rContext.FillColor.Red == 0.0 &&
+ rContext.FillColor.Green == 0.0 &&
+ rContext.FillColor.Blue == 0.0 );
+ CPPUNIT_ASSERT_MESSAGE( "Blend mode is normal",
+ rContext.BlendMode == rendering::BlendMode::NORMAL );
+ CPPUNIT_ASSERT_MESSAGE( "Flatness is 10",
+ rContext.Flatness == 10 );
+ CPPUNIT_ASSERT_MESSAGE( "Font id is 0",
+ rContext.FontId == 0 );
+ }
+
+ virtual void eoFillPath( const uno::Reference<rendering::XPolyPolygon2D>& rPath )
+ {
+ GraphicsContext& rContext( getCurrentContext() );
+ basegfx::B2DPolyPolygon aPath = basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
+ aPath.transform( rContext.Transformation );
+
+ CPPUNIT_ASSERT_MESSAGE( "Fill color is black",
+ rContext.FillColor.Alpha == 1.0 &&
+ rContext.FillColor.Red == 1.0 &&
+ rContext.FillColor.Green == 0.0 &&
+ rContext.FillColor.Blue == 0.0 );
+ CPPUNIT_ASSERT_MESSAGE( "Blend mode is normal",
+ rContext.BlendMode == rendering::BlendMode::NORMAL );
+ CPPUNIT_ASSERT_MESSAGE( "Flatness is 0",
+ rContext.Flatness == 1 );
+ CPPUNIT_ASSERT_MESSAGE( "Font id is 0",
+ rContext.FontId == 0 );
+
+ const char* sExportString = "m12050 49610c-4310 0-7800-3490-7800-7800 0-4300 "
+ "3490-7790 7800-7790 4300 0 7790 3490 7790 7790 0 4310-3490 7800-7790 7800z";
+ CPPUNIT_ASSERT_MESSAGE( "Stroke is a 4-bezier circle",
+ basegfx::tools::exportToSvgD( aPath ).compareToAscii(sExportString) == 0 );
+
+ m_bRedCircleSeen = true;
+ }
+
+ virtual void intersectClip(const uno::Reference<rendering::XPolyPolygon2D>& rPath)
+ {
+ basegfx::B2DPolyPolygon aNewClip = basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
+ basegfx::B2DPolyPolygon aCurClip = getCurrentContext().Clip;
+
+ if( aCurClip.count() ) // #i92985# adapted API from (..., false, false) to (..., true, false)
+ aNewClip = basegfx::tools::clipPolyPolygonOnPolyPolygon( aCurClip, aNewClip, true, false );
+
+ getCurrentContext().Clip = aNewClip;
+ }
+
+ virtual void intersectEoClip(const uno::Reference<rendering::XPolyPolygon2D>& rPath)
+ {
+ basegfx::B2DPolyPolygon aNewClip = basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
+ basegfx::B2DPolyPolygon aCurClip = getCurrentContext().Clip;
+
+ if( aCurClip.count() ) // #i92985# adapted API from (..., false, false) to (..., true, false)
+ aNewClip = basegfx::tools::clipPolyPolygonOnPolyPolygon( aCurClip, aNewClip, true, false );
+
+ getCurrentContext().Clip = aNewClip;
+ }
+
+ virtual void drawGlyphs( const rtl::OUString& rGlyphs,
+ const geometry::RealRectangle2D& /*rRect*/,
+ const geometry::Matrix2D& /*rFontMatrix*/ )
+ {
+ m_aTextOut.append(rGlyphs);
+ }
+
+ virtual void endText()
+ {
+ m_aTextOut.append( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\n")) );
+ }
+
+ virtual void drawMask(const uno::Sequence<beans::PropertyValue>& xBitmap,
+ bool /*bInvert*/ )
+ {
+ CPPUNIT_ASSERT_MESSAGE( "drawMask received two properties",
+ xBitmap.getLength()==3 );
+ CPPUNIT_ASSERT_MESSAGE( "drawMask got URL param",
+ xBitmap[0].Name.compareToAscii( "URL" ) == 0 );
+ CPPUNIT_ASSERT_MESSAGE( "drawMask got InputStream param",
+ xBitmap[1].Name.compareToAscii( "InputStream" ) == 0 );
+ }
+
+ virtual void drawImage(const uno::Sequence<beans::PropertyValue>& xBitmap )
+ {
+ CPPUNIT_ASSERT_MESSAGE( "drawImage received two properties",
+ xBitmap.getLength()==3 );
+ CPPUNIT_ASSERT_MESSAGE( "drawImage got URL param",
+ xBitmap[0].Name.compareToAscii( "URL" ) == 0 );
+ CPPUNIT_ASSERT_MESSAGE( "drawImage got InputStream param",
+ xBitmap[1].Name.compareToAscii( "InputStream" ) == 0 );
+ }
+
+ virtual void drawColorMaskedImage(const uno::Sequence<beans::PropertyValue>& xBitmap,
+ const uno::Sequence<uno::Any>& /*xMaskColors*/ )
+ {
+ CPPUNIT_ASSERT_MESSAGE( "drawColorMaskedImage received two properties",
+ xBitmap.getLength()==3 );
+ CPPUNIT_ASSERT_MESSAGE( "drawColorMaskedImage got URL param",
+ xBitmap[0].Name.compareToAscii( "URL" ) == 0 );
+ CPPUNIT_ASSERT_MESSAGE( "drawColorMaskedImage got InputStream param",
+ xBitmap[1].Name.compareToAscii( "InputStream" ) == 0 );
+ }
+
+ virtual void drawMaskedImage(const uno::Sequence<beans::PropertyValue>& xBitmap,
+ const uno::Sequence<beans::PropertyValue>& xMask,
+ bool /*bInvertMask*/)
+ {
+ CPPUNIT_ASSERT_MESSAGE( "drawMaskedImage received two properties #1",
+ xBitmap.getLength()==3 );
+ CPPUNIT_ASSERT_MESSAGE( "drawMaskedImage got URL param #1",
+ xBitmap[0].Name.compareToAscii( "URL" ) == 0 );
+ CPPUNIT_ASSERT_MESSAGE( "drawMaskedImage got InputStream param #1",
+ xBitmap[1].Name.compareToAscii( "InputStream" ) == 0 );
+
+ CPPUNIT_ASSERT_MESSAGE( "drawMaskedImage received two properties #2",
+ xMask.getLength()==3 );
+ CPPUNIT_ASSERT_MESSAGE( "drawMaskedImage got URL param #2",
+ xMask[0].Name.compareToAscii( "URL" ) == 0 );
+ CPPUNIT_ASSERT_MESSAGE( "drawMaskedImage got InputStream param #2",
+ xMask[1].Name.compareToAscii( "InputStream" ) == 0 );
+ }
+
+ virtual void drawAlphaMaskedImage(const uno::Sequence<beans::PropertyValue>& xBitmap,
+ const uno::Sequence<beans::PropertyValue>& xMask)
+ {
+ CPPUNIT_ASSERT_MESSAGE( "drawAlphaMaskedImage received two properties #1",
+ xBitmap.getLength()==3 );
+ CPPUNIT_ASSERT_MESSAGE( "drawAlphaMaskedImage got URL param #1",
+ xBitmap[0].Name.compareToAscii( "URL" ) == 0 );
+ CPPUNIT_ASSERT_MESSAGE( "drawAlphaMaskedImage got InputStream param #1",
+ xBitmap[1].Name.compareToAscii( "InputStream" ) == 0 );
+
+ CPPUNIT_ASSERT_MESSAGE( "drawAlphaMaskedImage received two properties #2",
+ xMask.getLength()==3 );
+ CPPUNIT_ASSERT_MESSAGE( "drawAlphaMaskedImage got URL param #2",
+ xMask[0].Name.compareToAscii( "URL" ) == 0 );
+ CPPUNIT_ASSERT_MESSAGE( "drawAlphaMaskedImage got InputStream param #2",
+ xMask[1].Name.compareToAscii( "InputStream" ) == 0 );
+ }
+
+ virtual void setTextRenderMode( sal_Int32 )
+ {
+ }
+
+ typedef boost::unordered_map<sal_Int32,FontAttributes> IdToFontMap;
+ typedef boost::unordered_map<FontAttributes,sal_Int32,FontAttrHash> FontToIdMap;
+
+ typedef boost::unordered_map<sal_Int32,GraphicsContext> IdToGCMap;
+ typedef boost::unordered_map<GraphicsContext,sal_Int32,GraphicsContextHash> GCToIdMap;
+
+ typedef std::vector<GraphicsContext> GraphicsContextStack;
+
+ sal_Int32 m_nNextFontId;
+ IdToFontMap m_aIdToFont;
+ FontToIdMap m_aFontToId;
+
+ GraphicsContextStack m_aGCStack;
+ geometry::RealSize2D m_aPageSize;
+ geometry::RealRectangle2D m_aHyperlinkBounds;
+ ::rtl::OUString m_aURI;
+ ::rtl::OUStringBuffer m_aTextOut;
+ sal_Int32 m_nNumPages;
+ bool m_bPageEnded;
+ bool m_bRedCircleSeen;
+ bool m_bGreenStrokeSeen;
+ bool m_bDashedLineSeen;
+ };
+
+ class PDFITest : public CppUnit::TestFixture
+ {
+ uno::Reference<uno::XComponentContext> mxCtx;
+ rtl::OUString msBaseDir;
+ bool mbUnoInitialized;
+
+ public:
+ PDFITest() : mxCtx(),msBaseDir(),mbUnoInitialized(false)
+ {}
+
+ void setUp()
+ {
+ if( !mbUnoInitialized )
+ {
+ const char* pArgs( getForwardString() );
+ CPPUNIT_ASSERT_MESSAGE("Test file parameter", pArgs);
+
+ msBaseDir = rtl::OUString::createFromAscii(pArgs);
+
+ // bootstrap UNO
+ try
+ {
+ ::rtl::OUString aIniUrl;
+ CPPUNIT_ASSERT_MESSAGE(
+ "Converting ini file to URL",
+ osl_getFileURLFromSystemPath(
+ (msBaseDir+rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pdfi_unittest_test.ini"))).pData,
+ &aIniUrl.pData ) == osl_File_E_None );
+
+ mxCtx = ::cppu::defaultBootstrap_InitialComponentContext(aIniUrl);
+ CPPUNIT_ASSERT_MESSAGE("Getting component context", mxCtx.is());
+ }
+ catch( uno::Exception& )
+ {
+ CPPUNIT_ASSERT_MESSAGE("Bootstrapping UNO", false);
+ }
+
+ mbUnoInitialized = true;
+ }
+ }
+ void tearDown()
+ {
+ }
+
+ void testXPDFParser()
+ {
+ pdfi::ContentSinkSharedPtr pSink( new TestSink() );
+ pdfi::xpdf_ImportFromFile( msBaseDir + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pdfi_unittest_test.pdf")),
+ pSink,
+ uno::Reference< task::XInteractionHandler >(),
+ rtl::OUString(),
+ mxCtx );
+
+ // make destruction explicit, a bunch of things are
+ // checked in the destructor
+ pSink.reset();
+ }
+
+ void testOdfDrawExport()
+ {
+ pdfi::PDFIRawAdaptor aAdaptor( mxCtx );
+ aAdaptor.setTreeVisitorFactory( createDrawTreeVisitorFactory() );
+
+ ::rtl::OUString aURL, aAbsURL, aBaseURL;
+ osl_getFileURLFromSystemPath( (msBaseDir + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pdfi_unittest_draw.xml"))).pData,
+ &aURL.pData );
+ osl_getProcessWorkingDir(&aBaseURL.pData);
+ osl_getAbsoluteFileURL(aBaseURL.pData,aURL.pData,&aAbsURL.pData);
+ CPPUNIT_ASSERT_MESSAGE("Exporting to ODF",
+ aAdaptor.odfConvert( msBaseDir + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pdfi_unittest_test.pdf")),
+ new OutputWrap(aAbsURL),
+ NULL ));
+ }
+
+ void testOdfWriterExport()
+ {
+ pdfi::PDFIRawAdaptor aAdaptor( mxCtx );
+ aAdaptor.setTreeVisitorFactory( createWriterTreeVisitorFactory() );
+
+ ::rtl::OUString aURL, aAbsURL, aBaseURL;
+ osl_getFileURLFromSystemPath( (msBaseDir + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pdfi_unittest_writer.xml"))).pData,
+ &aURL.pData );
+ osl_getProcessWorkingDir(&aBaseURL.pData);
+ osl_getAbsoluteFileURL(aBaseURL.pData,aURL.pData,&aAbsURL.pData);
+ CPPUNIT_ASSERT_MESSAGE("Exporting to ODF",
+ aAdaptor.odfConvert( msBaseDir + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pdfi_unittest_test.pdf")),
+ new OutputWrap(aAbsURL),
+ NULL ));
+ }
+
+ CPPUNIT_TEST_SUITE(PDFITest);
+ CPPUNIT_TEST(testXPDFParser);
+ CPPUNIT_TEST(testOdfWriterExport);
+ CPPUNIT_TEST(testOdfDrawExport);
+ CPPUNIT_TEST_SUITE_END();
+ };
+
+}
+
+// =======================================================================
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(PDFITest, "PDFITest");
+
+
+// -----------------------------------------------------------------------------
+
+// this macro creates an empty function, which will called by the RegisterAllFunctions()
+// to let the user the possibility to also register some functions by hand.
+NOADDITIONAL;
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/drawtreevisiting.cxx b/sdext/source/pdfimport/tree/drawtreevisiting.cxx
new file mode 100644
index 000000000000..37f9785e1469
--- /dev/null
+++ b/sdext/source/pdfimport/tree/drawtreevisiting.cxx
@@ -0,0 +1,1087 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pdfiprocessor.hxx"
+#include "xmlemitter.hxx"
+#include "pdfihelper.hxx"
+#include "imagecontainer.hxx"
+#include "style.hxx"
+#include "drawtreevisiting.hxx"
+#include "genericelements.hxx"
+
+#include "basegfx/polygon/b2dpolypolygontools.hxx"
+#include "basegfx/range/b2drange.hxx"
+
+#include "com/sun/star/i18n/XBreakIterator.hpp"
+#include "com/sun/star/lang/XMultiServiceFactory.hpp"
+#include "comphelper/processfactory.hxx"
+#include "com/sun/star/i18n/ScriptType.hpp"
+#include "com/sun/star/i18n/DirectionProperty.hpp"
+
+#include <string.h>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::i18n;
+using namespace ::com::sun::star::uno;
+
+namespace pdfi
+{
+
+const ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >& DrawXmlOptimizer::GetBreakIterator()
+{
+ if ( !mxBreakIter.is() )
+ {
+ Reference< XComponentContext > xContext( this->m_rProcessor.m_xContext, uno::UNO_SET_THROW );
+ Reference< XMultiComponentFactory > xMSF( xContext->getServiceManager(), uno::UNO_SET_THROW );
+ Reference < XInterface > xInterface = xMSF->createInstanceWithContext(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.i18n.BreakIterator")), xContext);
+
+ mxBreakIter = uno::Reference< i18n::XBreakIterator >( xInterface, uno::UNO_QUERY );
+ }
+ return mxBreakIter;
+}
+
+const ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >& DrawXmlEmitter::GetBreakIterator()
+{
+ if ( !mxBreakIter.is() )
+ {
+ Reference< XComponentContext > xContext( m_rEmitContext.m_xContext, uno::UNO_SET_THROW );
+ Reference< XMultiComponentFactory > xMSF( xContext->getServiceManager(), uno::UNO_SET_THROW );
+ Reference < XInterface > xInterface = xMSF->createInstanceWithContext(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.i18n.BreakIterator")), xContext);
+ mxBreakIter = uno::Reference< i18n::XBreakIterator >( xInterface, uno::UNO_QUERY );
+ }
+ return mxBreakIter;
+}
+
+const ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XCharacterClassification >& DrawXmlEmitter::GetCharacterClassification()
+{
+ if ( !mxCharClass.is() )
+ {
+ Reference< XComponentContext > xContext( m_rEmitContext.m_xContext, uno::UNO_SET_THROW );
+ Reference< XMultiComponentFactory > xMSF( xContext->getServiceManager(), uno::UNO_SET_THROW );
+ Reference < XInterface > xInterface = xMSF->createInstanceWithContext(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.i18n.CharacterClassification")), xContext);
+ mxCharClass = uno::Reference< i18n::XCharacterClassification >( xInterface, uno::UNO_QUERY );
+ }
+ return mxCharClass;
+}
+
+void DrawXmlEmitter::visit( HyperlinkElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( elem.Children.empty() )
+ return;
+
+ const char* pType = dynamic_cast<DrawElement*>(elem.Children.front()) ? "draw:a" : "text:a";
+
+ PropertyMap aProps;
+ aProps[ USTR( "xlink:type" ) ] = USTR( "simple" );
+ aProps[ USTR( "xlink:href" ) ] = elem.URI;
+ aProps[ USTR( "office:target-frame-name" ) ] = USTR( "_blank" );
+ aProps[ USTR( "xlink:show" ) ] = USTR( "new" );
+
+ m_rEmitContext.rEmitter.beginTag( pType, aProps );
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+ m_rEmitContext.rEmitter.endTag( pType );
+}
+
+void DrawXmlEmitter::visit( TextElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( ! elem.Text.getLength() )
+ return;
+
+ rtl::OUString strSpace(32);
+ rtl::OUString strNbSpace(160);
+ rtl::OUString tabSpace(0x09);
+ PropertyMap aProps;
+ if( elem.StyleId != -1 )
+ {
+ aProps[ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "text:style-name" ) ) ] =
+ m_rEmitContext.rStyles.getStyleName( elem.StyleId );
+ }
+
+ rtl::OUString str(elem.Text.getStr());
+
+ // Check for RTL
+ bool isRTL = false;
+ Reference< i18n::XCharacterClassification > xCC( GetCharacterClassification() );
+ if( xCC.is() )
+ {
+ for(int i=1; i< elem.Text.getLength(); i++)
+ {
+ sal_Int16 nType = xCC->getCharacterDirection( str, i );
+ if ( nType == ::com::sun::star::i18n::DirectionProperty_RIGHT_TO_LEFT ||
+ nType == ::com::sun::star::i18n::DirectionProperty_RIGHT_TO_LEFT_ARABIC ||
+ nType == ::com::sun::star::i18n::DirectionProperty_RIGHT_TO_LEFT_EMBEDDING ||
+ nType == ::com::sun::star::i18n::DirectionProperty_RIGHT_TO_LEFT_OVERRIDE
+ )
+ isRTL = true;
+ }
+ }
+
+ if (isRTL) // If so, reverse string
+ str = m_rProcessor.mirrorString( str );
+
+ m_rEmitContext.rEmitter.beginTag( "text:span", aProps );
+
+ for(int i=0; i< elem.Text.getLength(); i++)
+ {
+ rtl::OUString strToken= str.copy(i,1) ;
+ if( strSpace.equals(strToken) || strNbSpace.equals(strToken))
+ {
+ aProps[ USTR( "text:c" ) ] = USTR( "1" );
+ m_rEmitContext.rEmitter.beginTag( "text:s", aProps );
+ m_rEmitContext.rEmitter.endTag( "text:s");
+ }
+ else
+ {
+ if( tabSpace.equals(strToken) )
+ {
+ m_rEmitContext.rEmitter.beginTag( "text:tab", aProps );
+ m_rEmitContext.rEmitter.endTag( "text:tab");
+ }
+ else
+ {
+ m_rEmitContext.rEmitter.write( strToken );
+ }
+ }
+ }
+
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+
+ m_rEmitContext.rEmitter.endTag( "text:span" );
+}
+
+void DrawXmlEmitter::visit( ParagraphElement& elem, const std::list< Element* >::const_iterator& )
+{
+ PropertyMap aProps;
+ if( elem.StyleId != -1 )
+ {
+ aProps[ USTR( "text:style-name" ) ] = m_rEmitContext.rStyles.getStyleName( elem.StyleId );
+ }
+ const char* pTagType = "text:p";
+ if( elem.Type == elem.Headline )
+ pTagType = "text:h";
+ m_rEmitContext.rEmitter.beginTag( pTagType, aProps );
+
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+
+ m_rEmitContext.rEmitter.endTag( pTagType );
+}
+
+void DrawXmlEmitter::fillFrameProps( DrawElement& rElem,
+ PropertyMap& rProps,
+ const EmitContext& rEmitContext,
+ bool bWasTransformed
+ )
+{
+ double rel_x = rElem.x, rel_y = rElem.y;
+
+ rProps[ USTR( "draw:z-index" ) ] = rtl::OUString::valueOf( rElem.ZOrder );
+ rProps[ USTR( "draw:style-name" )] = rEmitContext.rStyles.getStyleName( rElem.StyleId );
+ rProps[ USTR( "svg:width" ) ] = convertPixelToUnitString( rElem.w );
+ rProps[ USTR( "svg:height" ) ] = convertPixelToUnitString( rElem.h );
+
+ const GraphicsContext& rGC =
+ rEmitContext.rProcessor.getGraphicsContext( rElem.GCId );
+ if( rGC.Transformation.isIdentity() || bWasTransformed )
+ {
+ rProps[ USTR( "svg:x" ) ] = convertPixelToUnitString( rel_x );
+ rProps[ USTR( "svg:y" ) ] = convertPixelToUnitString( rel_y );
+ }
+ else
+ {
+ basegfx::B2DTuple aScale, aTranslation;
+ double fRotate, fShearX;
+
+ rGC.Transformation.decompose( aScale, aTranslation, fRotate, fShearX );
+
+ rtl::OUStringBuffer aBuf( 256 );
+
+ // TODO(F2): general transformation case missing; if implemented, note
+ // that ODF rotation is oriented the other way
+
+ // vertical mirroring is done by horizontally mirroring and rotaing 180 degree
+ // quaint !
+ if( rElem.MirrorVertical )
+ fRotate += M_PI;
+
+ // build transformation string
+ if( fShearX != 0.0 )
+ {
+ aBuf.appendAscii( "skewX( " );
+ aBuf.append( fShearX );
+ aBuf.appendAscii( " )" );
+ }
+ if( fRotate != 0.0 )
+ {
+ if( aBuf.getLength() > 0 )
+ aBuf.append( sal_Unicode(' ') );
+ aBuf.appendAscii( "rotate( " );
+ aBuf.append( -fRotate );
+ aBuf.appendAscii( " )" );
+
+ }
+ if( aBuf.getLength() > 0 )
+ aBuf.append( sal_Unicode(' ') );
+ aBuf.appendAscii( "translate( " );
+ aBuf.append( convertPixelToUnitString( rel_x ) );
+ aBuf.append( sal_Unicode(' ') );
+ aBuf.append( convertPixelToUnitString( rel_y ) );
+ aBuf.appendAscii( " )" );
+
+ rProps[ USTR( "draw:transform" ) ] = aBuf.makeStringAndClear();
+ }
+}
+
+void DrawXmlEmitter::visit( FrameElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( elem.Children.empty() )
+ return;
+
+ bool bTextBox = (dynamic_cast<ParagraphElement*>(elem.Children.front()) != NULL);
+ PropertyMap aFrameProps;
+ fillFrameProps( elem, aFrameProps, m_rEmitContext );
+ m_rEmitContext.rEmitter.beginTag( "draw:frame", aFrameProps );
+ if( bTextBox )
+ m_rEmitContext.rEmitter.beginTag( "draw:text-box", PropertyMap() );
+
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+
+ if( bTextBox )
+ m_rEmitContext.rEmitter.endTag( "draw:text-box" );
+ m_rEmitContext.rEmitter.endTag( "draw:frame" );
+}
+
+void DrawXmlEmitter::visit( PolyPolyElement& elem, const std::list< Element* >::const_iterator& )
+{
+ elem.updateGeometry();
+ /* note:
+ * aw recommends using 100dth of mm in all respects since the xml import
+ * (a) is buggy (see issue 37213)
+ * (b) is optimized for 100dth of mm and does not scale itself then,
+ * this does not gain us speed but makes for smaller rounding errors since
+ * the xml importer coordinates are integer based
+ */
+ for (sal_uInt32 i = 0; i< elem.PolyPoly.count(); i++)
+ {
+ basegfx::B2DPolygon b2dPolygon;
+ b2dPolygon = elem.PolyPoly.getB2DPolygon( i );
+
+ for ( sal_uInt32 j = 0; j< b2dPolygon.count(); j++ )
+ {
+ basegfx::B2DPoint point;
+ basegfx::B2DPoint nextPoint;
+ point = b2dPolygon.getB2DPoint( j );
+
+ basegfx::B2DPoint prevPoint;
+ prevPoint = b2dPolygon.getPrevControlPoint( j ) ;
+
+ point.setX( convPx2mmPrec2( point.getX() )*100.0 );
+ point.setY( convPx2mmPrec2( point.getY() )*100.0 );
+
+ if ( b2dPolygon.isPrevControlPointUsed( j ) )
+ {
+ prevPoint.setX( convPx2mmPrec2( prevPoint.getX() )*100.0 );
+ prevPoint.setY( convPx2mmPrec2( prevPoint.getY() )*100.0 );
+ }
+
+ if ( b2dPolygon.isNextControlPointUsed( j ) )
+ {
+ nextPoint = b2dPolygon.getNextControlPoint( j ) ;
+ nextPoint.setX( convPx2mmPrec2( nextPoint.getX() )*100.0 );
+ nextPoint.setY( convPx2mmPrec2( nextPoint.getY() )*100.0 );
+ }
+
+ b2dPolygon.setB2DPoint( j, point );
+
+ if ( b2dPolygon.isPrevControlPointUsed( j ) )
+ b2dPolygon.setPrevControlPoint( j , prevPoint ) ;
+
+ if ( b2dPolygon.isNextControlPointUsed( j ) )
+ b2dPolygon.setNextControlPoint( j , nextPoint ) ;
+ }
+
+ elem.PolyPoly.setB2DPolygon( i, b2dPolygon );
+ }
+
+ PropertyMap aProps;
+ // PDFIProcessor transforms geometrical objects, not images and text
+ // so we need to tell fillFrameProps here that the transformation for
+ // a PolyPolyElement was already applied (aside form translation)
+ fillFrameProps( elem, aProps, m_rEmitContext, true );
+ rtl::OUStringBuffer aBuf( 64 );
+ aBuf.appendAscii( "0 0 " );
+ aBuf.append( convPx2mmPrec2(elem.w)*100.0 );
+ aBuf.append( sal_Unicode(' ') );
+ aBuf.append( convPx2mmPrec2(elem.h)*100.0 );
+ aProps[ USTR( "svg:viewBox" ) ] = aBuf.makeStringAndClear();
+ aProps[ USTR( "svg:d" ) ] = basegfx::tools::exportToSvgD( elem.PolyPoly );
+
+ m_rEmitContext.rEmitter.beginTag( "draw:path", aProps );
+ m_rEmitContext.rEmitter.endTag( "draw:path" );
+}
+
+void DrawXmlEmitter::visit( ImageElement& elem, const std::list< Element* >::const_iterator& )
+{
+ PropertyMap aImageProps;
+ m_rEmitContext.rEmitter.beginTag( "draw:image", aImageProps );
+ m_rEmitContext.rEmitter.beginTag( "office:binary-data", PropertyMap() );
+ m_rEmitContext.rImages.writeBase64EncodedStream( elem.Image, m_rEmitContext);
+ m_rEmitContext.rEmitter.endTag( "office:binary-data" );
+ m_rEmitContext.rEmitter.endTag( "draw:image" );
+}
+
+void DrawXmlEmitter::visit( PageElement& elem, const std::list< Element* >::const_iterator& )
+{
+ PropertyMap aPageProps;
+ aPageProps[ USTR( "draw:master-page-name" ) ] = m_rEmitContext.rStyles.getStyleName( elem.StyleId );
+
+ m_rEmitContext.rEmitter.beginTag("draw:page", aPageProps);
+
+ if( m_rEmitContext.xStatusIndicator.is() )
+ m_rEmitContext.xStatusIndicator->setValue( elem.PageNumber );
+
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+
+ m_rEmitContext.rEmitter.endTag("draw:page");
+}
+
+void DrawXmlEmitter::visit( DocumentElement& elem, const std::list< Element* >::const_iterator&)
+{
+ m_rEmitContext.rEmitter.beginTag( "office:body", PropertyMap() );
+ m_rEmitContext.rEmitter.beginTag( m_bWriteDrawDocument ? "office:drawing" : "office:presentation",
+ PropertyMap() );
+
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+
+ m_rEmitContext.rEmitter.endTag( m_bWriteDrawDocument ? "office:drawing" : "office:presentation" );
+ m_rEmitContext.rEmitter.endTag( "office:body" );
+}
+
+/////////////////////////////////////////////////////////////////
+
+void DrawXmlOptimizer::visit( HyperlinkElement&, const std::list< Element* >::const_iterator& )
+{
+}
+
+void DrawXmlOptimizer::visit( TextElement&, const std::list< Element* >::const_iterator&)
+{
+}
+
+void DrawXmlOptimizer::visit( FrameElement& elem, const std::list< Element* >::const_iterator& )
+{
+ elem.applyToChildren(*this);
+}
+
+void DrawXmlOptimizer::visit( ImageElement&, const std::list< Element* >::const_iterator& )
+{
+}
+
+void DrawXmlOptimizer::visit( PolyPolyElement& elem, const std::list< Element* >::const_iterator& )
+{
+ /* note: optimize two consecutive PolyPolyElements that
+ * have the same path but one of which is a stroke while
+ * the other is a fill
+ */
+ if( elem.Parent )
+ {
+ // find following PolyPolyElement in parent's children list
+ std::list< Element* >::iterator this_it = elem.Parent->Children.begin();
+ while( this_it != elem.Parent->Children.end() && *this_it != &elem )
+ ++this_it;
+
+ if( this_it != elem.Parent->Children.end() )
+ {
+ std::list< Element* >::iterator next_it = this_it;
+ if( ++next_it != elem.Parent->Children.end() )
+ {
+ PolyPolyElement* pNext = dynamic_cast<PolyPolyElement*>(*next_it);
+
+ // TODO(F2): this comparison fails for OOo-generated polygons with beziers.
+ if( pNext && pNext->PolyPoly == elem.PolyPoly )
+ {
+ const GraphicsContext& rNextGC =
+ m_rProcessor.getGraphicsContext( pNext->GCId );
+ const GraphicsContext& rThisGC =
+ m_rProcessor.getGraphicsContext( elem.GCId );
+
+ if( rThisGC.BlendMode == rNextGC.BlendMode &&
+ rThisGC.Flatness == rNextGC.Flatness &&
+ rThisGC.Transformation == rNextGC.Transformation &&
+ rThisGC.Clip == rNextGC.Clip &&
+ rThisGC.FillColor.Red == rNextGC.FillColor.Red &&
+ rThisGC.FillColor.Green== rNextGC.FillColor.Green &&
+ rThisGC.FillColor.Blue == rNextGC.FillColor.Blue &&
+ rThisGC.FillColor.Alpha== rNextGC.FillColor.Alpha &&
+ pNext->Action == PATH_STROKE &&
+ (elem.Action == PATH_FILL || elem.Action == PATH_EOFILL) )
+ {
+ GraphicsContext aGC = rThisGC;
+ aGC.LineJoin = rNextGC.LineJoin;
+ aGC.LineCap = rNextGC.LineCap;
+ aGC.LineWidth = rNextGC.LineWidth;
+ aGC.MiterLimit= rNextGC.MiterLimit;
+ aGC.DashArray = rNextGC.DashArray;
+ aGC.LineColor = rNextGC.LineColor;
+ elem.GCId = m_rProcessor.getGCId( aGC );
+
+ elem.Action |= pNext->Action;
+
+ elem.Children.splice( elem.Children.end(), pNext->Children );
+ elem.Parent->Children.erase( next_it );
+ delete pNext;
+ }
+ }
+ }
+ }
+ }
+}
+
+void DrawXmlOptimizer::visit( ParagraphElement& elem, const std::list< Element* >::const_iterator& )
+{
+ optimizeTextElements( elem );
+
+ elem.applyToChildren(*this);
+}
+
+void DrawXmlOptimizer::visit( PageElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( m_rProcessor.getStatusIndicator().is() )
+ m_rProcessor.getStatusIndicator()->setValue( elem.PageNumber );
+
+ // resolve hyperlinks
+ elem.resolveHyperlinks();
+
+ elem.resolveFontStyles( m_rProcessor ); // underlines and such
+
+ // FIXME: until hyperlinks and font effects are adjusted for
+ // geometrical search handle them before sorting
+ m_rProcessor.sortElements( &elem );
+
+ // find paragraphs in text
+ ParagraphElement* pCurPara = NULL;
+ std::list< Element* >::iterator page_element, next_page_element;
+ next_page_element = elem.Children.begin();
+ double fCurLineHeight = 0.0; // average height of text items in current para
+ int nCurLineElements = 0; // number of line contributing elements in current para
+ double line_left = elem.w, line_right = 0.0;
+ double column_width = elem.w*0.75; // estimate text width
+ // TODO: guess columns
+ while( next_page_element != elem.Children.end() )
+ {
+ page_element = next_page_element++;
+ ParagraphElement* pPagePara = dynamic_cast<ParagraphElement*>(*page_element);
+ if( pPagePara )
+ {
+ pCurPara = pPagePara;
+ // adjust line height and text items
+ fCurLineHeight = 0.0;
+ nCurLineElements = 0;
+ for( std::list< Element* >::iterator it = pCurPara->Children.begin();
+ it != pCurPara->Children.end(); ++it )
+ {
+ TextElement* pTestText = dynamic_cast<TextElement*>(*it);
+ if( pTestText )
+ {
+ fCurLineHeight = (fCurLineHeight*double(nCurLineElements) + pTestText->h)/double(nCurLineElements+1);
+ nCurLineElements++;
+ }
+ }
+ continue;
+ }
+
+ HyperlinkElement* pLink = dynamic_cast<HyperlinkElement*>(*page_element);
+ DrawElement* pDraw = dynamic_cast<DrawElement*>(*page_element);
+ if( ! pDraw && pLink && ! pLink->Children.empty() )
+ pDraw = dynamic_cast<DrawElement*>(pLink->Children.front() );
+ if( pDraw )
+ {
+ // insert small drawing objects as character, else leave them page bound
+
+ bool bInsertToParagraph = false;
+ // first check if this is either inside the paragraph
+ if( pCurPara && pDraw->y < pCurPara->y + pCurPara->h )
+ {
+ if( pDraw->h < fCurLineHeight * 1.5 )
+ {
+ bInsertToParagraph = true;
+ fCurLineHeight = (fCurLineHeight*double(nCurLineElements) + pDraw->h)/double(nCurLineElements+1);
+ nCurLineElements++;
+ // mark draw element as character
+ pDraw->isCharacter = true;
+ }
+ }
+ // or perhaps the draw element begins a new paragraph
+ else if( next_page_element != elem.Children.end() )
+ {
+ TextElement* pText = dynamic_cast<TextElement*>(*next_page_element);
+ if( ! pText )
+ {
+ ParagraphElement* pPara = dynamic_cast<ParagraphElement*>(*next_page_element);
+ if( pPara && ! pPara->Children.empty() )
+ pText = dynamic_cast<TextElement*>(pPara->Children.front());
+ }
+ if( pText && // check there is a text
+ pDraw->h < pText->h*1.5 && // and it is approx the same height
+ // and either upper or lower edge of pDraw is inside text's vertical range
+ ( ( pDraw->y >= pText->y && pDraw->y <= pText->y+pText->h ) ||
+ ( pDraw->y+pDraw->h >= pText->y && pDraw->y+pDraw->h <= pText->y+pText->h )
+ )
+ )
+ {
+ bInsertToParagraph = true;
+ fCurLineHeight = pDraw->h;
+ nCurLineElements = 1;
+ line_left = pDraw->x;
+ line_right = pDraw->x + pDraw->w;
+ // begin a new paragraph
+ pCurPara = NULL;
+ // mark draw element as character
+ pDraw->isCharacter = true;
+ }
+ }
+
+ if( ! bInsertToParagraph )
+ {
+ pCurPara = NULL;
+ continue;
+ }
+ }
+
+ TextElement* pText = dynamic_cast<TextElement*>(*page_element);
+ if( ! pText && pLink && ! pLink->Children.empty() )
+ pText = dynamic_cast<TextElement*>(pLink->Children.front());
+ if( pText )
+ {
+ Element* pGeo = pLink ? static_cast<Element*>(pLink) :
+ static_cast<Element*>(pText);
+ if( pCurPara )
+ {
+ // there was already a text element, check for a new paragraph
+ if( nCurLineElements > 0 )
+ {
+ // if the new text is significantly distant from the paragraph
+ // begin a new paragraph
+ if( pGeo->y > pCurPara->y + pCurPara->h + fCurLineHeight*0.5 )
+ pCurPara = NULL; // insert new paragraph
+ else if( pGeo->y > (pCurPara->y+pCurPara->h - fCurLineHeight*0.05) )
+ {
+ // new paragraph if either the last line of the paragraph
+ // was significantly shorter than the paragraph as a whole
+ if( (line_right - line_left) < pCurPara->w*0.75 )
+ pCurPara = NULL;
+ // or the last line was significantly smaller than the column width
+ else if( (line_right - line_left) < column_width*0.75 )
+ pCurPara = NULL;
+ }
+ }
+
+
+ }
+
+
+ // update line height/width
+ if( pCurPara )
+ {
+ fCurLineHeight = (fCurLineHeight*double(nCurLineElements) + pGeo->h)/double(nCurLineElements+1);
+ nCurLineElements++;
+ if( pGeo->x < line_left )
+ line_left = pGeo->x;
+ if( pGeo->x+pGeo->w > line_right )
+ line_right = pGeo->x+pGeo->w;
+ }
+ else
+ {
+ fCurLineHeight = pGeo->h;
+ nCurLineElements = 1;
+ line_left = pGeo->x;
+ line_right = pGeo->x + pGeo->w;
+ }
+ }
+
+
+ // move element to current paragraph
+ if (! pCurPara ) // new paragraph, insert one
+ {
+ pCurPara = m_rProcessor.getElementFactory()->createParagraphElement( NULL );
+ // set parent
+ pCurPara->Parent = &elem;
+ //insert new paragraph before current element
+ page_element = elem.Children.insert( page_element, pCurPara );
+ // forward iterator to current element again
+ ++ page_element;
+ // update next_element which is now invalid
+ next_page_element = page_element;
+ ++ next_page_element;
+ }
+ Element* pCurEle = *page_element;
+ pCurEle->setParent( page_element, pCurPara );
+ OSL_ENSURE( !pText || pCurEle == pText || pCurEle == pLink, "paragraph child list in disorder" );
+ if( pText || pDraw )
+ pCurPara->updateGeometryWith( pCurEle );
+ }
+
+ // process children
+ elem.applyToChildren(*this);
+}
+
+bool isSpaces(TextElement* pTextElem)
+{
+ rtl::OUString strSpace(32);
+ ::rtl::OUString ouTxt2(pTextElem->Text);
+ for(int i=0; i< pTextElem->Text.getLength(); i++)
+ {
+ rtl::OUString strToken = ouTxt2.copy(i,1) ;
+ if( !strSpace.equals(strToken) )
+ return false;
+ }
+ return true;
+}
+
+bool notTransformed(GraphicsContext GC)
+{
+ return (
+ GC.Transformation.get(0,0) == 100.00 &&
+ GC.Transformation.get(1,0) == 0.00 &&
+ GC.Transformation.get(0,1) == 0.00 &&
+ GC.Transformation.get(1,1) == -100.00
+ );
+}
+
+void DrawXmlOptimizer::optimizeTextElements(Element& rParent)
+{
+ if( rParent.Children.empty() ) // this should not happen
+ {
+ OSL_FAIL( "empty paragraph optimized" );
+ return;
+ }
+
+ // concatenate child elements with same font id
+ std::list< Element* >::iterator next = rParent.Children.begin();
+ std::list< Element* >::iterator it = next++;
+
+ while( next != rParent.Children.end() )
+ {
+ bool bConcat = false;
+ TextElement* pCur = dynamic_cast<TextElement*>(*it);
+
+ if( pCur )
+ {
+ TextElement* pNext = dynamic_cast<TextElement*>(*next);
+ bool isComplex = false;
+ rtl::OUString str(pCur->Text.getStr());
+ for(int i=0; i< str.getLength(); i++)
+ {
+ sal_Int16 nType = GetBreakIterator()->getScriptType( str, i );
+ if (nType == ::com::sun::star::i18n::ScriptType::COMPLEX)
+ isComplex = true;
+ }
+ bool bPara = strspn("ParagraphElement", typeid(rParent).name());
+ ParagraphElement* pPara = dynamic_cast<ParagraphElement*>(&rParent);
+ if (bPara && isComplex)
+ pPara->bRtl = true;
+ if( pNext )
+ {
+ const GraphicsContext& rCurGC = m_rProcessor.getGraphicsContext( pCur->GCId );
+ const GraphicsContext& rNextGC = m_rProcessor.getGraphicsContext( pNext->GCId );
+
+ // line and space optimization; works only in strictly horizontal mode
+
+ // concatenate consecutive text elements unless there is a
+ // font or text color or matrix change, leave a new span in that case
+ if( (pCur->FontId == pNext->FontId || isSpaces(pNext)) &&
+ rCurGC.FillColor.Red == rNextGC.FillColor.Red &&
+ rCurGC.FillColor.Green == rNextGC.FillColor.Green &&
+ rCurGC.FillColor.Blue == rNextGC.FillColor.Blue &&
+ rCurGC.FillColor.Alpha == rNextGC.FillColor.Alpha &&
+ (rCurGC.Transformation == rNextGC.Transformation || notTransformed(rNextGC))
+ )
+ {
+ pCur->updateGeometryWith( pNext );
+ // append text to current element
+ pCur->Text.append( pNext->Text.getStr(), pNext->Text.getLength() );
+
+ str = pCur->Text.getStr();
+ for(int i=0; i< str.getLength(); i++)
+ {
+ sal_Int16 nType = GetBreakIterator()->getScriptType( str, i );
+ if (nType == ::com::sun::star::i18n::ScriptType::COMPLEX)
+ isComplex = true;
+ }
+ if (bPara && isComplex)
+ pPara->bRtl = true;
+ // append eventual children to current element
+ // and clear children (else the children just
+ // appended to pCur would be destroyed)
+ pCur->Children.splice( pCur->Children.end(), pNext->Children );
+ // get rid of the now useless element
+ rParent.Children.erase( next );
+ delete pNext;
+ bConcat = true;
+ }
+ }
+ }
+ else if( dynamic_cast<HyperlinkElement*>(*it) )
+ optimizeTextElements( **it );
+ if ( bConcat )
+ next = it;
+ else
+ ++it;
+ ++next;
+ }
+}
+
+void DrawXmlOptimizer::visit( DocumentElement& elem, const std::list< Element* >::const_iterator&)
+{
+ elem.applyToChildren(*this);
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+
+
+void DrawXmlFinalizer::visit( PolyPolyElement& elem, const std::list< Element* >::const_iterator& )
+{
+ // xxx TODO copied from DrawElement
+ const GraphicsContext& rGC = m_rProcessor.getGraphicsContext(elem.GCId );
+ PropertyMap aProps;
+ aProps[ USTR( "style:family" ) ] = USTR( "graphic" );
+ aProps[ USTR( "style:parent-style-name") ] = USTR( "standard" );
+ // generate standard graphic style if necessary
+ m_rStyleContainer.getStandardStyleId( "graphic" );
+
+ PropertyMap aGCProps;
+
+ // TODO(F3): proper dash emulation
+ if( elem.Action & PATH_STROKE )
+ {
+ aGCProps[ USTR("draw:stroke") ] = rGC.DashArray.empty() ? USTR("solid") : USTR("dash");
+ aGCProps[ USTR("svg:stroke-color") ] = getColorString( rGC.LineColor );
+ if( rGC.LineWidth != 0.0 )
+ {
+ ::basegfx::B2DVector aVec(rGC.LineWidth,0);
+ aVec *= rGC.Transformation;
+
+ aVec.setX ( convPx2mmPrec2( aVec.getX() )*100.0 );
+ aVec.setY ( convPx2mmPrec2( aVec.getY() )*100.0 );
+
+ aGCProps[ USTR("svg:stroke-width") ] = rtl::OUString::valueOf( aVec.getLength() );
+ }
+ }
+ else
+ {
+ aGCProps[ USTR("draw:stroke") ] = USTR("none");
+ }
+
+ // TODO(F1): check whether stuff could be emulated by gradient/bitmap/hatch
+ if( elem.Action & (PATH_FILL | PATH_EOFILL) )
+ {
+ aGCProps[ USTR("draw:fill") ] = USTR("solid");
+ aGCProps[ USTR("draw:fill-color") ] = getColorString( rGC.FillColor );
+ }
+ else
+ {
+ aGCProps[ USTR("draw:fill") ] = USTR("none");
+ }
+
+ StyleContainer::Style aStyle( "style:style", aProps );
+ StyleContainer::Style aSubStyle( "style:graphic-properties", aGCProps );
+ aStyle.SubStyles.push_back( &aSubStyle );
+
+ elem.StyleId = m_rStyleContainer.getStyleId( aStyle );
+}
+
+void DrawXmlFinalizer::visit( HyperlinkElement&, const std::list< Element* >::const_iterator& )
+{
+}
+
+void DrawXmlFinalizer::visit( TextElement& elem, const std::list< Element* >::const_iterator& )
+{
+ const FontAttributes& rFont = m_rProcessor.getFont( elem.FontId );
+ PropertyMap aProps;
+ aProps[ USTR( "style:family" ) ] = USTR( "text" );
+
+ PropertyMap aFontProps;
+
+ // family name
+ aFontProps[ USTR( "fo:font-family" ) ] = rFont.familyName;
+ aFontProps[ USTR( "style:font-family-complex" ) ] = rFont.familyName;
+
+ // bold
+ if( rFont.isBold )
+ {
+ aFontProps[ USTR( "fo:font-weight" ) ] = USTR( "bold" );
+ aFontProps[ USTR( "fo:font-weight-asian" ) ] = USTR( "bold" );
+ aFontProps[ USTR( "style:font-weight-complex" ) ] = USTR( "bold" );
+ }
+ // italic
+ if( rFont.isItalic )
+ {
+ aFontProps[ USTR( "fo:font-style" ) ] = USTR( "italic" );
+ aFontProps[ USTR( "fo:font-style-asian" ) ] = USTR( "italic" );
+ aFontProps[ USTR( "style:font-style-complex" ) ] = USTR( "italic" );
+ }
+ // underline
+ if( rFont.isUnderline )
+ {
+ aFontProps[ USTR( "style:text-underline-style" ) ] = USTR( "solid" );
+ aFontProps[ USTR( "style:text-underline-width" ) ] = USTR( "auto" );
+ aFontProps[ USTR( "style:text-underline-color" ) ] = USTR( "font-color" );
+ }
+ // outline
+ if( rFont.isOutline )
+ {
+ aFontProps[ USTR( "style:text-outline" ) ] = USTR( "true" );
+ }
+ // size
+ rtl::OUStringBuffer aBuf( 32 );
+ aBuf.append( rFont.size*72/PDFI_OUTDEV_RESOLUTION );
+ aBuf.appendAscii( "pt" );
+ rtl::OUString aFSize = aBuf.makeStringAndClear();
+ aFontProps[ USTR( "fo:font-size" ) ] = aFSize;
+ aFontProps[ USTR( "style:font-size-asian" ) ] = aFSize;
+ aFontProps[ USTR( "style:font-size-complex" ) ] = aFSize;
+ // color
+ const GraphicsContext& rGC = m_rProcessor.getGraphicsContext( elem.GCId );
+ aFontProps[ USTR( "fo:color" ) ] = getColorString( rFont.isOutline ? rGC.LineColor : rGC.FillColor );
+
+ StyleContainer::Style aStyle( "style:style", aProps );
+ StyleContainer::Style aSubStyle( "style:text-properties", aFontProps );
+ aStyle.SubStyles.push_back( &aSubStyle );
+ elem.StyleId = m_rStyleContainer.getStyleId( aStyle );
+}
+
+void DrawXmlFinalizer::visit( ParagraphElement& elem, const std::list< Element* >::const_iterator& )
+{
+
+ PropertyMap aProps;
+ aProps[ USTR( "style:family" ) ] = USTR( "paragraph" );
+ // generate standard paragraph style if necessary
+ m_rStyleContainer.getStandardStyleId( "paragraph" );
+
+ PropertyMap aParProps;
+
+ aParProps[ USTR("fo:text-align")] = USTR("start");
+ if (elem.bRtl)
+ aParProps[ USTR("style:writing-mode")] = USTR("rl-tb");
+ else
+ aParProps[ USTR("style:writing-mode")] = USTR("lr-tb");
+
+ StyleContainer::Style aStyle( "style:style", aProps );
+ StyleContainer::Style aSubStyle( "style:paragraph-properties", aParProps );
+ aStyle.SubStyles.push_back( &aSubStyle );
+
+ elem.StyleId = m_rStyleContainer.getStyleId( aStyle );
+
+ elem.applyToChildren(*this);
+}
+
+void DrawXmlFinalizer::visit( FrameElement& elem, const std::list< Element* >::const_iterator&)
+{
+ PropertyMap aProps;
+ aProps[ USTR( "style:family" ) ] = USTR( "graphic" );
+ aProps[ USTR( "style:parent-style-name") ] = USTR( "standard" );
+ // generate standard graphic style if necessary
+ m_rStyleContainer.getStandardStyleId( "graphic" );
+
+ PropertyMap aGCProps;
+
+ aGCProps[ USTR("draw:stroke") ] = USTR("none");
+ aGCProps[ USTR("draw:fill") ] = USTR("none");
+ aGCProps[ USTR("draw:auto-grow-height") ] = USTR("true");
+ aGCProps[ USTR("draw:auto-grow-width") ] = USTR("true");
+ aGCProps[ USTR("draw:textarea-horizontal-align") ] = USTR("left");
+ aGCProps[ USTR("draw:textarea-vertical-align") ] = USTR("top");
+ aGCProps[ USTR("fo:min-height")] = USTR("0cm");
+ aGCProps[ USTR("fo:min-width")] = USTR("0cm");
+ aGCProps[ USTR("fo:padding-top") ] = USTR("0cm");
+ aGCProps[ USTR("fo:padding-left") ] = USTR("0cm");
+ aGCProps[ USTR("fo:padding-right") ] = USTR("0cm");
+ aGCProps[ USTR("fo:padding-bottom") ] = USTR("0cm");
+
+ // remark: vertical mirroring is done in current OOO by
+ // mirroring horzontally and rotating 180 degrees
+ // this is quaint, but unfortunately it seems
+ // mirror=vertical is defined but not implemented in current code
+ if( elem.MirrorVertical )
+ aGCProps[ USTR("style:mirror") ] = USTR("horizontal");
+
+ StyleContainer::Style aStyle( "style:style", aProps );
+ StyleContainer::Style aSubStyle( "style:graphic-properties", aGCProps );
+ aStyle.SubStyles.push_back( &aSubStyle );
+
+ elem.StyleId = m_rStyleContainer.getStyleId( aStyle );
+ elem.applyToChildren(*this);
+}
+
+void DrawXmlFinalizer::visit( ImageElement&, const std::list< Element* >::const_iterator& )
+{
+}
+
+void DrawXmlFinalizer::visit( PageElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( m_rProcessor.getStatusIndicator().is() )
+ m_rProcessor.getStatusIndicator()->setValue( elem.PageNumber );
+
+ // transform from pixel to mm
+ double page_width = convPx2mm( elem.w ), page_height = convPx2mm( elem.h );
+
+ // calculate page margins out of the relevant children (paragraphs)
+ elem.TopMargin = elem.h, elem.BottomMargin = 0, elem.LeftMargin = elem.w, elem.RightMargin = 0;
+
+ for( std::list< Element* >::const_iterator it = elem.Children.begin(); it != elem.Children.end(); ++it )
+ {
+ if( (*it)->x < elem.LeftMargin )
+ elem.LeftMargin = (*it)->x;
+ if( (*it)->y < elem.TopMargin )
+ elem.TopMargin = (*it)->y;
+ if( (*it)->x + (*it)->w > elem.RightMargin )
+ elem.RightMargin = ((*it)->x + (*it)->w);
+ if( (*it)->y + (*it)->h > elem.BottomMargin )
+ elem.BottomMargin = ((*it)->y + (*it)->h);
+ }
+
+ // transform margins to mm
+ double left_margin = convPx2mm( elem.LeftMargin );
+ double right_margin = convPx2mm( elem.RightMargin );
+ double top_margin = convPx2mm( elem.TopMargin );
+ double bottom_margin = convPx2mm( elem.BottomMargin );
+
+ // round left/top margin to nearest mm
+ left_margin = rtl_math_round( left_margin, 0, rtl_math_RoundingMode_Floor );
+ top_margin = rtl_math_round( top_margin, 0, rtl_math_RoundingMode_Floor );
+ // round (fuzzy) right/bottom margin to nearest cm
+ right_margin = rtl_math_round( right_margin, right_margin >= 10 ? -1 : 0, rtl_math_RoundingMode_Floor );
+ bottom_margin = rtl_math_round( bottom_margin, bottom_margin >= 10 ? -1 : 0, rtl_math_RoundingMode_Floor );
+
+ // set reasonable default in case of way too large margins
+ // e.g. no paragraph case
+ if( left_margin > page_width/2.0 - 10 )
+ left_margin = 10;
+ if( right_margin > page_width/2.0 - 10 )
+ right_margin = 10;
+ if( top_margin > page_height/2.0 - 10 )
+ top_margin = 10;
+ if( bottom_margin > page_height/2.0 - 10 )
+ bottom_margin = 10;
+
+ // catch the weird cases
+ if( left_margin < 0 )
+ left_margin = 0;
+ if( right_margin < 0 )
+ right_margin = 0;
+ if( top_margin < 0 )
+ top_margin = 0;
+ if( bottom_margin < 0 )
+ bottom_margin = 0;
+
+ // widely differing margins are unlikely to be correct
+ if( right_margin > left_margin*1.5 )
+ right_margin = left_margin;
+
+ elem.LeftMargin = convmm2Px( left_margin );
+ elem.RightMargin = convmm2Px( right_margin );
+ elem.TopMargin = convmm2Px( top_margin );
+ elem.BottomMargin = convmm2Px( bottom_margin );
+
+ // get styles for paragraphs
+ PropertyMap aPageProps;
+ PropertyMap aPageLayoutProps;
+ rtl::OUStringBuffer aBuf( 64 );
+ aPageLayoutProps[ USTR( "fo:margin-top" ) ] = unitMMString( top_margin );
+ aPageLayoutProps[ USTR( "fo:margin-bottom" ) ] = unitMMString( bottom_margin );
+ aPageLayoutProps[ USTR( "fo:margin-left" ) ] = unitMMString( left_margin );
+ aPageLayoutProps[ USTR( "fo:margin-right" ) ] = unitMMString( right_margin );
+ aPageLayoutProps[ USTR( "fo:page-width" ) ] = unitMMString( page_width );
+ aPageLayoutProps[ USTR( "fo:page-height" ) ] = unitMMString( page_height );
+ aPageLayoutProps[ USTR( "style:print-orientation" ) ]= elem.w < elem.h ? USTR( "portrait" ) : USTR( "landscape" );
+ aPageLayoutProps[ USTR( "style:writing-mode" ) ]= USTR( "lr-tb" );
+
+ StyleContainer::Style aStyle( "style:page-layout", aPageProps);
+ StyleContainer::Style aSubStyle( "style:page-layout-properties", aPageLayoutProps);
+ aStyle.SubStyles.push_back(&aSubStyle);
+ sal_Int32 nPageStyle = m_rStyleContainer.impl_getStyleId( aStyle, false );
+
+ // create master page
+ rtl::OUString aMasterPageLayoutName = m_rStyleContainer.getStyleName( nPageStyle );
+ aPageProps[ USTR( "style:page-layout-name" ) ] = aMasterPageLayoutName;
+
+ StyleContainer::Style aMPStyle( "style:master-page", aPageProps);
+
+ StyleContainer::Style aHeaderStyle( "style:header", PropertyMap() );
+ StyleContainer::Style aFooterStyle( "style:footer", PropertyMap() );
+
+ elem.StyleId = m_rStyleContainer.impl_getStyleId( aMPStyle,false );
+
+
+ rtl::OUString aMasterPageName = m_rStyleContainer.getStyleName( elem.StyleId );
+
+ // create styles for children
+ elem.applyToChildren(*this);
+}
+
+void DrawXmlFinalizer::visit( DocumentElement& elem, const std::list< Element* >::const_iterator& )
+{
+ elem.applyToChildren(*this);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/drawtreevisiting.hxx b/sdext/source/pdfimport/tree/drawtreevisiting.hxx
new file mode 100644
index 000000000000..e957448ded4e
--- /dev/null
+++ b/sdext/source/pdfimport/tree/drawtreevisiting.hxx
@@ -0,0 +1,132 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_DRAWTREEVISITING_HXX
+#define INCLUDED_PDFI_DRAWTREEVISITING_HXX
+
+#include "treevisiting.hxx"
+
+#include "com/sun/star/i18n/XBreakIterator.hpp"
+#include "com/sun/star/i18n/XCharacterClassification.hpp"
+#include "com/sun/star/lang/XMultiServiceFactory.hpp"
+#include "com/sun/star/uno/XComponentContext.hpp"
+
+namespace pdfi
+{
+ struct DrawElement;
+
+ class DrawXmlOptimizer : public ElementTreeVisitor
+ {
+ private:
+ PDFIProcessor& m_rProcessor;
+ void optimizeTextElements(Element& rParent);
+
+ public:
+ ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > mxBreakIter;
+ const ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >& GetBreakIterator();
+ explicit DrawXmlOptimizer(PDFIProcessor& rProcessor) :
+ m_rProcessor(rProcessor)
+ {}
+
+ virtual void visit( HyperlinkElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( TextElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ParagraphElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( FrameElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PolyPolyElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ImageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( DocumentElement&, const std::list< Element* >::const_iterator& );
+ };
+
+ class DrawXmlFinalizer : public ElementTreeVisitor
+ {
+ private:
+ StyleContainer& m_rStyleContainer;
+ PDFIProcessor& m_rProcessor;
+
+ public:
+ explicit DrawXmlFinalizer(StyleContainer& rStyleContainer,
+ PDFIProcessor& rProcessor) :
+ m_rStyleContainer(rStyleContainer),
+ m_rProcessor(rProcessor)
+ {}
+
+ virtual void visit( HyperlinkElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( TextElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ParagraphElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( FrameElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PolyPolyElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ImageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( DocumentElement&, const std::list< Element* >::const_iterator& );
+ };
+
+ class DrawXmlEmitter : public ElementTreeVisitor
+ {
+ private:
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xFactory;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xCtx;
+ ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > mxBreakIter;
+ ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XCharacterClassification > mxCharClass;
+
+ PDFIProcessor& m_rProcessor;
+
+ EmitContext& m_rEmitContext ;
+ /// writes Impress doc when false
+ const bool m_bWriteDrawDocument;
+
+ void fillFrameProps( DrawElement& rElem,
+ PropertyMap& rProps,
+ const EmitContext& rEmitContext,
+ bool bWasTransformed = false
+ );
+
+ public:
+ const ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >& GetBreakIterator();
+ const ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XCharacterClassification >& GetCharacterClassification();
+ enum DocType{ DRAW_DOC, IMPRESS_DOC };
+ explicit DrawXmlEmitter(EmitContext& rEmitContext, DocType eDocType, PDFIProcessor& rProc ) :
+ m_rProcessor( rProc ),
+ m_rEmitContext(rEmitContext),
+ m_bWriteDrawDocument(eDocType==DRAW_DOC)
+ {}
+
+ virtual void visit( HyperlinkElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( TextElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ParagraphElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( FrameElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PolyPolyElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ImageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( DocumentElement&, const std::list< Element* >::const_iterator& );
+ };
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/genericelements.cxx b/sdext/source/pdfimport/tree/genericelements.cxx
new file mode 100644
index 000000000000..e6a50a0331db
--- /dev/null
+++ b/sdext/source/pdfimport/tree/genericelements.cxx
@@ -0,0 +1,496 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "xmlemitter.hxx"
+#include "genericelements.hxx"
+#include "pdfiprocessor.hxx"
+#include "pdfihelper.hxx"
+#include "style.hxx"
+
+
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/range/b2drange.hxx>
+
+namespace pdfi
+{
+
+ElementFactory::~ElementFactory()
+{
+}
+
+Element::~Element()
+{
+ while( !Children.empty() )
+ {
+ Element* pCurr( Children.front() );
+ delete pCurr;
+ Children.pop_front();
+ }
+}
+
+void Element::applyToChildren( ElementTreeVisitor& rVisitor )
+{
+ for( std::list< Element* >::iterator it = Children.begin(); it != Children.end(); ++it )
+ (*it)->visitedBy( rVisitor, it );
+}
+
+void Element::setParent( std::list<Element*>::iterator& el, Element* pNewParent )
+{
+ if( pNewParent )
+ {
+ pNewParent->Children.splice( pNewParent->Children.end(), (*el)->Parent->Children, el );
+ (*el)->Parent = pNewParent;
+ }
+}
+
+void Element::updateGeometryWith( const Element* pMergeFrom )
+{
+ if( w == 0 && h == 0 )
+ {
+ x = pMergeFrom->x;
+ y = pMergeFrom->y;
+ w = pMergeFrom->w;
+ h = pMergeFrom->h;
+ }
+ else
+ {
+ if( pMergeFrom->x < x )
+ {
+ w += x - pMergeFrom->x;
+ x = pMergeFrom->x;
+ }
+ if( pMergeFrom->x+pMergeFrom->w > x+w )
+ w = pMergeFrom->w+pMergeFrom->x - x;
+ if( pMergeFrom->y < y )
+ {
+ h += y - pMergeFrom->y;
+ y = pMergeFrom->y;
+ }
+ if( pMergeFrom->y+pMergeFrom->h > y+h )
+ h = pMergeFrom->h+pMergeFrom->y - y;
+ }
+}
+
+
+#if OSL_DEBUG_LEVEL > 1
+#include <typeinfo>
+void Element::emitStructure( int nLevel)
+{
+ OSL_TRACE( "%*s<%s %p> (%.1f,%.1f)+(%.1fx%.1f)\n",
+ nLevel, "", typeid( *this ).name(), this,
+ x, y, w, h );
+ for( std::list< Element* >::iterator it = Children.begin(); it != Children.end(); ++it )
+ (*it)->emitStructure(nLevel+1 );
+ OSL_TRACE( "%*s</%s>\n", nLevel, "", typeid( *this ).name() );
+}
+#endif
+
+void ListElement::visitedBy( ElementTreeVisitor& visitor, const std::list< Element* >::const_iterator& )
+{
+ // this is only an inner node
+ applyToChildren(visitor);
+}
+
+void HyperlinkElement::visitedBy( ElementTreeVisitor& rVisitor,
+ const std::list< Element* >::const_iterator& rParentIt )
+{
+ rVisitor.visit(*this,rParentIt);
+}
+
+void TextElement::visitedBy( ElementTreeVisitor& rVisitor,
+ const std::list< Element* >::const_iterator& rParentIt )
+{
+ rVisitor.visit(*this,rParentIt);
+}
+
+void FrameElement::visitedBy( ElementTreeVisitor& rVisitor,
+ const std::list< Element* >::const_iterator& rParentIt )
+{
+ rVisitor.visit(*this,rParentIt);
+}
+
+void ImageElement::visitedBy( ElementTreeVisitor& rVisitor,
+ const std::list< Element* >::const_iterator& rParentIt)
+{
+ rVisitor.visit( *this, rParentIt);
+}
+
+PolyPolyElement::PolyPolyElement( Element* pParent,
+ sal_Int32 nGCId,
+ const basegfx::B2DPolyPolygon& rPolyPoly,
+ sal_Int8 nAction )
+ : DrawElement( pParent, nGCId ),
+ PolyPoly( rPolyPoly ),
+ Action( nAction )
+{
+}
+
+void PolyPolyElement::updateGeometry()
+{
+ basegfx::B2DRange aRange;
+ if( PolyPoly.areControlPointsUsed() )
+ aRange = basegfx::tools::getRange( basegfx::tools::adaptiveSubdivideByAngle( PolyPoly ) );
+ else
+ aRange = basegfx::tools::getRange( PolyPoly );
+ x = aRange.getMinX();
+ y = aRange.getMinY();
+ w = aRange.getWidth();
+ h = aRange.getHeight();
+
+ // fdo#32330 - non-closed paths will not show up filled in LibO
+ if( Action & (PATH_FILL | PATH_EOFILL) )
+ PolyPoly.setClosed(true);
+}
+
+void PolyPolyElement::visitedBy( ElementTreeVisitor& rVisitor,
+ const std::list< Element* >::const_iterator& rParentIt)
+{
+ rVisitor.visit( *this, rParentIt);
+}
+
+#if OSL_DEBUG_LEVEL > 1
+void PolyPolyElement::emitStructure( int nLevel)
+{
+ OSL_TRACE( "%*s<%s %p>\n", nLevel, "", typeid( *this ).name(), this );
+ OSL_TRACE( "path=" );
+ int nPoly = PolyPoly.count();
+ for( int i = 0; i < nPoly; i++ )
+ {
+ basegfx::B2DPolygon aPoly = PolyPoly.getB2DPolygon( i );
+ int nPoints = aPoly.count();
+ for( int n = 0; n < nPoints; n++ )
+ {
+ basegfx::B2DPoint aPoint = aPoly.getB2DPoint( n );
+ OSL_TRACE( " (%g,%g)", aPoint.getX(), aPoint.getY() );
+ }
+ OSL_TRACE( "\n" );
+ }
+ for( std::list< Element* >::iterator it = Children.begin(); it != Children.end(); ++it )
+ (*it)->emitStructure( nLevel+1 );
+ OSL_TRACE( "%*s</%s>\n", nLevel, "", typeid( *this ).name() );
+}
+#endif
+
+void ParagraphElement::visitedBy( ElementTreeVisitor& rVisitor,
+ const std::list< Element* >::const_iterator& rParentIt )
+{
+ rVisitor.visit(*this,rParentIt);
+}
+
+bool ParagraphElement::isSingleLined( PDFIProcessor& rProc ) const
+{
+ std::list< Element* >::const_iterator it = Children.begin();
+ TextElement* pText = NULL, *pLastText = NULL;
+ while( it != Children.end() )
+ {
+ // a paragraph containing subparagraphs cannot be single lined
+ if( dynamic_cast< ParagraphElement* >(*it) != NULL )
+ return false;
+
+ pText = dynamic_cast< TextElement* >(*it);
+ if( pText )
+ {
+ const FontAttributes& rFont = rProc.getFont( pText->FontId );
+ if( pText->h > rFont.size*1.5 )
+ return false;
+ if( pLastText )
+ {
+ if( pText->y > pLastText->y+pLastText->h ||
+ pLastText->y > pText->y+pText->h )
+ return false;
+ }
+ else
+ pLastText = pText;
+ }
+ ++it;
+ }
+
+ // a paragraph without a single text is not considered single lined
+ return pLastText != NULL;
+}
+
+double ParagraphElement::getLineHeight( PDFIProcessor& rProc ) const
+{
+ double line_h = 0;
+ for( std::list< Element* >::const_iterator it = Children.begin(); it != Children.end(); ++it )
+ {
+ ParagraphElement* pPara = dynamic_cast< ParagraphElement* >(*it);
+ TextElement* pText = NULL;
+ if( pPara )
+ {
+ double lh = pPara->getLineHeight( rProc );
+ if( lh > line_h )
+ line_h = lh;
+ }
+ else if( (pText = dynamic_cast< TextElement* >( *it )) != NULL )
+ {
+ const FontAttributes& rFont = rProc.getFont( pText->FontId );
+ double lh = pText->h;
+ if( pText->h > rFont.size*1.5 )
+ lh = rFont.size;
+ if( lh > line_h )
+ line_h = lh;
+ }
+ }
+ return line_h;
+}
+
+TextElement* ParagraphElement::getFirstTextChild() const
+{
+ TextElement* pText = NULL;
+ for( std::list< Element* >::const_iterator it = Children.begin();
+ it != Children.end() && ! pText; ++it )
+ {
+ pText = dynamic_cast<TextElement*>(*it);
+ }
+ return pText;
+}
+
+PageElement::~PageElement()
+{
+ if( HeaderElement )
+ delete HeaderElement;
+ if( FooterElement )
+ delete FooterElement;
+}
+
+void PageElement::visitedBy( ElementTreeVisitor& rVisitor,
+ const std::list< Element* >::const_iterator& rParentIt )
+{
+ rVisitor.visit(*this, rParentIt);
+}
+
+void PageElement::updateParagraphGeometry( Element* pEle )
+{
+ // update geometry of children
+ for( std::list< Element* >::iterator it = pEle->Children.begin();
+ it != pEle->Children.end(); ++it )
+ {
+ updateParagraphGeometry( *it );
+ }
+ // if this is a paragraph itself, then update according to children geometry
+ if( dynamic_cast<ParagraphElement*>(pEle) )
+ {
+ for( std::list< Element* >::iterator it = pEle->Children.begin();
+ it != pEle->Children.end(); ++it )
+ {
+ Element* pChild = NULL;
+ TextElement* pText = dynamic_cast<TextElement*>(*it);
+ if( pText )
+ pChild = pText;
+ else
+ {
+ ParagraphElement* pPara = dynamic_cast<ParagraphElement*>(*it);
+ if( pPara )
+ pChild = pPara;
+ }
+ if( pChild )
+ pEle->updateGeometryWith( pChild );
+ }
+ }
+}
+
+bool PageElement::resolveHyperlink( std::list<Element*>::iterator link_it, std::list<Element*>& rElements )
+{
+ HyperlinkElement* pLink = dynamic_cast<HyperlinkElement*>(*link_it);
+ if( ! pLink ) // sanity check
+ return false;
+
+ for( std::list<Element*>::iterator it = rElements.begin(); it != rElements.end(); ++it )
+ {
+ if( (*it)->x >= pLink->x && (*it)->x + (*it)->w <= pLink->x + pLink->w &&
+ (*it)->y >= pLink->y && (*it)->y + (*it)->h <= pLink->y + pLink->h )
+ {
+ TextElement* pText = dynamic_cast<TextElement*>(*it);
+ if( pText )
+ {
+ if( pLink->Children.empty() )
+ {
+ // insert the hyperlink before the frame
+ rElements.splice( it, Hyperlinks.Children, link_it );
+ pLink->Parent = (*it)->Parent;
+ }
+ // move text element into hyperlink
+ std::list<Element*>::iterator next = it;
+ ++next;
+ Element::setParent( it, pLink );
+ it = next;
+ --it;
+ continue;
+ }
+ // a link can contain multiple text elements or a single frame
+ if( ! pLink->Children.empty() )
+ continue;
+ if( dynamic_cast<ParagraphElement*>(*it) )
+ {
+ if( resolveHyperlink( link_it, (*it)->Children ) )
+ break;
+ continue;
+ }
+ FrameElement* pFrame = dynamic_cast<FrameElement*>(*it);
+ if( pFrame )
+ {
+ // insert the hyperlink before the frame
+ rElements.splice( it, Hyperlinks.Children, link_it );
+ pLink->Parent = (*it)->Parent;
+ // move frame into hyperlink
+ Element::setParent( it, pLink );
+ break;
+ }
+ }
+ }
+ return ! pLink->Children.empty();
+}
+
+void PageElement::resolveHyperlinks()
+{
+ while( ! Hyperlinks.Children.empty() )
+ {
+ if( ! resolveHyperlink( Hyperlinks.Children.begin(), Children ) )
+ {
+ delete Hyperlinks.Children.front();
+ Hyperlinks.Children.pop_front();
+ }
+ }
+}
+
+void PageElement::resolveFontStyles( PDFIProcessor& rProc )
+{
+ resolveUnderlines(rProc);
+}
+
+void PageElement::resolveUnderlines( PDFIProcessor& rProc )
+{
+ // FIXME: currently the algorithm used is quadratic
+ // this could be solved by some sorting beforehand
+
+ std::list< Element* >::iterator poly_it = Children.begin();
+ while( poly_it != Children.end() )
+ {
+ PolyPolyElement* pPoly = dynamic_cast< PolyPolyElement* >(*poly_it);
+ if( ! pPoly || ! pPoly->Children.empty() )
+ {
+ ++poly_it;
+ continue;
+ }
+ /* check for: no filling
+ * only two points (FIXME: handle small rectangles, too)
+ * y coordinates of points are equal
+ */
+ if( pPoly->Action != PATH_STROKE )
+ {
+ ++poly_it;
+ continue;
+ }
+ if( pPoly->PolyPoly.count() != 1 )
+ {
+ ++poly_it;
+ continue;
+ }
+
+ bool bRemovePoly = false;
+ basegfx::B2DPolygon aPoly = pPoly->PolyPoly.getB2DPolygon(0);
+ if( aPoly.count() != 2 ||
+ aPoly.getB2DPoint(0).getY() != aPoly.getB2DPoint(1).getY() )
+ {
+ ++poly_it;
+ continue;
+ }
+ double l_x = aPoly.getB2DPoint(0).getX();
+ double r_x = aPoly.getB2DPoint(1).getX();
+ double u_y;
+ if( r_x < l_x )
+ {
+ u_y = r_x; r_x = l_x; l_x = u_y;
+ }
+ u_y = aPoly.getB2DPoint(0).getY();
+ for( std::list< Element*>::iterator it = Children.begin();
+ it != Children.end(); ++it )
+ {
+ Element* pEle = *it;
+ if( pEle->y <= u_y && pEle->y + pEle->h*1.1 >= u_y )
+ {
+ // first: is the element underlined completely ?
+ if( pEle->x + pEle->w*0.1 >= l_x &&
+ pEle->x + pEle->w*0.9 <= r_x )
+ {
+ TextElement* pText = dynamic_cast< TextElement* >(pEle);
+ if( pText )
+ {
+ const GraphicsContext& rTextGC = rProc.getGraphicsContext( pText->GCId );
+ if( ! rTextGC.isRotatedOrSkewed() )
+ {
+ bRemovePoly = true;
+ // retrieve ID for modified font
+ FontAttributes aAttr = rProc.getFont( pText->FontId );
+ aAttr.isUnderline = true;
+ pText->FontId = rProc.getFontId( aAttr );
+ }
+ }
+ else if( dynamic_cast< HyperlinkElement* >(pEle) )
+ bRemovePoly = true;
+ }
+ // second: hyperlinks may be larger than their underline
+ // since they are just arbitrary rectangles in the action definition
+ else if( dynamic_cast< HyperlinkElement* >(pEle) != NULL &&
+ l_x >= pEle->x && r_x <= pEle->x+pEle->w )
+ {
+ bRemovePoly = true;
+ }
+ }
+ }
+ if( bRemovePoly )
+ {
+ std::list< Element* >::iterator next_it = poly_it;
+ ++next_it;
+ Children.erase( poly_it );
+ delete pPoly;
+ poly_it = next_it;
+ }
+ else
+ ++poly_it;
+ }
+}
+
+DocumentElement::~DocumentElement()
+{
+}
+
+void DocumentElement::visitedBy( ElementTreeVisitor& rVisitor,
+ const std::list< Element* >::const_iterator& rParentIt)
+{
+ rVisitor.visit(*this, rParentIt);
+}
+
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/genericelements.hxx b/sdext/source/pdfimport/tree/genericelements.hxx
new file mode 100644
index 000000000000..b2122a6c7cc2
--- /dev/null
+++ b/sdext/source/pdfimport/tree/genericelements.hxx
@@ -0,0 +1,326 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_GENERICELEMENTS_HXX
+#define INCLUDED_PDFI_GENERICELEMENTS_HXX
+
+#include "pdfihelper.hxx"
+#include "treevisiting.hxx"
+
+#include <com/sun/star/task/XStatusIndicator.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <rtl/ustring.hxx>
+#include <rtl/ustrbuf.hxx>
+
+#include <list>
+
+namespace pdfi
+{
+ class XmlEmitter;
+ class StyleContainer;
+ class ImageContainer;
+ class PDFIProcessor;
+ class ElementFactory;
+
+
+ struct EmitContext
+ {
+ EmitContext(
+ XmlEmitter& _rEmitter,
+ StyleContainer& _rStyles,
+ ImageContainer& _rImages,
+ PDFIProcessor& _rProcessor,
+ const com::sun::star::uno::Reference<
+ com::sun::star::task::XStatusIndicator>& _xStatusIndicator,
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > xContext)
+ :
+ rEmitter(_rEmitter),
+ rStyles(_rStyles),
+ rImages(_rImages),
+ rProcessor(_rProcessor),
+ xStatusIndicator(_xStatusIndicator),
+ m_xContext(xContext)
+ {}
+
+ XmlEmitter& rEmitter;
+ StyleContainer& rStyles;
+ ImageContainer& rImages;
+ PDFIProcessor& rProcessor;
+ com::sun::star::uno::Reference<
+ com::sun::star::task::XStatusIndicator> xStatusIndicator;
+ com::sun::star::uno::Reference<
+ com::sun::star::uno::XComponentContext > m_xContext;
+ };
+
+ struct Element : public ElementTreeVisitable
+ {
+ protected:
+ Element( Element* pParent )
+ : x( 0 ), y( 0 ), w( 0 ), h( 0 ), StyleId( -1 ), Parent( pParent )
+ {
+ if( pParent )
+ pParent->Children.push_back( this );
+ }
+
+ public:
+ virtual ~Element();
+
+ /// Apply visitor to all children
+ void applyToChildren( ElementTreeVisitor& );
+ /// Union element geometry with given element
+ void updateGeometryWith( const Element* pMergeFrom );
+
+#if OSL_DEBUG_LEVEL > 1
+ // xxx refac TODO: move code to visitor
+ virtual void emitStructure( int nLevel );
+#endif
+ /** el must be a valid dereferencable iterator of el->Parent->Children
+ pNewParent must not be NULL
+ */
+ static void setParent( std::list<Element*>::iterator& el, Element* pNewParent );
+
+ double x, y, w, h;
+ sal_Int32 StyleId;
+ Element* Parent;
+ std::list<Element*> Children;
+ };
+
+ struct ListElement : public Element
+ {
+ ListElement() : Element( NULL ) {}
+ // ElementTreeVisitable
+ virtual void visitedBy( ElementTreeVisitor&, const std::list< Element* >::const_iterator& );
+ };
+
+ struct HyperlinkElement : public Element
+ {
+ friend class ElementFactory;
+ protected:
+ HyperlinkElement( Element* pParent, const rtl::OUString& rURI )
+ : Element( pParent ), URI( rURI ) {}
+ public:
+ // ElementTreeVisitable
+ virtual void visitedBy( ElementTreeVisitor&, const std::list< Element* >::const_iterator& );
+
+ rtl::OUString URI;
+ };
+
+ struct GraphicalElement : public Element
+ {
+ protected:
+ GraphicalElement( Element* pParent, sal_Int32 nGCId )
+ : Element( pParent ), GCId( nGCId ), MirrorVertical( false ) {}
+
+ public:
+ sal_Int32 GCId;
+ bool MirrorVertical;
+ };
+
+ struct DrawElement : public GraphicalElement
+ {
+ protected:
+ DrawElement( Element* pParent, sal_Int32 nGCId )
+ : GraphicalElement( pParent, nGCId ), isCharacter(false), ZOrder(0) {}
+
+ public:
+ bool isCharacter;
+ sal_Int32 ZOrder;
+ };
+
+ struct FrameElement : public DrawElement
+ {
+ friend class ElementFactory;
+ protected:
+ FrameElement( Element* pParent, sal_Int32 nGCId )
+ : DrawElement( pParent, nGCId ) {}
+
+ public:
+ // ElementTreeVisitable
+ virtual void visitedBy( ElementTreeVisitor&, const std::list< Element* >::const_iterator& );
+ };
+
+ struct TextElement : public GraphicalElement
+ {
+ friend class ElementFactory;
+ protected:
+ TextElement( Element* pParent, sal_Int32 nGCId, sal_Int32 nFontId )
+ : GraphicalElement( pParent, nGCId ), FontId( nFontId ) {}
+
+ public:
+ // ElementTreeVisitable
+ virtual void visitedBy( ElementTreeVisitor&, const std::list< Element* >::const_iterator& );
+
+ rtl::OUStringBuffer Text;
+ sal_Int32 FontId;
+ };
+
+ struct ParagraphElement : public Element
+ {
+ friend class ElementFactory;
+ protected:
+ ParagraphElement( Element* pParent ) : Element( pParent ), Type( Normal ), bRtl( false ) {}
+
+ public:
+ // ElementTreeVisitable
+ virtual void visitedBy( ElementTreeVisitor&, const std::list< Element* >::const_iterator& rParentIt );
+
+ // returns true only if only a single line is contained
+ bool isSingleLined( PDFIProcessor& rProc ) const;
+ // returns the highest line height of the contained textelements
+ // line height is font height if the text element is itself multilined
+ double getLineHeight( PDFIProcessor& rProc ) const;
+ // returns the first text element child; does not recurse through subparagraphs
+ TextElement* getFirstTextChild() const;
+
+ enum ParagraphType { Normal, Headline };
+ ParagraphType Type;
+ bool bRtl;
+ };
+
+ struct PolyPolyElement : public DrawElement
+ {
+ friend class ElementFactory;
+ protected:
+ PolyPolyElement( Element* pParent, sal_Int32 nGCId,
+ const basegfx::B2DPolyPolygon& rPolyPoly,
+ sal_Int8 nAction );
+ public:
+ // ElementTreeVisitable
+ virtual void visitedBy( ElementTreeVisitor&, const std::list< Element* >::const_iterator& rParentIt );
+
+ void updateGeometry();
+
+#if OSL_DEBUG_LEVEL > 1
+ virtual void emitStructure( int nLevel );
+#endif
+
+ basegfx::B2DPolyPolygon PolyPoly;
+ sal_Int8 Action;
+ };
+
+ struct ImageElement : public DrawElement
+ {
+ friend class ElementFactory;
+ protected:
+ ImageElement( Element* pParent, sal_Int32 nGCId, ImageId nImage )
+ : DrawElement( pParent, nGCId ), Image( nImage ) {}
+
+ public:
+ // ElementTreeVisitable
+ virtual void visitedBy( ElementTreeVisitor&, const std::list< Element* >::const_iterator& );
+
+ ImageId Image;
+ };
+
+ struct PageElement : public Element
+ {
+ friend class ElementFactory;
+ protected:
+ PageElement( Element* pParent, sal_Int32 nPageNr )
+ : Element( pParent ), PageNumber( nPageNr ), Hyperlinks(),
+ TopMargin( 0.0 ), BottomMargin( 0.0 ), LeftMargin( 0.0 ), RightMargin( 0.0 ),
+ HeaderElement( NULL ), FooterElement( NULL )
+ {}
+ private:
+ // helper method for resolveHyperlinks
+ bool resolveHyperlink( std::list<Element*>::iterator link_it, std::list<Element*>& rElements );
+ public:
+ virtual ~PageElement();
+
+ // ElementTreeVisitable
+ virtual void visitedBy( ElementTreeVisitor&, const std::list< Element* >::const_iterator& rParentIt );
+
+ void emitPageAnchoredElements( EmitContext& rEmitContext );
+ static void updateParagraphGeometry( Element* pEle );
+ void resolveHyperlinks();
+ void resolveFontStyles( PDFIProcessor& rProc );
+ void resolveUnderlines( PDFIProcessor& rProc );
+
+ sal_Int32 PageNumber;
+ ListElement Hyperlinks; // contains not yet realized links on this page
+ double TopMargin;
+ double BottomMargin;
+ double LeftMargin;
+ double RightMargin;
+ Element* HeaderElement;
+ Element* FooterElement;
+ };
+
+ struct DocumentElement : public Element
+ {
+ friend class ElementFactory;
+ protected:
+ DocumentElement() : Element( NULL ) {}
+ public:
+ virtual ~DocumentElement();
+
+ // ElementTreeVisitable
+ virtual void visitedBy( ElementTreeVisitor&, const std::list< Element* >::const_iterator& );
+
+ };
+
+ // this class is the differentiator of document types: it will create
+ // Element objects with an optimize() method suitable for the document type
+ class ElementFactory
+ {
+ public:
+ ElementFactory() {}
+ virtual ~ElementFactory();
+
+ virtual HyperlinkElement* createHyperlinkElement( Element* pParent, const rtl::OUString& rURI )
+ { return new HyperlinkElement( pParent, rURI ); }
+
+ virtual TextElement* createTextElement( Element* pParent, sal_Int32 nGCId, sal_Int32 nFontId )
+ { return new TextElement( pParent, nGCId, nFontId ); }
+ virtual ParagraphElement* createParagraphElement( Element* pParent )
+ { return new ParagraphElement( pParent ); }
+
+ virtual FrameElement* createFrameElement( Element* pParent, sal_Int32 nGCId )
+ { return new FrameElement( pParent, nGCId ); }
+ virtual PolyPolyElement*
+ createPolyPolyElement( Element* pParent,
+ sal_Int32 nGCId,
+ const basegfx::B2DPolyPolygon& rPolyPoly,
+ sal_Int8 nAction)
+ { return new PolyPolyElement( pParent, nGCId, rPolyPoly, nAction ); }
+ virtual ImageElement* createImageElement( Element* pParent, sal_Int32 nGCId, ImageId nImage )
+ { return new ImageElement( pParent, nGCId, nImage ); }
+
+ virtual PageElement* createPageElement( Element* pParent,
+ sal_Int32 nPageNr )
+ { return new PageElement( pParent, nPageNr ); }
+ virtual DocumentElement* createDocumentElement()
+ { return new DocumentElement(); }
+ };
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/imagecontainer.cxx b/sdext/source/pdfimport/tree/imagecontainer.cxx
new file mode 100644
index 000000000000..9be7bb5de0dd
--- /dev/null
+++ b/sdext/source/pdfimport/tree/imagecontainer.cxx
@@ -0,0 +1,156 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "imagecontainer.hxx"
+#include "genericelements.hxx"
+#include "xmlemitter.hxx"
+
+#include <rtl/ustrbuf.hxx>
+#include <osl/file.h>
+#include <rtl/crc.h>
+
+#include <com/sun/star/graphic/XGraphicProvider.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+
+#include <cppuhelper/implbase1.hxx>
+#include <comphelper/stl_types.hxx>
+
+#include <boost/bind.hpp>
+
+using namespace com::sun::star;
+
+namespace pdfi
+{
+
+namespace
+{
+
+static const sal_Char aBase64EncodeTable[] =
+ { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' };
+
+rtl::OUString encodeBase64( const sal_Int8* i_pBuffer, const sal_uInt32 i_nBufferLength )
+{
+ rtl::OUStringBuffer aBuf( (i_nBufferLength+1) * 4 / 3 );
+ const sal_Int32 nRemain(i_nBufferLength%3);
+ const sal_Int32 nFullTripleLength( i_nBufferLength - (i_nBufferLength%3));
+ sal_Int32 nBufPos( 0 );
+ for( sal_Int32 i = 0; i < nFullTripleLength; i += 3, nBufPos += 4 )
+ {
+ const sal_Int32 nBinary = (((sal_uInt8)i_pBuffer[i + 0]) << 16) +
+ (((sal_uInt8)i_pBuffer[i + 1]) << 8) +
+ ((sal_uInt8)i_pBuffer[i + 2]);
+
+ aBuf.appendAscii("====");
+
+ sal_uInt8 nIndex (static_cast<sal_uInt8>((nBinary & 0xFC0000) >> 18));
+ aBuf.setCharAt(nBufPos, aBase64EncodeTable [nIndex]);
+
+ nIndex = static_cast<sal_uInt8>((nBinary & 0x3F000) >> 12);
+ aBuf.setCharAt(nBufPos+1, aBase64EncodeTable [nIndex]);
+
+ nIndex = static_cast<sal_uInt8>((nBinary & 0xFC0) >> 6);
+ aBuf.setCharAt(nBufPos+2, aBase64EncodeTable [nIndex]);
+
+ nIndex = static_cast<sal_uInt8>((nBinary & 0x3F));
+ aBuf.setCharAt(nBufPos+3, aBase64EncodeTable [nIndex]);
+ }
+ if( nRemain > 0 )
+ {
+ aBuf.appendAscii("====");
+ sal_Int32 nBinary( 0 );
+ const sal_Int32 nStart(i_nBufferLength-nRemain);
+ switch(nRemain)
+ {
+ case 1: nBinary = ((sal_uInt8)i_pBuffer[nStart + 0]) << 16;
+ break;
+ case 2: nBinary = (((sal_uInt8)i_pBuffer[nStart + 0]) << 16) +
+ (((sal_uInt8)i_pBuffer[nStart + 1]) << 8);
+ break;
+ }
+ sal_uInt8 nIndex (static_cast<sal_uInt8>((nBinary & 0xFC0000) >> 18));
+ aBuf.setCharAt(nBufPos, aBase64EncodeTable [nIndex]);
+
+ nIndex = static_cast<sal_uInt8>((nBinary & 0x3F000) >> 12);
+ aBuf.setCharAt(nBufPos+1, aBase64EncodeTable [nIndex]);
+
+ if( nRemain == 2 )
+ {
+ nIndex = static_cast<sal_uInt8>((nBinary & 0xFC0) >> 6);
+ aBuf.setCharAt(nBufPos+2, aBase64EncodeTable [nIndex]);
+ }
+ }
+
+ return aBuf.makeStringAndClear();
+}
+
+} // namespace
+
+ImageContainer::ImageContainer() :
+ m_aImages()
+{}
+
+ImageId ImageContainer::addImage( const uno::Sequence<beans::PropertyValue>& xBitmap )
+{
+ m_aImages.push_back( xBitmap );
+ return m_aImages.size()-1;
+}
+
+void ImageContainer::writeBase64EncodedStream( ImageId nId, EmitContext& rContext )
+{
+ OSL_ASSERT( nId >= 0 && nId < ImageId( m_aImages.size()) );
+
+ const uno::Sequence<beans::PropertyValue>& rEntry( m_aImages[nId] );
+
+ // find "InputSequence" property
+ const beans::PropertyValue* pAry(rEntry.getConstArray());
+ const sal_Int32 nLen(rEntry.getLength());
+ const beans::PropertyValue* pValue(
+ std::find_if(pAry,pAry+nLen,
+ boost::bind(comphelper::TPropertyValueEqualFunctor(),
+ _1,
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("InputSequence")))));
+ OSL_ENSURE( pValue != pAry+nLen,
+ "InputSequence not found" );
+
+ uno::Sequence<sal_Int8> aData;
+ if( !(pValue->Value >>= aData) )
+ OSL_FAIL("Wrong data type");
+
+ rContext.rEmitter.write( encodeBase64( aData.getConstArray(), aData.getLength() ));
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/imagecontainer.hxx b/sdext/source/pdfimport/tree/imagecontainer.hxx
new file mode 100644
index 000000000000..525c31d570ce
--- /dev/null
+++ b/sdext/source/pdfimport/tree/imagecontainer.hxx
@@ -0,0 +1,63 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_IMAGECONTAINER_HXX
+#define INCLUDED_PDFI_IMAGECONTAINER_HXX
+
+#include "pdfihelper.hxx"
+
+#include <rtl/ustring.hxx>
+#include <com/sun/star/uno/Reference.hxx>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/awt/XBitmap.hpp>
+
+#include <vector>
+#include <boost/unordered_map.hpp>
+
+namespace pdfi
+{
+ struct EmitContext;
+
+ class ImageContainer
+ {
+ private:
+ std::vector< ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue> > m_aImages;
+
+ public:
+ ImageContainer();
+
+ ImageId addImage( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xBitmap );
+ void writeBase64EncodedStream( ImageId nImageId, EmitContext& rContext );
+ };
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/makefile.mk b/sdext/source/pdfimport/tree/makefile.mk
new file mode 100644
index 000000000000..827833296f4a
--- /dev/null
+++ b/sdext/source/pdfimport/tree/makefile.mk
@@ -0,0 +1,56 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sdext
+TARGET=pdfparsetree
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+# --- Files --------------------------------------------------------
+
+SLOFILES=\
+ $(SLO)$/genericelements.obj \
+ $(SLO)$/imagecontainer.obj \
+ $(SLO)$/pdfiprocessor.obj \
+ $(SLO)$/writertreevisiting.obj \
+ $(SLO)$/drawtreevisiting.obj \
+ $(SLO)$/treevisitorfactory.obj \
+ $(SLO)$/style.obj
+
+# --- Targets ------------------------------------------------------
+
+.IF "$(ENABLE_PDFIMPORT)" == "NO"
+@all:
+ @echo "PDF Import extension disabled."
+.ENDIF
+
+.INCLUDE: target.mk
diff --git a/sdext/source/pdfimport/tree/pdfiprocessor.cxx b/sdext/source/pdfimport/tree/pdfiprocessor.cxx
new file mode 100644
index 000000000000..62796d37c01a
--- /dev/null
+++ b/sdext/source/pdfimport/tree/pdfiprocessor.cxx
@@ -0,0 +1,1463 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pdfiprocessor.hxx"
+#include "xmlemitter.hxx"
+#include "pdfihelper.hxx"
+#include "imagecontainer.hxx"
+#include "genericelements.hxx"
+#include "style.hxx"
+#include "treevisiting.hxx"
+
+#include <rtl/string.hxx>
+#include <rtl/strbuf.hxx>
+
+#include <comphelper/sequence.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolygonclipper.hxx>
+#include <basegfx/polygon/b2dpolygontools.hxx>
+#include <basegfx/tools/canvastools.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/range/b2irange.hxx>
+#include <basegfx/range/b2drectangle.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+
+#include <com/sun/star/rendering/XVolatileBitmap.hpp>
+#include <com/sun/star/geometry/RealSize2D.hpp>
+#include <com/sun/star/geometry/RealPoint2D.hpp>
+#include <com/sun/star/geometry/RealRectangle2D.hpp>
+
+
+using namespace com::sun::star;
+
+
+namespace pdfi
+{
+
+ PDFIProcessor::PDFIProcessor( const uno::Reference< task::XStatusIndicator >& xStat ,
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > xContext) :
+
+ m_xContext(xContext),
+ fYPrevTextPosition(-10000.0),
+ fPrevTextHeight(0.0),
+ fXPrevTextPosition(0.0),
+ fPrevTextWidth(0.0),
+ m_pElFactory( new ElementFactory() ),
+ m_pDocument( m_pElFactory->createDocumentElement() ),
+ m_pCurPage(0),
+ m_pCurElement(0),
+ m_nNextFontId( 1 ),
+ m_aIdToFont(),
+ m_aFontToId(),
+ m_aGCStack(),
+ m_nNextGCId( 1 ),
+ m_aIdToGC(),
+ m_aGCToId(),
+ m_aImages(),
+ m_eTextDirection( LrTb ),
+ m_nPages(0),
+ m_nNextZOrder( 1 ),
+ m_fWordSpace(0.0),
+ m_bIsWhiteSpaceInLine( false ),
+ m_xStatusIndicator( xStat ),
+ m_bHaveTextOnDocLevel(false),
+ m_bMirrorMapperTried(false)
+{
+ FontAttributes aDefFont;
+ aDefFont.familyName = USTR("Helvetica");
+ aDefFont.isBold = false;
+ aDefFont.isItalic = false;
+ aDefFont.size = 10*PDFI_OUTDEV_RESOLUTION/72;
+ m_aIdToFont[ 0 ] = aDefFont;
+ m_aFontToId[ aDefFont ] = 0;
+
+ GraphicsContext aDefGC;
+ m_aGCStack.push_back( aDefGC );
+ m_aIdToGC[ 0 ] = aDefGC;
+ m_aGCToId[ aDefGC ] = 0;
+}
+
+void PDFIProcessor::enableToplevelText()
+{
+ m_bHaveTextOnDocLevel = true;
+}
+
+void PDFIProcessor::setPageNum( sal_Int32 nPages )
+{
+ m_nPages = nPages;
+}
+
+
+void PDFIProcessor::pushState()
+{
+ m_aGCStack.push_back( m_aGCStack.back() );
+}
+
+void PDFIProcessor::popState()
+{
+ m_aGCStack.pop_back();
+}
+
+void PDFIProcessor::setFlatness( double value )
+{
+ getCurrentContext().Flatness = value;
+}
+
+void PDFIProcessor::setTransformation( const geometry::AffineMatrix2D& rMatrix )
+{
+ basegfx::unotools::homMatrixFromAffineMatrix(
+ getCurrentContext().Transformation,
+ rMatrix );
+}
+
+void PDFIProcessor::setLineDash( const uno::Sequence<double>& dashes,
+ double /*start*/ )
+{
+ // TODO(F2): factor in start offset
+ GraphicsContext& rContext( getCurrentContext() );
+ comphelper::sequenceToContainer(rContext.DashArray,dashes);
+}
+
+void PDFIProcessor::setLineJoin(sal_Int8 nJoin)
+{
+ getCurrentContext().LineJoin = nJoin;
+}
+
+void PDFIProcessor::setLineCap(sal_Int8 nCap)
+{
+ getCurrentContext().LineCap = nCap;
+}
+
+void PDFIProcessor::setMiterLimit(double)
+{
+ OSL_TRACE("PDFIProcessor::setMiterLimit(): not supported by ODF");
+}
+
+void PDFIProcessor::setLineWidth(double nWidth)
+{
+ getCurrentContext().LineWidth = nWidth;
+}
+
+void PDFIProcessor::setFillColor( const rendering::ARGBColor& rColor )
+{
+ getCurrentContext().FillColor = rColor;
+}
+
+void PDFIProcessor::setStrokeColor( const rendering::ARGBColor& rColor )
+{
+ getCurrentContext().LineColor = rColor;
+}
+
+void PDFIProcessor::setBlendMode(sal_Int8)
+{
+ OSL_TRACE("PDFIProcessor::setBlendMode(): not supported by ODF");
+}
+
+void PDFIProcessor::setFont( const FontAttributes& i_rFont )
+{
+ FontAttributes aChangedFont( i_rFont );
+ GraphicsContext& rGC=getCurrentContext();
+ // for text render modes, please see PDF reference manual
+ aChangedFont.isOutline = ( (rGC.TextRenderMode == 1) || (rGC. TextRenderMode == 2) );
+ FontToIdMap::const_iterator it = m_aFontToId.find( aChangedFont );
+ if( it != m_aFontToId.end() )
+ rGC.FontId = it->second;
+ else
+ {
+ m_aFontToId[ aChangedFont ] = m_nNextFontId;
+ m_aIdToFont[ m_nNextFontId ] = aChangedFont;
+ rGC.FontId = m_nNextFontId;
+ m_nNextFontId++;
+ }
+}
+
+void PDFIProcessor::setTextRenderMode( sal_Int32 i_nMode )
+{
+ GraphicsContext& rGC=getCurrentContext();
+ rGC.TextRenderMode = i_nMode;
+ IdToFontMap::iterator it = m_aIdToFont.find( rGC.FontId );
+ if( it != m_aIdToFont.end() )
+ setFont( it->second );
+}
+
+sal_Int32 PDFIProcessor::getFontId( const FontAttributes& rAttr ) const
+{
+ const sal_Int32 nCurFont = getCurrentContext().FontId;
+ const_cast<PDFIProcessor*>(this)->setFont( rAttr );
+ const sal_Int32 nFont = getCurrentContext().FontId;
+ const_cast<PDFIProcessor*>(this)->getCurrentContext().FontId = nCurFont;
+
+ return nFont;
+}
+
+// line diagnose block - start
+void PDFIProcessor::processGlyphLine()
+{
+ if( m_GlyphsList.empty() )
+ return;
+
+ double fPreAvarageSpaceValue= 0.0;
+ double fAvarageDiffCharSpaceValue= 0.0;
+ double fMinPreSpaceValue= 0.0;
+ double fMaxPreSpaceValue= 0.0;
+ double fNullSpaceBreakerAvaregeSpaceValue = 0.0;
+
+ unsigned int nSpaceCount( 0 );
+ unsigned int nDiffSpaceCount( 0 );
+ unsigned int nNullSpaceBreakerCount=0;
+ bool preSpaceNull(true);
+
+ for ( unsigned int i=0; i<m_GlyphsList.size()-1; i++ ) // i=1 because the first glyph doesn't have a prevGlyphSpace value
+ {
+ if( m_GlyphsList[i].getPrevGlyphsSpace()>0.0 )
+ {
+ if( fMinPreSpaceValue>m_GlyphsList[i].getPrevGlyphsSpace() )
+ fMinPreSpaceValue=m_GlyphsList[i].getPrevGlyphsSpace();
+
+ if( fMaxPreSpaceValue<m_GlyphsList[i].getPrevGlyphsSpace() )
+ fMaxPreSpaceValue=m_GlyphsList[i].getPrevGlyphsSpace();
+
+ fPreAvarageSpaceValue+= m_GlyphsList[i].getPrevGlyphsSpace();
+ nSpaceCount++;
+ }
+ }
+
+ if( nSpaceCount!=0 )
+ fPreAvarageSpaceValue= fPreAvarageSpaceValue/( nSpaceCount );
+
+ for ( unsigned int i=0; i<m_GlyphsList.size()-1; i++ ) // i=1 because the first glyph doesn't have a prevGlyphSpace value
+ {
+ if ( m_GlyphsList[i].getPrevGlyphsSpace()==0.0 )
+ {
+ if (
+ ( m_GlyphsList[i+1].getPrevGlyphsSpace()>0.0)&&
+ ( fPreAvarageSpaceValue>m_GlyphsList[i+1].getPrevGlyphsSpace())
+ )
+ {
+ fNullSpaceBreakerAvaregeSpaceValue+=m_GlyphsList[i+1].getPrevGlyphsSpace();
+ nNullSpaceBreakerCount++;
+ }
+ }
+ }
+
+ if( ( fNullSpaceBreakerAvaregeSpaceValue!= 0.0 )&&
+ ( fNullSpaceBreakerAvaregeSpaceValue < fPreAvarageSpaceValue )
+ )
+ {
+ fPreAvarageSpaceValue = fNullSpaceBreakerAvaregeSpaceValue;
+ }
+
+ for ( unsigned int i=0; i<m_GlyphsList.size()-1; i++ ) // i=1 cose the first Glypth dont have prevGlyphSpace value
+ {
+ if ( ( m_GlyphsList[i].getPrevGlyphsSpace()>0.0 )
+ )
+ {
+ if (
+ ( m_GlyphsList[i].getPrevGlyphsSpace() <= fPreAvarageSpaceValue )&&
+ ( m_GlyphsList[i+1].getPrevGlyphsSpace()<= fPreAvarageSpaceValue )
+ )
+ {
+ double temp= m_GlyphsList[i].getPrevGlyphsSpace()-m_GlyphsList[i+1].getPrevGlyphsSpace();
+
+ if(temp!=0.0)
+ {
+ if( temp< 0.0)
+ temp= temp* -1.0;
+
+ fAvarageDiffCharSpaceValue+=temp;
+ nDiffSpaceCount++;
+ }
+ }
+ }
+
+ }
+
+ if (
+ ( nNullSpaceBreakerCount>0 )
+ )
+ {
+ fNullSpaceBreakerAvaregeSpaceValue=fNullSpaceBreakerAvaregeSpaceValue/nNullSpaceBreakerCount;
+ }
+
+ if (
+ ( nDiffSpaceCount>0 )&&(fAvarageDiffCharSpaceValue>0)
+ )
+ {
+ fAvarageDiffCharSpaceValue= fAvarageDiffCharSpaceValue/ nDiffSpaceCount;
+ }
+
+ ParagraphElement* pPara= NULL ;
+ FrameElement* pFrame= NULL ;
+
+ if(!m_GlyphsList.empty())
+ {
+ pFrame = m_pElFactory->createFrameElement( m_GlyphsList[0].getCurElement(), getGCId( getTransformGlyphContext( m_GlyphsList[0])) );
+ pFrame->ZOrder = m_nNextZOrder++;
+ pPara = m_pElFactory->createParagraphElement( pFrame );
+
+
+
+ processGlyph( 0,
+ m_GlyphsList[0],
+ pPara,
+ pFrame,
+ m_bIsWhiteSpaceInLine );
+
+
+ }
+
+
+ preSpaceNull=false;
+
+ for ( unsigned int i=1; i<m_GlyphsList.size()-1; i++ )
+ {
+ double fPrevDiffCharSpace= m_GlyphsList[i].getPrevGlyphsSpace()-m_GlyphsList[i-1].getPrevGlyphsSpace();
+ double fPostDiffCharSpace= m_GlyphsList[i].getPrevGlyphsSpace()-m_GlyphsList[i+1].getPrevGlyphsSpace();
+
+
+ if(
+ preSpaceNull && (m_GlyphsList[i].getPrevGlyphsSpace()!= 0.0)
+ )
+ {
+ preSpaceNull=false;
+ if( fNullSpaceBreakerAvaregeSpaceValue > m_GlyphsList[i].getPrevGlyphsSpace() )
+ {
+ processGlyph( 0,
+ m_GlyphsList[i],
+ pPara,
+ pFrame,
+ m_bIsWhiteSpaceInLine );
+
+ }
+ else
+ {
+ processGlyph( 1,
+ m_GlyphsList[i],
+ pPara,
+ pFrame,
+ m_bIsWhiteSpaceInLine );
+
+ }
+
+ }
+ else
+ {
+ if (
+ ( ( m_GlyphsList[i].getPrevGlyphsSpace()<= fPreAvarageSpaceValue )&&
+ ( fPrevDiffCharSpace<=fAvarageDiffCharSpaceValue )&&
+ ( fPostDiffCharSpace<=fAvarageDiffCharSpaceValue )
+ ) ||
+ ( m_GlyphsList[i].getPrevGlyphsSpace() == 0.0 )
+ )
+ {
+ preSpaceNull=true;
+
+ processGlyph( 0,
+ m_GlyphsList[i],
+ pPara,
+ pFrame,
+ m_bIsWhiteSpaceInLine );
+
+ }
+ else
+ {
+ processGlyph( 1,
+ m_GlyphsList[i],
+ pPara,
+ pFrame,
+ m_bIsWhiteSpaceInLine );
+
+ }
+
+ }
+
+ }
+
+ if(!m_GlyphsList.empty())
+ processGlyph( 0,
+ m_GlyphsList[m_GlyphsList.size()-1],
+ pPara,
+ pFrame,
+ m_bIsWhiteSpaceInLine );
+
+ m_GlyphsList.clear();
+}
+
+void PDFIProcessor::processGlyph( double fPreAvarageSpaceValue,
+ CharGlyph& aGlyph,
+ ParagraphElement* pPara,
+ FrameElement* pFrame,
+ bool bIsWhiteSpaceInLine
+ )
+{
+ if( !bIsWhiteSpaceInLine )
+ {
+ bool flag=( 0 < fPreAvarageSpaceValue );
+
+ drawCharGlyphs( aGlyph.getGlyph(),
+ aGlyph.getRect(),
+ aGlyph.getFontMatrix(),
+ aGlyph.getGC(),
+ aGlyph.getCurElement(),
+ pPara,
+ pFrame,
+ flag);
+ }
+ else
+ {
+ drawCharGlyphs( aGlyph.getGlyph(),
+ aGlyph.getRect(),
+ aGlyph.getFontMatrix(),
+ aGlyph.getGC(),
+ aGlyph.getCurElement(),
+ pPara,
+ pFrame,
+ false );
+ }
+}
+
+void PDFIProcessor::drawGlyphLine( const rtl::OUString& rGlyphs,
+ const geometry::RealRectangle2D& rRect,
+ const geometry::Matrix2D& rFontMatrix )
+{
+ double isFirstLine= fYPrevTextPosition+ fXPrevTextPosition+ fPrevTextHeight+ fPrevTextWidth ;
+ if(
+ ( ( ( fYPrevTextPosition!= rRect.Y1 ) ) ||
+ ( ( fXPrevTextPosition > rRect.X2 ) ) ||
+ ( ( fXPrevTextPosition+fPrevTextWidth*1.3)<rRect.X1 )
+ ) && ( isFirstLine> 0.0 )
+ )
+ {
+ processGlyphLine();
+ }
+
+ CharGlyph aGlyph;
+
+ aGlyph.setGlyph ( rGlyphs );
+ aGlyph.setRect ( rRect );
+ aGlyph.setFontMatrix ( rFontMatrix );
+ aGlyph.setGraphicsContext ( getCurrentContext() );
+ getGCId(getCurrentContext());
+ aGlyph.setCurElement( m_pCurElement );
+
+ aGlyph.setYPrevGlyphPosition( fYPrevTextPosition );
+ aGlyph.setXPrevGlyphPosition( fXPrevTextPosition );
+ aGlyph.setPrevGlyphHeight ( fPrevTextHeight );
+ aGlyph.setPrevGlyphWidth ( fPrevTextWidth );
+
+ m_GlyphsList.push_back( aGlyph );
+
+ fYPrevTextPosition = rRect.Y1;
+ fXPrevTextPosition = rRect.X2;
+ fPrevTextHeight = rRect.Y2-rRect.Y1;
+ fPrevTextWidth = rRect.X2-rRect.X1;
+
+ if( !m_bIsWhiteSpaceInLine )
+ {
+ static rtl::OUString tempWhiteSpaceStr( 0x20 );
+ static rtl::OUString tempWhiteSpaceNonBreakingStr( 0xa0 );
+ m_bIsWhiteSpaceInLine=(rGlyphs.equals( tempWhiteSpaceStr ) || rGlyphs.equals( tempWhiteSpaceNonBreakingStr ));
+ }
+}
+
+GraphicsContext& PDFIProcessor::getTransformGlyphContext( CharGlyph& rGlyph )
+{
+ geometry::RealRectangle2D rRect = rGlyph.getRect();
+ geometry::Matrix2D rFontMatrix = rGlyph.getFontMatrix();
+
+ rtl::OUString tempStr( 32 );
+ geometry::RealRectangle2D aRect(rRect);
+
+ basegfx::B2DHomMatrix aFontMatrix;
+ basegfx::unotools::homMatrixFromMatrix(
+ aFontMatrix,
+ rFontMatrix );
+
+ FontAttributes aFontAttrs = m_aIdToFont[ rGlyph.getGC().FontId ];
+
+ // add transformation to GC
+ basegfx::B2DHomMatrix aFontTransform(basegfx::tools::createTranslateB2DHomMatrix(-rRect.X1, -rRect.Y1));
+ aFontTransform *= aFontMatrix;
+ aFontTransform.translate( rRect.X1, rRect.Y1 );
+
+
+ rGlyph.getGC().Transformation = rGlyph.getGC().Transformation * aFontTransform;
+ getGCId(rGlyph.getGC());
+
+ return rGlyph.getGC();
+}
+void PDFIProcessor::drawCharGlyphs( rtl::OUString& rGlyphs,
+ geometry::RealRectangle2D& rRect,
+ geometry::Matrix2D& ,
+ GraphicsContext aGC,
+ Element* ,
+ ParagraphElement* pPara,
+ FrameElement* pFrame,
+ bool bSpaceFlag )
+{
+
+
+ rtl::OUString tempStr( 32 );
+ geometry::RealRectangle2D aRect(rRect);
+
+ ::basegfx::B2DRange aRect2;
+ calcTransformedRectBounds( aRect2,
+ ::basegfx::unotools::b2DRectangleFromRealRectangle2D(aRect),
+ aGC.Transformation );
+ // check whether there was a previous draw frame
+
+ TextElement* pText = m_pElFactory->createTextElement( pPara,
+ getGCId(aGC),
+ aGC.FontId );
+ if( bSpaceFlag )
+ pText->Text.append( tempStr );
+
+ pText->Text.append( rGlyphs );
+
+ pText->x = aRect2.getMinX() ;
+ pText->y = aRect2.getMinY() ;
+ pText->w = 0.0; // ToDO P2: 1.1 is a hack for solving of size auto-grow problem
+ pText->h = aRect2.getHeight(); // ToDO P2: 1.1 is a hack for solving of size auto-grow problem
+
+ pPara->updateGeometryWith( pText );
+
+ if( pFrame )
+ pFrame->updateGeometryWith( pPara );
+
+}
+void PDFIProcessor::drawGlyphs( const rtl::OUString& rGlyphs,
+ const geometry::RealRectangle2D& rRect,
+ const geometry::Matrix2D& rFontMatrix )
+{
+ drawGlyphLine( rGlyphs, rRect, rFontMatrix );
+}
+
+void PDFIProcessor::endText()
+{
+ TextElement* pText = dynamic_cast<TextElement*>(m_pCurElement);
+ if( pText )
+ m_pCurElement = pText->Parent;
+}
+
+void PDFIProcessor::setupImage(ImageId nImage)
+{
+ const GraphicsContext& rGC( getCurrentContext() );
+
+ basegfx::B2DHomMatrix aTrans( rGC.Transformation );
+
+ // check for rotation, which is the other way around in ODF
+ basegfx::B2DTuple aScale, aTranslation;
+ double fRotate, fShearX;
+ rGC.Transformation.decompose( aScale, aTranslation, fRotate, fShearX );
+ // TODDO(F4): correcting rotation when fShearX != 0 ?
+ if( fRotate != 0.0 )
+ {
+
+ // try to create a Transformation that corrects for the wrong rotation
+ aTrans.identity();
+ aTrans.scale( aScale.getX(), aScale.getY() );
+ aTrans.rotate( -fRotate );
+
+ basegfx::B2DRange aRect( 0, 0, 1, 1 );
+ aRect.transform( aTrans );
+
+ // TODO(F3) treat translation correctly
+ // the corrections below work for multiples of 90 degree
+ // which is a common case (landscape/portrait/seascape)
+ // we need a general solution here; however this needs to
+ // work in sync with DrawXmlEmitter::fillFrameProps and WriterXmlEmitter::fillFrameProps
+ // admittedly this is a lame workaround and fails for arbitrary rotation
+ double fQuadrant = fmod( fRotate, 2.0*M_PI ) / M_PI_2;
+ int nQuadrant = (int)fQuadrant;
+ if( nQuadrant < 0 )
+ nQuadrant += 4;
+ if( nQuadrant == 1 )
+ {
+ aTranslation.setX( aTranslation.getX() + aRect.getHeight() + aRect.getWidth());
+ aTranslation.setY( aTranslation.getY() + aRect.getHeight() );
+ }
+ if( nQuadrant == 3 )
+ aTranslation.setX( aTranslation.getX() - aRect.getHeight() );
+
+ aTrans.translate( aTranslation.getX(),
+ aTranslation.getY() );
+ }
+
+ bool bMirrorVertical = aScale.getY() > 0;
+
+ // transform unit rect to determine view box
+ basegfx::B2DRange aRect( 0, 0, 1, 1 );
+ aRect.transform( aTrans );
+
+ // TODO(F3): Handle clip
+ const sal_Int32 nGCId = getGCId(rGC);
+ FrameElement* pFrame = m_pElFactory->createFrameElement( m_pCurElement, nGCId );
+ ImageElement* pImageElement = m_pElFactory->createImageElement( pFrame, nGCId, nImage );
+ pFrame->x = pImageElement->x = aRect.getMinX();
+ pFrame->y = pImageElement->y = aRect.getMinY();
+ pFrame->w = pImageElement->w = aRect.getWidth();
+ pFrame->h = pImageElement->h = aRect.getHeight();
+ pFrame->ZOrder = m_nNextZOrder++;
+
+ if( bMirrorVertical )
+ {
+ pFrame->MirrorVertical = pImageElement->MirrorVertical = true;
+ pFrame->x += aRect.getWidth();
+ pImageElement->x += aRect.getWidth();
+ pFrame->y += aRect.getHeight();
+ pImageElement->y += aRect.getHeight();
+ }
+}
+
+void PDFIProcessor::drawMask(const uno::Sequence<beans::PropertyValue>& xBitmap,
+ bool /*bInvert*/ )
+{
+ // TODO(F3): Handle mask and inversion
+ setupImage( m_aImages.addImage(xBitmap) );
+}
+
+void PDFIProcessor::drawImage(const uno::Sequence<beans::PropertyValue>& xBitmap )
+{
+ setupImage( m_aImages.addImage(xBitmap) );
+}
+
+void PDFIProcessor::drawColorMaskedImage(const uno::Sequence<beans::PropertyValue>& xBitmap,
+ const uno::Sequence<uno::Any>& /*xMaskColors*/ )
+{
+ // TODO(F3): Handle mask colors
+ setupImage( m_aImages.addImage(xBitmap) );
+}
+
+void PDFIProcessor::drawMaskedImage(const uno::Sequence<beans::PropertyValue>& xBitmap,
+ const uno::Sequence<beans::PropertyValue>& /*xMask*/,
+ bool /*bInvertMask*/)
+{
+ // TODO(F3): Handle mask and inversion
+ setupImage( m_aImages.addImage(xBitmap) );
+}
+
+void PDFIProcessor::drawAlphaMaskedImage(const uno::Sequence<beans::PropertyValue>& xBitmap,
+ const uno::Sequence<beans::PropertyValue>& /*xMask*/)
+{
+ // TODO(F3): Handle mask
+
+ setupImage( m_aImages.addImage(xBitmap) );
+
+}
+
+void PDFIProcessor::strokePath( const uno::Reference< rendering::XPolyPolygon2D >& rPath )
+{
+ basegfx::B2DPolyPolygon aPoly=basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
+ aPoly.transform(getCurrentContext().Transformation);
+
+ PolyPolyElement* pPoly = m_pElFactory->createPolyPolyElement(
+ m_pCurElement,
+ getGCId(getCurrentContext()),
+ aPoly,
+ PATH_STROKE );
+ pPoly->updateGeometry();
+ pPoly->ZOrder = m_nNextZOrder++;
+}
+
+void PDFIProcessor::fillPath( const uno::Reference< rendering::XPolyPolygon2D >& rPath )
+{
+ basegfx::B2DPolyPolygon aPoly=basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
+ aPoly.transform(getCurrentContext().Transformation);
+
+ PolyPolyElement* pPoly = m_pElFactory->createPolyPolyElement(
+ m_pCurElement,
+ getGCId(getCurrentContext()),
+ aPoly,
+ PATH_FILL );
+ pPoly->updateGeometry();
+ pPoly->ZOrder = m_nNextZOrder++;
+}
+
+void PDFIProcessor::eoFillPath( const uno::Reference< rendering::XPolyPolygon2D >& rPath )
+{
+ basegfx::B2DPolyPolygon aPoly=basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
+ aPoly.transform(getCurrentContext().Transformation);
+
+ PolyPolyElement* pPoly = m_pElFactory->createPolyPolyElement(
+ m_pCurElement,
+ getGCId(getCurrentContext()),
+ aPoly,
+ PATH_EOFILL );
+ pPoly->updateGeometry();
+ pPoly->ZOrder = m_nNextZOrder++;
+}
+
+void PDFIProcessor::intersectClip(const uno::Reference< rendering::XPolyPolygon2D >& rPath)
+{
+ // TODO(F3): interpret fill mode
+ basegfx::B2DPolyPolygon aNewClip = basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
+ aNewClip.transform(getCurrentContext().Transformation);
+ basegfx::B2DPolyPolygon aCurClip = getCurrentContext().Clip;
+
+ if( aCurClip.count() ) // #i92985# adapted API from (..., false, false) to (..., true, false)
+ aNewClip = basegfx::tools::clipPolyPolygonOnPolyPolygon( aCurClip, aNewClip, true, false );
+
+ getCurrentContext().Clip = aNewClip;
+}
+
+void PDFIProcessor::intersectEoClip(const uno::Reference< rendering::XPolyPolygon2D >& rPath)
+{
+ // TODO(F3): interpret fill mode
+ basegfx::B2DPolyPolygon aNewClip = basegfx::unotools::b2DPolyPolygonFromXPolyPolygon2D(rPath);
+ aNewClip.transform(getCurrentContext().Transformation);
+ basegfx::B2DPolyPolygon aCurClip = getCurrentContext().Clip;
+
+ if( aCurClip.count() ) // #i92985# adapted API from (..., false, false) to (..., true, false)
+ aNewClip = basegfx::tools::clipPolyPolygonOnPolyPolygon( aCurClip, aNewClip, true, false );
+
+ getCurrentContext().Clip = aNewClip;
+}
+
+void PDFIProcessor::hyperLink( const geometry::RealRectangle2D& rBounds,
+ const ::rtl::OUString& rURI )
+{
+ if( rURI.getLength() )
+ {
+ HyperlinkElement* pLink = m_pElFactory->createHyperlinkElement(
+ &m_pCurPage->Hyperlinks,
+ rURI );
+ pLink->x = rBounds.X1;
+ pLink->y = rBounds.Y1;
+ pLink->w = rBounds.X2-rBounds.X1;
+ pLink->h = rBounds.Y2-rBounds.Y1;
+ }
+}
+
+const FontAttributes& PDFIProcessor::getFont( sal_Int32 nFontId ) const
+{
+ IdToFontMap::const_iterator it = m_aIdToFont.find( nFontId );
+ if( it == m_aIdToFont.end() )
+ it = m_aIdToFont.find( 0 );
+ return it->second;
+}
+
+sal_Int32 PDFIProcessor::getGCId( const GraphicsContext& rGC )
+{
+ sal_Int32 nGCId = 0;
+ GCToIdMap::const_iterator it = m_aGCToId.find( rGC );
+ if( it != m_aGCToId.end() )
+ nGCId = it->second;
+ else
+ {
+ m_aGCToId[ rGC ] = m_nNextGCId;
+ m_aIdToGC[ m_nNextGCId ] = rGC;
+ nGCId = m_nNextGCId;
+ m_nNextGCId++;
+ }
+
+ return nGCId;
+}
+
+const GraphicsContext& PDFIProcessor::getGraphicsContext( sal_Int32 nGCId ) const
+{
+ IdToGCMap::const_iterator it = m_aIdToGC.find( nGCId );
+ if( it == m_aIdToGC.end() )
+ it = m_aIdToGC.find( 0 );
+ return it->second;
+}
+
+void PDFIProcessor::endPage()
+{
+ processGlyphLine(); // draw last line
+ if( m_xStatusIndicator.is()
+ && m_pCurPage
+ && m_pCurPage->PageNumber == m_nPages
+ )
+ m_xStatusIndicator->end();
+}
+
+void PDFIProcessor::startPage( const geometry::RealSize2D& rSize )
+{
+ // initial clip is to page bounds
+ getCurrentContext().Clip = basegfx::B2DPolyPolygon(
+ basegfx::tools::createPolygonFromRect(
+ basegfx::B2DRange( 0, 0, rSize.Width, rSize.Height )));
+
+ sal_Int32 nNextPageNr = m_pCurPage ? m_pCurPage->PageNumber+1 : 1;
+ if( m_xStatusIndicator.is() )
+ {
+ if( nNextPageNr == 1 )
+ startIndicator( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( " " ) ) );
+ m_xStatusIndicator->setValue( nNextPageNr );
+ }
+ m_pCurPage = m_pElFactory->createPageElement(m_pDocument.get(), nNextPageNr);
+ m_pCurElement = m_pCurPage;
+ m_pCurPage->w = rSize.Width;
+ m_pCurPage->h = rSize.Height;
+ m_nNextZOrder = 1;
+
+
+}
+
+void PDFIProcessor::emit( XmlEmitter& rEmitter,
+ const TreeVisitorFactory& rVisitorFactory )
+{
+#if OSL_DEBUG_LEVEL > 1
+ m_pDocument->emitStructure( 0 );
+#endif
+
+ ElementTreeVisitorSharedPtr optimizingVisitor(
+ rVisitorFactory.createOptimizingVisitor(*this));
+ // FIXME: localization
+ startIndicator( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( " " ) ) );
+ m_pDocument->visitedBy( *optimizingVisitor, std::list<Element*>::iterator());
+
+#if OSL_DEBUG_LEVEL > 1
+ m_pDocument->emitStructure( 0 );
+#endif
+
+ // get styles
+ StyleContainer aStyles;
+ ElementTreeVisitorSharedPtr finalizingVisitor(
+ rVisitorFactory.createStyleCollectingVisitor(aStyles,*this));
+ // FIXME: localization
+
+ m_pDocument->visitedBy( *finalizingVisitor, std::list<Element*>::iterator() );
+
+ EmitContext aContext( rEmitter, aStyles, m_aImages, *this, m_xStatusIndicator, m_xContext );
+ ElementTreeVisitorSharedPtr aEmittingVisitor(
+ rVisitorFactory.createEmittingVisitor(aContext, *this));
+
+ PropertyMap aProps;
+ // document prolog
+ #define OASIS_STR "urn:oasis:names:tc:opendocument:xmlns:"
+ aProps[ USTR( "xmlns:office" ) ] = USTR( OASIS_STR "office:1.0" );
+ aProps[ USTR( "xmlns:style" ) ] = USTR( OASIS_STR "style:1.0" );
+ aProps[ USTR( "xmlns:text" ) ] = USTR( OASIS_STR "text:1.0" );
+ aProps[ USTR( "xmlns:svg" ) ] = USTR( OASIS_STR "svg-compatible:1.0" );
+ aProps[ USTR( "xmlns:table" ) ] = USTR( OASIS_STR "table:1.0" );
+ aProps[ USTR( "xmlns:draw" ) ] = USTR( OASIS_STR "drawing:1.0" );
+ aProps[ USTR( "xmlns:fo" ) ] = USTR( OASIS_STR "xsl-fo-compatible:1.0" );
+ aProps[ USTR( "xmlns:xlink" )] = USTR( "http://www.w3.org/1999/xlink" );
+ aProps[ USTR( "xmlns:dc" )] = USTR( "http://purl.org/dc/elements/1.1/" );
+ aProps[ USTR( "xmlns:number" )] = USTR( OASIS_STR "datastyle:1.0" );
+ aProps[ USTR( "xmlns:presentation" )] = USTR( OASIS_STR "presentation:1.0" );
+ aProps[ USTR( "xmlns:math" )] = USTR( "http://www.w3.org/1998/Math/MathML" );
+ aProps[ USTR( "xmlns:form" )] = USTR( OASIS_STR "form:1.0" );
+ aProps[ USTR( "xmlns:script" )] = USTR( OASIS_STR "script:1.0" );
+ aProps[ USTR( "xmlns:dom" )] = USTR( "http://www.w3.org/2001/xml-events" );
+ aProps[ USTR( "xmlns:xforms" )] = USTR( "http://www.w3.org/2002/xforms" );
+ aProps[ USTR( "xmlns:xsd" )] = USTR( "http://www.w3.org/2001/XMLSchema" );
+ aProps[ USTR( "xmlns:xsi" )] = USTR( "http://www.w3.org/2001/XMLSchema-instance" );
+ aProps[ USTR( "office:version" ) ] = USTR( "1.0" );
+ aProps[ USTR( "office:version" ) ] = USTR( "1.0" );
+
+ aContext.rEmitter.beginTag( "office:document", aProps );
+
+ // emit style list
+ aStyles.emit( aContext, *aEmittingVisitor );
+
+ m_pDocument->visitedBy( *aEmittingVisitor, std::list<Element*>::iterator() );
+ aContext.rEmitter.endTag( "office:document" );
+ endIndicator();
+}
+
+void PDFIProcessor::startIndicator( const rtl::OUString& rText, sal_Int32 nElements )
+{
+ if( nElements == -1 )
+ nElements = m_nPages;
+ if( m_xStatusIndicator.is() )
+ {
+ sal_Int32 nUnicodes = rText.getLength();
+ rtl::OUStringBuffer aStr( nUnicodes*2 );
+ const sal_Unicode* pText = rText.getStr();
+ for( int i = 0; i < nUnicodes; i++ )
+ {
+ if( nUnicodes-i > 1&&
+ pText[i] == '%' &&
+ pText[i+1] == 'd'
+ )
+ {
+ aStr.append( nElements );
+ i++;
+ }
+ else
+ aStr.append( pText[i] );
+ }
+ m_xStatusIndicator->start( aStr.makeStringAndClear(), nElements );
+ }
+}
+
+void PDFIProcessor::endIndicator()
+{
+ if( m_xStatusIndicator.is() )
+ m_xStatusIndicator->end();
+}
+
+void PDFIProcessor::sortDocument( bool bDeep )
+{
+ for( std::list< Element* >::iterator it = m_pDocument->Children.begin();
+ it != m_pDocument->Children.end(); ++it )
+ {
+ if( dynamic_cast<PageElement*>(*it) != NULL )
+ sortElements( *it, bDeep );
+ }
+}
+
+static bool lr_tb_sort( Element* pLeft, Element* pRight )
+{
+ // first: top-bottom sorting
+
+ // Note: allow for 10% overlap on text lines since text lines are usually
+ // of the same order as font height whereas the real paint area
+ // of text is usually smaller
+ double fudge_factor = 1.0;
+ if( dynamic_cast< TextElement* >(pLeft) || dynamic_cast< TextElement* >(pRight) )
+ fudge_factor = 0.9;
+
+ // if left's lower boundary is above right's upper boundary
+ // then left is smaller
+ if( pLeft->y+pLeft->h*fudge_factor < pRight->y )
+ return true;
+ // if right's lower boundary is above left's upper boundary
+ // then left is definitely not smaller
+ if( pRight->y+pRight->h*fudge_factor < pLeft->y )
+ return false;
+
+ // by now we have established that left and right are inside
+ // a "line", that is they have vertical overlap
+ // second: left-right sorting
+ // if left's right boundary is left to right's left boundary
+ // then left is smaller
+ if( pLeft->x+pLeft->w < pRight->x )
+ return true;
+ // if right's right boundary is left to left's left boundary
+ // then left is definitely not smaller
+ if( pRight->x+pRight->w < pLeft->x )
+ return false;
+
+ // here we have established vertical and horizontal overlap
+ // so sort left first, top second
+ if( pLeft->x < pRight->x )
+ return true;
+ if( pRight->x < pLeft->x )
+ return false;
+ if( pLeft->y < pRight->y )
+ return true;
+
+ return false;
+}
+
+void PDFIProcessor::sortElements( Element* pEle, bool bDeep )
+{
+ if( pEle->Children.empty() )
+ return;
+
+ if( bDeep )
+ {
+ for( std::list< Element* >::iterator it = pEle->Children.begin();
+ it != pEle->Children.end(); ++it )
+ {
+ sortElements( *it, bDeep );
+ }
+ }
+ // HACK: the stable sort member on std::list that takes a
+ // strict weak ordering requires member templates - which we
+ // do not have on all compilers. so we need to use std::stable_sort
+ // here - which does need random access iterators which the
+ // list iterators are not.
+ // so we need to copy the Element* to an array, stable sort that and
+ // copy them back.
+ std::vector<Element*> aChildren;
+ while( ! pEle->Children.empty() )
+ {
+ aChildren.push_back( pEle->Children.front() );
+ pEle->Children.pop_front();
+ }
+ switch( m_eTextDirection )
+ {
+ case LrTb:
+ default:
+ std::stable_sort( aChildren.begin(), aChildren.end(), lr_tb_sort );
+ break;
+ }
+ int nChildren = aChildren.size();
+ for( int i = 0; i < nChildren; i++ )
+ pEle->Children.push_back( aChildren[i] );
+}
+
+
+::basegfx::B2DRange& PDFIProcessor::calcTransformedRectBounds( ::basegfx::B2DRange& outRect,
+ const ::basegfx::B2DRange& inRect,
+ const ::basegfx::B2DHomMatrix& transformation )
+ {
+ outRect.reset();
+
+ if( inRect.isEmpty() )
+ return outRect;
+
+ // transform all four extremal points of the rectangle,
+ // take bounding rect of those.
+
+ // transform left-top point
+ outRect.expand( transformation * inRect.getMinimum() );
+
+ // transform bottom-right point
+ outRect.expand( transformation * inRect.getMaximum() );
+
+ ::basegfx::B2DPoint aPoint;
+
+ // transform top-right point
+ aPoint.setX( inRect.getMaxX() );
+ aPoint.setY( inRect.getMinY() );
+
+ aPoint *= transformation;
+ outRect.expand( aPoint );
+
+ // transform bottom-left point
+ aPoint.setX( inRect.getMinX() );
+ aPoint.setY( inRect.getMaxY() );
+
+ aPoint *= transformation;
+ outRect.expand( aPoint );
+
+ // over and out.
+ return outRect;
+ }
+
+// helper method: get a mirrored string
+rtl::OUString PDFIProcessor::mirrorString( const rtl::OUString& i_rString )
+{
+ if( ! m_xMirrorMapper.is() && ! m_bMirrorMapperTried )
+ {
+ m_bMirrorMapperTried = true;
+ uno::Reference< lang::XMultiComponentFactory > xMSF( m_xContext->getServiceManager(), uno::UNO_SET_THROW );
+ uno::Reference < uno::XInterface > xInterface = xMSF->createInstanceWithContext(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.StringMirror")), m_xContext);
+ m_xMirrorMapper = uno::Reference< util::XStringMapping >( xInterface, uno::UNO_QUERY );
+ #if OSL_DEBUG_LEVEL > 1
+ if( m_xMirrorMapper.is() )
+ fprintf( stderr, "using mirror mapper service\n" );
+ #endif
+ }
+ if( m_xMirrorMapper.is() )
+ {
+ uno::Sequence< rtl::OUString > aSeq( 1 );
+ aSeq.getArray()[0] = i_rString;
+ m_xMirrorMapper->mapStrings( aSeq );
+ return aSeq[0];
+ }
+
+ prepareMirrorMap();
+ sal_Int32 nLen = i_rString.getLength();
+ rtl::OUStringBuffer aRet( nLen );
+ for(int i = nLen - 1; i >= 0; i--)
+ {
+ sal_Unicode cChar = i_rString[ i ];
+ aRet.append( m_aMirrorMap[cChar] );
+ }
+ return aRet.makeStringAndClear();
+}
+
+void PDFIProcessor::prepareMirrorMap()
+{
+ if( m_aMirrorMap.empty() )
+ {
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "falling back to static mirror list\n" );
+ #endif
+
+ m_aMirrorMap.reserve( 0x10000 );
+ for( int i = 0; i < 0x10000; i++ )
+ m_aMirrorMap.push_back( sal_Unicode(i) );
+
+ m_aMirrorMap[ 0x0028 ] = 0x0029; // LEFT PARENTHESIS
+ m_aMirrorMap[ 0x0029 ] = 0x0028; // RIGHT PARENTHESIS
+ m_aMirrorMap[ 0x003C ] = 0x003E; // LESS-THAN SIGN
+ m_aMirrorMap[ 0x003E ] = 0x003C; // GREATER-THAN SIGN
+ m_aMirrorMap[ 0x005B ] = 0x005D; // LEFT SQUARE BRACKET
+ m_aMirrorMap[ 0x005D ] = 0x005B; // RIGHT SQUARE BRACKET
+ m_aMirrorMap[ 0x007B ] = 0x007D; // LEFT CURLY BRACKET
+ m_aMirrorMap[ 0x007D ] = 0x007B; // RIGHT CURLY BRACKET
+ m_aMirrorMap[ 0x00AB ] = 0x00BB; // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ m_aMirrorMap[ 0x00BB ] = 0x00AB; // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ m_aMirrorMap[ 0x0F3A ] = 0x0F3B; // TIBETAN MARK GUG RTAGS GYON
+ m_aMirrorMap[ 0x0F3B ] = 0x0F3A; // TIBETAN MARK GUG RTAGS GYAS
+ m_aMirrorMap[ 0x0F3C ] = 0x0F3D; // TIBETAN MARK ANG KHANG GYON
+ m_aMirrorMap[ 0x0F3D ] = 0x0F3C; // TIBETAN MARK ANG KHANG GYAS
+ m_aMirrorMap[ 0x169B ] = 0x169C; // OGHAM FEATHER MARK
+ m_aMirrorMap[ 0x169C ] = 0x169B; // OGHAM REVERSED FEATHER MARK
+ m_aMirrorMap[ 0x2039 ] = 0x203A; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ m_aMirrorMap[ 0x203A ] = 0x2039; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ m_aMirrorMap[ 0x2045 ] = 0x2046; // LEFT SQUARE BRACKET WITH QUILL
+ m_aMirrorMap[ 0x2046 ] = 0x2045; // RIGHT SQUARE BRACKET WITH QUILL
+ m_aMirrorMap[ 0x207D ] = 0x207E; // SUPERSCRIPT LEFT PARENTHESIS
+ m_aMirrorMap[ 0x207E ] = 0x207D; // SUPERSCRIPT RIGHT PARENTHESIS
+ m_aMirrorMap[ 0x208D ] = 0x208E; // SUBSCRIPT LEFT PARENTHESIS
+ m_aMirrorMap[ 0x208E ] = 0x208D; // SUBSCRIPT RIGHT PARENTHESIS
+ m_aMirrorMap[ 0x2208 ] = 0x220B; // ELEMENT OF
+ m_aMirrorMap[ 0x2209 ] = 0x220C; // NOT AN ELEMENT OF
+ m_aMirrorMap[ 0x220A ] = 0x220D; // SMALL ELEMENT OF
+ m_aMirrorMap[ 0x220B ] = 0x2208; // CONTAINS AS MEMBER
+ m_aMirrorMap[ 0x220C ] = 0x2209; // DOES NOT CONTAIN AS MEMBER
+ m_aMirrorMap[ 0x220D ] = 0x220A; // SMALL CONTAINS AS MEMBER
+ m_aMirrorMap[ 0x2215 ] = 0x29F5; // DIVISION SLASH
+ m_aMirrorMap[ 0x223C ] = 0x223D; // TILDE OPERATOR
+ m_aMirrorMap[ 0x223D ] = 0x223C; // REVERSED TILDE
+ m_aMirrorMap[ 0x2243 ] = 0x22CD; // ASYMPTOTICALLY EQUAL TO
+ m_aMirrorMap[ 0x2252 ] = 0x2253; // APPROXIMATELY EQUAL TO OR THE IMAGE OF
+ m_aMirrorMap[ 0x2253 ] = 0x2252; // IMAGE OF OR APPROXIMATELY EQUAL TO
+ m_aMirrorMap[ 0x2254 ] = 0x2255; // COLON EQUALS
+ m_aMirrorMap[ 0x2255 ] = 0x2254; // EQUALS COLON
+ m_aMirrorMap[ 0x2264 ] = 0x2265; // LESS-THAN OR EQUAL TO
+ m_aMirrorMap[ 0x2265 ] = 0x2264; // GREATER-THAN OR EQUAL TO
+ m_aMirrorMap[ 0x2266 ] = 0x2267; // LESS-THAN OVER EQUAL TO
+ m_aMirrorMap[ 0x2267 ] = 0x2266; // GREATER-THAN OVER EQUAL TO
+ m_aMirrorMap[ 0x2268 ] = 0x2269; // [BEST FIT] LESS-THAN BUT NOT EQUAL TO
+ m_aMirrorMap[ 0x2269 ] = 0x2268; // [BEST FIT] GREATER-THAN BUT NOT EQUAL TO
+ m_aMirrorMap[ 0x226A ] = 0x226B; // MUCH LESS-THAN
+ m_aMirrorMap[ 0x226B ] = 0x226A; // MUCH GREATER-THAN
+ m_aMirrorMap[ 0x226E ] = 0x226F; // [BEST FIT] NOT LESS-THAN
+ m_aMirrorMap[ 0x226F ] = 0x226E; // [BEST FIT] NOT GREATER-THAN
+ m_aMirrorMap[ 0x2270 ] = 0x2271; // [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO
+ m_aMirrorMap[ 0x2271 ] = 0x2270; // [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO
+ m_aMirrorMap[ 0x2272 ] = 0x2273; // [BEST FIT] LESS-THAN OR EQUIVALENT TO
+ m_aMirrorMap[ 0x2273 ] = 0x2272; // [BEST FIT] GREATER-THAN OR EQUIVALENT TO
+ m_aMirrorMap[ 0x2274 ] = 0x2275; // [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO
+ m_aMirrorMap[ 0x2275 ] = 0x2274; // [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO
+ m_aMirrorMap[ 0x2276 ] = 0x2277; // LESS-THAN OR GREATER-THAN
+ m_aMirrorMap[ 0x2277 ] = 0x2276; // GREATER-THAN OR LESS-THAN
+ m_aMirrorMap[ 0x2278 ] = 0x2279; // [BEST FIT] NEITHER LESS-THAN NOR GREATER-THAN
+ m_aMirrorMap[ 0x2279 ] = 0x2278; // [BEST FIT] NEITHER GREATER-THAN NOR LESS-THAN
+ m_aMirrorMap[ 0x227A ] = 0x227B; // PRECEDES
+ m_aMirrorMap[ 0x227B ] = 0x227A; // SUCCEEDS
+ m_aMirrorMap[ 0x227C ] = 0x227D; // PRECEDES OR EQUAL TO
+ m_aMirrorMap[ 0x227D ] = 0x227C; // SUCCEEDS OR EQUAL TO
+ m_aMirrorMap[ 0x227E ] = 0x227F; // [BEST FIT] PRECEDES OR EQUIVALENT TO
+ m_aMirrorMap[ 0x227F ] = 0x227E; // [BEST FIT] SUCCEEDS OR EQUIVALENT TO
+ m_aMirrorMap[ 0x2280 ] = 0x2281; // [BEST FIT] DOES NOT PRECEDE
+ m_aMirrorMap[ 0x2281 ] = 0x2280; // [BEST FIT] DOES NOT SUCCEED
+ m_aMirrorMap[ 0x2282 ] = 0x2283; // SUBSET OF
+ m_aMirrorMap[ 0x2283 ] = 0x2282; // SUPERSET OF
+ m_aMirrorMap[ 0x2284 ] = 0x2285; // [BEST FIT] NOT A SUBSET OF
+ m_aMirrorMap[ 0x2285 ] = 0x2284; // [BEST FIT] NOT A SUPERSET OF
+ m_aMirrorMap[ 0x2286 ] = 0x2287; // SUBSET OF OR EQUAL TO
+ m_aMirrorMap[ 0x2287 ] = 0x2286; // SUPERSET OF OR EQUAL TO
+ m_aMirrorMap[ 0x2288 ] = 0x2289; // [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO
+ m_aMirrorMap[ 0x2289 ] = 0x2288; // [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO
+ m_aMirrorMap[ 0x228A ] = 0x228B; // [BEST FIT] SUBSET OF WITH NOT EQUAL TO
+ m_aMirrorMap[ 0x228B ] = 0x228A; // [BEST FIT] SUPERSET OF WITH NOT EQUAL TO
+ m_aMirrorMap[ 0x228F ] = 0x2290; // SQUARE IMAGE OF
+ m_aMirrorMap[ 0x2290 ] = 0x228F; // SQUARE ORIGINAL OF
+ m_aMirrorMap[ 0x2291 ] = 0x2292; // SQUARE IMAGE OF OR EQUAL TO
+ m_aMirrorMap[ 0x2292 ] = 0x2291; // SQUARE ORIGINAL OF OR EQUAL TO
+ m_aMirrorMap[ 0x2298 ] = 0x29B8; // CIRCLED DIVISION SLASH
+ m_aMirrorMap[ 0x22A2 ] = 0x22A3; // RIGHT TACK
+ m_aMirrorMap[ 0x22A3 ] = 0x22A2; // LEFT TACK
+ m_aMirrorMap[ 0x22A6 ] = 0x2ADE; // ASSERTION
+ m_aMirrorMap[ 0x22A8 ] = 0x2AE4; // TRUE
+ m_aMirrorMap[ 0x22A9 ] = 0x2AE3; // FORCES
+ m_aMirrorMap[ 0x22AB ] = 0x2AE5; // DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+ m_aMirrorMap[ 0x22B0 ] = 0x22B1; // PRECEDES UNDER RELATION
+ m_aMirrorMap[ 0x22B1 ] = 0x22B0; // SUCCEEDS UNDER RELATION
+ m_aMirrorMap[ 0x22B2 ] = 0x22B3; // NORMAL SUBGROUP OF
+ m_aMirrorMap[ 0x22B3 ] = 0x22B2; // CONTAINS AS NORMAL SUBGROUP
+ m_aMirrorMap[ 0x22B4 ] = 0x22B5; // NORMAL SUBGROUP OF OR EQUAL TO
+ m_aMirrorMap[ 0x22B5 ] = 0x22B4; // CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+ m_aMirrorMap[ 0x22B6 ] = 0x22B7; // ORIGINAL OF
+ m_aMirrorMap[ 0x22B7 ] = 0x22B6; // IMAGE OF
+ m_aMirrorMap[ 0x22C9 ] = 0x22CA; // LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+ m_aMirrorMap[ 0x22CA ] = 0x22C9; // RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+ m_aMirrorMap[ 0x22CB ] = 0x22CC; // LEFT SEMIDIRECT PRODUCT
+ m_aMirrorMap[ 0x22CC ] = 0x22CB; // RIGHT SEMIDIRECT PRODUCT
+ m_aMirrorMap[ 0x22CD ] = 0x2243; // REVERSED TILDE EQUALS
+ m_aMirrorMap[ 0x22D0 ] = 0x22D1; // DOUBLE SUBSET
+ m_aMirrorMap[ 0x22D1 ] = 0x22D0; // DOUBLE SUPERSET
+ m_aMirrorMap[ 0x22D6 ] = 0x22D7; // LESS-THAN WITH DOT
+ m_aMirrorMap[ 0x22D7 ] = 0x22D6; // GREATER-THAN WITH DOT
+ m_aMirrorMap[ 0x22D8 ] = 0x22D9; // VERY MUCH LESS-THAN
+ m_aMirrorMap[ 0x22D9 ] = 0x22D8; // VERY MUCH GREATER-THAN
+ m_aMirrorMap[ 0x22DA ] = 0x22DB; // LESS-THAN EQUAL TO OR GREATER-THAN
+ m_aMirrorMap[ 0x22DB ] = 0x22DA; // GREATER-THAN EQUAL TO OR LESS-THAN
+ m_aMirrorMap[ 0x22DC ] = 0x22DD; // EQUAL TO OR LESS-THAN
+ m_aMirrorMap[ 0x22DD ] = 0x22DC; // EQUAL TO OR GREATER-THAN
+ m_aMirrorMap[ 0x22DE ] = 0x22DF; // EQUAL TO OR PRECEDES
+ m_aMirrorMap[ 0x22DF ] = 0x22DE; // EQUAL TO OR SUCCEEDS
+ m_aMirrorMap[ 0x22E0 ] = 0x22E1; // [BEST FIT] DOES NOT PRECEDE OR EQUAL
+ m_aMirrorMap[ 0x22E1 ] = 0x22E0; // [BEST FIT] DOES NOT SUCCEED OR EQUAL
+ m_aMirrorMap[ 0x22E2 ] = 0x22E3; // [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO
+ m_aMirrorMap[ 0x22E3 ] = 0x22E2; // [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO
+ m_aMirrorMap[ 0x22E4 ] = 0x22E5; // [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO
+ m_aMirrorMap[ 0x22E5 ] = 0x22E4; // [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO
+ m_aMirrorMap[ 0x22E6 ] = 0x22E7; // [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO
+ m_aMirrorMap[ 0x22E7 ] = 0x22E6; // [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO
+ m_aMirrorMap[ 0x22E8 ] = 0x22E9; // [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO
+ m_aMirrorMap[ 0x22E9 ] = 0x22E8; // [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO
+ m_aMirrorMap[ 0x22EA ] = 0x22EB; // [BEST FIT] NOT NORMAL SUBGROUP OF
+ m_aMirrorMap[ 0x22EB ] = 0x22EA; // [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP
+ m_aMirrorMap[ 0x22EC ] = 0x22ED; // [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO
+ m_aMirrorMap[ 0x22ED ] = 0x22EC; // [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+ m_aMirrorMap[ 0x22F0 ] = 0x22F1; // UP RIGHT DIAGONAL ELLIPSIS
+ m_aMirrorMap[ 0x22F1 ] = 0x22F0; // DOWN RIGHT DIAGONAL ELLIPSIS
+ m_aMirrorMap[ 0x22F2 ] = 0x22FA; // ELEMENT OF WITH LONG HORIZONTAL STROKE
+ m_aMirrorMap[ 0x22F3 ] = 0x22FB; // ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+ m_aMirrorMap[ 0x22F4 ] = 0x22FC; // SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+ m_aMirrorMap[ 0x22F6 ] = 0x22FD; // ELEMENT OF WITH OVERBAR
+ m_aMirrorMap[ 0x22F7 ] = 0x22FE; // SMALL ELEMENT OF WITH OVERBAR
+ m_aMirrorMap[ 0x22FA ] = 0x22F2; // CONTAINS WITH LONG HORIZONTAL STROKE
+ m_aMirrorMap[ 0x22FB ] = 0x22F3; // CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+ m_aMirrorMap[ 0x22FC ] = 0x22F4; // SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+ m_aMirrorMap[ 0x22FD ] = 0x22F6; // CONTAINS WITH OVERBAR
+ m_aMirrorMap[ 0x22FE ] = 0x22F7; // SMALL CONTAINS WITH OVERBAR
+ m_aMirrorMap[ 0x2308 ] = 0x2309; // LEFT CEILING
+ m_aMirrorMap[ 0x2309 ] = 0x2308; // RIGHT CEILING
+ m_aMirrorMap[ 0x230A ] = 0x230B; // LEFT FLOOR
+ m_aMirrorMap[ 0x230B ] = 0x230A; // RIGHT FLOOR
+ m_aMirrorMap[ 0x2329 ] = 0x232A; // LEFT-POINTING ANGLE BRACKET
+ m_aMirrorMap[ 0x232A ] = 0x2329; // RIGHT-POINTING ANGLE BRACKET
+ m_aMirrorMap[ 0x2768 ] = 0x2769; // MEDIUM LEFT PARENTHESIS ORNAMENT
+ m_aMirrorMap[ 0x2769 ] = 0x2768; // MEDIUM RIGHT PARENTHESIS ORNAMENT
+ m_aMirrorMap[ 0x276A ] = 0x276B; // MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+ m_aMirrorMap[ 0x276B ] = 0x276A; // MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+ m_aMirrorMap[ 0x276C ] = 0x276D; // MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+ m_aMirrorMap[ 0x276D ] = 0x276C; // MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+ m_aMirrorMap[ 0x276E ] = 0x276F; // HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+ m_aMirrorMap[ 0x276F ] = 0x276E; // HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+ m_aMirrorMap[ 0x2770 ] = 0x2771; // HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+ m_aMirrorMap[ 0x2771 ] = 0x2770; // HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+ m_aMirrorMap[ 0x2772 ] = 0x2773; // LIGHT LEFT TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0x2773 ] = 0x2772; // LIGHT RIGHT TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0x2774 ] = 0x2775; // MEDIUM LEFT CURLY BRACKET ORNAMENT
+ m_aMirrorMap[ 0x2775 ] = 0x2774; // MEDIUM RIGHT CURLY BRACKET ORNAMENT
+ m_aMirrorMap[ 0x27C3 ] = 0x27C4; // OPEN SUBSET
+ m_aMirrorMap[ 0x27C4 ] = 0x27C3; // OPEN SUPERSET
+ m_aMirrorMap[ 0x27C5 ] = 0x27C6; // LEFT S-SHAPED BAG DELIMITER
+ m_aMirrorMap[ 0x27C6 ] = 0x27C5; // RIGHT S-SHAPED BAG DELIMITER
+ m_aMirrorMap[ 0x27C8 ] = 0x27C9; // REVERSE SOLIDUS PRECEDING SUBSET
+ m_aMirrorMap[ 0x27C9 ] = 0x27C8; // SUPERSET PRECEDING SOLIDUS
+ m_aMirrorMap[ 0x27D5 ] = 0x27D6; // LEFT OUTER JOIN
+ m_aMirrorMap[ 0x27D6 ] = 0x27D5; // RIGHT OUTER JOIN
+ m_aMirrorMap[ 0x27DD ] = 0x27DE; // LONG RIGHT TACK
+ m_aMirrorMap[ 0x27DE ] = 0x27DD; // LONG LEFT TACK
+ m_aMirrorMap[ 0x27E2 ] = 0x27E3; // WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
+ m_aMirrorMap[ 0x27E3 ] = 0x27E2; // WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
+ m_aMirrorMap[ 0x27E4 ] = 0x27E5; // WHITE SQUARE WITH LEFTWARDS TICK
+ m_aMirrorMap[ 0x27E5 ] = 0x27E4; // WHITE SQUARE WITH RIGHTWARDS TICK
+ m_aMirrorMap[ 0x27E6 ] = 0x27E7; // MATHEMATICAL LEFT WHITE SQUARE BRACKET
+ m_aMirrorMap[ 0x27E7 ] = 0x27E6; // MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+ m_aMirrorMap[ 0x27E8 ] = 0x27E9; // MATHEMATICAL LEFT ANGLE BRACKET
+ m_aMirrorMap[ 0x27E9 ] = 0x27E8; // MATHEMATICAL RIGHT ANGLE BRACKET
+ m_aMirrorMap[ 0x27EA ] = 0x27EB; // MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+ m_aMirrorMap[ 0x27EB ] = 0x27EA; // MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+ m_aMirrorMap[ 0x27EC ] = 0x27ED; // MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0x27ED ] = 0x27EC; // MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0x27EE ] = 0x27EF; // MATHEMATICAL LEFT FLATTENED PARENTHESIS
+ m_aMirrorMap[ 0x27EF ] = 0x27EE; // MATHEMATICAL RIGHT FLATTENED PARENTHESIS
+ m_aMirrorMap[ 0x2983 ] = 0x2984; // LEFT WHITE CURLY BRACKET
+ m_aMirrorMap[ 0x2984 ] = 0x2983; // RIGHT WHITE CURLY BRACKET
+ m_aMirrorMap[ 0x2985 ] = 0x2986; // LEFT WHITE PARENTHESIS
+ m_aMirrorMap[ 0x2986 ] = 0x2985; // RIGHT WHITE PARENTHESIS
+ m_aMirrorMap[ 0x2987 ] = 0x2988; // Z NOTATION LEFT IMAGE BRACKET
+ m_aMirrorMap[ 0x2988 ] = 0x2987; // Z NOTATION RIGHT IMAGE BRACKET
+ m_aMirrorMap[ 0x2989 ] = 0x298A; // Z NOTATION LEFT BINDING BRACKET
+ m_aMirrorMap[ 0x298A ] = 0x2989; // Z NOTATION RIGHT BINDING BRACKET
+ m_aMirrorMap[ 0x298B ] = 0x298C; // LEFT SQUARE BRACKET WITH UNDERBAR
+ m_aMirrorMap[ 0x298C ] = 0x298B; // RIGHT SQUARE BRACKET WITH UNDERBAR
+ m_aMirrorMap[ 0x298D ] = 0x2990; // LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+ m_aMirrorMap[ 0x298E ] = 0x298F; // RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+ m_aMirrorMap[ 0x298F ] = 0x298E; // LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+ m_aMirrorMap[ 0x2990 ] = 0x298D; // RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+ m_aMirrorMap[ 0x2991 ] = 0x2992; // LEFT ANGLE BRACKET WITH DOT
+ m_aMirrorMap[ 0x2992 ] = 0x2991; // RIGHT ANGLE BRACKET WITH DOT
+ m_aMirrorMap[ 0x2993 ] = 0x2994; // LEFT ARC LESS-THAN BRACKET
+ m_aMirrorMap[ 0x2994 ] = 0x2993; // RIGHT ARC GREATER-THAN BRACKET
+ m_aMirrorMap[ 0x2995 ] = 0x2996; // DOUBLE LEFT ARC GREATER-THAN BRACKET
+ m_aMirrorMap[ 0x2996 ] = 0x2995; // DOUBLE RIGHT ARC LESS-THAN BRACKET
+ m_aMirrorMap[ 0x2997 ] = 0x2998; // LEFT BLACK TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0x2998 ] = 0x2997; // RIGHT BLACK TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0x29B8 ] = 0x2298; // CIRCLED REVERSE SOLIDUS
+ m_aMirrorMap[ 0x29C0 ] = 0x29C1; // CIRCLED LESS-THAN
+ m_aMirrorMap[ 0x29C1 ] = 0x29C0; // CIRCLED GREATER-THAN
+ m_aMirrorMap[ 0x29C4 ] = 0x29C5; // SQUARED RISING DIAGONAL SLASH
+ m_aMirrorMap[ 0x29C5 ] = 0x29C4; // SQUARED FALLING DIAGONAL SLASH
+ m_aMirrorMap[ 0x29CF ] = 0x29D0; // LEFT TRIANGLE BESIDE VERTICAL BAR
+ m_aMirrorMap[ 0x29D0 ] = 0x29CF; // VERTICAL BAR BESIDE RIGHT TRIANGLE
+ m_aMirrorMap[ 0x29D1 ] = 0x29D2; // BOWTIE WITH LEFT HALF BLACK
+ m_aMirrorMap[ 0x29D2 ] = 0x29D1; // BOWTIE WITH RIGHT HALF BLACK
+ m_aMirrorMap[ 0x29D4 ] = 0x29D5; // TIMES WITH LEFT HALF BLACK
+ m_aMirrorMap[ 0x29D5 ] = 0x29D4; // TIMES WITH RIGHT HALF BLACK
+ m_aMirrorMap[ 0x29D8 ] = 0x29D9; // LEFT WIGGLY FENCE
+ m_aMirrorMap[ 0x29D9 ] = 0x29D8; // RIGHT WIGGLY FENCE
+ m_aMirrorMap[ 0x29DA ] = 0x29DB; // LEFT DOUBLE WIGGLY FENCE
+ m_aMirrorMap[ 0x29DB ] = 0x29DA; // RIGHT DOUBLE WIGGLY FENCE
+ m_aMirrorMap[ 0x29F5 ] = 0x2215; // REVERSE SOLIDUS OPERATOR
+ m_aMirrorMap[ 0x29F8 ] = 0x29F9; // BIG SOLIDUS
+ m_aMirrorMap[ 0x29F9 ] = 0x29F8; // BIG REVERSE SOLIDUS
+ m_aMirrorMap[ 0x29FC ] = 0x29FD; // LEFT-POINTING CURVED ANGLE BRACKET
+ m_aMirrorMap[ 0x29FD ] = 0x29FC; // RIGHT-POINTING CURVED ANGLE BRACKET
+ m_aMirrorMap[ 0x2A2B ] = 0x2A2C; // MINUS SIGN WITH FALLING DOTS
+ m_aMirrorMap[ 0x2A2C ] = 0x2A2B; // MINUS SIGN WITH RISING DOTS
+ m_aMirrorMap[ 0x2A2D ] = 0x2A2E; // PLUS SIGN IN LEFT HALF CIRCLE
+ m_aMirrorMap[ 0x2A2E ] = 0x2A2D; // PLUS SIGN IN RIGHT HALF CIRCLE
+ m_aMirrorMap[ 0x2A34 ] = 0x2A35; // MULTIPLICATION SIGN IN LEFT HALF CIRCLE
+ m_aMirrorMap[ 0x2A35 ] = 0x2A34; // MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
+ m_aMirrorMap[ 0x2A3C ] = 0x2A3D; // INTERIOR PRODUCT
+ m_aMirrorMap[ 0x2A3D ] = 0x2A3C; // RIGHTHAND INTERIOR PRODUCT
+ m_aMirrorMap[ 0x2A64 ] = 0x2A65; // Z NOTATION DOMAIN ANTIRESTRICTION
+ m_aMirrorMap[ 0x2A65 ] = 0x2A64; // Z NOTATION RANGE ANTIRESTRICTION
+ m_aMirrorMap[ 0x2A79 ] = 0x2A7A; // LESS-THAN WITH CIRCLE INSIDE
+ m_aMirrorMap[ 0x2A7A ] = 0x2A79; // GREATER-THAN WITH CIRCLE INSIDE
+ m_aMirrorMap[ 0x2A7D ] = 0x2A7E; // LESS-THAN OR SLANTED EQUAL TO
+ m_aMirrorMap[ 0x2A7E ] = 0x2A7D; // GREATER-THAN OR SLANTED EQUAL TO
+ m_aMirrorMap[ 0x2A7F ] = 0x2A80; // LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+ m_aMirrorMap[ 0x2A80 ] = 0x2A7F; // GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+ m_aMirrorMap[ 0x2A81 ] = 0x2A82; // LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+ m_aMirrorMap[ 0x2A82 ] = 0x2A81; // GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+ m_aMirrorMap[ 0x2A83 ] = 0x2A84; // LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
+ m_aMirrorMap[ 0x2A84 ] = 0x2A83; // GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
+ m_aMirrorMap[ 0x2A8B ] = 0x2A8C; // LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
+ m_aMirrorMap[ 0x2A8C ] = 0x2A8B; // GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
+ m_aMirrorMap[ 0x2A91 ] = 0x2A92; // LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
+ m_aMirrorMap[ 0x2A92 ] = 0x2A91; // GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
+ m_aMirrorMap[ 0x2A93 ] = 0x2A94; // LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
+ m_aMirrorMap[ 0x2A94 ] = 0x2A93; // GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
+ m_aMirrorMap[ 0x2A95 ] = 0x2A96; // SLANTED EQUAL TO OR LESS-THAN
+ m_aMirrorMap[ 0x2A96 ] = 0x2A95; // SLANTED EQUAL TO OR GREATER-THAN
+ m_aMirrorMap[ 0x2A97 ] = 0x2A98; // SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
+ m_aMirrorMap[ 0x2A98 ] = 0x2A97; // SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
+ m_aMirrorMap[ 0x2A99 ] = 0x2A9A; // DOUBLE-LINE EQUAL TO OR LESS-THAN
+ m_aMirrorMap[ 0x2A9A ] = 0x2A99; // DOUBLE-LINE EQUAL TO OR GREATER-THAN
+ m_aMirrorMap[ 0x2A9B ] = 0x2A9C; // DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
+ m_aMirrorMap[ 0x2A9C ] = 0x2A9B; // DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
+ m_aMirrorMap[ 0x2AA1 ] = 0x2AA2; // DOUBLE NESTED LESS-THAN
+ m_aMirrorMap[ 0x2AA2 ] = 0x2AA1; // DOUBLE NESTED GREATER-THAN
+ m_aMirrorMap[ 0x2AA6 ] = 0x2AA7; // LESS-THAN CLOSED BY CURVE
+ m_aMirrorMap[ 0x2AA7 ] = 0x2AA6; // GREATER-THAN CLOSED BY CURVE
+ m_aMirrorMap[ 0x2AA8 ] = 0x2AA9; // LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+ m_aMirrorMap[ 0x2AA9 ] = 0x2AA8; // GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+ m_aMirrorMap[ 0x2AAA ] = 0x2AAB; // SMALLER THAN
+ m_aMirrorMap[ 0x2AAB ] = 0x2AAA; // LARGER THAN
+ m_aMirrorMap[ 0x2AAC ] = 0x2AAD; // SMALLER THAN OR EQUAL TO
+ m_aMirrorMap[ 0x2AAD ] = 0x2AAC; // LARGER THAN OR EQUAL TO
+ m_aMirrorMap[ 0x2AAF ] = 0x2AB0; // PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+ m_aMirrorMap[ 0x2AB0 ] = 0x2AAF; // SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+ m_aMirrorMap[ 0x2AB3 ] = 0x2AB4; // PRECEDES ABOVE EQUALS SIGN
+ m_aMirrorMap[ 0x2AB4 ] = 0x2AB3; // SUCCEEDS ABOVE EQUALS SIGN
+ m_aMirrorMap[ 0x2ABB ] = 0x2ABC; // DOUBLE PRECEDES
+ m_aMirrorMap[ 0x2ABC ] = 0x2ABB; // DOUBLE SUCCEEDS
+ m_aMirrorMap[ 0x2ABD ] = 0x2ABE; // SUBSET WITH DOT
+ m_aMirrorMap[ 0x2ABE ] = 0x2ABD; // SUPERSET WITH DOT
+ m_aMirrorMap[ 0x2ABF ] = 0x2AC0; // SUBSET WITH PLUS SIGN BELOW
+ m_aMirrorMap[ 0x2AC0 ] = 0x2ABF; // SUPERSET WITH PLUS SIGN BELOW
+ m_aMirrorMap[ 0x2AC1 ] = 0x2AC2; // SUBSET WITH MULTIPLICATION SIGN BELOW
+ m_aMirrorMap[ 0x2AC2 ] = 0x2AC1; // SUPERSET WITH MULTIPLICATION SIGN BELOW
+ m_aMirrorMap[ 0x2AC3 ] = 0x2AC4; // SUBSET OF OR EQUAL TO WITH DOT ABOVE
+ m_aMirrorMap[ 0x2AC4 ] = 0x2AC3; // SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+ m_aMirrorMap[ 0x2AC5 ] = 0x2AC6; // SUBSET OF ABOVE EQUALS SIGN
+ m_aMirrorMap[ 0x2AC6 ] = 0x2AC5; // SUPERSET OF ABOVE EQUALS SIGN
+ m_aMirrorMap[ 0x2ACD ] = 0x2ACE; // SQUARE LEFT OPEN BOX OPERATOR
+ m_aMirrorMap[ 0x2ACE ] = 0x2ACD; // SQUARE RIGHT OPEN BOX OPERATOR
+ m_aMirrorMap[ 0x2ACF ] = 0x2AD0; // CLOSED SUBSET
+ m_aMirrorMap[ 0x2AD0 ] = 0x2ACF; // CLOSED SUPERSET
+ m_aMirrorMap[ 0x2AD1 ] = 0x2AD2; // CLOSED SUBSET OR EQUAL TO
+ m_aMirrorMap[ 0x2AD2 ] = 0x2AD1; // CLOSED SUPERSET OR EQUAL TO
+ m_aMirrorMap[ 0x2AD3 ] = 0x2AD4; // SUBSET ABOVE SUPERSET
+ m_aMirrorMap[ 0x2AD4 ] = 0x2AD3; // SUPERSET ABOVE SUBSET
+ m_aMirrorMap[ 0x2AD5 ] = 0x2AD6; // SUBSET ABOVE SUBSET
+ m_aMirrorMap[ 0x2AD6 ] = 0x2AD5; // SUPERSET ABOVE SUPERSET
+ m_aMirrorMap[ 0x2ADE ] = 0x22A6; // SHORT LEFT TACK
+ m_aMirrorMap[ 0x2AE3 ] = 0x22A9; // DOUBLE VERTICAL BAR LEFT TURNSTILE
+ m_aMirrorMap[ 0x2AE4 ] = 0x22A8; // VERTICAL BAR DOUBLE LEFT TURNSTILE
+ m_aMirrorMap[ 0x2AE5 ] = 0x22AB; // DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
+ m_aMirrorMap[ 0x2AEC ] = 0x2AED; // DOUBLE STROKE NOT SIGN
+ m_aMirrorMap[ 0x2AED ] = 0x2AEC; // REVERSED DOUBLE STROKE NOT SIGN
+ m_aMirrorMap[ 0x2AF7 ] = 0x2AF8; // TRIPLE NESTED LESS-THAN
+ m_aMirrorMap[ 0x2AF8 ] = 0x2AF7; // TRIPLE NESTED GREATER-THAN
+ m_aMirrorMap[ 0x2AF9 ] = 0x2AFA; // DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
+ m_aMirrorMap[ 0x2AFA ] = 0x2AF9; // DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
+ m_aMirrorMap[ 0x2E02 ] = 0x2E03; // LEFT SUBSTITUTION BRACKET
+ m_aMirrorMap[ 0x2E03 ] = 0x2E02; // RIGHT SUBSTITUTION BRACKET
+ m_aMirrorMap[ 0x2E04 ] = 0x2E05; // LEFT DOTTED SUBSTITUTION BRACKET
+ m_aMirrorMap[ 0x2E05 ] = 0x2E04; // RIGHT DOTTED SUBSTITUTION BRACKET
+ m_aMirrorMap[ 0x2E09 ] = 0x2E0A; // LEFT TRANSPOSITION BRACKET
+ m_aMirrorMap[ 0x2E0A ] = 0x2E09; // RIGHT TRANSPOSITION BRACKET
+ m_aMirrorMap[ 0x2E0C ] = 0x2E0D; // LEFT RAISED OMISSION BRACKET
+ m_aMirrorMap[ 0x2E0D ] = 0x2E0C; // RIGHT RAISED OMISSION BRACKET
+ m_aMirrorMap[ 0x2E1C ] = 0x2E1D; // LEFT LOW PARAPHRASE BRACKET
+ m_aMirrorMap[ 0x2E1D ] = 0x2E1C; // RIGHT LOW PARAPHRASE BRACKET
+ m_aMirrorMap[ 0x2E20 ] = 0x2E21; // LEFT VERTICAL BAR WITH QUILL
+ m_aMirrorMap[ 0x2E21 ] = 0x2E20; // RIGHT VERTICAL BAR WITH QUILL
+ m_aMirrorMap[ 0x2E22 ] = 0x2E23; // TOP LEFT HALF BRACKET
+ m_aMirrorMap[ 0x2E23 ] = 0x2E22; // TOP RIGHT HALF BRACKET
+ m_aMirrorMap[ 0x2E24 ] = 0x2E25; // BOTTOM LEFT HALF BRACKET
+ m_aMirrorMap[ 0x2E25 ] = 0x2E24; // BOTTOM RIGHT HALF BRACKET
+ m_aMirrorMap[ 0x2E26 ] = 0x2E27; // LEFT SIDEWAYS U BRACKET
+ m_aMirrorMap[ 0x2E27 ] = 0x2E26; // RIGHT SIDEWAYS U BRACKET
+ m_aMirrorMap[ 0x2E28 ] = 0x2E29; // LEFT DOUBLE PARENTHESIS
+ m_aMirrorMap[ 0x2E29 ] = 0x2E28; // RIGHT DOUBLE PARENTHESIS
+ m_aMirrorMap[ 0x3008 ] = 0x3009; // LEFT ANGLE BRACKET
+ m_aMirrorMap[ 0x3009 ] = 0x3008; // RIGHT ANGLE BRACKET
+ m_aMirrorMap[ 0x300A ] = 0x300B; // LEFT DOUBLE ANGLE BRACKET
+ m_aMirrorMap[ 0x300B ] = 0x300A; // RIGHT DOUBLE ANGLE BRACKET
+ m_aMirrorMap[ 0x300C ] = 0x300D; // [BEST FIT] LEFT CORNER BRACKET
+ m_aMirrorMap[ 0x300D ] = 0x300C; // [BEST FIT] RIGHT CORNER BRACKET
+ m_aMirrorMap[ 0x300E ] = 0x300F; // [BEST FIT] LEFT WHITE CORNER BRACKET
+ m_aMirrorMap[ 0x300F ] = 0x300E; // [BEST FIT] RIGHT WHITE CORNER BRACKET
+ m_aMirrorMap[ 0x3010 ] = 0x3011; // LEFT BLACK LENTICULAR BRACKET
+ m_aMirrorMap[ 0x3011 ] = 0x3010; // RIGHT BLACK LENTICULAR BRACKET
+ m_aMirrorMap[ 0x3014 ] = 0x3015; // LEFT TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0x3015 ] = 0x3014; // RIGHT TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0x3016 ] = 0x3017; // LEFT WHITE LENTICULAR BRACKET
+ m_aMirrorMap[ 0x3017 ] = 0x3016; // RIGHT WHITE LENTICULAR BRACKET
+ m_aMirrorMap[ 0x3018 ] = 0x3019; // LEFT WHITE TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0x3019 ] = 0x3018; // RIGHT WHITE TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0x301A ] = 0x301B; // LEFT WHITE SQUARE BRACKET
+ m_aMirrorMap[ 0x301B ] = 0x301A; // RIGHT WHITE SQUARE BRACKET
+ m_aMirrorMap[ 0xFE59 ] = 0xFE5A; // SMALL LEFT PARENTHESIS
+ m_aMirrorMap[ 0xFE5A ] = 0xFE59; // SMALL RIGHT PARENTHESIS
+ m_aMirrorMap[ 0xFE5B ] = 0xFE5C; // SMALL LEFT CURLY BRACKET
+ m_aMirrorMap[ 0xFE5C ] = 0xFE5B; // SMALL RIGHT CURLY BRACKET
+ m_aMirrorMap[ 0xFE5D ] = 0xFE5E; // SMALL LEFT TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0xFE5E ] = 0xFE5D; // SMALL RIGHT TORTOISE SHELL BRACKET
+ m_aMirrorMap[ 0xFE64 ] = 0xFE65; // SMALL LESS-THAN SIGN
+ m_aMirrorMap[ 0xFE65 ] = 0xFE64; // SMALL GREATER-THAN SIGN
+ m_aMirrorMap[ 0xFF08 ] = 0xFF09; // FULLWIDTH LEFT PARENTHESIS
+ m_aMirrorMap[ 0xFF09 ] = 0xFF08; // FULLWIDTH RIGHT PARENTHESIS
+ m_aMirrorMap[ 0xFF1C ] = 0xFF1E; // FULLWIDTH LESS-THAN SIGN
+ m_aMirrorMap[ 0xFF1E ] = 0xFF1C; // FULLWIDTH GREATER-THAN SIGN
+ m_aMirrorMap[ 0xFF3B ] = 0xFF3D; // FULLWIDTH LEFT SQUARE BRACKET
+ m_aMirrorMap[ 0xFF3D ] = 0xFF3B; // FULLWIDTH RIGHT SQUARE BRACKET
+ m_aMirrorMap[ 0xFF5B ] = 0xFF5D; // FULLWIDTH LEFT CURLY BRACKET
+ m_aMirrorMap[ 0xFF5D ] = 0xFF5B; // FULLWIDTH RIGHT CURLY BRACKET
+ m_aMirrorMap[ 0xFF5F ] = 0xFF60; // FULLWIDTH LEFT WHITE PARENTHESIS
+ m_aMirrorMap[ 0xFF60 ] = 0xFF5F; // FULLWIDTH RIGHT WHITE PARENTHESIS
+ m_aMirrorMap[ 0xFF62 ] = 0xFF63; // [BEST FIT] HALFWIDTH LEFT CORNER BRACKET
+ m_aMirrorMap[ 0xFF63 ] = 0xFF62; // [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET
+ }
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/pdfiprocessor.hxx b/sdext/source/pdfimport/tree/pdfiprocessor.hxx
new file mode 100644
index 000000000000..4b66f4c31d54
--- /dev/null
+++ b/sdext/source/pdfimport/tree/pdfiprocessor.hxx
@@ -0,0 +1,309 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_PROCESSOR_HXX
+#define INCLUDED_PDFI_PROCESSOR_HXX
+
+#include "pdfihelper.hxx"
+
+#include <com/sun/star/util/XStringMapping.hpp>
+#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+#include <com/sun/star/task/XStatusIndicator.hpp>
+#include <com/sun/star/rendering/XVolatileBitmap.hpp>
+#include <com/sun/star/geometry/RealSize2D.hpp>
+#include <com/sun/star/geometry/RealPoint2D.hpp>
+#include <com/sun/star/geometry/RealRectangle2D.hpp>
+#include <com/sun/star/geometry/Matrix2D.hpp>
+
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/range/b2drange.hxx>
+
+#include <rtl/ustring.hxx>
+#include <rtl/ustrbuf.hxx>
+
+#include <boost/shared_ptr.hpp>
+#include <list>
+#include <boost/unordered_map.hpp>
+
+#include "imagecontainer.hxx"
+#include "contentsink.hxx"
+#include "treevisitorfactory.hxx"
+#include "genericelements.hxx"
+
+namespace pdfi
+{
+
+ class PDFIProcessor;
+ struct Element;
+ struct DocumentElement;
+ struct PageElement;
+ class ElementFactory;
+ class XmlEmitter;
+ class CharGlyph;
+
+ /** Main entry from the parser
+
+ Creates the internal DOM tree from the render calls
+ */
+ class PDFIProcessor : public ContentSink
+ {
+ public:
+ com::sun::star::uno::Reference<
+ com::sun::star::uno::XComponentContext > m_xContext;
+ double fYPrevTextPosition;
+ double fPrevTextHeight;
+ double fXPrevTextPosition;
+ double fPrevTextWidth;
+ enum DocumentTextDirecion { LrTb, RlTb, TbLr };
+
+ explicit PDFIProcessor( const com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator >& xStat,
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > xContext) ;
+
+ /// TEMP - enable writer-like text:p on doc level
+ void enableToplevelText();
+
+ void emit( XmlEmitter& rEmitter,
+ const TreeVisitorFactory& rVisitorFactory );
+
+ sal_Int32 getGCId( const GraphicsContext& rGC );
+ const GraphicsContext& getGraphicsContext( sal_Int32 nGCId ) const;
+ GraphicsContext& getCurrentContext() { return m_aGCStack.back(); }
+ const GraphicsContext& getCurrentContext() const { return m_aGCStack.back(); }
+
+ ImageContainer& getImages() { return m_aImages; }
+ boost::shared_ptr<ElementFactory> getElementFactory() const { return m_pElFactory; }
+
+ const com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator >& getStatusIndicator() const
+ { return m_xStatusIndicator; }
+ void setStatusIndicator( const com::sun::star::uno::Reference< com::sun::star::task::XStatusIndicator >& xStatus )
+ { m_xStatusIndicator = xStatus; }
+
+ const FontAttributes& getFont( sal_Int32 nFontId ) const;
+ sal_Int32 getFontId( const FontAttributes& rAttr ) const;
+
+ void sortElements( Element* pElement, bool bDeep = false );
+ void sortDocument( bool bDeep = false );
+
+ rtl::OUString mirrorString( const rtl::OUString& i_rInString );
+
+ private:
+ void prepareMirrorMap();
+ void processGlyphLine();
+ void processGlyph( double fPreAvarageSpaceValue,
+ CharGlyph& rGlyph,
+ ParagraphElement* pPara,
+ FrameElement* pFrame,
+ bool bIsWhiteSpaceInLine );
+
+ void drawGlyphLine( const rtl::OUString& rGlyphs,
+ const ::com::sun::star::geometry::RealRectangle2D& rRect,
+ const ::com::sun::star::geometry::Matrix2D& rFontMatrix );
+
+ void drawCharGlyphs( rtl::OUString& rGlyphs,
+ ::com::sun::star::geometry::RealRectangle2D& rRect,
+ ::com::sun::star::geometry::Matrix2D& rFontMatrix,
+ GraphicsContext aGC,
+ Element* pCurElement,
+ ParagraphElement* pPara,
+ FrameElement* pFrame,
+ bool bSpaceFlag );
+
+ GraphicsContext& getTransformGlyphContext( CharGlyph& rGlyph );
+
+ // ContentSink interface implementation
+
+ virtual void setPageNum( sal_Int32 nNumPages );
+ virtual void startPage( const ::com::sun::star::geometry::RealSize2D& rSize );
+ virtual void endPage();
+
+ virtual void hyperLink( const ::com::sun::star::geometry::RealRectangle2D& rBounds,
+ const ::rtl::OUString& rURI );
+ virtual void pushState();
+ virtual void popState();
+ virtual void setFlatness( double );
+ virtual void setTransformation( const ::com::sun::star::geometry::AffineMatrix2D& rMatrix );
+ virtual void setLineDash( const ::com::sun::star::uno::Sequence<double>& dashes,
+ double start );
+ virtual void setLineJoin(sal_Int8);
+ virtual void setLineCap(sal_Int8);
+ virtual void setMiterLimit(double);
+ virtual void setLineWidth(double);
+ virtual void setFillColor( const ::com::sun::star::rendering::ARGBColor& rColor );
+ virtual void setStrokeColor( const ::com::sun::star::rendering::ARGBColor& rColor );
+ virtual void setBlendMode(sal_Int8);
+ virtual void setFont( const FontAttributes& rFont );
+ virtual void setTextRenderMode( sal_Int32 );
+
+ virtual void strokePath( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPath );
+ virtual void fillPath( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPath );
+ virtual void eoFillPath( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPath );
+
+ virtual void intersectClip(const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPath);
+ virtual void intersectEoClip(const ::com::sun::star::uno::Reference<
+ ::com::sun::star::rendering::XPolyPolygon2D >& rPath);
+
+ virtual void drawGlyphs( const rtl::OUString& rGlyphs,
+ const ::com::sun::star::geometry::RealRectangle2D& rRect,
+ const ::com::sun::star::geometry::Matrix2D& rFontMatrix );
+ virtual void endText();
+
+ virtual void drawMask(const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xBitmap,
+ bool bInvert );
+ /// Given image must already be color-mapped and normalized to sRGB.
+ virtual void drawImage(const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xBitmap );
+ /** Given image must already be color-mapped and normalized to sRGB.
+
+ maskColors must contain two sequences of color components
+ */
+ virtual void drawColorMaskedImage(const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xBitmap,
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Any>& xMaskColors );
+ virtual void drawMaskedImage(const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xBitmap,
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xMask,
+ bool bInvertMask);
+ virtual void drawAlphaMaskedImage(const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xImage,
+ const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue>& xMask);
+
+ /// nElements == -1 means fill in number of pages
+ void startIndicator( const rtl::OUString& rText, sal_Int32 nElements = -1 );
+ void endIndicator();
+
+ void setupImage(ImageId nImage);
+
+ typedef boost::unordered_map<sal_Int32,FontAttributes> IdToFontMap;
+ typedef boost::unordered_map<FontAttributes,sal_Int32,FontAttrHash> FontToIdMap;
+
+ typedef boost::unordered_map<sal_Int32,GraphicsContext> IdToGCMap;
+ typedef boost::unordered_map<GraphicsContext,sal_Int32,GraphicsContextHash> GCToIdMap;
+
+ typedef std::vector<GraphicsContext> GraphicsContextStack;
+
+ ::basegfx::B2DRange& calcTransformedRectBounds( ::basegfx::B2DRange& outRect,
+ const ::basegfx::B2DRange& inRect,
+ const ::basegfx::B2DHomMatrix& transformation );
+ std::vector<CharGlyph> m_GlyphsList;
+
+ boost::shared_ptr<ElementFactory> m_pElFactory;
+ boost::shared_ptr<DocumentElement> m_pDocument;
+ PageElement* m_pCurPage;
+ Element* m_pCurElement;
+ sal_Int32 m_nNextFontId;
+ IdToFontMap m_aIdToFont;
+ FontToIdMap m_aFontToId;
+
+ GraphicsContextStack m_aGCStack;
+ GraphicsContext m_prev_aGC;
+ sal_Int32 m_nNextGCId;
+ IdToGCMap m_aIdToGC;
+ GCToIdMap m_aGCToId;
+
+ ImageContainer m_aImages;
+
+ DocumentTextDirecion m_eTextDirection;
+
+ sal_Int32 m_nPages;
+ sal_Int32 m_nNextZOrder;
+ double m_fWordSpace;
+ bool m_bIsWhiteSpaceInLine;
+ com::sun::star::uno::Reference<
+ com::sun::star::task::XStatusIndicator >
+ m_xStatusIndicator;
+
+ bool m_bHaveTextOnDocLevel;
+ std::vector< sal_Unicode > m_aMirrorMap;
+ com::sun::star::uno::Reference<
+ com::sun::star::util::XStringMapping >
+ m_xMirrorMapper;
+ bool m_bMirrorMapperTried;
+ };
+ class CharGlyph
+ {
+ public:
+ CharGlyph(){};
+ virtual ~CharGlyph(){};
+ rtl::OUString& getGlyph(){ return m_rGlyphs; }
+ com::sun::star::geometry::RealRectangle2D& getRect(){ return m_rRect; }
+ com::sun::star::geometry::Matrix2D& getFontMatrix(){ return m_rFontMatrix; }
+ GraphicsContext& getGC(){ return m_rCurrentContext; }
+ Element* getCurElement(){ return m_pCurElement; }
+
+ void setGlyph (const rtl::OUString& rGlyphs ){ m_rGlyphs=rGlyphs; }
+ void setRect (const ::com::sun::star::geometry::RealRectangle2D& rRect ){ m_rRect=rRect; }
+ void setFontMatrix (const ::com::sun::star::geometry::Matrix2D& rFontMatrix ){ m_rFontMatrix= rFontMatrix; }
+ void setGraphicsContext (GraphicsContext& rCurrentContext ){ m_rCurrentContext= rCurrentContext; }
+ void setCurElement( Element* pCurElement ){ m_pCurElement= pCurElement; }
+
+ double getYPrevGlyphPosition() const { return m_fYPrevGlyphPosition; }
+ double getXPrevGlyphPosition() const { return m_fXPrevGlyphPosition; }
+ double getPrevGlyphHeight() const { return m_fPrevGlyphHeight; }
+ double getPrevGlyphWidth () const { return m_fPrevGlyphWidth; }
+ double getPrevGlyphsSpace() const
+ {
+ if( (m_rRect.X1-m_fXPrevGlyphPosition)<0 )
+ return 0;
+ else
+ return m_rRect.X1-m_fXPrevGlyphPosition;
+ }
+
+ void setYPrevGlyphPosition( double fYPrevTextPosition ){ m_fYPrevGlyphPosition= fYPrevTextPosition; }
+ void setXPrevGlyphPosition( double fXPrevTextPosition ){ m_fXPrevGlyphPosition= fXPrevTextPosition; }
+ void setPrevGlyphHeight ( double fPrevTextHeight ){ m_fPrevGlyphHeight= fPrevTextHeight; }
+ void setPrevGlyphWidth ( double fPrevTextWidth ){ m_fPrevGlyphWidth= fPrevTextWidth; }
+
+ private:
+
+ double m_fYPrevGlyphPosition ;
+ double m_fXPrevGlyphPosition ;
+ double m_fPrevGlyphHeight ;
+ double m_fPrevGlyphWidth ;
+ Element* m_pCurElement ;
+ GraphicsContext m_rCurrentContext ;
+ com::sun::star::geometry::Matrix2D m_rFontMatrix ;
+ com::sun::star::geometry::RealRectangle2D m_rRect ;
+ rtl::OUString m_rGlyphs ;
+ };
+}
+
+#define USTR(x) rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( x ) )
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/style.cxx b/sdext/source/pdfimport/tree/style.cxx
new file mode 100644
index 000000000000..c4068def4307
--- /dev/null
+++ b/sdext/source/pdfimport/tree/style.cxx
@@ -0,0 +1,262 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "style.hxx"
+#include "genericelements.hxx"
+#include "xmlemitter.hxx"
+#include "pdfiprocessor.hxx"
+#include <rtl/ustrbuf.hxx>
+
+#include <algorithm>
+
+using namespace pdfi;
+
+using ::rtl::OUString;
+using ::rtl::OUStringBuffer;
+
+#define USTR(x) rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( x ) )
+
+StyleContainer::StyleContainer() :
+ m_nNextId( 1 )
+{
+}
+
+sal_Int32 StyleContainer::impl_getStyleId( const Style& rStyle, bool bSubStyle )
+{
+ sal_Int32 nRet = -1;
+
+ // construct HashedStyle to find or insert
+ HashedStyle aSearchStyle;
+ aSearchStyle.Name = rStyle.Name;
+ aSearchStyle.Properties = rStyle.Properties;
+ aSearchStyle.Contents = rStyle.Contents;
+ aSearchStyle.ContainedElement = rStyle.ContainedElement;
+ for( unsigned int n = 0; n < rStyle.SubStyles.size(); ++n )
+ aSearchStyle.SubStyles.push_back( impl_getStyleId( *rStyle.SubStyles[n], true ) );
+
+ boost::unordered_map< HashedStyle, sal_Int32, StyleHash >::iterator it =
+ m_aStyleToId.find( aSearchStyle );
+
+ if( it != m_aStyleToId.end() )
+ {
+ nRet = it->second;
+ HashedStyle& rFound = m_aIdToStyle[ nRet ];
+ // increase refcount on this style
+ rFound.RefCount++;
+ if( ! bSubStyle )
+ rFound.IsSubStyle = false;
+ }
+ else
+ {
+ nRet = m_nNextId++;
+ // create new style
+ HashedStyle& rNew = m_aIdToStyle[ nRet ];
+ rNew = aSearchStyle;
+ rNew.RefCount = 1;
+ rNew.IsSubStyle = bSubStyle;
+ // fill the style hash to find the id
+ m_aStyleToId[ rNew ] = nRet;
+ }
+ return nRet;
+}
+
+sal_Int32 StyleContainer::getStandardStyleId( const rtl::OString& rName )
+{
+ PropertyMap aProps;
+ aProps[ USTR( "style:family" ) ] = rtl::OStringToOUString( rName, RTL_TEXTENCODING_UTF8 );
+ aProps[ USTR( "style:name" ) ] = USTR( "standard" );
+
+ Style aStyle( "style:style", aProps );
+ return getStyleId( aStyle );
+}
+
+const PropertyMap* StyleContainer::getProperties( sal_Int32 nStyleId ) const
+{
+ boost::unordered_map< sal_Int32, HashedStyle >::const_iterator it =
+ m_aIdToStyle.find( nStyleId );
+ return it != m_aIdToStyle.end() ? &(it->second.Properties) : NULL;
+}
+
+sal_Int32 StyleContainer::setProperties( sal_Int32 nStyleId, const PropertyMap& rNewProps )
+{
+ sal_Int32 nRet = -1;
+ boost::unordered_map< sal_Int32, HashedStyle >::iterator it =
+ m_aIdToStyle.find( nStyleId );
+ if( it != m_aIdToStyle.end() )
+ {
+ if( it->second.RefCount == 1 )
+ {
+ nRet = it->first;
+ // erase old hash to id mapping
+ m_aStyleToId.erase( it->second );
+ // change properties
+ it->second.Properties = rNewProps;
+ // fill in new hash to id mapping
+ m_aStyleToId[ it->second ] = nRet;
+ }
+ else
+ {
+ // decrease refcound on old instance
+ it->second.RefCount--;
+ // acquire new HashedStyle
+ HashedStyle aSearchStyle;
+ aSearchStyle.Name = it->second.Name;
+ aSearchStyle.Properties = rNewProps;
+ aSearchStyle.Contents = it->second.Contents;
+ aSearchStyle.ContainedElement = it->second.ContainedElement;
+ aSearchStyle.SubStyles = it->second.SubStyles;
+ aSearchStyle.IsSubStyle = it->second.IsSubStyle;
+
+ // find out whether this new style already exists
+ boost::unordered_map< HashedStyle, sal_Int32, StyleHash >::iterator new_it =
+ m_aStyleToId.find( aSearchStyle );
+ if( new_it != m_aStyleToId.end() )
+ {
+ nRet = new_it->second;
+ m_aIdToStyle[ nRet ].RefCount++;
+ }
+ else
+ {
+ nRet = m_nNextId++;
+ // create new style with new id
+ HashedStyle& rNew = m_aIdToStyle[ nRet ];
+ rNew = aSearchStyle;
+ rNew.RefCount = 1;
+ // fill style to id hash
+ m_aStyleToId[ aSearchStyle ] = nRet;
+ }
+ }
+ }
+ return nRet;
+}
+
+OUString StyleContainer::getStyleName( sal_Int32 nStyle ) const
+{
+ OUStringBuffer aRet( 64 );
+
+ boost::unordered_map< sal_Int32, HashedStyle >::const_iterator style_it =
+ m_aIdToStyle.find( nStyle );
+ if( style_it != m_aIdToStyle.end() )
+ {
+ const HashedStyle& rStyle = style_it->second;
+
+ PropertyMap::const_iterator name_it = rStyle.Properties.find( USTR("style:name") );
+ if( name_it != rStyle.Properties.end() )
+ aRet.append( name_it->second );
+ else
+ {
+ PropertyMap::const_iterator fam_it = rStyle.Properties.find( USTR("style:family" ) );
+ OUString aStyleName;
+ if( fam_it != rStyle.Properties.end() )
+ {
+ aStyleName = fam_it->second;
+ }
+ else
+ aStyleName = OStringToOUString( rStyle.Name, RTL_TEXTENCODING_ASCII_US );
+ sal_Int32 nIndex = aStyleName.lastIndexOf( ':' );
+ aRet.append( aStyleName.copy( nIndex+1 ) );
+ aRet.append( nStyle );
+ }
+ }
+ else
+ {
+ aRet.appendAscii( "invalid style id " );
+ aRet.append( nStyle );
+ }
+
+ return aRet.makeStringAndClear();
+}
+
+void StyleContainer::impl_emitStyle( sal_Int32 nStyleId,
+ EmitContext& rContext,
+ ElementTreeVisitor& rContainedElemVisitor )
+{
+ boost::unordered_map< sal_Int32, HashedStyle >::const_iterator it = m_aIdToStyle.find( nStyleId );
+ if( it != m_aIdToStyle.end() )
+ {
+ const HashedStyle& rStyle = it->second;
+ PropertyMap aProps( rStyle.Properties );
+ if( !rStyle.IsSubStyle )
+ aProps[ USTR( "style:name" ) ] = getStyleName( nStyleId );
+ rContext.rEmitter.beginTag( rStyle.Name.getStr(), aProps );
+
+ for( unsigned int n = 0; n < rStyle.SubStyles.size(); ++n )
+ impl_emitStyle( rStyle.SubStyles[n], rContext, rContainedElemVisitor );
+ if( rStyle.Contents.getLength() )
+ rContext.rEmitter.write( rStyle.Contents );
+ if( rStyle.ContainedElement )
+ rStyle.ContainedElement->visitedBy( rContainedElemVisitor,
+ std::list<Element*>::iterator() );
+ rContext.rEmitter.endTag( rStyle.Name.getStr() );
+ }
+}
+
+void StyleContainer::emit( EmitContext& rContext,
+ ElementTreeVisitor& rContainedElemVisitor )
+{
+ std::vector< sal_Int32 > aMasterPageSection, aAutomaticStyleSection, aOfficeStyleSection;
+ for( boost::unordered_map< sal_Int32, HashedStyle >::iterator it = m_aIdToStyle.begin();
+ it != m_aIdToStyle.end(); ++it )
+ {
+ if( ! it->second.IsSubStyle )
+ {
+ if( it->second.Name.equals( "style:master-page" ) )
+ aMasterPageSection.push_back( it->first );
+ else if( getStyleName( it->first ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "standard" ) ) )
+ aOfficeStyleSection.push_back( it->first );
+ else
+ aAutomaticStyleSection.push_back( it->first );
+ }
+ }
+
+ if( ! aMasterPageSection.empty() )
+ std::stable_sort( aMasterPageSection.begin(), aMasterPageSection.end(), StyleIdNameSort(&m_aIdToStyle) );
+ if( ! aAutomaticStyleSection.empty() )
+ std::stable_sort( aAutomaticStyleSection.begin(), aAutomaticStyleSection.end(), StyleIdNameSort(&m_aIdToStyle) );
+ if( ! aOfficeStyleSection.empty() )
+ std::stable_sort( aOfficeStyleSection.begin(), aOfficeStyleSection.end(), StyleIdNameSort(&m_aIdToStyle) );
+
+ int n = 0, nElements = 0;
+ rContext.rEmitter.beginTag( "office:styles", PropertyMap() );
+ for( n = 0, nElements = aOfficeStyleSection.size(); n < nElements; n++ )
+ impl_emitStyle( aOfficeStyleSection[n], rContext, rContainedElemVisitor );
+ rContext.rEmitter.endTag( "office:styles" );
+ rContext.rEmitter.beginTag( "office:automatic-styles", PropertyMap() );
+ for( n = 0, nElements = aAutomaticStyleSection.size(); n < nElements; n++ )
+ impl_emitStyle( aAutomaticStyleSection[n], rContext, rContainedElemVisitor );
+ rContext.rEmitter.endTag( "office:automatic-styles" );
+ rContext.rEmitter.beginTag( "office:master-styles", PropertyMap() );
+ for( n = 0, nElements = aMasterPageSection.size(); n < nElements; n++ )
+ impl_emitStyle( aMasterPageSection[n], rContext, rContainedElemVisitor );
+ rContext.rEmitter.endTag( "office:master-styles" );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/style.hxx b/sdext/source/pdfimport/tree/style.hxx
new file mode 100644
index 000000000000..17ee2e210661
--- /dev/null
+++ b/sdext/source/pdfimport/tree/style.hxx
@@ -0,0 +1,184 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_STYLE_HXX
+#define INCLUDED_PDFI_STYLE_HXX
+
+#include "pdfihelper.hxx"
+#include <boost/unordered_map.hpp>
+#include <vector>
+#include <rtl/ustring.hxx>
+#include <rtl/string.hxx>
+#include "treevisiting.hxx"
+
+namespace pdfi
+{
+ struct Element;
+ struct EmitContext;
+ struct ElementTreeVisitable;
+
+ class StyleContainer
+ {
+ public:
+ struct Style
+ {
+ rtl::OString Name;
+ PropertyMap Properties;
+ rtl::OUString Contents;
+ Element* ContainedElement;
+ std::vector< Style* > SubStyles;
+
+ Style() : ContainedElement( NULL ) {}
+ Style( const rtl::OString& rName, const PropertyMap& rProps ) :
+ Name( rName ),
+ Properties( rProps ),
+ ContainedElement( NULL )
+ {}
+ };
+
+ private:
+ struct HashedStyle
+ {
+ rtl::OString Name;
+ PropertyMap Properties;
+ rtl::OUString Contents;
+ Element* ContainedElement;
+ std::vector<sal_Int32> SubStyles;
+
+ bool IsSubStyle;
+ sal_Int32 RefCount;
+
+ HashedStyle() : ContainedElement( NULL ), IsSubStyle( true ), RefCount( 0 ) {}
+
+ HashedStyle( const HashedStyle& rRight ) :
+ Name( rRight.Name ),
+ Properties( rRight.Properties ),
+ Contents( rRight.Contents ),
+ ContainedElement( rRight.ContainedElement ),
+ SubStyles( rRight.SubStyles ),
+ IsSubStyle( rRight.IsSubStyle ),
+ RefCount( 0 )
+ {}
+
+ size_t hashCode() const
+ {
+ size_t nRet = size_t(Name.hashCode());
+ for( PropertyMap::const_iterator it = Properties.begin();
+ it != Properties.end(); ++it )
+ {
+ nRet ^= size_t(it->first.hashCode());
+ nRet ^= size_t(it->second.hashCode());
+ }
+ nRet = size_t(Contents.hashCode());
+ nRet ^= size_t(ContainedElement);
+ for( unsigned int n = 0; n < SubStyles.size(); ++n )
+ nRet ^= size_t(SubStyles[n]);
+ return nRet;
+ }
+
+ bool operator==(const HashedStyle& rRight) const
+ {
+ if( Name != rRight.Name ||
+ Properties != rRight.Properties ||
+ Contents != rRight.Contents ||
+ ContainedElement != rRight.ContainedElement ||
+ SubStyles.size() != rRight.SubStyles.size()
+ )
+ return false;
+ for( unsigned int n = 0; n < SubStyles.size(); ++n )
+ {
+ if( SubStyles[n] != rRight.SubStyles[n] )
+ return false;
+ }
+ return true;
+ }
+ };
+
+ struct StyleHash;
+ friend struct StyleHash;
+ struct StyleHash
+ {
+ size_t operator()( const StyleContainer::HashedStyle& rStyle ) const
+ {
+ return rStyle.hashCode();
+ }
+ };
+
+ struct StyleIdNameSort;
+ friend struct StyleIdNameSort;
+ struct StyleIdNameSort
+ {
+ const boost::unordered_map< sal_Int32, HashedStyle >* m_pMap;
+
+ StyleIdNameSort( const boost::unordered_map< sal_Int32, HashedStyle >* pMap ) :
+ m_pMap(pMap)
+ {}
+ bool operator()( sal_Int32 nLeft, sal_Int32 nRight )
+ {
+ const boost::unordered_map< sal_Int32, HashedStyle >::const_iterator left_it =
+ m_pMap->find( nLeft );
+ const boost::unordered_map< sal_Int32, HashedStyle >::const_iterator right_it =
+ m_pMap->find( nRight );
+ if( left_it == m_pMap->end() )
+ return false;
+ else if( right_it == m_pMap->end() )
+ return true;
+ else
+ return left_it->second.Name < right_it->second.Name;
+ }
+ };
+
+ sal_Int32 m_nNextId;
+ boost::unordered_map< sal_Int32, HashedStyle > m_aIdToStyle;
+ boost::unordered_map< HashedStyle, sal_Int32, StyleHash > m_aStyleToId;
+
+ void impl_emitStyle( sal_Int32 nStyleId,
+ EmitContext& rContext,
+ ElementTreeVisitor& rContainedElemVisitor );
+
+ public:
+ StyleContainer();
+
+ void emit( EmitContext& rContext,
+ ElementTreeVisitor& rContainedElemVisitor );
+
+ sal_Int32 impl_getStyleId( const Style& rStyle, bool bSubStyle );
+ sal_Int32 getStyleId( const Style& rStyle )
+ { return impl_getStyleId( rStyle, false ); }
+ sal_Int32 getStandardStyleId( const rtl::OString& rFamily );
+
+ // returns NULL for an invalid style id
+ const PropertyMap* getProperties( sal_Int32 nStyleId ) const;
+ sal_Int32 setProperties( sal_Int32 nStyleId, const PropertyMap &rNewProps );
+ rtl::OUString getStyleName( sal_Int32 nStyle ) const;
+ };
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/treevisiting.hxx b/sdext/source/pdfimport/tree/treevisiting.hxx
new file mode 100644
index 000000000000..b62340a7b9f8
--- /dev/null
+++ b/sdext/source/pdfimport/tree/treevisiting.hxx
@@ -0,0 +1,83 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_TREEVISITING_HXX
+#define INCLUDED_PDFI_TREEVISITING_HXX
+
+#include <sal/config.h>
+#include <list>
+
+
+namespace pdfi
+{
+ class PDFIProcessor;
+ class StyleContainer;
+ struct HyperlinkElement;
+ struct TextElement;
+ struct ParagraphElement;
+ struct FrameElement;
+ struct PolyPolyElement;
+ struct ImageElement;
+ struct PageElement;
+ struct DocumentElement;
+ struct EmitContext;
+ struct Element;
+
+ /** To be visited by all tree element types
+
+ Visitor interface from the "visitor pattern". Implementor gets
+ called with actual tree node instances.
+ */
+ struct ElementTreeVisitor
+ {
+ virtual void visit( HyperlinkElement&, const std::list< Element* >::const_iterator& ) = 0;
+ virtual void visit( TextElement&, const std::list< Element* >::const_iterator& ) = 0;
+ virtual void visit( ParagraphElement&, const std::list< Element* >::const_iterator& ) = 0;
+ virtual void visit( FrameElement&, const std::list< Element* >::const_iterator& ) = 0;
+ virtual void visit( PolyPolyElement&, const std::list< Element* >::const_iterator& ) = 0;
+ virtual void visit( ImageElement&, const std::list< Element* >::const_iterator& ) = 0;
+ virtual void visit( PageElement&, const std::list< Element* >::const_iterator& ) = 0;
+ virtual void visit( DocumentElement&, const std::list< Element* >::const_iterator& ) = 0;
+ };
+ typedef boost::shared_ptr<ElementTreeVisitor> ElementTreeVisitorSharedPtr;
+
+ /** Visitee interface
+
+ To be implemented by every tree node that needs to be
+ visitable.
+ */
+ struct ElementTreeVisitable
+ {
+ virtual void visitedBy( ElementTreeVisitor&, const std::list< Element* >::const_iterator& rParentIt ) = 0;
+ };
+ typedef boost::shared_ptr<ElementTreeVisitable> ElementTreeVisitableSharedPtr;
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/treevisitorfactory.cxx b/sdext/source/pdfimport/tree/treevisitorfactory.cxx
new file mode 100644
index 000000000000..e2fc36c5f6b0
--- /dev/null
+++ b/sdext/source/pdfimport/tree/treevisitorfactory.cxx
@@ -0,0 +1,124 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "treevisitorfactory.hxx"
+#include "writertreevisiting.hxx"
+#include "drawtreevisiting.hxx"
+
+namespace pdfi
+{
+ struct WriterTreeVisitorFactory : public TreeVisitorFactory
+ {
+ WriterTreeVisitorFactory() {}
+
+ virtual boost::shared_ptr<ElementTreeVisitor> createOptimizingVisitor(PDFIProcessor& rProc) const
+ {
+ return boost::shared_ptr<ElementTreeVisitor>(new WriterXmlOptimizer(rProc));
+ }
+
+ virtual boost::shared_ptr<ElementTreeVisitor> createStyleCollectingVisitor(
+ StyleContainer& rStyles,
+ PDFIProcessor& rProc ) const
+ {
+ return boost::shared_ptr<ElementTreeVisitor>(new WriterXmlFinalizer(rStyles,rProc));
+ }
+
+ virtual boost::shared_ptr<ElementTreeVisitor> createEmittingVisitor(EmitContext& rEmitContext, PDFIProcessor&) const
+ {
+ return boost::shared_ptr<ElementTreeVisitor>(new WriterXmlEmitter(rEmitContext));
+ }
+ };
+
+ struct ImpressTreeVisitorFactory : public TreeVisitorFactory
+ {
+ ImpressTreeVisitorFactory() {}
+
+ virtual boost::shared_ptr<ElementTreeVisitor> createOptimizingVisitor(PDFIProcessor& rProc) const
+ {
+ return boost::shared_ptr<ElementTreeVisitor>(new DrawXmlOptimizer(rProc));
+ }
+
+ virtual boost::shared_ptr<ElementTreeVisitor> createStyleCollectingVisitor(
+ StyleContainer& rStyles,
+ PDFIProcessor& rProc ) const
+ {
+ return boost::shared_ptr<ElementTreeVisitor>(new DrawXmlFinalizer(rStyles,rProc));
+ }
+
+ virtual boost::shared_ptr<ElementTreeVisitor> createEmittingVisitor(EmitContext& rEmitContext, PDFIProcessor& rProc) const
+ {
+ return boost::shared_ptr<ElementTreeVisitor>(new DrawXmlEmitter(rEmitContext,
+ DrawXmlEmitter::IMPRESS_DOC,
+ rProc
+ ));
+ }
+ };
+
+ struct DrawTreeVisitorFactory : public TreeVisitorFactory
+ {
+ DrawTreeVisitorFactory() {}
+
+ virtual boost::shared_ptr<ElementTreeVisitor> createOptimizingVisitor(PDFIProcessor& rProc) const
+ {
+ return boost::shared_ptr<ElementTreeVisitor>(new DrawXmlOptimizer(rProc));
+ }
+
+ virtual boost::shared_ptr<ElementTreeVisitor> createStyleCollectingVisitor(
+ StyleContainer& rStyles,
+ PDFIProcessor& rProc ) const
+ {
+ return boost::shared_ptr<ElementTreeVisitor>(new DrawXmlFinalizer(rStyles,rProc));
+ }
+
+ virtual boost::shared_ptr<ElementTreeVisitor> createEmittingVisitor(EmitContext& rEmitContext, PDFIProcessor& rProc) const
+ {
+ return boost::shared_ptr<ElementTreeVisitor>(new DrawXmlEmitter(rEmitContext,
+ DrawXmlEmitter::DRAW_DOC,
+ rProc
+ ));
+ }
+ };
+
+ TreeVisitorFactorySharedPtr createWriterTreeVisitorFactory()
+ {
+ return TreeVisitorFactorySharedPtr(new WriterTreeVisitorFactory());
+ }
+ TreeVisitorFactorySharedPtr createImpressTreeVisitorFactory()
+ {
+ return TreeVisitorFactorySharedPtr(new ImpressTreeVisitorFactory());
+ }
+ TreeVisitorFactorySharedPtr createDrawTreeVisitorFactory()
+ {
+ return TreeVisitorFactorySharedPtr(new DrawTreeVisitorFactory());
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/writertreevisiting.cxx b/sdext/source/pdfimport/tree/writertreevisiting.cxx
new file mode 100644
index 000000000000..f01fb959136d
--- /dev/null
+++ b/sdext/source/pdfimport/tree/writertreevisiting.cxx
@@ -0,0 +1,1221 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "pdfiprocessor.hxx"
+#include "xmlemitter.hxx"
+#include "pdfihelper.hxx"
+#include "imagecontainer.hxx"
+#include "style.hxx"
+#include "writertreevisiting.hxx"
+#include "genericelements.hxx"
+
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/range/b2drange.hxx>
+
+
+namespace pdfi
+{
+
+void WriterXmlEmitter::visit( HyperlinkElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( elem.Children.empty() )
+ return;
+
+ const char* pType = dynamic_cast<DrawElement*>(elem.Children.front()) ? "draw:a" : "text:a";
+
+ PropertyMap aProps;
+ aProps[ USTR( "xlink:type" ) ] = USTR( "simple" );
+ aProps[ USTR( "xlink:href" ) ] = elem.URI;
+ aProps[ USTR( "office:target-frame-name" ) ] = USTR( "_blank" );
+ aProps[ USTR( "xlink:show" ) ] = USTR( "new" );
+
+ m_rEmitContext.rEmitter.beginTag( pType, aProps );
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+ m_rEmitContext.rEmitter.endTag( pType );
+}
+
+void WriterXmlEmitter::visit( TextElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( ! elem.Text.getLength() )
+ return;
+
+ PropertyMap aProps;
+ if( elem.StyleId != -1 )
+ {
+ aProps[ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "text:style-name" ) ) ] =
+ m_rEmitContext.rStyles.getStyleName( elem.StyleId );
+ }
+
+ m_rEmitContext.rEmitter.beginTag( "text:span", aProps );
+ m_rEmitContext.rEmitter.write( elem.Text.makeStringAndClear() );
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+
+ m_rEmitContext.rEmitter.endTag( "text:span" );
+}
+
+void WriterXmlEmitter::visit( ParagraphElement& elem, const std::list< Element* >::const_iterator& )
+{
+ PropertyMap aProps;
+ if( elem.StyleId != -1 )
+ {
+ aProps[ USTR( "text:style-name" ) ] = m_rEmitContext.rStyles.getStyleName( elem.StyleId );
+ }
+ const char* pTagType = "text:p";
+ if( elem.Type == elem.Headline )
+ pTagType = "text:h";
+ m_rEmitContext.rEmitter.beginTag( pTagType, aProps );
+
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+
+ m_rEmitContext.rEmitter.endTag( pTagType );
+}
+
+void WriterXmlEmitter::fillFrameProps( DrawElement& rElem,
+ PropertyMap& rProps,
+ const EmitContext& rEmitContext )
+{
+ double rel_x = rElem.x, rel_y = rElem.y;
+
+ // find anchor type by recursing though parents
+ Element* pAnchor = rElem.Parent;
+ while( pAnchor &&
+ ! dynamic_cast<ParagraphElement*>(pAnchor) &&
+ ! dynamic_cast<PageElement*>(pAnchor) )
+ {
+ pAnchor = pAnchor->Parent;
+ }
+ if( pAnchor )
+ {
+ if( dynamic_cast<ParagraphElement*>(pAnchor) )
+ {
+ rProps[ USTR( "text:anchor-type" ) ] =
+ rElem.isCharacter ? USTR( "character" ) : USTR( "paragraph" );
+ }
+ else
+ {
+ PageElement* pPage = dynamic_cast<PageElement*>(pAnchor);
+ rProps[ USTR( "text:anchor-type" ) ] = USTR( "page" );
+ rProps[ USTR( "text:anchor-page-number" ) ] = rtl::OUString::valueOf(pPage->PageNumber);
+ }
+ rel_x -= pAnchor->x;
+ rel_y -= pAnchor->y;
+ }
+
+ rProps[ USTR( "draw:z-index" ) ] = rtl::OUString::valueOf( rElem.ZOrder );
+ rProps[ USTR( "draw:style-name" )] = rEmitContext.rStyles.getStyleName( rElem.StyleId );
+ rProps[ USTR( "svg:width" ) ] = convertPixelToUnitString( rElem.w );
+ rProps[ USTR( "svg:height" ) ] = convertPixelToUnitString( rElem.h );
+
+ const GraphicsContext& rGC =
+ rEmitContext.rProcessor.getGraphicsContext( rElem.GCId );
+ if( rGC.Transformation.isIdentity() )
+ {
+ if( !rElem.isCharacter )
+ {
+ rProps[ USTR( "svg:x" ) ] = convertPixelToUnitString( rel_x );
+ rProps[ USTR( "svg:y" ) ] = convertPixelToUnitString( rel_y );
+ }
+ }
+ else
+ {
+ basegfx::B2DTuple aScale, aTranslation;
+ double fRotate, fShearX;
+
+ rGC.Transformation.decompose( aScale, aTranslation, fRotate, fShearX );
+
+ rtl::OUStringBuffer aBuf( 256 );
+
+ // TODO(F2): general transformation case missing; if implemented, note
+ // that ODF rotation is oriented the other way
+
+ // build transformation string
+ if( fShearX != 0.0 )
+ {
+ aBuf.appendAscii( "skewX( " );
+ aBuf.append( fShearX );
+ aBuf.appendAscii( " )" );
+ }
+ if( fRotate != 0.0 )
+ {
+ if( aBuf.getLength() > 0 )
+ aBuf.append( sal_Unicode(' ') );
+ aBuf.appendAscii( "rotate( " );
+ aBuf.append( -fRotate );
+ aBuf.appendAscii( " )" );
+
+ }
+ if( ! rElem.isCharacter )
+ {
+ if( aBuf.getLength() > 0 )
+ aBuf.append( sal_Unicode(' ') );
+ aBuf.appendAscii( "translate( " );
+ aBuf.append( convertPixelToUnitString( rel_x ) );
+ aBuf.append( sal_Unicode(' ') );
+ aBuf.append( convertPixelToUnitString( rel_y ) );
+ aBuf.appendAscii( " )" );
+ }
+
+ rProps[ USTR( "draw:transform" ) ] = aBuf.makeStringAndClear();
+ }
+}
+
+void WriterXmlEmitter::visit( FrameElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( elem.Children.empty() )
+ return;
+
+ bool bTextBox = (dynamic_cast<ParagraphElement*>(elem.Children.front()) != NULL);
+ PropertyMap aFrameProps;
+ fillFrameProps( elem, aFrameProps, m_rEmitContext );
+ m_rEmitContext.rEmitter.beginTag( "draw:frame", aFrameProps );
+ if( bTextBox )
+ m_rEmitContext.rEmitter.beginTag( "draw:text-box", PropertyMap() );
+
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+
+ if( bTextBox )
+ m_rEmitContext.rEmitter.endTag( "draw:text-box" );
+ m_rEmitContext.rEmitter.endTag( "draw:frame" );
+}
+
+void WriterXmlEmitter::visit( PolyPolyElement& elem, const std::list< Element* >::const_iterator& )
+{
+ elem.updateGeometry();
+ /* note:
+ * aw recommends using 100dth of mm in all respects since the xml import
+ * (a) is buggy (see issue 37213)
+ * (b) is optimized for 100dth of mm and does not scale itself then,
+ * this does not gain us speed but makes for smaller rounding errors since
+ * the xml importer coordinates are integer based
+ */
+ for (sal_uInt32 i = 0; i< elem.PolyPoly.count(); i++)
+ {
+ basegfx::B2DPolygon b2dPolygon;
+ b2dPolygon = elem.PolyPoly.getB2DPolygon( i );
+
+ for ( sal_uInt32 j = 0; j< b2dPolygon.count(); j++ )
+ {
+ basegfx::B2DPoint point;
+ basegfx::B2DPoint nextPoint;
+ point = b2dPolygon.getB2DPoint( j );
+
+ basegfx::B2DPoint prevPoint;
+ prevPoint = b2dPolygon.getPrevControlPoint( j ) ;
+
+ point.setX( convPx2mmPrec2( point.getX() )*100.0 );
+ point.setY( convPx2mmPrec2( point.getY() )*100.0 );
+
+ if ( b2dPolygon.isPrevControlPointUsed( j ) )
+ {
+ prevPoint.setX( convPx2mmPrec2( prevPoint.getX() )*100.0 );
+ prevPoint.setY( convPx2mmPrec2( prevPoint.getY() )*100.0 );
+ }
+
+ if ( b2dPolygon.isNextControlPointUsed( j ) )
+ {
+ nextPoint = b2dPolygon.getNextControlPoint( j ) ;
+ nextPoint.setX( convPx2mmPrec2( nextPoint.getX() )*100.0 );
+ nextPoint.setY( convPx2mmPrec2( nextPoint.getY() )*100.0 );
+ }
+
+ b2dPolygon.setB2DPoint( j, point );
+
+ if ( b2dPolygon.isPrevControlPointUsed( j ) )
+ b2dPolygon.setPrevControlPoint( j , prevPoint ) ;
+
+ if ( b2dPolygon.isNextControlPointUsed( j ) )
+ b2dPolygon.setNextControlPoint( j , nextPoint ) ;
+ }
+
+ elem.PolyPoly.setB2DPolygon( i, b2dPolygon );
+ }
+
+ PropertyMap aProps;
+ fillFrameProps( elem, aProps, m_rEmitContext );
+ rtl::OUStringBuffer aBuf( 64 );
+ aBuf.appendAscii( "0 0 " );
+ aBuf.append( convPx2mmPrec2(elem.w)*100.0 );
+ aBuf.append( sal_Unicode(' ') );
+ aBuf.append( convPx2mmPrec2(elem.h)*100.0 );
+ aProps[ USTR( "svg:viewBox" ) ] = aBuf.makeStringAndClear();
+ aProps[ USTR( "svg:d" ) ] = basegfx::tools::exportToSvgD( elem.PolyPoly );
+
+ m_rEmitContext.rEmitter.beginTag( "draw:path", aProps );
+ m_rEmitContext.rEmitter.endTag( "draw:path" );
+}
+
+void WriterXmlEmitter::visit( ImageElement& elem, const std::list< Element* >::const_iterator& )
+{
+ PropertyMap aImageProps;
+ m_rEmitContext.rEmitter.beginTag( "draw:image", aImageProps );
+ m_rEmitContext.rEmitter.beginTag( "office:binary-data", PropertyMap() );
+ m_rEmitContext.rImages.writeBase64EncodedStream( elem.Image, m_rEmitContext);
+ m_rEmitContext.rEmitter.endTag( "office:binary-data" );
+ m_rEmitContext.rEmitter.endTag( "draw:image" );
+}
+
+void WriterXmlEmitter::visit( PageElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( m_rEmitContext.xStatusIndicator.is() )
+ m_rEmitContext.xStatusIndicator->setValue( elem.PageNumber );
+
+ std::list< Element* >::iterator this_it = elem.Children.begin();
+ while( this_it !=elem.Children.end() && *this_it != &elem )
+ {
+ (*this_it)->visitedBy( *this, this_it );
+ ++this_it;
+ }
+}
+
+void WriterXmlEmitter::visit( DocumentElement& elem, const std::list< Element* >::const_iterator&)
+{
+ m_rEmitContext.rEmitter.beginTag( "office:body", PropertyMap() );
+ m_rEmitContext.rEmitter.beginTag( "office:text", PropertyMap() );
+
+ for( std::list< Element* >::iterator it = elem.Children.begin(); it != elem.Children.end(); ++it )
+ {
+ PageElement* pPage = dynamic_cast<PageElement*>(*it);
+ if( pPage )
+ {
+ // emit only page anchored objects
+ // currently these are only DrawElement types
+ for( std::list< Element* >::iterator child_it = pPage->Children.begin(); child_it != pPage->Children.end(); ++child_it )
+ {
+ if( dynamic_cast<DrawElement*>(*child_it) != NULL )
+ (*child_it)->visitedBy( *this, child_it );
+ }
+ }
+ }
+
+ // do not emit page anchored objects, they are emitted before
+ // (must precede all pages in writer document) currently these are
+ // only DrawElement types
+ for( std::list< Element* >::iterator it = elem.Children.begin(); it != elem.Children.end(); ++it )
+ {
+ if( dynamic_cast<DrawElement*>(*it) == NULL )
+ (*it)->visitedBy( *this, it );
+ }
+
+ m_rEmitContext.rEmitter.endTag( "office:text" );
+ m_rEmitContext.rEmitter.endTag( "office:body" );
+}
+
+/////////////////////////////////////////////////////////////////
+
+void WriterXmlOptimizer::visit( HyperlinkElement&, const std::list< Element* >::const_iterator& )
+{
+}
+
+void WriterXmlOptimizer::visit( TextElement&, const std::list< Element* >::const_iterator&)
+{
+}
+
+void WriterXmlOptimizer::visit( FrameElement& elem, const std::list< Element* >::const_iterator& )
+{
+ elem.applyToChildren(*this);
+}
+
+void WriterXmlOptimizer::visit( ImageElement&, const std::list< Element* >::const_iterator& )
+{
+}
+
+void WriterXmlOptimizer::visit( PolyPolyElement& elem, const std::list< Element* >::const_iterator& )
+{
+ /* note: optimize two consecutive PolyPolyElements that
+ * have the same path but one of which is a stroke while
+ * the other is a fill
+ */
+ if( elem.Parent )
+ {
+ // find following PolyPolyElement in parent's children list
+ std::list< Element* >::iterator this_it = elem.Parent->Children.begin();
+ while( this_it != elem.Parent->Children.end() && *this_it != &elem )
+ ++this_it;
+
+ if( this_it != elem.Parent->Children.end() )
+ {
+ std::list< Element* >::iterator next_it = this_it;
+ if( ++next_it != elem.Parent->Children.end() )
+ {
+ PolyPolyElement* pNext = dynamic_cast<PolyPolyElement*>(*next_it);
+ if( pNext && pNext->PolyPoly == elem.PolyPoly )
+ {
+ const GraphicsContext& rNextGC =
+ m_rProcessor.getGraphicsContext( pNext->GCId );
+ const GraphicsContext& rThisGC =
+ m_rProcessor.getGraphicsContext( elem.GCId );
+
+ if( rThisGC.BlendMode == rNextGC.BlendMode &&
+ rThisGC.Flatness == rNextGC.Flatness &&
+ rThisGC.Transformation == rNextGC.Transformation &&
+ rThisGC.Clip == rNextGC.Clip &&
+ pNext->Action == PATH_STROKE &&
+ (elem.Action == PATH_FILL || elem.Action == PATH_EOFILL) )
+ {
+ GraphicsContext aGC = rThisGC;
+ aGC.LineJoin = rNextGC.LineJoin;
+ aGC.LineCap = rNextGC.LineCap;
+ aGC.LineWidth = rNextGC.LineWidth;
+ aGC.MiterLimit= rNextGC.MiterLimit;
+ aGC.DashArray = rNextGC.DashArray;
+ aGC.LineColor = rNextGC.LineColor;
+ elem.GCId = m_rProcessor.getGCId( aGC );
+
+ elem.Action |= pNext->Action;
+
+ elem.Children.splice( elem.Children.end(), pNext->Children );
+ elem.Parent->Children.erase( next_it );
+ delete pNext;
+ }
+ }
+ }
+ }
+ }
+}
+
+void WriterXmlOptimizer::visit( ParagraphElement& elem, const std::list< Element* >::const_iterator& rParentIt)
+{
+ optimizeTextElements( elem );
+
+ elem.applyToChildren(*this);
+
+ if( elem.Parent && rParentIt != elem.Parent->Children.end() )
+ {
+ // find if there is a previous paragraph that might be a heading for this one
+ std::list<Element*>::const_iterator prev = rParentIt;
+ ParagraphElement* pPrevPara = NULL;
+ while( prev != elem.Parent->Children.begin() )
+ {
+ --prev;
+ pPrevPara = dynamic_cast< ParagraphElement* >(*prev);
+ if( pPrevPara )
+ {
+ /* What constitutes a heading ? current hints are:
+ * - one line only
+ * - not too far away from this paragraph (two heading height max ?)
+ * - font larger or bold
+ * this is of course incomplete
+ * FIXME: improve hints for heading
+ */
+ // check for single line
+ if( pPrevPara->isSingleLined( m_rProcessor ) )
+ {
+ double head_line_height = pPrevPara->getLineHeight( m_rProcessor );
+ if( pPrevPara->y + pPrevPara->h + 2*head_line_height > elem.y )
+ {
+ // check for larger font
+ if( head_line_height > elem.getLineHeight( m_rProcessor ) )
+ {
+ pPrevPara->Type = elem.Headline;
+ }
+ else
+ {
+ // check whether text of pPrevPara is bold (at least first text element)
+ // and this para is not bold (dito)
+ TextElement* pPrevText = pPrevPara->getFirstTextChild();
+ TextElement* pThisText = elem.getFirstTextChild();
+ if( pPrevText && pThisText )
+ {
+ const FontAttributes& rPrevFont = m_rProcessor.getFont( pPrevText->FontId );
+ const FontAttributes& rThisFont = m_rProcessor.getFont( pThisText->FontId );
+ if( rPrevFont.isBold && ! rThisFont.isBold )
+ pPrevPara->Type = elem.Headline;
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+}
+
+void WriterXmlOptimizer::visit( PageElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( m_rProcessor.getStatusIndicator().is() )
+ m_rProcessor.getStatusIndicator()->setValue( elem.PageNumber );
+
+ // resolve hyperlinks
+ elem.resolveHyperlinks();
+
+ elem.resolveFontStyles( m_rProcessor ); // underlines and such
+
+ // FIXME: until hyperlinks and font effects are adjusted for
+ // geometrical search handle them before sorting
+ m_rProcessor.sortElements( &elem );
+
+ // find paragraphs in text
+ ParagraphElement* pCurPara = NULL;
+ std::list< Element* >::iterator page_element, next_page_element;
+ next_page_element = elem.Children.begin();
+ double fCurLineHeight = 0.0; // average height of text items in current para
+ int nCurLineElements = 0; // number of line contributing elements in current para
+ double line_left = elem.w, line_right = 0.0;
+ double column_width = elem.w*0.75; // estimate text width
+ // TODO: guess columns
+ while( next_page_element != elem.Children.end() )
+ {
+ page_element = next_page_element++;
+ ParagraphElement* pPagePara = dynamic_cast<ParagraphElement*>(*page_element);
+ if( pPagePara )
+ {
+ pCurPara = pPagePara;
+ // adjust line height and text items
+ fCurLineHeight = 0.0;
+ nCurLineElements = 0;
+ for( std::list< Element* >::iterator it = pCurPara->Children.begin();
+ it != pCurPara->Children.end(); ++it )
+ {
+ TextElement* pTestText = dynamic_cast<TextElement*>(*it);
+ if( pTestText )
+ {
+ fCurLineHeight = (fCurLineHeight*double(nCurLineElements) + pTestText->h)/double(nCurLineElements+1);
+ nCurLineElements++;
+ }
+ }
+ continue;
+ }
+
+ HyperlinkElement* pLink = dynamic_cast<HyperlinkElement*>(*page_element);
+ DrawElement* pDraw = dynamic_cast<DrawElement*>(*page_element);
+ if( ! pDraw && pLink && ! pLink->Children.empty() )
+ pDraw = dynamic_cast<DrawElement*>(pLink->Children.front() );
+ if( pDraw )
+ {
+ // insert small drawing objects as character, else leave them page bound
+
+ bool bInsertToParagraph = false;
+ // first check if this is either inside the paragraph
+ if( pCurPara && pDraw->y < pCurPara->y + pCurPara->h )
+ {
+ if( pDraw->h < fCurLineHeight * 1.5 )
+ {
+ bInsertToParagraph = true;
+ fCurLineHeight = (fCurLineHeight*double(nCurLineElements) + pDraw->h)/double(nCurLineElements+1);
+ nCurLineElements++;
+ // mark draw element as character
+ pDraw->isCharacter = true;
+ }
+ }
+ // or perhaps the draw element begins a new paragraph
+ else if( next_page_element != elem.Children.end() )
+ {
+ TextElement* pText = dynamic_cast<TextElement*>(*next_page_element);
+ if( ! pText )
+ {
+ ParagraphElement* pPara = dynamic_cast<ParagraphElement*>(*next_page_element);
+ if( pPara && ! pPara->Children.empty() )
+ pText = dynamic_cast<TextElement*>(pPara->Children.front());
+ }
+ if( pText && // check there is a text
+ pDraw->h < pText->h*1.5 && // and it is approx the same height
+ // and either upper or lower edge of pDraw is inside text's vertical range
+ ( ( pDraw->y >= pText->y && pDraw->y <= pText->y+pText->h ) ||
+ ( pDraw->y+pDraw->h >= pText->y && pDraw->y+pDraw->h <= pText->y+pText->h )
+ )
+ )
+ {
+ bInsertToParagraph = true;
+ fCurLineHeight = pDraw->h;
+ nCurLineElements = 1;
+ line_left = pDraw->x;
+ line_right = pDraw->x + pDraw->w;
+ // begin a new paragraph
+ pCurPara = NULL;
+ // mark draw element as character
+ pDraw->isCharacter = true;
+ }
+ }
+
+ if( ! bInsertToParagraph )
+ {
+ pCurPara = NULL;
+ continue;
+ }
+ }
+
+ TextElement* pText = dynamic_cast<TextElement*>(*page_element);
+ if( ! pText && pLink && ! pLink->Children.empty() )
+ pText = dynamic_cast<TextElement*>(pLink->Children.front());
+ if( pText )
+ {
+ Element* pGeo = pLink ? static_cast<Element*>(pLink) :
+ static_cast<Element*>(pText);
+ if( pCurPara )
+ {
+ // there was already a text element, check for a new paragraph
+ if( nCurLineElements > 0 )
+ {
+ // if the new text is significantly distant from the paragraph
+ // begin a new paragraph
+ if( pGeo->y > pCurPara->y+pCurPara->h + fCurLineHeight*0.5 )
+ pCurPara = NULL; // insert new paragraph
+ else if( pGeo->y > (pCurPara->y+pCurPara->h - fCurLineHeight*0.05) )
+ {
+ // new paragraph if either the last line of the paragraph
+ // was significantly shorter than the paragraph as a whole
+ if( (line_right - line_left) < pCurPara->w*0.75 )
+ pCurPara = NULL;
+ // or the last line was significantly smaller than the column width
+ else if( (line_right - line_left) < column_width*0.75 )
+ pCurPara = NULL;
+ }
+ }
+ }
+ // update line height/width
+ if( pCurPara )
+ {
+ fCurLineHeight = (fCurLineHeight*double(nCurLineElements) + pGeo->h)/double(nCurLineElements+1);
+ nCurLineElements++;
+ if( pGeo->x < line_left )
+ line_left = pGeo->x;
+ if( pGeo->x+pGeo->w > line_right )
+ line_right = pGeo->x+pGeo->w;
+ }
+ else
+ {
+ fCurLineHeight = pGeo->h;
+ nCurLineElements = 1;
+ line_left = pGeo->x;
+ line_right = pGeo->x + pGeo->w;
+ }
+ }
+
+ // move element to current paragraph
+ if( ! pCurPara ) // new paragraph, insert one
+ {
+ pCurPara = m_rProcessor.getElementFactory()->createParagraphElement( NULL );
+ // set parent
+ pCurPara->Parent = &elem;
+ //insert new paragraph before current element
+ page_element = elem.Children.insert( page_element, pCurPara );
+ // forward iterator to current element again
+ ++ page_element;
+ // update next_element which is now invalid
+ next_page_element = page_element;
+ ++ next_page_element;
+ }
+ Element* pCurEle = *page_element;
+ pCurEle->setParent( page_element, pCurPara );
+ OSL_ENSURE( !pText || pCurEle == pText || pCurEle == pLink, "paragraph child list in disorder" );
+ if( pText || pDraw )
+ pCurPara->updateGeometryWith( pCurEle );
+ }
+
+ // process children
+ elem.applyToChildren(*this);
+
+ // find possible header and footer
+ checkHeaderAndFooter( elem );
+}
+
+void WriterXmlOptimizer::checkHeaderAndFooter( PageElement& rElem )
+{
+ /* indicators for a header:
+ * - single line paragrah at top of page ( inside 15% page height)
+ * - at least linheight above the next paragr aph
+ *
+ * indicators for a footer likewise:
+ * - single line paragraph at bottom of page (inside 15% page height)
+ * - at least lineheight below the previous paragraph
+ */
+
+ // detect header
+ // Note: the following assumes that the pages' chiuldren have been
+ // sorted geometrically
+ std::list< Element* >::iterator it = rElem.Children.begin();
+ while( it != rElem.Children.end() )
+ {
+ ParagraphElement* pPara = dynamic_cast<ParagraphElement*>(*it);
+ if( pPara )
+ {
+ if( pPara->y+pPara->h < rElem.h*0.15 && pPara->isSingleLined( m_rProcessor ) )
+ {
+ std::list< Element* >::iterator next_it = it;
+ ParagraphElement* pNextPara = NULL;
+ while( ++next_it != rElem.Children.end() && pNextPara == NULL )
+ {
+ pNextPara = dynamic_cast<ParagraphElement*>(*next_it);
+ }
+ if( pNextPara && pNextPara->y > pPara->y+pPara->h*2 )
+ {
+ rElem.HeaderElement = pPara;
+ pPara->Parent = NULL;
+ rElem.Children.remove( pPara );
+ }
+ }
+ break;
+ }
+ ++it;
+ }
+
+ // detect footer
+ std::list< Element* >::reverse_iterator rit = rElem.Children.rbegin();
+ while( rit != rElem.Children.rend() )
+ {
+ ParagraphElement* pPara = dynamic_cast<ParagraphElement*>(*rit);
+ if( pPara )
+ {
+ if( pPara->y > rElem.h*0.85 && pPara->isSingleLined( m_rProcessor ) )
+ {
+ std::list< Element* >::reverse_iterator next_it = rit;
+ ParagraphElement* pNextPara = NULL;
+ while( ++next_it != rElem.Children.rend() && pNextPara == NULL )
+ {
+ pNextPara = dynamic_cast<ParagraphElement*>(*next_it);
+ }
+ if( pNextPara && pNextPara->y < pPara->y-pPara->h*2 )
+ {
+ rElem.FooterElement = pPara;
+ pPara->Parent = NULL;
+ rElem.Children.remove( pPara );
+ }
+ }
+ break;
+ }
+ ++rit;
+ }
+}
+
+void WriterXmlOptimizer::optimizeTextElements(Element& rParent)
+{
+ if( rParent.Children.empty() ) // this should not happen
+ {
+ OSL_FAIL( "empty paragraph optimized" );
+ return;
+ }
+
+ // concatenate child elements with same font id
+ std::list< Element* >::iterator next = rParent.Children.begin();
+ std::list< Element* >::iterator it = next++;
+ FrameElement* pFrame = dynamic_cast<FrameElement*>(rParent.Parent);
+ bool bRotatedFrame = false;
+ if( pFrame )
+ {
+ const GraphicsContext& rFrameGC = m_rProcessor.getGraphicsContext( pFrame->GCId );
+ if( rFrameGC.isRotatedOrSkewed() )
+ bRotatedFrame = true;
+ }
+ while( next != rParent.Children.end() )
+ {
+ bool bConcat = false;
+ TextElement* pCur = dynamic_cast<TextElement*>(*it);
+ if( pCur )
+ {
+ TextElement* pNext = dynamic_cast<TextElement*>(*next);
+ if( pNext )
+ {
+ const GraphicsContext& rCurGC = m_rProcessor.getGraphicsContext( pCur->GCId );
+ const GraphicsContext& rNextGC = m_rProcessor.getGraphicsContext( pNext->GCId );
+
+ // line and space optimization; works only in strictly horizontal mode
+
+ if( !bRotatedFrame
+ && ! rCurGC.isRotatedOrSkewed()
+ && ! rNextGC.isRotatedOrSkewed()
+ && pNext->Text.charAt( 0 ) != sal_Unicode(' ')
+ && pCur->Text.getLength() > 0
+ && pCur->Text.charAt( pCur->Text.getLength()-1 ) != sal_Unicode(' ')
+ )
+ {
+ // check for new line in paragraph
+ if( pNext->y > pCur->y+pCur->h )
+ {
+ // new line begins
+ // check whether a space would should be inserted or a hyphen removed
+ sal_Unicode aLastCode = pCur->Text.charAt( pCur->Text.getLength()-1 );
+ if( aLastCode == '-'
+ || aLastCode == 0x2010
+ || (aLastCode >= 0x2012 && aLastCode <= 0x2015)
+ || aLastCode == 0xff0d
+ )
+ {
+ // cut a hyphen
+ pCur->Text.setLength( pCur->Text.getLength()-1 );
+ }
+ // append a space unless there is a non breaking hyphen
+ else if( aLastCode != 0x2011 )
+ {
+ pCur->Text.append( sal_Unicode( ' ' ) );
+ }
+ }
+ else // we're continuing the same line
+ {
+ // check whether a space would should be inserted
+ // check for a small horizontal offset
+ if( pCur->x + pCur->w + pNext->h*0.15 < pNext->x )
+ {
+ pCur->Text.append( sal_Unicode(' ') );
+ }
+ }
+ }
+ // concatenate consecutive text elements unless there is a
+ // font or text color or matrix change, leave a new span in that case
+ if( pCur->FontId == pNext->FontId &&
+ rCurGC.FillColor.Red == rNextGC.FillColor.Red &&
+ rCurGC.FillColor.Green == rNextGC.FillColor.Green &&
+ rCurGC.FillColor.Blue == rNextGC.FillColor.Blue &&
+ rCurGC.FillColor.Alpha == rNextGC.FillColor.Alpha &&
+ rCurGC.Transformation == rNextGC.Transformation
+ )
+ {
+ pCur->updateGeometryWith( pNext );
+ // append text to current element
+ pCur->Text.append( pNext->Text.getStr(), pNext->Text.getLength() );
+ // append eventual children to current element
+ // and clear children (else the children just
+ // appended to pCur would be destroyed)
+ pCur->Children.splice( pCur->Children.end(), pNext->Children );
+ // get rid of the now useless element
+ rParent.Children.erase( next );
+ delete pNext;
+ bConcat = true;
+ }
+ }
+ }
+ else if( dynamic_cast<HyperlinkElement*>(*it) )
+ optimizeTextElements( **it );
+ if( bConcat )
+ {
+ next = it;
+ ++next;
+ }
+ else
+ {
+ ++it;
+ ++next;
+ }
+ }
+}
+
+void WriterXmlOptimizer::visit( DocumentElement& elem, const std::list< Element* >::const_iterator&)
+{
+ elem.applyToChildren(*this);
+}
+
+//////////////////////////////////////////////////////////////////////////////////
+
+
+void WriterXmlFinalizer::visit( PolyPolyElement& elem, const std::list< Element* >::const_iterator& )
+{
+ // xxx TODO copied from DrawElement
+ const GraphicsContext& rGC = m_rProcessor.getGraphicsContext(elem.GCId );
+ PropertyMap aProps;
+ aProps[ USTR( "style:family" ) ] = USTR( "graphic" );
+
+ PropertyMap aGCProps;
+
+ // TODO(F3): proper dash emulation
+ if( elem.Action & PATH_STROKE )
+ {
+ aGCProps[ USTR("draw:stroke") ] = rGC.DashArray.empty() ? USTR("solid") : USTR("dash");
+ aGCProps[ USTR("svg:stroke-color") ] = getColorString( rGC.LineColor );
+ if( rGC.LineWidth != 0.0 )
+ {
+ ::basegfx::B2DVector aVec(rGC.LineWidth,0);
+ aVec *= rGC.Transformation;
+
+ aVec.setX ( convPx2mmPrec2( aVec.getX() )*100.0 );
+ aVec.setY ( convPx2mmPrec2( aVec.getY() )*100.0 );
+
+ aGCProps[ USTR("svg:stroke-width") ] = rtl::OUString::valueOf( aVec.getLength() );
+ }
+ }
+ else
+ {
+ aGCProps[ USTR("draw:stroke") ] = USTR("none");
+ }
+
+ // TODO(F1): check whether stuff could be emulated by gradient/bitmap/hatch
+ if( elem.Action & (PATH_FILL | PATH_EOFILL) )
+ {
+ aGCProps[ USTR("draw:fill") ] = USTR("solid");
+ aGCProps[ USTR("draw:fill-color") ] = getColorString( rGC.FillColor );
+ }
+ else
+ {
+ aGCProps[ USTR("draw:fill") ] = USTR("none");
+ }
+
+ StyleContainer::Style aStyle( "style:style", aProps );
+ StyleContainer::Style aSubStyle( "style:graphic-properties", aGCProps );
+ aStyle.SubStyles.push_back( &aSubStyle );
+
+ elem.StyleId = m_rStyleContainer.getStyleId( aStyle );
+}
+
+void WriterXmlFinalizer::visit( HyperlinkElement&, const std::list< Element* >::const_iterator& )
+{
+}
+
+void WriterXmlFinalizer::visit( TextElement& elem, const std::list< Element* >::const_iterator& )
+{
+ const FontAttributes& rFont = m_rProcessor.getFont( elem.FontId );
+ PropertyMap aProps;
+ aProps[ USTR( "style:family" ) ] = USTR( "text" );
+
+ PropertyMap aFontProps;
+
+ // family name
+ aFontProps[ USTR( "fo:font-family" ) ] = rFont.familyName;
+ // bold
+ if( rFont.isBold )
+ {
+ aFontProps[ USTR( "fo:font-weight" ) ] = USTR( "bold" );
+ aFontProps[ USTR( "fo:font-weight-asian" ) ] = USTR( "bold" );
+ aFontProps[ USTR( "fo:font-weight-complex" ) ] = USTR( "bold" );
+ }
+ // italic
+ if( rFont.isItalic )
+ {
+ aFontProps[ USTR( "fo:font-style" ) ] = USTR( "italic" );
+ aFontProps[ USTR( "fo:font-style-asian" ) ] = USTR( "italic" );
+ aFontProps[ USTR( "fo:font-style-complex" ) ] = USTR( "italic" );
+ }
+ // underline
+ if( rFont.isUnderline )
+ {
+ aFontProps[ USTR( "style:text-underline-style" ) ] = USTR( "solid" );
+ aFontProps[ USTR( "style:text-underline-width" ) ] = USTR( "auto" );
+ aFontProps[ USTR( "style:text-underline-color" ) ] = USTR( "font-color" );
+ }
+ // outline
+ if( rFont.isOutline )
+ {
+ aFontProps[ USTR( "style:text-outline" ) ] = USTR( "true" );
+ }
+ // size
+ rtl::OUStringBuffer aBuf( 32 );
+ aBuf.append( rFont.size*72/PDFI_OUTDEV_RESOLUTION );
+ aBuf.appendAscii( "pt" );
+ rtl::OUString aFSize = aBuf.makeStringAndClear();
+ aFontProps[ USTR( "fo:font-size" ) ] = aFSize;
+ aFontProps[ USTR( "style:font-size-asian" ) ] = aFSize;
+ aFontProps[ USTR( "style:font-size-complex" ) ] = aFSize;
+ // color
+ const GraphicsContext& rGC = m_rProcessor.getGraphicsContext( elem.GCId );
+ aFontProps[ USTR( "fo:color" ) ] = getColorString( rFont.isOutline ? rGC.LineColor : rGC.FillColor );
+
+ StyleContainer::Style aStyle( "style:style", aProps );
+ StyleContainer::Style aSubStyle( "style:text-properties", aFontProps );
+ aStyle.SubStyles.push_back( &aSubStyle );
+ elem.StyleId = m_rStyleContainer.getStyleId( aStyle );
+}
+
+void WriterXmlFinalizer::visit( ParagraphElement& elem, const std::list< Element* >::const_iterator& rParentIt )
+{
+ PropertyMap aParaProps;
+
+ if( elem.Parent )
+ {
+ // check for center alignement
+ // criterion: paragraph is small relative to parent and distributed around its center
+ double p_x = elem.Parent->x;
+ double p_y = elem.Parent->y;
+ double p_w = elem.Parent->w;
+ double p_h = elem.Parent->h;
+
+ PageElement* pPage = dynamic_cast<PageElement*>(elem.Parent);
+ if( pPage )
+ {
+ p_x += pPage->LeftMargin;
+ p_y += pPage->TopMargin;
+ p_w -= pPage->LeftMargin+pPage->RightMargin;
+ p_h -= pPage->TopMargin+pPage->BottomMargin;
+ }
+ bool bIsCenter = false;
+ if( elem.w < ( p_w/2) )
+ {
+ double delta = elem.w/4;
+ // allow very small paragraphs to deviate a little more
+ // relative to parent's center
+ if( elem.w < p_w/8 )
+ delta = elem.w;
+ if( fabs( elem.x+elem.w/2 - ( p_x+ p_w/2) ) < delta ||
+ (pPage && fabs( elem.x+elem.w/2 - (pPage->x + pPage->w/2) ) < delta) )
+ {
+ bIsCenter = true;
+ aParaProps[ USTR( "fo:text-align" ) ] = USTR( "center" );
+ }
+ }
+ if( ! bIsCenter && elem.x > p_x + p_w/10 )
+ {
+ // indent
+ rtl::OUStringBuffer aBuf( 32 );
+ aBuf.append( convPx2mm( elem.x - p_x ) );
+ aBuf.appendAscii( "mm" );
+ aParaProps[ USTR( "fo:margin-left" ) ] = aBuf.makeStringAndClear();
+ }
+
+ // check whether to leave some space to next paragraph
+ // find wether there is a next paragraph
+ std::list< Element* >::const_iterator it = rParentIt;
+ const ParagraphElement* pNextPara = NULL;
+ while( ++it != elem.Parent->Children.end() && ! pNextPara )
+ pNextPara = dynamic_cast< const ParagraphElement* >(*it);
+ if( pNextPara )
+ {
+ if( pNextPara->y - (elem.y+elem.h) > convmm2Px( 10 ) )
+ {
+ rtl::OUStringBuffer aBuf( 32 );
+ aBuf.append( convPx2mm( pNextPara->y - (elem.y+elem.h) ) );
+ aBuf.appendAscii( "mm" );
+ aParaProps[ USTR( "fo:margin-bottom" ) ] = aBuf.makeStringAndClear();
+ }
+ }
+ }
+
+ if( ! aParaProps.empty() )
+ {
+ PropertyMap aProps;
+ aProps[ USTR( "style:family" ) ] = USTR( "paragraph" );
+ StyleContainer::Style aStyle( "style:style", aProps );
+ StyleContainer::Style aSubStyle( "style:paragraph-properties", aParaProps );
+ aStyle.SubStyles.push_back( &aSubStyle );
+ elem.StyleId = m_rStyleContainer.getStyleId( aStyle );
+ }
+
+ elem.applyToChildren(*this);
+}
+
+void WriterXmlFinalizer::visit( FrameElement& elem, const std::list< Element* >::const_iterator&)
+{
+ PropertyMap aProps;
+ aProps[ USTR( "style:family" ) ] = USTR( "graphic" );
+
+ PropertyMap aGCProps;
+
+ aGCProps[ USTR("draw:stroke") ] = USTR("none");
+ aGCProps[ USTR("draw:fill") ] = USTR("none");
+
+ StyleContainer::Style aStyle( "style:style", aProps );
+ StyleContainer::Style aSubStyle( "style:graphic-properties", aGCProps );
+ aStyle.SubStyles.push_back( &aSubStyle );
+
+ elem.StyleId = m_rStyleContainer.getStyleId( aStyle );
+ elem.applyToChildren(*this);
+}
+
+void WriterXmlFinalizer::visit( ImageElement&, const std::list< Element* >::const_iterator& )
+{
+}
+
+void WriterXmlFinalizer::setFirstOnPage( ParagraphElement& rElem,
+ StyleContainer& rStyles,
+ const rtl::OUString& rMasterPageName )
+{
+ PropertyMap aProps;
+ if( rElem.StyleId != -1 )
+ {
+ const PropertyMap* pProps = rStyles.getProperties( rElem.StyleId );
+ if( pProps )
+ aProps = *pProps;
+ }
+
+ aProps[ USTR( "style:family" ) ] = USTR( "paragraph" );
+ aProps[ USTR( "style:master-page-name" ) ] = rMasterPageName;
+
+ if( rElem.StyleId != -1 )
+ rElem.StyleId = rStyles.setProperties( rElem.StyleId, aProps );
+ else
+ {
+ StyleContainer::Style aStyle( "style:style", aProps );
+ rElem.StyleId = rStyles.getStyleId( aStyle );
+ }
+}
+
+void WriterXmlFinalizer::visit( PageElement& elem, const std::list< Element* >::const_iterator& )
+{
+ if( m_rProcessor.getStatusIndicator().is() )
+ m_rProcessor.getStatusIndicator()->setValue( elem.PageNumber );
+
+ // transform from pixel to mm
+ double page_width = convPx2mm( elem.w ), page_height = convPx2mm( elem.h );
+
+ // calculate page margins out of the relevant children (paragraphs)
+ elem.TopMargin = elem.h, elem.BottomMargin = 0, elem.LeftMargin = elem.w, elem.RightMargin = 0;
+ // first element should be a paragraphy
+ ParagraphElement* pFirstPara = NULL;
+ for( std::list< Element* >::const_iterator it = elem.Children.begin(); it != elem.Children.end(); ++it )
+ {
+ if( dynamic_cast<ParagraphElement*>( *it ) )
+ {
+ if( (*it)->x < elem.LeftMargin )
+ elem.LeftMargin = (*it)->x;
+ if( (*it)->y < elem.TopMargin )
+ elem.TopMargin = (*it)->y;
+ if( (*it)->x + (*it)->w > elem.w - elem.RightMargin )
+ elem.RightMargin = elem.w - ((*it)->x + (*it)->w);
+ if( (*it)->y + (*it)->h > elem.h - elem.BottomMargin )
+ elem.BottomMargin = elem.h - ((*it)->y + (*it)->h);
+ if( ! pFirstPara )
+ pFirstPara = dynamic_cast<ParagraphElement*>( *it );
+ }
+ }
+ if( elem.HeaderElement && elem.HeaderElement->y < elem.TopMargin )
+ elem.TopMargin = elem.HeaderElement->y;
+ if( elem.FooterElement && elem.FooterElement->y+elem.FooterElement->h > elem.h - elem.BottomMargin )
+ elem.BottomMargin = elem.h - (elem.FooterElement->y + elem.FooterElement->h);
+
+ // transform margins to mm
+ double left_margin = convPx2mm( elem.LeftMargin );
+ double right_margin = convPx2mm( elem.RightMargin );
+ double top_margin = convPx2mm( elem.TopMargin );
+ double bottom_margin = convPx2mm( elem.BottomMargin );
+ if( ! pFirstPara )
+ {
+ // use default page margins
+ left_margin = 10;
+ right_margin = 10;
+ top_margin = 10;
+ bottom_margin = 10;
+ }
+
+ // round left/top margin to nearest mm
+ left_margin = rtl_math_round( left_margin, 0, rtl_math_RoundingMode_Floor );
+ top_margin = rtl_math_round( top_margin, 0, rtl_math_RoundingMode_Floor );
+ // round (fuzzy) right/bottom margin to nearest cm
+ right_margin = rtl_math_round( right_margin, right_margin >= 10 ? -1 : 0, rtl_math_RoundingMode_Floor );
+ bottom_margin = rtl_math_round( bottom_margin, bottom_margin >= 10 ? -1 : 0, rtl_math_RoundingMode_Floor );
+
+ // set reasonable default in case of way too large margins
+ // e.g. no paragraph case
+ if( left_margin > page_width/2.0 - 10 )
+ left_margin = 10;
+ if( right_margin > page_width/2.0 - 10 )
+ right_margin = 10;
+ if( top_margin > page_height/2.0 - 10 )
+ top_margin = 10;
+ if( bottom_margin > page_height/2.0 - 10 )
+ bottom_margin = 10;
+
+ // catch the weird cases
+ if( left_margin < 0 )
+ left_margin = 0;
+ if( right_margin < 0 )
+ right_margin = 0;
+ if( top_margin < 0 )
+ top_margin = 0;
+ if( bottom_margin < 0 )
+ bottom_margin = 0;
+
+ // widely differing margins are unlikely to be correct
+ if( right_margin > left_margin*1.5 )
+ right_margin = left_margin;
+
+ elem.LeftMargin = convmm2Px( left_margin );
+ elem.RightMargin = convmm2Px( right_margin );
+ elem.TopMargin = convmm2Px( top_margin );
+ elem.BottomMargin = convmm2Px( bottom_margin );
+
+ // get styles for paragraphs
+ PropertyMap aPageProps;
+ PropertyMap aPageLayoutProps;
+ rtl::OUStringBuffer aBuf( 64 );
+ aPageLayoutProps[ USTR( "fo:page-width" ) ] = unitMMString( page_width );
+ aPageLayoutProps[ USTR( "fo:page-height" ) ] = unitMMString( page_height );
+ aPageLayoutProps[ USTR( "style:print-orientation" ) ]
+ = elem.w < elem.h ? USTR( "portrait" ) : USTR( "landscape" );
+ aPageLayoutProps[ USTR( "fo:margin-top" ) ] = unitMMString( top_margin );
+ aPageLayoutProps[ USTR( "fo:margin-bottom" ) ] = unitMMString( bottom_margin );
+ aPageLayoutProps[ USTR( "fo:margin-left" ) ] = unitMMString( left_margin );
+ aPageLayoutProps[ USTR( "fo:margin-right" ) ] = unitMMString( right_margin );
+ aPageLayoutProps[ USTR( "style:writing-mode" ) ]= USTR( "lr-tb" );
+
+ StyleContainer::Style aStyle( "style:page-layout", aPageProps);
+ StyleContainer::Style aSubStyle( "style:page-layout-properties", aPageLayoutProps);
+ aStyle.SubStyles.push_back(&aSubStyle);
+ sal_Int32 nPageStyle = m_rStyleContainer.impl_getStyleId( aStyle, false );
+
+ // create master page
+ rtl::OUString aMasterPageLayoutName = m_rStyleContainer.getStyleName( nPageStyle );
+ aPageProps[ USTR( "style:page-layout-name" ) ] = aMasterPageLayoutName;
+ StyleContainer::Style aMPStyle( "style:master-page", aPageProps );
+ StyleContainer::Style aHeaderStyle( "style:header", PropertyMap() );
+ StyleContainer::Style aFooterStyle( "style:footer", PropertyMap() );
+ if( elem.HeaderElement )
+ {
+ elem.HeaderElement->visitedBy( *this, std::list<Element*>::iterator() );
+ aHeaderStyle.ContainedElement = elem.HeaderElement;
+ aMPStyle.SubStyles.push_back( &aHeaderStyle );
+ }
+ if( elem.FooterElement )
+ {
+ elem.FooterElement->visitedBy( *this, std::list<Element*>::iterator() );
+ aFooterStyle.ContainedElement = elem.FooterElement;
+ aMPStyle.SubStyles.push_back( &aFooterStyle );
+ }
+ elem.StyleId = m_rStyleContainer.impl_getStyleId( aMPStyle,false );
+
+
+ rtl::OUString aMasterPageName = m_rStyleContainer.getStyleName( elem.StyleId );
+
+ // create styles for children
+ elem.applyToChildren(*this);
+
+ // no paragraph or other elements before the first paragraph
+ if( ! pFirstPara )
+ {
+ pFirstPara = m_rProcessor.getElementFactory()->createParagraphElement( NULL );
+ pFirstPara->Parent = &elem;
+ elem.Children.push_front( pFirstPara );
+ }
+ setFirstOnPage(*pFirstPara, m_rStyleContainer, aMasterPageName);
+}
+
+void WriterXmlFinalizer::visit( DocumentElement& elem, const std::list< Element* >::const_iterator& )
+{
+ elem.applyToChildren(*this);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/tree/writertreevisiting.hxx b/sdext/source/pdfimport/tree/writertreevisiting.hxx
new file mode 100644
index 000000000000..b280b6aa011a
--- /dev/null
+++ b/sdext/source/pdfimport/tree/writertreevisiting.hxx
@@ -0,0 +1,119 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_WRITERTREEVISITING_HXX
+#define INCLUDED_PDFI_WRITERTREEVISITING_HXX
+
+#include "treevisiting.hxx"
+
+namespace pdfi
+{
+ struct DrawElement;
+
+ class WriterXmlOptimizer : public ElementTreeVisitor
+ {
+ private:
+ PDFIProcessor& m_rProcessor;
+ void optimizeTextElements(Element& rParent);
+ void checkHeaderAndFooter( PageElement& rElem );
+
+ public:
+ explicit WriterXmlOptimizer(PDFIProcessor& rProcessor) :
+ m_rProcessor(rProcessor)
+ {}
+ virtual ~WriterXmlOptimizer()
+ {}
+
+ virtual void visit( HyperlinkElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( TextElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ParagraphElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( FrameElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PolyPolyElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ImageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( DocumentElement&, const std::list< Element* >::const_iterator& );
+ };
+
+ class WriterXmlFinalizer : public ElementTreeVisitor
+ {
+ private:
+ StyleContainer& m_rStyleContainer;
+ PDFIProcessor& m_rProcessor;
+
+ void setFirstOnPage( ParagraphElement& rElem,
+ StyleContainer& rStyles,
+ const rtl::OUString& rMasterPageName );
+
+ public:
+ explicit WriterXmlFinalizer(StyleContainer& rStyleContainer,
+ PDFIProcessor& rProcessor) :
+ m_rStyleContainer(rStyleContainer),
+ m_rProcessor(rProcessor)
+ {}
+ virtual ~WriterXmlFinalizer()
+ {}
+
+ virtual void visit( HyperlinkElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( TextElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ParagraphElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( FrameElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PolyPolyElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ImageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( DocumentElement&, const std::list< Element* >::const_iterator& );
+ };
+
+ class WriterXmlEmitter : public ElementTreeVisitor
+ {
+ private:
+ EmitContext& m_rEmitContext ;
+ void fillFrameProps( DrawElement& rElem,
+ PropertyMap& rProps,
+ const EmitContext& rEmitContext );
+
+ public:
+ explicit WriterXmlEmitter(EmitContext& rEmitContext) :
+ m_rEmitContext(rEmitContext)
+ {}
+ virtual ~WriterXmlEmitter()
+ {}
+
+ virtual void visit( HyperlinkElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( TextElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ParagraphElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( FrameElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PolyPolyElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( ImageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( PageElement&, const std::list< Element* >::const_iterator& );
+ virtual void visit( DocumentElement&, const std::list< Element* >::const_iterator& );
+ };
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/wrapper/keyword_list b/sdext/source/pdfimport/wrapper/keyword_list
new file mode 100755
index 000000000000..bf15ddb2460f
--- /dev/null
+++ b/sdext/source/pdfimport/wrapper/keyword_list
@@ -0,0 +1,53 @@
+struct hash_entry { const char* name; enum parseKey eKey; };
+
+#if defined __GNUC__
+#pragma GCC system_header
+#endif
+
+%%
+clipPath,CLIPPATH
+drawChar,DRAWCHAR
+drawImage,DRAWIMAGE
+drawLink,DRAWLINK
+drawMask,DRAWMASK
+drawMaskedImage,DRAWMASKEDIMAGE
+drawSoftMaskedImage,DRAWSOFTMASKEDIMAGE
+endPage,ENDPAGE
+endTextObject,ENDTEXTOBJECT
+eoClipPath,EOCLIPPATH
+eoFillPath,EOFILLPATH
+fillPath,FILLPATH
+hyperLink,HYPERLINK
+intersectClip,INTERSECTCLIP
+intersectEoClip,INTERSECTEOCLIP
+popState,POPSTATE
+pushState,PUSHSTATE
+restoreState,RESTORESTATE
+saveState,SAVESTATE
+setBlendMode,SETBLENDMODE
+setFillColor,SETFILLCOLOR
+setFont,SETFONT
+setLineCap,SETLINECAP
+setLineDash,SETLINEDASH
+setLineJoin,SETLINEJOIN
+setLineWidth,SETLINEWIDTH
+setMiterLimit,SETMITERLIMIT
+setPageNum,SETPAGENUM
+setStrokeColor,SETSTROKECOLOR
+setTextRenderMode,SETTEXTRENDERMODE
+setTransformation,SETTRANSFORMATION
+startPage,STARTPAGE
+strokePath,STROKEPATH
+updateBlendMode,UPDATEBLENDMODE
+updateCtm,UPDATECTM
+updateFillColor,UPDATEFILLCOLOR
+updateFillOpacity,UPDATEFILLOPACITY
+updateFlatness,UPDATEFLATNESS
+updateFont,UPDATEFONT
+updateLineCap,UPDATELINECAP
+updateLineDash,UPDATELINEDASH
+updateLineJoin,UPDATELINEJOIN
+updateLineWidth,UPDATELINEWIDTH
+updateMiterLimit,UPDATEMITERLIMIT
+updateStrokeColor,UPDATESTROKECOLOR
+updateStrokeOpacity,UPDATESTROKEOPACITY
diff --git a/sdext/source/pdfimport/wrapper/makefile.mk b/sdext/source/pdfimport/wrapper/makefile.mk
new file mode 100755
index 000000000000..b2fbdfaa72e8
--- /dev/null
+++ b/sdext/source/pdfimport/wrapper/makefile.mk
@@ -0,0 +1,59 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sdext
+TARGET=xpdfwrapper
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+.INCLUDE: ../pdfisettings.pmk
+
+CDEFS+= -DPDFI_IMPL_IDENTIFIER=$(IMPLEMENTATION_IDENTIFIER)
+
+# --- Files --------------------------------------------------------
+
+SLOFILES=\
+ $(SLO)$/wrapper.obj
+
+# --- Targets ------------------------------------------------------
+
+.IF "$(ENABLE_PDFIMPORT)" == "NO"
+@all:
+ @echo "PDF Import extension disabled."
+.ENDIF
+
+.INCLUDE : target.mk
+
+$(SLO)$/wrapper.obj: $(INCCOM)$/hash.cxx
+
+$(INCCOM)$/hash.cxx: keyword_list
+ $(GPERF) -C -t -l -L C++ -m 20 -Z PdfKeywordHash -k'4-5,$$' keyword_list > $@
+
diff --git a/sdext/source/pdfimport/wrapper/wrapper.cxx b/sdext/source/pdfimport/wrapper/wrapper.cxx
new file mode 100644
index 000000000000..098ee584c910
--- /dev/null
+++ b/sdext/source/pdfimport/wrapper/wrapper.cxx
@@ -0,0 +1,1160 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "contentsink.hxx"
+#include "pdfparse.hxx"
+#include "pdfihelper.hxx"
+
+#include "osl/file.h"
+#include "osl/thread.h"
+#include "osl/process.h"
+#include "osl/diagnose.h"
+#include "rtl/ustring.hxx"
+#include "rtl/ustrbuf.hxx"
+#include "rtl/strbuf.hxx"
+#include "rtl/byteseq.hxx"
+
+#include "cppuhelper/exc_hlp.hxx"
+#include "com/sun/star/io/XInputStream.hpp"
+#include "com/sun/star/uno/XComponentContext.hpp"
+#include "com/sun/star/awt/FontDescriptor.hpp"
+#include "com/sun/star/deployment/XPackageInformationProvider.hpp"
+#include "com/sun/star/beans/XMaterialHolder.hpp"
+#include "com/sun/star/rendering/PathCapType.hpp"
+#include "com/sun/star/rendering/PathJoinType.hpp"
+#include "com/sun/star/rendering/XColorSpace.hpp"
+#include "com/sun/star/rendering/XPolyPolygon2D.hpp"
+#include "com/sun/star/rendering/XBitmap.hpp"
+#include "com/sun/star/geometry/Matrix2D.hpp"
+#include "com/sun/star/geometry/AffineMatrix2D.hpp"
+#include "com/sun/star/geometry/RealRectangle2D.hpp"
+#include "com/sun/star/task/XInteractionHandler.hpp"
+
+#include "basegfx/point/b2dpoint.hxx"
+#include "basegfx/polygon/b2dpolypolygon.hxx"
+#include "basegfx/polygon/b2dpolygon.hxx"
+#include "basegfx/tools/canvastools.hxx"
+#include "basegfx/tools/unopolypolygon.hxx"
+
+#include <boost/bind.hpp>
+#include <boost/preprocessor/stringize.hpp>
+#include <boost/scoped_ptr.hpp>
+#include <boost/scoped_array.hpp>
+
+#include <boost/unordered_map.hpp>
+#include <string.h>
+#ifdef WNT
+#include <stdlib.h>
+#include <ctype.h>
+#endif
+
+#include "rtl/bootstrap.h"
+
+#include <string.h> // memcmp
+
+#ifndef PDFI_IMPL_IDENTIFIER
+# error define implementation name for pdfi extension, please!
+#endif
+
+using namespace com::sun::star;
+
+namespace pdfi
+{
+
+namespace
+{
+
+// identifier of the strings coming from the out-of-process xpdf
+// converter
+enum parseKey {
+ CLIPPATH,
+ DRAWCHAR,
+ DRAWIMAGE,
+ DRAWLINK,
+ DRAWMASK,
+ DRAWMASKEDIMAGE,
+ DRAWSOFTMASKEDIMAGE,
+ ENDPAGE,
+ ENDTEXTOBJECT,
+ EOCLIPPATH,
+ EOFILLPATH,
+ FILLPATH,
+ HYPERLINK,
+ INTERSECTCLIP,
+ INTERSECTEOCLIP,
+ POPSTATE,
+ PUSHSTATE,
+ RESTORESTATE,
+ SAVESTATE,
+ SETBLENDMODE,
+ SETFILLCOLOR,
+ SETFONT,
+ SETLINECAP,
+ SETLINEDASH,
+ SETLINEJOIN,
+ SETLINEWIDTH,
+ SETMITERLIMIT,
+ SETPAGENUM,
+ SETSTROKECOLOR,
+ SETTEXTRENDERMODE,
+ SETTRANSFORMATION,
+ STARTPAGE,
+ STROKEPATH,
+ UPDATEBLENDMODE,
+ UPDATECTM,
+ UPDATEFILLCOLOR,
+ UPDATEFILLOPACITY,
+ UPDATEFLATNESS,
+ UPDATEFONT,
+ UPDATELINECAP,
+ UPDATELINEDASH,
+ UPDATELINEJOIN,
+ UPDATELINEWIDTH,
+ UPDATEMITERLIMIT,
+ UPDATESTROKECOLOR,
+ UPDATESTROKEOPACITY,
+ NONE
+};
+
+#include "hash.cxx"
+
+class Parser
+{
+ typedef boost::unordered_map< sal_Int64,
+ FontAttributes > FontMapType;
+
+ const uno::Reference<uno::XComponentContext> m_xContext;
+ const ContentSinkSharedPtr m_pSink;
+ const oslFileHandle m_pErr;
+ ::rtl::OString m_aLine;
+ FontMapType m_aFontMap;
+ sal_Int32 m_nNextToken;
+ sal_Int32 m_nCharIndex;
+
+ const double minAreaThreshold;
+ const double minLineWidth;
+
+ ::rtl::OString readNextToken();
+ void readInt32( sal_Int32& o_Value );
+ sal_Int32 readInt32();
+ void readInt64( sal_Int64& o_Value );
+ void readDouble( double& o_Value );
+ double readDouble();
+ void readBinaryData( uno::Sequence<sal_Int8>& rBuf );
+
+ uno::Reference<rendering::XPolyPolygon2D> readPath( double* );
+
+ void readChar();
+ void readLineCap();
+ void readLineDash();
+ void readLineJoin();
+ void readTransformation();
+ rendering::ARGBColor readColor();
+ void parseFontFamilyName( FontAttributes& aResult );
+ void readFont();
+ uno::Sequence<beans::PropertyValue> readImageImpl();
+
+ void readImage();
+ void readMask();
+ void readLink();
+ void readMaskedImage();
+ void readSoftMaskedImage();
+ int parseFontCheckForString( const sal_Unicode* pCopy, const char* str, sal_Int32& nLen,
+ FontAttributes& aResult, bool bItalic, bool bBold);
+ int parseFontRemoveSuffix( const sal_Unicode* pCopy, const char* s, sal_Int32& nLen);
+
+
+public:
+ Parser( const ContentSinkSharedPtr& rSink,
+ oslFileHandle pErr,
+ const uno::Reference<uno::XComponentContext>& xContext ) :
+ m_xContext(xContext),
+ m_pSink(rSink),
+ m_pErr(pErr),
+ m_aLine(),
+ m_aFontMap(101),
+ m_nNextToken(-1),
+ m_nCharIndex(-1),
+ minAreaThreshold( 300.0 ),
+ minLineWidth( 12 )
+ {}
+
+ void parseLine( const ::rtl::OString& rLine );
+};
+
+
+namespace
+{
+
+ /** Unescapes line-ending characters in input string. These
+ characters are encoded as pairs of characters: '\\' 'n', resp.
+ '\\' 'r'. This function converts them back to '\n', resp. '\r'.
+ */
+ rtl::OString lcl_unescapeLineFeeds(const rtl::OString& i_rStr)
+ {
+ const size_t nOrigLen(sal::static_int_cast<size_t>(i_rStr.getLength()));
+ const sal_Char* const pOrig(i_rStr.getStr());
+ sal_Char* const pBuffer(new sal_Char[nOrigLen + 1]);
+
+ const sal_Char* pRead(pOrig);
+ sal_Char* pWrite(pBuffer);
+ const sal_Char* pCur(pOrig);
+ while ((pCur = strchr(pCur, '\\')) != 0)
+ {
+ const sal_Char cNext(pCur[1]);
+ if (cNext == 'n' || cNext == 'r' || cNext == '\\')
+ {
+ const size_t nLen(pCur - pRead);
+ strncpy(pWrite, pRead, nLen);
+ pWrite += nLen;
+ *pWrite = cNext == 'n' ? '\n' : (cNext == 'r' ? '\r' : '\\');
+ ++pWrite;
+ pCur = pRead = pCur + 2;
+ }
+ else
+ {
+ // Just continue on the next character. The current
+ // block will be copied the next time it goes through the
+ // 'if' branch.
+ ++pCur;
+ }
+ }
+ // maybe there are some data to copy yet
+ if (sal::static_int_cast<size_t>(pRead - pOrig) < nOrigLen)
+ {
+ const size_t nLen(nOrigLen - (pRead - pOrig));
+ strncpy(pWrite, pRead, nLen);
+ pWrite += nLen;
+ }
+ *pWrite = '\0';
+
+ rtl::OString aResult(pBuffer);
+ delete[] pBuffer;
+ return aResult;
+ }
+
+}
+
+
+::rtl::OString Parser::readNextToken()
+{
+ OSL_PRECOND(m_nCharIndex!=-1,"insufficient input");
+ return m_aLine.getToken(m_nNextToken,' ',m_nCharIndex);
+}
+
+void Parser::readInt32( sal_Int32& o_Value )
+{
+ o_Value = readNextToken().toInt32();
+}
+
+sal_Int32 Parser::readInt32()
+{
+ return readNextToken().toInt32();
+}
+
+void Parser::readInt64( sal_Int64& o_Value )
+{
+ o_Value = readNextToken().toInt64();
+}
+
+void Parser::readDouble( double& o_Value )
+{
+ o_Value = readNextToken().toDouble();
+}
+
+double Parser::readDouble()
+{
+ return readNextToken().toDouble();
+}
+
+void Parser::readBinaryData( uno::Sequence<sal_Int8>& rBuf )
+{
+ sal_Int32 nFileLen( rBuf.getLength() );
+ sal_Int8* pBuf( rBuf.getArray() );
+ sal_uInt64 nBytesRead(0);
+ oslFileError nRes=osl_File_E_None;
+ while( nFileLen &&
+ osl_File_E_None == (nRes=osl_readFile( m_pErr, pBuf, nFileLen, &nBytesRead )) )
+ {
+ pBuf += nBytesRead;
+ nFileLen -= sal::static_int_cast<sal_Int32>(nBytesRead);
+ }
+
+ OSL_PRECOND(nRes==osl_File_E_None, "inconsistent data");
+}
+
+uno::Reference<rendering::XPolyPolygon2D> Parser::readPath( double* pArea = NULL )
+{
+ const rtl::OString aSubPathMarker( "subpath" );
+
+ if( 0 != readNextToken().compareTo( aSubPathMarker ) )
+ OSL_PRECOND(false, "broken path");
+
+ basegfx::B2DPolyPolygon aResult;
+ while( m_nCharIndex != -1 )
+ {
+ basegfx::B2DPolygon aSubPath;
+
+ sal_Int32 nClosedFlag;
+ readInt32( nClosedFlag );
+ aSubPath.setClosed( nClosedFlag != 0 );
+
+ sal_Int32 nContiguousControlPoints(0);
+ sal_Int32 nDummy=m_nCharIndex;
+ rtl::OString aCurrToken( m_aLine.getToken(m_nNextToken,' ',nDummy) );
+
+ while( m_nCharIndex != -1 && 0 != aCurrToken.compareTo(aSubPathMarker) )
+ {
+ sal_Int32 nCurveFlag;
+ double nX, nY;
+ readDouble( nX );
+ readDouble( nY );
+ readInt32( nCurveFlag );
+
+ aSubPath.append(basegfx::B2DPoint(nX,nY));
+ if( nCurveFlag )
+ {
+ ++nContiguousControlPoints;
+ }
+ else if( nContiguousControlPoints )
+ {
+ OSL_PRECOND(nContiguousControlPoints==2,"broken bezier path");
+
+ // have two control points before us. the current one
+ // is a normal point - thus, convert previous points
+ // into bezier segment
+ const sal_uInt32 nPoints( aSubPath.count() );
+ const basegfx::B2DPoint aCtrlA( aSubPath.getB2DPoint(nPoints-3) );
+ const basegfx::B2DPoint aCtrlB( aSubPath.getB2DPoint(nPoints-2) );
+ const basegfx::B2DPoint aEnd( aSubPath.getB2DPoint(nPoints-1) );
+ aSubPath.remove(nPoints-3, 3);
+ aSubPath.appendBezierSegment(aCtrlA, aCtrlB, aEnd);
+
+ nContiguousControlPoints=0;
+ }
+
+ // one token look-ahead (new subpath or more points?
+ nDummy=m_nCharIndex;
+ aCurrToken = m_aLine.getToken(m_nNextToken,' ',nDummy);
+ }
+
+ aResult.append( aSubPath );
+ if( m_nCharIndex != -1 )
+ readNextToken();
+ }
+
+ if( pArea )
+ {
+ basegfx::B2DRange aRange( aResult.getB2DRange() );
+ if( aRange.getWidth() <= minLineWidth || aRange.getHeight() <= minLineWidth)
+ *pArea = 0.0;
+ else
+ *pArea = aRange.getWidth() * aRange.getHeight();
+ }
+
+ return static_cast<rendering::XLinePolyPolygon2D*>(
+ new basegfx::unotools::UnoPolyPolygon(aResult));
+}
+
+void Parser::readChar()
+{
+ geometry::Matrix2D aUnoMatrix;
+ geometry::RealRectangle2D aRect;
+
+ readDouble(aRect.X1);
+ readDouble(aRect.Y1);
+ readDouble(aRect.X2);
+ readDouble(aRect.Y2);
+ readDouble(aUnoMatrix.m00);
+ readDouble(aUnoMatrix.m01);
+ readDouble(aUnoMatrix.m10);
+ readDouble(aUnoMatrix.m11);
+
+ rtl::OString aChars = lcl_unescapeLineFeeds( m_aLine.copy( m_nCharIndex ) );
+
+ // chars gobble up rest of line
+ m_nCharIndex = -1;
+
+ m_pSink->drawGlyphs( rtl::OStringToOUString( aChars,
+ RTL_TEXTENCODING_UTF8 ),
+ aRect, aUnoMatrix );
+}
+
+void Parser::readLineCap()
+{
+ sal_Int8 nCap(rendering::PathCapType::BUTT);
+ switch( readInt32() )
+ {
+ default:
+ // FALLTHROUGH intended
+ case 0: nCap = rendering::PathCapType::BUTT; break;
+ case 1: nCap = rendering::PathCapType::ROUND; break;
+ case 2: nCap = rendering::PathCapType::SQUARE; break;
+ }
+ m_pSink->setLineCap(nCap);
+}
+
+void Parser::readLineDash()
+{
+ if( m_nCharIndex == -1 )
+ {
+ m_pSink->setLineDash( uno::Sequence<double>(), 0.0 );
+ return;
+ }
+
+ const double nOffset(readDouble());
+ const sal_Int32 nLen(readInt32());
+
+ uno::Sequence<double> aDashArray(nLen);
+ double* pArray=aDashArray.getArray();
+ for( sal_Int32 i=0; i<nLen; ++i )
+ *pArray++ = readDouble();
+
+ m_pSink->setLineDash( aDashArray, nOffset );
+}
+
+void Parser::readLineJoin()
+{
+ sal_Int8 nJoin(rendering::PathJoinType::MITER);
+ switch( readInt32() )
+ {
+ default:
+ // FALLTHROUGH intended
+ case 0: nJoin = rendering::PathJoinType::MITER; break;
+ case 1: nJoin = rendering::PathJoinType::ROUND; break;
+ case 2: nJoin = rendering::PathJoinType::BEVEL; break;
+ }
+ m_pSink->setLineJoin(nJoin);
+}
+
+void Parser::readTransformation()
+{
+ geometry::AffineMatrix2D aMat;
+ readDouble(aMat.m00);
+ readDouble(aMat.m10);
+ readDouble(aMat.m01);
+ readDouble(aMat.m11);
+ readDouble(aMat.m02);
+ readDouble(aMat.m12);
+ m_pSink->setTransformation( aMat );
+}
+
+rendering::ARGBColor Parser::readColor()
+{
+ rendering::ARGBColor aRes;
+ readDouble(aRes.Red);
+ readDouble(aRes.Green);
+ readDouble(aRes.Blue);
+ readDouble(aRes.Alpha);
+ return aRes;
+}
+
+int Parser::parseFontCheckForString( const sal_Unicode* pCopy, const char* s, sal_Int32& nLen,
+ FontAttributes& aResult, bool bItalic, bool bBold)
+{
+ int l = strlen(s);
+ if (nLen < l)
+ return 0;
+ for (int i = 0; i < l; i++)
+ if (tolower(pCopy[i]) != s[i]
+ && toupper(pCopy[i]) != s[i])
+ return 0;
+ aResult.isItalic = bItalic;
+ aResult.isBold = bBold;
+ nLen -= l;
+ pCopy += l;
+ return l;
+}
+
+int Parser::parseFontRemoveSuffix( const sal_Unicode* pCopy, const char* s, sal_Int32& nLen)
+{
+ int l = strlen(s);
+ if (nLen < l)
+ return 0;
+ for (int i = 0; i < l; i++)
+ if ( pCopy[nLen - l + i] != s[i] )
+ return 0;
+ nLen -= l;
+ return l;
+}
+
+void Parser::parseFontFamilyName( FontAttributes& aResult )
+{
+ rtl::OUStringBuffer aNewFamilyName( aResult.familyName.getLength() );
+
+ const sal_Unicode* pCopy = aResult.familyName.getStr();
+ sal_Int32 nLen = aResult.familyName.getLength();
+ // parse out truetype subsets (e.g. BAAAAA+Thorndale)
+ if( nLen > 8 && pCopy[6] == sal_Unicode('+') )
+ {
+ pCopy += 7;
+ nLen -= 7;
+ }
+
+ while( nLen )
+ {
+ if (parseFontRemoveSuffix( pCopy, "PSMT", nLen)) {}
+ else if (parseFontRemoveSuffix( pCopy, "MT", nLen)) {}
+
+ if (parseFontCheckForString( pCopy, "Italic", nLen, aResult, true, false)) {}
+ else if (parseFontCheckForString( pCopy, "-Bold", nLen, aResult, false, true)) {}
+ else if (parseFontCheckForString( pCopy, "Bold", nLen, aResult, false, true)) {}
+ else if (parseFontCheckForString( pCopy, "-Roman", nLen, aResult, false, false)) {}
+ else if (parseFontCheckForString( pCopy, "-LightOblique", nLen, aResult, true, false)) {}
+ else if (parseFontCheckForString( pCopy, "-BoldOblique", nLen, aResult, true, true)) {}
+ else if (parseFontCheckForString( pCopy, "-Light", nLen, aResult, false, false)) {}
+ else if (parseFontCheckForString( pCopy, "-Reg", nLen, aResult, false, false)) {}
+ else
+ {
+ if( *pCopy != '-' )
+ aNewFamilyName.append( *pCopy );
+ pCopy++;
+ nLen--;
+ }
+ }
+ aResult.familyName = aNewFamilyName.makeStringAndClear();
+}
+
+void Parser::readFont()
+{
+ ::rtl::OString aFontName;
+ sal_Int64 nFontID;
+ sal_Int32 nIsEmbedded, nIsBold, nIsItalic, nIsUnderline, nFileLen;
+ double nSize;
+
+ readInt64(nFontID);
+ readInt32(nIsEmbedded);
+ readInt32(nIsBold);
+ readInt32(nIsItalic);
+ readInt32(nIsUnderline);
+ readDouble(nSize);
+ readInt32(nFileLen);
+
+ nSize = nSize < 0.0 ? -nSize : nSize;
+ aFontName = lcl_unescapeLineFeeds( m_aLine.copy( m_nCharIndex ) );
+
+ // name gobbles up rest of line
+ m_nCharIndex = -1;
+
+ FontMapType::const_iterator pFont( m_aFontMap.find(nFontID) );
+ if( pFont != m_aFontMap.end() )
+ {
+ OSL_PRECOND(nFileLen==0,"font data for known font");
+ FontAttributes aRes(pFont->second);
+ aRes.size = nSize;
+ m_pSink->setFont( aRes );
+
+ return;
+ }
+
+ // yet unknown font - get info and add to map
+ FontAttributes aResult( rtl::OStringToOUString( aFontName,
+ RTL_TEXTENCODING_UTF8 ),
+ nIsBold != 0,
+ nIsItalic != 0,
+ nIsUnderline != 0,
+ false,
+ nSize );
+
+ // extract textual attributes (bold, italic in the name, etc.)
+ parseFontFamilyName(aResult);
+ // need to read font file?
+ if( nFileLen )
+ {
+ uno::Sequence<sal_Int8> aFontFile(nFileLen);
+ readBinaryData( aFontFile );
+
+ awt::FontDescriptor aFD;
+ uno::Sequence< uno::Any > aArgs(1);
+ aArgs[0] <<= aFontFile;
+
+ try
+ {
+ uno::Reference< beans::XMaterialHolder > xMat(
+ m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.FontIdentificator" ) ),
+ aArgs,
+ m_xContext ),
+ uno::UNO_QUERY );
+ if( xMat.is() )
+ {
+ uno::Any aRes( xMat->getMaterial() );
+ if( aRes >>= aFD )
+ {
+ aResult.familyName = aFD.Name;
+ parseFontFamilyName(aResult);
+ aResult.isBold = (aFD.Weight > 100.0);
+ aResult.isItalic = (aFD.Slant == awt::FontSlant_OBLIQUE ||
+ aFD.Slant == awt::FontSlant_ITALIC );
+ aResult.isUnderline = false;
+ aResult.size = 0;
+ }
+ }
+ }
+ catch( uno::Exception& )
+ {
+ }
+
+ if( !aResult.familyName.getLength() )
+ {
+ // last fallback
+ aResult.familyName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Arial" ) );
+ aResult.isUnderline = false;
+ }
+
+ }
+ m_aFontMap[nFontID] = aResult;
+
+ aResult.size = nSize;
+ m_pSink->setFont(aResult);
+}
+
+uno::Sequence<beans::PropertyValue> Parser::readImageImpl()
+{
+ static const rtl::OString aJpegMarker( "JPEG" );
+ static const rtl::OString aPbmMarker( "PBM" );
+ static const rtl::OString aPpmMarker( "PPM" );
+ static const rtl::OString aPngMarker( "PNG" );
+ static const rtl::OUString aJpegFile(
+ RTL_CONSTASCII_USTRINGPARAM( "DUMMY.JPEG" ));
+ static const rtl::OUString aPbmFile(
+ RTL_CONSTASCII_USTRINGPARAM( "DUMMY.PBM" ));
+ static const rtl::OUString aPpmFile(
+ RTL_CONSTASCII_USTRINGPARAM( "DUMMY.PPM" ));
+ static const rtl::OUString aPngFile(
+ RTL_CONSTASCII_USTRINGPARAM( "DUMMY.PNG" ));
+
+ rtl::OString aToken = readNextToken();
+ const sal_Int32 nImageSize( readInt32() );
+
+ rtl::OUString aFileName;
+ if( aToken.compareTo( aPngMarker ) == 0 )
+ aFileName = aPngFile;
+ else if( aToken.compareTo( aJpegMarker ) == 0 )
+ aFileName = aJpegFile;
+ else if( aToken.compareTo( aPbmMarker ) == 0 )
+ aFileName = aPbmFile;
+ else
+ {
+ OSL_PRECOND( aToken.compareTo( aPpmMarker ) == 0,
+ "Invalid bitmap format" );
+ aFileName = aPpmFile;
+ }
+
+ uno::Sequence<sal_Int8> aDataSequence(nImageSize);
+ readBinaryData( aDataSequence );
+
+ uno::Sequence< uno::Any > aStreamCreationArgs(1);
+ aStreamCreationArgs[0] <<= aDataSequence;
+
+ uno::Reference< uno::XComponentContext > xContext( m_xContext, uno::UNO_SET_THROW );
+ uno::Reference< lang::XMultiComponentFactory > xFactory( xContext->getServiceManager(), uno::UNO_SET_THROW );
+ uno::Reference< io::XInputStream > xDataStream( xFactory->createInstanceWithArgumentsAndContext(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.io.SequenceInputStream" ) ),
+ aStreamCreationArgs, m_xContext ), uno::UNO_QUERY_THROW );
+
+ uno::Sequence<beans::PropertyValue> aSequence(3);
+ aSequence[0] = beans::PropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("URL")),
+ 0,
+ uno::makeAny(aFileName),
+ beans::PropertyState_DIRECT_VALUE );
+ aSequence[1] = beans::PropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("InputStream")),
+ 0,
+ uno::makeAny( xDataStream ),
+ beans::PropertyState_DIRECT_VALUE );
+ aSequence[2] = beans::PropertyValue( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("InputSequence")),
+ 0,
+ uno::makeAny(aDataSequence),
+ beans::PropertyState_DIRECT_VALUE );
+
+ return aSequence;
+}
+
+void Parser::readImage()
+{
+ sal_Int32 nWidth, nHeight,nMaskColors;
+ readInt32(nWidth);
+ readInt32(nHeight);
+ readInt32(nMaskColors);
+
+ uno::Sequence<beans::PropertyValue> aImg( readImageImpl() );
+
+ if( nMaskColors )
+ {
+ uno::Sequence<sal_Int8> aDataSequence(nMaskColors);
+ readBinaryData( aDataSequence );
+
+ uno::Sequence<uno::Any> aMaskRanges(2);
+
+ uno::Sequence<double> aMinRange(nMaskColors/2);
+ uno::Sequence<double> aMaxRange(nMaskColors/2);
+ for( sal_Int32 i=0; i<nMaskColors/2; ++i )
+ {
+ aMinRange[i] = aDataSequence[i] / 255.0;
+ aMaxRange[i] = aDataSequence[i+nMaskColors/2] / 255.0;
+ }
+
+ aMaskRanges[0] = uno::makeAny(aMinRange);
+ aMaskRanges[1] = uno::makeAny(aMaxRange);
+
+ m_pSink->drawColorMaskedImage( aImg, aMaskRanges );
+ }
+ else
+ m_pSink->drawImage( aImg );
+}
+
+void Parser::readMask()
+{
+ sal_Int32 nWidth, nHeight, nInvert;
+ readInt32(nWidth);
+ readInt32(nHeight);
+ readInt32(nInvert);
+
+ m_pSink->drawMask( readImageImpl(), nInvert );
+}
+
+void Parser::readLink()
+{
+ geometry::RealRectangle2D aBounds;
+ readDouble(aBounds.X1);
+ readDouble(aBounds.Y1);
+ readDouble(aBounds.X2);
+ readDouble(aBounds.Y2);
+
+ m_pSink->hyperLink( aBounds,
+ rtl::OStringToOUString( lcl_unescapeLineFeeds(
+ m_aLine.copy(m_nCharIndex) ),
+ RTL_TEXTENCODING_UTF8 ) );
+ // name gobbles up rest of line
+ m_nCharIndex = -1;
+}
+
+void Parser::readMaskedImage()
+{
+ sal_Int32 nWidth, nHeight, nMaskWidth, nMaskHeight, nMaskInvert;
+ readInt32(nWidth);
+ readInt32(nHeight);
+ readInt32(nMaskWidth);
+ readInt32(nMaskHeight);
+ readInt32(nMaskInvert);
+
+ const uno::Sequence<beans::PropertyValue> aImage( readImageImpl() );
+ const uno::Sequence<beans::PropertyValue> aMask ( readImageImpl() );
+ m_pSink->drawMaskedImage( aImage, aMask, nMaskInvert != 0 );
+}
+
+void Parser::readSoftMaskedImage()
+{
+ sal_Int32 nWidth, nHeight, nMaskWidth, nMaskHeight;
+ readInt32(nWidth);
+ readInt32(nHeight);
+ readInt32(nMaskWidth);
+ readInt32(nMaskHeight);
+
+ const uno::Sequence<beans::PropertyValue> aImage( readImageImpl() );
+ const uno::Sequence<beans::PropertyValue> aMask ( readImageImpl() );
+ m_pSink->drawAlphaMaskedImage( aImage, aMask );
+}
+
+void Parser::parseLine( const ::rtl::OString& rLine )
+{
+ OSL_PRECOND( m_pSink, "Invalid sink" );
+ OSL_PRECOND( m_pErr, "Invalid filehandle" );
+ OSL_PRECOND( m_xContext.is(), "Invalid service factory" );
+
+ m_nNextToken = 0; m_nCharIndex = 0; m_aLine = rLine;
+ uno::Reference<rendering::XPolyPolygon2D> xPoly;
+ const ::rtl::OString& rCmd = readNextToken();
+ const hash_entry* pEntry = PdfKeywordHash::in_word_set( rCmd.getStr(),
+ rCmd.getLength() );
+ OSL_ASSERT(pEntry);
+ switch( pEntry->eKey )
+ {
+ case CLIPPATH:
+ m_pSink->intersectClip(readPath()); break;
+ case DRAWCHAR:
+ readChar(); break;
+ case DRAWIMAGE:
+ readImage(); break;
+ case DRAWLINK:
+ readLink(); break;
+ case DRAWMASK:
+ readMask(); break;
+ case DRAWMASKEDIMAGE:
+ readMaskedImage(); break;
+ case DRAWSOFTMASKEDIMAGE:
+ readSoftMaskedImage(); break;
+ case ENDPAGE:
+ m_pSink->endPage(); break;
+ case ENDTEXTOBJECT:
+ m_pSink->endText(); break;
+ case EOCLIPPATH:
+ m_pSink->intersectEoClip(readPath()); break;
+ case EOFILLPATH:
+ {
+ double area = 0.0;
+ uno::Reference<rendering::XPolyPolygon2D> path = readPath( &area );
+ m_pSink->eoFillPath(path);
+ // if area is smaller than required, add borders.
+ if(area < minAreaThreshold)
+ m_pSink->strokePath(path);
+ }
+ break;
+ case FILLPATH:
+ {
+ double area = 0.0;
+ uno::Reference<rendering::XPolyPolygon2D> path = readPath( &area );
+ m_pSink->fillPath(path);
+ // if area is smaller than required, add borders.
+ if(area < minAreaThreshold)
+ m_pSink->strokePath(path);
+ }
+ break;
+ case RESTORESTATE:
+ m_pSink->popState(); break;
+ case SAVESTATE:
+ m_pSink->pushState(); break;
+ case SETPAGENUM:
+ m_pSink->setPageNum( readInt32() ); break;
+ case STARTPAGE:
+ {
+ const double nWidth ( readDouble() );
+ const double nHeight( readDouble() );
+ m_pSink->startPage( geometry::RealSize2D( nWidth, nHeight ) );
+ break;
+ }
+ case STROKEPATH:
+ m_pSink->strokePath(readPath()); break;
+ case UPDATECTM:
+ readTransformation(); break;
+ case UPDATEFILLCOLOR:
+ m_pSink->setFillColor( readColor() ); break;
+ case UPDATEFLATNESS:
+ m_pSink->setFlatness( readDouble( ) ); break;
+ case UPDATEFONT:
+ readFont(); break;
+ case UPDATELINECAP:
+ readLineCap(); break;
+ case UPDATELINEDASH:
+ readLineDash(); break;
+ case UPDATELINEJOIN:
+ readLineJoin(); break;
+ case UPDATELINEWIDTH:
+ m_pSink->setLineWidth( readDouble() );break;
+ case UPDATEMITERLIMIT:
+ m_pSink->setMiterLimit( readDouble() ); break;
+ case UPDATESTROKECOLOR:
+ m_pSink->setStrokeColor( readColor() ); break;
+ case UPDATESTROKEOPACITY:
+ break;
+ case SETTEXTRENDERMODE:
+ m_pSink->setTextRenderMode( readInt32() ); break;
+
+ case NONE:
+ default:
+ OSL_PRECOND(false,"Unknown input");
+ break;
+ }
+
+ // all consumed?
+ OSL_POSTCOND(m_nCharIndex==-1,"leftover scanner input");
+}
+
+oslFileError readLine( oslFileHandle pFile, ::rtl::OStringBuffer& line )
+{
+ OSL_PRECOND( line.getLength() == 0, "line buf not empty" );
+
+ // TODO(P3): read larger chunks
+ sal_Char aChar('\n');
+ sal_uInt64 nBytesRead;
+ oslFileError nRes;
+
+ // skip garbage \r \n at start of line
+ while( osl_File_E_None == (nRes=osl_readFile(pFile, &aChar, 1, &nBytesRead)) &&
+ nBytesRead == 1 &&
+ (aChar == '\n' || aChar == '\r') ) ;
+
+ if( aChar != '\n' && aChar != '\r' )
+ line.append( aChar );
+
+ while( osl_File_E_None == (nRes=osl_readFile(pFile, &aChar, 1, &nBytesRead)) &&
+ nBytesRead == 1 && aChar != '\n' && aChar != '\r' )
+ {
+ line.append( aChar );
+ }
+
+ return nRes;
+}
+
+} // namespace
+
+static bool checkEncryption( const rtl::OUString& i_rPath,
+ const uno::Reference< task::XInteractionHandler >& i_xIHdl,
+ rtl::OUString& io_rPwd,
+ bool& o_rIsEncrypted,
+ const rtl::OUString& i_rDocName
+ )
+{
+ bool bSuccess = false;
+ rtl::OString aPDFFile;
+ aPDFFile = rtl::OUStringToOString( i_rPath, osl_getThreadTextEncoding() );
+
+ pdfparse::PDFReader aParser;
+ boost::scoped_ptr<pdfparse::PDFEntry> pEntry( aParser.read( aPDFFile.getStr() ));
+ if( pEntry )
+ {
+ pdfparse::PDFFile* pPDFFile = dynamic_cast<pdfparse::PDFFile*>(pEntry.get());
+ if( pPDFFile )
+ {
+ o_rIsEncrypted = pPDFFile->isEncrypted();
+ if( o_rIsEncrypted )
+ {
+ bool bAuthenticated = false;
+ if( io_rPwd.getLength() )
+ {
+ rtl::OString aIsoPwd = rtl::OUStringToOString( io_rPwd,
+ RTL_TEXTENCODING_ISO_8859_1 );
+ bAuthenticated = pPDFFile->setupDecryptionData( aIsoPwd.getStr() );
+ // trash password string on heap
+ rtl_zeroMemory( (void*)aIsoPwd.getStr(), aIsoPwd.getLength() );
+ }
+ if( bAuthenticated )
+ bSuccess = true;
+ else
+ {
+ if( i_xIHdl.is() )
+ {
+ bool bEntered = false;
+ do
+ {
+ bEntered = getPassword( i_xIHdl, io_rPwd, ! bEntered, i_rDocName );
+ rtl::OString aIsoPwd = rtl::OUStringToOString( io_rPwd,
+ RTL_TEXTENCODING_ISO_8859_1 );
+ bAuthenticated = pPDFFile->setupDecryptionData( aIsoPwd.getStr() );
+ // trash password string on heap
+ rtl_zeroMemory( (void*)aIsoPwd.getStr(), aIsoPwd.getLength() );
+ } while( bEntered && ! bAuthenticated );
+ }
+
+ OSL_TRACE( "password: %s\n", bAuthenticated ? "matches" : "does not match" );
+ bSuccess = bAuthenticated;
+ }
+ // trash password string on heap
+ rtl_zeroMemory( (void*)io_rPwd.getStr(), io_rPwd.getLength()*sizeof(sal_Unicode) );
+ if( bAuthenticated )
+ {
+ rtl::OUStringBuffer aBuf( 128 );
+ aBuf.appendAscii( "_OOO_pdfi_Credentials_" );
+ aBuf.append( pPDFFile->getDecryptionKey() );
+ io_rPwd = aBuf.makeStringAndClear();
+ }
+ }
+ else
+ bSuccess = true;
+ }
+ }
+ return bSuccess;
+}
+
+bool xpdf_ImportFromFile( const ::rtl::OUString& rURL,
+ const ContentSinkSharedPtr& rSink,
+ const uno::Reference< task::XInteractionHandler >& xIHdl,
+ const rtl::OUString& rPwd,
+ const uno::Reference< uno::XComponentContext >& xContext )
+{
+ OSL_ASSERT(rSink);
+
+ ::rtl::OUString aSysUPath;
+ if( osl_getSystemPathFromFileURL( rURL.pData, &aSysUPath.pData ) != osl_File_E_None )
+ return false;
+ rtl::OUString aDocName( rURL.copy( rURL.lastIndexOf( sal_Unicode('/') )+1 ) );
+
+ // check for encryption, if necessary get password
+ rtl::OUString aPwd( rPwd );
+ bool bIsEncrypted = false;
+ if( checkEncryption( aSysUPath, xIHdl, aPwd, bIsEncrypted, aDocName ) == false )
+ return false;
+
+ rtl::OUStringBuffer converterURL = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("xpdfimport"));
+
+ // retrieve package location url (xpdfimport executable is located there)
+ // ---------------------------------------------------
+ uno::Reference<deployment::XPackageInformationProvider> xProvider(
+ xContext->getValueByName(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/singletons/com.sun.star.deployment.PackageInformationProvider"))),
+ uno::UNO_QUERY);
+ if( xProvider.is() )
+ {
+ converterURL.insert(
+ 0,
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")));
+ converterURL.insert(
+ 0,
+ xProvider->getPackageLocation(
+ rtl::OUString::createFromAscii(
+ BOOST_PP_STRINGIZE(PDFI_IMPL_IDENTIFIER))));
+ }
+
+ // spawn separate process to keep LGPL/GPL code apart.
+ // ---------------------------------------------------
+ rtl_uString** ppEnv = NULL;
+ sal_uInt32 nEnv = 0;
+
+ #if defined UNX && ! defined MACOSX
+ rtl::OUString aStr( RTL_CONSTASCII_USTRINGPARAM( "$URE_LIB_DIR" ) );
+ rtl_bootstrap_expandMacros( &aStr.pData );
+ rtl::OUString aSysPath;
+ osl_getSystemPathFromFileURL( aStr.pData, &aSysPath.pData );
+ rtl::OUStringBuffer aEnvBuf( aStr.getLength() + 20 );
+ aEnvBuf.appendAscii( "LD_LIBRARY_PATH=" );
+ aEnvBuf.append( aSysPath );
+ aStr = aEnvBuf.makeStringAndClear();
+ ppEnv = &aStr.pData;
+ nEnv = 1;
+ #endif
+
+ rtl_uString* args[] = { aSysUPath.pData };
+ sal_Int32 nArgs = 1;
+
+ oslProcess aProcess;
+ oslFileHandle pIn = NULL;
+ oslFileHandle pOut = NULL;
+ oslFileHandle pErr = NULL;
+ const oslProcessError eErr =
+ osl_executeProcess_WithRedirectedIO(converterURL.makeStringAndClear().pData,
+ args,
+ nArgs,
+ osl_Process_SEARCHPATH|osl_Process_HIDDEN,
+ osl_getCurrentSecurity(),
+ 0, ppEnv, nEnv,
+ &aProcess, &pIn, &pOut, &pErr);
+
+ bool bRet=true;
+ try
+ {
+ if( eErr!=osl_Process_E_None )
+ return false;
+
+ if( pIn )
+ {
+ rtl::OStringBuffer aBuf(256);
+ if( bIsEncrypted )
+ aBuf.append( rtl::OUStringToOString( aPwd, RTL_TEXTENCODING_ISO_8859_1 ) );
+ aBuf.append( '\n' );
+
+ sal_uInt64 nWritten = 0;
+ osl_writeFile( pIn, aBuf.getStr(), sal_uInt64(aBuf.getLength()), &nWritten );
+ }
+
+ if( pOut && pErr )
+ {
+ // read results of PDF parser. One line - one call to
+ // OutputDev. stderr is used for alternate streams, like
+ // embedded fonts and bitmaps
+ Parser aParser(rSink,pErr,xContext);
+ ::rtl::OStringBuffer line;
+ while( osl_File_E_None == readLine(pOut, line) && line.getLength() )
+ aParser.parseLine(line.makeStringAndClear());
+ }
+ }
+ catch( uno::Exception& )
+ {
+ // crappy C file interface. need manual resource dealloc
+ bRet = false;
+ }
+
+ if( pIn )
+ osl_closeFile(pIn);
+ if( pOut )
+ osl_closeFile(pOut);
+ if( pErr )
+ osl_closeFile(pErr);
+ osl_freeProcessHandle(aProcess);
+ return bRet;
+}
+
+
+bool xpdf_ImportFromStream( const uno::Reference< io::XInputStream >& xInput,
+ const ContentSinkSharedPtr& rSink,
+ const uno::Reference<task::XInteractionHandler >& xIHdl,
+ const rtl::OUString& rPwd,
+ const uno::Reference< uno::XComponentContext >& xContext )
+{
+ OSL_ASSERT(xInput.is());
+ OSL_ASSERT(rSink);
+
+ // convert XInputStream to local temp file
+ oslFileHandle aFile = NULL;
+ rtl::OUString aURL;
+ if( osl_createTempFile( NULL, &aFile, &aURL.pData ) != osl_File_E_None )
+ return false;
+
+ // copy content, buffered...
+ const sal_uInt32 nBufSize = 4096;
+ uno::Sequence<sal_Int8> aBuf( nBufSize );
+ sal_uInt64 nBytes = 0;
+ sal_uInt64 nWritten = 0;
+ bool bSuccess = true;
+ do
+ {
+ try
+ {
+ nBytes = xInput->readBytes( aBuf, nBufSize );
+ }
+ catch( com::sun::star::uno::Exception& )
+ {
+ osl_closeFile( aFile );
+ throw;
+ }
+ if( nBytes > 0 )
+ {
+ osl_writeFile( aFile, aBuf.getConstArray(), nBytes, &nWritten );
+ if( nWritten != nBytes )
+ {
+ bSuccess = false;
+ break;
+ }
+ }
+ }
+ while( nBytes == nBufSize );
+
+ osl_closeFile( aFile );
+
+ if ( bSuccess )
+ bSuccess = xpdf_ImportFromFile( aURL, rSink, xIHdl, rPwd, xContext );
+ osl_removeFile( aURL.pData );
+
+ return bSuccess;
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/xpdftest/binary_0_out.def b/sdext/source/pdfimport/xpdftest/binary_0_out.def
new file mode 100644
index 000000000000..3729d923afba
--- /dev/null
+++ b/sdext/source/pdfimport/xpdftest/binary_0_out.def
Binary files differ
diff --git a/sdext/source/pdfimport/xpdftest/binary_1_out.def b/sdext/source/pdfimport/xpdftest/binary_1_out.def
new file mode 100644
index 000000000000..17f920d5d539
--- /dev/null
+++ b/sdext/source/pdfimport/xpdftest/binary_1_out.def
Binary files differ
diff --git a/sdext/source/pdfimport/xpdftest/book.pdf b/sdext/source/pdfimport/xpdftest/book.pdf
new file mode 100644
index 000000000000..744a99aebeb0
--- /dev/null
+++ b/sdext/source/pdfimport/xpdftest/book.pdf
Binary files differ
diff --git a/sdext/source/pdfimport/xpdftest/makefile.mk b/sdext/source/pdfimport/xpdftest/makefile.mk
new file mode 100644
index 000000000000..23cc79be17af
--- /dev/null
+++ b/sdext/source/pdfimport/xpdftest/makefile.mk
@@ -0,0 +1,57 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+PRJNAME=sdext
+TARGET=xpdftest
+TARGETTYPE=CUI
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+.IF "$(ENABLE_PDFIMPORT)" == "NO"
+@all:
+ @echo "PDF Import extension disabled."
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+
+$(MISC)$/test_0_succeeded: $(BIN)$/xpdfimport$(EXECPOST) binary_0_out.def text_0_out.def testinput.pdf
+ $(BIN)$/xpdfimport -f $(MISC)$/binary_0_out testinput.pdf > $(MISC)$/text_0_out
+ diff --strip-trailing-cr $(MISC)$/binary_0_out binary_0_out.def
+ diff --strip-trailing-cr $(MISC)$/text_0_out text_0_out.def
+ $(TOUCH) $@
+
+$(MISC)$/test_1_succeeded: $(BIN)$/xpdfimport$(EXECPOST) binary_1_out.def text_1_out.def book.pdf
+ $(BIN)$/xpdfimport -f $(MISC)$/binary_1_out book.pdf > $(MISC)$/text_1_out
+ diff --strip-trailing-cr $(MISC)$/binary_1_out binary_1_out.def
+ diff --strip-trailing-cr $(MISC)$/text_1_out text_1_out.def
+ $(TOUCH) $@
diff --git a/sdext/source/pdfimport/xpdftest/testinput.odp b/sdext/source/pdfimport/xpdftest/testinput.odp
new file mode 100644
index 000000000000..fdfa53a8cf95
--- /dev/null
+++ b/sdext/source/pdfimport/xpdftest/testinput.odp
Binary files differ
diff --git a/sdext/source/pdfimport/xpdftest/testinput.pdf b/sdext/source/pdfimport/xpdftest/testinput.pdf
new file mode 100644
index 000000000000..c1a1b84cea0b
--- /dev/null
+++ b/sdext/source/pdfimport/xpdftest/testinput.pdf
Binary files differ
diff --git a/sdext/source/pdfimport/xpdftest/text_0_out.def b/sdext/source/pdfimport/xpdftest/text_0_out.def
new file mode 100644
index 000000000000..2c9e52fa2f6e
--- /dev/null
+++ b/sdext/source/pdfimport/xpdftest/text_0_out.def
@@ -0,0 +1,202 @@
+setPageNum 1
+startPage 79400.000000 59500.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 59500.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 794.000000 0.000000 0 794.000000 595.000000 0 0.000000 595.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.300000 0 793.800000 -0.300000 0 793.800000 595.000000 0 0.000000 595.000000 0 0.000000 -0.300000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 21 1 0 0 0 1400.000000 11128 BAAAAA+DejaVuSerif
+drawChar 39.700000 52.692000 44.138000 38.692000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 21 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSerif
+drawChar 395.000000 52.692000 399.438000 38.692000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+updateLineDash 0.000000 4 14.376390 14.376390 14.376390 14.376390
+strokePath subpath 0 498.900000 538.300000 0 144.600000 297.400000 0
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 16 1 0 0 0 1800.000000 23060 CAAAAA+DejaVuSans
+drawChar 35.400000 466.704000 46.380000 448.704000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 46.398000 466.704000 57.792000 448.704000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 57.792000 466.704000 62.778000 448.704000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 62.796000 466.704000 72.156000 448.704000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 72.192000 466.704000 77.898000 448.704000 1.000000 0.000000 0.000000 1.000000
+drawChar 77.898000 466.704000 82.884000 448.704000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.902000 466.704000 92.262000 448.704000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 92.298000 466.704000 98.004000 448.704000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.004000 466.704000 109.020000 448.704000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.002000 466.704000 114.708000 448.704000 1.000000 0.000000 0.000000 1.000000
+drawChar 114.708000 466.704000 121.764000 448.704000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 121.800000 466.704000 132.870000 448.704000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.906000 466.704000 142.266000 448.704000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 142.302000 466.704000 149.358000 448.704000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 149.394000 466.704000 156.450000 448.704000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 156.486000 466.704000 167.556000 448.704000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 167.286000 466.704000 177.924000 448.704000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 177.978000 466.704000 185.034000 448.704000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 16 1 0 0 0 1800.000000 0 CAAAAA+DejaVuSans
+drawChar 35.400000 445.804000 48.864000 427.804000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 48.900000 445.804000 59.970000 427.804000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 60.006000 445.804000 74.712000 427.804000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 74.712000 445.804000 80.418000 427.804000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.418000 445.804000 91.830000 427.804000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 91.812000 445.804000 102.828000 427.804000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 102.810000 445.804000 110.208000 427.804000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 110.208000 445.804000 121.224000 427.804000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 121.206000 445.804000 132.618000 427.804000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 132.600000 445.804000 139.998000 427.804000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 139.998000 445.804000 151.014000 427.804000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.996000 445.804000 162.408000 427.804000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 162.390000 445.804000 173.784000 427.804000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 173.784000 445.804000 179.490000 427.804000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 16 1 0 0 0 1800.000000 0 CAAAAA+DejaVuSans
+drawChar 35.400000 425.004000 46.794000 407.004000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 46.794000 425.004000 57.864000 407.004000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 57.900000 425.004000 72.606000 407.004000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 72.606000 425.004000 78.312000 407.004000 1.000000 0.000000 0.000000 1.000000
+drawChar 78.312000 425.004000 83.298000 407.004000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 83.316000 425.004000 88.302000 407.004000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.320000 425.004000 99.714000 407.004000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.714000 425.004000 110.784000 407.004000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.501953 1.000000
+updateFont 16 1 0 0 0 1800.000000 0 CAAAAA+DejaVuSans
+drawChar 35.400000 404.104000 48.918000 386.104000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 48.900000 404.104000 59.538000 386.104000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 59.592000 404.104000 71.004000 386.104000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 70.986000 404.104000 82.056000 386.104000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 82.092000 404.104000 89.490000 386.104000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.490000 404.104000 94.476000 386.104000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.494000 404.104000 99.480000 386.104000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 99.498000 404.104000 110.892000 386.104000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.892000 404.104000 121.314000 386.104000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 121.296000 404.104000 127.002000 386.104000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 127.002000 404.104000 132.708000 386.104000 1.000000 0.000000 0.000000 1.000000
+drawChar 132.708000 404.104000 139.764000 386.104000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 139.800000 404.104000 151.194000 386.104000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.194000 404.104000 156.180000 386.104000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 156.198000 404.104000 165.558000 386.104000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 165.594000 404.104000 171.300000 386.104000 1.000000 0.000000 0.000000 1.000000
+drawChar 171.300000 404.104000 176.286000 386.104000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 176.304000 404.104000 185.664000 386.104000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 11 1 0 0 0 1440.000000 1780 DAAAAA+OpenSymbol
+drawChar 405.400000 244.990400 416.833600 230.590400 1.000000 0.000000 0.000000 1.000000 â—
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 16 1 0 0 0 3200.000000 0 CAAAAA+DejaVuSans
+drawChar 430.900000 254.796000 450.420000 222.796000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 450.388000 254.796000 470.644000 222.796000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 470.676000 254.796000 479.540000 222.796000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.572000 254.796000 496.212000 222.796000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 496.276000 254.796000 506.420000 222.796000 1.000000 0.000000 0.000000 1.000000
+drawChar 506.484000 254.796000 515.348000 222.796000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 515.380000 254.796000 532.020000 222.796000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 532.084000 254.796000 542.228000 222.796000 1.000000 0.000000 0.000000 1.000000
+drawChar 542.292000 254.796000 573.460000 222.796000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 573.492000 254.796000 593.044000 222.796000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 593.108000 254.796000 606.260000 222.796000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 605.620000 254.796000 625.300000 222.796000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 625.332000 254.796000 635.476000 222.796000 1.000000 0.000000 0.000000 1.000000
+drawChar 635.540000 254.796000 648.084000 222.796000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 648.052000 254.796000 667.732000 222.796000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 667.156000 254.796000 686.068000 222.796000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 686.068000 254.796000 698.612000 222.796000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 16 1 0 0 0 3200.000000 0 CAAAAA+DejaVuSans
+drawChar 430.900000 217.396000 450.452000 185.396000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 450.516000 217.396000 470.772000 185.396000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 470.804000 217.396000 483.348000 185.396000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 483.316000 217.396000 492.180000 185.396000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 492.212000 217.396000 501.076000 185.396000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 501.108000 217.396000 521.364000 185.396000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 521.396000 217.396000 541.076000 185.396000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 541.108000 217.396000 551.252000 185.396000 1.000000 0.000000 0.000000 1.000000
+drawChar 551.316000 217.396000 582.484000 185.396000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 582.516000 217.396000 602.068000 185.396000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 602.132000 217.396000 622.420000 185.396000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 622.420000 217.396000 642.100000 185.396000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 11 1 0 0 0 1440.000000 0 DAAAAA+OpenSymbol
+drawChar 405.400000 156.190400 416.833600 141.790400 1.000000 0.000000 0.000000 1.000000 â—
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 16 1 0 0 0 3200.000000 0 CAAAAA+DejaVuSans
+drawChar 430.900000 165.896000 454.836000 133.896000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 454.804000 165.896000 474.484000 133.896000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 474.516000 165.896000 500.660000 133.896000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 500.724000 165.896000 510.868000 133.896000 1.000000 0.000000 0.000000 1.000000
+drawChar 510.932000 165.896000 531.220000 133.896000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 531.220000 165.896000 550.804000 133.896000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 550.836000 165.896000 563.988000 133.896000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 564.052000 165.896000 583.636000 133.896000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 583.668000 165.896000 603.956000 133.896000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 603.956000 165.896000 617.108000 133.896000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 617.172000 165.896000 636.756000 133.896000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 636.788000 165.896000 657.076000 133.896000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 657.076000 165.896000 677.332000 133.896000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 120.500000 98.900000 0 77.400000 98.900000 1 42.500000 133.800000 1 42.500000 176.900000 0 42.500000 219.900000 1 77.400000 254.800000 1 120.500000 254.800000 0 163.500000 254.800000 1 198.400000 219.900000 1 198.400000 176.900000 0 198.400000 133.800000 1 163.500000 98.900000 1 120.500000 98.900000 0
+saveState
+updateCtm 22680.000000 0.000000 0.000000 -14740.000000 49610.000000 27490.000000
+drawImage 800 600 0 JPEG 44129
+restoreState
+updateStrokeColor 0.000000 1.000000 0.000000 1.000000
+saveState
+updateLineWidth 28.299990
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 0 535.700000 518.500000 0 181.400000 277.500000 0
+restoreState
+restoreState
+restoreState
+endPage
+drawLink 36.500000 383.600000 185.600000 401.000000 http://download.openoffice.org/
diff --git a/sdext/source/pdfimport/xpdftest/text_1_out.def b/sdext/source/pdfimport/xpdftest/text_1_out.def
new file mode 100644
index 000000000000..c5d455f7339a
--- /dev/null
+++ b/sdext/source/pdfimport/xpdftest/text_1_out.def
@@ -0,0 +1,70338 @@
+setPageNum 20
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 3600.000000 27592 BAAAAA+DejaVuSans-Bold
+drawChar 263.700000 720.008000 299.520000 684.008000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 299.484000 720.008000 322.920000 684.008000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 322.992000 720.008000 335.520000 684.008000 1.000000 0.000000 0.000000 1.000000
+drawChar 335.484000 720.008000 365.580000 684.008000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 365.580000 720.008000 390.312000 684.008000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 390.276000 720.008000 415.872000 684.008000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 415.872000 720.008000 437.292000 684.008000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 437.256000 720.008000 461.664000 684.008000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 296.800000 0 477.900000 296.800000 0 477.900000 606.600000 0 134.300000 606.600000 0 134.300000 296.800000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 49520.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -2692.300000 0 168.100000 -2692.300000 0 168.100000 -2687.300000 0 76.900000 -2687.300000 0 76.900000 -2692.300000 0
+eoFillPath subpath 1 163.100000 -2687.400000 0 168.100000 -2687.400000 0 168.100000 -2556.800000 0 163.100000 -2556.800000 0 163.100000 -2687.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -2687.300000 0 163.100000 -2687.300000 0 163.100000 -2551.900000 0 72.000000 -2551.900000 0 72.000000 -2687.300000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 26324 CAAAAA+DejaVuSans
+drawChar 78.700000 -2556.220000 87.320000 -2566.220000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 -2556.220000 93.420000 -2566.220000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 -2556.220000 97.510000 -2566.220000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 -2556.220000 101.420000 -2566.220000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 -2556.220000 104.170000 -2566.220000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 -2556.220000 110.530000 -2566.220000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 -2556.220000 113.270000 -2566.220000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 -2556.220000 116.470000 -2566.220000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 -2556.220000 123.480000 -2566.220000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 -2556.220000 129.610000 -2566.220000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 -2556.220000 135.090000 -2566.220000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 -2556.220000 140.890000 -2566.220000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 -2556.220000 144.820000 -2566.220000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 -2556.220000 150.920000 -2566.220000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 -2556.220000 153.670000 -2566.220000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 -2556.220000 156.470000 -2566.220000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -2683.100000 0 168.200000 -2683.100000 0 168.200000 -2567.900000 0 72.000000 -2567.900000 0 72.000000 -2683.100000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 28124 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2614.948000 79.253000 -2623.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 -2614.948000 86.669000 -2623.948000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 -2614.948000 90.215000 -2623.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 -2614.948000 93.077000 -2623.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 -2614.948000 97.406000 -2623.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 -2614.948000 100.853000 -2623.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 -2614.948000 107.324000 -2623.948000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 -2614.948000 112.337000 -2623.948000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 -2614.948000 115.271000 -2623.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 -2614.948000 118.655000 -2623.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 -2614.948000 126.512000 -2623.948000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 -2614.948000 130.805000 -2623.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 -2614.948000 135.881000 -2623.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 -2614.948000 139.355000 -2623.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 -2614.948000 147.284000 -2623.948000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 -2614.948000 150.074000 -2623.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 -2614.948000 155.897000 -2623.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 -2614.948000 158.750000 -2623.948000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -2614.948000 161.853000 -2623.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2625.448000 82.124000 -2634.448000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 -2625.448000 87.137000 -2634.448000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 -2625.448000 90.071000 -2634.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 -2625.448000 93.356000 -2634.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 -2625.448000 100.403000 -2634.448000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 -2625.448000 104.921000 -2634.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 -2625.448000 109.205000 -2634.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 -2625.448000 117.737000 -2634.448000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 -2625.448000 123.119000 -2634.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 -2625.448000 128.996000 -2634.448000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 -2625.448000 132.605000 -2634.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 -2625.448000 138.392000 -2634.448000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 -2625.448000 141.749000 -2634.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 -2625.448000 149.507000 -2634.448000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 -2625.448000 153.800000 -2634.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 -2625.448000 158.876000 -2634.448000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -2625.448000 161.853000 -2634.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2635.948000 81.764000 -2644.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -2635.948000 87.596000 -2644.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 -2635.948000 93.356000 -2644.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 -2635.948000 102.050000 -2644.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 -2635.948000 113.822000 -2644.948000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 -2635.948000 122.651000 -2644.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 -2635.948000 134.117000 -2644.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 -2635.948000 138.401000 -2644.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 -2635.948000 147.149000 -2644.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 -2635.948000 158.921000 -2644.948000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -2635.948000 161.853000 -2644.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2646.448000 79.271000 -2655.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -2646.448000 84.338000 -2655.448000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 -2646.448000 89.621000 -2655.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 -2646.448000 94.643000 -2655.448000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 -2646.448000 100.502000 -2655.448000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 -2646.448000 106.262000 -2655.448000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 -2646.448000 111.518000 -2655.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 -2646.448000 116.216000 -2655.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 -2646.448000 119.249000 -2655.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 -2646.448000 122.363000 -2655.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 -2646.448000 128.186000 -2655.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 -2646.448000 131.345000 -2655.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 -2646.448000 137.060000 -2655.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 -2646.448000 140.147000 -2655.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 -2646.448000 145.007000 -2655.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 -2646.448000 148.598000 -2655.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 -2646.448000 151.460000 -2655.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 -2646.448000 155.789000 -2655.448000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 -2646.448000 158.933000 -2655.448000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2656.948000 80.702000 -2665.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 -2656.948000 83.573000 -2665.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 -2656.948000 89.396000 -2665.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 -2656.948000 95.156000 -2665.948000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 -2656.948000 100.547000 -2665.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 -2656.948000 109.052000 -2665.948000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 -2656.948000 111.959000 -2665.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 -2656.948000 117.251000 -2665.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 -2656.948000 121.904000 -2665.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 -2656.948000 126.503000 -2665.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 -2656.948000 129.338000 -2665.948000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 -2656.948000 134.936000 -2665.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 -2656.948000 143.441000 -2665.948000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 -2656.948000 148.796000 -2665.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 -2656.948000 154.574000 -2665.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 -2656.948000 158.876000 -2665.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -2656.948000 161.853000 -2665.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2667.448000 79.271000 -2676.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -2667.448000 85.094000 -2676.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -2667.448000 88.703000 -2676.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 -2667.448000 94.112000 -2676.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 -2667.448000 97.244000 -2676.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 -2667.448000 103.058000 -2676.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 -2667.448000 108.890000 -2676.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 -2667.448000 111.950000 -2676.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 -2667.448000 115.271000 -2676.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 -2667.448000 120.338000 -2676.448000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 -2667.448000 125.621000 -2676.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 -2667.448000 131.363000 -2676.448000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 -2667.448000 134.558000 -2676.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 -2667.448000 140.048000 -2676.448000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 -2667.448000 145.430000 -2676.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 -2667.448000 150.551000 -2676.448000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 -2667.448000 155.960000 -2676.448000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 -2667.448000 158.933000 -2676.448000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2677.948000 80.009000 -2686.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -2677.948000 85.364000 -2686.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 -2677.948000 88.271000 -2686.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 -2677.948000 91.169000 -2686.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 -2677.948000 97.955000 -2686.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 -2677.948000 107.765000 -2686.948000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 -2677.948000 110.672000 -2686.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 -2677.948000 115.964000 -2686.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 -2677.948000 120.617000 -2686.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 -2677.948000 125.216000 -2686.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 -2677.948000 128.051000 -2686.948000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 -2677.948000 134.954000 -2686.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 -2677.948000 146.285000 -2686.948000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 -2677.948000 151.667000 -2686.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 -2677.948000 155.906000 -2686.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 -2677.948000 159.033000 -2686.948000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -2687.400000 0 72.100000 -2687.400000 0 72.100000 -2551.900000 0 72.000000 -2551.900000 0 72.000000 -2687.400000 0
+eoFillPath subpath 1 163.100000 -2687.400000 0 163.200000 -2687.400000 0 163.200000 -2551.900000 0 163.100000 -2551.900000 0 163.100000 -2687.400000 0
+eoFillPath subpath 1 72.000000 -2552.000000 0 163.200000 -2552.000000 0 163.200000 -2551.900000 0 72.000000 -2551.900000 0 72.000000 -2552.000000 0
+eoFillPath subpath 1 72.000000 -2687.400000 0 163.200000 -2687.400000 0 163.200000 -2687.300000 0 72.000000 -2687.300000 0 72.000000 -2687.400000 0
+saveState
+eoClipPath subpath 1 96.900000 -2612.100000 0 138.300000 -2612.100000 0 138.300000 -2567.900000 0 96.900000 -2567.900000 0 96.900000 -2612.100000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 340400.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -2966.900000 0 165.500000 -2966.900000 0 165.500000 -2961.900000 0 76.900000 -2961.900000 0 76.900000 -2966.900000 0
+eoFillPath subpath 1 160.500000 -2962.000000 0 165.500000 -2962.000000 0 165.500000 -2805.700000 0 160.500000 -2805.700000 0 160.500000 -2962.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -2961.900000 0 121.400000 -2961.900000 0 121.400000 -2800.800000 0 72.000000 -2800.800000 0 72.000000 -2961.900000 0
+saveState
+eoClipPath subpath 1 72.000000 -2961.900000 0 160.500000 -2961.900000 0 160.500000 -2800.800000 0 72.000000 -2800.800000 0 72.000000 -2961.900000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 377100.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 -2805.120000 89.280000 -2815.120000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 -2805.120000 95.630000 -2815.120000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 -2805.120000 99.520000 -2815.120000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 -2805.120000 102.270000 -2815.120000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 -2805.120000 108.450000 -2815.120000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 -2805.120000 112.610000 -2815.120000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 -2805.120000 118.510000 -2815.120000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 -2805.120000 121.670000 -2815.120000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 -2805.120000 124.470000 -2815.120000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 -2805.120000 130.830000 -2815.120000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 -2805.120000 133.970000 -2815.120000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 -2805.120000 137.920000 -2815.120000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 -2805.120000 144.230000 -2815.120000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 -2805.120000 150.350000 -2815.120000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 -2805.120000 153.570000 -2815.120000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 -2816.820000 95.000000 -2826.820000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 -2816.820000 97.770000 -2826.820000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 -2816.820000 103.000000 -2826.820000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 -2816.820000 109.330000 -2826.820000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 -2816.820000 117.470000 -2826.820000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 -2816.820000 123.620000 -2826.820000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 -2816.820000 128.800000 -2826.820000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 -2816.820000 135.130000 -2826.820000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 -2816.820000 141.250000 -2826.820000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 -2816.820000 145.410000 -2826.820000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2831.648000 82.961000 -2840.648000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 -2831.648000 87.614000 -2840.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 -2831.648000 93.356000 -2840.648000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 -2831.648000 98.612000 -2840.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 -2831.648000 103.733000 -2840.648000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 -2831.648000 106.568000 -2840.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 -2831.648000 111.959000 -2840.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 -2831.648000 114.866000 -2840.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 -2831.648000 117.665000 -2840.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 -2831.648000 122.768000 -2840.648000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 -2831.648000 125.747000 -2840.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 -2831.648000 131.651000 -2840.648000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 -2831.648000 136.907000 -2840.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 -2831.648000 142.307000 -2840.648000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 -2831.648000 148.049000 -2840.648000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 -2831.648000 150.956000 -2840.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 -2831.648000 156.302000 -2840.648000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2831.648000 159.253000 -2840.648000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2842.148000 84.095000 -2851.148000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -2842.148000 89.900000 -2851.148000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 -2842.148000 95.318000 -2851.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 -2842.148000 100.349000 -2851.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 -2842.148000 110.789000 -2851.148000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 -2842.148000 111.464000 -2851.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 -2842.148000 114.362000 -2851.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 -2842.148000 119.348000 -2851.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 -2842.148000 126.962000 -2851.148000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 -2842.148000 132.047000 -2851.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 -2842.148000 139.958000 -2851.148000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 -2842.148000 142.865000 -2851.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 -2842.148000 147.410000 -2851.148000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 -2842.148000 153.287000 -2851.148000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -2842.148000 156.333000 -2851.148000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2852.648000 84.095000 -2861.648000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -2852.648000 89.468000 -2861.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 -2852.648000 94.121000 -2861.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 -2852.648000 99.899000 -2861.648000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 -2852.648000 105.218000 -2861.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 -2852.648000 109.502000 -2861.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 -2852.648000 115.649000 -2861.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 -2852.648000 122.327000 -2861.648000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 -2852.648000 127.718000 -2861.648000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 -2852.648000 132.002000 -2861.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 -2852.648000 138.149000 -2861.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 -2852.648000 145.205000 -2861.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 -2852.648000 150.992000 -2861.648000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 -2852.648000 156.311000 -2861.648000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2852.648000 159.253000 -2861.648000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2863.148000 82.394000 -2872.148000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 -2863.148000 86.705000 -2872.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 -2863.148000 91.322000 -2872.148000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 -2863.148000 94.913000 -2872.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 -2863.148000 98.054000 -2872.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 -2863.148000 102.014000 -2872.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 -2863.148000 104.876000 -2872.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 -2863.148000 113.435000 -2872.148000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 -2863.148000 118.718000 -2872.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 -2863.148000 121.949000 -2872.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 -2863.148000 125.063000 -2872.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 -2863.148000 130.886000 -2872.148000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 -2863.148000 134.045000 -2872.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 -2863.148000 138.005000 -2872.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 -2863.148000 143.792000 -2872.148000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 -2863.148000 149.111000 -2872.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 -2863.148000 151.964000 -2872.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 -2863.148000 156.293000 -2872.148000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -2863.148000 159.153000 -2872.148000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2873.648000 79.271000 -2882.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 -2873.648000 82.169000 -2882.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 -2873.648000 85.526000 -2882.648000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 -2873.648000 90.818000 -2882.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 -2873.648000 94.454000 -2882.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 -2873.648000 99.008000 -2882.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 -2873.648000 104.318000 -2882.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 -2873.648000 110.096000 -2882.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 -2873.648000 115.856000 -2882.648000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 -2873.648000 119.546000 -2882.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 -2873.648000 124.001000 -2882.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 -2873.648000 129.509000 -2882.648000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 -2873.648000 133.145000 -2882.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 -2873.648000 139.751000 -2882.648000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 -2873.648000 145.205000 -2882.648000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 -2873.648000 148.841000 -2882.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 -2873.648000 152.657000 -2882.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 -2873.648000 156.293000 -2882.648000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2873.648000 159.253000 -2882.648000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2884.148000 84.095000 -2893.148000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -2884.148000 88.406000 -2893.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 -2884.148000 93.824000 -2893.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 -2884.148000 99.602000 -2893.148000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 -2884.148000 105.362000 -2893.148000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 -2884.148000 108.422000 -2893.148000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 -2884.148000 116.747000 -2893.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 -2884.148000 129.275000 -2893.148000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 -2884.148000 135.089000 -2893.148000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 -2884.148000 138.698000 -2893.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 -2884.148000 141.560000 -2893.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 -2884.148000 146.906000 -2893.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -2884.148000 151.190000 -2893.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 -2884.148000 156.266000 -2893.148000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2884.148000 159.253000 -2893.148000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2894.648000 82.196000 -2903.648000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 -2894.648000 87.560000 -2903.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 -2894.648000 92.213000 -2903.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 -2894.648000 96.551000 -2903.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 -2894.648000 101.708000 -2903.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 -2894.648000 107.216000 -2903.648000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 -2894.648000 111.653000 -2903.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 -2894.648000 118.961000 -2903.648000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 -2894.648000 124.316000 -2903.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 -2894.648000 128.654000 -2903.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 -2894.648000 133.172000 -2903.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 -2894.648000 138.995000 -2903.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 -2894.648000 143.612000 -2903.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 -2894.648000 148.913000 -2903.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 -2894.648000 153.197000 -2903.648000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -2894.648000 156.333000 -2903.648000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2905.148000 80.009000 -2914.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -2905.148000 85.319000 -2914.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 -2905.148000 91.061000 -2914.148000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 -2905.148000 100.052000 -2914.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 -2905.148000 113.993000 -2914.148000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 -2905.148000 116.873000 -2914.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 -2905.148000 120.410000 -2914.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 -2905.148000 126.296000 -2914.148000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 -2905.148000 135.350000 -2914.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 -2905.148000 145.106000 -2914.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 -2905.148000 150.893000 -2914.148000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 -2905.148000 156.212000 -2914.148000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2905.148000 159.253000 -2914.148000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2915.648000 82.196000 -2924.648000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 -2915.648000 87.560000 -2924.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 -2915.648000 93.392000 -2924.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 -2915.648000 99.152000 -2924.648000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 -2915.648000 101.960000 -2924.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 -2915.648000 107.306000 -2924.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 -2915.648000 111.905000 -2924.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 -2915.648000 115.640000 -2924.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 -2915.648000 122.444000 -2924.648000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 -2915.648000 127.898000 -2924.648000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 -2915.648000 135.575000 -2924.648000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 -2915.648000 141.380000 -2924.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 -2915.648000 145.241000 -2924.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 -2915.648000 150.803000 -2924.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 -2915.648000 156.302000 -2924.648000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2915.648000 159.253000 -2924.648000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2926.148000 80.009000 -2935.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -2926.148000 85.796000 -2935.148000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 -2926.148000 91.115000 -2935.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 -2926.148000 95.399000 -2935.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 -2926.148000 100.718000 -2935.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 -2926.148000 107.054000 -2935.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 -2926.148000 118.097000 -2935.148000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 -2926.148000 123.524000 -2935.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 -2926.148000 129.401000 -2935.148000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 -2926.148000 131.768000 -2935.148000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 -2926.148000 135.413000 -2935.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 -2926.148000 141.659000 -2935.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 -2926.148000 150.965000 -2935.148000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 -2926.148000 156.320000 -2935.148000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2926.148000 159.253000 -2935.148000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2936.648000 81.017000 -2945.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 -2936.648000 84.608000 -2945.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 -2936.648000 89.963000 -2945.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 -2936.648000 92.870000 -2945.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 -2936.648000 98.693000 -2945.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 -2936.648000 103.310000 -2945.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 -2936.648000 107.243000 -2945.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 -2936.648000 116.081000 -2945.648000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 -2936.648000 121.886000 -2945.648000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 -2936.648000 127.205000 -2945.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 -2936.648000 132.983000 -2945.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 -2936.648000 136.943000 -2945.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 -2936.648000 143.846000 -2945.648000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 -2936.648000 148.184000 -2945.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 -2936.648000 153.260000 -2945.648000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -2936.648000 156.433000 -2945.648000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2947.148000 79.271000 -2956.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -2947.148000 85.094000 -2956.148000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -2947.148000 90.854000 -2956.148000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 -2947.148000 93.653000 -2956.148000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -2962.000000 0 72.100000 -2962.000000 0 72.100000 -2800.800000 0 72.000000 -2800.800000 0 72.000000 -2962.000000 0
+eoFillPath subpath 1 160.500000 -2962.000000 0 160.600000 -2962.000000 0 160.600000 -2800.800000 0 160.500000 -2800.800000 0 160.500000 -2962.000000 0
+eoFillPath subpath 1 72.000000 -2800.900000 0 160.600000 -2800.900000 0 160.600000 -2800.800000 0 72.000000 -2800.800000 0 72.000000 -2800.900000 0
+eoFillPath subpath 1 72.000000 -2962.000000 0 160.600000 -2962.000000 0 160.600000 -2961.900000 0 72.000000 -2961.900000 0 72.000000 -2962.000000 0
+saveState
+eoClipPath subpath 1 108.000000 -3449.400000 0 178.900000 -3449.400000 0 178.900000 -3392.700000 0 108.000000 -3392.700000 0 108.000000 -3449.400000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 424130.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -7507.700000 0 165.500000 -7507.700000 0 165.500000 -7502.700000 0 76.900000 -7502.700000 0 76.900000 -7507.700000 0
+eoFillPath subpath 1 160.500000 -7502.800000 0 165.500000 -7502.800000 0 165.500000 -7394.000000 0 160.500000 -7394.000000 0 160.500000 -7502.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -7502.700000 0 160.500000 -7502.700000 0 160.500000 -7389.100000 0 72.000000 -7389.100000 0 72.000000 -7502.700000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -7393.448000 83.771000 -7402.448000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 -7393.448000 89.594000 -7402.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 -7393.448000 92.465000 -7402.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 -7393.448000 97.568000 -7402.448000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 -7393.448000 100.943000 -7402.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 -7393.448000 106.955000 -7402.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 -7393.448000 110.447000 -7402.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 -7393.448000 114.425000 -7402.448000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 -7393.448000 119.717000 -7402.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 -7393.448000 127.493000 -7402.448000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 -7393.448000 130.949000 -7402.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 -7393.448000 136.574000 -7402.448000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 -7393.448000 141.920000 -7402.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 -7393.448000 147.365000 -7402.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 -7393.448000 151.703000 -7402.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 -7393.448000 156.320000 -7402.448000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -7393.448000 159.153000 -7402.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -7403.948000 81.764000 -7412.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -7403.948000 85.130000 -7412.948000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 -7403.948000 88.712000 -7412.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 -7403.948000 94.022000 -7412.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 -7403.948000 98.306000 -7412.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -7403.948000 102.455000 -7412.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 -7403.948000 106.676000 -7412.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 -7403.948000 110.312000 -7412.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 -7403.948000 114.920000 -7412.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 -7403.948000 119.060000 -7412.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 -7403.948000 125.450000 -7412.948000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 -7403.948000 130.832000 -7412.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 -7403.948000 139.445000 -7412.948000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 -7403.948000 145.169000 -7412.948000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 -7403.948000 148.076000 -7412.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 -7403.948000 153.323000 -7412.948000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -7403.948000 156.433000 -7412.948000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -7414.448000 80.009000 -7423.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -7414.448000 82.871000 -7423.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 -7414.448000 88.316000 -7423.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 -7414.448000 94.094000 -7423.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 -7414.448000 96.947000 -7423.448000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 -7414.448000 104.948000 -7423.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 -7414.448000 113.705000 -7423.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 -7414.448000 119.492000 -7423.448000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 -7414.448000 124.811000 -7423.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 -7414.448000 132.848000 -7423.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 -7414.448000 141.605000 -7423.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 -7414.448000 144.467000 -7423.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 -7414.448000 148.103000 -7423.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 -7414.448000 150.965000 -7423.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 -7414.448000 156.311000 -7423.448000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -7414.448000 159.253000 -7423.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -7424.948000 80.999000 -7433.948000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 -7424.948000 90.539000 -7433.948000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 -7424.948000 95.318000 -7433.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 -7424.948000 99.602000 -7433.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -7424.948000 102.473000 -7433.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 -7424.948000 108.260000 -7433.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 -7424.948000 110.762000 -7433.948000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 -7424.948000 115.316000 -7433.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 -7424.948000 122.156000 -7433.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 -7424.948000 132.299000 -7433.948000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 -7424.948000 136.970000 -7433.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 -7424.948000 139.877000 -7433.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 -7424.948000 142.775000 -7433.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 -7424.948000 148.022000 -7433.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 -7424.948000 152.720000 -7433.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 -7424.948000 156.311000 -7433.948000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -7424.948000 159.253000 -7433.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -7435.448000 83.006000 -7444.448000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 -7435.448000 88.793000 -7444.448000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 -7435.448000 91.664000 -7444.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 -7435.448000 94.562000 -7444.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 -7435.448000 100.349000 -7444.448000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 -7435.448000 103.157000 -7444.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 -7435.448000 108.980000 -7444.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 -7435.448000 114.740000 -7444.448000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 -7435.448000 119.375000 -7444.448000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 -7435.448000 128.033000 -7444.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 -7435.448000 141.479000 -7444.448000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 -7435.448000 146.807000 -7444.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -7435.448000 152.684000 -7444.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 -7435.448000 156.293000 -7444.448000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -7435.448000 159.253000 -7444.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -7445.948000 79.730000 -7454.948000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 -7445.948000 84.005000 -7454.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 -7445.948000 89.423000 -7454.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 -7445.948000 98.036000 -7454.948000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 -7445.948000 121.157000 -7454.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 -7445.948000 145.115000 -7454.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 -7445.948000 151.001000 -7454.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 -7445.948000 156.320000 -7454.948000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -7445.948000 159.253000 -7454.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -7456.448000 83.285000 -7465.448000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 -7456.448000 89.099000 -7465.448000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 -7456.448000 93.401000 -7465.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 -7456.448000 98.477000 -7465.448000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 -7456.448000 103.121000 -7465.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 -7456.448000 105.974000 -7465.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 -7456.448000 111.320000 -7465.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 -7456.448000 115.604000 -7465.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 -7456.448000 123.857000 -7465.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 -7456.448000 136.007000 -7465.448000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 -7456.448000 141.794000 -7465.448000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 -7456.448000 144.665000 -7465.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 -7456.448000 147.464000 -7465.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 -7456.448000 153.251000 -7465.448000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -7456.448000 156.433000 -7465.448000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -7466.948000 79.271000 -7475.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -7466.948000 85.094000 -7475.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -7466.948000 90.854000 -7475.948000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 -7466.948000 96.146000 -7475.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 -7466.948000 102.302000 -7475.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 -7466.948000 107.711000 -7475.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 -7466.948000 113.048000 -7475.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 -7466.948000 119.204000 -7475.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 -7466.948000 124.991000 -7475.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 -7466.948000 130.310000 -7475.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 -7466.948000 135.647000 -7475.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 -7466.948000 144.755000 -7475.948000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 -7466.948000 153.323000 -7475.948000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -7466.948000 156.333000 -7475.948000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -7477.448000 82.160000 -7486.448000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 -7477.448000 85.067000 -7486.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 -7477.448000 89.297000 -7486.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 -7477.448000 94.616000 -7486.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 -7477.448000 98.747000 -7486.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 -7477.448000 106.055000 -7486.448000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 -7477.448000 109.700000 -7486.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 -7477.448000 115.055000 -7486.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 -7477.448000 118.601000 -7486.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 -7477.448000 124.010000 -7486.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 -7477.448000 128.042000 -7486.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 -7477.448000 135.998000 -7486.448000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 -7477.448000 141.785000 -7486.448000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 -7477.448000 144.656000 -7486.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 -7477.448000 147.554000 -7486.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 -7477.448000 153.341000 -7486.448000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -7477.448000 156.433000 -7486.448000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -7487.948000 79.271000 -7496.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -7487.948000 85.094000 -7496.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -7487.948000 90.854000 -7496.948000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 -7487.948000 93.743000 -7496.948000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -7502.800000 0 72.100000 -7502.800000 0 72.100000 -7389.100000 0 72.000000 -7389.100000 0 72.000000 -7502.800000 0
+eoFillPath subpath 1 160.500000 -7502.800000 0 160.600000 -7502.800000 0 160.600000 -7389.100000 0 160.500000 -7389.100000 0 160.500000 -7502.800000 0
+eoFillPath subpath 1 72.000000 -7389.200000 0 160.600000 -7389.200000 0 160.600000 -7389.100000 0 72.000000 -7389.100000 0 72.000000 -7389.200000 0
+eoFillPath subpath 1 72.000000 -7502.800000 0 160.600000 -7502.800000 0 160.600000 -7502.700000 0 72.000000 -7502.700000 0 72.000000 -7502.800000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -1313.300000 0 169.600000 -1313.300000 0 169.600000 -1308.300000 0 76.900000 -1308.300000 0 76.900000 -1313.300000 0
+eoFillPath subpath 1 164.600000 -1308.400000 0 169.600000 -1308.400000 0 169.600000 -1192.800000 0 164.600000 -1192.800000 0 164.600000 -1308.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -1308.300000 0 121.400000 -1308.300000 0 121.400000 -1187.900000 0 72.000000 -1187.900000 0 72.000000 -1308.300000 0
+saveState
+eoClipPath subpath 1 72.000000 -1308.300000 0 164.600000 -1308.300000 0 164.600000 -1187.900000 0 72.000000 -1187.900000 0 72.000000 -1308.300000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 215860.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -1238.400000 0 93.700000 -1238.400000 0 93.700000 -1219.200000 0 72.000000 -1219.200000 0 72.000000 -1238.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 -1238.400000 0 169.600000 -1238.400000 0 169.600000 -1219.200000 0 93.700000 -1219.200000 0 93.700000 -1238.400000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -1255.100000 0 93.700000 -1255.100000 0 93.700000 -1238.400000 0 72.000000 -1238.400000 0 72.000000 -1255.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 -1255.100000 0 169.600000 -1255.100000 0 169.600000 -1238.400000 0 93.700000 -1238.400000 0 93.700000 -1255.100000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -1274.300000 0 93.700000 -1274.300000 0 93.700000 -1255.100000 0 72.000000 -1255.100000 0 72.000000 -1274.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 -1274.300000 0 169.600000 -1274.300000 0 169.600000 -1255.100000 0 93.700000 -1255.100000 0 93.700000 -1274.300000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -1293.500000 0 93.700000 -1293.500000 0 93.700000 -1274.300000 0 72.000000 -1274.300000 0 72.000000 -1293.500000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 -1293.500000 0 169.600000 -1293.500000 0 169.600000 -1274.300000 0 93.700000 -1274.300000 0 93.700000 -1293.500000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1192.248000 82.898000 -1201.248000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 -1192.248000 87.200000 -1201.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 -1192.248000 90.809000 -1201.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 -1192.248000 93.671000 -1201.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 -1192.248000 98.315000 -1201.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 -1192.248000 101.906000 -1201.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 -1192.248000 106.514000 -1201.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 -1192.248000 109.754000 -1201.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 -1192.248000 112.868000 -1201.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 -1192.248000 118.691000 -1201.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 -1192.248000 121.850000 -1201.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 -1192.248000 125.702000 -1201.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 -1192.248000 131.588000 -1201.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 -1192.248000 136.907000 -1201.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 -1192.248000 140.039000 -1201.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 -1192.248000 146.078000 -1201.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 -1192.248000 151.442000 -1201.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 -1192.248000 154.349000 -1201.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 -1192.248000 157.148000 -1201.248000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 -1192.248000 160.433000 -1201.248000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1202.748000 84.095000 -1211.748000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -1202.748000 89.468000 -1211.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 -1202.748000 94.580000 -1211.748000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 -1202.748000 97.631000 -1211.748000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 -1223.148000 104.443000 -1232.148000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 -1223.148000 109.060000 -1232.148000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 -1223.148000 113.398000 -1232.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 -1223.148000 119.194000 -1232.148000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 -1223.148000 124.612000 -1232.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 -1223.148000 127.465000 -1232.148000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 -1239.848000 101.176000 -1248.848000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 -1239.848000 104.074000 -1248.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 -1239.848000 109.420000 -1248.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 -1239.848000 114.442000 -1248.848000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 -1239.848000 120.202000 -1248.848000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 -1239.848000 123.811000 -1248.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 -1239.848000 129.121000 -1248.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 -1239.848000 134.899000 -1248.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 -1239.848000 139.516000 -1248.848000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 -1239.848000 143.107000 -1248.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 -1239.848000 148.417000 -1248.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 -1239.848000 151.270000 -1248.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 -1239.848000 157.093000 -1248.848000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 -1256.548000 103.048000 -1265.548000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 -1256.548000 108.421000 -1265.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 -1256.548000 113.443000 -1265.548000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 -1256.548000 118.852000 -1265.548000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 -1256.548000 124.702000 -1265.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 -1256.548000 130.021000 -1265.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 -1256.548000 135.079000 -1265.548000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 -1275.748000 104.407000 -1284.748000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 -1275.748000 109.816000 -1284.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 -1275.748000 115.594000 -1284.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 -1275.748000 121.354000 -1284.748000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 -1275.748000 125.692000 -1284.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 -1275.748000 128.563000 -1284.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 -1275.748000 133.954000 -1284.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 -1275.748000 139.786000 -1284.748000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -1308.400000 0 72.100000 -1308.400000 0 72.100000 -1187.900000 0 72.000000 -1187.900000 0 72.000000 -1308.400000 0
+eoFillPath subpath 1 164.600000 -1308.400000 0 164.700000 -1308.400000 0 164.700000 -1187.900000 0 164.600000 -1187.900000 0 164.600000 -1308.400000 0
+eoFillPath subpath 1 72.000000 -1188.000000 0 164.700000 -1188.000000 0 164.700000 -1187.900000 0 72.000000 -1187.900000 0 72.000000 -1188.000000 0
+eoFillPath subpath 1 72.000000 -1308.400000 0 164.700000 -1308.400000 0 164.700000 -1308.300000 0 72.000000 -1308.300000 0 72.000000 -1308.400000 0
+eoFillPath subpath 1 91.300000 -1293.500000 0 93.700000 -1293.500000 0 93.700000 -1219.200000 0 91.300000 -1219.200000 0 91.300000 -1293.500000 0
+eoFillPath subpath 1 72.000000 -1274.300000 0 169.600000 -1274.300000 0 169.600000 -1271.900000 0 72.000000 -1271.900000 0 72.000000 -1274.300000 0
+eoFillPath subpath 1 72.000000 -1221.600000 0 169.600000 -1221.600000 0 169.600000 -1219.200000 0 72.000000 -1219.200000 0 72.000000 -1221.600000 0
+eoFillPath subpath 1 72.000000 -1293.500000 0 169.600000 -1293.500000 0 169.600000 -1291.100000 0 72.000000 -1291.100000 0 72.000000 -1293.500000 0
+saveState
+eoClipPath subpath 1 108.000000 -9159.400000 0 150.800000 -9159.400000 0 150.800000 -9115.200000 0 108.000000 -9115.200000 0 108.000000 -9159.400000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 995140.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -10009.400000 0 499.600000 -10009.400000 0 499.600000 -10004.300000 0 186.800000 -10004.300000 0 186.800000 -10009.400000 0
+eoFillPath subpath 1 494.500000 -10004.400000 0 499.600000 -10004.400000 0 499.600000 -9816.000000 0 494.500000 -9816.000000 0 494.500000 -10004.400000 0
+saveState
+eoClipPath subpath 1 181.800000 -10004.400000 0 494.500000 -10004.400000 0 494.500000 -9811.000000 0 181.800000 -9811.000000 0 181.800000 -10004.400000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -9810.900000 0 494.500000 -9810.900000 0 494.500000 -9810.900000 0 181.700000 -9810.900000 0
+eoFillPath subpath 1 181.700000 -9810.900000 0 494.500000 -9810.900000 0 494.500000 -9811.700000 0 181.700000 -9811.700000 0 181.700000 -9810.900000 0
+eoFillPath subpath 1 181.700000 -9811.700000 0 494.500000 -9811.700000 0 494.500000 -9812.400000 0 181.700000 -9812.400000 0 181.700000 -9811.700000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -9812.400000 0 494.500000 -9812.400000 0 494.500000 -9813.200000 0 181.700000 -9813.200000 0 181.700000 -9812.400000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -9813.200000 0 494.500000 -9813.200000 0 494.500000 -9814.000000 0 181.700000 -9814.000000 0 181.700000 -9813.200000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -9814.000000 0 494.500000 -9814.000000 0 494.500000 -9814.700000 0 181.700000 -9814.700000 0 181.700000 -9814.000000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -9814.700000 0 494.500000 -9814.700000 0 494.500000 -9815.500000 0 181.700000 -9815.500000 0 181.700000 -9814.700000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -9815.500000 0 494.500000 -9815.500000 0 494.500000 -9816.200000 0 181.700000 -9816.200000 0 181.700000 -9815.500000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -9816.200000 0 494.500000 -9816.200000 0 494.500000 -9817.000000 0 181.700000 -9817.000000 0 181.700000 -9816.200000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -9817.000000 0 494.500000 -9817.000000 0 494.500000 -9817.700000 0 181.700000 -9817.700000 0 181.700000 -9817.000000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -9817.700000 0 494.500000 -9817.700000 0 494.500000 -9818.500000 0 181.700000 -9818.500000 0 181.700000 -9817.700000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -9818.500000 0 494.500000 -9818.500000 0 494.500000 -9819.300000 0 181.700000 -9819.300000 0 181.700000 -9818.500000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -9819.300000 0 494.500000 -9819.300000 0 494.500000 -9820.000000 0 181.700000 -9820.000000 0 181.700000 -9819.300000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -9820.000000 0 494.500000 -9820.000000 0 494.500000 -9820.800000 0 181.700000 -9820.800000 0 181.700000 -9820.000000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -9820.800000 0 494.500000 -9820.800000 0 494.500000 -9821.500000 0 181.700000 -9821.500000 0 181.700000 -9820.800000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -9821.500000 0 494.500000 -9821.500000 0 494.500000 -9822.300000 0 181.700000 -9822.300000 0 181.700000 -9821.500000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -9822.300000 0 494.500000 -9822.300000 0 494.500000 -9823.100000 0 181.700000 -9823.100000 0 181.700000 -9822.300000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -9823.100000 0 494.500000 -9823.100000 0 494.500000 -9823.800000 0 181.700000 -9823.800000 0 181.700000 -9823.100000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -9823.800000 0 494.500000 -9823.800000 0 494.500000 -9824.600000 0 181.700000 -9824.600000 0 181.700000 -9823.800000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -9824.600000 0 494.500000 -9824.600000 0 494.500000 -9825.300000 0 181.700000 -9825.300000 0 181.700000 -9824.600000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -9825.300000 0 494.500000 -9825.300000 0 494.500000 -9826.100000 0 181.700000 -9826.100000 0 181.700000 -9825.300000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -9826.100000 0 494.500000 -9826.100000 0 494.500000 -9826.900000 0 181.700000 -9826.900000 0 181.700000 -9826.100000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -9826.900000 0 494.500000 -9826.900000 0 494.500000 -9827.600000 0 181.700000 -9827.600000 0 181.700000 -9826.900000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -9827.600000 0 494.500000 -9827.600000 0 494.500000 -9828.400000 0 181.700000 -9828.400000 0 181.700000 -9827.600000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -9828.400000 0 494.500000 -9828.400000 0 494.500000 -9829.100000 0 181.700000 -9829.100000 0 181.700000 -9828.400000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -9829.100000 0 494.500000 -9829.100000 0 494.500000 -9829.900000 0 181.700000 -9829.900000 0 181.700000 -9829.100000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -9829.900000 0 494.500000 -9829.900000 0 494.500000 -9830.600000 0 181.700000 -9830.600000 0 181.700000 -9829.900000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -9830.600000 0 494.500000 -9830.600000 0 494.500000 -9831.400000 0 181.700000 -9831.400000 0 181.700000 -9830.600000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -9831.400000 0 494.500000 -9831.400000 0 494.500000 -9832.200000 0 181.700000 -9832.200000 0 181.700000 -9831.400000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -9832.200000 0 494.500000 -9832.200000 0 494.500000 -9832.900000 0 181.700000 -9832.900000 0 181.700000 -9832.200000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -9832.900000 0 494.500000 -9832.900000 0 494.500000 -9833.700000 0 181.700000 -9833.700000 0 181.700000 -9832.900000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -9833.700000 0 494.500000 -9833.700000 0 494.500000 -9834.400000 0 181.700000 -9834.400000 0 181.700000 -9833.700000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -9834.400000 0 494.500000 -9834.400000 0 494.500000 -9835.200000 0 181.700000 -9835.200000 0 181.700000 -9834.400000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -9835.200000 0 494.500000 -9835.200000 0 494.500000 -9836.000000 0 181.700000 -9836.000000 0 181.700000 -9835.200000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -9836.000000 0 494.500000 -9836.000000 0 494.500000 -9836.700000 0 181.700000 -9836.700000 0 181.700000 -9836.000000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -9836.700000 0 494.500000 -9836.700000 0 494.500000 -9837.500000 0 181.700000 -9837.500000 0 181.700000 -9836.700000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -9837.500000 0 494.500000 -9837.500000 0 494.500000 -9838.200000 0 181.700000 -9838.200000 0 181.700000 -9837.500000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -9838.200000 0 494.500000 -9838.200000 0 494.500000 -9839.000000 0 181.700000 -9839.000000 0 181.700000 -9838.200000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -9839.000000 0 494.500000 -9839.000000 0 494.500000 -9839.800000 0 181.700000 -9839.800000 0 181.700000 -9839.000000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -9839.800000 0 494.500000 -9839.800000 0 494.500000 -9840.500000 0 181.700000 -9840.500000 0 181.700000 -9839.800000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -9840.500000 0 494.500000 -9840.500000 0 494.500000 -9841.300000 0 181.700000 -9841.300000 0 181.700000 -9840.500000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -9841.300000 0 494.500000 -9841.300000 0 494.500000 -9842.000000 0 181.700000 -9842.000000 0 181.700000 -9841.300000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -9842.000000 0 494.500000 -9842.000000 0 494.500000 -9842.800000 0 181.700000 -9842.800000 0 181.700000 -9842.000000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -9842.800000 0 494.500000 -9842.800000 0 494.500000 -9843.500000 0 181.700000 -9843.500000 0 181.700000 -9842.800000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -9843.500000 0 494.500000 -9843.500000 0 494.500000 -9844.300000 0 181.700000 -9844.300000 0 181.700000 -9843.500000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -9844.300000 0 494.500000 -9844.300000 0 494.500000 -9845.100000 0 181.700000 -9845.100000 0 181.700000 -9844.300000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -9845.100000 0 494.500000 -9845.100000 0 494.500000 -9845.800000 0 181.700000 -9845.800000 0 181.700000 -9845.100000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -9845.800000 0 494.500000 -9845.800000 0 494.500000 -9846.600000 0 181.700000 -9846.600000 0 181.700000 -9845.800000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -9846.600000 0 494.500000 -9846.600000 0 494.500000 -9847.300000 0 181.700000 -9847.300000 0 181.700000 -9846.600000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -9847.300000 0 494.500000 -9847.300000 0 494.500000 -9848.100000 0 181.700000 -9848.100000 0 181.700000 -9847.300000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -9848.100000 0 494.500000 -9848.100000 0 494.500000 -9848.900000 0 181.700000 -9848.900000 0 181.700000 -9848.100000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -9848.900000 0 494.500000 -9848.900000 0 494.500000 -9849.600000 0 181.700000 -9849.600000 0 181.700000 -9848.900000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -9849.600000 0 494.500000 -9849.600000 0 494.500000 -9850.400000 0 181.700000 -9850.400000 0 181.700000 -9849.600000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -9850.400000 0 494.500000 -9850.400000 0 494.500000 -9851.100000 0 181.700000 -9851.100000 0 181.700000 -9850.400000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -9851.100000 0 494.500000 -9851.100000 0 494.500000 -9851.900000 0 181.700000 -9851.900000 0 181.700000 -9851.100000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -9851.900000 0 494.500000 -9851.900000 0 494.500000 -9852.700000 0 181.700000 -9852.700000 0 181.700000 -9851.900000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -9852.700000 0 494.500000 -9852.700000 0 494.500000 -9853.400000 0 181.700000 -9853.400000 0 181.700000 -9852.700000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -9853.400000 0 494.500000 -9853.400000 0 494.500000 -9854.200000 0 181.700000 -9854.200000 0 181.700000 -9853.400000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -9854.200000 0 494.500000 -9854.200000 0 494.500000 -9854.900000 0 181.700000 -9854.900000 0 181.700000 -9854.200000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -9854.900000 0 494.500000 -9854.900000 0 494.500000 -9855.700000 0 181.700000 -9855.700000 0 181.700000 -9854.900000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -9855.700000 0 494.500000 -9855.700000 0 494.500000 -9856.400000 0 181.700000 -9856.400000 0 181.700000 -9855.700000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -9856.400000 0 494.500000 -9856.400000 0 494.500000 -9857.200000 0 181.700000 -9857.200000 0 181.700000 -9856.400000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -9857.200000 0 494.500000 -9857.200000 0 494.500000 -9858.000000 0 181.700000 -9858.000000 0 181.700000 -9857.200000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -9858.000000 0 494.500000 -9858.000000 0 494.500000 -9858.700000 0 181.700000 -9858.700000 0 181.700000 -9858.000000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -9858.700000 0 494.500000 -9858.700000 0 494.500000 -9859.500000 0 181.700000 -9859.500000 0 181.700000 -9858.700000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -9859.500000 0 494.500000 -9859.500000 0 494.500000 -9860.200000 0 181.700000 -9860.200000 0 181.700000 -9859.500000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -9860.200000 0 494.500000 -9860.200000 0 494.500000 -9861.000000 0 181.700000 -9861.000000 0 181.700000 -9860.200000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -9861.000000 0 494.500000 -9861.000000 0 494.500000 -9861.800000 0 181.700000 -9861.800000 0 181.700000 -9861.000000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -9861.800000 0 494.500000 -9861.800000 0 494.500000 -9862.500000 0 181.700000 -9862.500000 0 181.700000 -9861.800000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -9862.500000 0 494.500000 -9862.500000 0 494.500000 -9863.300000 0 181.700000 -9863.300000 0 181.700000 -9862.500000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -9863.300000 0 494.500000 -9863.300000 0 494.500000 -9864.000000 0 181.700000 -9864.000000 0 181.700000 -9863.300000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -9864.000000 0 494.500000 -9864.000000 0 494.500000 -9864.800000 0 181.700000 -9864.800000 0 181.700000 -9864.000000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -9864.800000 0 494.500000 -9864.800000 0 494.500000 -9865.600000 0 181.700000 -9865.600000 0 181.700000 -9864.800000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -9865.600000 0 494.500000 -9865.600000 0 494.500000 -9866.300000 0 181.700000 -9866.300000 0 181.700000 -9865.600000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -9866.300000 0 494.500000 -9866.300000 0 494.500000 -9867.100000 0 181.700000 -9867.100000 0 181.700000 -9866.300000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -9867.100000 0 494.500000 -9867.100000 0 494.500000 -9867.800000 0 181.700000 -9867.800000 0 181.700000 -9867.100000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -9867.800000 0 494.500000 -9867.800000 0 494.500000 -9868.600000 0 181.700000 -9868.600000 0 181.700000 -9867.800000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -9868.600000 0 494.500000 -9868.600000 0 494.500000 -9869.300000 0 181.700000 -9869.300000 0 181.700000 -9868.600000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -9869.300000 0 494.500000 -9869.300000 0 494.500000 -9870.100000 0 181.700000 -9870.100000 0 181.700000 -9869.300000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -9870.100000 0 494.500000 -9870.100000 0 494.500000 -9870.900000 0 181.700000 -9870.900000 0 181.700000 -9870.100000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -9870.900000 0 494.500000 -9870.900000 0 494.500000 -9871.600000 0 181.700000 -9871.600000 0 181.700000 -9870.900000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -9871.600000 0 494.500000 -9871.600000 0 494.500000 -9872.400000 0 181.700000 -9872.400000 0 181.700000 -9871.600000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -9872.400000 0 494.500000 -9872.400000 0 494.500000 -9873.100000 0 181.700000 -9873.100000 0 181.700000 -9872.400000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -9873.100000 0 494.500000 -9873.100000 0 494.500000 -9873.900000 0 181.700000 -9873.900000 0 181.700000 -9873.100000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -9873.900000 0 494.500000 -9873.900000 0 494.500000 -9874.700000 0 181.700000 -9874.700000 0 181.700000 -9873.900000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -9874.700000 0 494.500000 -9874.700000 0 494.500000 -9875.400000 0 181.700000 -9875.400000 0 181.700000 -9874.700000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -9875.400000 0 494.500000 -9875.400000 0 494.500000 -9876.200000 0 181.700000 -9876.200000 0 181.700000 -9875.400000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -9876.200000 0 494.500000 -9876.200000 0 494.500000 -9876.900000 0 181.700000 -9876.900000 0 181.700000 -9876.200000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -9876.900000 0 494.500000 -9876.900000 0 494.500000 -9877.700000 0 181.700000 -9877.700000 0 181.700000 -9876.900000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -9877.700000 0 494.500000 -9877.700000 0 494.500000 -9878.500000 0 181.700000 -9878.500000 0 181.700000 -9877.700000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -9878.500000 0 494.500000 -9878.500000 0 494.500000 -9879.200000 0 181.700000 -9879.200000 0 181.700000 -9878.500000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -9879.200000 0 494.500000 -9879.200000 0 494.500000 -9880.000000 0 181.700000 -9880.000000 0 181.700000 -9879.200000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -9880.000000 0 494.500000 -9880.000000 0 494.500000 -9880.700000 0 181.700000 -9880.700000 0 181.700000 -9880.000000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -9880.700000 0 494.500000 -9880.700000 0 494.500000 -9881.500000 0 181.700000 -9881.500000 0 181.700000 -9880.700000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -9881.500000 0 494.500000 -9881.500000 0 494.500000 -9882.200000 0 181.700000 -9882.200000 0 181.700000 -9881.500000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -9882.200000 0 494.500000 -9882.200000 0 494.500000 -9883.000000 0 181.700000 -9883.000000 0 181.700000 -9882.200000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -9883.000000 0 494.500000 -9883.000000 0 494.500000 -9883.800000 0 181.700000 -9883.800000 0 181.700000 -9883.000000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -9883.800000 0 494.500000 -9883.800000 0 494.500000 -9884.500000 0 181.700000 -9884.500000 0 181.700000 -9883.800000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -9884.500000 0 494.500000 -9884.500000 0 494.500000 -9885.300000 0 181.700000 -9885.300000 0 181.700000 -9884.500000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -9885.300000 0 494.500000 -9885.300000 0 494.500000 -9886.000000 0 181.700000 -9886.000000 0 181.700000 -9885.300000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -9886.000000 0 494.500000 -9886.000000 0 494.500000 -9886.800000 0 181.700000 -9886.800000 0 181.700000 -9886.000000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -9886.800000 0 494.500000 -9886.800000 0 494.500000 -9887.600000 0 181.700000 -9887.600000 0 181.700000 -9886.800000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -9887.600000 0 494.500000 -9887.600000 0 494.500000 -9888.300000 0 181.700000 -9888.300000 0 181.700000 -9887.600000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -9888.300000 0 494.500000 -9888.300000 0 494.500000 -9889.100000 0 181.700000 -9889.100000 0 181.700000 -9888.300000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -9889.100000 0 494.500000 -9889.100000 0 494.500000 -9889.800000 0 181.700000 -9889.800000 0 181.700000 -9889.100000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -9889.800000 0 494.500000 -9889.800000 0 494.500000 -9890.600000 0 181.700000 -9890.600000 0 181.700000 -9889.800000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -9890.600000 0 494.500000 -9890.600000 0 494.500000 -9891.400000 0 181.700000 -9891.400000 0 181.700000 -9890.600000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -9891.400000 0 494.500000 -9891.400000 0 494.500000 -9892.100000 0 181.700000 -9892.100000 0 181.700000 -9891.400000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -9892.100000 0 494.500000 -9892.100000 0 494.500000 -9892.900000 0 181.700000 -9892.900000 0 181.700000 -9892.100000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -9892.900000 0 494.500000 -9892.900000 0 494.500000 -9893.600000 0 181.700000 -9893.600000 0 181.700000 -9892.900000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -9893.600000 0 494.500000 -9893.600000 0 494.500000 -9894.400000 0 181.700000 -9894.400000 0 181.700000 -9893.600000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -9894.400000 0 494.500000 -9894.400000 0 494.500000 -9895.100000 0 181.700000 -9895.100000 0 181.700000 -9894.400000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -9895.100000 0 494.500000 -9895.100000 0 494.500000 -9895.900000 0 181.700000 -9895.900000 0 181.700000 -9895.100000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -9895.900000 0 494.500000 -9895.900000 0 494.500000 -9896.700000 0 181.700000 -9896.700000 0 181.700000 -9895.900000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -9896.700000 0 494.500000 -9896.700000 0 494.500000 -9897.400000 0 181.700000 -9897.400000 0 181.700000 -9896.700000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -9897.400000 0 494.500000 -9897.400000 0 494.500000 -9898.200000 0 181.700000 -9898.200000 0 181.700000 -9897.400000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -9898.200000 0 494.500000 -9898.200000 0 494.500000 -9898.900000 0 181.700000 -9898.900000 0 181.700000 -9898.200000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -9898.900000 0 494.500000 -9898.900000 0 494.500000 -9899.700000 0 181.700000 -9899.700000 0 181.700000 -9898.900000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -9899.700000 0 494.500000 -9899.700000 0 494.500000 -9900.500000 0 181.700000 -9900.500000 0 181.700000 -9899.700000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -9900.500000 0 494.500000 -9900.500000 0 494.500000 -9901.200000 0 181.700000 -9901.200000 0 181.700000 -9900.500000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -9901.200000 0 494.500000 -9901.200000 0 494.500000 -9902.000000 0 181.700000 -9902.000000 0 181.700000 -9901.200000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -9902.000000 0 494.500000 -9902.000000 0 494.500000 -9902.700000 0 181.700000 -9902.700000 0 181.700000 -9902.000000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -9902.700000 0 494.500000 -9902.700000 0 494.500000 -9903.500000 0 181.700000 -9903.500000 0 181.700000 -9902.700000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -9903.500000 0 494.500000 -9903.500000 0 494.500000 -9904.300000 0 181.700000 -9904.300000 0 181.700000 -9903.500000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -9904.300000 0 494.500000 -9904.300000 0 494.500000 -9905.000000 0 181.700000 -9905.000000 0 181.700000 -9904.300000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -9905.000000 0 494.500000 -9905.000000 0 494.500000 -9905.800000 0 181.700000 -9905.800000 0 181.700000 -9905.000000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -9905.800000 0 494.500000 -9905.800000 0 494.500000 -9906.500000 0 181.700000 -9906.500000 0 181.700000 -9905.800000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -9906.500000 0 494.500000 -9906.500000 0 494.500000 -9907.300000 0 181.700000 -9907.300000 0 181.700000 -9906.500000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -9907.300000 0 494.500000 -9907.300000 0 494.500000 -9908.000000 0 181.700000 -9908.000000 0 181.700000 -9907.300000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -9908.000000 0 494.500000 -9908.000000 0 494.500000 -9908.800000 0 181.700000 -9908.800000 0 181.700000 -9908.000000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -9908.800000 0 494.500000 -9908.800000 0 494.500000 -9909.600000 0 181.700000 -9909.600000 0 181.700000 -9908.800000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -9909.600000 0 494.500000 -9909.600000 0 494.500000 -9910.300000 0 181.700000 -9910.300000 0 181.700000 -9909.600000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -9910.300000 0 494.500000 -9910.300000 0 494.500000 -9911.100000 0 181.700000 -9911.100000 0 181.700000 -9910.300000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -9911.100000 0 494.500000 -9911.100000 0 494.500000 -9911.800000 0 181.700000 -9911.800000 0 181.700000 -9911.100000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -9911.800000 0 494.500000 -9911.800000 0 494.500000 -9912.600000 0 181.700000 -9912.600000 0 181.700000 -9911.800000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -9912.600000 0 494.500000 -9912.600000 0 494.500000 -9913.400000 0 181.700000 -9913.400000 0 181.700000 -9912.600000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -9913.400000 0 494.500000 -9913.400000 0 494.500000 -9914.100000 0 181.700000 -9914.100000 0 181.700000 -9913.400000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -9914.100000 0 494.500000 -9914.100000 0 494.500000 -9914.900000 0 181.700000 -9914.900000 0 181.700000 -9914.100000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -9914.900000 0 494.500000 -9914.900000 0 494.500000 -9915.600000 0 181.700000 -9915.600000 0 181.700000 -9914.900000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -9915.600000 0 494.500000 -9915.600000 0 494.500000 -9916.400000 0 181.700000 -9916.400000 0 181.700000 -9915.600000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -9916.400000 0 494.500000 -9916.400000 0 494.500000 -9917.100000 0 181.700000 -9917.100000 0 181.700000 -9916.400000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -9917.100000 0 494.500000 -9917.100000 0 494.500000 -9917.900000 0 181.700000 -9917.900000 0 181.700000 -9917.100000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -9917.900000 0 494.500000 -9917.900000 0 494.500000 -9918.700000 0 181.700000 -9918.700000 0 181.700000 -9917.900000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -9918.700000 0 494.500000 -9918.700000 0 494.500000 -9919.400000 0 181.700000 -9919.400000 0 181.700000 -9918.700000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -9919.400000 0 494.500000 -9919.400000 0 494.500000 -9920.200000 0 181.700000 -9920.200000 0 181.700000 -9919.400000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -9920.200000 0 494.500000 -9920.200000 0 494.500000 -9920.900000 0 181.700000 -9920.900000 0 181.700000 -9920.200000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -9920.900000 0 494.500000 -9920.900000 0 494.500000 -9921.700000 0 181.700000 -9921.700000 0 181.700000 -9920.900000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -9921.700000 0 494.500000 -9921.700000 0 494.500000 -9922.500000 0 181.700000 -9922.500000 0 181.700000 -9921.700000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -9922.500000 0 494.500000 -9922.500000 0 494.500000 -9923.200000 0 181.700000 -9923.200000 0 181.700000 -9922.500000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -9923.200000 0 494.500000 -9923.200000 0 494.500000 -9924.000000 0 181.700000 -9924.000000 0 181.700000 -9923.200000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -9924.000000 0 494.500000 -9924.000000 0 494.500000 -9924.700000 0 181.700000 -9924.700000 0 181.700000 -9924.000000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -9924.700000 0 494.500000 -9924.700000 0 494.500000 -9925.500000 0 181.700000 -9925.500000 0 181.700000 -9924.700000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -9925.500000 0 494.500000 -9925.500000 0 494.500000 -9926.200000 0 181.700000 -9926.200000 0 181.700000 -9925.500000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -9926.200000 0 494.500000 -9926.200000 0 494.500000 -9927.000000 0 181.700000 -9927.000000 0 181.700000 -9926.200000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -9927.000000 0 494.500000 -9927.000000 0 494.500000 -9927.800000 0 181.700000 -9927.800000 0 181.700000 -9927.000000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -9927.800000 0 494.500000 -9927.800000 0 494.500000 -9928.500000 0 181.700000 -9928.500000 0 181.700000 -9927.800000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -9928.500000 0 494.500000 -9928.500000 0 494.500000 -9929.300000 0 181.700000 -9929.300000 0 181.700000 -9928.500000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -9929.300000 0 494.500000 -9929.300000 0 494.500000 -9930.000000 0 181.700000 -9930.000000 0 181.700000 -9929.300000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -9930.000000 0 494.500000 -9930.000000 0 494.500000 -9930.800000 0 181.700000 -9930.800000 0 181.700000 -9930.000000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -9930.800000 0 494.500000 -9930.800000 0 494.500000 -9931.500000 0 181.700000 -9931.500000 0 181.700000 -9930.800000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -9931.500000 0 494.500000 -9931.500000 0 494.500000 -9932.300000 0 181.700000 -9932.300000 0 181.700000 -9931.500000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -9932.300000 0 494.500000 -9932.300000 0 494.500000 -9933.100000 0 181.700000 -9933.100000 0 181.700000 -9932.300000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -9933.100000 0 494.500000 -9933.100000 0 494.500000 -9933.800000 0 181.700000 -9933.800000 0 181.700000 -9933.100000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -9933.800000 0 494.500000 -9933.800000 0 494.500000 -9934.600000 0 181.700000 -9934.600000 0 181.700000 -9933.800000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -9934.600000 0 494.500000 -9934.600000 0 494.500000 -9935.300000 0 181.700000 -9935.300000 0 181.700000 -9934.600000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -9935.300000 0 494.500000 -9935.300000 0 494.500000 -9936.100000 0 181.700000 -9936.100000 0 181.700000 -9935.300000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -9936.100000 0 494.500000 -9936.100000 0 494.500000 -9936.900000 0 181.700000 -9936.900000 0 181.700000 -9936.100000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -9936.900000 0 494.500000 -9936.900000 0 494.500000 -9937.600000 0 181.700000 -9937.600000 0 181.700000 -9936.900000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -9937.600000 0 494.500000 -9937.600000 0 494.500000 -9938.400000 0 181.700000 -9938.400000 0 181.700000 -9937.600000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -9938.400000 0 494.500000 -9938.400000 0 494.500000 -9939.100000 0 181.700000 -9939.100000 0 181.700000 -9938.400000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -9939.100000 0 494.500000 -9939.100000 0 494.500000 -9939.900000 0 181.700000 -9939.900000 0 181.700000 -9939.100000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -9939.900000 0 494.500000 -9939.900000 0 494.500000 -9940.600000 0 181.700000 -9940.600000 0 181.700000 -9939.900000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -9940.600000 0 494.500000 -9940.600000 0 494.500000 -9941.400000 0 181.700000 -9941.400000 0 181.700000 -9940.600000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -9941.400000 0 494.500000 -9941.400000 0 494.500000 -9942.200000 0 181.700000 -9942.200000 0 181.700000 -9941.400000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -9942.200000 0 494.500000 -9942.200000 0 494.500000 -9942.900000 0 181.700000 -9942.900000 0 181.700000 -9942.200000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -9942.900000 0 494.500000 -9942.900000 0 494.500000 -9943.700000 0 181.700000 -9943.700000 0 181.700000 -9942.900000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -9943.700000 0 494.500000 -9943.700000 0 494.500000 -9944.400000 0 181.700000 -9944.400000 0 181.700000 -9943.700000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -9944.400000 0 494.500000 -9944.400000 0 494.500000 -9945.200000 0 181.700000 -9945.200000 0 181.700000 -9944.400000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -9945.200000 0 494.500000 -9945.200000 0 494.500000 -9946.000000 0 181.700000 -9946.000000 0 181.700000 -9945.200000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -9946.000000 0 494.500000 -9946.000000 0 494.500000 -9946.700000 0 181.700000 -9946.700000 0 181.700000 -9946.000000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -9946.700000 0 494.500000 -9946.700000 0 494.500000 -9947.500000 0 181.700000 -9947.500000 0 181.700000 -9946.700000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -9947.500000 0 494.500000 -9947.500000 0 494.500000 -9948.200000 0 181.700000 -9948.200000 0 181.700000 -9947.500000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -9948.200000 0 494.500000 -9948.200000 0 494.500000 -9949.000000 0 181.700000 -9949.000000 0 181.700000 -9948.200000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -9949.000000 0 494.500000 -9949.000000 0 494.500000 -9949.700000 0 181.700000 -9949.700000 0 181.700000 -9949.000000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -9949.700000 0 494.500000 -9949.700000 0 494.500000 -9950.500000 0 181.700000 -9950.500000 0 181.700000 -9949.700000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -9950.500000 0 494.500000 -9950.500000 0 494.500000 -9951.300000 0 181.700000 -9951.300000 0 181.700000 -9950.500000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -9951.300000 0 494.500000 -9951.300000 0 494.500000 -9952.000000 0 181.700000 -9952.000000 0 181.700000 -9951.300000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -9952.000000 0 494.500000 -9952.000000 0 494.500000 -9952.800000 0 181.700000 -9952.800000 0 181.700000 -9952.000000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -9952.800000 0 494.500000 -9952.800000 0 494.500000 -9953.500000 0 181.700000 -9953.500000 0 181.700000 -9952.800000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -9953.500000 0 494.500000 -9953.500000 0 494.500000 -9954.300000 0 181.700000 -9954.300000 0 181.700000 -9953.500000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -9954.300000 0 494.500000 -9954.300000 0 494.500000 -9955.100000 0 181.700000 -9955.100000 0 181.700000 -9954.300000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -9955.100000 0 494.500000 -9955.100000 0 494.500000 -9955.800000 0 181.700000 -9955.800000 0 181.700000 -9955.100000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -9955.800000 0 494.500000 -9955.800000 0 494.500000 -9956.600000 0 181.700000 -9956.600000 0 181.700000 -9955.800000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -9956.600000 0 494.500000 -9956.600000 0 494.500000 -9957.300000 0 181.700000 -9957.300000 0 181.700000 -9956.600000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -9957.300000 0 494.500000 -9957.300000 0 494.500000 -9958.100000 0 181.700000 -9958.100000 0 181.700000 -9957.300000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -9958.100000 0 494.500000 -9958.100000 0 494.500000 -9958.900000 0 181.700000 -9958.900000 0 181.700000 -9958.100000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -9958.900000 0 494.500000 -9958.900000 0 494.500000 -9959.600000 0 181.700000 -9959.600000 0 181.700000 -9958.900000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -9959.600000 0 494.500000 -9959.600000 0 494.500000 -9960.400000 0 181.700000 -9960.400000 0 181.700000 -9959.600000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -9960.400000 0 494.500000 -9960.400000 0 494.500000 -9961.100000 0 181.700000 -9961.100000 0 181.700000 -9960.400000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -9961.100000 0 494.500000 -9961.100000 0 494.500000 -9961.900000 0 181.700000 -9961.900000 0 181.700000 -9961.100000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -9961.900000 0 494.500000 -9961.900000 0 494.500000 -9962.600000 0 181.700000 -9962.600000 0 181.700000 -9961.900000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -9962.600000 0 494.500000 -9962.600000 0 494.500000 -9963.400000 0 181.700000 -9963.400000 0 181.700000 -9962.600000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -9963.400000 0 494.500000 -9963.400000 0 494.500000 -9964.200000 0 181.700000 -9964.200000 0 181.700000 -9963.400000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -9964.200000 0 494.500000 -9964.200000 0 494.500000 -9964.900000 0 181.700000 -9964.900000 0 181.700000 -9964.200000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -9964.900000 0 494.500000 -9964.900000 0 494.500000 -9965.700000 0 181.700000 -9965.700000 0 181.700000 -9964.900000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -9965.700000 0 494.500000 -9965.700000 0 494.500000 -9966.400000 0 181.700000 -9966.400000 0 181.700000 -9965.700000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -9966.400000 0 494.500000 -9966.400000 0 494.500000 -9967.200000 0 181.700000 -9967.200000 0 181.700000 -9966.400000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -9967.200000 0 494.500000 -9967.200000 0 494.500000 -9968.000000 0 181.700000 -9968.000000 0 181.700000 -9967.200000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -9968.000000 0 494.500000 -9968.000000 0 494.500000 -9968.700000 0 181.700000 -9968.700000 0 181.700000 -9968.000000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -9968.700000 0 494.500000 -9968.700000 0 494.500000 -9969.500000 0 181.700000 -9969.500000 0 181.700000 -9968.700000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -9969.500000 0 494.500000 -9969.500000 0 494.500000 -9970.200000 0 181.700000 -9970.200000 0 181.700000 -9969.500000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -9970.200000 0 494.500000 -9970.200000 0 494.500000 -9971.000000 0 181.700000 -9971.000000 0 181.700000 -9970.200000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -9971.000000 0 494.500000 -9971.000000 0 494.500000 -9971.800000 0 181.700000 -9971.800000 0 181.700000 -9971.000000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -9971.800000 0 494.500000 -9971.800000 0 494.500000 -9972.500000 0 181.700000 -9972.500000 0 181.700000 -9971.800000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -9972.500000 0 494.500000 -9972.500000 0 494.500000 -9973.300000 0 181.700000 -9973.300000 0 181.700000 -9972.500000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -9973.300000 0 494.500000 -9973.300000 0 494.500000 -9974.000000 0 181.700000 -9974.000000 0 181.700000 -9973.300000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -9974.000000 0 494.500000 -9974.000000 0 494.500000 -9974.800000 0 181.700000 -9974.800000 0 181.700000 -9974.000000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -9974.800000 0 494.500000 -9974.800000 0 494.500000 -9975.500000 0 181.700000 -9975.500000 0 181.700000 -9974.800000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -9975.500000 0 494.500000 -9975.500000 0 494.500000 -9976.300000 0 181.700000 -9976.300000 0 181.700000 -9975.500000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -9976.300000 0 494.500000 -9976.300000 0 494.500000 -9977.100000 0 181.700000 -9977.100000 0 181.700000 -9976.300000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -9977.100000 0 494.500000 -9977.100000 0 494.500000 -9977.800000 0 181.700000 -9977.800000 0 181.700000 -9977.100000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -9977.800000 0 494.500000 -9977.800000 0 494.500000 -9978.600000 0 181.700000 -9978.600000 0 181.700000 -9977.800000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -9978.600000 0 494.500000 -9978.600000 0 494.500000 -9979.300000 0 181.700000 -9979.300000 0 181.700000 -9978.600000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -9979.300000 0 494.500000 -9979.300000 0 494.500000 -9980.100000 0 181.700000 -9980.100000 0 181.700000 -9979.300000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -9980.100000 0 494.500000 -9980.100000 0 494.500000 -9980.900000 0 181.700000 -9980.900000 0 181.700000 -9980.100000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -9980.900000 0 494.500000 -9980.900000 0 494.500000 -9981.600000 0 181.700000 -9981.600000 0 181.700000 -9980.900000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -9981.600000 0 494.500000 -9981.600000 0 494.500000 -9982.400000 0 181.700000 -9982.400000 0 181.700000 -9981.600000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -9982.400000 0 494.500000 -9982.400000 0 494.500000 -9983.100000 0 181.700000 -9983.100000 0 181.700000 -9982.400000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -9983.100000 0 494.500000 -9983.100000 0 494.500000 -9983.900000 0 181.700000 -9983.900000 0 181.700000 -9983.100000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -9983.900000 0 494.500000 -9983.900000 0 494.500000 -9984.700000 0 181.700000 -9984.700000 0 181.700000 -9983.900000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -9984.700000 0 494.500000 -9984.700000 0 494.500000 -9985.400000 0 181.700000 -9985.400000 0 181.700000 -9984.700000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -9985.400000 0 494.500000 -9985.400000 0 494.500000 -9986.200000 0 181.700000 -9986.200000 0 181.700000 -9985.400000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -9986.200000 0 494.500000 -9986.200000 0 494.500000 -9986.900000 0 181.700000 -9986.900000 0 181.700000 -9986.200000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -9986.900000 0 494.500000 -9986.900000 0 494.500000 -9987.700000 0 181.700000 -9987.700000 0 181.700000 -9986.900000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -9987.700000 0 494.500000 -9987.700000 0 494.500000 -9988.400000 0 181.700000 -9988.400000 0 181.700000 -9987.700000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -9988.400000 0 494.500000 -9988.400000 0 494.500000 -9989.200000 0 181.700000 -9989.200000 0 181.700000 -9988.400000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -9989.200000 0 494.500000 -9989.200000 0 494.500000 -9990.000000 0 181.700000 -9990.000000 0 181.700000 -9989.200000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -9990.000000 0 494.500000 -9990.000000 0 494.500000 -9990.700000 0 181.700000 -9990.700000 0 181.700000 -9990.000000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -9990.700000 0 494.500000 -9990.700000 0 494.500000 -9991.500000 0 181.700000 -9991.500000 0 181.700000 -9990.700000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -9991.500000 0 494.500000 -9991.500000 0 494.500000 -9992.200000 0 181.700000 -9992.200000 0 181.700000 -9991.500000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -9992.200000 0 494.500000 -9992.200000 0 494.500000 -9993.000000 0 181.700000 -9993.000000 0 181.700000 -9992.200000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -9993.000000 0 494.500000 -9993.000000 0 494.500000 -9993.800000 0 181.700000 -9993.800000 0 181.700000 -9993.000000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -9993.800000 0 494.500000 -9993.800000 0 494.500000 -9994.500000 0 181.700000 -9994.500000 0 181.700000 -9993.800000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -9994.500000 0 494.500000 -9994.500000 0 494.500000 -9995.300000 0 181.700000 -9995.300000 0 181.700000 -9994.500000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -9995.300000 0 494.500000 -9995.300000 0 494.500000 -9996.000000 0 181.700000 -9996.000000 0 181.700000 -9995.300000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -9996.000000 0 494.500000 -9996.000000 0 494.500000 -9996.800000 0 181.700000 -9996.800000 0 181.700000 -9996.000000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -9996.800000 0 494.500000 -9996.800000 0 494.500000 -9997.600000 0 181.700000 -9997.600000 0 181.700000 -9996.800000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -9997.600000 0 494.500000 -9997.600000 0 494.500000 -9998.300000 0 181.700000 -9998.300000 0 181.700000 -9997.600000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -9998.300000 0 494.500000 -9998.300000 0 494.500000 -9999.100000 0 181.700000 -9999.100000 0 181.700000 -9998.300000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -9999.100000 0 494.500000 -9999.100000 0 494.500000 -9999.800000 0 181.700000 -9999.800000 0 181.700000 -9999.100000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -9999.800000 0 494.500000 -9999.800000 0 494.500000 -10000.600000 0 181.700000 -10000.600000 0 181.700000 -9999.800000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -10000.600000 0 494.500000 -10000.600000 0 494.500000 -10001.300000 0 181.700000 -10001.300000 0 181.700000 -10000.600000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -10001.300000 0 494.500000 -10001.300000 0 494.500000 -10002.100000 0 181.700000 -10002.100000 0 181.700000 -10001.300000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -10002.100000 0 494.500000 -10002.100000 0 494.500000 -10002.900000 0 181.700000 -10002.900000 0 181.700000 -10002.100000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -10002.900000 0 494.500000 -10002.900000 0 494.500000 -10003.600000 0 181.700000 -10003.600000 0 181.700000 -10002.900000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -10003.600000 0 494.500000 -10003.600000 0 494.500000 -10004.400000 0 181.700000 -10004.400000 0 181.700000 -10003.600000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -10004.300000 0 181.800000 -10004.300000 0 181.800000 -9811.000000 0 494.400000 -9811.000000 0 494.400000 -10004.300000 0 338.100000 -10004.300000 0
+strokePath subpath 1 338.100000 -10004.300000 0 181.800000 -10004.300000 0 181.800000 -9811.000000 0 494.400000 -9811.000000 0 494.400000 -10004.300000 0 338.100000 -10004.300000 0
+saveState
+updateCtm 11420.000000 0.000000 0.000000 -8760.000000 20530.000000 1072030.000000
+drawSoftMaskedImage 1143 877 1143 877 JPEG 71324 PPM 3007249
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -9965.276000 215.488000 -9973.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -9965.276000 220.592000 -9973.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -9965.276000 225.696000 -9973.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -9965.276000 230.800000 -9973.276000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -9972.876000 241.388000 -9980.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -9972.876000 246.492000 -9980.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -9972.876000 251.596000 -9980.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -9972.876000 256.700000 -9980.876000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -9980.576000 267.188000 -9988.576000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -9980.576000 272.292000 -9988.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -9980.576000 277.396000 -9988.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -9980.576000 282.500000 -9988.576000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -9988.176000 293.088000 -9996.176000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -9988.176000 298.192000 -9996.176000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -9988.176000 303.296000 -9996.176000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -9988.176000 308.400000 -9996.176000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -9950.276000 202.588000 -9958.276000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -9930.976000 201.688000 -9938.976000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -9911.676000 195.788000 -9919.676000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -9911.676000 200.892000 -9919.676000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -9892.276000 194.888000 -9900.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -9892.276000 199.992000 -9900.276000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -9872.976000 193.988000 -9880.976000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -9872.976000 199.092000 -9880.976000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -9853.676000 193.088000 -9861.676000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -9853.676000 198.192000 -9861.676000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -9981.576000 330.188000 -9989.576000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -9981.576000 332.716000 -9989.576000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -9981.576000 337.596000 -9989.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -9981.576000 341.396000 -9989.576000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -9981.576000 346.036000 -9989.576000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -9981.576000 350.900000 -9989.576000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -9981.576000 355.972000 -9989.576000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -9981.576000 359.196000 -9989.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -9981.576000 362.196000 -9989.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -9981.576000 367.404000 -9989.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -9981.576000 371.876000 -9989.576000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -9981.576000 375.052000 -9989.576000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -9962.076000 361.172000 -9970.076000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -9962.076000 364.340000 -9970.076000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -9962.076000 367.396000 -9970.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -9962.076000 372.604000 -9970.076000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -9962.076000 379.348000 -9970.076000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -9962.076000 384.484000 -9970.076000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -9962.076000 389.436000 -9970.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -9962.076000 392.108000 -9970.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -9962.076000 395.708000 -9970.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -9962.076000 397.540000 -9970.076000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -9962.076000 402.444000 -9970.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -9962.076000 406.788000 -9970.076000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -9942.476000 392.972000 -9950.476000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -9942.476000 398.076000 -9950.476000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -9942.476000 403.180000 -9950.476000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -9942.476000 405.428000 -9950.476000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -9942.476000 410.332000 -9950.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -9942.476000 414.476000 -9950.476000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -9814.908000 305.808000 -9828.908000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -9814.908000 314.138000 -9828.908000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -9814.908000 320.788000 -9828.908000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -9814.908000 328.698000 -9828.908000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -9814.908000 336.972000 -9828.908000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -9814.908000 344.182000 -9828.908000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -9814.908000 349.810000 -9828.908000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -9814.908000 354.234000 -9828.908000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -9814.908000 362.718000 -9828.908000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -9814.908000 367.870000 -9828.908000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -9814.908000 372.322000 -9828.908000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -9814.908000 382.080000 -9828.908000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -9814.908000 388.772000 -9828.908000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -9814.908000 397.802000 -9828.908000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -9814.908000 402.254000 -9828.908000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -9814.908000 407.896000 -9828.908000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -9937.800000 0 424.300000 -9937.800000 0 424.300000 -9877.100000 0 493.600000 -9877.100000 0 493.600000 -9937.800000 0 458.900000 -9937.800000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -9886.700000 0 428.900000 -9886.700000 0 428.900000 -9880.800000 0 434.800000 -9880.800000 0 434.800000 -9886.700000 0 431.900000 -9886.700000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -9897.800000 0 428.900000 -9897.800000 0 428.900000 -9891.800000 0 434.800000 -9891.800000 0 434.800000 -9897.800000 0 431.900000 -9897.800000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -9908.900000 0 428.900000 -9908.900000 0 428.900000 -9902.900000 0 434.800000 -9902.900000 0 434.800000 -9908.900000 0 431.900000 -9908.900000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -9920.000000 0 428.900000 -9920.000000 0 428.900000 -9914.000000 0 434.800000 -9914.000000 0 434.800000 -9920.000000 0 431.900000 -9920.000000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -9931.100000 0 428.900000 -9931.100000 0 428.900000 -9925.100000 0 434.800000 -9925.100000 0 434.800000 -9931.100000 0 431.900000 -9931.100000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -9879.576000 443.288000 -9887.576000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -9879.576000 445.816000 -9887.576000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -9879.576000 450.600000 -9887.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -9879.576000 454.496000 -9887.576000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -9879.576000 459.136000 -9887.576000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -9879.576000 464.000000 -9887.576000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -9879.576000 468.976000 -9887.576000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -9879.576000 472.304000 -9887.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -9879.576000 475.208000 -9887.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -9879.576000 480.520000 -9887.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -9879.576000 484.992000 -9887.576000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -9879.576000 488.168000 -9887.576000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -9890.676000 443.352000 -9898.676000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -9890.676000 447.920000 -9898.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -9890.676000 452.976000 -9898.676000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -9890.676000 457.400000 -9898.676000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -9890.676000 462.472000 -9898.676000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -9890.676000 465.800000 -9898.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -9890.676000 468.904000 -9898.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -9890.676000 473.816000 -9898.676000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -9890.676000 478.888000 -9898.676000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -9890.676000 482.064000 -9898.676000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -9901.776000 442.872000 -9909.776000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -9901.776000 446.040000 -9909.776000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -9901.776000 448.992000 -9909.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -9901.776000 454.304000 -9909.776000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -9901.776000 461.048000 -9909.776000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -9901.776000 466.184000 -9909.776000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -9901.776000 471.136000 -9909.776000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -9901.776000 473.808000 -9909.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -9901.776000 477.408000 -9909.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -9901.776000 479.240000 -9909.776000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -9901.776000 484.144000 -9909.776000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -9901.776000 488.488000 -9909.776000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -9912.876000 443.384000 -9920.876000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -9912.876000 448.464000 -9920.876000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -9912.876000 453.424000 -9920.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -9912.876000 456.696000 -9920.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -9912.876000 459.800000 -9920.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -9912.876000 462.032000 -9920.876000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -9912.876000 466.936000 -9920.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -9912.876000 471.080000 -9920.876000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -9923.976000 443.272000 -9931.976000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -9923.976000 448.376000 -9931.976000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -9923.976000 453.480000 -9931.976000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -9923.976000 455.728000 -9931.976000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -9923.976000 460.632000 -9931.976000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -9923.976000 464.776000 -9931.976000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -12569.000000 0 114.800000 -12569.000000 0 114.800000 -12526.200000 0 72.000000 -12526.200000 0 72.000000 -12569.000000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 1336090.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 108.000000 72.000000 0 540.000000 72.000000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 72.000000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 108.000000 701.300000 0 540.000000 701.300000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 701.300000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 108.100000 719.948000 117.860000 703.948000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 115.204000 719.948000 124.996000 703.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 125.012000 719.948000 135.156000 703.948000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 135.220000 719.948000 139.652000 703.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.620000 719.948000 149.460000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.428000 719.948000 154.500000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 154.532000 719.948000 164.308000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 164.340000 719.948000 169.972000 703.948000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 169.940000 719.948000 175.012000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 175.044000 719.948000 186.212000 703.948000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 186.244000 719.948000 196.020000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 196.052000 719.948000 206.180000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 206.148000 719.948000 212.420000 703.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 212.452000 719.948000 222.292000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 222.260000 719.948000 232.388000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 232.356000 719.948000 238.628000 703.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 238.660000 719.948000 246.980000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+updateFont 103 1 0 0 0 200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 314.300000 672.856000 315.664000 670.856000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 315.400000 672.856000 316.748000 670.856000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 316.700000 672.856000 318.130000 670.856000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 318.100000 672.856000 318.784000 670.856000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 318.800000 672.856000 320.156000 670.856000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 320.200000 672.856000 320.896000 670.856000 1.000000 0.000000 0.000000 1.000000
+drawChar 320.900000 672.856000 322.274000 670.856000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 322.300000 672.856000 323.170000 670.856000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 323.200000 672.856000 323.896000 670.856000 1.000000 0.000000 0.000000 1.000000
+drawChar 323.900000 672.856000 325.366000 670.856000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 325.400000 672.856000 326.774000 670.856000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 326.800000 672.856000 328.222000 670.856000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 328.200000 672.856000 329.156000 670.856000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 329.200000 672.856000 330.556000 670.856000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 330.600000 672.856000 332.022000 670.856000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 332.000000 672.856000 332.956000 670.856000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 333.000000 672.856000 334.190000 670.856000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 21948 EAAAAA+DejaVuSerif-Bold
+drawChar 108.100000 658.556000 121.372000 646.556000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 121.396000 658.556000 128.368000 646.556000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 128.392000 658.556000 132.568000 646.556000 1.000000 0.000000 0.000000 1.000000
+drawChar 132.592000 658.556000 143.920000 646.556000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 143.896000 658.556000 151.888000 646.556000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 151.900000 658.556000 160.624000 646.556000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 160.600000 658.556000 167.344000 646.556000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 167.404000 658.556000 175.036000 646.556000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 174.900000 658.556000 179.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.100000 658.556000 183.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.300000 658.556000 187.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.500000 658.556000 191.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.700000 658.556000 195.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.900000 658.556000 200.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.100000 658.556000 204.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.300000 658.556000 208.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.500000 658.556000 212.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 212.700000 658.556000 216.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 216.900000 658.556000 221.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.100000 658.556000 225.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.300000 658.556000 229.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.500000 658.556000 233.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.700000 658.556000 237.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.900000 658.556000 242.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.100000 658.556000 246.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.300000 658.556000 250.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.500000 658.556000 254.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.700000 658.556000 258.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.900000 658.556000 263.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.100000 658.556000 267.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.300000 658.556000 271.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.500000 658.556000 275.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.700000 658.556000 279.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.900000 658.556000 284.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 284.100000 658.556000 288.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 288.300000 658.556000 292.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 292.500000 658.556000 296.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 296.700000 658.556000 300.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 300.900000 658.556000 305.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 305.100000 658.556000 309.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 309.300000 658.556000 313.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 313.500000 658.556000 317.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 317.700000 658.556000 321.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 321.900000 658.556000 326.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 326.100000 658.556000 330.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 330.300000 658.556000 334.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 334.500000 658.556000 338.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 338.700000 658.556000 342.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 342.900000 658.556000 347.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 347.100000 658.556000 351.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 351.300000 658.556000 355.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 355.500000 658.556000 359.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.700000 658.556000 363.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 363.900000 658.556000 368.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.100000 658.556000 372.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 372.300000 658.556000 376.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.500000 658.556000 380.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.700000 658.556000 384.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.900000 658.556000 389.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.100000 658.556000 393.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.300000 658.556000 397.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.500000 658.556000 401.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.700000 658.556000 405.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.900000 658.556000 410.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.100000 658.556000 414.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.300000 658.556000 418.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.500000 658.556000 422.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.700000 658.556000 426.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.900000 658.556000 431.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.100000 658.556000 435.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.300000 658.556000 439.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.500000 658.556000 443.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.700000 658.556000 447.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.900000 658.556000 452.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.100000 658.556000 456.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.300000 658.556000 460.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.500000 658.556000 464.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.700000 658.556000 468.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.900000 658.556000 473.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.100000 658.556000 477.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.300000 658.556000 481.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.500000 658.556000 485.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.700000 658.556000 489.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.900000 658.556000 494.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.100000 658.556000 498.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.300000 658.556000 502.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.500000 658.556000 506.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.700000 658.556000 510.876000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.900000 658.556000 515.076000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.100000 658.556000 519.276000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.300000 658.556000 523.476000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.500000 658.556000 527.676000 646.556000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 531.800000 658.556000 540.140000 646.556000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 641.356000 230.008000 629.356000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 229.996000 641.356000 234.544000 629.356000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 234.592000 641.356000 240.904000 629.356000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 240.892000 641.356000 247.636000 629.356000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 247.696000 641.356000 253.228000 629.356000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 253.192000 641.356000 257.368000 629.356000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.392000 641.356000 265.900000 629.356000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 265.888000 641.356000 270.436000 629.356000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 270.484000 641.356000 278.476000 629.356000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 278.488000 641.356000 286.480000 629.356000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 286.492000 641.356000 292.804000 629.356000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 292.700000 641.356000 296.876000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 296.996000 641.356000 301.172000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 301.292000 641.356000 305.468000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 305.588000 641.356000 309.764000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 309.884000 641.356000 314.060000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 314.180000 641.356000 318.356000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.476000 641.356000 322.652000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 322.772000 641.356000 326.948000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.068000 641.356000 331.244000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 331.364000 641.356000 335.540000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 335.660000 641.356000 339.836000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.956000 641.356000 344.132000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.252000 641.356000 348.428000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.548000 641.356000 352.724000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 352.844000 641.356000 357.020000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.140000 641.356000 361.316000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.436000 641.356000 365.612000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.732000 641.356000 369.908000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.028000 641.356000 374.204000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.324000 641.356000 378.500000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.620000 641.356000 382.796000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.916000 641.356000 387.092000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.212000 641.356000 391.388000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.508000 641.356000 395.684000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.804000 641.356000 399.980000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.100000 641.356000 404.276000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.396000 641.356000 408.572000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.692000 641.356000 412.868000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.988000 641.356000 417.164000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.284000 641.356000 421.460000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.580000 641.356000 425.756000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.876000 641.356000 430.052000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.172000 641.356000 434.348000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.468000 641.356000 438.644000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.764000 641.356000 442.940000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.060000 641.356000 447.236000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.356000 641.356000 451.532000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.652000 641.356000 455.828000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.948000 641.356000 460.124000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.244000 641.356000 464.420000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.540000 641.356000 468.716000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.836000 641.356000 473.012000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.132000 641.356000 477.308000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.428000 641.356000 481.604000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.724000 641.356000 485.900000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.020000 641.356000 490.196000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.316000 641.356000 494.492000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.612000 641.356000 498.788000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.908000 641.356000 503.084000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.204000 641.356000 507.380000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.500000 641.356000 511.676000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.796000 641.356000 515.972000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.092000 641.356000 520.268000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.388000 641.356000 524.564000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.684000 641.356000 528.860000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 528.980000 641.356000 533.156000 629.356000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 531.800000 641.356000 540.140000 629.356000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 627.336000 229.468000 615.336000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 229.504000 627.336000 233.332000 615.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 233.308000 627.336000 240.076000 615.336000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 240.112000 627.336000 243.940000 615.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 243.916000 627.336000 251.644000 615.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 251.620000 627.336000 259.300000 615.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 259.324000 627.336000 263.128000 615.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 263.128000 627.336000 272.152000 615.336000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 272.128000 627.336000 279.352000 615.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 279.328000 627.336000 286.552000 615.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 286.528000 627.336000 297.904000 615.336000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 297.900000 627.336000 301.704000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 301.704000 627.336000 305.508000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 305.508000 627.336000 309.312000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 309.312000 627.336000 313.116000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 313.116000 627.336000 316.920000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 316.920000 627.336000 320.724000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.724000 627.336000 324.528000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.528000 627.336000 328.332000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.332000 627.336000 332.136000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.136000 627.336000 335.940000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 335.940000 627.336000 339.744000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.744000 627.336000 343.548000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 343.548000 627.336000 347.352000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 347.352000 627.336000 351.156000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 351.156000 627.336000 354.960000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.960000 627.336000 358.764000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.764000 627.336000 362.568000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.568000 627.336000 366.372000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.372000 627.336000 370.176000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.176000 627.336000 373.980000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.980000 627.336000 377.784000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.784000 627.336000 381.588000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.588000 627.336000 385.392000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.392000 627.336000 389.196000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.196000 627.336000 393.000000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.000000 627.336000 396.804000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.804000 627.336000 400.608000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.608000 627.336000 404.412000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.412000 627.336000 408.216000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.216000 627.336000 412.020000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.020000 627.336000 415.824000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.824000 627.336000 419.628000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.628000 627.336000 423.432000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.432000 627.336000 427.236000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.236000 627.336000 431.040000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.040000 627.336000 434.844000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.844000 627.336000 438.648000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.648000 627.336000 442.452000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.452000 627.336000 446.256000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.256000 627.336000 450.060000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.060000 627.336000 453.864000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.864000 627.336000 457.668000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.668000 627.336000 461.472000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.472000 627.336000 465.276000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.276000 627.336000 469.080000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.080000 627.336000 472.884000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.884000 627.336000 476.688000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.688000 627.336000 480.492000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.492000 627.336000 484.296000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.296000 627.336000 488.100000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.100000 627.336000 491.904000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.904000 627.336000 495.708000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.708000 627.336000 499.512000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.512000 627.336000 503.316000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.316000 627.336000 507.120000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.120000 627.336000 510.924000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.924000 627.336000 514.728000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.728000 627.336000 518.532000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.532000 627.336000 522.336000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.336000 627.336000 526.140000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 526.140000 627.336000 529.944000 615.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 532.500000 627.336000 540.132000 615.336000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 613.408000 229.123000 602.408000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 229.101000 613.408000 232.610000 602.408000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 232.599000 613.408000 237.857000 602.408000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 237.901000 613.408000 244.402000 602.408000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 244.402000 613.408000 251.442000 602.408000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 251.398000 613.408000 254.907000 602.408000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 254.896000 613.408000 261.452000 602.408000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 261.496000 613.408000 267.656000 602.408000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 267.700000 613.408000 274.201000 602.408000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 274.100000 613.408000 277.587000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.598000 613.408000 281.085000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.096000 613.408000 284.583000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 284.594000 613.408000 288.081000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 288.092000 613.408000 291.579000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 291.590000 613.408000 295.077000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 295.088000 613.408000 298.575000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 298.586000 613.408000 302.073000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 302.084000 613.408000 305.571000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 305.582000 613.408000 309.069000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 309.080000 613.408000 312.567000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 312.578000 613.408000 316.065000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 316.076000 613.408000 319.563000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 319.574000 613.408000 323.061000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 323.072000 613.408000 326.559000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 326.570000 613.408000 330.057000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 330.068000 613.408000 333.555000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 333.566000 613.408000 337.053000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 337.064000 613.408000 340.551000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 340.562000 613.408000 344.049000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.060000 613.408000 347.547000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 347.558000 613.408000 351.045000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 351.056000 613.408000 354.543000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.554000 613.408000 358.041000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.052000 613.408000 361.539000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.550000 613.408000 365.037000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.048000 613.408000 368.535000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.546000 613.408000 372.033000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 372.044000 613.408000 375.531000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.542000 613.408000 379.029000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.040000 613.408000 382.527000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.538000 613.408000 386.025000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.036000 613.408000 389.523000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.534000 613.408000 393.021000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.032000 613.408000 396.519000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.530000 613.408000 400.017000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.028000 613.408000 403.515000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.526000 613.408000 407.013000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.024000 613.408000 410.511000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.522000 613.408000 414.009000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.020000 613.408000 417.507000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.518000 613.408000 421.005000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.016000 613.408000 424.503000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.514000 613.408000 428.001000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.012000 613.408000 431.499000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.510000 613.408000 434.997000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.008000 613.408000 438.495000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.506000 613.408000 441.993000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.004000 613.408000 445.491000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.502000 613.408000 448.989000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.000000 613.408000 452.487000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.498000 613.408000 455.985000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.996000 613.408000 459.483000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.494000 613.408000 462.981000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.992000 613.408000 466.479000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.490000 613.408000 469.977000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.988000 613.408000 473.475000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.486000 613.408000 476.973000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.984000 613.408000 480.471000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.482000 613.408000 483.969000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 483.980000 613.408000 487.467000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 487.478000 613.408000 490.965000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.976000 613.408000 494.463000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.474000 613.408000 497.961000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.972000 613.408000 501.459000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.470000 613.408000 504.957000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.968000 613.408000 508.455000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.466000 613.408000 511.953000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.964000 613.408000 515.451000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.462000 613.408000 518.949000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.960000 613.408000 522.447000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.458000 613.408000 525.945000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.956000 613.408000 529.443000 602.408000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 613.408000 540.096000 602.408000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 600.608000 229.574000 589.608000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 229.596000 600.608000 236.218000 589.608000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.196000 600.608000 242.818000 589.608000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 242.796000 600.608000 249.451000 589.608000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 249.495000 600.608000 255.655000 589.608000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 255.699000 600.608000 262.255000 589.608000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 262.299000 600.608000 267.942000 589.608000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 267.898000 600.608000 274.399000 589.608000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 274.300000 600.608000 277.787000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.798000 600.608000 281.285000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.296000 600.608000 284.783000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 284.794000 600.608000 288.281000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 288.292000 600.608000 291.779000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 291.790000 600.608000 295.277000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 295.288000 600.608000 298.775000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 298.786000 600.608000 302.273000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 302.284000 600.608000 305.771000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 305.782000 600.608000 309.269000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 309.280000 600.608000 312.767000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 312.778000 600.608000 316.265000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 316.276000 600.608000 319.763000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 319.774000 600.608000 323.261000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 323.272000 600.608000 326.759000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 326.770000 600.608000 330.257000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 330.268000 600.608000 333.755000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 333.766000 600.608000 337.253000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 337.264000 600.608000 340.751000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 340.762000 600.608000 344.249000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.260000 600.608000 347.747000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 347.758000 600.608000 351.245000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 351.256000 600.608000 354.743000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.754000 600.608000 358.241000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.252000 600.608000 361.739000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.750000 600.608000 365.237000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.248000 600.608000 368.735000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.746000 600.608000 372.233000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 372.244000 600.608000 375.731000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.742000 600.608000 379.229000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.240000 600.608000 382.727000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.738000 600.608000 386.225000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.236000 600.608000 389.723000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.734000 600.608000 393.221000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.232000 600.608000 396.719000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.730000 600.608000 400.217000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.228000 600.608000 403.715000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.726000 600.608000 407.213000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.224000 600.608000 410.711000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.722000 600.608000 414.209000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.220000 600.608000 417.707000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.718000 600.608000 421.205000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.216000 600.608000 424.703000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.714000 600.608000 428.201000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.212000 600.608000 431.699000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.710000 600.608000 435.197000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.208000 600.608000 438.695000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.706000 600.608000 442.193000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.204000 600.608000 445.691000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.702000 600.608000 449.189000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.200000 600.608000 452.687000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.698000 600.608000 456.185000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.196000 600.608000 459.683000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.694000 600.608000 463.181000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.192000 600.608000 466.679000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.690000 600.608000 470.177000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.188000 600.608000 473.675000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.686000 600.608000 477.173000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.184000 600.608000 480.671000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.682000 600.608000 484.169000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.180000 600.608000 487.667000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 487.678000 600.608000 491.165000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.176000 600.608000 494.663000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.674000 600.608000 498.161000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.172000 600.608000 501.659000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.670000 600.608000 505.157000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.168000 600.608000 508.655000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.666000 600.608000 512.153000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.164000 600.608000 515.651000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.662000 600.608000 519.149000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.160000 600.608000 522.647000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.658000 600.608000 526.145000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 526.156000 600.608000 529.643000 589.608000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 600.608000 540.096000 589.608000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 587.808000 232.753000 576.808000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 232.797000 587.808000 236.306000 576.808000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 236.295000 587.808000 243.379000 576.808000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 243.390000 587.808000 246.899000 576.808000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 246.888000 587.808000 253.928000 576.808000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 253.884000 587.808000 260.440000 576.808000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 260.484000 587.808000 265.742000 576.808000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 265.600000 587.808000 269.087000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.098000 587.808000 272.585000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.596000 587.808000 276.083000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.094000 587.808000 279.581000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.592000 587.808000 283.079000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 283.090000 587.808000 286.577000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 286.588000 587.808000 290.075000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 290.086000 587.808000 293.573000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 293.584000 587.808000 297.071000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 297.082000 587.808000 300.569000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 300.580000 587.808000 304.067000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 304.078000 587.808000 307.565000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 307.576000 587.808000 311.063000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.074000 587.808000 314.561000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 314.572000 587.808000 318.059000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.070000 587.808000 321.557000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 321.568000 587.808000 325.055000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 325.066000 587.808000 328.553000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.564000 587.808000 332.051000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.062000 587.808000 335.549000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 335.560000 587.808000 339.047000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.058000 587.808000 342.545000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 342.556000 587.808000 346.043000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 346.054000 587.808000 349.541000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.552000 587.808000 353.039000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.050000 587.808000 356.537000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 356.548000 587.808000 360.035000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.046000 587.808000 363.533000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 363.544000 587.808000 367.031000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.042000 587.808000 370.529000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.540000 587.808000 374.027000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.038000 587.808000 377.525000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.536000 587.808000 381.023000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.034000 587.808000 384.521000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.532000 587.808000 388.019000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.030000 587.808000 391.517000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.528000 587.808000 395.015000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.026000 587.808000 398.513000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.524000 587.808000 402.011000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.022000 587.808000 405.509000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.520000 587.808000 409.007000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.018000 587.808000 412.505000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.516000 587.808000 416.003000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.014000 587.808000 419.501000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.512000 587.808000 422.999000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.010000 587.808000 426.497000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.508000 587.808000 429.995000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.006000 587.808000 433.493000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.504000 587.808000 436.991000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.002000 587.808000 440.489000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.500000 587.808000 443.987000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.998000 587.808000 447.485000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.496000 587.808000 450.983000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.994000 587.808000 454.481000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.492000 587.808000 457.979000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.990000 587.808000 461.477000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.488000 587.808000 464.975000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.986000 587.808000 468.473000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.484000 587.808000 471.971000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.982000 587.808000 475.469000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.480000 587.808000 478.967000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.978000 587.808000 482.465000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.476000 587.808000 485.963000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.974000 587.808000 489.461000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.472000 587.808000 492.959000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.970000 587.808000 496.457000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.468000 587.808000 499.955000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.966000 587.808000 503.453000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.464000 587.808000 506.951000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.962000 587.808000 510.449000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.460000 587.808000 513.947000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.958000 587.808000 517.445000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.456000 587.808000 520.943000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.954000 587.808000 524.441000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.452000 587.808000 527.939000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 527.950000 587.808000 531.437000 576.808000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 587.808000 540.096000 576.808000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 575.036000 230.464000 563.036000 1.000000 0.000000 0.000000 1.000000 K
+drawChar 230.500000 575.036000 234.328000 563.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 234.304000 575.036000 239.116000 563.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 239.104000 575.036000 245.824000 563.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 245.800000 575.036000 253.528000 563.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 253.504000 575.036000 260.596000 563.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 260.608000 575.036000 268.336000 563.036000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 268.300000 575.036000 272.104000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.104000 575.036000 275.908000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.908000 575.036000 279.712000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.712000 575.036000 283.516000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 283.516000 575.036000 287.320000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 287.320000 575.036000 291.124000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 291.124000 575.036000 294.928000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 294.928000 575.036000 298.732000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 298.732000 575.036000 302.536000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 302.536000 575.036000 306.340000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 306.340000 575.036000 310.144000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 310.144000 575.036000 313.948000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 313.948000 575.036000 317.752000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 317.752000 575.036000 321.556000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 321.556000 575.036000 325.360000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 325.360000 575.036000 329.164000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 329.164000 575.036000 332.968000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.968000 575.036000 336.772000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.772000 575.036000 340.576000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 340.576000 575.036000 344.380000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.380000 575.036000 348.184000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.184000 575.036000 351.988000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 351.988000 575.036000 355.792000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 355.792000 575.036000 359.596000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.596000 575.036000 363.400000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 363.400000 575.036000 367.204000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.204000 575.036000 371.008000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.008000 575.036000 374.812000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.812000 575.036000 378.616000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.616000 575.036000 382.420000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.420000 575.036000 386.224000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.224000 575.036000 390.028000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.028000 575.036000 393.832000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.832000 575.036000 397.636000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.636000 575.036000 401.440000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.440000 575.036000 405.244000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.244000 575.036000 409.048000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.048000 575.036000 412.852000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.852000 575.036000 416.656000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.656000 575.036000 420.460000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.460000 575.036000 424.264000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.264000 575.036000 428.068000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.068000 575.036000 431.872000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.872000 575.036000 435.676000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.676000 575.036000 439.480000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.480000 575.036000 443.284000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.284000 575.036000 447.088000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.088000 575.036000 450.892000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.892000 575.036000 454.696000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.696000 575.036000 458.500000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.500000 575.036000 462.304000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.304000 575.036000 466.108000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.108000 575.036000 469.912000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.912000 575.036000 473.716000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.716000 575.036000 477.520000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.520000 575.036000 481.324000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.324000 575.036000 485.128000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.128000 575.036000 488.932000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.932000 575.036000 492.736000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.736000 575.036000 496.540000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.540000 575.036000 500.344000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.344000 575.036000 504.148000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.148000 575.036000 507.952000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.952000 575.036000 511.756000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.756000 575.036000 515.560000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.560000 575.036000 519.364000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.364000 575.036000 523.168000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.168000 575.036000 526.972000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 526.972000 575.036000 530.776000 563.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 532.500000 575.036000 540.132000 563.036000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 561.108000 228.892000 550.108000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 228.397000 561.108000 234.953000 550.108000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 234.997000 561.108000 242.081000 550.108000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 242.092000 561.108000 246.503000 550.108000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 246.492000 561.108000 251.750000 550.108000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 251.794000 561.108000 257.998000 550.108000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 257.800000 561.108000 261.287000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.298000 561.108000 264.785000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.796000 561.108000 268.283000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.294000 561.108000 271.781000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.792000 561.108000 275.279000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.290000 561.108000 278.777000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 278.788000 561.108000 282.275000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 282.286000 561.108000 285.773000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 285.784000 561.108000 289.271000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 289.282000 561.108000 292.769000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 292.780000 561.108000 296.267000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 296.278000 561.108000 299.765000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 299.776000 561.108000 303.263000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 303.274000 561.108000 306.761000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 306.772000 561.108000 310.259000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 310.270000 561.108000 313.757000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 313.768000 561.108000 317.255000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 317.266000 561.108000 320.753000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.764000 561.108000 324.251000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.262000 561.108000 327.749000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.760000 561.108000 331.247000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 331.258000 561.108000 334.745000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 334.756000 561.108000 338.243000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 338.254000 561.108000 341.741000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.752000 561.108000 345.239000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.250000 561.108000 348.737000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.748000 561.108000 352.235000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 352.246000 561.108000 355.733000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 355.744000 561.108000 359.231000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.242000 561.108000 362.729000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.740000 561.108000 366.227000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.238000 561.108000 369.725000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 369.736000 561.108000 373.223000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.234000 561.108000 376.721000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.732000 561.108000 380.219000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.230000 561.108000 383.717000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.728000 561.108000 387.215000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.226000 561.108000 390.713000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.724000 561.108000 394.211000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.222000 561.108000 397.709000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.720000 561.108000 401.207000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.218000 561.108000 404.705000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.716000 561.108000 408.203000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.214000 561.108000 411.701000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.712000 561.108000 415.199000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.210000 561.108000 418.697000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.708000 561.108000 422.195000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.206000 561.108000 425.693000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.704000 561.108000 429.191000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.202000 561.108000 432.689000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.700000 561.108000 436.187000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.198000 561.108000 439.685000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.696000 561.108000 443.183000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.194000 561.108000 446.681000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.692000 561.108000 450.179000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.190000 561.108000 453.677000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.688000 561.108000 457.175000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.186000 561.108000 460.673000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.684000 561.108000 464.171000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.182000 561.108000 467.669000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.680000 561.108000 471.167000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.178000 561.108000 474.665000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.676000 561.108000 478.163000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.174000 561.108000 481.661000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.672000 561.108000 485.159000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.170000 561.108000 488.657000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.668000 561.108000 492.155000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.166000 561.108000 495.653000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.664000 561.108000 499.151000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.162000 561.108000 502.649000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.660000 561.108000 506.147000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.158000 561.108000 509.645000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.656000 561.108000 513.143000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.154000 561.108000 516.641000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.652000 561.108000 520.139000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.150000 561.108000 523.637000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.648000 561.108000 527.135000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 527.146000 561.108000 530.633000 550.108000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 561.108000 540.096000 550.108000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 548.308000 228.804000 537.308000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 228.804000 548.308000 235.360000 537.308000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 235.404000 548.308000 242.488000 537.308000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 242.499000 548.308000 249.583000 537.308000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 249.594000 548.308000 256.634000 537.308000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 256.590000 548.308000 261.848000 537.308000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 261.892000 548.308000 268.096000 537.308000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 268.096000 548.308000 271.583000 537.308000 1.000000 0.000000 0.000000 1.000000
+drawChar 271.594000 548.308000 279.866000 537.308000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 279.899000 548.308000 286.521000 537.308000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 286.499000 548.308000 293.121000 537.308000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 293.099000 548.308000 303.527000 537.308000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 303.400000 548.308000 306.887000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 306.898000 548.308000 310.385000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 310.396000 548.308000 313.883000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 313.894000 548.308000 317.381000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 317.392000 548.308000 320.879000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.890000 548.308000 324.377000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.388000 548.308000 327.875000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.886000 548.308000 331.373000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 331.384000 548.308000 334.871000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 334.882000 548.308000 338.369000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 338.380000 548.308000 341.867000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.878000 548.308000 345.365000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.376000 548.308000 348.863000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.874000 548.308000 352.361000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 352.372000 548.308000 355.859000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 355.870000 548.308000 359.357000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.368000 548.308000 362.855000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.866000 548.308000 366.353000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.364000 548.308000 369.851000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 369.862000 548.308000 373.349000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.360000 548.308000 376.847000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.858000 548.308000 380.345000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.356000 548.308000 383.843000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.854000 548.308000 387.341000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.352000 548.308000 390.839000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.850000 548.308000 394.337000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.348000 548.308000 397.835000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.846000 548.308000 401.333000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.344000 548.308000 404.831000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.842000 548.308000 408.329000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.340000 548.308000 411.827000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.838000 548.308000 415.325000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.336000 548.308000 418.823000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.834000 548.308000 422.321000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.332000 548.308000 425.819000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.830000 548.308000 429.317000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.328000 548.308000 432.815000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.826000 548.308000 436.313000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.324000 548.308000 439.811000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.822000 548.308000 443.309000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.320000 548.308000 446.807000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.818000 548.308000 450.305000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.316000 548.308000 453.803000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.814000 548.308000 457.301000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.312000 548.308000 460.799000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.810000 548.308000 464.297000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.308000 548.308000 467.795000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.806000 548.308000 471.293000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.304000 548.308000 474.791000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.802000 548.308000 478.289000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.300000 548.308000 481.787000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.798000 548.308000 485.285000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.296000 548.308000 488.783000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.794000 548.308000 492.281000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.292000 548.308000 495.779000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.790000 548.308000 499.277000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.288000 548.308000 502.775000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.786000 548.308000 506.273000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.284000 548.308000 509.771000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.782000 548.308000 513.269000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.280000 548.308000 516.767000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.778000 548.308000 520.265000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.276000 548.308000 523.763000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.774000 548.308000 527.261000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 527.272000 548.308000 530.759000 537.308000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 548.308000 540.096000 537.308000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 535.536000 231.076000 523.536000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 231.100000 535.536000 238.828000 523.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 238.804000 535.536000 245.896000 523.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 245.908000 535.536000 252.064000 523.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 252.112000 535.536000 256.924000 523.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 256.912000 535.536000 260.716000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 260.716000 535.536000 269.524000 523.536000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 269.512000 535.536000 276.664000 523.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 276.712000 535.536000 281.524000 523.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 281.512000 535.536000 289.240000 523.536000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 289.100000 535.536000 292.904000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 292.904000 535.536000 296.708000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 296.708000 535.536000 300.512000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 300.512000 535.536000 304.316000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 304.316000 535.536000 308.120000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 308.120000 535.536000 311.924000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.924000 535.536000 315.728000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.728000 535.536000 319.532000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 319.532000 535.536000 323.336000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 323.336000 535.536000 327.140000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.140000 535.536000 330.944000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 330.944000 535.536000 334.748000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 334.748000 535.536000 338.552000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 338.552000 535.536000 342.356000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 342.356000 535.536000 346.160000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 346.160000 535.536000 349.964000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.964000 535.536000 353.768000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.768000 535.536000 357.572000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.572000 535.536000 361.376000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.376000 535.536000 365.180000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.180000 535.536000 368.984000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.984000 535.536000 372.788000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 372.788000 535.536000 376.592000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.592000 535.536000 380.396000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.396000 535.536000 384.200000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.200000 535.536000 388.004000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.004000 535.536000 391.808000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.808000 535.536000 395.612000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.612000 535.536000 399.416000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.416000 535.536000 403.220000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.220000 535.536000 407.024000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.024000 535.536000 410.828000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.828000 535.536000 414.632000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.632000 535.536000 418.436000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.436000 535.536000 422.240000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.240000 535.536000 426.044000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.044000 535.536000 429.848000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.848000 535.536000 433.652000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.652000 535.536000 437.456000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.456000 535.536000 441.260000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.260000 535.536000 445.064000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.064000 535.536000 448.868000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.868000 535.536000 452.672000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.672000 535.536000 456.476000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.476000 535.536000 460.280000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.280000 535.536000 464.084000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.084000 535.536000 467.888000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.888000 535.536000 471.692000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.692000 535.536000 475.496000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.496000 535.536000 479.300000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.300000 535.536000 483.104000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 483.104000 535.536000 486.908000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.908000 535.536000 490.712000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.712000 535.536000 494.516000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.516000 535.536000 498.320000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.320000 535.536000 502.124000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.124000 535.536000 505.928000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.928000 535.536000 509.732000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.732000 535.536000 513.536000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.536000 535.536000 517.340000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.340000 535.536000 521.144000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.144000 535.536000 524.948000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.948000 535.536000 528.752000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 528.752000 535.536000 532.556000 523.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 532.500000 535.536000 540.132000 523.536000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 521.636000 231.112000 509.636000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 231.100000 521.636000 234.928000 509.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 234.904000 521.636000 242.632000 509.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 242.608000 521.636000 246.436000 509.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 246.412000 521.636000 254.140000 509.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 254.116000 521.636000 261.796000 509.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 261.820000 521.636000 265.624000 509.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.624000 521.636000 274.648000 509.636000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 274.624000 521.636000 281.848000 509.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 281.824000 521.636000 289.048000 509.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 289.024000 521.636000 300.400000 509.636000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 300.500000 521.636000 304.304000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 304.304000 521.636000 308.108000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 308.108000 521.636000 311.912000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.912000 521.636000 315.716000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.716000 521.636000 319.520000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 319.520000 521.636000 323.324000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 323.324000 521.636000 327.128000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.128000 521.636000 330.932000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 330.932000 521.636000 334.736000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 334.736000 521.636000 338.540000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 338.540000 521.636000 342.344000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 342.344000 521.636000 346.148000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 346.148000 521.636000 349.952000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.952000 521.636000 353.756000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.756000 521.636000 357.560000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.560000 521.636000 361.364000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.364000 521.636000 365.168000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.168000 521.636000 368.972000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.972000 521.636000 372.776000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 372.776000 521.636000 376.580000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.580000 521.636000 380.384000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.384000 521.636000 384.188000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.188000 521.636000 387.992000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.992000 521.636000 391.796000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.796000 521.636000 395.600000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.600000 521.636000 399.404000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.404000 521.636000 403.208000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.208000 521.636000 407.012000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.012000 521.636000 410.816000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.816000 521.636000 414.620000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.620000 521.636000 418.424000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.424000 521.636000 422.228000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.228000 521.636000 426.032000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.032000 521.636000 429.836000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.836000 521.636000 433.640000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.640000 521.636000 437.444000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.444000 521.636000 441.248000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.248000 521.636000 445.052000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.052000 521.636000 448.856000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.856000 521.636000 452.660000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.660000 521.636000 456.464000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.464000 521.636000 460.268000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.268000 521.636000 464.072000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.072000 521.636000 467.876000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.876000 521.636000 471.680000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.680000 521.636000 475.484000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.484000 521.636000 479.288000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.288000 521.636000 483.092000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 483.092000 521.636000 486.896000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.896000 521.636000 490.700000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.700000 521.636000 494.504000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.504000 521.636000 498.308000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.308000 521.636000 502.112000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.112000 521.636000 505.916000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.916000 521.636000 509.720000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.720000 521.636000 513.524000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.524000 521.636000 517.328000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.328000 521.636000 521.132000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.132000 521.636000 524.936000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.936000 521.636000 528.740000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 528.740000 521.636000 532.544000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 532.500000 521.636000 540.132000 509.636000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 504.556000 230.164000 492.556000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 230.200000 504.556000 237.832000 492.556000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 237.796000 504.556000 245.092000 492.556000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 245.092000 504.556000 253.084000 492.556000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 253.096000 504.556000 261.820000 492.556000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 261.796000 504.556000 270.184000 492.556000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 270.196000 504.556000 274.372000 492.556000 1.000000 0.000000 0.000000 1.000000
+drawChar 274.396000 504.556000 282.904000 492.556000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 282.892000 504.556000 287.440000 492.556000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 287.488000 504.556000 295.480000 492.556000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 295.492000 504.556000 303.484000 492.556000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 303.496000 504.556000 309.808000 492.556000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 309.700000 504.556000 313.876000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 313.996000 504.556000 318.172000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.292000 504.556000 322.468000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 322.588000 504.556000 326.764000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 326.884000 504.556000 331.060000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 331.180000 504.556000 335.356000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 335.476000 504.556000 339.652000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.772000 504.556000 343.948000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.068000 504.556000 348.244000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.364000 504.556000 352.540000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 352.660000 504.556000 356.836000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 356.956000 504.556000 361.132000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.252000 504.556000 365.428000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.548000 504.556000 369.724000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 369.844000 504.556000 374.020000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.140000 504.556000 378.316000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.436000 504.556000 382.612000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.732000 504.556000 386.908000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.028000 504.556000 391.204000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.324000 504.556000 395.500000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.620000 504.556000 399.796000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.916000 504.556000 404.092000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.212000 504.556000 408.388000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.508000 504.556000 412.684000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.804000 504.556000 416.980000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.100000 504.556000 421.276000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.396000 504.556000 425.572000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.692000 504.556000 429.868000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.988000 504.556000 434.164000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.284000 504.556000 438.460000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.580000 504.556000 442.756000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.876000 504.556000 447.052000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.172000 504.556000 451.348000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.468000 504.556000 455.644000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.764000 504.556000 459.940000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.060000 504.556000 464.236000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.356000 504.556000 468.532000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.652000 504.556000 472.828000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.948000 504.556000 477.124000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.244000 504.556000 481.420000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.540000 504.556000 485.716000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.836000 504.556000 490.012000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.132000 504.556000 494.308000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.428000 504.556000 498.604000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.724000 504.556000 502.900000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.020000 504.556000 507.196000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.316000 504.556000 511.492000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.612000 504.556000 515.788000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.908000 504.556000 520.084000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.204000 504.556000 524.380000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.500000 504.556000 528.676000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 528.796000 504.556000 532.972000 492.556000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 531.800000 504.556000 540.140000 492.556000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 490.536000 229.720000 478.536000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 229.696000 490.536000 234.508000 478.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 234.496000 490.536000 242.224000 478.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 242.200000 490.536000 249.880000 478.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 249.904000 490.536000 256.672000 478.536000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 256.600000 490.536000 260.404000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.404000 490.536000 264.208000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.208000 490.536000 268.012000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.012000 490.536000 271.816000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.816000 490.536000 275.620000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.620000 490.536000 279.424000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.424000 490.536000 283.228000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 283.228000 490.536000 287.032000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 287.032000 490.536000 290.836000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 290.836000 490.536000 294.640000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 294.640000 490.536000 298.444000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 298.444000 490.536000 302.248000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 302.248000 490.536000 306.052000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 306.052000 490.536000 309.856000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 309.856000 490.536000 313.660000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 313.660000 490.536000 317.464000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 317.464000 490.536000 321.268000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 321.268000 490.536000 325.072000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 325.072000 490.536000 328.876000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.876000 490.536000 332.680000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.680000 490.536000 336.484000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.484000 490.536000 340.288000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 340.288000 490.536000 344.092000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.092000 490.536000 347.896000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 347.896000 490.536000 351.700000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 351.700000 490.536000 355.504000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 355.504000 490.536000 359.308000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.308000 490.536000 363.112000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 363.112000 490.536000 366.916000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.916000 490.536000 370.720000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.720000 490.536000 374.524000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.524000 490.536000 378.328000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.328000 490.536000 382.132000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.132000 490.536000 385.936000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.936000 490.536000 389.740000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.740000 490.536000 393.544000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.544000 490.536000 397.348000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.348000 490.536000 401.152000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.152000 490.536000 404.956000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.956000 490.536000 408.760000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.760000 490.536000 412.564000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.564000 490.536000 416.368000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.368000 490.536000 420.172000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.172000 490.536000 423.976000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.976000 490.536000 427.780000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.780000 490.536000 431.584000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.584000 490.536000 435.388000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.388000 490.536000 439.192000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.192000 490.536000 442.996000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.996000 490.536000 446.800000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.800000 490.536000 450.604000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.604000 490.536000 454.408000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.408000 490.536000 458.212000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.212000 490.536000 462.016000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.016000 490.536000 465.820000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.820000 490.536000 469.624000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.624000 490.536000 473.428000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.428000 490.536000 477.232000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.232000 490.536000 481.036000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.036000 490.536000 484.840000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.840000 490.536000 488.644000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.644000 490.536000 492.448000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.448000 490.536000 496.252000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.252000 490.536000 500.056000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.056000 490.536000 503.860000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.860000 490.536000 507.664000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.664000 490.536000 511.468000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.468000 490.536000 515.272000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.272000 490.536000 519.076000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.076000 490.536000 522.880000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.880000 490.536000 526.684000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 526.684000 490.536000 530.488000 478.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 532.500000 490.536000 540.132000 478.536000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 476.608000 232.797000 465.608000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 232.302000 476.608000 237.560000 465.608000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 237.604000 476.608000 241.113000 465.608000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 241.102000 476.608000 245.513000 465.608000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 245.502000 476.608000 249.011000 465.608000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 249.000000 476.608000 256.084000 465.608000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 256.095000 476.608000 263.135000 465.608000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 263.091000 476.608000 266.578000 465.608000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.589000 476.608000 275.400000 465.608000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 275.389000 476.608000 281.890000 465.608000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 281.890000 476.608000 287.533000 465.608000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 287.489000 476.608000 294.144000 465.608000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 294.200000 476.608000 297.687000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 297.698000 476.608000 301.185000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 301.196000 476.608000 304.683000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 304.694000 476.608000 308.181000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 308.192000 476.608000 311.679000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.690000 476.608000 315.177000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.188000 476.608000 318.675000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.686000 476.608000 322.173000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 322.184000 476.608000 325.671000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 325.682000 476.608000 329.169000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 329.180000 476.608000 332.667000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.678000 476.608000 336.165000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.176000 476.608000 339.663000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.674000 476.608000 343.161000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 343.172000 476.608000 346.659000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 346.670000 476.608000 350.157000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 350.168000 476.608000 353.655000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.666000 476.608000 357.153000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.164000 476.608000 360.651000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.662000 476.608000 364.149000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 364.160000 476.608000 367.647000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.658000 476.608000 371.145000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.156000 476.608000 374.643000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.654000 476.608000 378.141000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.152000 476.608000 381.639000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.650000 476.608000 385.137000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.148000 476.608000 388.635000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.646000 476.608000 392.133000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.144000 476.608000 395.631000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.642000 476.608000 399.129000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.140000 476.608000 402.627000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.638000 476.608000 406.125000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.136000 476.608000 409.623000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.634000 476.608000 413.121000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.132000 476.608000 416.619000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.630000 476.608000 420.117000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.128000 476.608000 423.615000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.626000 476.608000 427.113000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.124000 476.608000 430.611000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.622000 476.608000 434.109000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.120000 476.608000 437.607000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.618000 476.608000 441.105000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.116000 476.608000 444.603000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.614000 476.608000 448.101000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.112000 476.608000 451.599000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.610000 476.608000 455.097000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.108000 476.608000 458.595000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.606000 476.608000 462.093000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.104000 476.608000 465.591000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.602000 476.608000 469.089000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.100000 476.608000 472.587000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.598000 476.608000 476.085000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.096000 476.608000 479.583000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.594000 476.608000 483.081000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 483.092000 476.608000 486.579000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.590000 476.608000 490.077000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.088000 476.608000 493.575000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.586000 476.608000 497.073000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.084000 476.608000 500.571000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.582000 476.608000 504.069000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.080000 476.608000 507.567000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.578000 476.608000 511.065000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.076000 476.608000 514.563000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.574000 476.608000 518.061000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.072000 476.608000 521.559000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.570000 476.608000 525.057000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.068000 476.608000 528.555000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 528.566000 476.608000 532.053000 465.608000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 476.608000 540.096000 465.608000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 463.836000 230.308000 451.836000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 230.296000 463.836000 237.388000 451.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 237.400000 463.836000 245.080000 451.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 245.104000 463.836000 250.840000 451.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 250.804000 463.836000 258.028000 451.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 258.004000 463.836000 265.228000 451.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 265.204000 463.836000 276.580000 451.836000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.600000 463.836000 280.404000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.404000 463.836000 284.208000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 284.208000 463.836000 288.012000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 288.012000 463.836000 291.816000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 291.816000 463.836000 295.620000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 295.620000 463.836000 299.424000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 299.424000 463.836000 303.228000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 303.228000 463.836000 307.032000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 307.032000 463.836000 310.836000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 310.836000 463.836000 314.640000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 314.640000 463.836000 318.444000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.444000 463.836000 322.248000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 322.248000 463.836000 326.052000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 326.052000 463.836000 329.856000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 329.856000 463.836000 333.660000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 333.660000 463.836000 337.464000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 337.464000 463.836000 341.268000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.268000 463.836000 345.072000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.072000 463.836000 348.876000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.876000 463.836000 352.680000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 352.680000 463.836000 356.484000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 356.484000 463.836000 360.288000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.288000 463.836000 364.092000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 364.092000 463.836000 367.896000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.896000 463.836000 371.700000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.700000 463.836000 375.504000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.504000 463.836000 379.308000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.308000 463.836000 383.112000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.112000 463.836000 386.916000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.916000 463.836000 390.720000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.720000 463.836000 394.524000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.524000 463.836000 398.328000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.328000 463.836000 402.132000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.132000 463.836000 405.936000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.936000 463.836000 409.740000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.740000 463.836000 413.544000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.544000 463.836000 417.348000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.348000 463.836000 421.152000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.152000 463.836000 424.956000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.956000 463.836000 428.760000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.760000 463.836000 432.564000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.564000 463.836000 436.368000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.368000 463.836000 440.172000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.172000 463.836000 443.976000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.976000 463.836000 447.780000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.780000 463.836000 451.584000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.584000 463.836000 455.388000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.388000 463.836000 459.192000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.192000 463.836000 462.996000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.996000 463.836000 466.800000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.800000 463.836000 470.604000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.604000 463.836000 474.408000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.408000 463.836000 478.212000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.212000 463.836000 482.016000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.016000 463.836000 485.820000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.820000 463.836000 489.624000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.624000 463.836000 493.428000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.428000 463.836000 497.232000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.232000 463.836000 501.036000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.036000 463.836000 504.840000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.840000 463.836000 508.644000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.644000 463.836000 512.448000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.448000 463.836000 516.252000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.252000 463.836000 520.056000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.056000 463.836000 523.860000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.860000 463.836000 527.664000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 527.664000 463.836000 531.468000 451.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 532.500000 463.836000 540.132000 451.836000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 449.908000 229.574000 438.908000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 229.596000 449.908000 236.097000 438.908000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.097000 449.908000 243.137000 438.908000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 243.000000 449.908000 246.487000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.498000 449.908000 249.985000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.996000 449.908000 253.483000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.494000 449.908000 256.981000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.992000 449.908000 260.479000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.490000 449.908000 263.977000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.988000 449.908000 267.475000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.486000 449.908000 270.973000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.984000 449.908000 274.471000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.482000 449.908000 277.969000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.980000 449.908000 281.467000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.478000 449.908000 284.965000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 284.976000 449.908000 288.463000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 288.474000 449.908000 291.961000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 291.972000 449.908000 295.459000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 295.470000 449.908000 298.957000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 298.968000 449.908000 302.455000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 302.466000 449.908000 305.953000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 305.964000 449.908000 309.451000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 309.462000 449.908000 312.949000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 312.960000 449.908000 316.447000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 316.458000 449.908000 319.945000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 319.956000 449.908000 323.443000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 323.454000 449.908000 326.941000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 326.952000 449.908000 330.439000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 330.450000 449.908000 333.937000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 333.948000 449.908000 337.435000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 337.446000 449.908000 340.933000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 340.944000 449.908000 344.431000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.442000 449.908000 347.929000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 347.940000 449.908000 351.427000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 351.438000 449.908000 354.925000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.936000 449.908000 358.423000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.434000 449.908000 361.921000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.932000 449.908000 365.419000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.430000 449.908000 368.917000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.928000 449.908000 372.415000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 372.426000 449.908000 375.913000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.924000 449.908000 379.411000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.422000 449.908000 382.909000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.920000 449.908000 386.407000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.418000 449.908000 389.905000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.916000 449.908000 393.403000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.414000 449.908000 396.901000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.912000 449.908000 400.399000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.410000 449.908000 403.897000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.908000 449.908000 407.395000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.406000 449.908000 410.893000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.904000 449.908000 414.391000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.402000 449.908000 417.889000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.900000 449.908000 421.387000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.398000 449.908000 424.885000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.896000 449.908000 428.383000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.394000 449.908000 431.881000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.892000 449.908000 435.379000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.390000 449.908000 438.877000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.888000 449.908000 442.375000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.386000 449.908000 445.873000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.884000 449.908000 449.371000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.382000 449.908000 452.869000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.880000 449.908000 456.367000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.378000 449.908000 459.865000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.876000 449.908000 463.363000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.374000 449.908000 466.861000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.872000 449.908000 470.359000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.370000 449.908000 473.857000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.868000 449.908000 477.355000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.366000 449.908000 480.853000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.864000 449.908000 484.351000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.362000 449.908000 487.849000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 487.860000 449.908000 491.347000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.358000 449.908000 494.845000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.856000 449.908000 498.343000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.354000 449.908000 501.841000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.852000 449.908000 505.339000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.350000 449.908000 508.837000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.848000 449.908000 512.335000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.346000 449.908000 515.833000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.844000 449.908000 519.331000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.342000 449.908000 522.829000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.840000 449.908000 526.327000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 526.338000 449.908000 529.825000 438.908000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 449.908000 540.096000 438.908000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 437.108000 231.125000 426.108000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 231.103000 437.108000 234.612000 426.108000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 234.601000 437.108000 241.641000 426.108000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 241.597000 437.108000 248.681000 426.108000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 248.692000 437.108000 253.103000 426.108000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 253.092000 437.108000 256.579000 426.108000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.590000 437.108000 264.125000 426.108000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 264.092000 437.108000 268.503000 426.108000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 268.492000 437.108000 275.048000 426.108000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 275.092000 437.108000 282.176000 426.108000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 282.187000 437.108000 289.227000 426.108000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 289.200000 437.108000 292.687000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 292.698000 437.108000 296.185000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 296.196000 437.108000 299.683000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 299.694000 437.108000 303.181000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 303.192000 437.108000 306.679000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 306.690000 437.108000 310.177000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 310.188000 437.108000 313.675000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 313.686000 437.108000 317.173000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 317.184000 437.108000 320.671000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.682000 437.108000 324.169000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.180000 437.108000 327.667000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.678000 437.108000 331.165000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 331.176000 437.108000 334.663000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 334.674000 437.108000 338.161000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 338.172000 437.108000 341.659000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.670000 437.108000 345.157000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.168000 437.108000 348.655000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.666000 437.108000 352.153000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 352.164000 437.108000 355.651000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 355.662000 437.108000 359.149000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.160000 437.108000 362.647000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.658000 437.108000 366.145000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.156000 437.108000 369.643000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 369.654000 437.108000 373.141000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.152000 437.108000 376.639000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.650000 437.108000 380.137000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.148000 437.108000 383.635000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.646000 437.108000 387.133000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.144000 437.108000 390.631000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.642000 437.108000 394.129000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.140000 437.108000 397.627000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.638000 437.108000 401.125000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.136000 437.108000 404.623000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.634000 437.108000 408.121000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.132000 437.108000 411.619000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.630000 437.108000 415.117000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.128000 437.108000 418.615000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.626000 437.108000 422.113000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.124000 437.108000 425.611000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.622000 437.108000 429.109000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.120000 437.108000 432.607000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.618000 437.108000 436.105000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.116000 437.108000 439.603000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.614000 437.108000 443.101000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.112000 437.108000 446.599000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.610000 437.108000 450.097000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.108000 437.108000 453.595000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.606000 437.108000 457.093000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.104000 437.108000 460.591000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.602000 437.108000 464.089000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.100000 437.108000 467.587000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.598000 437.108000 471.085000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.096000 437.108000 474.583000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.594000 437.108000 478.081000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.092000 437.108000 481.579000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.590000 437.108000 485.077000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.088000 437.108000 488.575000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.586000 437.108000 492.073000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.084000 437.108000 495.571000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.582000 437.108000 499.069000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.080000 437.108000 502.567000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.578000 437.108000 506.065000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.076000 437.108000 509.563000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.574000 437.108000 513.061000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.072000 437.108000 516.559000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.570000 437.108000 520.057000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.068000 437.108000 523.555000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.566000 437.108000 527.053000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 527.064000 437.108000 530.551000 426.108000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 437.108000 540.096000 426.108000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 424.308000 232.797000 413.308000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 231.895000 424.308000 238.451000 413.308000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 238.495000 424.308000 242.004000 413.308000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 241.993000 424.308000 248.648000 413.308000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 248.494000 424.308000 252.201000 413.308000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 252.190000 424.308000 255.699000 413.308000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 255.688000 424.308000 262.772000 413.308000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 262.783000 424.308000 266.270000 413.308000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.281000 424.308000 274.696000 413.308000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 274.685000 424.308000 278.194000 413.308000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 278.183000 424.308000 284.805000 413.308000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 284.783000 424.308000 290.426000 413.308000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 290.382000 424.308000 296.883000 413.308000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 296.883000 424.308000 301.294000 413.308000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 301.200000 424.308000 304.687000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 304.698000 424.308000 308.185000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 308.196000 424.308000 311.683000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.694000 424.308000 315.181000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.192000 424.308000 318.679000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.690000 424.308000 322.177000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 322.188000 424.308000 325.675000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 325.686000 424.308000 329.173000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 329.184000 424.308000 332.671000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.682000 424.308000 336.169000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.180000 424.308000 339.667000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.678000 424.308000 343.165000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 343.176000 424.308000 346.663000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 346.674000 424.308000 350.161000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 350.172000 424.308000 353.659000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.670000 424.308000 357.157000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.168000 424.308000 360.655000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.666000 424.308000 364.153000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 364.164000 424.308000 367.651000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.662000 424.308000 371.149000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.160000 424.308000 374.647000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.658000 424.308000 378.145000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.156000 424.308000 381.643000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.654000 424.308000 385.141000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.152000 424.308000 388.639000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.650000 424.308000 392.137000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.148000 424.308000 395.635000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.646000 424.308000 399.133000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.144000 424.308000 402.631000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.642000 424.308000 406.129000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.140000 424.308000 409.627000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.638000 424.308000 413.125000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.136000 424.308000 416.623000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.634000 424.308000 420.121000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.132000 424.308000 423.619000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.630000 424.308000 427.117000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.128000 424.308000 430.615000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.626000 424.308000 434.113000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.124000 424.308000 437.611000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.622000 424.308000 441.109000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.120000 424.308000 444.607000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.618000 424.308000 448.105000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.116000 424.308000 451.603000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.614000 424.308000 455.101000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.112000 424.308000 458.599000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.610000 424.308000 462.097000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.108000 424.308000 465.595000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.606000 424.308000 469.093000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.104000 424.308000 472.591000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.602000 424.308000 476.089000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.100000 424.308000 479.587000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.598000 424.308000 483.085000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 483.096000 424.308000 486.583000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.594000 424.308000 490.081000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.092000 424.308000 493.579000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.590000 424.308000 497.077000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.088000 424.308000 500.575000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.586000 424.308000 504.073000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.084000 424.308000 507.571000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.582000 424.308000 511.069000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.080000 424.308000 514.567000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.578000 424.308000 518.065000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.076000 424.308000 521.563000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.574000 424.308000 525.061000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.072000 424.308000 528.559000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 528.570000 424.308000 532.057000 413.308000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 424.308000 540.096000 413.308000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 411.536000 233.776000 399.536000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 233.800000 411.536000 240.952000 399.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 241.000000 411.536000 247.156000 399.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 247.204000 411.536000 252.016000 399.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 252.004000 411.536000 259.096000 399.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 259.108000 411.536000 264.844000 399.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 264.808000 411.536000 268.612000 399.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.612000 411.536000 277.420000 399.536000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 277.408000 411.536000 284.560000 399.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 284.608000 411.536000 289.420000 399.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 289.408000 411.536000 297.136000 399.536000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 297.000000 411.536000 300.804000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 300.900000 411.536000 304.704000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 304.800000 411.536000 308.604000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 308.700000 411.536000 312.504000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 312.600000 411.536000 316.404000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 316.500000 411.536000 320.304000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.400000 411.536000 324.204000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.300000 411.536000 328.104000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.200000 411.536000 332.004000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.100000 411.536000 335.904000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.000000 411.536000 339.804000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.900000 411.536000 343.704000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 343.800000 411.536000 347.604000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 347.700000 411.536000 351.504000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 351.600000 411.536000 355.404000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 355.500000 411.536000 359.304000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.400000 411.536000 363.204000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 363.300000 411.536000 367.104000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.200000 411.536000 371.004000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.100000 411.536000 374.904000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.000000 411.536000 378.804000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.900000 411.536000 382.704000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.800000 411.536000 386.604000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.700000 411.536000 390.504000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.600000 411.536000 394.404000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.500000 411.536000 398.304000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.400000 411.536000 402.204000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.300000 411.536000 406.104000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.200000 411.536000 410.004000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.100000 411.536000 413.904000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.000000 411.536000 417.804000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.900000 411.536000 421.704000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.800000 411.536000 425.604000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.700000 411.536000 429.504000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.600000 411.536000 433.404000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.500000 411.536000 437.304000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.400000 411.536000 441.204000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.300000 411.536000 445.104000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.200000 411.536000 449.004000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.100000 411.536000 452.904000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.000000 411.536000 456.804000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.900000 411.536000 460.704000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.800000 411.536000 464.604000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.700000 411.536000 468.504000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.600000 411.536000 472.404000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.500000 411.536000 476.304000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.400000 411.536000 480.204000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.300000 411.536000 484.104000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.200000 411.536000 488.004000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.100000 411.536000 491.904000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.000000 411.536000 495.804000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.900000 411.536000 499.704000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.800000 411.536000 503.604000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.700000 411.536000 507.504000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.600000 411.536000 511.404000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.500000 411.536000 515.304000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.400000 411.536000 519.204000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.300000 411.536000 523.104000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.200000 411.536000 527.004000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 527.100000 411.536000 530.904000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 531.000000 411.536000 534.804000 399.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 532.500000 411.536000 540.132000 399.536000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 397.608000 229.574000 386.608000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 229.596000 397.608000 236.152000 386.608000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 236.196000 397.608000 240.607000 386.608000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 240.596000 397.608000 247.680000 386.608000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 247.691000 397.608000 252.102000 386.608000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 252.091000 397.608000 259.175000 386.608000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 259.186000 397.608000 266.226000 386.608000 1.000000 0.000000 0.000000 1.000000 b
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 266.100000 397.608000 269.587000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.598000 397.608000 273.085000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.096000 397.608000 276.583000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.594000 397.608000 280.081000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.092000 397.608000 283.579000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 283.590000 397.608000 287.077000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 287.088000 397.608000 290.575000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 290.586000 397.608000 294.073000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 294.084000 397.608000 297.571000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 297.582000 397.608000 301.069000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 301.080000 397.608000 304.567000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 304.578000 397.608000 308.065000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 308.076000 397.608000 311.563000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.574000 397.608000 315.061000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.072000 397.608000 318.559000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.570000 397.608000 322.057000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 322.068000 397.608000 325.555000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 325.566000 397.608000 329.053000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 329.064000 397.608000 332.551000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.562000 397.608000 336.049000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.060000 397.608000 339.547000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.558000 397.608000 343.045000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 343.056000 397.608000 346.543000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 346.554000 397.608000 350.041000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 350.052000 397.608000 353.539000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.550000 397.608000 357.037000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.048000 397.608000 360.535000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.546000 397.608000 364.033000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 364.044000 397.608000 367.531000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.542000 397.608000 371.029000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.040000 397.608000 374.527000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.538000 397.608000 378.025000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.036000 397.608000 381.523000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.534000 397.608000 385.021000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.032000 397.608000 388.519000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.530000 397.608000 392.017000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.028000 397.608000 395.515000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.526000 397.608000 399.013000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.024000 397.608000 402.511000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.522000 397.608000 406.009000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.020000 397.608000 409.507000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.518000 397.608000 413.005000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.016000 397.608000 416.503000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.514000 397.608000 420.001000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.012000 397.608000 423.499000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.510000 397.608000 426.997000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.008000 397.608000 430.495000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.506000 397.608000 433.993000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.004000 397.608000 437.491000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.502000 397.608000 440.989000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.000000 397.608000 444.487000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.498000 397.608000 447.985000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.996000 397.608000 451.483000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.494000 397.608000 454.981000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.992000 397.608000 458.479000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.490000 397.608000 461.977000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.988000 397.608000 465.475000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.486000 397.608000 468.973000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.984000 397.608000 472.471000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.482000 397.608000 475.969000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.980000 397.608000 479.467000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.478000 397.608000 482.965000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.976000 397.608000 486.463000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.474000 397.608000 489.961000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.972000 397.608000 493.459000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.470000 397.608000 496.957000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.968000 397.608000 500.455000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.466000 397.608000 503.953000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.964000 397.608000 507.451000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.462000 397.608000 510.949000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.960000 397.608000 514.447000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.458000 397.608000 517.945000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.956000 397.608000 521.443000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.454000 397.608000 524.941000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.952000 397.608000 528.439000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 528.450000 397.608000 531.937000 386.608000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 397.608000 540.096000 386.608000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 384.808000 232.753000 373.808000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 232.797000 384.808000 236.306000 373.808000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 236.295000 384.808000 241.553000 373.808000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 241.597000 384.808000 246.855000 373.808000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 246.899000 384.808000 253.521000 373.808000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 253.499000 384.808000 258.757000 373.808000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 258.600000 384.808000 262.087000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.098000 384.808000 265.585000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.596000 384.808000 269.083000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.094000 384.808000 272.581000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.592000 384.808000 276.079000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.090000 384.808000 279.577000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.588000 384.808000 283.075000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 283.086000 384.808000 286.573000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 286.584000 384.808000 290.071000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 290.082000 384.808000 293.569000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 293.580000 384.808000 297.067000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 297.078000 384.808000 300.565000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 300.576000 384.808000 304.063000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 304.074000 384.808000 307.561000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 307.572000 384.808000 311.059000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.070000 384.808000 314.557000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 314.568000 384.808000 318.055000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.066000 384.808000 321.553000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 321.564000 384.808000 325.051000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 325.062000 384.808000 328.549000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.560000 384.808000 332.047000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.058000 384.808000 335.545000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 335.556000 384.808000 339.043000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.054000 384.808000 342.541000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 342.552000 384.808000 346.039000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 346.050000 384.808000 349.537000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.548000 384.808000 353.035000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.046000 384.808000 356.533000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 356.544000 384.808000 360.031000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.042000 384.808000 363.529000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 363.540000 384.808000 367.027000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.038000 384.808000 370.525000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.536000 384.808000 374.023000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.034000 384.808000 377.521000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.532000 384.808000 381.019000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.030000 384.808000 384.517000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.528000 384.808000 388.015000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.026000 384.808000 391.513000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.524000 384.808000 395.011000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.022000 384.808000 398.509000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.520000 384.808000 402.007000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.018000 384.808000 405.505000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.516000 384.808000 409.003000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.014000 384.808000 412.501000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.512000 384.808000 415.999000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.010000 384.808000 419.497000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.508000 384.808000 422.995000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.006000 384.808000 426.493000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.504000 384.808000 429.991000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.002000 384.808000 433.489000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.500000 384.808000 436.987000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.998000 384.808000 440.485000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.496000 384.808000 443.983000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.994000 384.808000 447.481000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.492000 384.808000 450.979000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.990000 384.808000 454.477000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.488000 384.808000 457.975000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.986000 384.808000 461.473000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.484000 384.808000 464.971000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.982000 384.808000 468.469000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.480000 384.808000 471.967000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.978000 384.808000 475.465000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.476000 384.808000 478.963000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.974000 384.808000 482.461000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.472000 384.808000 485.959000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.970000 384.808000 489.457000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.468000 384.808000 492.955000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.966000 384.808000 496.453000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.464000 384.808000 499.951000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.962000 384.808000 503.449000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.460000 384.808000 506.947000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.958000 384.808000 510.445000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.456000 384.808000 513.943000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.954000 384.808000 517.441000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.452000 384.808000 520.939000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.950000 384.808000 524.437000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.448000 384.808000 527.935000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 527.946000 384.808000 531.433000 373.808000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1100.000000 0 DAAAAA+DejaVuSerif
+drawChar 533.100000 384.808000 540.096000 373.808000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 372.036000 231.076000 360.036000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 231.100000 372.036000 238.252000 360.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 238.300000 372.036000 242.128000 360.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 242.104000 372.036000 245.932000 360.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 245.908000 372.036000 253.000000 360.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 253.012000 372.036000 258.748000 360.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 258.712000 372.036000 265.480000 360.036000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 265.400000 372.036000 269.204000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.204000 372.036000 273.008000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.008000 372.036000 276.812000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.812000 372.036000 280.616000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.616000 372.036000 284.420000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 284.420000 372.036000 288.224000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 288.224000 372.036000 292.028000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 292.028000 372.036000 295.832000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 295.832000 372.036000 299.636000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 299.636000 372.036000 303.440000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 303.440000 372.036000 307.244000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 307.244000 372.036000 311.048000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.048000 372.036000 314.852000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 314.852000 372.036000 318.656000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.656000 372.036000 322.460000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 322.460000 372.036000 326.264000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 326.264000 372.036000 330.068000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 330.068000 372.036000 333.872000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 333.872000 372.036000 337.676000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 337.676000 372.036000 341.480000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.480000 372.036000 345.284000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.284000 372.036000 349.088000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.088000 372.036000 352.892000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 352.892000 372.036000 356.696000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 356.696000 372.036000 360.500000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.500000 372.036000 364.304000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 364.304000 372.036000 368.108000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.108000 372.036000 371.912000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.912000 372.036000 375.716000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.716000 372.036000 379.520000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.520000 372.036000 383.324000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.324000 372.036000 387.128000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.128000 372.036000 390.932000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.932000 372.036000 394.736000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.736000 372.036000 398.540000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.540000 372.036000 402.344000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.344000 372.036000 406.148000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.148000 372.036000 409.952000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.952000 372.036000 413.756000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.756000 372.036000 417.560000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.560000 372.036000 421.364000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.364000 372.036000 425.168000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.168000 372.036000 428.972000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.972000 372.036000 432.776000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.776000 372.036000 436.580000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.580000 372.036000 440.384000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.384000 372.036000 444.188000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.188000 372.036000 447.992000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.992000 372.036000 451.796000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.796000 372.036000 455.600000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.600000 372.036000 459.404000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.404000 372.036000 463.208000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.208000 372.036000 467.012000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.012000 372.036000 470.816000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.816000 372.036000 474.620000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.620000 372.036000 478.424000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.424000 372.036000 482.228000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.228000 372.036000 486.032000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.032000 372.036000 489.836000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.836000 372.036000 493.640000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.640000 372.036000 497.444000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.444000 372.036000 501.248000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.248000 372.036000 505.052000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.052000 372.036000 508.856000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.856000 372.036000 512.660000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.660000 372.036000 516.464000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.464000 372.036000 520.268000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.268000 372.036000 524.072000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.072000 372.036000 527.876000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 527.876000 372.036000 531.680000 360.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 532.500000 372.036000 540.132000 360.036000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 354.956000 230.800000 342.956000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 230.596000 354.956000 236.128000 342.956000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 236.092000 354.956000 241.624000 342.956000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 241.588000 354.956000 246.136000 342.956000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 246.184000 354.956000 253.480000 342.956000 1.000000 0.000000 0.000000 1.000000 c
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 253.500000 354.956000 257.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.700000 354.956000 261.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.900000 354.956000 266.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.100000 354.956000 270.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.300000 354.956000 274.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.500000 354.956000 278.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 278.700000 354.956000 282.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 282.900000 354.956000 287.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 287.100000 354.956000 291.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 291.300000 354.956000 295.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 295.500000 354.956000 299.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 299.700000 354.956000 303.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 303.900000 354.956000 308.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 308.100000 354.956000 312.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 312.300000 354.956000 316.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 316.500000 354.956000 320.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.700000 354.956000 324.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.900000 354.956000 329.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 329.100000 354.956000 333.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 333.300000 354.956000 337.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 337.500000 354.956000 341.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.700000 354.956000 345.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.900000 354.956000 350.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 350.100000 354.956000 354.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.300000 354.956000 358.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.500000 354.956000 362.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.700000 354.956000 366.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.900000 354.956000 371.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.100000 354.956000 375.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.300000 354.956000 379.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.500000 354.956000 383.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.700000 354.956000 387.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.900000 354.956000 392.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.100000 354.956000 396.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.300000 354.956000 400.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.500000 354.956000 404.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.700000 354.956000 408.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.900000 354.956000 413.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.100000 354.956000 417.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.300000 354.956000 421.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.500000 354.956000 425.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.700000 354.956000 429.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.900000 354.956000 434.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.100000 354.956000 438.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.300000 354.956000 442.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.500000 354.956000 446.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.700000 354.956000 450.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.900000 354.956000 455.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.100000 354.956000 459.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.300000 354.956000 463.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.500000 354.956000 467.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.700000 354.956000 471.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.900000 354.956000 476.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.100000 354.956000 480.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.300000 354.956000 484.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.500000 354.956000 488.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.700000 354.956000 492.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.900000 354.956000 497.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.100000 354.956000 501.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.300000 354.956000 505.476000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.500000 354.956000 509.676000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.700000 354.956000 513.876000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.900000 354.956000 518.076000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.100000 354.956000 522.276000 342.956000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 354.956000 531.740000 342.956000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 354.956000 540.044000 342.956000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 108.100000 330.356000 121.372000 318.356000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 121.396000 330.356000 128.368000 318.356000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 128.392000 330.356000 132.568000 318.356000 1.000000 0.000000 0.000000 1.000000
+drawChar 132.592000 330.356000 142.840000 318.356000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 142.792000 330.356000 150.556000 318.356000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.592000 330.356000 156.904000 318.356000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 156.892000 330.356000 165.280000 318.356000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 165.292000 330.356000 172.924000 318.356000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 172.888000 330.356000 181.612000 318.356000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 181.500000 330.356000 185.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.700000 330.356000 189.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.900000 330.356000 194.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 194.100000 330.356000 198.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.300000 330.356000 202.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.500000 330.356000 206.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.700000 330.356000 210.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.900000 330.356000 215.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.100000 330.356000 219.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.300000 330.356000 223.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.500000 330.356000 227.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.700000 330.356000 231.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.900000 330.356000 236.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 236.100000 330.356000 240.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.300000 330.356000 244.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.500000 330.356000 248.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.700000 330.356000 252.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.900000 330.356000 257.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.100000 330.356000 261.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.300000 330.356000 265.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.500000 330.356000 269.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.700000 330.356000 273.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.900000 330.356000 278.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 278.100000 330.356000 282.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 282.300000 330.356000 286.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 286.500000 330.356000 290.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 290.700000 330.356000 294.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 294.900000 330.356000 299.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 299.100000 330.356000 303.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 303.300000 330.356000 307.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 307.500000 330.356000 311.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.700000 330.356000 315.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.900000 330.356000 320.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.100000 330.356000 324.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.300000 330.356000 328.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.500000 330.356000 332.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.700000 330.356000 336.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.900000 330.356000 341.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.100000 330.356000 345.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.300000 330.356000 349.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.500000 330.356000 353.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.700000 330.356000 357.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.900000 330.356000 362.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.100000 330.356000 366.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.300000 330.356000 370.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.500000 330.356000 374.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.700000 330.356000 378.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.900000 330.356000 383.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.100000 330.356000 387.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.300000 330.356000 391.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.500000 330.356000 395.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.700000 330.356000 399.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.900000 330.356000 404.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.100000 330.356000 408.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.300000 330.356000 412.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.500000 330.356000 416.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.700000 330.356000 420.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.900000 330.356000 425.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.100000 330.356000 429.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.300000 330.356000 433.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.500000 330.356000 437.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.700000 330.356000 441.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.900000 330.356000 446.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.100000 330.356000 450.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.300000 330.356000 454.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.500000 330.356000 458.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.700000 330.356000 462.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.900000 330.356000 467.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.100000 330.356000 471.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.300000 330.356000 475.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.500000 330.356000 479.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.700000 330.356000 483.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 483.900000 330.356000 488.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.100000 330.356000 492.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.300000 330.356000 496.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.500000 330.356000 500.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.700000 330.356000 504.876000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.900000 330.356000 509.076000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.100000 330.356000 513.276000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.300000 330.356000 517.476000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.500000 330.356000 521.676000 318.356000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 330.356000 531.740000 318.356000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 330.356000 540.044000 318.356000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 313.156000 232.828000 301.156000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 232.804000 313.156000 240.436000 301.156000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 240.400000 313.156000 246.712000 301.156000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 246.700000 313.156000 255.088000 301.156000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 255.100000 313.156000 259.276000 301.156000 1.000000 0.000000 0.000000 1.000000
+drawChar 259.300000 313.156000 267.688000 301.156000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 267.700000 313.156000 275.464000 301.156000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 275.500000 313.156000 281.812000 301.156000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 281.800000 313.156000 290.188000 301.156000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 290.200000 313.156000 297.832000 301.156000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.796000 313.156000 306.520000 301.156000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 306.500000 313.156000 310.676000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 310.796000 313.156000 314.972000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.092000 313.156000 319.268000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 319.388000 313.156000 323.564000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 323.684000 313.156000 327.860000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.980000 313.156000 332.156000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.276000 313.156000 336.452000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.572000 313.156000 340.748000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 340.868000 313.156000 345.044000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.164000 313.156000 349.340000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.460000 313.156000 353.636000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.756000 313.156000 357.932000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.052000 313.156000 362.228000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.348000 313.156000 366.524000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.644000 313.156000 370.820000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.940000 313.156000 375.116000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.236000 313.156000 379.412000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.532000 313.156000 383.708000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.828000 313.156000 388.004000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.124000 313.156000 392.300000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.420000 313.156000 396.596000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.716000 313.156000 400.892000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.012000 313.156000 405.188000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.308000 313.156000 409.484000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.604000 313.156000 413.780000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.900000 313.156000 418.076000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.196000 313.156000 422.372000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.492000 313.156000 426.668000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.788000 313.156000 430.964000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.084000 313.156000 435.260000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.380000 313.156000 439.556000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.676000 313.156000 443.852000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.972000 313.156000 448.148000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.268000 313.156000 452.444000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.564000 313.156000 456.740000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.860000 313.156000 461.036000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.156000 313.156000 465.332000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.452000 313.156000 469.628000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.748000 313.156000 473.924000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.044000 313.156000 478.220000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.340000 313.156000 482.516000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.636000 313.156000 486.812000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.932000 313.156000 491.108000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.228000 313.156000 495.404000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.524000 313.156000 499.700000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.820000 313.156000 503.996000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.116000 313.156000 508.292000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.412000 313.156000 512.588000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.708000 313.156000 516.884000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.004000 313.156000 521.180000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.300000 313.156000 525.476000 301.156000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 313.156000 531.740000 301.156000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 313.156000 540.044000 301.156000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 295.956000 230.800000 283.956000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 229.696000 295.956000 237.328000 283.956000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 237.292000 295.956000 245.680000 283.956000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 245.692000 295.956000 253.324000 283.956000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 253.288000 295.956000 258.820000 283.956000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 258.784000 295.956000 266.548000 283.956000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 266.584000 295.956000 274.972000 283.956000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 274.984000 295.956000 279.532000 283.956000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 279.580000 295.956000 287.212000 283.956000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 287.176000 295.956000 291.352000 283.956000 1.000000 0.000000 0.000000 1.000000
+drawChar 291.376000 295.956000 301.624000 283.956000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 301.576000 295.956000 309.340000 283.956000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 309.376000 295.956000 315.688000 283.956000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 315.676000 295.956000 324.064000 283.956000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 324.076000 295.956000 331.708000 283.956000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 331.672000 295.956000 340.396000 283.956000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 340.400000 295.956000 344.576000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.696000 295.956000 348.872000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.992000 295.956000 353.168000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.288000 295.956000 357.464000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.584000 295.956000 361.760000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.880000 295.956000 366.056000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.176000 295.956000 370.352000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.472000 295.956000 374.648000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.768000 295.956000 378.944000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.064000 295.956000 383.240000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.360000 295.956000 387.536000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.656000 295.956000 391.832000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.952000 295.956000 396.128000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.248000 295.956000 400.424000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.544000 295.956000 404.720000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.840000 295.956000 409.016000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.136000 295.956000 413.312000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.432000 295.956000 417.608000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.728000 295.956000 421.904000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.024000 295.956000 426.200000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.320000 295.956000 430.496000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.616000 295.956000 434.792000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.912000 295.956000 439.088000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.208000 295.956000 443.384000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.504000 295.956000 447.680000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.800000 295.956000 451.976000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.096000 295.956000 456.272000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.392000 295.956000 460.568000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.688000 295.956000 464.864000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.984000 295.956000 469.160000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.280000 295.956000 473.456000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.576000 295.956000 477.752000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.872000 295.956000 482.048000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.168000 295.956000 486.344000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.464000 295.956000 490.640000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.760000 295.956000 494.936000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.056000 295.956000 499.232000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.352000 295.956000 503.528000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.648000 295.956000 507.824000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.944000 295.956000 512.120000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.240000 295.956000 516.416000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.536000 295.956000 520.712000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.832000 295.956000 525.008000 283.956000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 295.956000 531.740000 283.956000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 295.956000 540.044000 283.956000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 278.756000 230.008000 266.756000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 229.804000 278.756000 236.116000 266.756000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 236.104000 278.756000 244.828000 266.756000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 244.804000 278.756000 249.352000 266.756000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 249.400000 278.756000 254.932000 266.756000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 254.900000 278.756000 259.076000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.196000 278.756000 263.372000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.492000 278.756000 267.668000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.788000 278.756000 271.964000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.084000 278.756000 276.260000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.380000 278.756000 280.556000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.676000 278.756000 284.852000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 284.972000 278.756000 289.148000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 289.268000 278.756000 293.444000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 293.564000 278.756000 297.740000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 297.860000 278.756000 302.036000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 302.156000 278.756000 306.332000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 306.452000 278.756000 310.628000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 310.748000 278.756000 314.924000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.044000 278.756000 319.220000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 319.340000 278.756000 323.516000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 323.636000 278.756000 327.812000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.932000 278.756000 332.108000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.228000 278.756000 336.404000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.524000 278.756000 340.700000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 340.820000 278.756000 344.996000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.116000 278.756000 349.292000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.412000 278.756000 353.588000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.708000 278.756000 357.884000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.004000 278.756000 362.180000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.300000 278.756000 366.476000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.596000 278.756000 370.772000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.892000 278.756000 375.068000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.188000 278.756000 379.364000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.484000 278.756000 383.660000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.780000 278.756000 387.956000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.076000 278.756000 392.252000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.372000 278.756000 396.548000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.668000 278.756000 400.844000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.964000 278.756000 405.140000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.260000 278.756000 409.436000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.556000 278.756000 413.732000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.852000 278.756000 418.028000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.148000 278.756000 422.324000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.444000 278.756000 426.620000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.740000 278.756000 430.916000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.036000 278.756000 435.212000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.332000 278.756000 439.508000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.628000 278.756000 443.804000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.924000 278.756000 448.100000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.220000 278.756000 452.396000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.516000 278.756000 456.692000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.812000 278.756000 460.988000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.108000 278.756000 465.284000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.404000 278.756000 469.580000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.700000 278.756000 473.876000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.996000 278.756000 478.172000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.292000 278.756000 482.468000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.588000 278.756000 486.764000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.884000 278.756000 491.060000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.180000 278.756000 495.356000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.476000 278.756000 499.652000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.772000 278.756000 503.948000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.068000 278.756000 508.244000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.364000 278.756000 512.540000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.660000 278.756000 516.836000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.956000 278.756000 521.132000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.252000 278.756000 525.428000 266.756000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 278.756000 531.740000 266.756000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 278.756000 540.044000 266.756000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 261.556000 225.676000 249.556000 1.000000 0.000000 0.000000 1.000000
+drawChar 225.700000 261.556000 234.628000 249.556000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 233.800000 261.556000 240.112000 249.556000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 240.100000 261.556000 247.732000 249.556000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 247.696000 261.556000 255.328000 249.556000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 255.292000 261.556000 262.036000 249.556000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 262.000000 261.556000 266.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.200000 261.556000 270.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.400000 261.556000 274.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.600000 261.556000 278.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 278.800000 261.556000 282.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 283.000000 261.556000 287.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 287.200000 261.556000 291.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 291.400000 261.556000 295.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 295.600000 261.556000 299.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 299.800000 261.556000 303.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 304.000000 261.556000 308.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 308.200000 261.556000 312.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 312.400000 261.556000 316.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 316.600000 261.556000 320.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.800000 261.556000 324.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 325.000000 261.556000 329.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 329.200000 261.556000 333.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 333.400000 261.556000 337.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 337.600000 261.556000 341.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.800000 261.556000 345.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 346.000000 261.556000 350.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 350.200000 261.556000 354.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.400000 261.556000 358.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.600000 261.556000 362.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.800000 261.556000 366.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.000000 261.556000 371.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.200000 261.556000 375.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.400000 261.556000 379.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.600000 261.556000 383.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.800000 261.556000 387.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.000000 261.556000 392.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.200000 261.556000 396.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.400000 261.556000 400.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.600000 261.556000 404.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.800000 261.556000 408.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.000000 261.556000 413.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.200000 261.556000 417.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.400000 261.556000 421.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.600000 261.556000 425.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.800000 261.556000 429.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.000000 261.556000 434.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.200000 261.556000 438.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.400000 261.556000 442.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.600000 261.556000 446.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.800000 261.556000 450.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.000000 261.556000 455.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.200000 261.556000 459.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.400000 261.556000 463.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.600000 261.556000 467.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.800000 261.556000 471.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.000000 261.556000 476.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.200000 261.556000 480.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.400000 261.556000 484.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.600000 261.556000 488.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.800000 261.556000 492.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.000000 261.556000 497.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.200000 261.556000 501.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.400000 261.556000 505.576000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.600000 261.556000 509.776000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.800000 261.556000 513.976000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.000000 261.556000 518.176000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.200000 261.556000 522.376000 249.556000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 261.556000 531.740000 249.556000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 261.556000 540.044000 249.556000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 244.356000 231.748000 232.356000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 231.700000 244.356000 239.464000 232.356000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 239.500000 244.356000 245.812000 232.356000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 245.800000 244.356000 254.188000 232.356000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 254.200000 244.356000 261.832000 232.356000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 261.796000 244.356000 270.520000 232.356000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 270.496000 244.356000 274.672000 232.356000 1.000000 0.000000 0.000000 1.000000
+drawChar 274.696000 244.356000 283.360000 232.356000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 283.396000 244.356000 292.120000 232.356000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 292.096000 244.356000 299.728000 232.356000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 299.692000 244.356000 308.080000 232.356000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 308.100000 244.356000 312.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 312.300000 244.356000 316.476000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 316.500000 244.356000 320.676000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.700000 244.356000 324.876000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.900000 244.356000 329.076000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 329.100000 244.356000 333.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 333.300000 244.356000 337.476000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 337.500000 244.356000 341.676000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.700000 244.356000 345.876000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.900000 244.356000 350.076000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 350.100000 244.356000 354.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.300000 244.356000 358.476000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.500000 244.356000 362.676000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.700000 244.356000 366.876000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.900000 244.356000 371.076000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.100000 244.356000 375.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.300000 244.356000 379.476000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.500000 244.356000 383.676000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.700000 244.356000 387.876000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.900000 244.356000 392.076000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.100000 244.356000 396.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.300000 244.356000 400.476000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.500000 244.356000 404.676000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.700000 244.356000 408.876000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.900000 244.356000 413.076000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.100000 244.356000 417.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.300000 244.356000 421.476000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.500000 244.356000 425.676000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.700000 244.356000 429.876000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.900000 244.356000 434.076000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.100000 244.356000 438.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.300000 244.356000 442.476000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.500000 244.356000 446.676000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.700000 244.356000 450.876000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.900000 244.356000 455.076000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.100000 244.356000 459.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.300000 244.356000 463.476000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.500000 244.356000 467.676000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.700000 244.356000 471.876000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.900000 244.356000 476.076000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.100000 244.356000 480.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.300000 244.356000 484.476000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.500000 244.356000 488.676000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.700000 244.356000 492.876000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.900000 244.356000 497.076000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.100000 244.356000 501.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.300000 244.356000 505.476000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.500000 244.356000 509.676000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.700000 244.356000 513.876000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.900000 244.356000 518.076000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.100000 244.356000 522.276000 232.356000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 244.356000 531.740000 232.356000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 244.356000 540.044000 232.356000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 230.336000 229.492000 218.336000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 228.604000 230.336000 235.828000 218.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 235.804000 230.336000 243.028000 218.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 243.004000 230.336000 246.832000 218.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 246.808000 230.336000 252.964000 218.336000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 252.900000 230.336000 256.704000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.704000 230.336000 260.508000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.508000 230.336000 264.312000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.312000 230.336000 268.116000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.116000 230.336000 271.920000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.920000 230.336000 275.724000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.724000 230.336000 279.528000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.528000 230.336000 283.332000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 283.332000 230.336000 287.136000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 287.136000 230.336000 290.940000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 290.940000 230.336000 294.744000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 294.744000 230.336000 298.548000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 298.548000 230.336000 302.352000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 302.352000 230.336000 306.156000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 306.156000 230.336000 309.960000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 309.960000 230.336000 313.764000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 313.764000 230.336000 317.568000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 317.568000 230.336000 321.372000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 321.372000 230.336000 325.176000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 325.176000 230.336000 328.980000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.980000 230.336000 332.784000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.784000 230.336000 336.588000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.588000 230.336000 340.392000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 340.392000 230.336000 344.196000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.196000 230.336000 348.000000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.000000 230.336000 351.804000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 351.804000 230.336000 355.608000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 355.608000 230.336000 359.412000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.412000 230.336000 363.216000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 363.216000 230.336000 367.020000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.020000 230.336000 370.824000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.824000 230.336000 374.628000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.628000 230.336000 378.432000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.432000 230.336000 382.236000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.236000 230.336000 386.040000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.040000 230.336000 389.844000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.844000 230.336000 393.648000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.648000 230.336000 397.452000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.452000 230.336000 401.256000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.256000 230.336000 405.060000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.060000 230.336000 408.864000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.864000 230.336000 412.668000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.668000 230.336000 416.472000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.472000 230.336000 420.276000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.276000 230.336000 424.080000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.080000 230.336000 427.884000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.884000 230.336000 431.688000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.688000 230.336000 435.492000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.492000 230.336000 439.296000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.296000 230.336000 443.100000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.100000 230.336000 446.904000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.904000 230.336000 450.708000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.708000 230.336000 454.512000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.512000 230.336000 458.316000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.316000 230.336000 462.120000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.120000 230.336000 465.924000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.924000 230.336000 469.728000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.728000 230.336000 473.532000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.532000 230.336000 477.336000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.336000 230.336000 481.140000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.140000 230.336000 484.944000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.944000 230.336000 488.748000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.748000 230.336000 492.552000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.552000 230.336000 496.356000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.356000 230.336000 500.160000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.160000 230.336000 503.964000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.964000 230.336000 507.768000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.768000 230.336000 511.572000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.572000 230.336000 515.376000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.376000 230.336000 519.180000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.180000 230.336000 522.984000 218.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 524.800000 230.336000 532.432000 218.336000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 532.396000 230.336000 540.028000 218.336000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 216.436000 231.076000 204.436000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 231.100000 216.436000 238.252000 204.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 238.300000 216.436000 244.036000 204.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 244.000000 216.436000 251.680000 204.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 251.704000 216.436000 258.796000 204.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 258.808000 216.436000 266.536000 204.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 266.512000 216.436000 270.316000 204.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.316000 216.436000 278.308000 204.436000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 277.420000 216.436000 284.644000 204.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 284.620000 216.436000 291.844000 204.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 291.820000 216.436000 295.648000 204.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 295.624000 216.436000 301.780000 204.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 301.700000 216.436000 305.504000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 305.504000 216.436000 309.308000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 309.308000 216.436000 313.112000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 313.112000 216.436000 316.916000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 316.916000 216.436000 320.720000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.720000 216.436000 324.524000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.524000 216.436000 328.328000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.328000 216.436000 332.132000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.132000 216.436000 335.936000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 335.936000 216.436000 339.740000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.740000 216.436000 343.544000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 343.544000 216.436000 347.348000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 347.348000 216.436000 351.152000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 351.152000 216.436000 354.956000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.956000 216.436000 358.760000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.760000 216.436000 362.564000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.564000 216.436000 366.368000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.368000 216.436000 370.172000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.172000 216.436000 373.976000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.976000 216.436000 377.780000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.780000 216.436000 381.584000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.584000 216.436000 385.388000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.388000 216.436000 389.192000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.192000 216.436000 392.996000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.996000 216.436000 396.800000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.800000 216.436000 400.604000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.604000 216.436000 404.408000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.408000 216.436000 408.212000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.212000 216.436000 412.016000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.016000 216.436000 415.820000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.820000 216.436000 419.624000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.624000 216.436000 423.428000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.428000 216.436000 427.232000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.232000 216.436000 431.036000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.036000 216.436000 434.840000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.840000 216.436000 438.644000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.644000 216.436000 442.448000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.448000 216.436000 446.252000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.252000 216.436000 450.056000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.056000 216.436000 453.860000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.860000 216.436000 457.664000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.664000 216.436000 461.468000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.468000 216.436000 465.272000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.272000 216.436000 469.076000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.076000 216.436000 472.880000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.880000 216.436000 476.684000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.684000 216.436000 480.488000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.488000 216.436000 484.292000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.292000 216.436000 488.096000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.096000 216.436000 491.900000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.900000 216.436000 495.704000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.704000 216.436000 499.508000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.508000 216.436000 503.312000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.312000 216.436000 507.116000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.116000 216.436000 510.920000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.920000 216.436000 514.724000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.724000 216.436000 518.528000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.528000 216.436000 522.332000 204.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 524.800000 216.436000 532.432000 204.436000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 532.396000 216.436000 540.028000 204.436000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 199.356000 231.748000 187.356000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 231.700000 199.356000 238.012000 187.356000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 238.000000 199.356000 245.632000 187.356000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 245.596000 199.356000 253.228000 187.356000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 253.192000 199.356000 261.916000 187.356000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 261.892000 199.356000 270.616000 187.356000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 270.592000 199.356000 278.584000 187.356000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 278.596000 199.356000 287.320000 187.356000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 287.296000 199.356000 294.040000 187.356000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 294.100000 199.356000 301.732000 187.356000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 301.800000 199.356000 305.976000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 306.096000 199.356000 310.272000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 310.392000 199.356000 314.568000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 314.688000 199.356000 318.864000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.984000 199.356000 323.160000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 323.280000 199.356000 327.456000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.576000 199.356000 331.752000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 331.872000 199.356000 336.048000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.168000 199.356000 340.344000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 340.464000 199.356000 344.640000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.760000 199.356000 348.936000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.056000 199.356000 353.232000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.352000 199.356000 357.528000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.648000 199.356000 361.824000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.944000 199.356000 366.120000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.240000 199.356000 370.416000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.536000 199.356000 374.712000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.832000 199.356000 379.008000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.128000 199.356000 383.304000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.424000 199.356000 387.600000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.720000 199.356000 391.896000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.016000 199.356000 396.192000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.312000 199.356000 400.488000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.608000 199.356000 404.784000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.904000 199.356000 409.080000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.200000 199.356000 413.376000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.496000 199.356000 417.672000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.792000 199.356000 421.968000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.088000 199.356000 426.264000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.384000 199.356000 430.560000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.680000 199.356000 434.856000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.976000 199.356000 439.152000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.272000 199.356000 443.448000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.568000 199.356000 447.744000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.864000 199.356000 452.040000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.160000 199.356000 456.336000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.456000 199.356000 460.632000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.752000 199.356000 464.928000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.048000 199.356000 469.224000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.344000 199.356000 473.520000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.640000 199.356000 477.816000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.936000 199.356000 482.112000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.232000 199.356000 486.408000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.528000 199.356000 490.704000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.824000 199.356000 495.000000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.120000 199.356000 499.296000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.416000 199.356000 503.592000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.712000 199.356000 507.888000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.008000 199.356000 512.184000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.304000 199.356000 516.480000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.600000 199.356000 520.776000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.896000 199.356000 525.072000 187.356000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 199.356000 531.740000 187.356000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 199.356000 540.044000 187.356000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 182.156000 230.008000 170.156000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 229.996000 182.156000 234.544000 170.156000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 234.592000 182.156000 242.584000 170.156000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 242.596000 182.156000 252.916000 170.156000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 252.892000 182.156000 260.524000 170.156000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 260.488000 182.156000 266.800000 170.156000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 266.788000 182.156000 273.532000 170.156000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 273.500000 182.156000 277.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.700000 182.156000 281.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.900000 182.156000 286.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 286.100000 182.156000 290.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 290.300000 182.156000 294.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 294.500000 182.156000 298.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 298.700000 182.156000 302.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 302.900000 182.156000 307.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 307.100000 182.156000 311.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.300000 182.156000 315.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.500000 182.156000 319.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 319.700000 182.156000 323.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 323.900000 182.156000 328.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.100000 182.156000 332.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.300000 182.156000 336.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.500000 182.156000 340.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 340.700000 182.156000 344.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.900000 182.156000 349.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.100000 182.156000 353.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.300000 182.156000 357.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.500000 182.156000 361.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.700000 182.156000 365.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.900000 182.156000 370.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.100000 182.156000 374.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.300000 182.156000 378.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.500000 182.156000 382.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.700000 182.156000 386.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.900000 182.156000 391.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.100000 182.156000 395.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.300000 182.156000 399.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.500000 182.156000 403.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.700000 182.156000 407.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.900000 182.156000 412.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.100000 182.156000 416.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.300000 182.156000 420.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.500000 182.156000 424.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.700000 182.156000 428.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.900000 182.156000 433.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.100000 182.156000 437.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.300000 182.156000 441.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.500000 182.156000 445.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.700000 182.156000 449.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.900000 182.156000 454.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.100000 182.156000 458.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.300000 182.156000 462.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.500000 182.156000 466.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.700000 182.156000 470.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.900000 182.156000 475.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.100000 182.156000 479.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.300000 182.156000 483.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 483.500000 182.156000 487.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 487.700000 182.156000 491.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.900000 182.156000 496.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.100000 182.156000 500.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.300000 182.156000 504.476000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.500000 182.156000 508.676000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.700000 182.156000 512.876000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.900000 182.156000 517.076000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.100000 182.156000 521.276000 170.156000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 182.156000 531.740000 170.156000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 182.156000 540.044000 170.156000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 164.956000 230.056000 152.956000 1.000000 0.000000 0.000000 1.000000 Y
+drawChar 229.096000 164.956000 236.860000 152.956000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 236.896000 164.956000 243.208000 152.956000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 243.196000 164.956000 251.584000 152.956000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 251.500000 164.956000 255.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 255.700000 164.956000 259.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.900000 164.956000 264.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.100000 164.956000 268.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.300000 164.956000 272.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.500000 164.956000 276.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.700000 164.956000 280.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.900000 164.956000 285.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 285.100000 164.956000 289.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 289.300000 164.956000 293.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 293.500000 164.956000 297.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 297.700000 164.956000 301.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 301.900000 164.956000 306.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 306.100000 164.956000 310.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 310.300000 164.956000 314.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 314.500000 164.956000 318.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 318.700000 164.956000 322.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 322.900000 164.956000 327.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.100000 164.956000 331.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 331.300000 164.956000 335.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 335.500000 164.956000 339.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.700000 164.956000 343.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 343.900000 164.956000 348.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.100000 164.956000 352.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 352.300000 164.956000 356.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 356.500000 164.956000 360.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.700000 164.956000 364.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 364.900000 164.956000 369.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 369.100000 164.956000 373.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.300000 164.956000 377.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.500000 164.956000 381.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.700000 164.956000 385.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.900000 164.956000 390.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.100000 164.956000 394.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.300000 164.956000 398.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.500000 164.956000 402.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.700000 164.956000 406.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.900000 164.956000 411.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.100000 164.956000 415.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.300000 164.956000 419.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.500000 164.956000 423.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.700000 164.956000 427.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.900000 164.956000 432.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.100000 164.956000 436.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.300000 164.956000 440.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.500000 164.956000 444.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.700000 164.956000 448.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.900000 164.956000 453.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.100000 164.956000 457.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.300000 164.956000 461.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.500000 164.956000 465.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.700000 164.956000 469.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.900000 164.956000 474.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.100000 164.956000 478.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.300000 164.956000 482.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.500000 164.956000 486.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.700000 164.956000 490.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.900000 164.956000 495.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.100000 164.956000 499.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.300000 164.956000 503.476000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.500000 164.956000 507.676000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.700000 164.956000 511.876000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.900000 164.956000 516.076000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.100000 164.956000 520.276000 152.956000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 164.956000 531.740000 152.956000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 164.956000 540.044000 152.956000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 108.100000 140.356000 116.608000 128.356000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 116.596000 140.356000 121.144000 128.356000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 121.192000 140.356000 126.724000 128.356000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 126.688000 140.356000 135.412000 128.356000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 135.388000 140.356000 143.020000 128.356000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.984000 140.356000 149.728000 128.356000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 149.788000 140.356000 156.532000 128.356000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 156.500000 140.356000 160.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.700000 140.356000 164.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.900000 140.356000 169.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.100000 140.356000 173.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.300000 140.356000 177.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.500000 140.356000 181.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.700000 140.356000 185.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.900000 140.356000 190.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 190.100000 140.356000 194.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 194.300000 140.356000 198.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.500000 140.356000 202.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.700000 140.356000 206.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.900000 140.356000 211.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.100000 140.356000 215.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.300000 140.356000 219.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.500000 140.356000 223.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.700000 140.356000 227.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.900000 140.356000 232.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 232.100000 140.356000 236.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 236.300000 140.356000 240.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.500000 140.356000 244.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.700000 140.356000 248.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.900000 140.356000 253.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.100000 140.356000 257.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.300000 140.356000 261.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.500000 140.356000 265.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.700000 140.356000 269.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.900000 140.356000 274.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.100000 140.356000 278.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 278.300000 140.356000 282.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 282.500000 140.356000 286.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 286.700000 140.356000 290.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 290.900000 140.356000 295.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 295.100000 140.356000 299.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 299.300000 140.356000 303.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 303.500000 140.356000 307.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 307.700000 140.356000 311.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.900000 140.356000 316.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 316.100000 140.356000 320.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.300000 140.356000 324.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.500000 140.356000 328.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.700000 140.356000 332.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.900000 140.356000 337.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 337.100000 140.356000 341.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.300000 140.356000 345.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.500000 140.356000 349.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.700000 140.356000 353.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.900000 140.356000 358.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.100000 140.356000 362.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.300000 140.356000 366.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.500000 140.356000 370.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.700000 140.356000 374.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.900000 140.356000 379.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.100000 140.356000 383.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.300000 140.356000 387.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.500000 140.356000 391.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.700000 140.356000 395.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.900000 140.356000 400.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.100000 140.356000 404.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.300000 140.356000 408.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.500000 140.356000 412.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.700000 140.356000 416.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.900000 140.356000 421.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.100000 140.356000 425.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.300000 140.356000 429.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.500000 140.356000 433.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.700000 140.356000 437.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.900000 140.356000 442.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.100000 140.356000 446.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.300000 140.356000 450.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.500000 140.356000 454.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.700000 140.356000 458.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.900000 140.356000 463.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.100000 140.356000 467.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.300000 140.356000 471.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.500000 140.356000 475.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.700000 140.356000 479.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.900000 140.356000 484.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.100000 140.356000 488.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.300000 140.356000 492.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.500000 140.356000 496.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.700000 140.356000 500.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.900000 140.356000 505.076000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.100000 140.356000 509.276000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.300000 140.356000 513.476000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.500000 140.356000 517.676000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.700000 140.356000 521.876000 128.356000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 140.356000 531.740000 128.356000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 140.356000 540.044000 128.356000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 123.156000 230.164000 111.156000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 230.200000 123.156000 240.520000 111.156000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 240.496000 123.156000 245.044000 111.156000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 245.092000 123.156000 257.788000 111.156000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 257.788000 123.156000 270.484000 111.156000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 270.484000 123.156000 275.032000 111.156000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 275.080000 123.156000 283.804000 111.156000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 283.780000 123.156000 292.168000 111.156000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 292.180000 123.156000 296.356000 111.156000 1.000000 0.000000 0.000000 1.000000
+drawChar 296.380000 123.156000 305.392000 111.156000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 305.080000 123.156000 313.072000 111.156000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 313.084000 123.156000 321.076000 111.156000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 321.088000 123.156000 325.636000 111.156000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 325.500000 123.156000 329.676000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 329.700000 123.156000 333.876000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 333.900000 123.156000 338.076000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 338.100000 123.156000 342.276000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 342.300000 123.156000 346.476000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 346.500000 123.156000 350.676000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 350.700000 123.156000 354.876000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.900000 123.156000 359.076000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.100000 123.156000 363.276000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 363.300000 123.156000 367.476000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.500000 123.156000 371.676000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.700000 123.156000 375.876000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.900000 123.156000 380.076000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.100000 123.156000 384.276000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.300000 123.156000 388.476000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.500000 123.156000 392.676000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.700000 123.156000 396.876000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.900000 123.156000 401.076000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.100000 123.156000 405.276000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.300000 123.156000 409.476000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.500000 123.156000 413.676000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.700000 123.156000 417.876000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.900000 123.156000 422.076000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.100000 123.156000 426.276000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.300000 123.156000 430.476000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.500000 123.156000 434.676000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.700000 123.156000 438.876000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.900000 123.156000 443.076000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.100000 123.156000 447.276000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.300000 123.156000 451.476000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.500000 123.156000 455.676000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.700000 123.156000 459.876000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.900000 123.156000 464.076000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.100000 123.156000 468.276000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.300000 123.156000 472.476000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.500000 123.156000 476.676000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.700000 123.156000 480.876000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.900000 123.156000 485.076000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.100000 123.156000 489.276000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.300000 123.156000 493.476000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.500000 123.156000 497.676000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.700000 123.156000 501.876000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.900000 123.156000 506.076000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.100000 123.156000 510.276000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.300000 123.156000 514.476000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.500000 123.156000 518.676000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.700000 123.156000 522.876000 111.156000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 123.156000 531.740000 111.156000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 123.156000 540.044000 111.156000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 221.500000 105.956000 230.428000 93.956000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.096000 105.956000 236.728000 93.956000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.692000 105.956000 245.416000 93.956000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 245.392000 105.956000 254.116000 93.956000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 254.092000 105.956000 258.640000 93.956000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 258.688000 105.956000 265.432000 93.956000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 265.400000 105.956000 269.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.600000 105.956000 273.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.800000 105.956000 277.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 278.000000 105.956000 282.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 282.200000 105.956000 286.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 286.400000 105.956000 290.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 290.600000 105.956000 294.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 294.800000 105.956000 298.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 299.000000 105.956000 303.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 303.200000 105.956000 307.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 307.400000 105.956000 311.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 311.600000 105.956000 315.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.800000 105.956000 319.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 320.000000 105.956000 324.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.200000 105.956000 328.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.400000 105.956000 332.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 332.600000 105.956000 336.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 336.800000 105.956000 340.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.000000 105.956000 345.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.200000 105.956000 349.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 349.400000 105.956000 353.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 353.600000 105.956000 357.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.800000 105.956000 361.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.000000 105.956000 366.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.200000 105.956000 370.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.400000 105.956000 374.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.600000 105.956000 378.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.800000 105.956000 382.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.000000 105.956000 387.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.200000 105.956000 391.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.400000 105.956000 395.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.600000 105.956000 399.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.800000 105.956000 403.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.000000 105.956000 408.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.200000 105.956000 412.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.400000 105.956000 416.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.600000 105.956000 420.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.800000 105.956000 424.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.000000 105.956000 429.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.200000 105.956000 433.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.400000 105.956000 437.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.600000 105.956000 441.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.800000 105.956000 445.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.000000 105.956000 450.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.200000 105.956000 454.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.400000 105.956000 458.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.600000 105.956000 462.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.800000 105.956000 466.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.000000 105.956000 471.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.200000 105.956000 475.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.400000 105.956000 479.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.600000 105.956000 483.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 483.800000 105.956000 487.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.000000 105.956000 492.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.200000 105.956000 496.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.400000 105.956000 500.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.600000 105.956000 504.776000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.800000 105.956000 508.976000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.000000 105.956000 513.176000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.200000 105.956000 517.376000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.400000 105.956000 521.576000 93.956000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 523.400000 105.956000 531.740000 93.956000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 531.704000 105.956000 540.044000 93.956000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 108.000000 659.900000 0 540.000000 659.900000 0 540.000000 660.000000 0 108.000000 660.000000 0 108.000000 659.900000 0
+eoFillPath subpath 1 108.000000 331.700000 0 540.000000 331.700000 0 540.000000 331.800000 0 108.000000 331.800000 0 108.000000 331.700000 0
+eoFillPath subpath 1 108.000000 141.700000 0 540.000000 141.700000 0 540.000000 141.800000 0 108.000000 141.800000 0 108.000000 141.700000 0
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 1103.000000 0 477.900000 1103.000000 0 477.900000 1412.800000 0 134.300000 1412.800000 0 134.300000 1103.000000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -31110.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -1886.100000 0 168.100000 -1886.100000 0 168.100000 -1881.100000 0 76.900000 -1881.100000 0 76.900000 -1886.100000 0
+eoFillPath subpath 1 163.100000 -1881.200000 0 168.100000 -1881.200000 0 168.100000 -1750.600000 0 163.100000 -1750.600000 0 163.100000 -1881.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -1881.100000 0 163.100000 -1881.100000 0 163.100000 -1745.700000 0 72.000000 -1745.700000 0 72.000000 -1881.100000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 -1750.020000 87.320000 -1760.020000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 -1750.020000 93.420000 -1760.020000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 -1750.020000 97.510000 -1760.020000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 -1750.020000 101.420000 -1760.020000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 -1750.020000 104.170000 -1760.020000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 -1750.020000 110.530000 -1760.020000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 -1750.020000 113.270000 -1760.020000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 -1750.020000 116.470000 -1760.020000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 -1750.020000 123.480000 -1760.020000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 -1750.020000 129.610000 -1760.020000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 -1750.020000 135.090000 -1760.020000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 -1750.020000 140.890000 -1760.020000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 -1750.020000 144.820000 -1760.020000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 -1750.020000 150.920000 -1760.020000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 -1750.020000 153.670000 -1760.020000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 -1750.020000 156.470000 -1760.020000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -1876.900000 0 168.200000 -1876.900000 0 168.200000 -1761.700000 0 72.000000 -1761.700000 0 72.000000 -1876.900000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1808.748000 79.253000 -1817.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 -1808.748000 86.669000 -1817.748000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 -1808.748000 90.215000 -1817.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 -1808.748000 93.077000 -1817.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 -1808.748000 97.406000 -1817.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 -1808.748000 100.853000 -1817.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 -1808.748000 107.324000 -1817.748000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 -1808.748000 112.337000 -1817.748000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 -1808.748000 115.271000 -1817.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 -1808.748000 118.655000 -1817.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 -1808.748000 126.512000 -1817.748000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 -1808.748000 130.805000 -1817.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 -1808.748000 135.881000 -1817.748000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 -1808.748000 139.355000 -1817.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 -1808.748000 147.284000 -1817.748000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 -1808.748000 150.074000 -1817.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 -1808.748000 155.897000 -1817.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 -1808.748000 158.750000 -1817.748000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -1808.748000 161.853000 -1817.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1819.248000 82.124000 -1828.248000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 -1819.248000 87.137000 -1828.248000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 -1819.248000 90.071000 -1828.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 -1819.248000 93.356000 -1828.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 -1819.248000 100.403000 -1828.248000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 -1819.248000 104.921000 -1828.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 -1819.248000 109.205000 -1828.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 -1819.248000 117.737000 -1828.248000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 -1819.248000 123.119000 -1828.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 -1819.248000 128.996000 -1828.248000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 -1819.248000 132.605000 -1828.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 -1819.248000 138.392000 -1828.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 -1819.248000 141.749000 -1828.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 -1819.248000 149.507000 -1828.248000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 -1819.248000 153.800000 -1828.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 -1819.248000 158.876000 -1828.248000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -1819.248000 161.853000 -1828.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1829.748000 81.764000 -1838.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -1829.748000 87.596000 -1838.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 -1829.748000 93.356000 -1838.748000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 -1829.748000 102.050000 -1838.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 -1829.748000 113.822000 -1838.748000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 -1829.748000 122.651000 -1838.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 -1829.748000 134.117000 -1838.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 -1829.748000 138.401000 -1838.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 -1829.748000 147.149000 -1838.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 -1829.748000 158.921000 -1838.748000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -1829.748000 161.853000 -1838.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1840.248000 79.271000 -1849.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -1840.248000 84.338000 -1849.248000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 -1840.248000 89.621000 -1849.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 -1840.248000 94.643000 -1849.248000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 -1840.248000 100.502000 -1849.248000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 -1840.248000 106.262000 -1849.248000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 -1840.248000 111.518000 -1849.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 -1840.248000 116.216000 -1849.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 -1840.248000 119.249000 -1849.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 -1840.248000 122.363000 -1849.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 -1840.248000 128.186000 -1849.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 -1840.248000 131.345000 -1849.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 -1840.248000 137.060000 -1849.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 -1840.248000 140.147000 -1849.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 -1840.248000 145.007000 -1849.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 -1840.248000 148.598000 -1849.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 -1840.248000 151.460000 -1849.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 -1840.248000 155.789000 -1849.248000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 -1840.248000 158.933000 -1849.248000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1850.748000 80.702000 -1859.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 -1850.748000 83.573000 -1859.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 -1850.748000 89.396000 -1859.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 -1850.748000 95.156000 -1859.748000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 -1850.748000 100.547000 -1859.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 -1850.748000 109.052000 -1859.748000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 -1850.748000 111.959000 -1859.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 -1850.748000 117.251000 -1859.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 -1850.748000 121.904000 -1859.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 -1850.748000 126.503000 -1859.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 -1850.748000 129.338000 -1859.748000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 -1850.748000 134.936000 -1859.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 -1850.748000 143.441000 -1859.748000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 -1850.748000 148.796000 -1859.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 -1850.748000 154.574000 -1859.748000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 -1850.748000 158.876000 -1859.748000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -1850.748000 161.853000 -1859.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1861.248000 79.271000 -1870.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -1861.248000 85.094000 -1870.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -1861.248000 88.703000 -1870.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 -1861.248000 94.112000 -1870.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 -1861.248000 97.244000 -1870.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 -1861.248000 103.058000 -1870.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 -1861.248000 108.890000 -1870.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 -1861.248000 111.950000 -1870.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 -1861.248000 115.271000 -1870.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 -1861.248000 120.338000 -1870.248000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 -1861.248000 125.621000 -1870.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 -1861.248000 131.363000 -1870.248000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 -1861.248000 134.558000 -1870.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 -1861.248000 140.048000 -1870.248000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 -1861.248000 145.430000 -1870.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 -1861.248000 150.551000 -1870.248000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 -1861.248000 155.960000 -1870.248000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 -1861.248000 158.933000 -1870.248000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1871.748000 80.009000 -1880.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -1871.748000 85.364000 -1880.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 -1871.748000 88.271000 -1880.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 -1871.748000 91.169000 -1880.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 -1871.748000 97.955000 -1880.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 -1871.748000 107.765000 -1880.748000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 -1871.748000 110.672000 -1880.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 -1871.748000 115.964000 -1880.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 -1871.748000 120.617000 -1880.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 -1871.748000 125.216000 -1880.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 -1871.748000 128.051000 -1880.748000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 -1871.748000 134.954000 -1880.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 -1871.748000 146.285000 -1880.748000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 -1871.748000 151.667000 -1880.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 -1871.748000 155.906000 -1880.748000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 -1871.748000 159.033000 -1880.748000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -1881.200000 0 72.100000 -1881.200000 0 72.100000 -1745.700000 0 72.000000 -1745.700000 0 72.000000 -1881.200000 0
+eoFillPath subpath 1 163.100000 -1881.200000 0 163.200000 -1881.200000 0 163.200000 -1745.700000 0 163.100000 -1745.700000 0 163.100000 -1881.200000 0
+eoFillPath subpath 1 72.000000 -1745.800000 0 163.200000 -1745.800000 0 163.200000 -1745.700000 0 72.000000 -1745.700000 0 72.000000 -1745.800000 0
+eoFillPath subpath 1 72.000000 -1881.200000 0 163.200000 -1881.200000 0 163.200000 -1881.100000 0 72.000000 -1881.100000 0 72.000000 -1881.200000 0
+saveState
+eoClipPath subpath 1 96.900000 -1805.900000 0 138.300000 -1805.900000 0 138.300000 -1761.700000 0 96.900000 -1761.700000 0 96.900000 -1805.900000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 259780.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -2160.700000 0 165.500000 -2160.700000 0 165.500000 -2155.700000 0 76.900000 -2155.700000 0 76.900000 -2160.700000 0
+eoFillPath subpath 1 160.500000 -2155.800000 0 165.500000 -2155.800000 0 165.500000 -1999.500000 0 160.500000 -1999.500000 0 160.500000 -2155.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -2155.700000 0 121.400000 -2155.700000 0 121.400000 -1994.600000 0 72.000000 -1994.600000 0 72.000000 -2155.700000 0
+saveState
+eoClipPath subpath 1 72.000000 -2155.700000 0 160.500000 -2155.700000 0 160.500000 -1994.600000 0 72.000000 -1994.600000 0 72.000000 -2155.700000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 296480.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 -1998.920000 89.280000 -2008.920000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 -1998.920000 95.630000 -2008.920000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 -1998.920000 99.520000 -2008.920000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 -1998.920000 102.270000 -2008.920000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 -1998.920000 108.450000 -2008.920000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 -1998.920000 112.610000 -2008.920000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 -1998.920000 118.510000 -2008.920000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 -1998.920000 121.670000 -2008.920000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 -1998.920000 124.470000 -2008.920000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 -1998.920000 130.830000 -2008.920000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 -1998.920000 133.970000 -2008.920000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 -1998.920000 137.920000 -2008.920000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 -1998.920000 144.230000 -2008.920000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 -1998.920000 150.350000 -2008.920000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 -1998.920000 153.570000 -2008.920000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 -2010.620000 95.000000 -2020.620000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 -2010.620000 97.770000 -2020.620000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 -2010.620000 103.000000 -2020.620000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 -2010.620000 109.330000 -2020.620000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 -2010.620000 117.470000 -2020.620000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 -2010.620000 123.620000 -2020.620000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 -2010.620000 128.800000 -2020.620000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 -2010.620000 135.130000 -2020.620000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 -2010.620000 141.250000 -2020.620000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 -2010.620000 145.410000 -2020.620000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2025.448000 82.961000 -2034.448000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 -2025.448000 87.614000 -2034.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 -2025.448000 93.356000 -2034.448000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 -2025.448000 98.612000 -2034.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 -2025.448000 103.733000 -2034.448000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 -2025.448000 106.568000 -2034.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 -2025.448000 111.959000 -2034.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 -2025.448000 114.866000 -2034.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 -2025.448000 117.665000 -2034.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 -2025.448000 122.768000 -2034.448000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 -2025.448000 125.747000 -2034.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 -2025.448000 131.651000 -2034.448000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 -2025.448000 136.907000 -2034.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 -2025.448000 142.307000 -2034.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 -2025.448000 148.049000 -2034.448000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 -2025.448000 150.956000 -2034.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 -2025.448000 156.302000 -2034.448000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2025.448000 159.253000 -2034.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2035.948000 84.095000 -2044.948000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -2035.948000 89.900000 -2044.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 -2035.948000 95.318000 -2044.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 -2035.948000 100.349000 -2044.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 -2035.948000 110.789000 -2044.948000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 -2035.948000 111.464000 -2044.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 -2035.948000 114.362000 -2044.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 -2035.948000 119.348000 -2044.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 -2035.948000 126.962000 -2044.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 -2035.948000 132.047000 -2044.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 -2035.948000 139.958000 -2044.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 -2035.948000 142.865000 -2044.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 -2035.948000 147.410000 -2044.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 -2035.948000 153.287000 -2044.948000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -2035.948000 156.333000 -2044.948000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2046.448000 84.095000 -2055.448000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -2046.448000 89.468000 -2055.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 -2046.448000 94.121000 -2055.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 -2046.448000 99.899000 -2055.448000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 -2046.448000 105.218000 -2055.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 -2046.448000 109.502000 -2055.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 -2046.448000 115.649000 -2055.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 -2046.448000 122.327000 -2055.448000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 -2046.448000 127.718000 -2055.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 -2046.448000 132.002000 -2055.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 -2046.448000 138.149000 -2055.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 -2046.448000 145.205000 -2055.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 -2046.448000 150.992000 -2055.448000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 -2046.448000 156.311000 -2055.448000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2046.448000 159.253000 -2055.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2056.948000 82.394000 -2065.948000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 -2056.948000 86.705000 -2065.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 -2056.948000 91.322000 -2065.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 -2056.948000 94.913000 -2065.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 -2056.948000 98.054000 -2065.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 -2056.948000 102.014000 -2065.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 -2056.948000 104.876000 -2065.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 -2056.948000 113.435000 -2065.948000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 -2056.948000 118.718000 -2065.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 -2056.948000 121.949000 -2065.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 -2056.948000 125.063000 -2065.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 -2056.948000 130.886000 -2065.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 -2056.948000 134.045000 -2065.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 -2056.948000 138.005000 -2065.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 -2056.948000 143.792000 -2065.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 -2056.948000 149.111000 -2065.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 -2056.948000 151.964000 -2065.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 -2056.948000 156.293000 -2065.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -2056.948000 159.153000 -2065.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2067.448000 79.271000 -2076.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 -2067.448000 82.169000 -2076.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 -2067.448000 85.526000 -2076.448000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 -2067.448000 90.818000 -2076.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 -2067.448000 94.454000 -2076.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 -2067.448000 99.008000 -2076.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 -2067.448000 104.318000 -2076.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 -2067.448000 110.096000 -2076.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 -2067.448000 115.856000 -2076.448000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 -2067.448000 119.546000 -2076.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 -2067.448000 124.001000 -2076.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 -2067.448000 129.509000 -2076.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 -2067.448000 133.145000 -2076.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 -2067.448000 139.751000 -2076.448000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 -2067.448000 145.205000 -2076.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 -2067.448000 148.841000 -2076.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 -2067.448000 152.657000 -2076.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 -2067.448000 156.293000 -2076.448000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2067.448000 159.253000 -2076.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2077.948000 84.095000 -2086.948000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -2077.948000 88.406000 -2086.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 -2077.948000 93.824000 -2086.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 -2077.948000 99.602000 -2086.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 -2077.948000 105.362000 -2086.948000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 -2077.948000 108.422000 -2086.948000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 -2077.948000 116.747000 -2086.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 -2077.948000 129.275000 -2086.948000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 -2077.948000 135.089000 -2086.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 -2077.948000 138.698000 -2086.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 -2077.948000 141.560000 -2086.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 -2077.948000 146.906000 -2086.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -2077.948000 151.190000 -2086.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 -2077.948000 156.266000 -2086.948000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2077.948000 159.253000 -2086.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2088.448000 82.196000 -2097.448000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 -2088.448000 87.560000 -2097.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 -2088.448000 92.213000 -2097.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 -2088.448000 96.551000 -2097.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 -2088.448000 101.708000 -2097.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 -2088.448000 107.216000 -2097.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 -2088.448000 111.653000 -2097.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 -2088.448000 118.961000 -2097.448000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 -2088.448000 124.316000 -2097.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 -2088.448000 128.654000 -2097.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 -2088.448000 133.172000 -2097.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 -2088.448000 138.995000 -2097.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 -2088.448000 143.612000 -2097.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 -2088.448000 148.913000 -2097.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 -2088.448000 153.197000 -2097.448000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -2088.448000 156.333000 -2097.448000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2098.948000 80.009000 -2107.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -2098.948000 85.319000 -2107.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 -2098.948000 91.061000 -2107.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 -2098.948000 100.052000 -2107.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 -2098.948000 113.993000 -2107.948000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 -2098.948000 116.873000 -2107.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 -2098.948000 120.410000 -2107.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 -2098.948000 126.296000 -2107.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 -2098.948000 135.350000 -2107.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 -2098.948000 145.106000 -2107.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 -2098.948000 150.893000 -2107.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 -2098.948000 156.212000 -2107.948000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2098.948000 159.253000 -2107.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2109.448000 82.196000 -2118.448000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 -2109.448000 87.560000 -2118.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 -2109.448000 93.392000 -2118.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 -2109.448000 99.152000 -2118.448000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 -2109.448000 101.960000 -2118.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 -2109.448000 107.306000 -2118.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 -2109.448000 111.905000 -2118.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 -2109.448000 115.640000 -2118.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 -2109.448000 122.444000 -2118.448000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 -2109.448000 127.898000 -2118.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 -2109.448000 135.575000 -2118.448000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 -2109.448000 141.380000 -2118.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 -2109.448000 145.241000 -2118.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 -2109.448000 150.803000 -2118.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 -2109.448000 156.302000 -2118.448000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2109.448000 159.253000 -2118.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2119.948000 80.009000 -2128.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -2119.948000 85.796000 -2128.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 -2119.948000 91.115000 -2128.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 -2119.948000 95.399000 -2128.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 -2119.948000 100.718000 -2128.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 -2119.948000 107.054000 -2128.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 -2119.948000 118.097000 -2128.948000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 -2119.948000 123.524000 -2128.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 -2119.948000 129.401000 -2128.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 -2119.948000 131.768000 -2128.948000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 -2119.948000 135.413000 -2128.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 -2119.948000 141.659000 -2128.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 -2119.948000 150.965000 -2128.948000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 -2119.948000 156.320000 -2128.948000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2119.948000 159.253000 -2128.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2130.448000 81.017000 -2139.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 -2130.448000 84.608000 -2139.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 -2130.448000 89.963000 -2139.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 -2130.448000 92.870000 -2139.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 -2130.448000 98.693000 -2139.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 -2130.448000 103.310000 -2139.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 -2130.448000 107.243000 -2139.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 -2130.448000 116.081000 -2139.448000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 -2130.448000 121.886000 -2139.448000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 -2130.448000 127.205000 -2139.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 -2130.448000 132.983000 -2139.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 -2130.448000 136.943000 -2139.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 -2130.448000 143.846000 -2139.448000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 -2130.448000 148.184000 -2139.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 -2130.448000 153.260000 -2139.448000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -2130.448000 156.433000 -2139.448000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2140.948000 79.271000 -2149.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -2140.948000 85.094000 -2149.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -2140.948000 90.854000 -2149.948000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 -2140.948000 93.653000 -2149.948000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -2155.800000 0 72.100000 -2155.800000 0 72.100000 -1994.600000 0 72.000000 -1994.600000 0 72.000000 -2155.800000 0
+eoFillPath subpath 1 160.500000 -2155.800000 0 160.600000 -2155.800000 0 160.600000 -1994.600000 0 160.500000 -1994.600000 0 160.500000 -2155.800000 0
+eoFillPath subpath 1 72.000000 -1994.700000 0 160.600000 -1994.700000 0 160.600000 -1994.600000 0 72.000000 -1994.600000 0 72.000000 -1994.700000 0
+eoFillPath subpath 1 72.000000 -2155.800000 0 160.600000 -2155.800000 0 160.600000 -2155.700000 0 72.000000 -2155.700000 0 72.000000 -2155.800000 0
+saveState
+eoClipPath subpath 1 108.000000 -2643.200000 0 178.900000 -2643.200000 0 178.900000 -2586.500000 0 108.000000 -2586.500000 0 108.000000 -2643.200000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 343510.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -6701.500000 0 165.500000 -6701.500000 0 165.500000 -6696.500000 0 76.900000 -6696.500000 0 76.900000 -6701.500000 0
+eoFillPath subpath 1 160.500000 -6696.600000 0 165.500000 -6696.600000 0 165.500000 -6587.800000 0 160.500000 -6587.800000 0 160.500000 -6696.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -6696.500000 0 160.500000 -6696.500000 0 160.500000 -6582.900000 0 72.000000 -6582.900000 0 72.000000 -6696.500000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -6587.248000 83.771000 -6596.248000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 -6587.248000 89.594000 -6596.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 -6587.248000 92.465000 -6596.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 -6587.248000 97.568000 -6596.248000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 -6587.248000 100.943000 -6596.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 -6587.248000 106.955000 -6596.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 -6587.248000 110.447000 -6596.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 -6587.248000 114.425000 -6596.248000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 -6587.248000 119.717000 -6596.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 -6587.248000 127.493000 -6596.248000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 -6587.248000 130.949000 -6596.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 -6587.248000 136.574000 -6596.248000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 -6587.248000 141.920000 -6596.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 -6587.248000 147.365000 -6596.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 -6587.248000 151.703000 -6596.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 -6587.248000 156.320000 -6596.248000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -6587.248000 159.153000 -6596.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -6597.748000 81.764000 -6606.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -6597.748000 85.130000 -6606.748000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 -6597.748000 88.712000 -6606.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 -6597.748000 94.022000 -6606.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 -6597.748000 98.306000 -6606.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -6597.748000 102.455000 -6606.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 -6597.748000 106.676000 -6606.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 -6597.748000 110.312000 -6606.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 -6597.748000 114.920000 -6606.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 -6597.748000 119.060000 -6606.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 -6597.748000 125.450000 -6606.748000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 -6597.748000 130.832000 -6606.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 -6597.748000 139.445000 -6606.748000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 -6597.748000 145.169000 -6606.748000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 -6597.748000 148.076000 -6606.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 -6597.748000 153.323000 -6606.748000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -6597.748000 156.433000 -6606.748000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -6608.248000 80.009000 -6617.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -6608.248000 82.871000 -6617.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 -6608.248000 88.316000 -6617.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 -6608.248000 94.094000 -6617.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 -6608.248000 96.947000 -6617.248000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 -6608.248000 104.948000 -6617.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 -6608.248000 113.705000 -6617.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 -6608.248000 119.492000 -6617.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 -6608.248000 124.811000 -6617.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 -6608.248000 132.848000 -6617.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 -6608.248000 141.605000 -6617.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 -6608.248000 144.467000 -6617.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 -6608.248000 148.103000 -6617.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 -6608.248000 150.965000 -6617.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 -6608.248000 156.311000 -6617.248000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -6608.248000 159.253000 -6617.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -6618.748000 80.999000 -6627.748000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 -6618.748000 90.539000 -6627.748000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 -6618.748000 95.318000 -6627.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 -6618.748000 99.602000 -6627.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -6618.748000 102.473000 -6627.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 -6618.748000 108.260000 -6627.748000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 -6618.748000 110.762000 -6627.748000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 -6618.748000 115.316000 -6627.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 -6618.748000 122.156000 -6627.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 -6618.748000 132.299000 -6627.748000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 -6618.748000 136.970000 -6627.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 -6618.748000 139.877000 -6627.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 -6618.748000 142.775000 -6627.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 -6618.748000 148.022000 -6627.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 -6618.748000 152.720000 -6627.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 -6618.748000 156.311000 -6627.748000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -6618.748000 159.253000 -6627.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -6629.248000 83.006000 -6638.248000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 -6629.248000 88.793000 -6638.248000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 -6629.248000 91.664000 -6638.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 -6629.248000 94.562000 -6638.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 -6629.248000 100.349000 -6638.248000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 -6629.248000 103.157000 -6638.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 -6629.248000 108.980000 -6638.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 -6629.248000 114.740000 -6638.248000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 -6629.248000 119.375000 -6638.248000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 -6629.248000 128.033000 -6638.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 -6629.248000 141.479000 -6638.248000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 -6629.248000 146.807000 -6638.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -6629.248000 152.684000 -6638.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 -6629.248000 156.293000 -6638.248000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -6629.248000 159.253000 -6638.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -6639.748000 79.730000 -6648.748000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 -6639.748000 84.005000 -6648.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 -6639.748000 89.423000 -6648.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 -6639.748000 98.036000 -6648.748000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 -6639.748000 121.157000 -6648.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 -6639.748000 145.115000 -6648.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 -6639.748000 151.001000 -6648.748000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 -6639.748000 156.320000 -6648.748000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -6639.748000 159.253000 -6648.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -6650.248000 83.285000 -6659.248000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 -6650.248000 89.099000 -6659.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 -6650.248000 93.401000 -6659.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 -6650.248000 98.477000 -6659.248000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 -6650.248000 103.121000 -6659.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 -6650.248000 105.974000 -6659.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 -6650.248000 111.320000 -6659.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 -6650.248000 115.604000 -6659.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 -6650.248000 123.857000 -6659.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 -6650.248000 136.007000 -6659.248000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 -6650.248000 141.794000 -6659.248000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 -6650.248000 144.665000 -6659.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 -6650.248000 147.464000 -6659.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 -6650.248000 153.251000 -6659.248000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -6650.248000 156.433000 -6659.248000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -6660.748000 79.271000 -6669.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -6660.748000 85.094000 -6669.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -6660.748000 90.854000 -6669.748000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 -6660.748000 96.146000 -6669.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 -6660.748000 102.302000 -6669.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 -6660.748000 107.711000 -6669.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 -6660.748000 113.048000 -6669.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 -6660.748000 119.204000 -6669.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 -6660.748000 124.991000 -6669.748000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 -6660.748000 130.310000 -6669.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 -6660.748000 135.647000 -6669.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 -6660.748000 144.755000 -6669.748000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 -6660.748000 153.323000 -6669.748000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -6660.748000 156.333000 -6669.748000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -6671.248000 82.160000 -6680.248000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 -6671.248000 85.067000 -6680.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 -6671.248000 89.297000 -6680.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 -6671.248000 94.616000 -6680.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 -6671.248000 98.747000 -6680.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 -6671.248000 106.055000 -6680.248000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 -6671.248000 109.700000 -6680.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 -6671.248000 115.055000 -6680.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 -6671.248000 118.601000 -6680.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 -6671.248000 124.010000 -6680.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 -6671.248000 128.042000 -6680.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 -6671.248000 135.998000 -6680.248000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 -6671.248000 141.785000 -6680.248000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 -6671.248000 144.656000 -6680.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 -6671.248000 147.554000 -6680.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 -6671.248000 153.341000 -6680.248000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -6671.248000 156.433000 -6680.248000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -6681.748000 79.271000 -6690.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -6681.748000 85.094000 -6690.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -6681.748000 90.854000 -6690.748000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 -6681.748000 93.743000 -6690.748000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -6696.600000 0 72.100000 -6696.600000 0 72.100000 -6582.900000 0 72.000000 -6582.900000 0 72.000000 -6696.600000 0
+eoFillPath subpath 1 160.500000 -6696.600000 0 160.600000 -6696.600000 0 160.600000 -6582.900000 0 160.500000 -6582.900000 0 160.500000 -6696.600000 0
+eoFillPath subpath 1 72.000000 -6583.000000 0 160.600000 -6583.000000 0 160.600000 -6582.900000 0 72.000000 -6582.900000 0 72.000000 -6583.000000 0
+eoFillPath subpath 1 72.000000 -6696.600000 0 160.600000 -6696.600000 0 160.600000 -6696.500000 0 72.000000 -6696.500000 0 72.000000 -6696.600000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -507.100000 0 169.600000 -507.100000 0 169.600000 -502.100000 0 76.900000 -502.100000 0 76.900000 -507.100000 0
+eoFillPath subpath 1 164.600000 -502.200000 0 169.600000 -502.200000 0 169.600000 -386.600000 0 164.600000 -386.600000 0 164.600000 -502.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -502.100000 0 121.400000 -502.100000 0 121.400000 -381.700000 0 72.000000 -381.700000 0 72.000000 -502.100000 0
+saveState
+eoClipPath subpath 1 72.000000 -502.100000 0 164.600000 -502.100000 0 164.600000 -381.700000 0 72.000000 -381.700000 0 72.000000 -502.100000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 135240.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -432.200000 0 93.700000 -432.200000 0 93.700000 -413.000000 0 72.000000 -413.000000 0 72.000000 -432.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 -432.200000 0 169.600000 -432.200000 0 169.600000 -413.000000 0 93.700000 -413.000000 0 93.700000 -432.200000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -448.900000 0 93.700000 -448.900000 0 93.700000 -432.200000 0 72.000000 -432.200000 0 72.000000 -448.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 -448.900000 0 169.600000 -448.900000 0 169.600000 -432.200000 0 93.700000 -432.200000 0 93.700000 -448.900000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -468.100000 0 93.700000 -468.100000 0 93.700000 -448.900000 0 72.000000 -448.900000 0 72.000000 -468.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 -468.100000 0 169.600000 -468.100000 0 169.600000 -448.900000 0 93.700000 -448.900000 0 93.700000 -468.100000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -487.300000 0 93.700000 -487.300000 0 93.700000 -468.100000 0 72.000000 -468.100000 0 72.000000 -487.300000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 -487.300000 0 169.600000 -487.300000 0 169.600000 -468.100000 0 93.700000 -468.100000 0 93.700000 -487.300000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -386.048000 82.898000 -395.048000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 -386.048000 87.200000 -395.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 -386.048000 90.809000 -395.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 -386.048000 93.671000 -395.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 -386.048000 98.315000 -395.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 -386.048000 101.906000 -395.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 -386.048000 106.514000 -395.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 -386.048000 109.754000 -395.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 -386.048000 112.868000 -395.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 -386.048000 118.691000 -395.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 -386.048000 121.850000 -395.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 -386.048000 125.702000 -395.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 -386.048000 131.588000 -395.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 -386.048000 136.907000 -395.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 -386.048000 140.039000 -395.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 -386.048000 146.078000 -395.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 -386.048000 151.442000 -395.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 -386.048000 154.349000 -395.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 -386.048000 157.148000 -395.048000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 -386.048000 160.433000 -395.048000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -396.548000 84.095000 -405.548000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -396.548000 89.468000 -405.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 -396.548000 94.580000 -405.548000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 -396.548000 97.631000 -405.548000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 -416.948000 104.443000 -425.948000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 -416.948000 109.060000 -425.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 -416.948000 113.398000 -425.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 -416.948000 119.194000 -425.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 -416.948000 124.612000 -425.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 -416.948000 127.465000 -425.948000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 -433.648000 101.176000 -442.648000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 -433.648000 104.074000 -442.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 -433.648000 109.420000 -442.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 -433.648000 114.442000 -442.648000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 -433.648000 120.202000 -442.648000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 -433.648000 123.811000 -442.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 -433.648000 129.121000 -442.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 -433.648000 134.899000 -442.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 -433.648000 139.516000 -442.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 -433.648000 143.107000 -442.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 -433.648000 148.417000 -442.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 -433.648000 151.270000 -442.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 -433.648000 157.093000 -442.648000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 -450.348000 103.048000 -459.348000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 -450.348000 108.421000 -459.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 -450.348000 113.443000 -459.348000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 -450.348000 118.852000 -459.348000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 -450.348000 124.702000 -459.348000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 -450.348000 130.021000 -459.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 -450.348000 135.079000 -459.348000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 -469.548000 104.407000 -478.548000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 -469.548000 109.816000 -478.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 -469.548000 115.594000 -478.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 -469.548000 121.354000 -478.548000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 -469.548000 125.692000 -478.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 -469.548000 128.563000 -478.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 -469.548000 133.954000 -478.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 -469.548000 139.786000 -478.548000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -502.200000 0 72.100000 -502.200000 0 72.100000 -381.700000 0 72.000000 -381.700000 0 72.000000 -502.200000 0
+eoFillPath subpath 1 164.600000 -502.200000 0 164.700000 -502.200000 0 164.700000 -381.700000 0 164.600000 -381.700000 0 164.600000 -502.200000 0
+eoFillPath subpath 1 72.000000 -381.800000 0 164.700000 -381.800000 0 164.700000 -381.700000 0 72.000000 -381.700000 0 72.000000 -381.800000 0
+eoFillPath subpath 1 72.000000 -502.200000 0 164.700000 -502.200000 0 164.700000 -502.100000 0 72.000000 -502.100000 0 72.000000 -502.200000 0
+eoFillPath subpath 1 91.300000 -487.300000 0 93.700000 -487.300000 0 93.700000 -413.000000 0 91.300000 -413.000000 0 91.300000 -487.300000 0
+eoFillPath subpath 1 72.000000 -468.100000 0 169.600000 -468.100000 0 169.600000 -465.700000 0 72.000000 -465.700000 0 72.000000 -468.100000 0
+eoFillPath subpath 1 72.000000 -415.400000 0 169.600000 -415.400000 0 169.600000 -413.000000 0 72.000000 -413.000000 0 72.000000 -415.400000 0
+eoFillPath subpath 1 72.000000 -487.300000 0 169.600000 -487.300000 0 169.600000 -484.900000 0 72.000000 -484.900000 0 72.000000 -487.300000 0
+saveState
+eoClipPath subpath 1 108.000000 -8353.200000 0 150.800000 -8353.200000 0 150.800000 -8309.000000 0 108.000000 -8309.000000 0 108.000000 -8353.200000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 914520.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -9203.200000 0 499.600000 -9203.200000 0 499.600000 -9198.100000 0 186.800000 -9198.100000 0 186.800000 -9203.200000 0
+eoFillPath subpath 1 494.500000 -9198.200000 0 499.600000 -9198.200000 0 499.600000 -9009.800000 0 494.500000 -9009.800000 0 494.500000 -9198.200000 0
+saveState
+eoClipPath subpath 1 181.800000 -9198.200000 0 494.500000 -9198.200000 0 494.500000 -9004.800000 0 181.800000 -9004.800000 0 181.800000 -9198.200000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -9004.700000 0 494.500000 -9004.700000 0 494.500000 -9004.700000 0 181.700000 -9004.700000 0
+eoFillPath subpath 1 181.700000 -9004.700000 0 494.500000 -9004.700000 0 494.500000 -9005.500000 0 181.700000 -9005.500000 0 181.700000 -9004.700000 0
+eoFillPath subpath 1 181.700000 -9005.500000 0 494.500000 -9005.500000 0 494.500000 -9006.200000 0 181.700000 -9006.200000 0 181.700000 -9005.500000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -9006.200000 0 494.500000 -9006.200000 0 494.500000 -9007.000000 0 181.700000 -9007.000000 0 181.700000 -9006.200000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -9007.000000 0 494.500000 -9007.000000 0 494.500000 -9007.800000 0 181.700000 -9007.800000 0 181.700000 -9007.000000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -9007.800000 0 494.500000 -9007.800000 0 494.500000 -9008.500000 0 181.700000 -9008.500000 0 181.700000 -9007.800000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -9008.500000 0 494.500000 -9008.500000 0 494.500000 -9009.300000 0 181.700000 -9009.300000 0 181.700000 -9008.500000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -9009.300000 0 494.500000 -9009.300000 0 494.500000 -9010.000000 0 181.700000 -9010.000000 0 181.700000 -9009.300000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -9010.000000 0 494.500000 -9010.000000 0 494.500000 -9010.800000 0 181.700000 -9010.800000 0 181.700000 -9010.000000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -9010.800000 0 494.500000 -9010.800000 0 494.500000 -9011.500000 0 181.700000 -9011.500000 0 181.700000 -9010.800000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -9011.500000 0 494.500000 -9011.500000 0 494.500000 -9012.300000 0 181.700000 -9012.300000 0 181.700000 -9011.500000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -9012.300000 0 494.500000 -9012.300000 0 494.500000 -9013.100000 0 181.700000 -9013.100000 0 181.700000 -9012.300000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -9013.100000 0 494.500000 -9013.100000 0 494.500000 -9013.800000 0 181.700000 -9013.800000 0 181.700000 -9013.100000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -9013.800000 0 494.500000 -9013.800000 0 494.500000 -9014.600000 0 181.700000 -9014.600000 0 181.700000 -9013.800000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -9014.600000 0 494.500000 -9014.600000 0 494.500000 -9015.300000 0 181.700000 -9015.300000 0 181.700000 -9014.600000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -9015.300000 0 494.500000 -9015.300000 0 494.500000 -9016.100000 0 181.700000 -9016.100000 0 181.700000 -9015.300000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -9016.100000 0 494.500000 -9016.100000 0 494.500000 -9016.900000 0 181.700000 -9016.900000 0 181.700000 -9016.100000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -9016.900000 0 494.500000 -9016.900000 0 494.500000 -9017.600000 0 181.700000 -9017.600000 0 181.700000 -9016.900000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -9017.600000 0 494.500000 -9017.600000 0 494.500000 -9018.400000 0 181.700000 -9018.400000 0 181.700000 -9017.600000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -9018.400000 0 494.500000 -9018.400000 0 494.500000 -9019.100000 0 181.700000 -9019.100000 0 181.700000 -9018.400000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -9019.100000 0 494.500000 -9019.100000 0 494.500000 -9019.900000 0 181.700000 -9019.900000 0 181.700000 -9019.100000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -9019.900000 0 494.500000 -9019.900000 0 494.500000 -9020.700000 0 181.700000 -9020.700000 0 181.700000 -9019.900000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -9020.700000 0 494.500000 -9020.700000 0 494.500000 -9021.400000 0 181.700000 -9021.400000 0 181.700000 -9020.700000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -9021.400000 0 494.500000 -9021.400000 0 494.500000 -9022.200000 0 181.700000 -9022.200000 0 181.700000 -9021.400000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -9022.200000 0 494.500000 -9022.200000 0 494.500000 -9022.900000 0 181.700000 -9022.900000 0 181.700000 -9022.200000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -9022.900000 0 494.500000 -9022.900000 0 494.500000 -9023.700000 0 181.700000 -9023.700000 0 181.700000 -9022.900000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -9023.700000 0 494.500000 -9023.700000 0 494.500000 -9024.400000 0 181.700000 -9024.400000 0 181.700000 -9023.700000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -9024.400000 0 494.500000 -9024.400000 0 494.500000 -9025.200000 0 181.700000 -9025.200000 0 181.700000 -9024.400000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -9025.200000 0 494.500000 -9025.200000 0 494.500000 -9026.000000 0 181.700000 -9026.000000 0 181.700000 -9025.200000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -9026.000000 0 494.500000 -9026.000000 0 494.500000 -9026.700000 0 181.700000 -9026.700000 0 181.700000 -9026.000000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -9026.700000 0 494.500000 -9026.700000 0 494.500000 -9027.500000 0 181.700000 -9027.500000 0 181.700000 -9026.700000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -9027.500000 0 494.500000 -9027.500000 0 494.500000 -9028.200000 0 181.700000 -9028.200000 0 181.700000 -9027.500000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -9028.200000 0 494.500000 -9028.200000 0 494.500000 -9029.000000 0 181.700000 -9029.000000 0 181.700000 -9028.200000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -9029.000000 0 494.500000 -9029.000000 0 494.500000 -9029.800000 0 181.700000 -9029.800000 0 181.700000 -9029.000000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -9029.800000 0 494.500000 -9029.800000 0 494.500000 -9030.500000 0 181.700000 -9030.500000 0 181.700000 -9029.800000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -9030.500000 0 494.500000 -9030.500000 0 494.500000 -9031.300000 0 181.700000 -9031.300000 0 181.700000 -9030.500000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -9031.300000 0 494.500000 -9031.300000 0 494.500000 -9032.000000 0 181.700000 -9032.000000 0 181.700000 -9031.300000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -9032.000000 0 494.500000 -9032.000000 0 494.500000 -9032.800000 0 181.700000 -9032.800000 0 181.700000 -9032.000000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -9032.800000 0 494.500000 -9032.800000 0 494.500000 -9033.600000 0 181.700000 -9033.600000 0 181.700000 -9032.800000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -9033.600000 0 494.500000 -9033.600000 0 494.500000 -9034.300000 0 181.700000 -9034.300000 0 181.700000 -9033.600000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -9034.300000 0 494.500000 -9034.300000 0 494.500000 -9035.100000 0 181.700000 -9035.100000 0 181.700000 -9034.300000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -9035.100000 0 494.500000 -9035.100000 0 494.500000 -9035.800000 0 181.700000 -9035.800000 0 181.700000 -9035.100000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -9035.800000 0 494.500000 -9035.800000 0 494.500000 -9036.600000 0 181.700000 -9036.600000 0 181.700000 -9035.800000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -9036.600000 0 494.500000 -9036.600000 0 494.500000 -9037.300000 0 181.700000 -9037.300000 0 181.700000 -9036.600000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -9037.300000 0 494.500000 -9037.300000 0 494.500000 -9038.100000 0 181.700000 -9038.100000 0 181.700000 -9037.300000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -9038.100000 0 494.500000 -9038.100000 0 494.500000 -9038.900000 0 181.700000 -9038.900000 0 181.700000 -9038.100000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -9038.900000 0 494.500000 -9038.900000 0 494.500000 -9039.600000 0 181.700000 -9039.600000 0 181.700000 -9038.900000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -9039.600000 0 494.500000 -9039.600000 0 494.500000 -9040.400000 0 181.700000 -9040.400000 0 181.700000 -9039.600000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -9040.400000 0 494.500000 -9040.400000 0 494.500000 -9041.100000 0 181.700000 -9041.100000 0 181.700000 -9040.400000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -9041.100000 0 494.500000 -9041.100000 0 494.500000 -9041.900000 0 181.700000 -9041.900000 0 181.700000 -9041.100000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -9041.900000 0 494.500000 -9041.900000 0 494.500000 -9042.700000 0 181.700000 -9042.700000 0 181.700000 -9041.900000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -9042.700000 0 494.500000 -9042.700000 0 494.500000 -9043.400000 0 181.700000 -9043.400000 0 181.700000 -9042.700000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -9043.400000 0 494.500000 -9043.400000 0 494.500000 -9044.200000 0 181.700000 -9044.200000 0 181.700000 -9043.400000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -9044.200000 0 494.500000 -9044.200000 0 494.500000 -9044.900000 0 181.700000 -9044.900000 0 181.700000 -9044.200000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -9044.900000 0 494.500000 -9044.900000 0 494.500000 -9045.700000 0 181.700000 -9045.700000 0 181.700000 -9044.900000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -9045.700000 0 494.500000 -9045.700000 0 494.500000 -9046.500000 0 181.700000 -9046.500000 0 181.700000 -9045.700000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -9046.500000 0 494.500000 -9046.500000 0 494.500000 -9047.200000 0 181.700000 -9047.200000 0 181.700000 -9046.500000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -9047.200000 0 494.500000 -9047.200000 0 494.500000 -9048.000000 0 181.700000 -9048.000000 0 181.700000 -9047.200000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -9048.000000 0 494.500000 -9048.000000 0 494.500000 -9048.700000 0 181.700000 -9048.700000 0 181.700000 -9048.000000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -9048.700000 0 494.500000 -9048.700000 0 494.500000 -9049.500000 0 181.700000 -9049.500000 0 181.700000 -9048.700000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -9049.500000 0 494.500000 -9049.500000 0 494.500000 -9050.200000 0 181.700000 -9050.200000 0 181.700000 -9049.500000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -9050.200000 0 494.500000 -9050.200000 0 494.500000 -9051.000000 0 181.700000 -9051.000000 0 181.700000 -9050.200000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -9051.000000 0 494.500000 -9051.000000 0 494.500000 -9051.800000 0 181.700000 -9051.800000 0 181.700000 -9051.000000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -9051.800000 0 494.500000 -9051.800000 0 494.500000 -9052.500000 0 181.700000 -9052.500000 0 181.700000 -9051.800000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -9052.500000 0 494.500000 -9052.500000 0 494.500000 -9053.300000 0 181.700000 -9053.300000 0 181.700000 -9052.500000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -9053.300000 0 494.500000 -9053.300000 0 494.500000 -9054.000000 0 181.700000 -9054.000000 0 181.700000 -9053.300000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -9054.000000 0 494.500000 -9054.000000 0 494.500000 -9054.800000 0 181.700000 -9054.800000 0 181.700000 -9054.000000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -9054.800000 0 494.500000 -9054.800000 0 494.500000 -9055.600000 0 181.700000 -9055.600000 0 181.700000 -9054.800000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -9055.600000 0 494.500000 -9055.600000 0 494.500000 -9056.300000 0 181.700000 -9056.300000 0 181.700000 -9055.600000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -9056.300000 0 494.500000 -9056.300000 0 494.500000 -9057.100000 0 181.700000 -9057.100000 0 181.700000 -9056.300000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -9057.100000 0 494.500000 -9057.100000 0 494.500000 -9057.800000 0 181.700000 -9057.800000 0 181.700000 -9057.100000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -9057.800000 0 494.500000 -9057.800000 0 494.500000 -9058.600000 0 181.700000 -9058.600000 0 181.700000 -9057.800000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -9058.600000 0 494.500000 -9058.600000 0 494.500000 -9059.400000 0 181.700000 -9059.400000 0 181.700000 -9058.600000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -9059.400000 0 494.500000 -9059.400000 0 494.500000 -9060.100000 0 181.700000 -9060.100000 0 181.700000 -9059.400000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -9060.100000 0 494.500000 -9060.100000 0 494.500000 -9060.900000 0 181.700000 -9060.900000 0 181.700000 -9060.100000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -9060.900000 0 494.500000 -9060.900000 0 494.500000 -9061.600000 0 181.700000 -9061.600000 0 181.700000 -9060.900000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -9061.600000 0 494.500000 -9061.600000 0 494.500000 -9062.400000 0 181.700000 -9062.400000 0 181.700000 -9061.600000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -9062.400000 0 494.500000 -9062.400000 0 494.500000 -9063.100000 0 181.700000 -9063.100000 0 181.700000 -9062.400000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -9063.100000 0 494.500000 -9063.100000 0 494.500000 -9063.900000 0 181.700000 -9063.900000 0 181.700000 -9063.100000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -9063.900000 0 494.500000 -9063.900000 0 494.500000 -9064.700000 0 181.700000 -9064.700000 0 181.700000 -9063.900000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -9064.700000 0 494.500000 -9064.700000 0 494.500000 -9065.400000 0 181.700000 -9065.400000 0 181.700000 -9064.700000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -9065.400000 0 494.500000 -9065.400000 0 494.500000 -9066.200000 0 181.700000 -9066.200000 0 181.700000 -9065.400000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -9066.200000 0 494.500000 -9066.200000 0 494.500000 -9066.900000 0 181.700000 -9066.900000 0 181.700000 -9066.200000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -9066.900000 0 494.500000 -9066.900000 0 494.500000 -9067.700000 0 181.700000 -9067.700000 0 181.700000 -9066.900000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -9067.700000 0 494.500000 -9067.700000 0 494.500000 -9068.500000 0 181.700000 -9068.500000 0 181.700000 -9067.700000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -9068.500000 0 494.500000 -9068.500000 0 494.500000 -9069.200000 0 181.700000 -9069.200000 0 181.700000 -9068.500000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -9069.200000 0 494.500000 -9069.200000 0 494.500000 -9070.000000 0 181.700000 -9070.000000 0 181.700000 -9069.200000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -9070.000000 0 494.500000 -9070.000000 0 494.500000 -9070.700000 0 181.700000 -9070.700000 0 181.700000 -9070.000000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -9070.700000 0 494.500000 -9070.700000 0 494.500000 -9071.500000 0 181.700000 -9071.500000 0 181.700000 -9070.700000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -9071.500000 0 494.500000 -9071.500000 0 494.500000 -9072.300000 0 181.700000 -9072.300000 0 181.700000 -9071.500000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -9072.300000 0 494.500000 -9072.300000 0 494.500000 -9073.000000 0 181.700000 -9073.000000 0 181.700000 -9072.300000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -9073.000000 0 494.500000 -9073.000000 0 494.500000 -9073.800000 0 181.700000 -9073.800000 0 181.700000 -9073.000000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -9073.800000 0 494.500000 -9073.800000 0 494.500000 -9074.500000 0 181.700000 -9074.500000 0 181.700000 -9073.800000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -9074.500000 0 494.500000 -9074.500000 0 494.500000 -9075.300000 0 181.700000 -9075.300000 0 181.700000 -9074.500000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -9075.300000 0 494.500000 -9075.300000 0 494.500000 -9076.000000 0 181.700000 -9076.000000 0 181.700000 -9075.300000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -9076.000000 0 494.500000 -9076.000000 0 494.500000 -9076.800000 0 181.700000 -9076.800000 0 181.700000 -9076.000000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -9076.800000 0 494.500000 -9076.800000 0 494.500000 -9077.600000 0 181.700000 -9077.600000 0 181.700000 -9076.800000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -9077.600000 0 494.500000 -9077.600000 0 494.500000 -9078.300000 0 181.700000 -9078.300000 0 181.700000 -9077.600000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -9078.300000 0 494.500000 -9078.300000 0 494.500000 -9079.100000 0 181.700000 -9079.100000 0 181.700000 -9078.300000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -9079.100000 0 494.500000 -9079.100000 0 494.500000 -9079.800000 0 181.700000 -9079.800000 0 181.700000 -9079.100000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -9079.800000 0 494.500000 -9079.800000 0 494.500000 -9080.600000 0 181.700000 -9080.600000 0 181.700000 -9079.800000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -9080.600000 0 494.500000 -9080.600000 0 494.500000 -9081.400000 0 181.700000 -9081.400000 0 181.700000 -9080.600000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -9081.400000 0 494.500000 -9081.400000 0 494.500000 -9082.100000 0 181.700000 -9082.100000 0 181.700000 -9081.400000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -9082.100000 0 494.500000 -9082.100000 0 494.500000 -9082.900000 0 181.700000 -9082.900000 0 181.700000 -9082.100000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -9082.900000 0 494.500000 -9082.900000 0 494.500000 -9083.600000 0 181.700000 -9083.600000 0 181.700000 -9082.900000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -9083.600000 0 494.500000 -9083.600000 0 494.500000 -9084.400000 0 181.700000 -9084.400000 0 181.700000 -9083.600000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -9084.400000 0 494.500000 -9084.400000 0 494.500000 -9085.200000 0 181.700000 -9085.200000 0 181.700000 -9084.400000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -9085.200000 0 494.500000 -9085.200000 0 494.500000 -9085.900000 0 181.700000 -9085.900000 0 181.700000 -9085.200000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -9085.900000 0 494.500000 -9085.900000 0 494.500000 -9086.700000 0 181.700000 -9086.700000 0 181.700000 -9085.900000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -9086.700000 0 494.500000 -9086.700000 0 494.500000 -9087.400000 0 181.700000 -9087.400000 0 181.700000 -9086.700000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -9087.400000 0 494.500000 -9087.400000 0 494.500000 -9088.200000 0 181.700000 -9088.200000 0 181.700000 -9087.400000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -9088.200000 0 494.500000 -9088.200000 0 494.500000 -9088.900000 0 181.700000 -9088.900000 0 181.700000 -9088.200000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -9088.900000 0 494.500000 -9088.900000 0 494.500000 -9089.700000 0 181.700000 -9089.700000 0 181.700000 -9088.900000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -9089.700000 0 494.500000 -9089.700000 0 494.500000 -9090.500000 0 181.700000 -9090.500000 0 181.700000 -9089.700000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -9090.500000 0 494.500000 -9090.500000 0 494.500000 -9091.200000 0 181.700000 -9091.200000 0 181.700000 -9090.500000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -9091.200000 0 494.500000 -9091.200000 0 494.500000 -9092.000000 0 181.700000 -9092.000000 0 181.700000 -9091.200000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -9092.000000 0 494.500000 -9092.000000 0 494.500000 -9092.700000 0 181.700000 -9092.700000 0 181.700000 -9092.000000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -9092.700000 0 494.500000 -9092.700000 0 494.500000 -9093.500000 0 181.700000 -9093.500000 0 181.700000 -9092.700000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -9093.500000 0 494.500000 -9093.500000 0 494.500000 -9094.300000 0 181.700000 -9094.300000 0 181.700000 -9093.500000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -9094.300000 0 494.500000 -9094.300000 0 494.500000 -9095.000000 0 181.700000 -9095.000000 0 181.700000 -9094.300000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -9095.000000 0 494.500000 -9095.000000 0 494.500000 -9095.800000 0 181.700000 -9095.800000 0 181.700000 -9095.000000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -9095.800000 0 494.500000 -9095.800000 0 494.500000 -9096.500000 0 181.700000 -9096.500000 0 181.700000 -9095.800000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -9096.500000 0 494.500000 -9096.500000 0 494.500000 -9097.300000 0 181.700000 -9097.300000 0 181.700000 -9096.500000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -9097.300000 0 494.500000 -9097.300000 0 494.500000 -9098.100000 0 181.700000 -9098.100000 0 181.700000 -9097.300000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -9098.100000 0 494.500000 -9098.100000 0 494.500000 -9098.800000 0 181.700000 -9098.800000 0 181.700000 -9098.100000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -9098.800000 0 494.500000 -9098.800000 0 494.500000 -9099.600000 0 181.700000 -9099.600000 0 181.700000 -9098.800000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -9099.600000 0 494.500000 -9099.600000 0 494.500000 -9100.300000 0 181.700000 -9100.300000 0 181.700000 -9099.600000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -9100.300000 0 494.500000 -9100.300000 0 494.500000 -9101.100000 0 181.700000 -9101.100000 0 181.700000 -9100.300000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -9101.100000 0 494.500000 -9101.100000 0 494.500000 -9101.800000 0 181.700000 -9101.800000 0 181.700000 -9101.100000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -9101.800000 0 494.500000 -9101.800000 0 494.500000 -9102.600000 0 181.700000 -9102.600000 0 181.700000 -9101.800000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -9102.600000 0 494.500000 -9102.600000 0 494.500000 -9103.400000 0 181.700000 -9103.400000 0 181.700000 -9102.600000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -9103.400000 0 494.500000 -9103.400000 0 494.500000 -9104.100000 0 181.700000 -9104.100000 0 181.700000 -9103.400000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -9104.100000 0 494.500000 -9104.100000 0 494.500000 -9104.900000 0 181.700000 -9104.900000 0 181.700000 -9104.100000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -9104.900000 0 494.500000 -9104.900000 0 494.500000 -9105.600000 0 181.700000 -9105.600000 0 181.700000 -9104.900000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -9105.600000 0 494.500000 -9105.600000 0 494.500000 -9106.400000 0 181.700000 -9106.400000 0 181.700000 -9105.600000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -9106.400000 0 494.500000 -9106.400000 0 494.500000 -9107.100000 0 181.700000 -9107.100000 0 181.700000 -9106.400000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -9107.100000 0 494.500000 -9107.100000 0 494.500000 -9107.900000 0 181.700000 -9107.900000 0 181.700000 -9107.100000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -9107.900000 0 494.500000 -9107.900000 0 494.500000 -9108.700000 0 181.700000 -9108.700000 0 181.700000 -9107.900000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -9108.700000 0 494.500000 -9108.700000 0 494.500000 -9109.400000 0 181.700000 -9109.400000 0 181.700000 -9108.700000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -9109.400000 0 494.500000 -9109.400000 0 494.500000 -9110.200000 0 181.700000 -9110.200000 0 181.700000 -9109.400000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -9110.200000 0 494.500000 -9110.200000 0 494.500000 -9110.900000 0 181.700000 -9110.900000 0 181.700000 -9110.200000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -9110.900000 0 494.500000 -9110.900000 0 494.500000 -9111.700000 0 181.700000 -9111.700000 0 181.700000 -9110.900000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -9111.700000 0 494.500000 -9111.700000 0 494.500000 -9112.500000 0 181.700000 -9112.500000 0 181.700000 -9111.700000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -9112.500000 0 494.500000 -9112.500000 0 494.500000 -9113.200000 0 181.700000 -9113.200000 0 181.700000 -9112.500000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -9113.200000 0 494.500000 -9113.200000 0 494.500000 -9114.000000 0 181.700000 -9114.000000 0 181.700000 -9113.200000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -9114.000000 0 494.500000 -9114.000000 0 494.500000 -9114.700000 0 181.700000 -9114.700000 0 181.700000 -9114.000000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -9114.700000 0 494.500000 -9114.700000 0 494.500000 -9115.500000 0 181.700000 -9115.500000 0 181.700000 -9114.700000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -9115.500000 0 494.500000 -9115.500000 0 494.500000 -9116.200000 0 181.700000 -9116.200000 0 181.700000 -9115.500000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -9116.200000 0 494.500000 -9116.200000 0 494.500000 -9117.000000 0 181.700000 -9117.000000 0 181.700000 -9116.200000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -9117.000000 0 494.500000 -9117.000000 0 494.500000 -9117.800000 0 181.700000 -9117.800000 0 181.700000 -9117.000000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -9117.800000 0 494.500000 -9117.800000 0 494.500000 -9118.500000 0 181.700000 -9118.500000 0 181.700000 -9117.800000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -9118.500000 0 494.500000 -9118.500000 0 494.500000 -9119.300000 0 181.700000 -9119.300000 0 181.700000 -9118.500000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -9119.300000 0 494.500000 -9119.300000 0 494.500000 -9120.000000 0 181.700000 -9120.000000 0 181.700000 -9119.300000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -9120.000000 0 494.500000 -9120.000000 0 494.500000 -9120.800000 0 181.700000 -9120.800000 0 181.700000 -9120.000000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -9120.800000 0 494.500000 -9120.800000 0 494.500000 -9121.500000 0 181.700000 -9121.500000 0 181.700000 -9120.800000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -9121.500000 0 494.500000 -9121.500000 0 494.500000 -9122.300000 0 181.700000 -9122.300000 0 181.700000 -9121.500000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -9122.300000 0 494.500000 -9122.300000 0 494.500000 -9123.100000 0 181.700000 -9123.100000 0 181.700000 -9122.300000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -9123.100000 0 494.500000 -9123.100000 0 494.500000 -9123.800000 0 181.700000 -9123.800000 0 181.700000 -9123.100000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -9123.800000 0 494.500000 -9123.800000 0 494.500000 -9124.600000 0 181.700000 -9124.600000 0 181.700000 -9123.800000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -9124.600000 0 494.500000 -9124.600000 0 494.500000 -9125.300000 0 181.700000 -9125.300000 0 181.700000 -9124.600000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -9125.300000 0 494.500000 -9125.300000 0 494.500000 -9126.100000 0 181.700000 -9126.100000 0 181.700000 -9125.300000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -9126.100000 0 494.500000 -9126.100000 0 494.500000 -9126.900000 0 181.700000 -9126.900000 0 181.700000 -9126.100000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -9126.900000 0 494.500000 -9126.900000 0 494.500000 -9127.600000 0 181.700000 -9127.600000 0 181.700000 -9126.900000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -9127.600000 0 494.500000 -9127.600000 0 494.500000 -9128.400000 0 181.700000 -9128.400000 0 181.700000 -9127.600000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -9128.400000 0 494.500000 -9128.400000 0 494.500000 -9129.100000 0 181.700000 -9129.100000 0 181.700000 -9128.400000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -9129.100000 0 494.500000 -9129.100000 0 494.500000 -9129.900000 0 181.700000 -9129.900000 0 181.700000 -9129.100000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -9129.900000 0 494.500000 -9129.900000 0 494.500000 -9130.600000 0 181.700000 -9130.600000 0 181.700000 -9129.900000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -9130.600000 0 494.500000 -9130.600000 0 494.500000 -9131.400000 0 181.700000 -9131.400000 0 181.700000 -9130.600000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -9131.400000 0 494.500000 -9131.400000 0 494.500000 -9132.200000 0 181.700000 -9132.200000 0 181.700000 -9131.400000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -9132.200000 0 494.500000 -9132.200000 0 494.500000 -9132.900000 0 181.700000 -9132.900000 0 181.700000 -9132.200000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -9132.900000 0 494.500000 -9132.900000 0 494.500000 -9133.700000 0 181.700000 -9133.700000 0 181.700000 -9132.900000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -9133.700000 0 494.500000 -9133.700000 0 494.500000 -9134.400000 0 181.700000 -9134.400000 0 181.700000 -9133.700000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -9134.400000 0 494.500000 -9134.400000 0 494.500000 -9135.200000 0 181.700000 -9135.200000 0 181.700000 -9134.400000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -9135.200000 0 494.500000 -9135.200000 0 494.500000 -9136.000000 0 181.700000 -9136.000000 0 181.700000 -9135.200000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -9136.000000 0 494.500000 -9136.000000 0 494.500000 -9136.700000 0 181.700000 -9136.700000 0 181.700000 -9136.000000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -9136.700000 0 494.500000 -9136.700000 0 494.500000 -9137.500000 0 181.700000 -9137.500000 0 181.700000 -9136.700000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -9137.500000 0 494.500000 -9137.500000 0 494.500000 -9138.200000 0 181.700000 -9138.200000 0 181.700000 -9137.500000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -9138.200000 0 494.500000 -9138.200000 0 494.500000 -9139.000000 0 181.700000 -9139.000000 0 181.700000 -9138.200000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -9139.000000 0 494.500000 -9139.000000 0 494.500000 -9139.800000 0 181.700000 -9139.800000 0 181.700000 -9139.000000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -9139.800000 0 494.500000 -9139.800000 0 494.500000 -9140.500000 0 181.700000 -9140.500000 0 181.700000 -9139.800000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -9140.500000 0 494.500000 -9140.500000 0 494.500000 -9141.300000 0 181.700000 -9141.300000 0 181.700000 -9140.500000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -9141.300000 0 494.500000 -9141.300000 0 494.500000 -9142.000000 0 181.700000 -9142.000000 0 181.700000 -9141.300000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -9142.000000 0 494.500000 -9142.000000 0 494.500000 -9142.800000 0 181.700000 -9142.800000 0 181.700000 -9142.000000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -9142.800000 0 494.500000 -9142.800000 0 494.500000 -9143.500000 0 181.700000 -9143.500000 0 181.700000 -9142.800000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -9143.500000 0 494.500000 -9143.500000 0 494.500000 -9144.300000 0 181.700000 -9144.300000 0 181.700000 -9143.500000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -9144.300000 0 494.500000 -9144.300000 0 494.500000 -9145.100000 0 181.700000 -9145.100000 0 181.700000 -9144.300000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -9145.100000 0 494.500000 -9145.100000 0 494.500000 -9145.800000 0 181.700000 -9145.800000 0 181.700000 -9145.100000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -9145.800000 0 494.500000 -9145.800000 0 494.500000 -9146.600000 0 181.700000 -9146.600000 0 181.700000 -9145.800000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -9146.600000 0 494.500000 -9146.600000 0 494.500000 -9147.300000 0 181.700000 -9147.300000 0 181.700000 -9146.600000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -9147.300000 0 494.500000 -9147.300000 0 494.500000 -9148.100000 0 181.700000 -9148.100000 0 181.700000 -9147.300000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -9148.100000 0 494.500000 -9148.100000 0 494.500000 -9148.900000 0 181.700000 -9148.900000 0 181.700000 -9148.100000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -9148.900000 0 494.500000 -9148.900000 0 494.500000 -9149.600000 0 181.700000 -9149.600000 0 181.700000 -9148.900000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -9149.600000 0 494.500000 -9149.600000 0 494.500000 -9150.400000 0 181.700000 -9150.400000 0 181.700000 -9149.600000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -9150.400000 0 494.500000 -9150.400000 0 494.500000 -9151.100000 0 181.700000 -9151.100000 0 181.700000 -9150.400000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -9151.100000 0 494.500000 -9151.100000 0 494.500000 -9151.900000 0 181.700000 -9151.900000 0 181.700000 -9151.100000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -9151.900000 0 494.500000 -9151.900000 0 494.500000 -9152.700000 0 181.700000 -9152.700000 0 181.700000 -9151.900000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -9152.700000 0 494.500000 -9152.700000 0 494.500000 -9153.400000 0 181.700000 -9153.400000 0 181.700000 -9152.700000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -9153.400000 0 494.500000 -9153.400000 0 494.500000 -9154.200000 0 181.700000 -9154.200000 0 181.700000 -9153.400000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -9154.200000 0 494.500000 -9154.200000 0 494.500000 -9154.900000 0 181.700000 -9154.900000 0 181.700000 -9154.200000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -9154.900000 0 494.500000 -9154.900000 0 494.500000 -9155.700000 0 181.700000 -9155.700000 0 181.700000 -9154.900000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -9155.700000 0 494.500000 -9155.700000 0 494.500000 -9156.400000 0 181.700000 -9156.400000 0 181.700000 -9155.700000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -9156.400000 0 494.500000 -9156.400000 0 494.500000 -9157.200000 0 181.700000 -9157.200000 0 181.700000 -9156.400000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -9157.200000 0 494.500000 -9157.200000 0 494.500000 -9158.000000 0 181.700000 -9158.000000 0 181.700000 -9157.200000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -9158.000000 0 494.500000 -9158.000000 0 494.500000 -9158.700000 0 181.700000 -9158.700000 0 181.700000 -9158.000000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -9158.700000 0 494.500000 -9158.700000 0 494.500000 -9159.500000 0 181.700000 -9159.500000 0 181.700000 -9158.700000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -9159.500000 0 494.500000 -9159.500000 0 494.500000 -9160.200000 0 181.700000 -9160.200000 0 181.700000 -9159.500000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -9160.200000 0 494.500000 -9160.200000 0 494.500000 -9161.000000 0 181.700000 -9161.000000 0 181.700000 -9160.200000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -9161.000000 0 494.500000 -9161.000000 0 494.500000 -9161.800000 0 181.700000 -9161.800000 0 181.700000 -9161.000000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -9161.800000 0 494.500000 -9161.800000 0 494.500000 -9162.500000 0 181.700000 -9162.500000 0 181.700000 -9161.800000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -9162.500000 0 494.500000 -9162.500000 0 494.500000 -9163.300000 0 181.700000 -9163.300000 0 181.700000 -9162.500000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -9163.300000 0 494.500000 -9163.300000 0 494.500000 -9164.000000 0 181.700000 -9164.000000 0 181.700000 -9163.300000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -9164.000000 0 494.500000 -9164.000000 0 494.500000 -9164.800000 0 181.700000 -9164.800000 0 181.700000 -9164.000000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -9164.800000 0 494.500000 -9164.800000 0 494.500000 -9165.600000 0 181.700000 -9165.600000 0 181.700000 -9164.800000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -9165.600000 0 494.500000 -9165.600000 0 494.500000 -9166.300000 0 181.700000 -9166.300000 0 181.700000 -9165.600000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -9166.300000 0 494.500000 -9166.300000 0 494.500000 -9167.100000 0 181.700000 -9167.100000 0 181.700000 -9166.300000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -9167.100000 0 494.500000 -9167.100000 0 494.500000 -9167.800000 0 181.700000 -9167.800000 0 181.700000 -9167.100000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -9167.800000 0 494.500000 -9167.800000 0 494.500000 -9168.600000 0 181.700000 -9168.600000 0 181.700000 -9167.800000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -9168.600000 0 494.500000 -9168.600000 0 494.500000 -9169.300000 0 181.700000 -9169.300000 0 181.700000 -9168.600000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -9169.300000 0 494.500000 -9169.300000 0 494.500000 -9170.100000 0 181.700000 -9170.100000 0 181.700000 -9169.300000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -9170.100000 0 494.500000 -9170.100000 0 494.500000 -9170.900000 0 181.700000 -9170.900000 0 181.700000 -9170.100000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -9170.900000 0 494.500000 -9170.900000 0 494.500000 -9171.600000 0 181.700000 -9171.600000 0 181.700000 -9170.900000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -9171.600000 0 494.500000 -9171.600000 0 494.500000 -9172.400000 0 181.700000 -9172.400000 0 181.700000 -9171.600000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -9172.400000 0 494.500000 -9172.400000 0 494.500000 -9173.100000 0 181.700000 -9173.100000 0 181.700000 -9172.400000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -9173.100000 0 494.500000 -9173.100000 0 494.500000 -9173.900000 0 181.700000 -9173.900000 0 181.700000 -9173.100000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -9173.900000 0 494.500000 -9173.900000 0 494.500000 -9174.700000 0 181.700000 -9174.700000 0 181.700000 -9173.900000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -9174.700000 0 494.500000 -9174.700000 0 494.500000 -9175.400000 0 181.700000 -9175.400000 0 181.700000 -9174.700000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -9175.400000 0 494.500000 -9175.400000 0 494.500000 -9176.200000 0 181.700000 -9176.200000 0 181.700000 -9175.400000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -9176.200000 0 494.500000 -9176.200000 0 494.500000 -9176.900000 0 181.700000 -9176.900000 0 181.700000 -9176.200000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -9176.900000 0 494.500000 -9176.900000 0 494.500000 -9177.700000 0 181.700000 -9177.700000 0 181.700000 -9176.900000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -9177.700000 0 494.500000 -9177.700000 0 494.500000 -9178.500000 0 181.700000 -9178.500000 0 181.700000 -9177.700000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -9178.500000 0 494.500000 -9178.500000 0 494.500000 -9179.200000 0 181.700000 -9179.200000 0 181.700000 -9178.500000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -9179.200000 0 494.500000 -9179.200000 0 494.500000 -9180.000000 0 181.700000 -9180.000000 0 181.700000 -9179.200000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -9180.000000 0 494.500000 -9180.000000 0 494.500000 -9180.700000 0 181.700000 -9180.700000 0 181.700000 -9180.000000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -9180.700000 0 494.500000 -9180.700000 0 494.500000 -9181.500000 0 181.700000 -9181.500000 0 181.700000 -9180.700000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -9181.500000 0 494.500000 -9181.500000 0 494.500000 -9182.200000 0 181.700000 -9182.200000 0 181.700000 -9181.500000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -9182.200000 0 494.500000 -9182.200000 0 494.500000 -9183.000000 0 181.700000 -9183.000000 0 181.700000 -9182.200000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -9183.000000 0 494.500000 -9183.000000 0 494.500000 -9183.800000 0 181.700000 -9183.800000 0 181.700000 -9183.000000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -9183.800000 0 494.500000 -9183.800000 0 494.500000 -9184.500000 0 181.700000 -9184.500000 0 181.700000 -9183.800000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -9184.500000 0 494.500000 -9184.500000 0 494.500000 -9185.300000 0 181.700000 -9185.300000 0 181.700000 -9184.500000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -9185.300000 0 494.500000 -9185.300000 0 494.500000 -9186.000000 0 181.700000 -9186.000000 0 181.700000 -9185.300000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -9186.000000 0 494.500000 -9186.000000 0 494.500000 -9186.800000 0 181.700000 -9186.800000 0 181.700000 -9186.000000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -9186.800000 0 494.500000 -9186.800000 0 494.500000 -9187.600000 0 181.700000 -9187.600000 0 181.700000 -9186.800000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -9187.600000 0 494.500000 -9187.600000 0 494.500000 -9188.300000 0 181.700000 -9188.300000 0 181.700000 -9187.600000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -9188.300000 0 494.500000 -9188.300000 0 494.500000 -9189.100000 0 181.700000 -9189.100000 0 181.700000 -9188.300000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -9189.100000 0 494.500000 -9189.100000 0 494.500000 -9189.800000 0 181.700000 -9189.800000 0 181.700000 -9189.100000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -9189.800000 0 494.500000 -9189.800000 0 494.500000 -9190.600000 0 181.700000 -9190.600000 0 181.700000 -9189.800000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -9190.600000 0 494.500000 -9190.600000 0 494.500000 -9191.400000 0 181.700000 -9191.400000 0 181.700000 -9190.600000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -9191.400000 0 494.500000 -9191.400000 0 494.500000 -9192.100000 0 181.700000 -9192.100000 0 181.700000 -9191.400000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -9192.100000 0 494.500000 -9192.100000 0 494.500000 -9192.900000 0 181.700000 -9192.900000 0 181.700000 -9192.100000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -9192.900000 0 494.500000 -9192.900000 0 494.500000 -9193.600000 0 181.700000 -9193.600000 0 181.700000 -9192.900000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -9193.600000 0 494.500000 -9193.600000 0 494.500000 -9194.400000 0 181.700000 -9194.400000 0 181.700000 -9193.600000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -9194.400000 0 494.500000 -9194.400000 0 494.500000 -9195.100000 0 181.700000 -9195.100000 0 181.700000 -9194.400000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -9195.100000 0 494.500000 -9195.100000 0 494.500000 -9195.900000 0 181.700000 -9195.900000 0 181.700000 -9195.100000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -9195.900000 0 494.500000 -9195.900000 0 494.500000 -9196.700000 0 181.700000 -9196.700000 0 181.700000 -9195.900000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -9196.700000 0 494.500000 -9196.700000 0 494.500000 -9197.400000 0 181.700000 -9197.400000 0 181.700000 -9196.700000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -9197.400000 0 494.500000 -9197.400000 0 494.500000 -9198.200000 0 181.700000 -9198.200000 0 181.700000 -9197.400000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -9198.100000 0 181.800000 -9198.100000 0 181.800000 -9004.800000 0 494.400000 -9004.800000 0 494.400000 -9198.100000 0 338.100000 -9198.100000 0
+strokePath subpath 1 338.100000 -9198.100000 0 181.800000 -9198.100000 0 181.800000 -9004.800000 0 494.400000 -9004.800000 0 494.400000 -9198.100000 0 338.100000 -9198.100000 0
+saveState
+updateCtm 11420.000000 0.000000 0.000000 -8760.000000 20530.000000 991410.000000
+drawSoftMaskedImage 1143 877 1143 877 JPEG 71324 PPM 3007249
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -9159.076000 215.488000 -9167.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -9159.076000 220.592000 -9167.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -9159.076000 225.696000 -9167.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -9159.076000 230.800000 -9167.076000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -9166.676000 241.388000 -9174.676000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -9166.676000 246.492000 -9174.676000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -9166.676000 251.596000 -9174.676000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -9166.676000 256.700000 -9174.676000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -9174.376000 267.188000 -9182.376000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -9174.376000 272.292000 -9182.376000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -9174.376000 277.396000 -9182.376000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -9174.376000 282.500000 -9182.376000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -9181.976000 293.088000 -9189.976000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -9181.976000 298.192000 -9189.976000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -9181.976000 303.296000 -9189.976000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -9181.976000 308.400000 -9189.976000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -9144.076000 202.588000 -9152.076000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -9124.776000 201.688000 -9132.776000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -9105.476000 195.788000 -9113.476000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -9105.476000 200.892000 -9113.476000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -9086.076000 194.888000 -9094.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -9086.076000 199.992000 -9094.076000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -9066.776000 193.988000 -9074.776000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -9066.776000 199.092000 -9074.776000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -9047.476000 193.088000 -9055.476000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -9047.476000 198.192000 -9055.476000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -9175.376000 330.188000 -9183.376000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -9175.376000 332.716000 -9183.376000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -9175.376000 337.596000 -9183.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -9175.376000 341.396000 -9183.376000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -9175.376000 346.036000 -9183.376000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -9175.376000 350.900000 -9183.376000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -9175.376000 355.972000 -9183.376000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -9175.376000 359.196000 -9183.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -9175.376000 362.196000 -9183.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -9175.376000 367.404000 -9183.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -9175.376000 371.876000 -9183.376000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -9175.376000 375.052000 -9183.376000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -9155.876000 361.172000 -9163.876000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -9155.876000 364.340000 -9163.876000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -9155.876000 367.396000 -9163.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -9155.876000 372.604000 -9163.876000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -9155.876000 379.348000 -9163.876000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -9155.876000 384.484000 -9163.876000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -9155.876000 389.436000 -9163.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -9155.876000 392.108000 -9163.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -9155.876000 395.708000 -9163.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -9155.876000 397.540000 -9163.876000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -9155.876000 402.444000 -9163.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -9155.876000 406.788000 -9163.876000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -9136.276000 392.972000 -9144.276000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -9136.276000 398.076000 -9144.276000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -9136.276000 403.180000 -9144.276000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -9136.276000 405.428000 -9144.276000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -9136.276000 410.332000 -9144.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -9136.276000 414.476000 -9144.276000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -9008.708000 305.808000 -9022.708000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -9008.708000 314.138000 -9022.708000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -9008.708000 320.788000 -9022.708000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -9008.708000 328.698000 -9022.708000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -9008.708000 336.972000 -9022.708000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -9008.708000 344.182000 -9022.708000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -9008.708000 349.810000 -9022.708000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -9008.708000 354.234000 -9022.708000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -9008.708000 362.718000 -9022.708000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -9008.708000 367.870000 -9022.708000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -9008.708000 372.322000 -9022.708000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -9008.708000 382.080000 -9022.708000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -9008.708000 388.772000 -9022.708000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -9008.708000 397.802000 -9022.708000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -9008.708000 402.254000 -9022.708000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -9008.708000 407.896000 -9022.708000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -9131.600000 0 424.300000 -9131.600000 0 424.300000 -9070.900000 0 493.600000 -9070.900000 0 493.600000 -9131.600000 0 458.900000 -9131.600000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -9080.500000 0 428.900000 -9080.500000 0 428.900000 -9074.600000 0 434.800000 -9074.600000 0 434.800000 -9080.500000 0 431.900000 -9080.500000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -9091.600000 0 428.900000 -9091.600000 0 428.900000 -9085.600000 0 434.800000 -9085.600000 0 434.800000 -9091.600000 0 431.900000 -9091.600000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -9102.700000 0 428.900000 -9102.700000 0 428.900000 -9096.700000 0 434.800000 -9096.700000 0 434.800000 -9102.700000 0 431.900000 -9102.700000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -9113.800000 0 428.900000 -9113.800000 0 428.900000 -9107.800000 0 434.800000 -9107.800000 0 434.800000 -9113.800000 0 431.900000 -9113.800000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -9124.900000 0 428.900000 -9124.900000 0 428.900000 -9118.900000 0 434.800000 -9118.900000 0 434.800000 -9124.900000 0 431.900000 -9124.900000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -9073.376000 443.288000 -9081.376000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -9073.376000 445.816000 -9081.376000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -9073.376000 450.600000 -9081.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -9073.376000 454.496000 -9081.376000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -9073.376000 459.136000 -9081.376000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -9073.376000 464.000000 -9081.376000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -9073.376000 468.976000 -9081.376000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -9073.376000 472.304000 -9081.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -9073.376000 475.208000 -9081.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -9073.376000 480.520000 -9081.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -9073.376000 484.992000 -9081.376000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -9073.376000 488.168000 -9081.376000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -9084.476000 443.352000 -9092.476000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -9084.476000 447.920000 -9092.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -9084.476000 452.976000 -9092.476000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -9084.476000 457.400000 -9092.476000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -9084.476000 462.472000 -9092.476000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -9084.476000 465.800000 -9092.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -9084.476000 468.904000 -9092.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -9084.476000 473.816000 -9092.476000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -9084.476000 478.888000 -9092.476000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -9084.476000 482.064000 -9092.476000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -9095.576000 442.872000 -9103.576000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -9095.576000 446.040000 -9103.576000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -9095.576000 448.992000 -9103.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -9095.576000 454.304000 -9103.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -9095.576000 461.048000 -9103.576000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -9095.576000 466.184000 -9103.576000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -9095.576000 471.136000 -9103.576000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -9095.576000 473.808000 -9103.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -9095.576000 477.408000 -9103.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -9095.576000 479.240000 -9103.576000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -9095.576000 484.144000 -9103.576000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -9095.576000 488.488000 -9103.576000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -9106.676000 443.384000 -9114.676000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -9106.676000 448.464000 -9114.676000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -9106.676000 453.424000 -9114.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -9106.676000 456.696000 -9114.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -9106.676000 459.800000 -9114.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -9106.676000 462.032000 -9114.676000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -9106.676000 466.936000 -9114.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -9106.676000 471.080000 -9114.676000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -9117.776000 443.272000 -9125.776000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -9117.776000 448.376000 -9125.776000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -9117.776000 453.480000 -9125.776000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -9117.776000 455.728000 -9125.776000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -9117.776000 460.632000 -9125.776000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -9117.776000 464.776000 -9125.776000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -11762.800000 0 114.800000 -11762.800000 0 114.800000 -11720.000000 0 72.000000 -11720.000000 0 72.000000 -11762.800000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 1255470.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 546.200000 0 504.000000 546.200000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 546.200000 0
+eoFillPath subpath 1 72.000000 420.200000 0 121.400000 420.200000 0 121.400000 546.200000 0 72.000000 546.200000 0 72.000000 420.200000 0
+eoFillPath subpath 1 454.500000 420.200000 0 504.000000 420.200000 0 504.000000 546.200000 0 454.500000 546.200000 0 454.500000 420.200000 0
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 420.200000 0 504.000000 420.200000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 420.200000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 245.800000 0 72.000000 245.800000 0 72.000000 72.000000 0
+eoFillPath subpath 1 72.000000 245.800000 0 121.400000 245.800000 0 121.400000 308.400000 0 72.000000 308.400000 0 72.000000 245.800000 0
+eoFillPath subpath 1 454.500000 245.800000 0 504.000000 245.800000 0 504.000000 308.400000 0 454.500000 308.400000 0 454.500000 245.800000 0
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 308.400000 0 72.000000 308.400000 0 72.000000 72.000000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 308.400000 0 76.300000 308.400000 0 76.300000 420.200000 0 72.000000 420.200000 0 72.000000 308.400000 0
+eoFillPath subpath 1 454.500000 308.400000 0 504.000000 308.400000 0 504.000000 420.200000 0 454.500000 420.200000 0 454.500000 308.400000 0
+restoreState
+saveState
+eoClipPath subpath 1 160.300000 308.400000 0 504.000000 308.400000 0 504.000000 420.200000 0 160.300000 420.200000 0 160.300000 308.400000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 701.300000 0 504.000000 701.300000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 701.300000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 72.000000 654.200000 0 291.400000 654.200000 0 291.400000 672.900000 0 72.000000 672.900000 0 72.000000 654.200000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 72.200000 0 504.000000 72.200000 0 504.000000 86.100000 0 72.000000 86.100000 0 72.000000 72.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 331.300000 719.948000 345.092000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 345.108000 719.948000 354.564000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 354.612000 719.948000 359.684000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.716000 719.948000 371.732000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 371.716000 719.948000 381.492000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 381.524000 719.948000 391.652000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 391.620000 719.948000 399.940000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 399.924000 719.948000 409.764000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 409.732000 719.948000 414.804000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 414.836000 719.948000 420.596000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 420.644000 719.948000 425.716000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 425.700000 719.948000 439.492000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 439.508000 719.948000 448.964000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 449.012000 719.948000 454.084000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.116000 719.948000 466.132000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 466.116000 719.948000 475.892000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 475.924000 719.948000 486.052000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 486.020000 719.948000 494.340000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 494.324000 719.948000 504.164000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 672.848000 88.020000 656.848000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 88.004000 672.848000 98.420000 656.848000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.404000 672.848000 103.972000 656.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.004000 672.848000 117.380000 656.848000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 117.412000 672.848000 128.404000 656.848000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 128.420000 672.848000 139.796000 656.848000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 139.828000 672.848000 149.348000 656.848000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 149.332000 672.848000 160.180000 656.848000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 648.336000 197.776000 636.336000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 197.800000 648.336000 204.568000 636.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 204.796000 648.336000 208.600000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 208.900000 648.336000 216.628000 636.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 216.604000 648.336000 223.828000 636.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 223.900000 648.336000 231.628000 636.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 231.604000 648.336000 237.760000 636.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 237.700000 648.336000 244.792000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 244.996000 648.336000 248.800000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 249.100000 648.336000 252.928000 636.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 252.904000 648.336000 259.060000 636.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 259.300000 648.336000 263.104000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 263.404000 648.336000 270.556000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 270.808000 648.336000 274.612000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 274.912000 648.336000 281.632000 636.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 281.608000 648.336000 288.832000 636.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 288.808000 648.336000 292.636000 636.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 292.708000 648.336000 299.932000 636.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 299.908000 648.336000 307.636000 636.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 307.612000 648.336000 311.440000 636.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 311.512000 648.336000 318.664000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 318.616000 648.336000 322.444000 636.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 322.516000 648.336000 326.560000 636.336000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 326.512000 648.336000 332.668000 636.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 332.716000 648.336000 337.528000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 337.516000 648.336000 344.284000 636.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 344.320000 648.336000 348.148000 636.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 348.124000 648.336000 355.216000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 355.720000 648.336000 359.524000 636.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 359.700000 648.336000 366.468000 636.336000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 366.504000 648.336000 370.332000 636.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 370.308000 648.336000 374.136000 636.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 374.208000 648.336000 378.036000 636.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 378.012000 648.336000 385.164000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 385.416000 648.336000 389.220000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 389.520000 648.336000 393.348000 636.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 393.324000 648.336000 401.052000 636.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 401.328000 648.336000 405.132000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 405.324000 648.336000 412.476000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 412.824000 648.336000 416.628000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 416.820000 648.336000 424.548000 636.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 424.524000 648.336000 431.748000 636.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 431.820000 648.336000 439.500000 636.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 439.416000 648.336000 443.244000 636.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 443.316000 648.336000 450.408000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 450.720000 648.336000 454.524000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.716000 648.336000 460.452000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 460.416000 648.336000 467.508000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 467.520000 648.336000 473.676000 636.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 473.724000 648.336000 477.552000 636.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 477.528000 648.336000 485.208000 636.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 485.232000 648.336000 492.324000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 492.336000 648.336000 500.064000 636.336000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 648.336000 504.044000 636.336000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 634.436000 190.312000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 634.436000 194.128000 622.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 194.200000 634.436000 201.352000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 201.304000 634.436000 205.132000 622.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 205.708000 634.436000 209.512000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 210.112000 634.436000 217.264000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 217.312000 634.436000 223.048000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 223.012000 634.436000 230.104000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 230.116000 634.436000 237.268000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 237.712000 634.436000 241.516000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 242.116000 634.436000 249.340000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 249.412000 634.436000 253.852000 622.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 254.308000 634.436000 258.112000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.712000 634.436000 266.932000 622.436000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 266.908000 634.436000 274.060000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 274.108000 634.436000 281.836000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 282.304000 634.436000 286.108000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.708000 634.436000 295.024000 622.436000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 295.012000 634.436000 300.748000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 300.808000 634.436000 307.960000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 307.912000 634.436000 315.640000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 315.616000 634.436000 322.336000 622.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 322.420000 634.436000 326.248000 622.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 326.224000 634.436000 332.380000 622.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 332.428000 634.436000 339.148000 622.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 339.124000 634.436000 346.348000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 346.324000 634.436000 350.128000 622.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 350.620000 634.436000 354.424000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 355.120000 634.436000 365.380000 622.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 365.416000 634.436000 369.244000 622.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 369.220000 634.436000 374.032000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 374.020000 634.436000 381.748000 622.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 382.216000 634.436000 386.020000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 386.620000 634.436000 393.772000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 394.324000 634.436000 398.128000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.728000 634.436000 410.104000 622.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 410.128000 634.436000 417.280000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 417.232000 634.436000 424.912000 622.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 424.936000 634.436000 432.664000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 432.640000 634.436000 436.468000 622.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 436.540000 634.436000 444.532000 622.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 444.544000 634.436000 451.264000 622.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 451.240000 634.436000 458.332000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 458.344000 634.436000 466.072000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 466.048000 634.436000 470.860000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 471.448000 634.436000 475.252000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 475.852000 634.436000 482.620000 622.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 482.656000 634.436000 486.484000 622.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 486.460000 634.436000 493.552000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 493.564000 634.436000 503.824000 622.436000 1.000000 0.000000 0.000000 1.000000 w
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 634.436000 507.904000 622.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 620.536000 192.724000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 192.700000 620.536000 197.140000 608.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 198.004000 620.536000 201.808000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 202.600000 620.536000 207.412000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 207.400000 620.536000 215.128000 608.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 215.200000 620.536000 222.292000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 223.000000 620.536000 226.804000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 227.596000 620.536000 236.404000 608.536000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 236.500000 620.536000 243.652000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 243.700000 620.536000 250.468000 608.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 248.800000 620.536000 252.604000 608.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.396000 620.536000 257.200000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.992000 620.536000 267.820000 608.536000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 267.796000 620.536000 273.532000 608.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 273.592000 620.536000 277.420000 608.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 277.396000 620.536000 285.076000 608.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 285.100000 620.536000 288.928000 608.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 288.904000 620.536000 296.632000 608.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 296.704000 620.536000 303.856000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 303.808000 620.536000 307.636000 608.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 307.708000 620.536000 311.536000 608.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 311.512000 620.536000 318.280000 608.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 316.708000 620.536000 320.512000 608.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 321.304000 620.536000 325.108000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 325.900000 620.536000 330.712000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 330.796000 620.536000 338.524000 608.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 338.500000 620.536000 345.592000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 346.396000 620.536000 350.200000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 350.992000 620.536000 355.432000 608.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 355.396000 620.536000 362.548000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 362.596000 620.536000 369.316000 608.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 369.292000 620.536000 376.444000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 376.492000 620.536000 384.172000 608.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 384.196000 620.536000 391.288000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 392.092000 620.536000 395.896000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 396.688000 620.536000 403.912000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 403.888000 620.536000 408.328000 608.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 409.084000 620.536000 412.888000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 413.788000 620.536000 418.600000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 418.588000 620.536000 426.316000 608.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 426.388000 620.536000 433.480000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 434.188000 620.536000 437.992000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.784000 620.536000 446.512000 608.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 446.488000 620.536000 453.712000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 453.784000 620.536000 461.512000 608.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 461.488000 620.536000 467.644000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 467.584000 620.536000 474.676000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 475.588000 620.536000 479.392000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 480.184000 620.536000 490.444000 608.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 490.480000 620.536000 497.632000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 497.584000 620.536000 503.740000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 620.536000 507.904000 608.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 606.636000 193.180000 594.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 193.204000 606.636000 200.356000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 200.308000 606.636000 204.136000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 204.208000 606.636000 211.936000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 211.912000 606.636000 216.724000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 216.712000 606.636000 223.804000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 223.816000 606.636000 231.496000 594.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 232.912000 606.636000 236.716000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 238.216000 606.636000 242.044000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 242.020000 606.636000 249.748000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 251.320000 606.636000 255.124000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.624000 606.636000 263.776000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 265.228000 606.636000 269.032000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.532000 606.636000 274.360000 594.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 274.336000 606.636000 278.164000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 278.140000 606.636000 285.820000 594.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 285.844000 606.636000 293.572000 594.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 293.644000 606.636000 298.456000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 299.944000 606.636000 303.748000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 305.248000 606.636000 311.404000 594.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 311.452000 606.636000 319.180000 594.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 319.156000 606.636000 326.308000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 326.260000 606.636000 333.940000 594.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 333.964000 606.636000 341.056000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 342.460000 606.636000 346.264000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 347.764000 606.636000 354.988000 594.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 355.060000 606.636000 359.500000 594.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 360.964000 606.636000 364.768000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 366.268000 606.636000 373.036000 594.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 373.072000 606.636000 380.164000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 380.176000 606.636000 384.004000 594.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 383.980000 606.636000 387.808000 594.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 387.880000 606.636000 395.104000 594.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 395.080000 606.636000 405.340000 594.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 403.876000 606.636000 407.680000 594.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 409.180000 606.636000 412.984000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 414.484000 606.636000 422.164000 594.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 422.188000 606.636000 429.916000 594.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 429.892000 606.636000 434.704000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 436.192000 606.636000 439.996000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 441.496000 606.636000 446.308000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 446.296000 606.636000 453.520000 594.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 453.496000 606.636000 461.176000 594.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 461.200000 606.636000 468.352000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 468.400000 606.636000 475.168000 594.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 473.596000 606.636000 477.400000 594.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 478.792000 606.636000 482.596000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.096000 606.636000 488.908000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 488.896000 606.636000 496.624000 594.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.696000 606.636000 503.788000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 606.636000 507.904000 594.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 592.736000 191.656000 580.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 592.736000 195.532000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 195.508000 592.736000 203.188000 580.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 203.212000 592.736000 210.304000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 211.312000 592.736000 215.116000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 216.208000 592.736000 220.648000 580.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 220.612000 592.736000 227.764000 580.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 227.812000 592.736000 234.532000 580.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 234.508000 592.736000 238.336000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 238.408000 592.736000 246.136000 580.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 246.112000 592.736000 253.792000 580.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 254.908000 592.736000 258.712000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 259.804000 592.736000 264.616000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 264.604000 592.736000 272.332000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 272.404000 592.736000 279.496000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 280.408000 592.736000 284.212000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.304000 592.736000 291.460000 580.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 291.508000 592.736000 296.320000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 296.308000 592.736000 302.044000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 302.104000 592.736000 309.196000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 309.208000 592.736000 316.300000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 316.312000 592.736000 321.124000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 322.216000 592.736000 326.020000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 327.112000 592.736000 330.940000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 330.916000 592.736000 337.072000 580.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 338.116000 592.736000 341.920000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 343.012000 592.736000 350.740000 580.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 350.716000 592.736000 357.940000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 358.012000 592.736000 368.272000 580.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 369.316000 592.736000 373.120000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.212000 592.736000 381.436000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 381.508000 592.736000 388.276000 580.736000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 388.204000 592.736000 395.296000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 395.404000 592.736000 401.140000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 401.104000 592.736000 408.784000 580.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 408.808000 592.736000 414.544000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 414.604000 592.736000 421.828000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 421.708000 592.736000 431.968000 580.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 432.004000 592.736000 439.732000 580.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 440.704000 592.736000 444.508000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.600000 592.736000 455.860000 580.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 455.896000 592.736000 459.724000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 459.796000 592.736000 464.608000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 464.596000 592.736000 472.324000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 473.392000 592.736000 477.196000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.288000 592.736000 488.548000 580.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 488.584000 592.736000 492.412000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 492.388000 592.736000 496.216000 580.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 496.192000 592.736000 503.872000 580.736000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 592.736000 507.904000 580.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 578.836000 191.236000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 191.200000 578.836000 198.424000 566.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 198.496000 578.836000 204.652000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 204.592000 578.836000 211.684000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 211.696000 578.836000 217.852000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 218.992000 578.836000 222.796000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 223.996000 578.836000 231.724000 566.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 231.700000 578.836000 239.380000 566.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 240.604000 578.836000 244.408000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.608000 578.836000 250.420000 566.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 250.408000 578.836000 257.632000 566.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 258.808000 578.836000 262.612000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 263.812000 578.836000 268.624000 566.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 268.612000 578.836000 276.340000 566.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 276.412000 578.836000 283.504000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 284.608000 578.836000 288.412000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.612000 578.836000 295.768000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 295.816000 578.836000 302.908000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 302.920000 578.836000 309.640000 566.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 309.616000 578.836000 316.840000 566.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 316.912000 578.836000 324.640000 566.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 324.616000 578.836000 332.296000 566.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 333.412000 578.836000 337.216000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.616000 578.836000 347.608000 566.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 346.420000 578.836000 353.644000 566.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 353.620000 578.836000 360.844000 566.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 360.916000 578.836000 366.652000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.816000 578.836000 371.620000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.820000 578.836000 383.080000 566.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 383.116000 578.836000 386.944000 566.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 386.920000 578.836000 394.648000 566.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 394.624000 578.836000 402.304000 566.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 402.328000 578.836000 409.552000 566.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 409.528000 578.836000 419.788000 566.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 419.824000 578.836000 425.980000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 426.028000 578.836000 429.832000 566.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.924000 578.836000 434.728000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 435.928000 578.836000 444.592000 566.836000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 444.628000 578.836000 450.784000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 451.924000 578.836000 455.728000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.928000 578.836000 463.696000 566.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 463.732000 578.836000 470.956000 566.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 470.932000 578.836000 478.660000 566.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 479.836000 578.836000 483.640000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.840000 578.836000 491.992000 566.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 492.040000 578.836000 499.720000 566.836000 1.000000 0.000000 0.000000 1.000000 p
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 578.836000 504.044000 566.836000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 564.936000 193.180000 552.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 193.204000 564.936000 198.940000 552.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.904000 564.936000 206.128000 552.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 206.104000 564.936000 213.256000 552.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 213.304000 564.936000 220.024000 552.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 220.000000 564.936000 227.728000 552.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 230.596000 564.936000 234.400000 552.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 237.496000 564.936000 242.308000 552.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 242.296000 564.936000 250.024000 552.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 250.096000 564.936000 257.188000 552.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 259.996000 564.936000 263.800000 552.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.800000 564.936000 274.528000 552.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 274.504000 564.936000 281.728000 552.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 281.800000 564.936000 289.528000 552.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 289.504000 564.936000 295.660000 552.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 295.600000 564.936000 302.692000 552.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 305.704000 564.936000 309.508000 552.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 312.508000 564.936000 316.948000 552.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 316.912000 564.936000 322.648000 552.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 322.708000 564.936000 329.932000 552.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 329.908000 564.936000 341.284000 552.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 344.212000 564.936000 348.016000 552.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.016000 564.936000 355.828000 552.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 355.816000 564.936000 363.544000 552.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 363.616000 564.936000 370.708000 552.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 373.516000 564.936000 377.320000 552.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.320000 564.936000 386.476000 552.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 386.524000 564.936000 391.336000 552.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 391.324000 564.936000 397.060000 552.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 397.120000 564.936000 404.212000 552.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 404.224000 564.936000 411.316000 552.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 411.328000 564.936000 416.140000 552.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 416.128000 564.936000 419.932000 552.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 422.824000 564.936000 426.628000 552.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.628000 564.936000 434.440000 552.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 434.428000 564.936000 442.156000 552.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 442.228000 564.936000 449.320000 552.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 452.224000 564.936000 456.028000 552.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.028000 564.936000 465.748000 552.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 465.724000 564.936000 472.876000 552.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 472.924000 564.936000 478.660000 552.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 478.624000 564.936000 486.304000 552.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 486.328000 564.936000 493.552000 552.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 493.528000 564.936000 499.264000 552.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 499.324000 564.936000 504.136000 552.936000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 564.936000 507.904000 552.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 551.036000 192.220000 539.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 192.196000 551.036000 199.420000 539.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 199.396000 551.036000 210.772000 539.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 210.796000 551.036000 217.888000 539.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 217.900000 551.036000 224.056000 539.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 225.904000 551.036000 229.708000 539.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 231.604000 551.036000 235.432000 539.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 235.408000 551.036000 243.136000 539.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 243.208000 551.036000 248.020000 539.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 248.008000 551.036000 255.232000 539.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 257.104000 551.036000 260.908000 539.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.804000 551.036000 269.572000 539.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 269.608000 551.036000 273.436000 539.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 273.412000 551.036000 280.504000 539.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 280.516000 551.036000 290.776000 539.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 289.420000 551.036000 293.224000 539.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 295.024000 551.036000 298.828000 539.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 300.724000 551.036000 305.464000 539.036000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 305.428000 551.036000 313.156000 539.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 315.124000 551.036000 318.928000 539.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 320.824000 551.036000 325.636000 539.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 325.624000 551.036000 333.352000 539.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 333.424000 551.036000 340.516000 539.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 342.328000 551.036000 346.132000 539.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 348.028000 551.036000 354.748000 539.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 354.724000 551.036000 361.876000 539.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 361.924000 551.036000 367.660000 539.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.624000 551.036000 375.304000 539.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 375.328000 551.036000 382.552000 539.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 382.528000 551.036000 388.264000 539.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.324000 551.036000 393.136000 539.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 394.924000 551.036000 398.728000 539.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 400.720000 551.036000 404.548000 539.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 404.524000 551.036000 410.680000 539.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 412.528000 551.036000 416.332000 539.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 418.228000 551.036000 425.380000 539.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 427.228000 551.036000 431.032000 539.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 432.928000 551.036000 439.648000 539.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 439.732000 551.036000 443.560000 539.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 443.536000 551.036000 450.688000 539.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.736000 551.036000 456.892000 539.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 456.940000 551.036000 463.096000 539.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 463.036000 551.036000 466.864000 539.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 466.840000 551.036000 473.560000 539.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 477.244000 551.036000 481.048000 539.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 481.300000 551.036000 488.524000 539.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 488.500000 551.036000 492.328000 539.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 492.304000 551.036000 499.984000 539.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 500.008000 551.036000 504.052000 539.036000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 537.136000 190.312000 525.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 537.136000 194.128000 525.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 194.200000 537.136000 205.576000 525.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 205.504000 537.136000 212.596000 525.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 212.608000 537.136000 218.344000 525.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 217.108000 537.136000 220.912000 525.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 221.008000 537.136000 224.812000 525.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 225.004000 537.136000 231.160000 525.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 231.208000 537.136000 236.020000 525.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 236.008000 537.136000 239.836000 525.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 239.812000 537.136000 243.640000 525.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 243.712000 537.136000 247.540000 525.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 247.708000 537.136000 251.512000 525.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 251.704000 537.136000 255.532000 525.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 255.508000 537.136000 263.236000 525.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 263.404000 537.136000 267.208000 525.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 267.400000 537.136000 274.168000 525.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 274.204000 537.136000 281.296000 525.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 281.308000 537.136000 287.044000 525.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 287.008000 537.136000 293.776000 525.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 294.004000 537.136000 297.808000 525.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 298.000000 537.136000 305.680000 525.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 305.704000 537.136000 312.928000 525.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 312.904000 537.136000 320.128000 525.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 320.104000 537.136000 327.784000 525.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 327.904000 537.136000 331.708000 525.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.900000 537.136000 338.620000 525.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 338.596000 537.136000 345.820000 525.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 345.796000 537.136000 353.524000 525.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 353.596000 537.136000 361.276000 525.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 361.300000 537.136000 365.128000 525.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 365.104000 537.136000 369.916000 525.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 369.904000 537.136000 373.732000 525.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 373.804000 537.136000 381.028000 525.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 381.004000 537.136000 388.732000 525.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 388.708000 537.136000 392.512000 525.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 392.704000 537.136000 396.508000 525.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 396.904000 537.136000 404.056000 525.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 403.900000 537.136000 411.628000 525.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 411.604000 537.136000 419.284000 525.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 419.404000 537.136000 423.208000 525.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.400000 537.136000 427.228000 525.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 427.204000 537.136000 434.884000 525.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 434.908000 537.136000 442.000000 525.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 442.108000 537.136000 449.260000 525.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 449.308000 537.136000 453.136000 525.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 453.208000 537.136000 457.012000 525.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 457.408000 537.136000 461.848000 525.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 461.704000 537.136000 468.928000 525.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 468.904000 537.136000 474.640000 525.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.808000 537.136000 478.612000 525.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.804000 537.136000 482.632000 525.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 482.608000 537.136000 489.700000 525.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 489.712000 537.136000 493.540000 525.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 493.612000 537.136000 499.768000 525.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 537.136000 504.044000 525.136000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 523.236000 193.228000 511.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 193.204000 523.236000 198.940000 511.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.904000 523.236000 205.996000 511.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 206.008000 523.236000 209.836000 511.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 209.812000 523.236000 216.580000 511.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 216.616000 523.236000 220.420000 511.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 220.420000 523.236000 228.100000 511.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 228.124000 523.236000 233.860000 511.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 233.824000 523.236000 237.652000 511.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 237.628000 523.236000 244.396000 511.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 244.432000 523.236000 251.524000 511.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 251.536000 523.236000 257.692000 511.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 257.740000 523.236000 261.544000 511.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 261.544000 523.236000 268.696000 511.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 268.744000 523.236000 272.572000 511.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 272.548000 523.236000 279.772000 511.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 279.748000 523.236000 287.476000 511.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 287.452000 523.236000 295.132000 511.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 295.156000 523.236000 298.960000 511.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 298.960000 523.236000 303.772000 511.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 303.760000 523.236000 311.488000 511.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 311.464000 523.236000 318.556000 511.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 318.568000 523.236000 322.372000 511.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.372000 523.236000 329.092000 511.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 329.068000 523.236000 336.292000 511.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 336.268000 523.236000 343.420000 511.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 343.468000 523.236000 349.624000 511.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 349.672000 523.236000 354.484000 511.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 354.472000 523.236000 358.276000 511.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 485.448000 83.028000 469.448000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 82.996000 485.448000 88.468000 469.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.500000 485.448000 96.388000 469.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 96.404000 485.448000 105.924000 469.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 105.908000 485.448000 113.556000 469.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.508000 485.448000 119.076000 469.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.108000 485.448000 130.036000 469.448000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 130.004000 485.448000 135.476000 469.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 135.508000 485.448000 146.500000 469.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 146.516000 485.448000 157.508000 469.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 157.524000 485.448000 165.412000 469.448000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 460.836000 193.492000 448.836000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 460.836000 201.232000 448.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 460.836000 208.300000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 208.804000 460.836000 212.608000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 213.208000 460.836000 217.648000 448.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 217.612000 460.836000 223.348000 448.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 223.408000 460.836000 230.632000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 230.704000 460.836000 238.432000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 238.408000 460.836000 243.220000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 243.808000 460.836000 247.612000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 248.212000 460.836000 255.892000 448.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 255.916000 460.836000 263.140000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 263.116000 460.836000 270.340000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 270.316000 460.836000 276.052000 448.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 276.616000 460.836000 280.420000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 281.020000 460.836000 288.244000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 288.220000 460.836000 295.900000 448.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 295.924000 460.836000 303.016000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 303.028000 460.836000 310.756000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 310.732000 460.836000 316.888000 448.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 317.536000 460.836000 321.340000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 321.940000 460.836000 326.752000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 326.740000 460.836000 333.964000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 334.540000 460.836000 338.344000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 338.944000 460.836000 346.096000 448.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 346.648000 460.836000 350.452000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.052000 460.836000 355.864000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 355.948000 460.836000 359.776000 448.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 359.752000 460.836000 363.580000 448.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 363.556000 460.836000 370.648000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 370.660000 460.836000 378.340000 448.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 378.856000 460.836000 382.660000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.260000 460.836000 390.352000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 390.364000 460.836000 398.092000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 398.068000 460.836000 402.880000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 402.964000 460.836000 408.700000 448.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 408.664000 460.836000 415.816000 448.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 415.768000 460.836000 423.496000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 423.568000 460.836000 430.288000 448.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 430.264000 460.836000 437.356000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 437.368000 460.836000 447.628000 448.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 447.664000 460.836000 454.816000 448.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.864000 460.836000 461.632000 448.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 459.964000 460.836000 463.768000 448.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.464000 460.836000 468.268000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 468.868000 460.836000 478.696000 448.836000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 478.672000 460.836000 483.484000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 483.568000 460.836000 491.296000 448.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 491.272000 460.836000 498.364000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 498.376000 460.836000 504.112000 448.836000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 460.836000 507.904000 448.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 446.936000 190.312000 434.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 446.936000 198.028000 434.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 446.936000 205.252000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 205.204000 446.936000 212.932000 434.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 214.000000 446.936000 217.804000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 219.004000 446.936000 226.156000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.604000 446.936000 232.408000 434.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 232.500000 446.936000 239.220000 434.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 239.196000 446.936000 246.420000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 246.396000 446.936000 253.548000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 253.596000 446.936000 258.408000 434.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 259.596000 446.936000 263.400000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 264.600000 446.936000 270.336000 434.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 270.300000 446.936000 277.452000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 277.500000 446.936000 284.220000 434.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 284.196000 446.936000 291.456000 434.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 292.596000 446.936000 296.400000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 297.600000 446.936000 304.752000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 304.800000 446.936000 312.528000 434.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 312.504000 446.936000 320.184000 434.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 321.408000 446.936000 325.212000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.412000 446.936000 333.564000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 334.716000 446.936000 338.520000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.720000 446.936000 344.160000 434.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 344.124000 446.936000 351.216000 434.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 351.228000 446.936000 361.488000 434.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 362.724000 446.936000 366.528000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 367.728000 446.936000 375.408000 434.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 375.432000 446.936000 379.260000 434.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 379.236000 446.936000 386.388000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 386.436000 446.936000 394.164000 434.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 394.140000 446.936000 398.952000 434.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 398.940000 446.936000 405.096000 434.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 406.236000 446.936000 410.040000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 411.240000 446.936000 415.680000 434.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 415.644000 446.936000 422.868000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 422.940000 446.936000 428.676000 434.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 429.840000 446.936000 433.644000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 434.844000 446.936000 442.524000 434.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 442.548000 446.936000 449.640000 434.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 449.652000 446.936000 456.372000 434.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 456.348000 446.936000 463.572000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 463.548000 446.936000 469.284000 434.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 469.344000 446.936000 476.496000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 476.448000 446.936000 481.260000 434.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 481.248000 446.936000 485.076000 434.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 485.148000 446.936000 492.372000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 492.348000 446.936000 500.076000 434.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 500.052000 446.936000 503.856000 434.936000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 446.936000 507.904000 434.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 433.036000 190.312000 421.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 433.036000 198.028000 421.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.004000 433.036000 205.096000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 205.108000 433.036000 210.844000 421.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 210.808000 433.036000 217.900000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 217.912000 433.036000 221.716000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 221.716000 433.036000 225.544000 421.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 225.520000 433.036000 231.676000 421.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 231.724000 433.036000 239.452000 421.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 239.428000 433.036000 242.716000 421.036000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 242.728000 433.036000 247.540000 421.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 247.528000 433.036000 251.332000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 251.332000 433.036000 262.708000 421.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 262.732000 433.036000 270.460000 421.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 270.436000 433.036000 277.156000 421.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 277.132000 433.036000 284.860000 421.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 284.836000 433.036000 288.640000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.640000 433.036000 295.732000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 295.744000 433.036000 299.572000 421.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 299.548000 433.036000 305.704000 421.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 305.752000 433.036000 312.844000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 312.856000 433.036000 316.660000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.660000 433.036000 321.472000 421.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 321.460000 433.036000 328.684000 421.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 328.660000 433.036000 332.464000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 332.464000 433.036000 338.620000 421.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 338.668000 433.036000 345.760000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 345.772000 433.036000 352.864000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 352.876000 433.036000 356.680000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 356.680000 433.036000 364.408000 421.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 364.384000 433.036000 371.476000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 371.488000 433.036000 377.224000 421.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 377.188000 433.036000 384.280000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 384.292000 433.036000 388.096000 421.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 413.136000 190.240000 401.136000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 190.204000 413.136000 197.932000 401.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 198.604000 413.136000 202.408000 401.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 203.008000 413.136000 207.820000 401.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 207.808000 413.136000 215.536000 401.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 215.608000 413.136000 222.700000 401.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 223.204000 413.136000 227.008000 401.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 227.800000 413.136000 235.528000 401.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 235.504000 413.136000 242.656000 401.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 242.608000 413.136000 246.436000 401.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 246.412000 413.136000 250.240000 401.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 250.312000 413.136000 260.572000 401.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 260.512000 413.136000 267.664000 401.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 267.712000 413.136000 274.480000 401.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 272.908000 413.136000 276.712000 401.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 277.312000 413.136000 281.116000 401.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 281.716000 413.136000 285.544000 401.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 285.520000 413.136000 290.332000 401.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 291.016000 413.136000 294.820000 401.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 295.516000 413.136000 303.196000 401.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 303.220000 413.136000 310.312000 401.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 310.324000 413.136000 318.004000 401.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 318.028000 413.136000 321.856000 401.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 321.832000 413.136000 329.560000 401.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 329.536000 413.136000 335.692000 401.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 336.340000 413.136000 340.144000 401.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 340.744000 413.136000 345.556000 401.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 345.544000 413.136000 352.768000 401.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 353.440000 413.136000 357.244000 401.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.940000 413.136000 365.620000 401.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 365.644000 413.136000 372.736000 401.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 372.748000 413.136000 377.560000 401.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 378.148000 413.136000 381.952000 401.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 382.552000 413.136000 389.704000 401.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 390.352000 413.136000 394.156000 401.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 394.852000 413.136000 402.532000 401.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 402.556000 413.136000 406.384000 401.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 406.360000 413.136000 411.172000 401.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 411.760000 413.136000 415.564000 401.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 416.164000 413.136000 427.540000 401.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 427.564000 413.136000 434.788000 401.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 434.764000 413.136000 440.500000 401.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 440.464000 413.136000 447.556000 401.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 448.264000 413.136000 452.068000 401.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 452.764000 413.136000 456.592000 401.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 456.568000 413.136000 464.296000 401.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 464.368000 413.136000 469.180000 401.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 469.168000 413.136000 476.260000 401.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 476.272000 413.136000 482.008000 401.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 481.972000 413.136000 489.064000 401.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 489.076000 413.136000 495.232000 401.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 495.280000 413.136000 500.092000 401.136000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.100000 413.136000 504.144000 401.136000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 399.236000 189.328000 387.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 189.304000 399.236000 197.032000 387.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 197.104000 399.236000 204.784000 387.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 204.700000 399.236000 208.504000 387.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 209.500000 399.236000 213.304000 387.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 214.204000 399.236000 223.012000 387.236000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 223.000000 399.236000 230.224000 387.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 230.200000 399.236000 235.012000 387.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 235.096000 399.236000 242.824000 387.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 243.700000 399.236000 247.504000 387.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 248.404000 399.236000 258.664000 387.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 258.700000 399.236000 265.852000 387.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 265.804000 399.236000 269.632000 387.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 269.704000 399.236000 273.532000 387.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 273.508000 399.236000 279.664000 387.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 280.504000 399.236000 284.308000 387.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.304000 399.236000 292.456000 387.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 292.504000 399.236000 298.240000 387.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 298.204000 399.236000 305.296000 387.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 306.208000 399.236000 310.012000 387.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.912000 399.236000 314.740000 387.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 314.716000 399.236000 318.544000 387.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 318.520000 399.236000 326.248000 387.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 326.224000 399.236000 333.316000 387.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 333.328000 399.236000 341.008000 387.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 342.028000 399.236000 345.832000 387.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 346.732000 399.236000 356.992000 387.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 357.028000 399.236000 360.856000 387.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 360.832000 399.236000 365.644000 387.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 365.632000 399.236000 373.360000 387.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 374.236000 399.236000 378.040000 387.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 378.940000 399.236000 386.092000 387.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 387.040000 399.236000 390.844000 387.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.744000 399.236000 398.464000 387.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 398.440000 399.236000 405.664000 387.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 405.640000 399.236000 409.468000 387.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 409.540000 399.236000 413.368000 387.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 413.344000 399.236000 420.436000 387.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 420.448000 399.236000 427.168000 387.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 427.144000 399.236000 431.956000 387.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 432.040000 399.236000 435.868000 387.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 435.844000 399.236000 443.068000 387.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 443.044000 399.236000 450.772000 387.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 451.744000 399.236000 455.548000 387.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.448000 399.236000 463.672000 387.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 463.648000 399.236000 468.088000 387.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 468.952000 399.236000 472.756000 387.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 473.752000 399.236000 485.128000 387.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 485.056000 399.236000 492.280000 387.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 492.352000 399.236000 500.032000 387.236000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 399.236000 504.044000 387.236000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 385.336000 192.592000 373.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 192.604000 385.336000 198.340000 373.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.304000 385.336000 206.032000 373.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 207.208000 385.336000 211.012000 373.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 212.212000 385.336000 219.364000 373.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 219.412000 385.336000 225.148000 373.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 225.112000 385.336000 229.924000 373.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 231.016000 385.336000 234.820000 373.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 236.020000 385.336000 240.460000 373.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 240.424000 385.336000 246.160000 373.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 246.220000 385.336000 253.444000 373.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 253.420000 385.336000 264.796000 373.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 265.924000 385.336000 269.728000 373.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.928000 385.336000 278.080000 373.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 278.128000 385.336000 283.864000 373.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 283.828000 385.336000 288.640000 373.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 288.628000 385.336000 292.456000 373.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 292.528000 385.336000 298.684000 373.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 298.624000 385.336000 303.436000 373.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 303.424000 385.336000 309.580000 373.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 310.720000 385.336000 314.524000 373.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 315.724000 385.336000 321.880000 373.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 321.928000 385.336000 329.656000 373.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 329.632000 385.336000 336.352000 373.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 336.328000 385.336000 344.056000 373.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 345.124000 385.336000 348.928000 373.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 350.224000 385.336000 357.376000 373.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 357.424000 385.336000 363.580000 373.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 364.624000 385.336000 368.428000 373.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 369.628000 385.336000 378.292000 373.336000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 378.328000 385.336000 386.056000 373.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 386.032000 385.336000 393.712000 373.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 393.736000 385.336000 400.504000 373.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 401.536000 385.336000 405.340000 373.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 406.636000 385.336000 418.960000 373.336000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 417.832000 385.336000 424.984000 373.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 425.032000 385.336000 430.768000 373.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 430.732000 385.336000 438.460000 373.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 438.532000 385.336000 445.756000 373.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 445.732000 385.336000 449.560000 373.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 450.628000 385.336000 454.432000 373.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 455.632000 385.336000 462.784000 373.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 462.832000 385.336000 470.560000 373.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 470.536000 385.336000 478.216000 373.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 479.332000 385.336000 483.136000 373.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.336000 385.336000 489.148000 373.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.136000 385.336000 496.864000 373.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.936000 385.336000 504.028000 373.336000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 385.336000 507.904000 373.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 371.436000 189.328000 359.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 189.304000 371.436000 193.132000 359.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 193.204000 371.436000 200.464000 359.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 200.404000 371.436000 207.496000 359.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 207.508000 371.436000 211.312000 359.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 213.112000 371.436000 216.916000 359.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 218.716000 371.436000 227.380000 359.436000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 227.416000 371.436000 235.144000 359.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.920000 371.436000 240.724000 359.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 242.524000 371.436000 249.616000 359.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 249.628000 371.436000 256.384000 359.436000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 256.432000 371.436000 261.244000 359.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 261.232000 371.436000 266.968000 359.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 266.932000 371.436000 274.084000 359.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 274.132000 371.436000 280.900000 359.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 280.936000 371.436000 288.088000 359.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 288.040000 371.436000 295.720000 359.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 295.744000 371.436000 302.896000 359.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 302.944000 371.436000 310.672000 359.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 310.648000 371.436000 315.460000 359.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 317.152000 371.436000 320.956000 359.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.756000 371.436000 326.584000 359.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 326.560000 371.436000 330.388000 359.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 330.460000 371.436000 338.140000 359.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 338.164000 371.436000 345.892000 359.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 345.868000 371.436000 350.680000 359.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 350.668000 371.436000 354.496000 359.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 354.472000 371.436000 362.200000 359.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 362.272000 371.436000 369.952000 359.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 371.776000 371.436000 375.580000 359.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.380000 371.436000 383.536000 359.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 383.584000 371.436000 390.352000 359.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 390.280000 371.436000 396.436000 359.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 396.484000 371.436000 401.296000 359.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 401.284000 371.436000 408.376000 359.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 408.388000 371.436000 419.764000 359.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 421.492000 371.436000 425.296000 359.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 427.096000 371.436000 434.776000 359.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 434.800000 371.436000 440.536000 359.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 440.500000 371.436000 447.724000 359.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 447.700000 371.436000 454.468000 359.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 454.504000 371.436000 458.332000 359.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 458.404000 371.436000 466.084000 359.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 466.000000 371.436000 473.092000 359.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 473.104000 371.436000 479.260000 359.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 481.108000 371.436000 484.912000 359.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 486.712000 371.436000 491.152000 359.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 491.116000 371.436000 498.340000 359.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 498.412000 371.436000 504.148000 359.436000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 371.436000 508.004000 359.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 357.536000 190.312000 345.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 357.536000 198.028000 345.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 357.536000 205.192000 345.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 206.200000 357.536000 210.004000 345.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 211.096000 357.536000 218.248000 345.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 218.296000 357.536000 225.976000 345.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 225.892000 357.536000 233.572000 345.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 233.596000 357.536000 239.332000 345.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 239.392000 357.536000 246.616000 345.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 246.496000 357.536000 254.176000 345.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 254.200000 357.536000 259.936000 345.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 259.996000 357.536000 263.824000 345.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 263.800000 357.536000 270.952000 345.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 271.000000 357.536000 275.812000 345.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 275.800000 357.536000 282.892000 345.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 283.900000 357.536000 287.704000 345.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.796000 357.536000 295.948000 345.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 295.996000 357.536000 300.808000 345.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 300.796000 357.536000 312.172000 345.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 312.196000 357.536000 319.420000 345.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 319.396000 357.536000 325.552000 345.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 325.492000 357.536000 333.172000 345.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 333.196000 357.536000 340.924000 345.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 340.900000 357.536000 347.992000 345.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 348.100000 357.536000 353.836000 345.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 353.800000 357.536000 360.892000 345.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.904000 357.536000 364.708000 345.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.704000 357.536000 369.508000 345.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.600000 357.536000 381.064000 345.536000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 381.100000 357.536000 388.252000 345.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 388.204000 357.536000 392.032000 345.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 392.104000 357.536000 396.544000 345.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 396.508000 357.536000 406.768000 345.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 406.804000 357.536000 413.956000 345.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 413.908000 357.536000 420.676000 345.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 421.708000 357.536000 425.512000 345.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.604000 357.536000 431.416000 345.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 431.500000 357.536000 438.724000 345.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 439.696000 357.536000 443.500000 345.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 444.592000 357.536000 449.404000 345.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 449.392000 357.536000 457.120000 345.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 457.192000 357.536000 464.284000 345.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 465.196000 357.536000 469.000000 345.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.200000 357.536000 474.028000 345.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 474.004000 357.536000 477.832000 345.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 477.808000 357.536000 484.576000 345.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 484.612000 357.536000 488.440000 345.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 488.416000 357.536000 496.144000 345.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 496.120000 357.536000 503.800000 345.536000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 357.536000 507.904000 345.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 343.636000 191.236000 331.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 191.200000 343.636000 198.424000 331.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 198.496000 343.636000 205.720000 331.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 205.696000 343.636000 217.072000 331.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 217.096000 343.636000 220.900000 331.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 221.092000 343.636000 224.896000 331.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 225.088000 343.636000 232.240000 331.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 232.384000 343.636000 236.188000 331.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 236.488000 343.636000 244.120000 331.636000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 244.084000 343.636000 251.716000 331.636000 1.000000 0.000000 0.000000 1.000000 0
+drawChar 251.788000 343.636000 259.420000 331.636000 1.000000 0.000000 0.000000 1.000000 0
+drawChar 259.588000 343.636000 263.392000 331.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 263.584000 343.636000 270.352000 331.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 270.388000 343.636000 277.480000 331.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 277.492000 343.636000 284.644000 331.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 284.596000 343.636000 290.332000 331.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 290.596000 343.636000 294.400000 331.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 294.592000 343.636000 301.816000 331.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 301.792000 343.636000 305.620000 331.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 305.692000 343.636000 313.372000 331.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 313.492000 343.636000 317.296000 331.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.488000 343.636000 324.208000 331.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 324.184000 343.636000 329.920000 331.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 329.980000 343.636000 336.748000 331.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 336.676000 343.636000 342.832000 331.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 342.880000 343.636000 347.692000 331.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 347.680000 343.636000 354.832000 331.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 354.880000 343.636000 358.708000 331.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 358.876000 343.636000 362.680000 331.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.872000 343.636000 374.248000 331.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 374.272000 343.636000 378.100000 331.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 378.172000 343.636000 383.908000 331.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 383.872000 343.636000 389.608000 331.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 389.668000 343.636000 396.892000 331.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 396.868000 343.636000 402.604000 331.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 402.772000 343.636000 406.576000 331.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 406.768000 343.636000 413.920000 331.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 413.968000 343.636000 420.688000 331.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 420.664000 343.636000 427.384000 331.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 427.360000 343.636000 434.452000 331.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 434.464000 343.636000 442.192000 331.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 442.168000 343.636000 446.980000 331.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 446.968000 343.636000 454.696000 331.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 454.768000 343.636000 461.920000 331.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 461.872000 343.636000 466.684000 331.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 466.768000 343.636000 473.860000 331.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 473.872000 343.636000 480.028000 331.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 480.172000 343.636000 483.976000 331.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.168000 343.636000 488.980000 331.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.064000 343.636000 496.792000 331.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.768000 343.636000 503.860000 331.636000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 343.636000 507.904000 331.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 329.736000 191.656000 317.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 329.736000 196.516000 317.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 196.504000 329.736000 203.656000 317.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 203.704000 329.736000 209.440000 317.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 209.404000 329.736000 216.664000 317.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 216.700000 329.736000 220.504000 317.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 220.504000 329.736000 227.224000 317.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 227.200000 329.736000 234.424000 317.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 234.400000 329.736000 242.128000 317.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 242.104000 329.736000 246.916000 317.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 246.904000 329.736000 252.640000 317.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 252.604000 329.736000 259.756000 317.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 259.804000 329.736000 265.960000 317.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 266.008000 329.736000 270.820000 317.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 270.808000 329.736000 274.612000 317.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 274.612000 329.736000 279.424000 317.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 279.412000 329.736000 286.636000 317.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 286.612000 329.736000 290.416000 317.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 290.416000 329.736000 295.228000 317.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 295.216000 329.736000 302.944000 317.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 302.920000 329.736000 310.012000 317.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 310.024000 329.736000 313.828000 317.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 313.828000 329.736000 321.892000 317.736000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 321.424000 329.736000 328.648000 317.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 328.624000 329.736000 336.304000 317.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 336.328000 329.736000 340.372000 317.736000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 340.432000 329.736000 347.584000 317.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 347.632000 329.736000 353.368000 317.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 353.332000 329.736000 358.144000 317.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 358.132000 329.736000 361.936000 317.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.936000 329.736000 365.740000 317.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 309.836000 193.816000 297.836000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 193.204000 309.836000 200.428000 297.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 200.404000 309.836000 208.132000 297.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 208.108000 309.836000 213.844000 297.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 214.108000 309.836000 217.912000 297.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 218.104000 309.836000 222.916000 297.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 222.904000 309.836000 230.056000 297.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 230.104000 309.836000 233.932000 297.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 233.908000 309.836000 237.736000 297.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 237.904000 309.836000 241.708000 297.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 242.008000 309.836000 249.160000 297.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 249.208000 309.836000 254.944000 297.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 254.908000 309.836000 261.628000 297.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 261.712000 309.836000 269.440000 297.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 269.416000 309.836000 279.676000 297.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 279.712000 309.836000 286.864000 297.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 286.912000 309.836000 293.680000 297.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 293.608000 309.836000 299.764000 297.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 299.908000 309.836000 303.712000 297.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 304.012000 309.836000 311.236000 297.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 311.212000 309.836000 318.892000 297.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 318.916000 309.836000 326.008000 297.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 326.020000 309.836000 333.748000 297.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 333.916000 309.836000 337.720000 297.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 338.020000 309.836000 345.748000 297.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 345.724000 309.836000 353.404000 297.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 353.620000 309.836000 357.424000 297.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.616000 309.836000 362.428000 297.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 362.512000 309.836000 369.736000 297.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 369.916000 309.836000 373.720000 297.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.020000 309.836000 378.832000 297.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 378.820000 309.836000 386.548000 297.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 386.620000 309.836000 393.712000 297.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 393.820000 309.836000 397.624000 297.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 397.924000 309.836000 404.692000 297.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 404.620000 309.836000 411.772000 297.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 411.820000 309.836000 417.556000 297.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 417.520000 309.836000 421.348000 297.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 421.324000 309.836000 428.548000 297.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 428.620000 309.836000 436.348000 297.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 436.324000 309.836000 442.480000 297.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 442.720000 309.836000 446.524000 297.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.824000 309.836000 452.560000 297.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 452.524000 309.836000 459.748000 297.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 459.820000 309.836000 467.044000 297.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 467.020000 309.836000 478.396000 297.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 478.420000 309.836000 484.576000 297.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 484.720000 309.836000 488.524000 297.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.716000 309.836000 495.940000 297.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 496.012000 309.836000 503.740000 297.836000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 309.836000 507.904000 297.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 295.936000 190.312000 283.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 295.936000 198.028000 283.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 295.936000 205.192000 283.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 205.804000 295.936000 209.608000 283.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 210.304000 295.936000 217.984000 283.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 217.900000 295.936000 223.636000 283.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 223.600000 295.936000 230.824000 283.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 230.896000 295.936000 238.624000 283.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 238.600000 295.936000 246.328000 283.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 246.400000 295.936000 254.080000 283.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 254.704000 295.936000 258.508000 283.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 259.900000 295.936000 267.892000 283.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 267.304000 295.936000 274.528000 283.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 274.504000 295.936000 281.728000 283.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 281.800000 295.936000 287.536000 283.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 286.204000 295.936000 290.008000 283.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 290.500000 295.936000 294.304000 283.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 295.096000 295.936000 303.088000 283.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 303.100000 295.936000 310.828000 283.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 310.804000 295.936000 317.896000 283.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 318.604000 295.936000 322.408000 283.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 323.104000 295.936000 330.832000 283.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 330.808000 295.936000 337.960000 283.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 338.008000 295.936000 341.836000 283.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 341.812000 295.936000 345.640000 283.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 345.712000 295.936000 355.972000 283.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 355.912000 295.936000 363.064000 283.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 363.112000 295.936000 369.880000 283.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 370.516000 295.936000 374.320000 283.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 375.016000 295.936000 382.108000 283.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 382.120000 295.936000 389.848000 283.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 389.824000 295.936000 397.504000 283.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 397.528000 295.936000 403.684000 283.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 404.428000 295.936000 408.232000 283.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 408.928000 295.936000 416.080000 283.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 416.128000 295.936000 420.940000 283.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 421.528000 295.936000 425.332000 283.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.028000 295.936000 430.840000 283.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 430.828000 295.936000 438.556000 283.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 438.628000 295.936000 445.720000 283.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 446.332000 295.936000 450.136000 283.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 450.832000 295.936000 455.272000 283.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 455.236000 295.936000 462.460000 283.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 462.532000 295.936000 469.756000 283.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 469.732000 295.936000 474.544000 283.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 475.132000 295.936000 478.936000 283.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 479.728000 295.936000 486.952000 283.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 486.928000 295.936000 491.368000 283.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 492.028000 295.936000 495.832000 283.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 496.528000 295.936000 503.680000 283.936000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 295.936000 508.004000 283.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 282.036000 195.760000 270.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 195.796000 282.036000 203.020000 270.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 202.996000 282.036000 210.220000 270.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 210.196000 282.036000 217.876000 270.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 217.900000 282.036000 224.992000 270.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 225.004000 282.036000 232.732000 270.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 235.204000 282.036000 239.008000 270.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.600000 282.036000 247.756000 270.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 247.804000 282.036000 255.484000 270.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 255.400000 282.036000 259.228000 270.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 259.300000 282.036000 265.036000 270.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 265.096000 282.036000 272.248000 270.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 272.296000 282.036000 276.124000 270.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 278.692000 282.036000 282.496000 270.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.088000 282.036000 291.244000 270.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 291.292000 282.036000 296.104000 270.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 295.996000 282.036000 303.148000 270.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 303.196000 282.036000 307.024000 270.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 307.000000 282.036000 312.736000 270.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 312.700000 282.036000 319.420000 270.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 319.396000 282.036000 326.548000 270.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 326.692000 282.036000 332.848000 270.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 332.896000 282.036000 339.988000 270.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 340.000000 282.036000 343.804000 270.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 346.204000 282.036000 350.008000 270.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 352.600000 282.036000 362.860000 270.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 362.896000 282.036000 370.624000 270.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 370.600000 282.036000 374.428000 270.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 374.404000 282.036000 381.124000 270.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 381.208000 282.036000 388.936000 270.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 391.504000 282.036000 395.308000 270.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 397.900000 282.036000 401.728000 270.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 401.704000 282.036000 408.796000 270.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 408.808000 282.036000 415.960000 270.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 416.008000 282.036000 423.688000 270.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 423.712000 282.036000 429.868000 270.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 432.412000 282.036000 436.216000 270.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.808000 282.036000 446.536000 270.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 446.512000 282.036000 454.192000 270.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 456.808000 282.036000 460.612000 270.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 463.204000 282.036000 468.016000 270.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 468.004000 282.036000 475.228000 270.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 477.808000 282.036000 481.612000 270.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.204000 282.036000 489.016000 270.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.004000 282.036000 496.732000 270.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.804000 282.036000 503.896000 270.036000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 282.036000 507.904000 270.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 268.136000 191.656000 256.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 268.136000 198.796000 256.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 198.808000 268.136000 205.528000 256.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 205.504000 268.136000 212.728000 256.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 212.704000 268.136000 220.432000 256.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 220.408000 268.136000 228.088000 256.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 228.112000 268.136000 231.916000 256.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 231.916000 268.136000 239.908000 256.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 239.920000 268.136000 247.144000 256.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 247.120000 268.136000 254.344000 256.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 254.320000 268.136000 260.056000 256.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 258.724000 268.136000 262.528000 256.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.528000 268.136000 266.332000 256.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 236.392000 81.018000 222.392000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 81.004000 236.392000 85.792000 222.392000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 85.806000 236.392000 94.920000 222.392000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 94.906000 236.392000 99.694000 222.392000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 99.708000 236.392000 109.662000 222.392000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.704000 236.392000 119.714000 222.392000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 119.700000 236.392000 124.572000 222.392000 1.000000 0.000000 0.000000 1.000000
+drawChar 124.600000 236.392000 135.380000 222.392000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 135.394000 236.392000 145.012000 222.392000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 144.998000 236.392000 154.616000 222.392000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 154.602000 236.392000 169.176000 222.392000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 214.136000 195.604000 202.136000 1.000000 0.000000 0.000000 1.000000 U
+drawChar 195.604000 214.136000 203.284000 202.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 203.308000 214.136000 210.532000 202.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 210.508000 214.136000 218.236000 202.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 219.808000 214.136000 223.612000 202.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 225.412000 214.136000 232.504000 202.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 232.516000 214.136000 240.244000 202.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 240.220000 214.136000 245.032000 202.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 245.116000 214.136000 252.208000 202.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 252.220000 214.136000 257.956000 202.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 257.920000 214.136000 261.748000 202.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 261.724000 214.136000 269.452000 202.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 269.524000 214.136000 277.204000 202.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 278.728000 214.136000 282.532000 202.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.224000 214.136000 289.036000 202.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 289.024000 214.136000 296.752000 202.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 296.824000 214.136000 303.916000 202.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 305.524000 214.136000 309.328000 202.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 311.020000 214.136000 314.848000 202.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 314.824000 214.136000 318.652000 202.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 318.724000 214.136000 325.492000 202.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 325.528000 214.136000 329.356000 202.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 329.332000 214.136000 337.060000 202.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 337.036000 214.136000 344.716000 202.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 346.336000 214.136000 350.140000 202.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.832000 214.136000 357.568000 202.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 357.532000 214.136000 364.756000 202.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 364.828000 214.136000 372.052000 202.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 372.028000 214.136000 383.404000 202.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 383.428000 214.136000 387.232000 202.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 388.828000 214.136000 392.632000 202.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 394.324000 214.136000 399.136000 202.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 399.124000 214.136000 406.852000 202.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 406.924000 214.136000 414.016000 202.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 415.528000 214.136000 419.332000 202.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 422.632000 214.136000 430.624000 202.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 429.136000 214.136000 434.872000 202.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 434.836000 214.136000 440.992000 202.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 441.040000 214.136000 445.852000 202.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 447.436000 214.136000 451.240000 202.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 452.932000 214.136000 457.744000 202.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 457.732000 214.136000 465.460000 202.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 465.532000 214.136000 469.360000 202.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 469.336000 214.136000 477.064000 202.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 477.040000 214.136000 484.720000 202.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 486.340000 214.136000 490.144000 202.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 491.836000 214.136000 496.648000 202.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 496.636000 214.136000 503.860000 202.136000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 214.136000 507.904000 202.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 200.236000 192.220000 188.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 192.196000 200.236000 199.348000 188.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 199.396000 200.236000 204.208000 188.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 204.196000 200.236000 210.916000 188.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 210.892000 200.236000 218.620000 188.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 219.088000 200.236000 222.892000 188.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 223.492000 200.236000 228.304000 188.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 228.292000 200.236000 236.020000 188.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 236.092000 200.236000 243.184000 188.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 243.592000 200.236000 247.396000 188.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.888000 200.236000 254.980000 188.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 254.992000 200.236000 261.760000 188.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 261.796000 200.236000 268.888000 188.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 269.392000 200.236000 273.196000 188.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.688000 200.236000 277.516000 188.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 277.492000 200.236000 283.648000 188.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 284.188000 200.236000 287.992000 188.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.484000 200.236000 295.636000 188.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 296.188000 200.236000 299.992000 188.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 300.484000 200.236000 304.924000 188.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 304.888000 200.236000 312.616000 188.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 312.688000 200.236000 316.516000 188.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 316.492000 200.236000 320.320000 188.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 320.296000 200.236000 324.340000 188.236000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 324.400000 200.236000 330.556000 188.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 330.604000 200.236000 334.432000 188.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 334.408000 200.236000 340.720000 188.236000 1.000000 0.000000 0.000000 1.000000 z
+drawChar 340.708000 200.236000 347.800000 188.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 348.808000 200.236000 352.612000 188.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 352.600000 200.236000 360.280000 188.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 360.304000 200.236000 367.456000 188.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 367.408000 200.236000 375.136000 188.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 375.208000 200.236000 382.432000 188.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 382.408000 200.236000 388.144000 188.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.108000 200.236000 395.260000 188.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 395.308000 200.236000 406.684000 188.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 406.708000 200.236000 413.860000 188.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 414.304000 200.236000 418.108000 188.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 418.600000 200.236000 428.860000 188.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 428.896000 200.236000 432.724000 188.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 432.700000 200.236000 440.428000 188.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 440.404000 200.236000 448.084000 188.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 448.108000 200.236000 455.332000 188.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 455.308000 200.236000 465.568000 188.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 464.212000 200.236000 468.016000 188.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.508000 200.236000 472.312000 188.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 472.804000 200.236000 481.468000 188.236000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 481.300000 200.236000 485.128000 188.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 485.104000 200.236000 491.260000 188.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 491.308000 200.236000 495.136000 188.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 495.112000 200.236000 499.924000 188.236000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 200.236000 504.044000 188.236000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 186.336000 192.724000 174.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 192.700000 186.336000 198.436000 174.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.496000 186.336000 204.652000 174.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 205.192000 186.336000 208.996000 174.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 209.692000 186.336000 216.844000 174.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 216.892000 186.336000 222.628000 174.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 222.592000 186.336000 229.684000 174.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 230.296000 186.336000 234.100000 174.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 234.796000 186.336000 241.948000 174.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 241.996000 186.336000 245.824000 174.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 245.800000 186.336000 256.060000 174.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 256.096000 186.336000 263.248000 174.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 263.296000 186.336000 270.064000 174.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 269.992000 186.336000 276.148000 174.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 276.796000 186.336000 280.600000 174.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 281.296000 186.336000 285.124000 174.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 285.100000 186.336000 296.476000 174.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 296.500000 186.336000 304.180000 174.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 304.204000 186.336000 309.940000 174.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 309.904000 186.336000 316.996000 174.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 317.008000 186.336000 323.164000 174.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 323.212000 186.336000 329.368000 174.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 329.416000 186.336000 336.508000 174.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 336.520000 186.336000 344.200000 174.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 344.716000 186.336000 348.520000 174.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 349.312000 186.336000 356.992000 174.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 356.908000 186.336000 363.676000 174.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 364.312000 186.336000 368.116000 174.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.812000 186.336000 373.624000 174.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 373.708000 186.336000 381.436000 174.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 381.412000 186.336000 388.504000 174.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 389.116000 186.336000 392.920000 174.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.616000 186.336000 401.296000 174.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 401.320000 186.336000 407.056000 174.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 407.020000 186.336000 414.172000 174.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 414.220000 186.336000 421.948000 174.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 421.924000 186.336000 429.604000 174.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 429.628000 186.336000 433.456000 174.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 433.432000 186.336000 440.656000 174.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 440.632000 186.336000 446.788000 174.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 446.836000 186.336000 453.928000 174.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 454.540000 186.336000 458.344000 174.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.040000 186.336000 465.808000 174.336000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 465.844000 186.336000 469.672000 174.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 469.648000 186.336000 476.740000 174.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 476.752000 186.336000 487.012000 174.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 487.648000 186.336000 491.452000 174.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 492.148000 186.336000 499.372000 174.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 499.444000 186.336000 503.884000 174.336000 1.000000 0.000000 0.000000 1.000000 f
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 186.336000 507.904000 174.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 172.436000 190.312000 160.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 172.436000 198.028000 160.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.004000 172.436000 205.096000 160.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 205.108000 172.436000 208.912000 160.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 208.912000 172.436000 217.720000 160.436000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 217.708000 172.436000 224.860000 160.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 224.908000 172.436000 231.676000 160.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 231.712000 172.436000 235.516000 160.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 235.516000 172.436000 240.328000 160.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 240.316000 172.436000 248.044000 160.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 248.020000 172.436000 255.112000 160.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 255.124000 172.436000 258.928000 160.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.928000 172.436000 269.188000 160.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 269.224000 172.436000 273.052000 160.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 273.028000 172.436000 280.756000 160.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 280.732000 172.436000 288.412000 160.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 288.436000 172.436000 295.660000 160.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 295.636000 172.436000 305.896000 160.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 305.932000 172.436000 309.736000 160.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 309.736000 172.436000 316.960000 160.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 316.936000 172.436000 325.456000 160.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 325.432000 172.436000 332.524000 160.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 332.536000 172.436000 338.272000 160.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 338.236000 172.436000 344.392000 160.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.440000 172.436000 348.244000 160.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.244000 172.436000 352.048000 160.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 463.300000 86.136000 471.364000 74.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 470.800000 86.136000 477.952000 74.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 478.000000 86.136000 485.680000 74.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 485.704000 86.136000 492.796000 74.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 492.808000 86.136000 496.612000 74.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 496.600000 86.136000 504.232000 74.136000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 1909.200000 0 477.900000 1909.200000 0 477.900000 2219.000000 0 134.300000 2219.000000 0 134.300000 1909.200000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -111730.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -1079.900000 0 168.100000 -1079.900000 0 168.100000 -1074.900000 0 76.900000 -1074.900000 0 76.900000 -1079.900000 0
+eoFillPath subpath 1 163.100000 -1075.000000 0 168.100000 -1075.000000 0 168.100000 -944.400000 0 163.100000 -944.400000 0 163.100000 -1075.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -1074.900000 0 163.100000 -1074.900000 0 163.100000 -939.500000 0 72.000000 -939.500000 0 72.000000 -1074.900000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 -943.820000 87.320000 -953.820000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 -943.820000 93.420000 -953.820000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 -943.820000 97.510000 -953.820000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 -943.820000 101.420000 -953.820000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 -943.820000 104.170000 -953.820000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 -943.820000 110.530000 -953.820000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 -943.820000 113.270000 -953.820000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 -943.820000 116.470000 -953.820000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 -943.820000 123.480000 -953.820000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 -943.820000 129.610000 -953.820000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 -943.820000 135.090000 -953.820000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 -943.820000 140.890000 -953.820000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 -943.820000 144.820000 -953.820000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 -943.820000 150.920000 -953.820000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 -943.820000 153.670000 -953.820000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 -943.820000 156.470000 -953.820000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -1070.700000 0 168.200000 -1070.700000 0 168.200000 -955.500000 0 72.000000 -955.500000 0 72.000000 -1070.700000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1002.548000 79.253000 -1011.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 -1002.548000 86.669000 -1011.548000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 -1002.548000 90.215000 -1011.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 -1002.548000 93.077000 -1011.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 -1002.548000 97.406000 -1011.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 -1002.548000 100.853000 -1011.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 -1002.548000 107.324000 -1011.548000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 -1002.548000 112.337000 -1011.548000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 -1002.548000 115.271000 -1011.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 -1002.548000 118.655000 -1011.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 -1002.548000 126.512000 -1011.548000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 -1002.548000 130.805000 -1011.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 -1002.548000 135.881000 -1011.548000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 -1002.548000 139.355000 -1011.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 -1002.548000 147.284000 -1011.548000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 -1002.548000 150.074000 -1011.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 -1002.548000 155.897000 -1011.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 -1002.548000 158.750000 -1011.548000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -1002.548000 161.853000 -1011.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1013.048000 82.124000 -1022.048000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 -1013.048000 87.137000 -1022.048000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 -1013.048000 90.071000 -1022.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 -1013.048000 93.356000 -1022.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 -1013.048000 100.403000 -1022.048000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 -1013.048000 104.921000 -1022.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 -1013.048000 109.205000 -1022.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 -1013.048000 117.737000 -1022.048000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 -1013.048000 123.119000 -1022.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 -1013.048000 128.996000 -1022.048000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 -1013.048000 132.605000 -1022.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 -1013.048000 138.392000 -1022.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 -1013.048000 141.749000 -1022.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 -1013.048000 149.507000 -1022.048000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 -1013.048000 153.800000 -1022.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 -1013.048000 158.876000 -1022.048000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -1013.048000 161.853000 -1022.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1023.548000 81.764000 -1032.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -1023.548000 87.596000 -1032.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 -1023.548000 93.356000 -1032.548000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 -1023.548000 102.050000 -1032.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 -1023.548000 113.822000 -1032.548000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 -1023.548000 122.651000 -1032.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 -1023.548000 134.117000 -1032.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 -1023.548000 138.401000 -1032.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 -1023.548000 147.149000 -1032.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 -1023.548000 158.921000 -1032.548000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -1023.548000 161.853000 -1032.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1034.048000 79.271000 -1043.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -1034.048000 84.338000 -1043.048000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 -1034.048000 89.621000 -1043.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 -1034.048000 94.643000 -1043.048000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 -1034.048000 100.502000 -1043.048000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 -1034.048000 106.262000 -1043.048000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 -1034.048000 111.518000 -1043.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 -1034.048000 116.216000 -1043.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 -1034.048000 119.249000 -1043.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 -1034.048000 122.363000 -1043.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 -1034.048000 128.186000 -1043.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 -1034.048000 131.345000 -1043.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 -1034.048000 137.060000 -1043.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 -1034.048000 140.147000 -1043.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 -1034.048000 145.007000 -1043.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 -1034.048000 148.598000 -1043.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 -1034.048000 151.460000 -1043.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 -1034.048000 155.789000 -1043.048000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 -1034.048000 158.933000 -1043.048000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1044.548000 80.702000 -1053.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 -1044.548000 83.573000 -1053.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 -1044.548000 89.396000 -1053.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 -1044.548000 95.156000 -1053.548000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 -1044.548000 100.547000 -1053.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 -1044.548000 109.052000 -1053.548000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 -1044.548000 111.959000 -1053.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 -1044.548000 117.251000 -1053.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 -1044.548000 121.904000 -1053.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 -1044.548000 126.503000 -1053.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 -1044.548000 129.338000 -1053.548000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 -1044.548000 134.936000 -1053.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 -1044.548000 143.441000 -1053.548000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 -1044.548000 148.796000 -1053.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 -1044.548000 154.574000 -1053.548000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 -1044.548000 158.876000 -1053.548000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -1044.548000 161.853000 -1053.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1055.048000 79.271000 -1064.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -1055.048000 85.094000 -1064.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -1055.048000 88.703000 -1064.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 -1055.048000 94.112000 -1064.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 -1055.048000 97.244000 -1064.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 -1055.048000 103.058000 -1064.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 -1055.048000 108.890000 -1064.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 -1055.048000 111.950000 -1064.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 -1055.048000 115.271000 -1064.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 -1055.048000 120.338000 -1064.048000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 -1055.048000 125.621000 -1064.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 -1055.048000 131.363000 -1064.048000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 -1055.048000 134.558000 -1064.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 -1055.048000 140.048000 -1064.048000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 -1055.048000 145.430000 -1064.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 -1055.048000 150.551000 -1064.048000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 -1055.048000 155.960000 -1064.048000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 -1055.048000 158.933000 -1064.048000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1065.548000 80.009000 -1074.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -1065.548000 85.364000 -1074.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 -1065.548000 88.271000 -1074.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 -1065.548000 91.169000 -1074.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 -1065.548000 97.955000 -1074.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 -1065.548000 107.765000 -1074.548000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 -1065.548000 110.672000 -1074.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 -1065.548000 115.964000 -1074.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 -1065.548000 120.617000 -1074.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 -1065.548000 125.216000 -1074.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 -1065.548000 128.051000 -1074.548000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 -1065.548000 134.954000 -1074.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 -1065.548000 146.285000 -1074.548000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 -1065.548000 151.667000 -1074.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 -1065.548000 155.906000 -1074.548000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 -1065.548000 159.033000 -1074.548000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -1075.000000 0 72.100000 -1075.000000 0 72.100000 -939.500000 0 72.000000 -939.500000 0 72.000000 -1075.000000 0
+eoFillPath subpath 1 163.100000 -1075.000000 0 163.200000 -1075.000000 0 163.200000 -939.500000 0 163.100000 -939.500000 0 163.100000 -1075.000000 0
+eoFillPath subpath 1 72.000000 -939.600000 0 163.200000 -939.600000 0 163.200000 -939.500000 0 72.000000 -939.500000 0 72.000000 -939.600000 0
+eoFillPath subpath 1 72.000000 -1075.000000 0 163.200000 -1075.000000 0 163.200000 -1074.900000 0 72.000000 -1074.900000 0 72.000000 -1075.000000 0
+saveState
+eoClipPath subpath 1 96.900000 -999.700000 0 138.300000 -999.700000 0 138.300000 -955.500000 0 96.900000 -955.500000 0 96.900000 -999.700000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 179160.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -1354.500000 0 165.500000 -1354.500000 0 165.500000 -1349.500000 0 76.900000 -1349.500000 0 76.900000 -1354.500000 0
+eoFillPath subpath 1 160.500000 -1349.600000 0 165.500000 -1349.600000 0 165.500000 -1193.300000 0 160.500000 -1193.300000 0 160.500000 -1349.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -1349.500000 0 121.400000 -1349.500000 0 121.400000 -1188.400000 0 72.000000 -1188.400000 0 72.000000 -1349.500000 0
+saveState
+eoClipPath subpath 1 72.000000 -1349.500000 0 160.500000 -1349.500000 0 160.500000 -1188.400000 0 72.000000 -1188.400000 0 72.000000 -1349.500000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 215860.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 -1192.720000 89.280000 -1202.720000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 -1192.720000 95.630000 -1202.720000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 -1192.720000 99.520000 -1202.720000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 -1192.720000 102.270000 -1202.720000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 -1192.720000 108.450000 -1202.720000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 -1192.720000 112.610000 -1202.720000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 -1192.720000 118.510000 -1202.720000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 -1192.720000 121.670000 -1202.720000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 -1192.720000 124.470000 -1202.720000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 -1192.720000 130.830000 -1202.720000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 -1192.720000 133.970000 -1202.720000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 -1192.720000 137.920000 -1202.720000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 -1192.720000 144.230000 -1202.720000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 -1192.720000 150.350000 -1202.720000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 -1192.720000 153.570000 -1202.720000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 -1204.420000 95.000000 -1214.420000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 -1204.420000 97.770000 -1214.420000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 -1204.420000 103.000000 -1214.420000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 -1204.420000 109.330000 -1214.420000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 -1204.420000 117.470000 -1214.420000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 -1204.420000 123.620000 -1214.420000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 -1204.420000 128.800000 -1214.420000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 -1204.420000 135.130000 -1214.420000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 -1204.420000 141.250000 -1214.420000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 -1204.420000 145.410000 -1214.420000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1219.248000 82.961000 -1228.248000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 -1219.248000 87.614000 -1228.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 -1219.248000 93.356000 -1228.248000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 -1219.248000 98.612000 -1228.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 -1219.248000 103.733000 -1228.248000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 -1219.248000 106.568000 -1228.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 -1219.248000 111.959000 -1228.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 -1219.248000 114.866000 -1228.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 -1219.248000 117.665000 -1228.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 -1219.248000 122.768000 -1228.248000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 -1219.248000 125.747000 -1228.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 -1219.248000 131.651000 -1228.248000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 -1219.248000 136.907000 -1228.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 -1219.248000 142.307000 -1228.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 -1219.248000 148.049000 -1228.248000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 -1219.248000 150.956000 -1228.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 -1219.248000 156.302000 -1228.248000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1219.248000 159.253000 -1228.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1229.748000 84.095000 -1238.748000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -1229.748000 89.900000 -1238.748000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 -1229.748000 95.318000 -1238.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 -1229.748000 100.349000 -1238.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 -1229.748000 110.789000 -1238.748000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 -1229.748000 111.464000 -1238.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 -1229.748000 114.362000 -1238.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 -1229.748000 119.348000 -1238.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 -1229.748000 126.962000 -1238.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 -1229.748000 132.047000 -1238.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 -1229.748000 139.958000 -1238.748000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 -1229.748000 142.865000 -1238.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 -1229.748000 147.410000 -1238.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 -1229.748000 153.287000 -1238.748000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -1229.748000 156.333000 -1238.748000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1240.248000 84.095000 -1249.248000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -1240.248000 89.468000 -1249.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 -1240.248000 94.121000 -1249.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 -1240.248000 99.899000 -1249.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 -1240.248000 105.218000 -1249.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 -1240.248000 109.502000 -1249.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 -1240.248000 115.649000 -1249.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 -1240.248000 122.327000 -1249.248000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 -1240.248000 127.718000 -1249.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 -1240.248000 132.002000 -1249.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 -1240.248000 138.149000 -1249.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 -1240.248000 145.205000 -1249.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 -1240.248000 150.992000 -1249.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 -1240.248000 156.311000 -1249.248000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1240.248000 159.253000 -1249.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1250.748000 82.394000 -1259.748000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 -1250.748000 86.705000 -1259.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 -1250.748000 91.322000 -1259.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 -1250.748000 94.913000 -1259.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 -1250.748000 98.054000 -1259.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 -1250.748000 102.014000 -1259.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 -1250.748000 104.876000 -1259.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 -1250.748000 113.435000 -1259.748000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 -1250.748000 118.718000 -1259.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 -1250.748000 121.949000 -1259.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 -1250.748000 125.063000 -1259.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 -1250.748000 130.886000 -1259.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 -1250.748000 134.045000 -1259.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 -1250.748000 138.005000 -1259.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 -1250.748000 143.792000 -1259.748000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 -1250.748000 149.111000 -1259.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 -1250.748000 151.964000 -1259.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 -1250.748000 156.293000 -1259.748000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -1250.748000 159.153000 -1259.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1261.248000 79.271000 -1270.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 -1261.248000 82.169000 -1270.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 -1261.248000 85.526000 -1270.248000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 -1261.248000 90.818000 -1270.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 -1261.248000 94.454000 -1270.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 -1261.248000 99.008000 -1270.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 -1261.248000 104.318000 -1270.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 -1261.248000 110.096000 -1270.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 -1261.248000 115.856000 -1270.248000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 -1261.248000 119.546000 -1270.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 -1261.248000 124.001000 -1270.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 -1261.248000 129.509000 -1270.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 -1261.248000 133.145000 -1270.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 -1261.248000 139.751000 -1270.248000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 -1261.248000 145.205000 -1270.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 -1261.248000 148.841000 -1270.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 -1261.248000 152.657000 -1270.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 -1261.248000 156.293000 -1270.248000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1261.248000 159.253000 -1270.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1271.748000 84.095000 -1280.748000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -1271.748000 88.406000 -1280.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 -1271.748000 93.824000 -1280.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 -1271.748000 99.602000 -1280.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 -1271.748000 105.362000 -1280.748000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 -1271.748000 108.422000 -1280.748000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 -1271.748000 116.747000 -1280.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 -1271.748000 129.275000 -1280.748000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 -1271.748000 135.089000 -1280.748000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 -1271.748000 138.698000 -1280.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 -1271.748000 141.560000 -1280.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 -1271.748000 146.906000 -1280.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -1271.748000 151.190000 -1280.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 -1271.748000 156.266000 -1280.748000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1271.748000 159.253000 -1280.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1282.248000 82.196000 -1291.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 -1282.248000 87.560000 -1291.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 -1282.248000 92.213000 -1291.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 -1282.248000 96.551000 -1291.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 -1282.248000 101.708000 -1291.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 -1282.248000 107.216000 -1291.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 -1282.248000 111.653000 -1291.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 -1282.248000 118.961000 -1291.248000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 -1282.248000 124.316000 -1291.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 -1282.248000 128.654000 -1291.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 -1282.248000 133.172000 -1291.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 -1282.248000 138.995000 -1291.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 -1282.248000 143.612000 -1291.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 -1282.248000 148.913000 -1291.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 -1282.248000 153.197000 -1291.248000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -1282.248000 156.333000 -1291.248000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1292.748000 80.009000 -1301.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -1292.748000 85.319000 -1301.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 -1292.748000 91.061000 -1301.748000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 -1292.748000 100.052000 -1301.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 -1292.748000 113.993000 -1301.748000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 -1292.748000 116.873000 -1301.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 -1292.748000 120.410000 -1301.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 -1292.748000 126.296000 -1301.748000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 -1292.748000 135.350000 -1301.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 -1292.748000 145.106000 -1301.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 -1292.748000 150.893000 -1301.748000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 -1292.748000 156.212000 -1301.748000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1292.748000 159.253000 -1301.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1303.248000 82.196000 -1312.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 -1303.248000 87.560000 -1312.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 -1303.248000 93.392000 -1312.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 -1303.248000 99.152000 -1312.248000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 -1303.248000 101.960000 -1312.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 -1303.248000 107.306000 -1312.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 -1303.248000 111.905000 -1312.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 -1303.248000 115.640000 -1312.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 -1303.248000 122.444000 -1312.248000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 -1303.248000 127.898000 -1312.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 -1303.248000 135.575000 -1312.248000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 -1303.248000 141.380000 -1312.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 -1303.248000 145.241000 -1312.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 -1303.248000 150.803000 -1312.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 -1303.248000 156.302000 -1312.248000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1303.248000 159.253000 -1312.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1313.748000 80.009000 -1322.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -1313.748000 85.796000 -1322.748000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 -1313.748000 91.115000 -1322.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 -1313.748000 95.399000 -1322.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 -1313.748000 100.718000 -1322.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 -1313.748000 107.054000 -1322.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 -1313.748000 118.097000 -1322.748000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 -1313.748000 123.524000 -1322.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 -1313.748000 129.401000 -1322.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 -1313.748000 131.768000 -1322.748000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 -1313.748000 135.413000 -1322.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 -1313.748000 141.659000 -1322.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 -1313.748000 150.965000 -1322.748000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 -1313.748000 156.320000 -1322.748000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1313.748000 159.253000 -1322.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1324.248000 81.017000 -1333.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 -1324.248000 84.608000 -1333.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 -1324.248000 89.963000 -1333.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 -1324.248000 92.870000 -1333.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 -1324.248000 98.693000 -1333.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 -1324.248000 103.310000 -1333.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 -1324.248000 107.243000 -1333.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 -1324.248000 116.081000 -1333.248000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 -1324.248000 121.886000 -1333.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 -1324.248000 127.205000 -1333.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 -1324.248000 132.983000 -1333.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 -1324.248000 136.943000 -1333.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 -1324.248000 143.846000 -1333.248000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 -1324.248000 148.184000 -1333.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 -1324.248000 153.260000 -1333.248000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -1324.248000 156.433000 -1333.248000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1334.748000 79.271000 -1343.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -1334.748000 85.094000 -1343.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -1334.748000 90.854000 -1343.748000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 -1334.748000 93.653000 -1343.748000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -1349.600000 0 72.100000 -1349.600000 0 72.100000 -1188.400000 0 72.000000 -1188.400000 0 72.000000 -1349.600000 0
+eoFillPath subpath 1 160.500000 -1349.600000 0 160.600000 -1349.600000 0 160.600000 -1188.400000 0 160.500000 -1188.400000 0 160.500000 -1349.600000 0
+eoFillPath subpath 1 72.000000 -1188.500000 0 160.600000 -1188.500000 0 160.600000 -1188.400000 0 72.000000 -1188.400000 0 72.000000 -1188.500000 0
+eoFillPath subpath 1 72.000000 -1349.600000 0 160.600000 -1349.600000 0 160.600000 -1349.500000 0 72.000000 -1349.500000 0 72.000000 -1349.600000 0
+saveState
+eoClipPath subpath 1 108.000000 -1837.000000 0 178.900000 -1837.000000 0 178.900000 -1780.300000 0 108.000000 -1780.300000 0 108.000000 -1837.000000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 262890.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -5895.300000 0 165.500000 -5895.300000 0 165.500000 -5890.300000 0 76.900000 -5890.300000 0 76.900000 -5895.300000 0
+eoFillPath subpath 1 160.500000 -5890.400000 0 165.500000 -5890.400000 0 165.500000 -5781.600000 0 160.500000 -5781.600000 0 160.500000 -5890.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -5890.300000 0 160.500000 -5890.300000 0 160.500000 -5776.700000 0 72.000000 -5776.700000 0 72.000000 -5890.300000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5781.048000 83.771000 -5790.048000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 -5781.048000 89.594000 -5790.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 -5781.048000 92.465000 -5790.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 -5781.048000 97.568000 -5790.048000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 -5781.048000 100.943000 -5790.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 -5781.048000 106.955000 -5790.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 -5781.048000 110.447000 -5790.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 -5781.048000 114.425000 -5790.048000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 -5781.048000 119.717000 -5790.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 -5781.048000 127.493000 -5790.048000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 -5781.048000 130.949000 -5790.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 -5781.048000 136.574000 -5790.048000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 -5781.048000 141.920000 -5790.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 -5781.048000 147.365000 -5790.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 -5781.048000 151.703000 -5790.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 -5781.048000 156.320000 -5790.048000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -5781.048000 159.153000 -5790.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5791.548000 81.764000 -5800.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -5791.548000 85.130000 -5800.548000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 -5791.548000 88.712000 -5800.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 -5791.548000 94.022000 -5800.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 -5791.548000 98.306000 -5800.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -5791.548000 102.455000 -5800.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 -5791.548000 106.676000 -5800.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 -5791.548000 110.312000 -5800.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 -5791.548000 114.920000 -5800.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 -5791.548000 119.060000 -5800.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 -5791.548000 125.450000 -5800.548000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 -5791.548000 130.832000 -5800.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 -5791.548000 139.445000 -5800.548000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 -5791.548000 145.169000 -5800.548000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 -5791.548000 148.076000 -5800.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 -5791.548000 153.323000 -5800.548000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -5791.548000 156.433000 -5800.548000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5802.048000 80.009000 -5811.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -5802.048000 82.871000 -5811.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 -5802.048000 88.316000 -5811.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 -5802.048000 94.094000 -5811.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 -5802.048000 96.947000 -5811.048000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 -5802.048000 104.948000 -5811.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 -5802.048000 113.705000 -5811.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 -5802.048000 119.492000 -5811.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 -5802.048000 124.811000 -5811.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 -5802.048000 132.848000 -5811.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 -5802.048000 141.605000 -5811.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 -5802.048000 144.467000 -5811.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 -5802.048000 148.103000 -5811.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 -5802.048000 150.965000 -5811.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 -5802.048000 156.311000 -5811.048000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -5802.048000 159.253000 -5811.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5812.548000 80.999000 -5821.548000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 -5812.548000 90.539000 -5821.548000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 -5812.548000 95.318000 -5821.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 -5812.548000 99.602000 -5821.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -5812.548000 102.473000 -5821.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 -5812.548000 108.260000 -5821.548000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 -5812.548000 110.762000 -5821.548000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 -5812.548000 115.316000 -5821.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 -5812.548000 122.156000 -5821.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 -5812.548000 132.299000 -5821.548000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 -5812.548000 136.970000 -5821.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 -5812.548000 139.877000 -5821.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 -5812.548000 142.775000 -5821.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 -5812.548000 148.022000 -5821.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 -5812.548000 152.720000 -5821.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 -5812.548000 156.311000 -5821.548000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -5812.548000 159.253000 -5821.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5823.048000 83.006000 -5832.048000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 -5823.048000 88.793000 -5832.048000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 -5823.048000 91.664000 -5832.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 -5823.048000 94.562000 -5832.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 -5823.048000 100.349000 -5832.048000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 -5823.048000 103.157000 -5832.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 -5823.048000 108.980000 -5832.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 -5823.048000 114.740000 -5832.048000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 -5823.048000 119.375000 -5832.048000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 -5823.048000 128.033000 -5832.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 -5823.048000 141.479000 -5832.048000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 -5823.048000 146.807000 -5832.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -5823.048000 152.684000 -5832.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 -5823.048000 156.293000 -5832.048000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -5823.048000 159.253000 -5832.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5833.548000 79.730000 -5842.548000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 -5833.548000 84.005000 -5842.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 -5833.548000 89.423000 -5842.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 -5833.548000 98.036000 -5842.548000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 -5833.548000 121.157000 -5842.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 -5833.548000 145.115000 -5842.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 -5833.548000 151.001000 -5842.548000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 -5833.548000 156.320000 -5842.548000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -5833.548000 159.253000 -5842.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5844.048000 83.285000 -5853.048000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 -5844.048000 89.099000 -5853.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 -5844.048000 93.401000 -5853.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 -5844.048000 98.477000 -5853.048000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 -5844.048000 103.121000 -5853.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 -5844.048000 105.974000 -5853.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 -5844.048000 111.320000 -5853.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 -5844.048000 115.604000 -5853.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 -5844.048000 123.857000 -5853.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 -5844.048000 136.007000 -5853.048000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 -5844.048000 141.794000 -5853.048000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 -5844.048000 144.665000 -5853.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 -5844.048000 147.464000 -5853.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 -5844.048000 153.251000 -5853.048000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -5844.048000 156.433000 -5853.048000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5854.548000 79.271000 -5863.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -5854.548000 85.094000 -5863.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -5854.548000 90.854000 -5863.548000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 -5854.548000 96.146000 -5863.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 -5854.548000 102.302000 -5863.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 -5854.548000 107.711000 -5863.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 -5854.548000 113.048000 -5863.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 -5854.548000 119.204000 -5863.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 -5854.548000 124.991000 -5863.548000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 -5854.548000 130.310000 -5863.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 -5854.548000 135.647000 -5863.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 -5854.548000 144.755000 -5863.548000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 -5854.548000 153.323000 -5863.548000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -5854.548000 156.333000 -5863.548000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5865.048000 82.160000 -5874.048000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 -5865.048000 85.067000 -5874.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 -5865.048000 89.297000 -5874.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 -5865.048000 94.616000 -5874.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 -5865.048000 98.747000 -5874.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 -5865.048000 106.055000 -5874.048000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 -5865.048000 109.700000 -5874.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 -5865.048000 115.055000 -5874.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 -5865.048000 118.601000 -5874.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 -5865.048000 124.010000 -5874.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 -5865.048000 128.042000 -5874.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 -5865.048000 135.998000 -5874.048000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 -5865.048000 141.785000 -5874.048000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 -5865.048000 144.656000 -5874.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 -5865.048000 147.554000 -5874.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 -5865.048000 153.341000 -5874.048000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -5865.048000 156.433000 -5874.048000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5875.548000 79.271000 -5884.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -5875.548000 85.094000 -5884.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -5875.548000 90.854000 -5884.548000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 -5875.548000 93.743000 -5884.548000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -5890.400000 0 72.100000 -5890.400000 0 72.100000 -5776.700000 0 72.000000 -5776.700000 0 72.000000 -5890.400000 0
+eoFillPath subpath 1 160.500000 -5890.400000 0 160.600000 -5890.400000 0 160.600000 -5776.700000 0 160.500000 -5776.700000 0 160.500000 -5890.400000 0
+eoFillPath subpath 1 72.000000 -5776.800000 0 160.600000 -5776.800000 0 160.600000 -5776.700000 0 72.000000 -5776.700000 0 72.000000 -5776.800000 0
+eoFillPath subpath 1 72.000000 -5890.400000 0 160.600000 -5890.400000 0 160.600000 -5890.300000 0 72.000000 -5890.300000 0 72.000000 -5890.400000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 299.100000 0 169.600000 299.100000 0 169.600000 304.100000 0 76.900000 304.100000 0 76.900000 299.100000 0
+eoFillPath subpath 1 164.600000 304.000000 0 169.600000 304.000000 0 169.600000 419.600000 0 164.600000 419.600000 0 164.600000 304.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 304.100000 0 121.400000 304.100000 0 121.400000 424.500000 0 72.000000 424.500000 0 72.000000 304.100000 0
+saveState
+eoClipPath subpath 1 72.000000 304.100000 0 164.600000 304.100000 0 164.600000 424.500000 0 72.000000 424.500000 0 72.000000 304.100000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 374.000000 0 93.700000 374.000000 0 93.700000 393.200000 0 72.000000 393.200000 0 72.000000 374.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 374.000000 0 169.600000 374.000000 0 169.600000 393.200000 0 93.700000 393.200000 0 93.700000 374.000000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 357.300000 0 93.700000 357.300000 0 93.700000 374.000000 0 72.000000 374.000000 0 72.000000 357.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 357.300000 0 169.600000 357.300000 0 169.600000 374.000000 0 93.700000 374.000000 0 93.700000 357.300000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 338.100000 0 93.700000 338.100000 0 93.700000 357.300000 0 72.000000 357.300000 0 72.000000 338.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 338.100000 0 169.600000 338.100000 0 169.600000 357.300000 0 93.700000 357.300000 0 93.700000 338.100000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 318.900000 0 93.700000 318.900000 0 93.700000 338.100000 0 72.000000 338.100000 0 72.000000 318.900000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 318.900000 0 169.600000 318.900000 0 169.600000 338.100000 0 93.700000 338.100000 0 93.700000 318.900000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 420.152000 82.898000 411.152000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 420.152000 87.200000 411.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 420.152000 90.809000 411.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 420.152000 93.671000 411.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 420.152000 98.315000 411.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 420.152000 101.906000 411.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 420.152000 106.514000 411.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 420.152000 109.754000 411.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 420.152000 112.868000 411.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 420.152000 118.691000 411.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 420.152000 121.850000 411.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 420.152000 125.702000 411.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 420.152000 131.588000 411.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 420.152000 136.907000 411.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 420.152000 140.039000 411.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 420.152000 146.078000 411.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 420.152000 151.442000 411.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 420.152000 154.349000 411.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 420.152000 157.148000 411.152000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 420.152000 160.433000 411.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 409.652000 84.095000 400.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 409.652000 89.468000 400.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 409.652000 94.580000 400.652000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 409.652000 97.631000 400.652000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 389.252000 104.443000 380.252000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 389.252000 109.060000 380.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 389.252000 113.398000 380.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 389.252000 119.194000 380.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 389.252000 124.612000 380.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 389.252000 127.465000 380.252000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 372.552000 101.176000 363.552000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 372.552000 104.074000 363.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 372.552000 109.420000 363.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 372.552000 114.442000 363.552000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 372.552000 120.202000 363.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 372.552000 123.811000 363.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 372.552000 129.121000 363.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 372.552000 134.899000 363.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 372.552000 139.516000 363.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 372.552000 143.107000 363.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 372.552000 148.417000 363.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 372.552000 151.270000 363.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 372.552000 157.093000 363.552000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 355.852000 103.048000 346.852000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 355.852000 108.421000 346.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 355.852000 113.443000 346.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 355.852000 118.852000 346.852000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 355.852000 124.702000 346.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 355.852000 130.021000 346.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 355.852000 135.079000 346.852000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 336.652000 104.407000 327.652000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 336.652000 109.816000 327.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 336.652000 115.594000 327.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 336.652000 121.354000 327.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 336.652000 125.692000 327.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 336.652000 128.563000 327.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 336.652000 133.954000 327.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 336.652000 139.786000 327.652000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 304.000000 0 72.100000 304.000000 0 72.100000 424.500000 0 72.000000 424.500000 0 72.000000 304.000000 0
+eoFillPath subpath 1 164.600000 304.000000 0 164.700000 304.000000 0 164.700000 424.500000 0 164.600000 424.500000 0 164.600000 304.000000 0
+eoFillPath subpath 1 72.000000 424.400000 0 164.700000 424.400000 0 164.700000 424.500000 0 72.000000 424.500000 0 72.000000 424.400000 0
+eoFillPath subpath 1 72.000000 304.000000 0 164.700000 304.000000 0 164.700000 304.100000 0 72.000000 304.100000 0 72.000000 304.000000 0
+eoFillPath subpath 1 91.300000 318.900000 0 93.700000 318.900000 0 93.700000 393.200000 0 91.300000 393.200000 0 91.300000 318.900000 0
+eoFillPath subpath 1 72.000000 338.100000 0 169.600000 338.100000 0 169.600000 340.500000 0 72.000000 340.500000 0 72.000000 338.100000 0
+eoFillPath subpath 1 72.000000 390.800000 0 169.600000 390.800000 0 169.600000 393.200000 0 72.000000 393.200000 0 72.000000 390.800000 0
+eoFillPath subpath 1 72.000000 318.900000 0 169.600000 318.900000 0 169.600000 321.300000 0 72.000000 321.300000 0 72.000000 318.900000 0
+saveState
+eoClipPath subpath 1 108.000000 -7547.000000 0 150.800000 -7547.000000 0 150.800000 -7502.800000 0 108.000000 -7502.800000 0 108.000000 -7547.000000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 833900.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -8397.000000 0 499.600000 -8397.000000 0 499.600000 -8391.900000 0 186.800000 -8391.900000 0 186.800000 -8397.000000 0
+eoFillPath subpath 1 494.500000 -8392.000000 0 499.600000 -8392.000000 0 499.600000 -8203.600000 0 494.500000 -8203.600000 0 494.500000 -8392.000000 0
+saveState
+eoClipPath subpath 1 181.800000 -8392.000000 0 494.500000 -8392.000000 0 494.500000 -8198.600000 0 181.800000 -8198.600000 0 181.800000 -8392.000000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -8198.500000 0 494.500000 -8198.500000 0 494.500000 -8198.500000 0 181.700000 -8198.500000 0
+eoFillPath subpath 1 181.700000 -8198.500000 0 494.500000 -8198.500000 0 494.500000 -8199.300000 0 181.700000 -8199.300000 0 181.700000 -8198.500000 0
+eoFillPath subpath 1 181.700000 -8199.300000 0 494.500000 -8199.300000 0 494.500000 -8200.000000 0 181.700000 -8200.000000 0 181.700000 -8199.300000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -8200.000000 0 494.500000 -8200.000000 0 494.500000 -8200.800000 0 181.700000 -8200.800000 0 181.700000 -8200.000000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -8200.800000 0 494.500000 -8200.800000 0 494.500000 -8201.600000 0 181.700000 -8201.600000 0 181.700000 -8200.800000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -8201.600000 0 494.500000 -8201.600000 0 494.500000 -8202.300000 0 181.700000 -8202.300000 0 181.700000 -8201.600000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -8202.300000 0 494.500000 -8202.300000 0 494.500000 -8203.100000 0 181.700000 -8203.100000 0 181.700000 -8202.300000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -8203.100000 0 494.500000 -8203.100000 0 494.500000 -8203.800000 0 181.700000 -8203.800000 0 181.700000 -8203.100000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -8203.800000 0 494.500000 -8203.800000 0 494.500000 -8204.600000 0 181.700000 -8204.600000 0 181.700000 -8203.800000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -8204.600000 0 494.500000 -8204.600000 0 494.500000 -8205.300000 0 181.700000 -8205.300000 0 181.700000 -8204.600000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -8205.300000 0 494.500000 -8205.300000 0 494.500000 -8206.100000 0 181.700000 -8206.100000 0 181.700000 -8205.300000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -8206.100000 0 494.500000 -8206.100000 0 494.500000 -8206.900000 0 181.700000 -8206.900000 0 181.700000 -8206.100000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -8206.900000 0 494.500000 -8206.900000 0 494.500000 -8207.600000 0 181.700000 -8207.600000 0 181.700000 -8206.900000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -8207.600000 0 494.500000 -8207.600000 0 494.500000 -8208.400000 0 181.700000 -8208.400000 0 181.700000 -8207.600000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -8208.400000 0 494.500000 -8208.400000 0 494.500000 -8209.100000 0 181.700000 -8209.100000 0 181.700000 -8208.400000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -8209.100000 0 494.500000 -8209.100000 0 494.500000 -8209.900000 0 181.700000 -8209.900000 0 181.700000 -8209.100000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -8209.900000 0 494.500000 -8209.900000 0 494.500000 -8210.700000 0 181.700000 -8210.700000 0 181.700000 -8209.900000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -8210.700000 0 494.500000 -8210.700000 0 494.500000 -8211.400000 0 181.700000 -8211.400000 0 181.700000 -8210.700000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -8211.400000 0 494.500000 -8211.400000 0 494.500000 -8212.200000 0 181.700000 -8212.200000 0 181.700000 -8211.400000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -8212.200000 0 494.500000 -8212.200000 0 494.500000 -8212.900000 0 181.700000 -8212.900000 0 181.700000 -8212.200000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -8212.900000 0 494.500000 -8212.900000 0 494.500000 -8213.700000 0 181.700000 -8213.700000 0 181.700000 -8212.900000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -8213.700000 0 494.500000 -8213.700000 0 494.500000 -8214.500000 0 181.700000 -8214.500000 0 181.700000 -8213.700000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -8214.500000 0 494.500000 -8214.500000 0 494.500000 -8215.200000 0 181.700000 -8215.200000 0 181.700000 -8214.500000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -8215.200000 0 494.500000 -8215.200000 0 494.500000 -8216.000000 0 181.700000 -8216.000000 0 181.700000 -8215.200000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -8216.000000 0 494.500000 -8216.000000 0 494.500000 -8216.700000 0 181.700000 -8216.700000 0 181.700000 -8216.000000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -8216.700000 0 494.500000 -8216.700000 0 494.500000 -8217.500000 0 181.700000 -8217.500000 0 181.700000 -8216.700000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -8217.500000 0 494.500000 -8217.500000 0 494.500000 -8218.200000 0 181.700000 -8218.200000 0 181.700000 -8217.500000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -8218.200000 0 494.500000 -8218.200000 0 494.500000 -8219.000000 0 181.700000 -8219.000000 0 181.700000 -8218.200000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -8219.000000 0 494.500000 -8219.000000 0 494.500000 -8219.800000 0 181.700000 -8219.800000 0 181.700000 -8219.000000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -8219.800000 0 494.500000 -8219.800000 0 494.500000 -8220.500000 0 181.700000 -8220.500000 0 181.700000 -8219.800000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -8220.500000 0 494.500000 -8220.500000 0 494.500000 -8221.300000 0 181.700000 -8221.300000 0 181.700000 -8220.500000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -8221.300000 0 494.500000 -8221.300000 0 494.500000 -8222.000000 0 181.700000 -8222.000000 0 181.700000 -8221.300000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -8222.000000 0 494.500000 -8222.000000 0 494.500000 -8222.800000 0 181.700000 -8222.800000 0 181.700000 -8222.000000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -8222.800000 0 494.500000 -8222.800000 0 494.500000 -8223.600000 0 181.700000 -8223.600000 0 181.700000 -8222.800000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -8223.600000 0 494.500000 -8223.600000 0 494.500000 -8224.300000 0 181.700000 -8224.300000 0 181.700000 -8223.600000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -8224.300000 0 494.500000 -8224.300000 0 494.500000 -8225.100000 0 181.700000 -8225.100000 0 181.700000 -8224.300000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -8225.100000 0 494.500000 -8225.100000 0 494.500000 -8225.800000 0 181.700000 -8225.800000 0 181.700000 -8225.100000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -8225.800000 0 494.500000 -8225.800000 0 494.500000 -8226.600000 0 181.700000 -8226.600000 0 181.700000 -8225.800000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -8226.600000 0 494.500000 -8226.600000 0 494.500000 -8227.400000 0 181.700000 -8227.400000 0 181.700000 -8226.600000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -8227.400000 0 494.500000 -8227.400000 0 494.500000 -8228.100000 0 181.700000 -8228.100000 0 181.700000 -8227.400000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -8228.100000 0 494.500000 -8228.100000 0 494.500000 -8228.900000 0 181.700000 -8228.900000 0 181.700000 -8228.100000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -8228.900000 0 494.500000 -8228.900000 0 494.500000 -8229.600000 0 181.700000 -8229.600000 0 181.700000 -8228.900000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -8229.600000 0 494.500000 -8229.600000 0 494.500000 -8230.400000 0 181.700000 -8230.400000 0 181.700000 -8229.600000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -8230.400000 0 494.500000 -8230.400000 0 494.500000 -8231.100000 0 181.700000 -8231.100000 0 181.700000 -8230.400000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -8231.100000 0 494.500000 -8231.100000 0 494.500000 -8231.900000 0 181.700000 -8231.900000 0 181.700000 -8231.100000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -8231.900000 0 494.500000 -8231.900000 0 494.500000 -8232.700000 0 181.700000 -8232.700000 0 181.700000 -8231.900000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -8232.700000 0 494.500000 -8232.700000 0 494.500000 -8233.400000 0 181.700000 -8233.400000 0 181.700000 -8232.700000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -8233.400000 0 494.500000 -8233.400000 0 494.500000 -8234.200000 0 181.700000 -8234.200000 0 181.700000 -8233.400000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -8234.200000 0 494.500000 -8234.200000 0 494.500000 -8234.900000 0 181.700000 -8234.900000 0 181.700000 -8234.200000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -8234.900000 0 494.500000 -8234.900000 0 494.500000 -8235.700000 0 181.700000 -8235.700000 0 181.700000 -8234.900000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -8235.700000 0 494.500000 -8235.700000 0 494.500000 -8236.500000 0 181.700000 -8236.500000 0 181.700000 -8235.700000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -8236.500000 0 494.500000 -8236.500000 0 494.500000 -8237.200000 0 181.700000 -8237.200000 0 181.700000 -8236.500000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -8237.200000 0 494.500000 -8237.200000 0 494.500000 -8238.000000 0 181.700000 -8238.000000 0 181.700000 -8237.200000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -8238.000000 0 494.500000 -8238.000000 0 494.500000 -8238.700000 0 181.700000 -8238.700000 0 181.700000 -8238.000000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -8238.700000 0 494.500000 -8238.700000 0 494.500000 -8239.500000 0 181.700000 -8239.500000 0 181.700000 -8238.700000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -8239.500000 0 494.500000 -8239.500000 0 494.500000 -8240.300000 0 181.700000 -8240.300000 0 181.700000 -8239.500000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -8240.300000 0 494.500000 -8240.300000 0 494.500000 -8241.000000 0 181.700000 -8241.000000 0 181.700000 -8240.300000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -8241.000000 0 494.500000 -8241.000000 0 494.500000 -8241.800000 0 181.700000 -8241.800000 0 181.700000 -8241.000000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -8241.800000 0 494.500000 -8241.800000 0 494.500000 -8242.500000 0 181.700000 -8242.500000 0 181.700000 -8241.800000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -8242.500000 0 494.500000 -8242.500000 0 494.500000 -8243.300000 0 181.700000 -8243.300000 0 181.700000 -8242.500000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -8243.300000 0 494.500000 -8243.300000 0 494.500000 -8244.000000 0 181.700000 -8244.000000 0 181.700000 -8243.300000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -8244.000000 0 494.500000 -8244.000000 0 494.500000 -8244.800000 0 181.700000 -8244.800000 0 181.700000 -8244.000000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -8244.800000 0 494.500000 -8244.800000 0 494.500000 -8245.600000 0 181.700000 -8245.600000 0 181.700000 -8244.800000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -8245.600000 0 494.500000 -8245.600000 0 494.500000 -8246.300000 0 181.700000 -8246.300000 0 181.700000 -8245.600000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -8246.300000 0 494.500000 -8246.300000 0 494.500000 -8247.100000 0 181.700000 -8247.100000 0 181.700000 -8246.300000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -8247.100000 0 494.500000 -8247.100000 0 494.500000 -8247.800000 0 181.700000 -8247.800000 0 181.700000 -8247.100000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -8247.800000 0 494.500000 -8247.800000 0 494.500000 -8248.600000 0 181.700000 -8248.600000 0 181.700000 -8247.800000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -8248.600000 0 494.500000 -8248.600000 0 494.500000 -8249.400000 0 181.700000 -8249.400000 0 181.700000 -8248.600000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -8249.400000 0 494.500000 -8249.400000 0 494.500000 -8250.100000 0 181.700000 -8250.100000 0 181.700000 -8249.400000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -8250.100000 0 494.500000 -8250.100000 0 494.500000 -8250.900000 0 181.700000 -8250.900000 0 181.700000 -8250.100000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -8250.900000 0 494.500000 -8250.900000 0 494.500000 -8251.600000 0 181.700000 -8251.600000 0 181.700000 -8250.900000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -8251.600000 0 494.500000 -8251.600000 0 494.500000 -8252.400000 0 181.700000 -8252.400000 0 181.700000 -8251.600000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -8252.400000 0 494.500000 -8252.400000 0 494.500000 -8253.200000 0 181.700000 -8253.200000 0 181.700000 -8252.400000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -8253.200000 0 494.500000 -8253.200000 0 494.500000 -8253.900000 0 181.700000 -8253.900000 0 181.700000 -8253.200000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -8253.900000 0 494.500000 -8253.900000 0 494.500000 -8254.700000 0 181.700000 -8254.700000 0 181.700000 -8253.900000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -8254.700000 0 494.500000 -8254.700000 0 494.500000 -8255.400000 0 181.700000 -8255.400000 0 181.700000 -8254.700000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -8255.400000 0 494.500000 -8255.400000 0 494.500000 -8256.200000 0 181.700000 -8256.200000 0 181.700000 -8255.400000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -8256.200000 0 494.500000 -8256.200000 0 494.500000 -8256.900000 0 181.700000 -8256.900000 0 181.700000 -8256.200000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -8256.900000 0 494.500000 -8256.900000 0 494.500000 -8257.700000 0 181.700000 -8257.700000 0 181.700000 -8256.900000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -8257.700000 0 494.500000 -8257.700000 0 494.500000 -8258.500000 0 181.700000 -8258.500000 0 181.700000 -8257.700000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -8258.500000 0 494.500000 -8258.500000 0 494.500000 -8259.200000 0 181.700000 -8259.200000 0 181.700000 -8258.500000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -8259.200000 0 494.500000 -8259.200000 0 494.500000 -8260.000000 0 181.700000 -8260.000000 0 181.700000 -8259.200000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -8260.000000 0 494.500000 -8260.000000 0 494.500000 -8260.700000 0 181.700000 -8260.700000 0 181.700000 -8260.000000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -8260.700000 0 494.500000 -8260.700000 0 494.500000 -8261.500000 0 181.700000 -8261.500000 0 181.700000 -8260.700000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -8261.500000 0 494.500000 -8261.500000 0 494.500000 -8262.300000 0 181.700000 -8262.300000 0 181.700000 -8261.500000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -8262.300000 0 494.500000 -8262.300000 0 494.500000 -8263.000000 0 181.700000 -8263.000000 0 181.700000 -8262.300000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -8263.000000 0 494.500000 -8263.000000 0 494.500000 -8263.800000 0 181.700000 -8263.800000 0 181.700000 -8263.000000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -8263.800000 0 494.500000 -8263.800000 0 494.500000 -8264.500000 0 181.700000 -8264.500000 0 181.700000 -8263.800000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -8264.500000 0 494.500000 -8264.500000 0 494.500000 -8265.300000 0 181.700000 -8265.300000 0 181.700000 -8264.500000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -8265.300000 0 494.500000 -8265.300000 0 494.500000 -8266.100000 0 181.700000 -8266.100000 0 181.700000 -8265.300000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -8266.100000 0 494.500000 -8266.100000 0 494.500000 -8266.800000 0 181.700000 -8266.800000 0 181.700000 -8266.100000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -8266.800000 0 494.500000 -8266.800000 0 494.500000 -8267.600000 0 181.700000 -8267.600000 0 181.700000 -8266.800000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -8267.600000 0 494.500000 -8267.600000 0 494.500000 -8268.300000 0 181.700000 -8268.300000 0 181.700000 -8267.600000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -8268.300000 0 494.500000 -8268.300000 0 494.500000 -8269.100000 0 181.700000 -8269.100000 0 181.700000 -8268.300000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -8269.100000 0 494.500000 -8269.100000 0 494.500000 -8269.800000 0 181.700000 -8269.800000 0 181.700000 -8269.100000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -8269.800000 0 494.500000 -8269.800000 0 494.500000 -8270.600000 0 181.700000 -8270.600000 0 181.700000 -8269.800000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -8270.600000 0 494.500000 -8270.600000 0 494.500000 -8271.400000 0 181.700000 -8271.400000 0 181.700000 -8270.600000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -8271.400000 0 494.500000 -8271.400000 0 494.500000 -8272.100000 0 181.700000 -8272.100000 0 181.700000 -8271.400000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -8272.100000 0 494.500000 -8272.100000 0 494.500000 -8272.900000 0 181.700000 -8272.900000 0 181.700000 -8272.100000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -8272.900000 0 494.500000 -8272.900000 0 494.500000 -8273.600000 0 181.700000 -8273.600000 0 181.700000 -8272.900000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -8273.600000 0 494.500000 -8273.600000 0 494.500000 -8274.400000 0 181.700000 -8274.400000 0 181.700000 -8273.600000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -8274.400000 0 494.500000 -8274.400000 0 494.500000 -8275.200000 0 181.700000 -8275.200000 0 181.700000 -8274.400000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -8275.200000 0 494.500000 -8275.200000 0 494.500000 -8275.900000 0 181.700000 -8275.900000 0 181.700000 -8275.200000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -8275.900000 0 494.500000 -8275.900000 0 494.500000 -8276.700000 0 181.700000 -8276.700000 0 181.700000 -8275.900000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -8276.700000 0 494.500000 -8276.700000 0 494.500000 -8277.400000 0 181.700000 -8277.400000 0 181.700000 -8276.700000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -8277.400000 0 494.500000 -8277.400000 0 494.500000 -8278.200000 0 181.700000 -8278.200000 0 181.700000 -8277.400000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -8278.200000 0 494.500000 -8278.200000 0 494.500000 -8279.000000 0 181.700000 -8279.000000 0 181.700000 -8278.200000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -8279.000000 0 494.500000 -8279.000000 0 494.500000 -8279.700000 0 181.700000 -8279.700000 0 181.700000 -8279.000000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -8279.700000 0 494.500000 -8279.700000 0 494.500000 -8280.500000 0 181.700000 -8280.500000 0 181.700000 -8279.700000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -8280.500000 0 494.500000 -8280.500000 0 494.500000 -8281.200000 0 181.700000 -8281.200000 0 181.700000 -8280.500000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -8281.200000 0 494.500000 -8281.200000 0 494.500000 -8282.000000 0 181.700000 -8282.000000 0 181.700000 -8281.200000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -8282.000000 0 494.500000 -8282.000000 0 494.500000 -8282.700000 0 181.700000 -8282.700000 0 181.700000 -8282.000000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -8282.700000 0 494.500000 -8282.700000 0 494.500000 -8283.500000 0 181.700000 -8283.500000 0 181.700000 -8282.700000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -8283.500000 0 494.500000 -8283.500000 0 494.500000 -8284.300000 0 181.700000 -8284.300000 0 181.700000 -8283.500000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -8284.300000 0 494.500000 -8284.300000 0 494.500000 -8285.000000 0 181.700000 -8285.000000 0 181.700000 -8284.300000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -8285.000000 0 494.500000 -8285.000000 0 494.500000 -8285.800000 0 181.700000 -8285.800000 0 181.700000 -8285.000000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -8285.800000 0 494.500000 -8285.800000 0 494.500000 -8286.500000 0 181.700000 -8286.500000 0 181.700000 -8285.800000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -8286.500000 0 494.500000 -8286.500000 0 494.500000 -8287.300000 0 181.700000 -8287.300000 0 181.700000 -8286.500000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -8287.300000 0 494.500000 -8287.300000 0 494.500000 -8288.100000 0 181.700000 -8288.100000 0 181.700000 -8287.300000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -8288.100000 0 494.500000 -8288.100000 0 494.500000 -8288.800000 0 181.700000 -8288.800000 0 181.700000 -8288.100000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -8288.800000 0 494.500000 -8288.800000 0 494.500000 -8289.600000 0 181.700000 -8289.600000 0 181.700000 -8288.800000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -8289.600000 0 494.500000 -8289.600000 0 494.500000 -8290.300000 0 181.700000 -8290.300000 0 181.700000 -8289.600000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -8290.300000 0 494.500000 -8290.300000 0 494.500000 -8291.100000 0 181.700000 -8291.100000 0 181.700000 -8290.300000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -8291.100000 0 494.500000 -8291.100000 0 494.500000 -8291.800000 0 181.700000 -8291.800000 0 181.700000 -8291.100000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -8291.800000 0 494.500000 -8291.800000 0 494.500000 -8292.600000 0 181.700000 -8292.600000 0 181.700000 -8291.800000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -8292.600000 0 494.500000 -8292.600000 0 494.500000 -8293.400000 0 181.700000 -8293.400000 0 181.700000 -8292.600000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -8293.400000 0 494.500000 -8293.400000 0 494.500000 -8294.100000 0 181.700000 -8294.100000 0 181.700000 -8293.400000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -8294.100000 0 494.500000 -8294.100000 0 494.500000 -8294.900000 0 181.700000 -8294.900000 0 181.700000 -8294.100000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -8294.900000 0 494.500000 -8294.900000 0 494.500000 -8295.600000 0 181.700000 -8295.600000 0 181.700000 -8294.900000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -8295.600000 0 494.500000 -8295.600000 0 494.500000 -8296.400000 0 181.700000 -8296.400000 0 181.700000 -8295.600000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -8296.400000 0 494.500000 -8296.400000 0 494.500000 -8297.100000 0 181.700000 -8297.100000 0 181.700000 -8296.400000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -8297.100000 0 494.500000 -8297.100000 0 494.500000 -8297.900000 0 181.700000 -8297.900000 0 181.700000 -8297.100000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -8297.900000 0 494.500000 -8297.900000 0 494.500000 -8298.700000 0 181.700000 -8298.700000 0 181.700000 -8297.900000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -8298.700000 0 494.500000 -8298.700000 0 494.500000 -8299.400000 0 181.700000 -8299.400000 0 181.700000 -8298.700000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -8299.400000 0 494.500000 -8299.400000 0 494.500000 -8300.200000 0 181.700000 -8300.200000 0 181.700000 -8299.400000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -8300.200000 0 494.500000 -8300.200000 0 494.500000 -8300.900000 0 181.700000 -8300.900000 0 181.700000 -8300.200000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -8300.900000 0 494.500000 -8300.900000 0 494.500000 -8301.700000 0 181.700000 -8301.700000 0 181.700000 -8300.900000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -8301.700000 0 494.500000 -8301.700000 0 494.500000 -8302.500000 0 181.700000 -8302.500000 0 181.700000 -8301.700000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -8302.500000 0 494.500000 -8302.500000 0 494.500000 -8303.200000 0 181.700000 -8303.200000 0 181.700000 -8302.500000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -8303.200000 0 494.500000 -8303.200000 0 494.500000 -8304.000000 0 181.700000 -8304.000000 0 181.700000 -8303.200000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -8304.000000 0 494.500000 -8304.000000 0 494.500000 -8304.700000 0 181.700000 -8304.700000 0 181.700000 -8304.000000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -8304.700000 0 494.500000 -8304.700000 0 494.500000 -8305.500000 0 181.700000 -8305.500000 0 181.700000 -8304.700000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -8305.500000 0 494.500000 -8305.500000 0 494.500000 -8306.200000 0 181.700000 -8306.200000 0 181.700000 -8305.500000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -8306.200000 0 494.500000 -8306.200000 0 494.500000 -8307.000000 0 181.700000 -8307.000000 0 181.700000 -8306.200000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -8307.000000 0 494.500000 -8307.000000 0 494.500000 -8307.800000 0 181.700000 -8307.800000 0 181.700000 -8307.000000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -8307.800000 0 494.500000 -8307.800000 0 494.500000 -8308.500000 0 181.700000 -8308.500000 0 181.700000 -8307.800000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -8308.500000 0 494.500000 -8308.500000 0 494.500000 -8309.300000 0 181.700000 -8309.300000 0 181.700000 -8308.500000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -8309.300000 0 494.500000 -8309.300000 0 494.500000 -8310.000000 0 181.700000 -8310.000000 0 181.700000 -8309.300000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -8310.000000 0 494.500000 -8310.000000 0 494.500000 -8310.800000 0 181.700000 -8310.800000 0 181.700000 -8310.000000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -8310.800000 0 494.500000 -8310.800000 0 494.500000 -8311.500000 0 181.700000 -8311.500000 0 181.700000 -8310.800000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -8311.500000 0 494.500000 -8311.500000 0 494.500000 -8312.300000 0 181.700000 -8312.300000 0 181.700000 -8311.500000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -8312.300000 0 494.500000 -8312.300000 0 494.500000 -8313.100000 0 181.700000 -8313.100000 0 181.700000 -8312.300000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -8313.100000 0 494.500000 -8313.100000 0 494.500000 -8313.800000 0 181.700000 -8313.800000 0 181.700000 -8313.100000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -8313.800000 0 494.500000 -8313.800000 0 494.500000 -8314.600000 0 181.700000 -8314.600000 0 181.700000 -8313.800000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -8314.600000 0 494.500000 -8314.600000 0 494.500000 -8315.300000 0 181.700000 -8315.300000 0 181.700000 -8314.600000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -8315.300000 0 494.500000 -8315.300000 0 494.500000 -8316.100000 0 181.700000 -8316.100000 0 181.700000 -8315.300000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -8316.100000 0 494.500000 -8316.100000 0 494.500000 -8316.900000 0 181.700000 -8316.900000 0 181.700000 -8316.100000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -8316.900000 0 494.500000 -8316.900000 0 494.500000 -8317.600000 0 181.700000 -8317.600000 0 181.700000 -8316.900000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -8317.600000 0 494.500000 -8317.600000 0 494.500000 -8318.400000 0 181.700000 -8318.400000 0 181.700000 -8317.600000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -8318.400000 0 494.500000 -8318.400000 0 494.500000 -8319.100000 0 181.700000 -8319.100000 0 181.700000 -8318.400000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -8319.100000 0 494.500000 -8319.100000 0 494.500000 -8319.900000 0 181.700000 -8319.900000 0 181.700000 -8319.100000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -8319.900000 0 494.500000 -8319.900000 0 494.500000 -8320.700000 0 181.700000 -8320.700000 0 181.700000 -8319.900000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -8320.700000 0 494.500000 -8320.700000 0 494.500000 -8321.400000 0 181.700000 -8321.400000 0 181.700000 -8320.700000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -8321.400000 0 494.500000 -8321.400000 0 494.500000 -8322.200000 0 181.700000 -8322.200000 0 181.700000 -8321.400000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -8322.200000 0 494.500000 -8322.200000 0 494.500000 -8322.900000 0 181.700000 -8322.900000 0 181.700000 -8322.200000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -8322.900000 0 494.500000 -8322.900000 0 494.500000 -8323.700000 0 181.700000 -8323.700000 0 181.700000 -8322.900000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -8323.700000 0 494.500000 -8323.700000 0 494.500000 -8324.400000 0 181.700000 -8324.400000 0 181.700000 -8323.700000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -8324.400000 0 494.500000 -8324.400000 0 494.500000 -8325.200000 0 181.700000 -8325.200000 0 181.700000 -8324.400000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -8325.200000 0 494.500000 -8325.200000 0 494.500000 -8326.000000 0 181.700000 -8326.000000 0 181.700000 -8325.200000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -8326.000000 0 494.500000 -8326.000000 0 494.500000 -8326.700000 0 181.700000 -8326.700000 0 181.700000 -8326.000000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -8326.700000 0 494.500000 -8326.700000 0 494.500000 -8327.500000 0 181.700000 -8327.500000 0 181.700000 -8326.700000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -8327.500000 0 494.500000 -8327.500000 0 494.500000 -8328.200000 0 181.700000 -8328.200000 0 181.700000 -8327.500000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -8328.200000 0 494.500000 -8328.200000 0 494.500000 -8329.000000 0 181.700000 -8329.000000 0 181.700000 -8328.200000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -8329.000000 0 494.500000 -8329.000000 0 494.500000 -8329.800000 0 181.700000 -8329.800000 0 181.700000 -8329.000000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -8329.800000 0 494.500000 -8329.800000 0 494.500000 -8330.500000 0 181.700000 -8330.500000 0 181.700000 -8329.800000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -8330.500000 0 494.500000 -8330.500000 0 494.500000 -8331.300000 0 181.700000 -8331.300000 0 181.700000 -8330.500000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -8331.300000 0 494.500000 -8331.300000 0 494.500000 -8332.000000 0 181.700000 -8332.000000 0 181.700000 -8331.300000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -8332.000000 0 494.500000 -8332.000000 0 494.500000 -8332.800000 0 181.700000 -8332.800000 0 181.700000 -8332.000000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -8332.800000 0 494.500000 -8332.800000 0 494.500000 -8333.600000 0 181.700000 -8333.600000 0 181.700000 -8332.800000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -8333.600000 0 494.500000 -8333.600000 0 494.500000 -8334.300000 0 181.700000 -8334.300000 0 181.700000 -8333.600000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -8334.300000 0 494.500000 -8334.300000 0 494.500000 -8335.100000 0 181.700000 -8335.100000 0 181.700000 -8334.300000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -8335.100000 0 494.500000 -8335.100000 0 494.500000 -8335.800000 0 181.700000 -8335.800000 0 181.700000 -8335.100000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -8335.800000 0 494.500000 -8335.800000 0 494.500000 -8336.600000 0 181.700000 -8336.600000 0 181.700000 -8335.800000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -8336.600000 0 494.500000 -8336.600000 0 494.500000 -8337.300000 0 181.700000 -8337.300000 0 181.700000 -8336.600000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -8337.300000 0 494.500000 -8337.300000 0 494.500000 -8338.100000 0 181.700000 -8338.100000 0 181.700000 -8337.300000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -8338.100000 0 494.500000 -8338.100000 0 494.500000 -8338.900000 0 181.700000 -8338.900000 0 181.700000 -8338.100000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -8338.900000 0 494.500000 -8338.900000 0 494.500000 -8339.600000 0 181.700000 -8339.600000 0 181.700000 -8338.900000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -8339.600000 0 494.500000 -8339.600000 0 494.500000 -8340.400000 0 181.700000 -8340.400000 0 181.700000 -8339.600000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -8340.400000 0 494.500000 -8340.400000 0 494.500000 -8341.100000 0 181.700000 -8341.100000 0 181.700000 -8340.400000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -8341.100000 0 494.500000 -8341.100000 0 494.500000 -8341.900000 0 181.700000 -8341.900000 0 181.700000 -8341.100000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -8341.900000 0 494.500000 -8341.900000 0 494.500000 -8342.700000 0 181.700000 -8342.700000 0 181.700000 -8341.900000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -8342.700000 0 494.500000 -8342.700000 0 494.500000 -8343.400000 0 181.700000 -8343.400000 0 181.700000 -8342.700000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -8343.400000 0 494.500000 -8343.400000 0 494.500000 -8344.200000 0 181.700000 -8344.200000 0 181.700000 -8343.400000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -8344.200000 0 494.500000 -8344.200000 0 494.500000 -8344.900000 0 181.700000 -8344.900000 0 181.700000 -8344.200000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -8344.900000 0 494.500000 -8344.900000 0 494.500000 -8345.700000 0 181.700000 -8345.700000 0 181.700000 -8344.900000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -8345.700000 0 494.500000 -8345.700000 0 494.500000 -8346.500000 0 181.700000 -8346.500000 0 181.700000 -8345.700000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -8346.500000 0 494.500000 -8346.500000 0 494.500000 -8347.200000 0 181.700000 -8347.200000 0 181.700000 -8346.500000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -8347.200000 0 494.500000 -8347.200000 0 494.500000 -8348.000000 0 181.700000 -8348.000000 0 181.700000 -8347.200000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -8348.000000 0 494.500000 -8348.000000 0 494.500000 -8348.700000 0 181.700000 -8348.700000 0 181.700000 -8348.000000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -8348.700000 0 494.500000 -8348.700000 0 494.500000 -8349.500000 0 181.700000 -8349.500000 0 181.700000 -8348.700000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -8349.500000 0 494.500000 -8349.500000 0 494.500000 -8350.200000 0 181.700000 -8350.200000 0 181.700000 -8349.500000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -8350.200000 0 494.500000 -8350.200000 0 494.500000 -8351.000000 0 181.700000 -8351.000000 0 181.700000 -8350.200000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -8351.000000 0 494.500000 -8351.000000 0 494.500000 -8351.800000 0 181.700000 -8351.800000 0 181.700000 -8351.000000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -8351.800000 0 494.500000 -8351.800000 0 494.500000 -8352.500000 0 181.700000 -8352.500000 0 181.700000 -8351.800000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -8352.500000 0 494.500000 -8352.500000 0 494.500000 -8353.300000 0 181.700000 -8353.300000 0 181.700000 -8352.500000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -8353.300000 0 494.500000 -8353.300000 0 494.500000 -8354.000000 0 181.700000 -8354.000000 0 181.700000 -8353.300000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -8354.000000 0 494.500000 -8354.000000 0 494.500000 -8354.800000 0 181.700000 -8354.800000 0 181.700000 -8354.000000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -8354.800000 0 494.500000 -8354.800000 0 494.500000 -8355.600000 0 181.700000 -8355.600000 0 181.700000 -8354.800000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -8355.600000 0 494.500000 -8355.600000 0 494.500000 -8356.300000 0 181.700000 -8356.300000 0 181.700000 -8355.600000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -8356.300000 0 494.500000 -8356.300000 0 494.500000 -8357.100000 0 181.700000 -8357.100000 0 181.700000 -8356.300000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -8357.100000 0 494.500000 -8357.100000 0 494.500000 -8357.800000 0 181.700000 -8357.800000 0 181.700000 -8357.100000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -8357.800000 0 494.500000 -8357.800000 0 494.500000 -8358.600000 0 181.700000 -8358.600000 0 181.700000 -8357.800000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -8358.600000 0 494.500000 -8358.600000 0 494.500000 -8359.400000 0 181.700000 -8359.400000 0 181.700000 -8358.600000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -8359.400000 0 494.500000 -8359.400000 0 494.500000 -8360.100000 0 181.700000 -8360.100000 0 181.700000 -8359.400000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -8360.100000 0 494.500000 -8360.100000 0 494.500000 -8360.900000 0 181.700000 -8360.900000 0 181.700000 -8360.100000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -8360.900000 0 494.500000 -8360.900000 0 494.500000 -8361.600000 0 181.700000 -8361.600000 0 181.700000 -8360.900000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -8361.600000 0 494.500000 -8361.600000 0 494.500000 -8362.400000 0 181.700000 -8362.400000 0 181.700000 -8361.600000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -8362.400000 0 494.500000 -8362.400000 0 494.500000 -8363.100000 0 181.700000 -8363.100000 0 181.700000 -8362.400000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -8363.100000 0 494.500000 -8363.100000 0 494.500000 -8363.900000 0 181.700000 -8363.900000 0 181.700000 -8363.100000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -8363.900000 0 494.500000 -8363.900000 0 494.500000 -8364.700000 0 181.700000 -8364.700000 0 181.700000 -8363.900000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -8364.700000 0 494.500000 -8364.700000 0 494.500000 -8365.400000 0 181.700000 -8365.400000 0 181.700000 -8364.700000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -8365.400000 0 494.500000 -8365.400000 0 494.500000 -8366.200000 0 181.700000 -8366.200000 0 181.700000 -8365.400000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -8366.200000 0 494.500000 -8366.200000 0 494.500000 -8366.900000 0 181.700000 -8366.900000 0 181.700000 -8366.200000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -8366.900000 0 494.500000 -8366.900000 0 494.500000 -8367.700000 0 181.700000 -8367.700000 0 181.700000 -8366.900000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -8367.700000 0 494.500000 -8367.700000 0 494.500000 -8368.500000 0 181.700000 -8368.500000 0 181.700000 -8367.700000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -8368.500000 0 494.500000 -8368.500000 0 494.500000 -8369.200000 0 181.700000 -8369.200000 0 181.700000 -8368.500000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -8369.200000 0 494.500000 -8369.200000 0 494.500000 -8370.000000 0 181.700000 -8370.000000 0 181.700000 -8369.200000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -8370.000000 0 494.500000 -8370.000000 0 494.500000 -8370.700000 0 181.700000 -8370.700000 0 181.700000 -8370.000000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -8370.700000 0 494.500000 -8370.700000 0 494.500000 -8371.500000 0 181.700000 -8371.500000 0 181.700000 -8370.700000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -8371.500000 0 494.500000 -8371.500000 0 494.500000 -8372.300000 0 181.700000 -8372.300000 0 181.700000 -8371.500000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -8372.300000 0 494.500000 -8372.300000 0 494.500000 -8373.000000 0 181.700000 -8373.000000 0 181.700000 -8372.300000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -8373.000000 0 494.500000 -8373.000000 0 494.500000 -8373.800000 0 181.700000 -8373.800000 0 181.700000 -8373.000000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -8373.800000 0 494.500000 -8373.800000 0 494.500000 -8374.500000 0 181.700000 -8374.500000 0 181.700000 -8373.800000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -8374.500000 0 494.500000 -8374.500000 0 494.500000 -8375.300000 0 181.700000 -8375.300000 0 181.700000 -8374.500000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -8375.300000 0 494.500000 -8375.300000 0 494.500000 -8376.000000 0 181.700000 -8376.000000 0 181.700000 -8375.300000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -8376.000000 0 494.500000 -8376.000000 0 494.500000 -8376.800000 0 181.700000 -8376.800000 0 181.700000 -8376.000000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -8376.800000 0 494.500000 -8376.800000 0 494.500000 -8377.600000 0 181.700000 -8377.600000 0 181.700000 -8376.800000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -8377.600000 0 494.500000 -8377.600000 0 494.500000 -8378.300000 0 181.700000 -8378.300000 0 181.700000 -8377.600000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -8378.300000 0 494.500000 -8378.300000 0 494.500000 -8379.100000 0 181.700000 -8379.100000 0 181.700000 -8378.300000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -8379.100000 0 494.500000 -8379.100000 0 494.500000 -8379.800000 0 181.700000 -8379.800000 0 181.700000 -8379.100000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -8379.800000 0 494.500000 -8379.800000 0 494.500000 -8380.600000 0 181.700000 -8380.600000 0 181.700000 -8379.800000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -8380.600000 0 494.500000 -8380.600000 0 494.500000 -8381.400000 0 181.700000 -8381.400000 0 181.700000 -8380.600000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -8381.400000 0 494.500000 -8381.400000 0 494.500000 -8382.100000 0 181.700000 -8382.100000 0 181.700000 -8381.400000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -8382.100000 0 494.500000 -8382.100000 0 494.500000 -8382.900000 0 181.700000 -8382.900000 0 181.700000 -8382.100000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -8382.900000 0 494.500000 -8382.900000 0 494.500000 -8383.600000 0 181.700000 -8383.600000 0 181.700000 -8382.900000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -8383.600000 0 494.500000 -8383.600000 0 494.500000 -8384.400000 0 181.700000 -8384.400000 0 181.700000 -8383.600000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -8384.400000 0 494.500000 -8384.400000 0 494.500000 -8385.200000 0 181.700000 -8385.200000 0 181.700000 -8384.400000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -8385.200000 0 494.500000 -8385.200000 0 494.500000 -8385.900000 0 181.700000 -8385.900000 0 181.700000 -8385.200000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -8385.900000 0 494.500000 -8385.900000 0 494.500000 -8386.700000 0 181.700000 -8386.700000 0 181.700000 -8385.900000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -8386.700000 0 494.500000 -8386.700000 0 494.500000 -8387.400000 0 181.700000 -8387.400000 0 181.700000 -8386.700000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -8387.400000 0 494.500000 -8387.400000 0 494.500000 -8388.200000 0 181.700000 -8388.200000 0 181.700000 -8387.400000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -8388.200000 0 494.500000 -8388.200000 0 494.500000 -8388.900000 0 181.700000 -8388.900000 0 181.700000 -8388.200000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -8388.900000 0 494.500000 -8388.900000 0 494.500000 -8389.700000 0 181.700000 -8389.700000 0 181.700000 -8388.900000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -8389.700000 0 494.500000 -8389.700000 0 494.500000 -8390.500000 0 181.700000 -8390.500000 0 181.700000 -8389.700000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -8390.500000 0 494.500000 -8390.500000 0 494.500000 -8391.200000 0 181.700000 -8391.200000 0 181.700000 -8390.500000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -8391.200000 0 494.500000 -8391.200000 0 494.500000 -8392.000000 0 181.700000 -8392.000000 0 181.700000 -8391.200000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -8391.900000 0 181.800000 -8391.900000 0 181.800000 -8198.600000 0 494.400000 -8198.600000 0 494.400000 -8391.900000 0 338.100000 -8391.900000 0
+strokePath subpath 1 338.100000 -8391.900000 0 181.800000 -8391.900000 0 181.800000 -8198.600000 0 494.400000 -8198.600000 0 494.400000 -8391.900000 0 338.100000 -8391.900000 0
+saveState
+updateCtm 11420.000000 0.000000 0.000000 -8760.000000 20530.000000 910790.000000
+drawSoftMaskedImage 1143 877 1143 877 JPEG 71324 PPM 3007249
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -8352.876000 215.488000 -8360.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -8352.876000 220.592000 -8360.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -8352.876000 225.696000 -8360.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -8352.876000 230.800000 -8360.876000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -8360.476000 241.388000 -8368.476000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -8360.476000 246.492000 -8368.476000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -8360.476000 251.596000 -8368.476000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -8360.476000 256.700000 -8368.476000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -8368.176000 267.188000 -8376.176000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -8368.176000 272.292000 -8376.176000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -8368.176000 277.396000 -8376.176000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -8368.176000 282.500000 -8376.176000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -8375.776000 293.088000 -8383.776000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -8375.776000 298.192000 -8383.776000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -8375.776000 303.296000 -8383.776000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -8375.776000 308.400000 -8383.776000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -8337.876000 202.588000 -8345.876000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -8318.576000 201.688000 -8326.576000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -8299.276000 195.788000 -8307.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -8299.276000 200.892000 -8307.276000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -8279.876000 194.888000 -8287.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -8279.876000 199.992000 -8287.876000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -8260.576000 193.988000 -8268.576000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -8260.576000 199.092000 -8268.576000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -8241.276000 193.088000 -8249.276000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -8241.276000 198.192000 -8249.276000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -8369.176000 330.188000 -8377.176000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -8369.176000 332.716000 -8377.176000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -8369.176000 337.596000 -8377.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -8369.176000 341.396000 -8377.176000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -8369.176000 346.036000 -8377.176000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -8369.176000 350.900000 -8377.176000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -8369.176000 355.972000 -8377.176000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -8369.176000 359.196000 -8377.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -8369.176000 362.196000 -8377.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -8369.176000 367.404000 -8377.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -8369.176000 371.876000 -8377.176000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -8369.176000 375.052000 -8377.176000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -8349.676000 361.172000 -8357.676000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -8349.676000 364.340000 -8357.676000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -8349.676000 367.396000 -8357.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -8349.676000 372.604000 -8357.676000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -8349.676000 379.348000 -8357.676000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -8349.676000 384.484000 -8357.676000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -8349.676000 389.436000 -8357.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -8349.676000 392.108000 -8357.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -8349.676000 395.708000 -8357.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -8349.676000 397.540000 -8357.676000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -8349.676000 402.444000 -8357.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -8349.676000 406.788000 -8357.676000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -8330.076000 392.972000 -8338.076000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -8330.076000 398.076000 -8338.076000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -8330.076000 403.180000 -8338.076000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -8330.076000 405.428000 -8338.076000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -8330.076000 410.332000 -8338.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -8330.076000 414.476000 -8338.076000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -8202.508000 305.808000 -8216.508000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -8202.508000 314.138000 -8216.508000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -8202.508000 320.788000 -8216.508000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -8202.508000 328.698000 -8216.508000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -8202.508000 336.972000 -8216.508000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -8202.508000 344.182000 -8216.508000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -8202.508000 349.810000 -8216.508000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -8202.508000 354.234000 -8216.508000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -8202.508000 362.718000 -8216.508000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -8202.508000 367.870000 -8216.508000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -8202.508000 372.322000 -8216.508000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -8202.508000 382.080000 -8216.508000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -8202.508000 388.772000 -8216.508000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -8202.508000 397.802000 -8216.508000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -8202.508000 402.254000 -8216.508000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -8202.508000 407.896000 -8216.508000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -8325.400000 0 424.300000 -8325.400000 0 424.300000 -8264.700000 0 493.600000 -8264.700000 0 493.600000 -8325.400000 0 458.900000 -8325.400000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -8274.300000 0 428.900000 -8274.300000 0 428.900000 -8268.300000 0 434.800000 -8268.300000 0 434.800000 -8274.300000 0 431.900000 -8274.300000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -8285.400000 0 428.900000 -8285.400000 0 428.900000 -8279.400000 0 434.800000 -8279.400000 0 434.800000 -8285.400000 0 431.900000 -8285.400000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -8296.500000 0 428.900000 -8296.500000 0 428.900000 -8290.500000 0 434.800000 -8290.500000 0 434.800000 -8296.500000 0 431.900000 -8296.500000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -8307.600000 0 428.900000 -8307.600000 0 428.900000 -8301.600000 0 434.800000 -8301.600000 0 434.800000 -8307.600000 0 431.900000 -8307.600000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -8318.700000 0 428.900000 -8318.700000 0 428.900000 -8312.700000 0 434.800000 -8312.700000 0 434.800000 -8318.700000 0 431.900000 -8318.700000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -8267.176000 443.288000 -8275.176000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -8267.176000 445.816000 -8275.176000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -8267.176000 450.600000 -8275.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -8267.176000 454.496000 -8275.176000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -8267.176000 459.136000 -8275.176000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -8267.176000 464.000000 -8275.176000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -8267.176000 468.976000 -8275.176000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -8267.176000 472.304000 -8275.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -8267.176000 475.208000 -8275.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -8267.176000 480.520000 -8275.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -8267.176000 484.992000 -8275.176000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -8267.176000 488.168000 -8275.176000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -8278.276000 443.352000 -8286.276000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -8278.276000 447.920000 -8286.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -8278.276000 452.976000 -8286.276000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -8278.276000 457.400000 -8286.276000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -8278.276000 462.472000 -8286.276000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -8278.276000 465.800000 -8286.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -8278.276000 468.904000 -8286.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -8278.276000 473.816000 -8286.276000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -8278.276000 478.888000 -8286.276000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -8278.276000 482.064000 -8286.276000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -8289.376000 442.872000 -8297.376000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -8289.376000 446.040000 -8297.376000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -8289.376000 448.992000 -8297.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -8289.376000 454.304000 -8297.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -8289.376000 461.048000 -8297.376000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -8289.376000 466.184000 -8297.376000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -8289.376000 471.136000 -8297.376000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -8289.376000 473.808000 -8297.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -8289.376000 477.408000 -8297.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -8289.376000 479.240000 -8297.376000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -8289.376000 484.144000 -8297.376000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -8289.376000 488.488000 -8297.376000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -8300.476000 443.384000 -8308.476000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -8300.476000 448.464000 -8308.476000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -8300.476000 453.424000 -8308.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -8300.476000 456.696000 -8308.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -8300.476000 459.800000 -8308.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -8300.476000 462.032000 -8308.476000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -8300.476000 466.936000 -8308.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -8300.476000 471.080000 -8308.476000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -8311.576000 443.272000 -8319.576000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -8311.576000 448.376000 -8319.576000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -8311.576000 453.480000 -8319.576000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -8311.576000 455.728000 -8319.576000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -8311.576000 460.632000 -8319.576000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -8311.576000 464.776000 -8319.576000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -10956.600000 0 114.800000 -10956.600000 0 114.800000 -10913.800000 0 72.000000 -10913.800000 0 72.000000 -10956.600000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 1174850.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 108.000000 546.200000 0 540.000000 546.200000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 546.200000 0
+eoFillPath subpath 1 108.000000 72.000000 0 540.000000 72.000000 0 540.000000 245.800000 0 108.000000 245.800000 0 108.000000 72.000000 0
+eoFillPath subpath 1 108.000000 245.800000 0 157.400000 245.800000 0 157.400000 546.200000 0 108.000000 546.200000 0 108.000000 245.800000 0
+eoFillPath subpath 1 490.500000 245.800000 0 540.000000 245.800000 0 540.000000 546.200000 0 490.500000 546.200000 0 490.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 15740.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 108.000000 701.300000 0 540.000000 701.300000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 701.300000 0
+eoFillPath subpath 1 108.000000 76.200000 0 540.000000 76.200000 0 540.000000 90.100000 0 108.000000 90.100000 0 108.000000 76.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 108.100000 719.948000 121.892000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 121.908000 719.948000 131.364000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 131.412000 719.948000 136.484000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 136.516000 719.948000 148.532000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 148.516000 719.948000 158.292000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 158.324000 719.948000 168.452000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 168.420000 719.948000 176.740000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 176.724000 719.948000 186.564000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 186.532000 719.948000 191.604000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 191.636000 719.948000 197.396000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 197.444000 719.948000 202.516000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 202.500000 719.948000 211.700000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 210.500000 719.948000 214.932000 703.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 214.900000 719.948000 221.476000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 221.508000 719.948000 229.828000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 229.812000 719.948000 236.084000 703.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 236.116000 719.948000 241.188000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.220000 719.948000 250.420000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 250.420000 719.948000 254.852000 703.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 254.820000 719.948000 264.596000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 264.628000 719.948000 274.404000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 274.436000 719.948000 281.012000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 672.936000 229.492000 660.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 672.936000 237.232000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 672.936000 244.300000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 246.712000 672.936000 250.516000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 252.916000 672.936000 256.744000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 256.720000 672.936000 263.872000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 263.920000 672.936000 269.656000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 269.620000 672.936000 277.300000 660.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 277.420000 672.936000 284.512000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 286.924000 672.936000 290.728000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 293.224000 672.936000 298.960000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 298.924000 672.936000 306.148000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 306.220000 672.936000 313.444000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 313.420000 672.936000 324.796000 660.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 327.124000 672.936000 330.928000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.424000 672.936000 337.252000 660.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 337.228000 672.936000 343.384000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 345.724000 672.936000 349.528000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 352.120000 672.936000 358.888000 660.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 358.816000 672.936000 365.908000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.920000 672.936000 371.656000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 371.620000 672.936000 378.388000 660.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 380.920000 672.936000 384.724000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 387.124000 672.936000 393.280000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 393.328000 672.936000 401.008000 660.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 400.924000 672.936000 408.076000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 408.124000 672.936000 413.860000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 413.824000 672.936000 419.980000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 420.028000 672.936000 427.120000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 427.132000 672.936000 430.960000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 430.936000 672.936000 437.704000 660.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 440.140000 672.936000 443.944000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.440000 672.936000 450.880000 660.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 450.844000 672.936000 458.572000 660.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 458.644000 672.936000 464.380000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 464.344000 672.936000 472.072000 660.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 472.048000 672.936000 475.876000 660.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 475.948000 672.936000 482.104000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 482.044000 672.936000 489.772000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 489.844000 672.936000 496.936000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 496.948000 672.936000 504.628000 660.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 504.544000 672.936000 508.348000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.844000 672.936000 514.648000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 517.048000 672.936000 525.040000 660.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 525.052000 672.936000 532.780000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 532.756000 672.936000 539.848000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 672.936000 543.904000 660.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 659.036000 227.656000 647.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 659.036000 232.516000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 232.600000 659.036000 239.752000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 239.596000 659.036000 243.424000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 243.496000 659.036000 251.224000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 251.200000 659.036000 258.292000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 258.304000 659.036000 265.984000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 266.200000 659.036000 270.004000 647.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 270.100000 659.036000 277.828000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 277.804000 659.036000 284.956000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 285.004000 659.036000 290.740000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 290.704000 659.036000 298.384000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 298.408000 659.036000 308.668000 647.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 308.704000 659.036000 315.928000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 315.904000 659.036000 323.128000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 323.104000 659.036000 330.784000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 330.904000 659.036000 334.708000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 335.008000 659.036000 343.000000 647.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 343.012000 659.036000 350.236000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 350.116000 659.036000 357.340000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 357.412000 659.036000 363.148000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 363.112000 659.036000 366.916000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 367.108000 659.036000 370.936000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 370.912000 659.036000 377.068000 647.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 377.212000 659.036000 381.016000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 381.316000 659.036000 388.996000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 389.020000 659.036000 396.112000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 396.124000 659.036000 402.844000 647.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 402.820000 659.036000 410.044000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 410.020000 659.036000 415.756000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 415.720000 659.036000 422.872000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 422.920000 659.036000 427.732000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 427.720000 659.036000 434.812000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 434.824000 659.036000 442.504000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 442.624000 659.036000 446.428000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.524000 659.036000 453.748000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 453.724000 659.036000 461.452000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 461.524000 659.036000 465.352000 647.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 465.328000 659.036000 472.096000 647.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 472.132000 659.036000 475.936000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 476.128000 659.036000 486.388000 647.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 486.424000 659.036000 490.252000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 490.228000 659.036000 495.040000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 495.124000 659.036000 502.852000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 502.924000 659.036000 506.728000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 506.824000 659.036000 513.976000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 514.120000 659.036000 517.924000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 518.224000 659.036000 522.664000 647.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 522.520000 659.036000 529.612000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 529.624000 659.036000 539.884000 647.036000 1.000000 0.000000 0.000000 1.000000 w
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 659.036000 543.904000 647.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 645.136000 227.656000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 645.136000 239.080000 633.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 239.008000 645.136000 246.160000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 246.208000 645.136000 250.036000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 250.012000 645.136000 253.840000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 254.812000 645.136000 258.616000 633.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 258.700000 645.136000 265.924000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 265.900000 645.136000 271.636000 633.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 271.696000 645.136000 275.524000 633.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 275.500000 645.136000 282.592000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 282.604000 645.136000 290.332000 633.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 290.308000 645.136000 295.120000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 295.204000 645.136000 302.356000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 302.308000 645.136000 306.136000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 306.604000 645.136000 310.408000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 311.008000 645.136000 317.728000 633.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 317.704000 645.136000 324.856000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 324.904000 645.136000 330.640000 633.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 330.604000 645.136000 338.284000 633.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 338.308000 645.136000 345.400000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 345.412000 645.136000 350.224000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 350.212000 645.136000 356.368000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 356.416000 645.136000 360.220000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.520000 645.136000 364.324000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.416000 645.136000 369.220000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 369.712000 645.136000 377.704000 633.136000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 377.716000 645.136000 385.444000 633.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 385.420000 645.136000 392.512000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 392.920000 645.136000 396.724000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 397.216000 645.136000 401.044000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 401.020000 645.136000 408.112000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 408.124000 645.136000 415.276000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 415.324000 645.136000 419.764000 633.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 419.728000 645.136000 426.496000 633.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 427.024000 645.136000 430.828000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 431.428000 645.136000 439.108000 633.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 439.024000 645.136000 446.176000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 446.224000 645.136000 450.052000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 450.028000 645.136000 461.404000 633.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 461.428000 645.136000 467.584000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 468.028000 645.136000 471.832000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 472.324000 645.136000 480.052000 633.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 480.028000 645.136000 487.120000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 487.132000 645.136000 493.888000 633.136000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 493.936000 645.136000 498.748000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 499.240000 645.136000 503.044000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 503.536000 645.136000 508.348000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 508.336000 645.136000 515.560000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 516.040000 645.136000 519.844000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 520.336000 645.136000 525.148000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 525.136000 645.136000 532.864000 633.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 532.936000 645.136000 540.028000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 645.136000 543.904000 633.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 631.236000 231.760000 619.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 231.796000 631.236000 235.624000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 235.600000 631.236000 243.328000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 243.304000 631.236000 250.984000 619.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 251.008000 631.236000 258.232000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 258.208000 631.236000 268.468000 619.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 271.408000 631.236000 275.212000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 278.212000 631.236000 282.040000 619.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 282.016000 631.236000 289.108000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 289.120000 631.236000 296.848000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 296.920000 631.236000 304.600000 619.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 307.516000 631.236000 311.320000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 314.320000 631.236000 321.472000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 324.316000 631.236000 328.120000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.216000 631.236000 337.936000 619.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 337.912000 631.236000 345.004000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 345.016000 631.236000 350.752000 619.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 350.812000 631.236000 355.624000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 355.516000 631.236000 362.668000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 362.716000 631.236000 366.544000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 366.520000 631.236000 374.248000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 377.224000 631.236000 381.028000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 384.028000 631.236000 391.120000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 391.132000 631.236000 397.888000 619.236000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 397.936000 631.236000 405.160000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 405.136000 631.236000 409.948000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 409.936000 631.236000 413.764000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 413.836000 631.236000 420.556000 619.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 423.436000 631.236000 427.240000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 430.240000 631.236000 437.392000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 437.440000 631.236000 448.816000 619.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 448.744000 631.236000 456.424000 619.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 456.448000 631.236000 460.276000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 460.348000 631.236000 467.500000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 467.452000 631.236000 475.180000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 475.156000 631.236000 481.876000 619.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 481.960000 631.236000 489.052000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 491.860000 631.236000 495.664000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 498.664000 631.236000 503.476000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 503.560000 631.236000 510.784000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 513.664000 631.236000 517.468000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 520.468000 631.236000 525.280000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 525.268000 631.236000 532.996000 619.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 533.068000 631.236000 540.160000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 631.236000 543.904000 619.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 617.336000 227.236000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 227.200000 617.336000 234.424000 605.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 234.400000 617.336000 241.624000 605.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 241.600000 617.336000 252.976000 605.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 253.000000 617.336000 256.804000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.804000 617.336000 260.608000 605.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 597.436000 229.564000 585.436000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 229.600000 597.436000 235.336000 585.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 235.300000 597.436000 242.524000 585.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 242.500000 597.436000 249.268000 585.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 249.304000 597.436000 253.132000 585.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 253.204000 597.436000 260.884000 585.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 260.800000 597.436000 264.628000 585.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 264.700000 597.436000 272.428000 585.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 272.404000 597.436000 280.084000 585.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 282.400000 597.436000 286.204000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.604000 597.436000 293.416000 585.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 293.404000 597.436000 301.132000 585.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 301.204000 597.436000 308.296000 585.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 310.600000 597.436000 314.404000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.900000 597.436000 324.580000 585.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 324.496000 597.436000 331.588000 585.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 331.600000 597.436000 337.756000 585.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 337.804000 597.436000 341.632000 585.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 341.608000 597.436000 347.344000 585.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 347.308000 597.436000 354.400000 585.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 354.412000 597.436000 362.092000 585.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 364.516000 597.436000 368.320000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.720000 597.436000 377.440000 585.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 377.416000 597.436000 384.640000 585.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 384.616000 597.436000 392.344000 585.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 392.416000 597.436000 397.228000 585.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 397.216000 597.436000 402.952000 585.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 402.916000 597.436000 410.068000 585.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 410.116000 597.436000 416.272000 585.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 416.212000 597.436000 421.024000 585.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 423.412000 597.436000 427.216000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.712000 597.436000 437.392000 585.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 437.308000 597.436000 444.400000 585.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 444.412000 597.436000 449.224000 585.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 449.308000 597.436000 459.568000 585.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 459.604000 597.436000 466.696000 585.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.708000 597.436000 473.800000 585.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 473.812000 597.436000 481.540000 585.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 483.808000 597.436000 487.612000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 490.012000 597.436000 497.236000 585.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 497.212000 597.436000 501.040000 585.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 501.112000 597.436000 508.792000 585.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 511.108000 597.436000 514.912000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 517.312000 597.436000 524.464000 585.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 524.512000 597.436000 532.240000 585.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 532.216000 597.436000 539.896000 585.436000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 597.436000 543.904000 585.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 583.536000 229.228000 571.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 229.204000 583.536000 236.296000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.308000 583.536000 246.568000 571.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 245.212000 583.536000 249.016000 571.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 250.612000 583.536000 254.416000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.012000 583.536000 263.164000 571.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 263.212000 583.536000 268.948000 571.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 268.912000 583.536000 276.004000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 277.612000 583.536000 281.416000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 283.012000 583.536000 289.168000 571.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 289.216000 583.536000 296.308000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 296.320000 583.536000 303.088000 571.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 303.016000 583.536000 310.108000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 310.120000 583.536000 315.856000 571.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 315.916000 583.536000 323.068000 571.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 323.020000 583.536000 326.848000 571.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 328.516000 583.536000 332.320000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.916000 583.536000 341.068000 571.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 341.116000 583.536000 348.844000 571.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 348.820000 583.536000 353.632000 571.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 353.620000 583.536000 357.448000 571.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 357.424000 583.536000 365.104000 571.536000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 365.128000 583.536000 372.856000 571.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 372.928000 583.536000 380.020000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 380.032000 583.536000 386.188000 571.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 387.736000 583.536000 391.540000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.136000 583.536000 399.292000 571.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 399.340000 583.536000 407.068000 571.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 407.044000 583.536000 413.764000 571.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 413.740000 583.536000 421.468000 571.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 423.136000 583.536000 426.940000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 428.536000 583.536000 435.688000 571.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 435.736000 583.536000 441.892000 571.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 443.440000 583.536000 447.244000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 448.840000 583.536000 453.652000 571.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 453.640000 583.536000 461.368000 571.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 461.440000 583.536000 468.532000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.140000 583.536000 473.944000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 475.540000 583.536000 482.260000 571.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 482.236000 583.536000 489.964000 571.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 489.940000 583.536000 497.092000 571.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 497.140000 583.536000 504.868000 571.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 504.844000 583.536000 512.524000 571.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 512.548000 583.536000 519.640000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 519.652000 583.536000 523.480000 571.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 523.552000 583.536000 527.380000 571.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 527.356000 583.536000 534.448000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 534.460000 583.536000 540.196000 571.536000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 583.536000 543.904000 571.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 569.636000 229.228000 557.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 229.204000 569.636000 236.356000 557.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 236.404000 569.636000 244.132000 557.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 244.108000 569.636000 251.788000 557.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 251.812000 569.636000 255.640000 557.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 255.616000 569.636000 263.344000 557.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 263.416000 569.636000 271.096000 557.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 273.316000 569.636000 277.120000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.616000 569.636000 284.056000 557.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 284.020000 569.636000 289.756000 557.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 289.720000 569.636000 296.944000 557.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 297.016000 569.636000 308.392000 557.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 310.720000 569.636000 314.524000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.020000 569.636000 321.832000 557.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 321.820000 569.636000 329.548000 557.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 329.620000 569.636000 336.712000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 338.920000 569.636000 342.724000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 345.124000 569.636000 352.852000 557.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 352.828000 569.636000 356.656000 557.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 356.728000 569.636000 364.408000 557.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 364.324000 569.636000 372.052000 557.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 374.524000 569.636000 378.328000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.728000 569.636000 387.448000 557.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 387.424000 569.636000 394.516000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 394.528000 569.636000 398.356000 557.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 398.428000 569.636000 402.256000 557.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 402.232000 569.636000 406.060000 557.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 406.036000 569.636000 413.764000 557.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 413.836000 569.636000 421.516000 557.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 421.432000 569.636000 425.236000 557.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 427.636000 569.636000 431.440000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 433.840000 569.636000 440.992000 557.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 441.040000 569.636000 448.768000 557.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 448.744000 569.636000 456.424000 557.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 458.740000 569.636000 462.544000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 465.040000 569.636000 469.852000 557.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 469.840000 569.636000 477.568000 557.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 477.640000 569.636000 484.732000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 486.940000 569.636000 490.744000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 493.144000 569.636000 499.864000 557.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 499.948000 569.636000 507.172000 557.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 507.148000 569.636000 510.976000 557.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 511.048000 569.636000 518.272000 557.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 518.152000 569.636000 523.888000 557.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 523.852000 569.636000 528.292000 557.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 528.352000 569.636000 536.080000 557.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 536.056000 569.636000 539.884000 557.636000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 569.636000 543.904000 557.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 555.736000 229.492000 543.736000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 555.736000 233.332000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 233.308000 555.736000 241.828000 543.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 241.804000 555.736000 248.956000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 249.004000 555.736000 256.732000 543.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 256.708000 555.736000 263.476000 543.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 263.512000 555.736000 267.316000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 267.316000 555.736000 271.144000 543.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 271.120000 555.736000 278.272000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 278.320000 555.736000 289.696000 543.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 289.720000 555.736000 297.400000 543.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 297.424000 555.736000 303.580000 543.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 303.628000 555.736000 307.432000 543.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 307.432000 555.736000 311.236000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 311.236000 555.736000 321.736000 543.736000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 321.736000 555.736000 328.828000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 328.840000 555.736000 335.596000 543.736000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 335.644000 555.736000 340.456000 543.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 340.444000 555.736000 344.248000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 344.248000 555.736000 349.060000 543.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.048000 555.736000 356.272000 543.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 356.248000 555.736000 360.052000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 360.052000 555.736000 364.864000 543.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.852000 555.736000 372.580000 543.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 372.556000 555.736000 379.648000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 379.660000 555.736000 383.464000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.464000 555.736000 394.840000 543.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 394.864000 555.736000 402.088000 543.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 402.064000 555.736000 409.744000 543.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 409.768000 555.736000 416.860000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 416.872000 555.736000 422.608000 543.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 422.572000 555.736000 430.300000 543.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 430.276000 555.736000 434.080000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 434.080000 555.736000 441.760000 543.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 441.784000 555.736000 445.612000 543.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.588000 555.736000 452.740000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 452.788000 555.736000 459.508000 543.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 459.484000 555.736000 466.744000 543.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 466.780000 555.736000 470.584000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.584000 555.736000 474.412000 543.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 474.388000 555.736000 481.480000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 481.492000 555.736000 488.644000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 488.692000 555.736000 493.504000 543.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 493.492000 555.736000 501.220000 543.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 501.196000 555.736000 508.288000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 508.300000 555.736000 514.036000 543.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 514.000000 555.736000 517.804000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 517.804000 555.736000 522.244000 543.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 522.208000 555.736000 529.936000 543.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 529.912000 555.736000 535.648000 543.736000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 555.736000 540.044000 543.736000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 541.836000 229.228000 529.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 229.204000 541.836000 233.032000 529.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 233.104000 541.836000 237.916000 529.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 237.904000 541.836000 245.632000 529.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 245.608000 541.836000 251.344000 529.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 251.404000 541.836000 258.496000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 258.604000 541.836000 262.408000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.600000 541.836000 269.752000 529.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 269.800000 541.836000 277.528000 529.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 277.504000 541.836000 285.184000 529.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 285.304000 541.836000 289.108000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.300000 541.836000 296.020000 529.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 296.104000 541.836000 299.932000 529.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 299.908000 541.836000 307.000000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 307.012000 541.836000 314.164000 529.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.212000 541.836000 319.948000 529.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 319.912000 541.836000 323.716000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 324.016000 541.836000 331.696000 529.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 331.720000 541.836000 335.548000 529.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 335.524000 541.836000 342.676000 529.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 342.724000 541.836000 348.880000 529.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 348.820000 541.836000 354.976000 529.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 355.216000 541.836000 359.020000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.212000 541.836000 365.932000 529.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 365.908000 541.836000 373.132000 529.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 373.108000 541.836000 381.628000 529.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 381.712000 541.836000 388.804000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.816000 541.836000 395.908000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 396.016000 541.836000 399.820000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 400.012000 541.836000 404.824000 529.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 404.812000 541.836000 411.964000 529.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 412.012000 541.836000 419.692000 529.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 419.716000 541.836000 423.544000 529.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 423.520000 541.836000 430.612000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 430.624000 541.836000 434.428000 529.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 434.620000 541.836000 438.424000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.616000 541.836000 443.428000 529.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 443.512000 541.836000 451.240000 529.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 451.216000 541.836000 458.308000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 458.320000 541.836000 462.124000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 462.424000 541.836000 469.648000 529.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 469.624000 541.836000 477.304000 529.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 477.328000 541.836000 485.008000 529.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 485.032000 541.836000 492.256000 529.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 492.232000 541.836000 498.388000 529.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 498.436000 541.836000 502.264000 529.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 502.240000 541.836000 507.052000 529.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 507.040000 541.836000 510.868000 529.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 510.940000 541.836000 518.164000 529.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 518.140000 541.836000 525.868000 529.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 526.036000 541.836000 529.840000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 530.032000 541.836000 533.860000 529.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 533.836000 541.836000 539.992000 529.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 541.836000 543.904000 529.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 527.936000 227.656000 515.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 527.936000 232.516000 515.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 232.504000 527.936000 238.240000 515.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 238.204000 527.936000 242.032000 515.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 242.008000 527.936000 249.268000 515.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 249.304000 527.936000 253.132000 515.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 253.108000 527.936000 260.836000 515.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 260.812000 527.936000 268.492000 515.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 268.516000 527.936000 272.344000 515.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 272.320000 527.936000 279.088000 515.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 279.124000 527.936000 282.928000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 282.928000 527.936000 290.080000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 290.128000 527.936000 297.808000 515.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 297.832000 527.936000 305.512000 515.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 305.536000 527.936000 312.628000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 312.640000 527.936000 319.792000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 319.840000 527.936000 323.668000 515.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 323.644000 527.936000 327.472000 515.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 327.448000 527.936000 335.176000 515.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 335.152000 527.936000 342.832000 515.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 342.856000 527.936000 346.660000 515.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 502.136000 116.296000 490.136000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 116.296000 502.136000 120.400000 490.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 120.400000 502.136000 126.316000 490.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 126.304000 502.136000 134.440000 490.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 134.404000 502.136000 142.984000 490.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.008000 502.136000 147.112000 490.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.112000 502.136000 155.200000 490.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 155.212000 502.136000 162.316000 490.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 162.316000 502.136000 170.452000 490.136000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 485.136000 230.164000 473.136000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 230.896000 485.136000 234.700000 473.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 235.492000 485.136000 242.212000 473.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 242.188000 485.136000 247.924000 473.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 247.984000 485.136000 255.136000 473.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 255.088000 485.136000 261.808000 473.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 261.784000 485.136000 269.044000 473.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 269.080000 485.136000 272.908000 473.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 272.884000 485.136000 276.712000 473.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 276.784000 485.136000 284.512000 473.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 284.488000 485.136000 292.168000 473.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 292.192000 485.136000 295.996000 473.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 296.692000 485.136000 300.496000 473.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 301.288000 485.136000 308.968000 473.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 308.992000 485.136000 316.720000 473.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 316.696000 485.136000 322.432000 473.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 322.396000 485.136000 330.124000 473.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 330.196000 485.136000 334.024000 473.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 334.000000 485.136000 341.728000 473.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 341.704000 485.136000 349.384000 473.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 350.104000 485.136000 353.908000 473.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 355.408000 485.136000 363.400000 473.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 362.704000 485.136000 368.440000 473.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 368.404000 485.136000 375.496000 473.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 376.300000 485.136000 380.104000 473.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.896000 485.136000 388.576000 473.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 388.600000 485.136000 394.336000 473.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 394.300000 485.136000 398.128000 473.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 398.200000 485.136000 405.928000 473.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 405.904000 485.136000 413.584000 473.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 413.608000 485.136000 419.764000 473.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 420.412000 485.136000 424.216000 473.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 425.008000 485.136000 432.160000 473.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 432.904000 485.136000 436.708000 473.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 437.500000 485.136000 447.760000 473.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 447.796000 485.136000 454.948000 473.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.900000 485.136000 460.636000 473.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 460.696000 485.136000 472.072000 473.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 472.000000 485.136000 475.804000 473.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 476.596000 485.136000 480.400000 473.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.192000 485.136000 487.912000 473.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 487.888000 485.136000 495.112000 473.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 495.088000 485.136000 501.400000 473.136000 1.000000 0.000000 0.000000 1.000000 z
+drawChar 501.484000 485.136000 508.252000 473.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 508.888000 485.136000 512.692000 473.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 513.484000 485.136000 517.924000 473.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 517.888000 485.136000 524.980000 473.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 524.992000 485.136000 532.084000 473.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 532.096000 485.136000 535.924000 473.136000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 485.136000 540.044000 473.136000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 471.236000 225.328000 459.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 225.304000 471.236000 233.032000 459.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 233.104000 471.236000 240.784000 459.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 240.904000 471.236000 244.708000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.104000 471.236000 248.932000 459.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 248.908000 471.236000 256.636000 459.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 256.708000 471.236000 261.520000 459.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 261.508000 471.236000 268.732000 459.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 268.912000 471.236000 272.716000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.016000 471.236000 280.168000 459.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 280.216000 471.236000 287.944000 459.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 287.920000 471.236000 294.688000 459.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 294.916000 471.236000 298.720000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 299.020000 471.236000 304.756000 459.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 304.720000 471.236000 311.944000 459.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 312.016000 471.236000 319.240000 459.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 319.216000 471.236000 330.592000 459.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 330.616000 471.236000 334.420000 459.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 334.516000 471.236000 338.320000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 338.716000 471.236000 346.708000 459.236000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 346.720000 471.236000 354.448000 459.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 354.424000 471.236000 361.516000 459.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 361.720000 471.236000 365.524000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 366.016000 471.236000 374.008000 459.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 373.816000 471.236000 379.552000 459.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 379.516000 471.236000 386.608000 459.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 386.620000 471.236000 394.300000 459.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 394.324000 471.236000 398.152000 459.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 398.224000 471.236000 405.376000 459.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 405.328000 471.236000 412.048000 459.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 412.024000 471.236000 419.116000 459.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 419.320000 471.236000 423.124000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.520000 471.236000 427.348000 459.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 427.324000 471.236000 433.480000 459.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 433.720000 471.236000 437.524000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 437.824000 471.236000 444.976000 459.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 445.120000 471.236000 448.924000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 449.224000 471.236000 456.904000 459.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 456.928000 471.236000 464.080000 459.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 464.032000 471.236000 469.768000 459.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 469.828000 471.236000 474.640000 459.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 474.832000 471.236000 478.636000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.936000 471.236000 486.160000 459.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 486.232000 471.236000 490.672000 459.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 490.828000 471.236000 494.632000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 494.932000 471.236000 499.744000 459.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 499.828000 471.236000 507.556000 459.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 507.532000 471.236000 514.624000 459.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 514.828000 471.236000 518.632000 459.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 518.932000 471.236000 526.156000 459.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 526.132000 471.236000 531.868000 459.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 531.928000 471.236000 535.756000 459.236000 1.000000 0.000000 0.000000 1.000000 i
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 471.236000 540.044000 459.236000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 457.336000 229.180000 445.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 229.204000 457.336000 233.032000 445.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 233.008000 457.336000 240.736000 445.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 240.712000 457.336000 247.864000 445.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 247.912000 457.336000 251.740000 445.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 251.716000 457.336000 255.520000 445.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 255.820000 457.336000 261.976000 445.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 262.024000 457.336000 266.836000 445.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 266.728000 457.336000 272.464000 445.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 272.428000 457.336000 280.156000 445.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 280.228000 457.336000 286.948000 445.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 286.924000 457.336000 291.736000 445.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 291.724000 457.336000 299.452000 445.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 299.428000 457.336000 305.164000 445.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 305.224000 457.336000 312.316000 445.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 312.424000 457.336000 316.228000 445.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.528000 457.336000 323.752000 445.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 323.632000 457.336000 328.072000 445.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 328.228000 457.336000 332.032000 445.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 332.128000 457.336000 336.940000 445.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 336.928000 457.336000 344.656000 445.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 344.728000 457.336000 351.820000 445.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 351.928000 457.336000 355.732000 445.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 356.032000 457.336000 363.760000 445.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 363.628000 457.336000 370.852000 445.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 370.828000 457.336000 378.556000 445.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 378.628000 457.336000 384.784000 445.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 384.724000 457.336000 391.816000 445.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 391.828000 457.336000 395.632000 445.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 395.632000 457.336000 399.436000 445.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 399.628000 457.336000 406.780000 445.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 406.828000 457.336000 414.556000 445.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 414.532000 457.336000 422.212000 445.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 422.332000 457.336000 426.136000 445.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.436000 457.336000 430.264000 445.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 430.240000 457.336000 435.052000 445.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 435.040000 457.336000 441.196000 445.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 441.244000 457.336000 445.048000 445.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.240000 457.336000 453.988000 445.336000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 453.940000 457.336000 461.092000 445.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 461.140000 457.336000 466.876000 445.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 466.840000 457.336000 470.668000 445.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 470.644000 457.336000 477.412000 445.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 477.448000 457.336000 481.492000 445.336000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 481.552000 457.336000 490.216000 445.336000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 490.156000 457.336000 501.532000 445.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 501.556000 457.336000 508.648000 445.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 508.660000 457.336000 514.396000 445.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 514.360000 457.336000 518.188000 445.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 518.260000 457.336000 524.980000 445.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 524.956000 457.336000 532.108000 445.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 532.156000 457.336000 539.884000 445.336000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 457.336000 543.904000 445.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 443.436000 229.180000 431.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 229.204000 443.436000 236.296000 431.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.308000 443.436000 242.464000 431.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 242.512000 443.436000 246.340000 431.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 246.316000 443.436000 253.996000 431.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 254.020000 443.436000 261.748000 431.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 261.724000 443.436000 265.528000 431.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.624000 443.436000 272.776000 431.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 272.824000 443.436000 276.652000 431.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 276.628000 443.436000 282.784000 431.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 282.832000 443.436000 290.056000 431.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 290.032000 443.436000 293.836000 431.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 293.932000 443.436000 300.652000 431.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 300.628000 443.436000 307.852000 431.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 307.828000 443.436000 315.556000 431.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 315.532000 443.436000 320.344000 431.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 320.332000 443.436000 326.068000 431.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 326.032000 443.436000 333.184000 431.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 333.232000 443.436000 339.388000 431.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 339.436000 443.436000 344.248000 431.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 344.236000 443.436000 350.392000 431.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 350.440000 443.436000 354.244000 431.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.340000 443.436000 361.492000 431.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 361.540000 443.436000 366.352000 431.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 366.340000 443.436000 371.152000 431.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 371.140000 443.436000 376.876000 431.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 376.840000 443.436000 383.992000 431.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 384.040000 443.436000 390.760000 431.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 390.736000 443.436000 395.548000 431.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 395.536000 443.436000 399.364000 431.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 399.340000 443.436000 406.108000 431.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 406.144000 443.436000 413.236000 431.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 413.248000 443.436000 417.076000 431.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 417.052000 443.436000 423.820000 431.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 423.856000 443.436000 427.660000 431.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 427.756000 443.436000 432.568000 431.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 432.556000 443.436000 439.780000 431.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 439.756000 443.436000 443.560000 431.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 443.656000 443.436000 448.468000 431.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 448.456000 443.436000 456.184000 431.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 456.160000 443.436000 463.252000 431.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 463.264000 443.436000 467.068000 431.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 467.164000 443.436000 478.540000 431.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 478.564000 443.436000 485.788000 431.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 485.764000 443.436000 493.444000 431.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 493.468000 443.436000 500.560000 431.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 500.572000 443.436000 506.308000 431.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 506.272000 443.436000 514.000000 431.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 513.976000 443.436000 517.780000 431.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 517.876000 443.436000 522.316000 431.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 522.280000 443.436000 530.008000 431.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 529.984000 443.436000 535.720000 431.436000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 443.436000 540.044000 431.436000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 429.536000 229.228000 417.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 229.204000 429.536000 233.032000 417.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 233.008000 429.536000 237.820000 417.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 237.808000 429.536000 245.536000 417.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 245.512000 429.536000 251.248000 417.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 251.212000 429.536000 258.304000 417.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 258.316000 429.536000 262.120000 417.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.120000 429.536000 265.948000 417.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 265.924000 429.536000 273.652000 417.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 273.628000 429.536000 277.432000 417.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.432000 429.536000 282.244000 417.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 282.232000 429.536000 289.960000 417.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 289.936000 429.536000 297.028000 417.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.040000 429.536000 300.844000 417.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 300.844000 429.536000 306.580000 417.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 306.544000 429.536000 313.768000 417.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 313.744000 429.536000 320.968000 417.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 320.944000 429.536000 332.320000 417.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 332.344000 429.536000 336.148000 417.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 403.736000 117.244000 391.736000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 117.196000 403.736000 125.440000 391.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 125.392000 403.736000 133.636000 391.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 133.588000 403.736000 141.568000 391.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 141.592000 403.736000 148.696000 391.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 148.696000 403.736000 156.784000 391.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 156.796000 403.736000 163.936000 391.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 163.900000 403.736000 172.036000 391.736000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 386.736000 233.776000 374.736000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 233.800000 386.736000 240.568000 374.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 241.204000 386.736000 245.008000 374.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.704000 386.736000 253.384000 374.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 253.408000 386.736000 260.632000 374.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 260.608000 386.736000 267.832000 374.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 267.808000 386.736000 275.068000 374.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 275.104000 386.736000 281.824000 374.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 281.800000 386.736000 288.952000 374.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 289.000000 386.736000 295.156000 374.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 295.096000 386.736000 302.188000 374.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 302.896000 386.736000 306.700000 374.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 307.396000 386.736000 311.224000 374.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 311.200000 386.736000 317.356000 374.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 318.004000 386.736000 321.808000 374.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 323.200000 386.736000 331.192000 374.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 330.496000 386.736000 334.324000 374.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 334.300000 386.736000 338.128000 374.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 338.200000 386.736000 345.292000 374.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 345.304000 386.736000 352.984000 374.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 353.704000 386.736000 357.508000 374.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 358.204000 386.736000 368.464000 374.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 368.500000 386.736000 372.328000 374.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 372.304000 386.736000 377.116000 374.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 377.104000 386.736000 384.832000 374.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 385.504000 386.736000 389.308000 374.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 390.004000 386.736000 396.772000 374.736000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 396.808000 386.736000 403.960000 374.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 403.912000 386.736000 409.648000 374.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 409.708000 386.736000 413.536000 374.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 413.512000 386.736000 420.736000 374.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 420.712000 386.736000 428.440000 374.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 428.512000 386.736000 434.668000 374.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 435.316000 386.736000 439.120000 374.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.816000 386.736000 450.076000 374.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 450.112000 386.736000 457.336000 374.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 457.312000 386.736000 463.048000 374.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 463.012000 386.736000 470.272000 374.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 470.308000 386.736000 476.464000 374.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 477.112000 386.736000 480.916000 374.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.612000 386.736000 488.836000 374.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 488.812000 386.736000 493.252000 374.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 494.008000 386.736000 497.812000 374.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 498.508000 386.736000 502.336000 374.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 502.312000 386.736000 506.140000 374.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 506.212000 386.736000 511.024000 374.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 511.012000 386.736000 518.104000 374.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 518.116000 386.736000 523.852000 374.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 523.816000 386.736000 530.968000 374.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 531.016000 386.736000 535.828000 374.736000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 386.736000 540.044000 374.736000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 372.836000 229.228000 360.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 229.204000 372.836000 234.940000 360.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 235.000000 372.836000 242.092000 360.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 242.104000 372.836000 245.908000 360.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.400000 372.836000 250.204000 360.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 250.696000 372.836000 255.436000 360.836000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 255.892000 372.836000 259.696000 360.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 260.392000 372.836000 266.548000 360.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 266.596000 372.836000 271.408000 360.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 271.300000 372.836000 275.128000 360.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 275.104000 372.836000 278.932000 360.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 279.004000 372.836000 282.832000 360.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 283.300000 372.836000 287.104000 360.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 287.704000 372.836000 295.432000 360.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 295.408000 372.836000 302.560000 360.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 302.512000 372.836000 309.280000 360.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 309.316000 372.836000 316.408000 360.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 316.912000 372.836000 320.716000 360.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 321.316000 372.836000 326.128000 360.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 326.212000 372.836000 333.940000 360.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 333.916000 372.836000 341.008000 360.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 342.016000 372.836000 345.820000 360.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 346.000000 372.836000 355.612000 360.836000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 355.600000 372.836000 361.336000 360.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 360.004000 372.836000 363.808000 360.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 364.408000 372.836000 368.212000 360.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.704000 372.836000 376.924000 360.836000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 376.900000 372.836000 384.628000 360.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 384.604000 372.836000 391.696000 360.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 391.804000 372.836000 397.960000 360.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 397.900000 372.836000 404.056000 360.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 404.100000 372.836000 407.904000 360.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 408.996000 372.836000 416.676000 360.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 416.700000 372.836000 423.924000 360.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 423.900000 372.836000 431.124000 360.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 431.100000 372.836000 438.360000 360.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 438.396000 372.836000 444.552000 360.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 445.092000 372.836000 448.896000 360.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 449.388000 372.836000 453.828000 360.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 453.792000 372.836000 459.528000 360.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.588000 372.836000 466.812000 360.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 466.788000 372.836000 478.164000 360.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 478.692000 372.836000 482.496000 360.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 483.096000 372.836000 494.472000 360.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 494.496000 372.836000 501.264000 360.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 501.696000 372.836000 505.500000 360.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 506.100000 372.836000 512.820000 360.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 512.796000 372.836000 520.524000 360.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 520.500000 372.836000 524.328000 360.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 524.304000 372.836000 528.132000 360.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 528.108000 372.836000 535.788000 360.836000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 372.836000 540.044000 360.836000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 358.936000 229.228000 346.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 229.204000 358.936000 236.428000 346.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.500000 358.936000 243.724000 346.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 243.700000 358.936000 251.380000 346.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 251.404000 358.936000 255.208000 346.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 256.108000 358.936000 259.912000 346.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 260.812000 358.936000 267.964000 346.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 268.012000 358.936000 275.740000 346.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 275.716000 358.936000 283.396000 346.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 284.320000 358.936000 288.124000 346.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.120000 358.936000 296.272000 346.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 297.124000 358.936000 300.928000 346.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 301.828000 358.936000 312.088000 346.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 312.124000 358.936000 319.852000 346.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 319.828000 358.936000 327.052000 346.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 327.124000 358.936000 330.952000 346.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 330.928000 358.936000 338.020000 346.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 338.932000 358.936000 342.736000 346.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 343.732000 358.936000 349.888000 346.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 349.936000 358.936000 357.028000 346.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.040000 358.936000 362.776000 346.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.740000 358.936000 366.568000 346.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 366.544000 358.936000 373.636000 346.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 373.648000 358.936000 379.804000 346.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 380.752000 358.936000 384.556000 346.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.456000 358.936000 392.680000 346.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 392.656000 358.936000 397.096000 346.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 393.352000 358.936000 397.156000 346.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.656000 358.936000 408.460000 346.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 408.700000 358.936000 417.364000 346.936000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 417.400000 358.936000 425.080000 346.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 424.996000 358.936000 432.148000 346.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 432.196000 358.936000 437.008000 346.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 436.996000 358.936000 444.724000 346.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 444.796000 358.936000 451.948000 346.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 452.800000 358.936000 456.604000 346.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 457.600000 358.936000 466.780000 346.936000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 466.804000 358.936000 474.532000 346.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 474.508000 358.936000 480.244000 346.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 480.208000 358.936000 484.036000 346.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 484.108000 358.936000 490.264000 346.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 490.204000 358.936000 495.016000 346.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 495.100000 358.936000 498.928000 346.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 498.904000 358.936000 505.996000 346.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 506.908000 358.936000 510.712000 346.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 511.612000 358.936000 522.988000 346.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 523.012000 358.936000 529.780000 346.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 529.816000 358.936000 535.972000 346.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 358.936000 540.044000 346.936000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 345.036000 226.312000 333.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 345.036000 233.392000 333.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 233.404000 345.036000 239.140000 333.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 239.104000 345.036000 242.932000 333.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 242.908000 345.036000 250.000000 333.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 250.012000 345.036000 256.168000 333.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 256.216000 345.036000 260.020000 333.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.020000 345.036000 263.824000 333.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 263.824000 345.036000 273.652000 333.036000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 273.628000 345.036000 281.356000 333.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 281.332000 345.036000 285.136000 333.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.136000 345.036000 289.948000 333.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 289.936000 345.036000 297.664000 333.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 297.640000 345.036000 304.732000 333.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 304.744000 345.036000 308.548000 333.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.548000 345.036000 315.772000 333.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 315.748000 345.036000 320.560000 333.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 320.548000 345.036000 328.276000 333.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 328.252000 345.036000 335.344000 333.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 335.356000 345.036000 341.092000 333.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 341.056000 345.036000 344.860000 333.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 344.860000 345.036000 352.588000 333.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 352.564000 345.036000 359.716000 333.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 359.764000 345.036000 367.492000 333.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 367.468000 345.036000 375.148000 333.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 375.172000 345.036000 378.976000 333.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 378.976000 345.036000 382.780000 333.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 382.780000 345.036000 388.288000 333.036000 1.000000 0.000000 0.000000 1.000000 "
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 388.800000 345.036000 397.980000 333.036000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 398.004000 345.036000 405.156000 333.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 405.204000 345.036000 412.932000 333.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 412.908000 345.036000 420.636000 333.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 420.612000 345.036000 427.704000 333.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 427.716000 345.036000 433.452000 333.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 433.416000 345.036000 440.184000 333.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 440.220000 345.036000 444.024000 333.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 444.024000 345.036000 453.048000 333.036000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 453.024000 345.036000 460.248000 333.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 460.224000 345.036000 470.484000 333.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 470.520000 345.036000 476.028000 333.036000 1.000000 0.000000 0.000000 1.000000 "
+drawChar 476.016000 345.036000 479.820000 333.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 479.820000 345.036000 484.260000 333.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 484.224000 345.036000 489.960000 333.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 489.924000 345.036000 497.148000 333.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 497.124000 345.036000 508.500000 333.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 508.524000 345.036000 512.328000 333.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 512.600000 345.036000 517.400000 333.036000 1.000000 0.000000 0.000000 1.000000 J
+drawChar 517.400000 345.036000 524.624000 333.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 524.600000 345.036000 532.328000 333.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 532.304000 345.036000 540.032000 333.036000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 345.036000 543.904000 333.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 331.136000 229.720000 319.136000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 229.696000 331.136000 234.508000 319.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 234.496000 331.136000 241.588000 319.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 241.600000 331.136000 245.428000 319.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 245.500000 331.136000 253.228000 319.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 253.204000 331.136000 260.884000 319.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 260.908000 331.136000 268.000000 319.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 268.012000 331.136000 274.732000 319.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 274.708000 331.136000 281.968000 319.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 282.412000 331.136000 286.216000 319.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.612000 331.136000 290.440000 319.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 290.416000 331.136000 296.572000 319.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 297.016000 331.136000 300.820000 319.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 301.216000 331.136000 304.936000 319.136000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 304.912000 331.136000 312.640000 319.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 312.616000 331.136000 318.772000 319.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 318.820000 331.136000 323.632000 319.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 324.016000 331.136000 327.820000 319.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 328.312000 331.136000 333.124000 319.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 333.112000 331.136000 343.372000 319.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 343.312000 331.136000 350.536000 319.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 351.016000 331.136000 354.820000 319.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 355.216000 331.136000 361.984000 319.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 362.020000 331.136000 369.112000 319.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 369.124000 331.136000 376.276000 319.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 376.228000 331.136000 381.964000 319.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 382.024000 331.136000 388.180000 319.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 388.528000 331.136000 392.332000 319.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 392.728000 331.136000 399.952000 319.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 400.024000 331.136000 403.852000 319.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 403.828000 331.136000 411.508000 319.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 411.532000 331.136000 415.336000 319.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 415.732000 331.136000 419.536000 319.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.932000 331.136000 427.084000 319.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 427.528000 331.136000 431.332000 319.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 431.728000 331.136000 437.884000 319.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 437.932000 331.136000 445.156000 319.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 445.132000 331.136000 452.860000 319.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 452.836000 331.136000 459.604000 319.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 459.640000 331.136000 466.732000 319.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.744000 331.136000 474.472000 319.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 474.448000 331.136000 478.276000 319.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 478.348000 331.136000 484.084000 319.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 484.444000 331.136000 488.248000 319.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.644000 331.136000 493.084000 319.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 493.048000 331.136000 498.784000 319.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 498.844000 331.136000 506.068000 319.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 506.044000 331.136000 517.420000 319.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 517.840000 331.136000 521.644000 319.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 522.040000 331.136000 533.416000 319.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 533.440000 331.136000 540.208000 319.136000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 331.136000 543.904000 319.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 317.236000 225.328000 305.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 225.304000 317.236000 232.456000 305.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 232.504000 317.236000 238.660000 305.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 238.708000 317.236000 243.520000 305.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 244.108000 317.236000 247.912000 305.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 248.512000 317.236000 253.324000 305.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 253.312000 317.236000 259.048000 305.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 259.108000 317.236000 262.936000 305.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 262.912000 317.236000 270.592000 305.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 271.216000 317.236000 275.020000 305.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 275.620000 317.236000 283.300000 305.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 283.324000 317.236000 290.548000 305.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 290.524000 317.236000 300.784000 305.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 300.820000 317.236000 308.548000 305.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 309.124000 317.236000 312.928000 305.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 313.528000 317.236000 318.340000 305.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 318.328000 317.236000 325.552000 305.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 326.728000 317.236000 330.532000 305.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 330.700000 317.236000 342.976000 305.236000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 343.000000 317.236000 350.224000 305.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 350.200000 317.236000 357.928000 305.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 357.904000 317.236000 362.716000 305.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 362.704000 317.236000 369.796000 305.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 369.808000 317.236000 375.544000 305.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 375.508000 317.236000 382.600000 305.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 382.612000 317.236000 389.380000 305.236000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 389.500000 317.236000 393.304000 305.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.904000 317.236000 397.708000 305.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.308000 317.236000 410.584000 305.236000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 410.608000 317.236000 417.760000 305.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 417.712000 317.236000 425.440000 305.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 425.512000 317.236000 432.280000 305.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 432.916000 317.236000 436.720000 305.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 437.320000 317.236000 444.040000 305.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 444.016000 317.236000 447.844000 305.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 447.916000 317.236000 455.068000 305.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 455.020000 317.236000 461.176000 305.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 461.224000 317.236000 467.380000 305.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 467.320000 317.236000 471.148000 305.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 471.220000 317.236000 477.940000 305.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 477.916000 317.236000 484.072000 305.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 484.612000 317.236000 488.416000 305.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 489.112000 317.236000 495.832000 305.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 495.808000 317.236000 502.960000 305.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 503.008000 317.236000 510.736000 305.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 511.312000 317.236000 515.116000 305.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 515.716000 317.236000 522.868000 305.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 522.916000 317.236000 526.744000 305.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 526.720000 317.236000 532.876000 305.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 532.924000 317.236000 540.148000 305.236000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 317.236000 543.904000 305.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 303.336000 229.180000 291.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 229.204000 303.336000 236.296000 291.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 238.708000 303.336000 242.512000 291.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 244.912000 303.336000 249.352000 291.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 249.316000 303.336000 256.540000 291.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 256.612000 303.336000 264.340000 291.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 264.316000 303.336000 272.044000 291.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 272.020000 303.336000 279.700000 291.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 282.124000 303.336000 285.928000 291.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.328000 303.336000 296.056000 291.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 296.032000 303.336000 303.124000 291.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 303.136000 303.336000 308.872000 291.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 308.932000 303.336000 316.024000 291.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 316.036000 303.336000 320.068000 291.336000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 322.432000 303.336000 326.236000 291.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.036000 303.336000 334.840000 291.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 337.336000 303.336000 342.844000 291.336000 1.000000 0.000000 0.000000 1.000000 "
+drawChar 342.832000 303.336000 351.856000 291.336000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 351.928000 303.336000 359.152000 291.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 359.032000 303.336000 370.408000 291.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 370.432000 303.336000 377.524000 291.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 377.536000 303.336000 384.760000 291.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 387.136000 303.336000 390.940000 291.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.436000 303.336000 400.588000 291.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 400.636000 303.336000 408.364000 291.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 408.232000 303.336000 415.912000 291.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 418.336000 303.336000 422.140000 291.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 424.540000 303.336000 429.340000 291.336000 1.000000 0.000000 0.000000 1.000000 J
+drawChar 429.340000 303.336000 437.068000 291.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 437.044000 303.336000 440.872000 291.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 440.944000 303.336000 444.772000 291.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 444.748000 303.336000 451.840000 291.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 451.948000 303.336000 456.760000 291.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 456.748000 303.336000 462.256000 291.336000 1.000000 0.000000 0.000000 1.000000 "
+drawChar 464.644000 303.336000 468.448000 291.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.848000 303.336000 478.528000 291.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 478.552000 303.336000 485.320000 291.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 490.156000 303.336000 493.960000 291.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 494.100000 303.336000 506.424000 291.336000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 506.196000 303.336000 510.024000 291.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 510.000000 303.336000 513.828000 291.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 513.804000 303.336000 517.632000 291.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 517.608000 303.336000 521.436000 291.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 521.412000 303.336000 528.564000 291.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 528.612000 303.336000 539.988000 291.336000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 303.336000 543.904000 291.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 289.436000 229.720000 277.436000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 229.696000 289.436000 237.424000 277.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.400000 289.436000 244.552000 277.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 244.600000 289.436000 251.860000 277.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 251.896000 289.436000 258.988000 277.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 259.000000 289.436000 265.156000 277.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 265.096000 289.436000 272.776000 277.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 272.800000 289.436000 279.892000 277.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 279.904000 289.436000 287.056000 277.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 287.104000 289.436000 292.840000 277.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 292.804000 289.436000 299.896000 277.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 301.108000 289.436000 304.912000 277.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 306.208000 289.436000 313.360000 277.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 313.408000 289.436000 319.564000 277.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 320.812000 289.436000 324.616000 277.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.008000 289.436000 336.268000 277.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 336.304000 289.436000 343.396000 277.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 343.408000 289.436000 347.236000 277.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 347.212000 289.436000 351.040000 277.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 352.216000 289.436000 356.020000 277.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.316000 289.436000 364.468000 277.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 364.516000 289.436000 370.672000 277.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 371.920000 289.436000 375.724000 277.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.020000 289.436000 387.280000 277.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 387.316000 289.436000 394.540000 277.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 394.516000 289.436000 400.252000 277.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 400.216000 289.436000 407.476000 277.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 407.512000 289.436000 413.668000 277.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 414.916000 289.436000 418.720000 277.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 420.016000 289.436000 427.696000 277.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 427.720000 289.436000 434.488000 277.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 437.116000 289.436000 440.920000 277.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 441.200000 289.436000 449.948000 277.436000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 449.996000 289.436000 455.732000 277.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 455.696000 289.436000 463.424000 277.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 463.400000 289.436000 470.492000 277.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.504000 289.436000 476.660000 277.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 476.708000 289.436000 481.520000 277.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 482.804000 289.436000 486.608000 277.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 487.904000 289.436000 498.368000 277.436000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 498.404000 289.436000 505.496000 277.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 505.508000 289.436000 516.884000 277.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 516.812000 289.436000 520.640000 277.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 520.712000 289.436000 528.440000 277.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 528.416000 289.436000 536.096000 277.436000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 289.436000 540.044000 277.436000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 275.536000 231.760000 263.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 231.796000 275.536000 238.948000 263.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 238.900000 275.536000 245.668000 263.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 245.896000 275.536000 249.700000 263.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 249.892000 275.536000 257.044000 263.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 257.092000 275.536000 264.820000 263.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 264.796000 275.536000 272.476000 263.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 272.992000 275.536000 276.796000 263.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.800000 275.536000 285.548000 263.536000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 285.596000 275.536000 293.276000 263.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 293.192000 275.536000 300.872000 263.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 300.896000 275.536000 308.048000 263.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 308.096000 275.536000 313.832000 263.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 314.000000 275.536000 317.804000 263.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.996000 275.536000 326.660000 263.536000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 326.696000 275.536000 330.524000 263.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 330.500000 275.536000 334.328000 263.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 334.304000 275.536000 341.396000 263.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 341.408000 275.536000 349.136000 263.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 349.412000 275.536000 353.216000 263.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.516000 275.536000 361.580000 263.536000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 361.112000 275.536000 368.336000 263.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 368.312000 275.536000 375.404000 263.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 375.608000 275.536000 379.412000 263.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.604000 275.536000 384.416000 263.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 384.500000 275.536000 391.724000 263.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 391.904000 275.536000 395.708000 263.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 396.008000 275.536000 403.736000 263.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 403.712000 275.536000 410.864000 263.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 410.912000 275.536000 422.288000 263.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 422.312000 275.536000 429.404000 263.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 429.608000 275.536000 433.412000 263.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 433.604000 275.536000 440.756000 263.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 440.900000 275.536000 444.704000 263.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.196000 275.536000 449.636000 263.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 449.492000 275.536000 456.584000 263.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 456.596000 275.536000 466.856000 263.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 465.392000 275.536000 469.196000 263.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.496000 275.536000 473.300000 263.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 473.492000 275.536000 482.156000 263.536000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 482.192000 275.536000 493.568000 263.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 493.496000 275.536000 500.720000 263.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 500.792000 275.536000 508.520000 263.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 508.496000 275.536000 516.176000 263.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 516.392000 275.536000 520.196000 263.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 520.496000 275.536000 525.308000 263.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 525.296000 275.536000 533.024000 263.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 533.096000 275.536000 540.188000 263.536000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 275.536000 543.904000 263.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 261.636000 229.180000 249.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 229.204000 261.636000 236.428000 249.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.404000 261.636000 243.628000 249.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 243.604000 261.636000 250.864000 249.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 250.900000 261.636000 257.056000 249.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 257.704000 261.636000 261.508000 249.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.204000 261.636000 269.356000 249.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 269.404000 261.636000 275.140000 249.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 275.104000 261.636000 282.196000 249.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 282.904000 261.636000 286.708000 249.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 287.404000 261.636000 294.556000 249.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 294.604000 261.636000 298.432000 249.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 298.408000 261.636000 304.564000 249.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 304.612000 261.636000 311.836000 249.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 312.412000 261.636000 316.216000 249.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.912000 261.636000 324.064000 249.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 324.712000 261.636000 328.516000 249.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.212000 261.636000 333.652000 249.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 333.616000 261.636000 340.708000 249.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 340.720000 261.636000 350.980000 249.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 351.724000 261.636000 355.528000 249.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 356.224000 261.636000 363.904000 249.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 363.928000 261.636000 371.152000 249.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 371.128000 261.636000 378.280000 249.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 378.328000 261.636000 384.064000 249.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 384.028000 261.636000 391.708000 249.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 392.332000 261.636000 396.136000 249.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 396.928000 261.636000 404.608000 249.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 404.524000 261.636000 411.676000 249.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 411.724000 261.636000 423.100000 249.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 423.028000 261.636000 430.120000 249.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 430.132000 261.636000 436.288000 249.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 436.336000 261.636000 440.140000 249.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 440.836000 261.636000 444.640000 249.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.336000 261.636000 452.488000 249.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 452.536000 261.636000 458.692000 249.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 459.340000 261.636000 463.144000 249.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 463.840000 261.636000 474.100000 249.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 474.136000 261.636000 481.228000 249.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 481.240000 261.636000 485.068000 249.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 485.044000 261.636000 488.872000 249.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 489.448000 261.636000 493.252000 249.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 494.044000 261.636000 501.196000 249.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 501.244000 261.636000 507.400000 249.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 508.048000 261.636000 511.852000 249.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 512.548000 261.636000 519.316000 249.636000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 519.352000 261.636000 526.504000 249.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 526.456000 261.636000 532.192000 249.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 532.252000 261.636000 536.080000 249.636000 1.000000 0.000000 0.000000 1.000000 i
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.100000 261.636000 540.144000 249.636000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 247.736000 228.724000 235.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 228.700000 247.736000 236.428000 235.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 236.500000 247.736000 242.656000 235.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 242.596000 247.736000 246.400000 235.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 246.496000 247.736000 253.756000 235.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 253.792000 247.736000 261.520000 235.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 261.496000 247.736000 265.324000 235.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 265.300000 247.736000 272.020000 235.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 272.104000 247.736000 279.364000 235.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 279.100000 247.736000 283.144000 235.736000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 283.204000 247.736000 290.464000 235.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 290.404000 247.736000 298.132000 235.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 298.204000 247.736000 305.356000 235.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 305.308000 247.736000 312.028000 235.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 312.004000 247.736000 319.264000 235.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 319.300000 247.736000 325.456000 235.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 325.504000 247.736000 329.308000 235.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 329.404000 247.736000 333.208000 235.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.304000 247.736000 339.460000 235.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 339.508000 247.736000 347.236000 235.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 347.212000 247.736000 353.932000 235.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 353.908000 247.736000 361.636000 235.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 361.612000 247.736000 365.416000 235.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.608000 247.736000 372.760000 235.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.712000 247.736000 378.868000 235.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 379.012000 247.736000 382.816000 235.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 382.912000 247.736000 390.064000 235.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 390.112000 247.736000 393.916000 235.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 394.012000 247.736000 404.272000 235.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 404.308000 247.736000 411.532000 235.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 411.508000 247.736000 418.732000 235.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 418.804000 247.736000 426.484000 235.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 426.400000 247.736000 433.492000 235.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 433.600000 247.736000 441.328000 235.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 441.400000 247.736000 445.204000 235.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 445.300000 247.736000 452.056000 235.736000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 452.104000 247.736000 458.872000 235.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 458.800000 247.736000 462.628000 235.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 462.700000 247.736000 469.924000 235.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 469.900000 247.736000 477.580000 235.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 477.604000 247.736000 485.332000 235.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 485.308000 247.736000 492.532000 235.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 492.508000 247.736000 500.236000 235.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 500.308000 247.736000 507.400000 235.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 507.508000 247.736000 511.312000 235.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 511.408000 247.736000 515.848000 235.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 515.812000 247.736000 521.548000 235.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 521.608000 247.736000 528.832000 235.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 528.808000 247.736000 540.184000 235.736000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 247.736000 543.904000 235.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 233.836000 230.164000 221.836000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 229.996000 233.836000 234.436000 221.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 234.400000 233.836000 240.136000 221.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 240.100000 233.836000 243.928000 221.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 243.904000 233.836000 250.624000 221.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 250.600000 233.836000 257.752000 221.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 257.800000 233.836000 261.604000 221.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 208.036000 120.040000 196.036000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 120.004000 208.036000 124.108000 196.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.108000 208.036000 132.640000 196.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 132.604000 208.036000 136.708000 196.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 136.708000 208.036000 145.288000 196.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 145.312000 208.036000 153.400000 196.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 153.412000 208.036000 159.328000 196.036000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 191.036000 226.240000 179.036000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 227.104000 191.036000 230.908000 179.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 232.000000 191.036000 235.828000 179.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 235.804000 191.036000 243.028000 179.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 243.100000 191.036000 249.868000 179.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 249.796000 191.036000 256.888000 179.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 258.796000 191.036000 262.600000 179.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 262.600000 191.036000 266.428000 179.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 266.404000 191.036000 273.628000 179.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 273.604000 191.036000 281.332000 179.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 281.308000 191.036000 288.988000 179.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 289.012000 191.036000 296.692000 179.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 296.716000 191.036000 302.452000 179.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 302.416000 191.036000 306.244000 179.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 306.220000 191.036000 313.948000 179.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 313.924000 191.036000 321.184000 179.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 321.220000 191.036000 327.376000 179.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 327.500000 191.036000 331.304000 179.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.200000 191.036000 340.352000 179.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 340.400000 191.036000 348.128000 179.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 348.104000 191.036000 355.784000 179.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 357.704000 191.036000 361.508000 179.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 361.500000 191.036000 368.220000 179.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 368.196000 191.036000 375.420000 179.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 375.396000 191.036000 382.116000 179.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 382.200000 191.036000 389.460000 179.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 389.400000 191.036000 394.212000 179.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 394.296000 191.036000 401.448000 179.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 401.400000 191.036000 405.228000 179.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 405.300000 191.036000 409.128000 179.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 409.104000 191.036000 415.260000 179.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 415.200000 191.036000 419.004000 179.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 420.000000 191.036000 423.804000 179.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 424.800000 191.036000 431.952000 179.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 432.000000 191.036000 439.728000 179.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 439.704000 191.036000 447.384000 179.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 448.200000 191.036000 452.004000 179.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 453.096000 191.036000 464.472000 179.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 464.400000 191.036000 471.168000 179.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 472.104000 191.036000 475.908000 179.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 476.904000 191.036000 488.280000 179.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 488.304000 191.036000 492.132000 179.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 492.108000 191.036000 499.836000 179.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 499.812000 191.036000 503.640000 179.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 503.712000 191.036000 511.392000 179.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 511.416000 191.036000 518.568000 179.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 518.520000 191.036000 524.256000 179.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 525.216000 191.036000 529.020000 179.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 530.016000 191.036000 533.844000 179.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 533.820000 191.036000 539.976000 179.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 191.036000 543.904000 179.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 177.136000 228.652000 165.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.700000 177.136000 235.420000 165.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 235.396000 177.136000 242.116000 165.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 242.092000 177.136000 249.316000 165.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 249.292000 177.136000 255.028000 165.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 255.088000 177.136000 262.768000 165.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 262.684000 177.136000 266.512000 165.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 266.584000 177.136000 274.312000 165.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 274.288000 177.136000 281.968000 165.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 281.992000 177.136000 285.820000 165.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 285.796000 177.136000 292.564000 165.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 293.092000 177.136000 296.896000 165.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 297.388000 177.136000 303.544000 165.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 303.592000 177.136000 308.404000 165.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 308.392000 177.136000 315.616000 165.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 315.592000 177.136000 322.312000 165.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 322.288000 177.136000 329.548000 165.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 329.584000 177.136000 336.676000 165.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 336.688000 177.136000 344.368000 165.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 344.392000 177.136000 348.196000 165.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.688000 177.136000 352.492000 165.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.092000 177.136000 362.668000 165.136000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 362.692000 177.136000 366.520000 165.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 366.592000 177.136000 374.320000 165.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 374.788000 177.136000 378.592000 165.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.084000 177.136000 383.524000 165.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 383.488000 177.136000 390.712000 165.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 390.784000 177.136000 396.520000 165.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 396.988000 177.136000 400.792000 165.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 401.392000 177.136000 408.544000 165.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 409.588000 177.136000 413.392000 165.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 413.600000 177.136000 423.176000 165.136000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 423.200000 177.136000 427.028000 165.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 427.004000 177.136000 434.732000 165.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 435.308000 177.136000 439.112000 165.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.604000 177.136000 446.756000 165.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 446.804000 177.136000 454.532000 165.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 454.400000 177.136000 462.080000 165.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 462.596000 177.136000 466.400000 165.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 467.000000 177.136000 474.992000 165.136000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 474.104000 177.136000 481.328000 165.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 481.304000 177.136000 489.032000 165.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 489.008000 177.136000 492.836000 165.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 492.908000 177.136000 499.628000 165.136000 1.000000 0.000000 0.000000 1.000000 c
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 499.700000 177.136000 503.504000 165.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 504.596000 177.136000 508.400000 165.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 508.300000 177.136000 517.480000 165.136000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 517.504000 177.136000 524.656000 165.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 524.704000 177.136000 536.080000 165.136000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 177.136000 540.044000 165.136000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 108.100000 90.136000 116.164000 78.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 115.600000 90.136000 122.752000 78.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 122.800000 90.136000 130.480000 78.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 130.504000 90.136000 137.596000 78.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.608000 90.136000 141.412000 78.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 141.400000 90.136000 149.032000 78.136000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 2715.400000 0 477.900000 2715.400000 0 477.900000 3025.200000 0 134.300000 3025.200000 0 134.300000 2715.400000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -192350.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -273.700000 0 168.100000 -273.700000 0 168.100000 -268.700000 0 76.900000 -268.700000 0 76.900000 -273.700000 0
+eoFillPath subpath 1 163.100000 -268.800000 0 168.100000 -268.800000 0 168.100000 -138.200000 0 163.100000 -138.200000 0 163.100000 -268.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -268.700000 0 163.100000 -268.700000 0 163.100000 -133.300000 0 72.000000 -133.300000 0 72.000000 -268.700000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 -137.620000 87.320000 -147.620000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 -137.620000 93.420000 -147.620000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 -137.620000 97.510000 -147.620000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 -137.620000 101.420000 -147.620000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 -137.620000 104.170000 -147.620000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 -137.620000 110.530000 -147.620000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 -137.620000 113.270000 -147.620000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 -137.620000 116.470000 -147.620000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 -137.620000 123.480000 -147.620000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 -137.620000 129.610000 -147.620000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 -137.620000 135.090000 -147.620000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 -137.620000 140.890000 -147.620000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 -137.620000 144.820000 -147.620000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 -137.620000 150.920000 -147.620000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 -137.620000 153.670000 -147.620000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 -137.620000 156.470000 -147.620000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -264.500000 0 168.200000 -264.500000 0 168.200000 -149.300000 0 72.000000 -149.300000 0 72.000000 -264.500000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -196.348000 79.253000 -205.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 -196.348000 86.669000 -205.348000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 -196.348000 90.215000 -205.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 -196.348000 93.077000 -205.348000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 -196.348000 97.406000 -205.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 -196.348000 100.853000 -205.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 -196.348000 107.324000 -205.348000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 -196.348000 112.337000 -205.348000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 -196.348000 115.271000 -205.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 -196.348000 118.655000 -205.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 -196.348000 126.512000 -205.348000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 -196.348000 130.805000 -205.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 -196.348000 135.881000 -205.348000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 -196.348000 139.355000 -205.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 -196.348000 147.284000 -205.348000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 -196.348000 150.074000 -205.348000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 -196.348000 155.897000 -205.348000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 -196.348000 158.750000 -205.348000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -196.348000 161.853000 -205.348000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -206.848000 82.124000 -215.848000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 -206.848000 87.137000 -215.848000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 -206.848000 90.071000 -215.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 -206.848000 93.356000 -215.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 -206.848000 100.403000 -215.848000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 -206.848000 104.921000 -215.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 -206.848000 109.205000 -215.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 -206.848000 117.737000 -215.848000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 -206.848000 123.119000 -215.848000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 -206.848000 128.996000 -215.848000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 -206.848000 132.605000 -215.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 -206.848000 138.392000 -215.848000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 -206.848000 141.749000 -215.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 -206.848000 149.507000 -215.848000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 -206.848000 153.800000 -215.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 -206.848000 158.876000 -215.848000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -206.848000 161.853000 -215.848000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -217.348000 81.764000 -226.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -217.348000 87.596000 -226.348000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 -217.348000 93.356000 -226.348000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 -217.348000 102.050000 -226.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 -217.348000 113.822000 -226.348000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 -217.348000 122.651000 -226.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 -217.348000 134.117000 -226.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 -217.348000 138.401000 -226.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 -217.348000 147.149000 -226.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 -217.348000 158.921000 -226.348000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -217.348000 161.853000 -226.348000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -227.848000 79.271000 -236.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -227.848000 84.338000 -236.848000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 -227.848000 89.621000 -236.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 -227.848000 94.643000 -236.848000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 -227.848000 100.502000 -236.848000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 -227.848000 106.262000 -236.848000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 -227.848000 111.518000 -236.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 -227.848000 116.216000 -236.848000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 -227.848000 119.249000 -236.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 -227.848000 122.363000 -236.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 -227.848000 128.186000 -236.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 -227.848000 131.345000 -236.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 -227.848000 137.060000 -236.848000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 -227.848000 140.147000 -236.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 -227.848000 145.007000 -236.848000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 -227.848000 148.598000 -236.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 -227.848000 151.460000 -236.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 -227.848000 155.789000 -236.848000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 -227.848000 158.933000 -236.848000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -238.348000 80.702000 -247.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 -238.348000 83.573000 -247.348000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 -238.348000 89.396000 -247.348000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 -238.348000 95.156000 -247.348000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 -238.348000 100.547000 -247.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 -238.348000 109.052000 -247.348000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 -238.348000 111.959000 -247.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 -238.348000 117.251000 -247.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 -238.348000 121.904000 -247.348000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 -238.348000 126.503000 -247.348000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 -238.348000 129.338000 -247.348000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 -238.348000 134.936000 -247.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 -238.348000 143.441000 -247.348000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 -238.348000 148.796000 -247.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 -238.348000 154.574000 -247.348000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 -238.348000 158.876000 -247.348000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 -238.348000 161.853000 -247.348000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -248.848000 79.271000 -257.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -248.848000 85.094000 -257.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -248.848000 88.703000 -257.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 -248.848000 94.112000 -257.848000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 -248.848000 97.244000 -257.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 -248.848000 103.058000 -257.848000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 -248.848000 108.890000 -257.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 -248.848000 111.950000 -257.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 -248.848000 115.271000 -257.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 -248.848000 120.338000 -257.848000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 -248.848000 125.621000 -257.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 -248.848000 131.363000 -257.848000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 -248.848000 134.558000 -257.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 -248.848000 140.048000 -257.848000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 -248.848000 145.430000 -257.848000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 -248.848000 150.551000 -257.848000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 -248.848000 155.960000 -257.848000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 -248.848000 158.933000 -257.848000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -259.348000 80.009000 -268.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -259.348000 85.364000 -268.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 -259.348000 88.271000 -268.348000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 -259.348000 91.169000 -268.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 -259.348000 97.955000 -268.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 -259.348000 107.765000 -268.348000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 -259.348000 110.672000 -268.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 -259.348000 115.964000 -268.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 -259.348000 120.617000 -268.348000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 -259.348000 125.216000 -268.348000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 -259.348000 128.051000 -268.348000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 -259.348000 134.954000 -268.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 -259.348000 146.285000 -268.348000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 -259.348000 151.667000 -268.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 -259.348000 155.906000 -268.348000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 -259.348000 159.033000 -268.348000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -268.800000 0 72.100000 -268.800000 0 72.100000 -133.300000 0 72.000000 -133.300000 0 72.000000 -268.800000 0
+eoFillPath subpath 1 163.100000 -268.800000 0 163.200000 -268.800000 0 163.200000 -133.300000 0 163.100000 -133.300000 0 163.100000 -268.800000 0
+eoFillPath subpath 1 72.000000 -133.400000 0 163.200000 -133.400000 0 163.200000 -133.300000 0 72.000000 -133.300000 0 72.000000 -133.400000 0
+eoFillPath subpath 1 72.000000 -268.800000 0 163.200000 -268.800000 0 163.200000 -268.700000 0 72.000000 -268.700000 0 72.000000 -268.800000 0
+saveState
+eoClipPath subpath 1 96.900000 -193.500000 0 138.300000 -193.500000 0 138.300000 -149.300000 0 96.900000 -149.300000 0 96.900000 -193.500000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 98540.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -548.300000 0 165.500000 -548.300000 0 165.500000 -543.300000 0 76.900000 -543.300000 0 76.900000 -548.300000 0
+eoFillPath subpath 1 160.500000 -543.400000 0 165.500000 -543.400000 0 165.500000 -387.100000 0 160.500000 -387.100000 0 160.500000 -543.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -543.300000 0 121.400000 -543.300000 0 121.400000 -382.200000 0 72.000000 -382.200000 0 72.000000 -543.300000 0
+saveState
+eoClipPath subpath 1 72.000000 -543.300000 0 160.500000 -543.300000 0 160.500000 -382.200000 0 72.000000 -382.200000 0 72.000000 -543.300000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 135240.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 -386.520000 89.280000 -396.520000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 -386.520000 95.630000 -396.520000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 -386.520000 99.520000 -396.520000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 -386.520000 102.270000 -396.520000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 -386.520000 108.450000 -396.520000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 -386.520000 112.610000 -396.520000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 -386.520000 118.510000 -396.520000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 -386.520000 121.670000 -396.520000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 -386.520000 124.470000 -396.520000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 -386.520000 130.830000 -396.520000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 -386.520000 133.970000 -396.520000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 -386.520000 137.920000 -396.520000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 -386.520000 144.230000 -396.520000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 -386.520000 150.350000 -396.520000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 -386.520000 153.570000 -396.520000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 -398.220000 95.000000 -408.220000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 -398.220000 97.770000 -408.220000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 -398.220000 103.000000 -408.220000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 -398.220000 109.330000 -408.220000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 -398.220000 117.470000 -408.220000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 -398.220000 123.620000 -408.220000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 -398.220000 128.800000 -408.220000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 -398.220000 135.130000 -408.220000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 -398.220000 141.250000 -408.220000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 -398.220000 145.410000 -408.220000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -413.048000 82.961000 -422.048000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 -413.048000 87.614000 -422.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 -413.048000 93.356000 -422.048000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 -413.048000 98.612000 -422.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 -413.048000 103.733000 -422.048000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 -413.048000 106.568000 -422.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 -413.048000 111.959000 -422.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 -413.048000 114.866000 -422.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 -413.048000 117.665000 -422.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 -413.048000 122.768000 -422.048000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 -413.048000 125.747000 -422.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 -413.048000 131.651000 -422.048000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 -413.048000 136.907000 -422.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 -413.048000 142.307000 -422.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 -413.048000 148.049000 -422.048000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 -413.048000 150.956000 -422.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 -413.048000 156.302000 -422.048000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -413.048000 159.253000 -422.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -423.548000 84.095000 -432.548000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -423.548000 89.900000 -432.548000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 -423.548000 95.318000 -432.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 -423.548000 100.349000 -432.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 -423.548000 110.789000 -432.548000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 -423.548000 111.464000 -432.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 -423.548000 114.362000 -432.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 -423.548000 119.348000 -432.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 -423.548000 126.962000 -432.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 -423.548000 132.047000 -432.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 -423.548000 139.958000 -432.548000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 -423.548000 142.865000 -432.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 -423.548000 147.410000 -432.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 -423.548000 153.287000 -432.548000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -423.548000 156.333000 -432.548000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -434.048000 84.095000 -443.048000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -434.048000 89.468000 -443.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 -434.048000 94.121000 -443.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 -434.048000 99.899000 -443.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 -434.048000 105.218000 -443.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 -434.048000 109.502000 -443.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 -434.048000 115.649000 -443.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 -434.048000 122.327000 -443.048000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 -434.048000 127.718000 -443.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 -434.048000 132.002000 -443.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 -434.048000 138.149000 -443.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 -434.048000 145.205000 -443.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 -434.048000 150.992000 -443.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 -434.048000 156.311000 -443.048000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -434.048000 159.253000 -443.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -444.548000 82.394000 -453.548000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 -444.548000 86.705000 -453.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 -444.548000 91.322000 -453.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 -444.548000 94.913000 -453.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 -444.548000 98.054000 -453.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 -444.548000 102.014000 -453.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 -444.548000 104.876000 -453.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 -444.548000 113.435000 -453.548000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 -444.548000 118.718000 -453.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 -444.548000 121.949000 -453.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 -444.548000 125.063000 -453.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 -444.548000 130.886000 -453.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 -444.548000 134.045000 -453.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 -444.548000 138.005000 -453.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 -444.548000 143.792000 -453.548000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 -444.548000 149.111000 -453.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 -444.548000 151.964000 -453.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 -444.548000 156.293000 -453.548000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -444.548000 159.153000 -453.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -455.048000 79.271000 -464.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 -455.048000 82.169000 -464.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 -455.048000 85.526000 -464.048000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 -455.048000 90.818000 -464.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 -455.048000 94.454000 -464.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 -455.048000 99.008000 -464.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 -455.048000 104.318000 -464.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 -455.048000 110.096000 -464.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 -455.048000 115.856000 -464.048000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 -455.048000 119.546000 -464.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 -455.048000 124.001000 -464.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 -455.048000 129.509000 -464.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 -455.048000 133.145000 -464.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 -455.048000 139.751000 -464.048000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 -455.048000 145.205000 -464.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 -455.048000 148.841000 -464.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 -455.048000 152.657000 -464.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 -455.048000 156.293000 -464.048000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -455.048000 159.253000 -464.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -465.548000 84.095000 -474.548000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 -465.548000 88.406000 -474.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 -465.548000 93.824000 -474.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 -465.548000 99.602000 -474.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 -465.548000 105.362000 -474.548000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 -465.548000 108.422000 -474.548000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 -465.548000 116.747000 -474.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 -465.548000 129.275000 -474.548000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 -465.548000 135.089000 -474.548000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 -465.548000 138.698000 -474.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 -465.548000 141.560000 -474.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 -465.548000 146.906000 -474.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -465.548000 151.190000 -474.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 -465.548000 156.266000 -474.548000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -465.548000 159.253000 -474.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -476.048000 82.196000 -485.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 -476.048000 87.560000 -485.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 -476.048000 92.213000 -485.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 -476.048000 96.551000 -485.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 -476.048000 101.708000 -485.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 -476.048000 107.216000 -485.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 -476.048000 111.653000 -485.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 -476.048000 118.961000 -485.048000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 -476.048000 124.316000 -485.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 -476.048000 128.654000 -485.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 -476.048000 133.172000 -485.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 -476.048000 138.995000 -485.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 -476.048000 143.612000 -485.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 -476.048000 148.913000 -485.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 -476.048000 153.197000 -485.048000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -476.048000 156.333000 -485.048000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -486.548000 80.009000 -495.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -486.548000 85.319000 -495.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 -486.548000 91.061000 -495.548000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 -486.548000 100.052000 -495.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 -486.548000 113.993000 -495.548000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 -486.548000 116.873000 -495.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 -486.548000 120.410000 -495.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 -486.548000 126.296000 -495.548000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 -486.548000 135.350000 -495.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 -486.548000 145.106000 -495.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 -486.548000 150.893000 -495.548000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 -486.548000 156.212000 -495.548000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -486.548000 159.253000 -495.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -497.048000 82.196000 -506.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 -497.048000 87.560000 -506.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 -497.048000 93.392000 -506.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 -497.048000 99.152000 -506.048000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 -497.048000 101.960000 -506.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 -497.048000 107.306000 -506.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 -497.048000 111.905000 -506.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 -497.048000 115.640000 -506.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 -497.048000 122.444000 -506.048000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 -497.048000 127.898000 -506.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 -497.048000 135.575000 -506.048000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 -497.048000 141.380000 -506.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 -497.048000 145.241000 -506.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 -497.048000 150.803000 -506.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 -497.048000 156.302000 -506.048000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -497.048000 159.253000 -506.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -507.548000 80.009000 -516.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -507.548000 85.796000 -516.548000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 -507.548000 91.115000 -516.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 -507.548000 95.399000 -516.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 -507.548000 100.718000 -516.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 -507.548000 107.054000 -516.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 -507.548000 118.097000 -516.548000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 -507.548000 123.524000 -516.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 -507.548000 129.401000 -516.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 -507.548000 131.768000 -516.548000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 -507.548000 135.413000 -516.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 -507.548000 141.659000 -516.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 -507.548000 150.965000 -516.548000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 -507.548000 156.320000 -516.548000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -507.548000 159.253000 -516.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -518.048000 81.017000 -527.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 -518.048000 84.608000 -527.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 -518.048000 89.963000 -527.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 -518.048000 92.870000 -527.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 -518.048000 98.693000 -527.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 -518.048000 103.310000 -527.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 -518.048000 107.243000 -527.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 -518.048000 116.081000 -527.048000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 -518.048000 121.886000 -527.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 -518.048000 127.205000 -527.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 -518.048000 132.983000 -527.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 -518.048000 136.943000 -527.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 -518.048000 143.846000 -527.048000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 -518.048000 148.184000 -527.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 -518.048000 153.260000 -527.048000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -518.048000 156.433000 -527.048000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -528.548000 79.271000 -537.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -528.548000 85.094000 -537.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -528.548000 90.854000 -537.548000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 -528.548000 93.653000 -537.548000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -543.400000 0 72.100000 -543.400000 0 72.100000 -382.200000 0 72.000000 -382.200000 0 72.000000 -543.400000 0
+eoFillPath subpath 1 160.500000 -543.400000 0 160.600000 -543.400000 0 160.600000 -382.200000 0 160.500000 -382.200000 0 160.500000 -543.400000 0
+eoFillPath subpath 1 72.000000 -382.300000 0 160.600000 -382.300000 0 160.600000 -382.200000 0 72.000000 -382.200000 0 72.000000 -382.300000 0
+eoFillPath subpath 1 72.000000 -543.400000 0 160.600000 -543.400000 0 160.600000 -543.300000 0 72.000000 -543.300000 0 72.000000 -543.400000 0
+saveState
+eoClipPath subpath 1 108.000000 -1030.800000 0 178.900000 -1030.800000 0 178.900000 -974.100000 0 108.000000 -974.100000 0 108.000000 -1030.800000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 182270.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -5089.100000 0 165.500000 -5089.100000 0 165.500000 -5084.100000 0 76.900000 -5084.100000 0 76.900000 -5089.100000 0
+eoFillPath subpath 1 160.500000 -5084.200000 0 165.500000 -5084.200000 0 165.500000 -4975.400000 0 160.500000 -4975.400000 0 160.500000 -5084.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -5084.100000 0 160.500000 -5084.100000 0 160.500000 -4970.500000 0 72.000000 -4970.500000 0 72.000000 -5084.100000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4974.848000 83.771000 -4983.848000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 -4974.848000 89.594000 -4983.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 -4974.848000 92.465000 -4983.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 -4974.848000 97.568000 -4983.848000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 -4974.848000 100.943000 -4983.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 -4974.848000 106.955000 -4983.848000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 -4974.848000 110.447000 -4983.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 -4974.848000 114.425000 -4983.848000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 -4974.848000 119.717000 -4983.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 -4974.848000 127.493000 -4983.848000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 -4974.848000 130.949000 -4983.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 -4974.848000 136.574000 -4983.848000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 -4974.848000 141.920000 -4983.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 -4974.848000 147.365000 -4983.848000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 -4974.848000 151.703000 -4983.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 -4974.848000 156.320000 -4983.848000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -4974.848000 159.153000 -4983.848000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4985.348000 81.764000 -4994.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -4985.348000 85.130000 -4994.348000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 -4985.348000 88.712000 -4994.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 -4985.348000 94.022000 -4994.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 -4985.348000 98.306000 -4994.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -4985.348000 102.455000 -4994.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 -4985.348000 106.676000 -4994.348000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 -4985.348000 110.312000 -4994.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 -4985.348000 114.920000 -4994.348000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 -4985.348000 119.060000 -4994.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 -4985.348000 125.450000 -4994.348000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 -4985.348000 130.832000 -4994.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 -4985.348000 139.445000 -4994.348000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 -4985.348000 145.169000 -4994.348000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 -4985.348000 148.076000 -4994.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 -4985.348000 153.323000 -4994.348000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -4985.348000 156.433000 -4994.348000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4995.848000 80.009000 -5004.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -4995.848000 82.871000 -5004.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 -4995.848000 88.316000 -5004.848000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 -4995.848000 94.094000 -5004.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 -4995.848000 96.947000 -5004.848000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 -4995.848000 104.948000 -5004.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 -4995.848000 113.705000 -5004.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 -4995.848000 119.492000 -5004.848000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 -4995.848000 124.811000 -5004.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 -4995.848000 132.848000 -5004.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 -4995.848000 141.605000 -5004.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 -4995.848000 144.467000 -5004.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 -4995.848000 148.103000 -5004.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 -4995.848000 150.965000 -5004.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 -4995.848000 156.311000 -5004.848000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -4995.848000 159.253000 -5004.848000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5006.348000 80.999000 -5015.348000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 -5006.348000 90.539000 -5015.348000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 -5006.348000 95.318000 -5015.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 -5006.348000 99.602000 -5015.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -5006.348000 102.473000 -5015.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 -5006.348000 108.260000 -5015.348000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 -5006.348000 110.762000 -5015.348000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 -5006.348000 115.316000 -5015.348000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 -5006.348000 122.156000 -5015.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 -5006.348000 132.299000 -5015.348000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 -5006.348000 136.970000 -5015.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 -5006.348000 139.877000 -5015.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 -5006.348000 142.775000 -5015.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 -5006.348000 148.022000 -5015.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 -5006.348000 152.720000 -5015.348000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 -5006.348000 156.311000 -5015.348000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -5006.348000 159.253000 -5015.348000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5016.848000 83.006000 -5025.848000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 -5016.848000 88.793000 -5025.848000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 -5016.848000 91.664000 -5025.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 -5016.848000 94.562000 -5025.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 -5016.848000 100.349000 -5025.848000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 -5016.848000 103.157000 -5025.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 -5016.848000 108.980000 -5025.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 -5016.848000 114.740000 -5025.848000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 -5016.848000 119.375000 -5025.848000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 -5016.848000 128.033000 -5025.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 -5016.848000 141.479000 -5025.848000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 -5016.848000 146.807000 -5025.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -5016.848000 152.684000 -5025.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 -5016.848000 156.293000 -5025.848000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -5016.848000 159.253000 -5025.848000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5027.348000 79.730000 -5036.348000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 -5027.348000 84.005000 -5036.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 -5027.348000 89.423000 -5036.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 -5027.348000 98.036000 -5036.348000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 -5027.348000 121.157000 -5036.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 -5027.348000 145.115000 -5036.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 -5027.348000 151.001000 -5036.348000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 -5027.348000 156.320000 -5036.348000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -5027.348000 159.253000 -5036.348000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5037.848000 83.285000 -5046.848000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 -5037.848000 89.099000 -5046.848000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 -5037.848000 93.401000 -5046.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 -5037.848000 98.477000 -5046.848000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 -5037.848000 103.121000 -5046.848000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 -5037.848000 105.974000 -5046.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 -5037.848000 111.320000 -5046.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 -5037.848000 115.604000 -5046.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 -5037.848000 123.857000 -5046.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 -5037.848000 136.007000 -5046.848000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 -5037.848000 141.794000 -5046.848000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 -5037.848000 144.665000 -5046.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 -5037.848000 147.464000 -5046.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 -5037.848000 153.251000 -5046.848000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -5037.848000 156.433000 -5046.848000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5048.348000 79.271000 -5057.348000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -5048.348000 85.094000 -5057.348000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -5048.348000 90.854000 -5057.348000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 -5048.348000 96.146000 -5057.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 -5048.348000 102.302000 -5057.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 -5048.348000 107.711000 -5057.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 -5048.348000 113.048000 -5057.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 -5048.348000 119.204000 -5057.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 -5048.348000 124.991000 -5057.348000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 -5048.348000 130.310000 -5057.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 -5048.348000 135.647000 -5057.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 -5048.348000 144.755000 -5057.348000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 -5048.348000 153.323000 -5057.348000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -5048.348000 156.333000 -5057.348000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5058.848000 82.160000 -5067.848000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 -5058.848000 85.067000 -5067.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 -5058.848000 89.297000 -5067.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 -5058.848000 94.616000 -5067.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 -5058.848000 98.747000 -5067.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 -5058.848000 106.055000 -5067.848000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 -5058.848000 109.700000 -5067.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 -5058.848000 115.055000 -5067.848000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 -5058.848000 118.601000 -5067.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 -5058.848000 124.010000 -5067.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 -5058.848000 128.042000 -5067.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 -5058.848000 135.998000 -5067.848000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 -5058.848000 141.785000 -5067.848000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 -5058.848000 144.656000 -5067.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 -5058.848000 147.554000 -5067.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 -5058.848000 153.341000 -5067.848000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -5058.848000 156.433000 -5067.848000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -5069.348000 79.271000 -5078.348000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -5069.348000 85.094000 -5078.348000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -5069.348000 90.854000 -5078.348000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 -5069.348000 93.743000 -5078.348000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -5084.200000 0 72.100000 -5084.200000 0 72.100000 -4970.500000 0 72.000000 -4970.500000 0 72.000000 -5084.200000 0
+eoFillPath subpath 1 160.500000 -5084.200000 0 160.600000 -5084.200000 0 160.600000 -4970.500000 0 160.500000 -4970.500000 0 160.500000 -5084.200000 0
+eoFillPath subpath 1 72.000000 -4970.600000 0 160.600000 -4970.600000 0 160.600000 -4970.500000 0 72.000000 -4970.500000 0 72.000000 -4970.600000 0
+eoFillPath subpath 1 72.000000 -5084.200000 0 160.600000 -5084.200000 0 160.600000 -5084.100000 0 72.000000 -5084.100000 0 72.000000 -5084.200000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 1105.400000 0 169.600000 1105.400000 0 169.600000 1110.400000 0 76.900000 1110.400000 0 76.900000 1105.400000 0
+eoFillPath subpath 1 164.600000 1110.300000 0 169.600000 1110.300000 0 169.600000 1225.900000 0 164.600000 1225.900000 0 164.600000 1110.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1110.400000 0 121.400000 1110.400000 0 121.400000 1230.800000 0 72.000000 1230.800000 0 72.000000 1110.400000 0
+saveState
+eoClipPath subpath 1 72.000000 1110.300000 0 164.600000 1110.300000 0 164.600000 1230.700000 0 72.000000 1230.700000 0 72.000000 1110.300000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -26010.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1180.300000 0 93.700000 1180.300000 0 93.700000 1199.500000 0 72.000000 1199.500000 0 72.000000 1180.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 1180.300000 0 169.600000 1180.300000 0 169.600000 1199.500000 0 93.700000 1199.500000 0 93.700000 1180.300000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1163.600000 0 93.700000 1163.600000 0 93.700000 1180.300000 0 72.000000 1180.300000 0 72.000000 1163.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 1163.600000 0 169.600000 1163.600000 0 169.600000 1180.300000 0 93.700000 1180.300000 0 93.700000 1163.600000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1144.400000 0 93.700000 1144.400000 0 93.700000 1163.600000 0 72.000000 1163.600000 0 72.000000 1144.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 1144.400000 0 169.600000 1144.400000 0 169.600000 1163.600000 0 93.700000 1163.600000 0 93.700000 1144.400000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 1125.200000 0 93.700000 1125.200000 0 93.700000 1144.400000 0 72.000000 1144.400000 0 72.000000 1125.200000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 1125.200000 0 169.600000 1125.200000 0 169.600000 1144.400000 0 93.700000 1144.400000 0 93.700000 1125.200000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1226.452000 82.898000 1217.452000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 1226.452000 87.200000 1217.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 1226.452000 90.809000 1217.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 1226.452000 93.671000 1217.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 1226.452000 98.315000 1217.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 1226.452000 101.906000 1217.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 1226.452000 106.514000 1217.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 1226.452000 109.754000 1217.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 1226.452000 112.868000 1217.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 1226.452000 118.691000 1217.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 1226.452000 121.850000 1217.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 1226.452000 125.702000 1217.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 1226.452000 131.588000 1217.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 1226.452000 136.907000 1217.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 1226.452000 140.039000 1217.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 1226.452000 146.078000 1217.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 1226.452000 151.442000 1217.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 1226.452000 154.349000 1217.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 1226.452000 157.148000 1217.452000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 1226.452000 160.433000 1217.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1215.952000 84.095000 1206.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 1215.952000 89.468000 1206.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 1215.952000 94.580000 1206.952000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 1215.952000 97.631000 1206.952000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 1195.552000 104.443000 1186.552000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 1195.552000 109.060000 1186.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 1195.552000 113.398000 1186.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 1195.552000 119.194000 1186.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 1195.552000 124.612000 1186.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 1195.552000 127.465000 1186.552000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 1178.852000 101.176000 1169.852000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 1178.852000 104.074000 1169.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 1178.852000 109.420000 1169.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 1178.852000 114.442000 1169.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 1178.852000 120.202000 1169.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 1178.852000 123.811000 1169.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 1178.852000 129.121000 1169.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 1178.852000 134.899000 1169.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 1178.852000 139.516000 1169.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 1178.852000 143.107000 1169.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 1178.852000 148.417000 1169.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 1178.852000 151.270000 1169.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 1178.852000 157.093000 1169.852000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 1162.152000 103.048000 1153.152000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 1162.152000 108.421000 1153.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 1162.152000 113.443000 1153.152000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 1162.152000 118.852000 1153.152000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 1162.152000 124.702000 1153.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 1162.152000 130.021000 1153.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 1162.152000 135.079000 1153.152000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 1142.952000 104.407000 1133.952000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 1142.952000 109.816000 1133.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 1142.952000 115.594000 1133.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 1142.952000 121.354000 1133.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 1142.952000 125.692000 1133.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 1142.952000 128.563000 1133.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 1142.952000 133.954000 1133.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 1142.952000 139.786000 1133.952000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 1110.300000 0 72.100000 1110.300000 0 72.100000 1230.800000 0 72.000000 1230.800000 0 72.000000 1110.300000 0
+eoFillPath subpath 1 164.600000 1110.300000 0 164.700000 1110.300000 0 164.700000 1230.800000 0 164.600000 1230.800000 0 164.600000 1110.300000 0
+eoFillPath subpath 1 72.000000 1230.700000 0 164.700000 1230.700000 0 164.700000 1230.800000 0 72.000000 1230.800000 0 72.000000 1230.700000 0
+eoFillPath subpath 1 72.000000 1110.300000 0 164.700000 1110.300000 0 164.700000 1110.400000 0 72.000000 1110.400000 0 72.000000 1110.300000 0
+eoFillPath subpath 1 91.300000 1125.200000 0 93.700000 1125.200000 0 93.700000 1199.500000 0 91.300000 1199.500000 0 91.300000 1125.200000 0
+eoFillPath subpath 1 72.000000 1144.400000 0 169.600000 1144.400000 0 169.600000 1146.800000 0 72.000000 1146.800000 0 72.000000 1144.400000 0
+eoFillPath subpath 1 72.000000 1197.100000 0 169.600000 1197.100000 0 169.600000 1199.500000 0 72.000000 1199.500000 0 72.000000 1197.100000 0
+eoFillPath subpath 1 72.000000 1125.200000 0 169.600000 1125.200000 0 169.600000 1127.600000 0 72.000000 1127.600000 0 72.000000 1125.200000 0
+saveState
+eoClipPath subpath 1 108.000000 -6740.800000 0 150.800000 -6740.800000 0 150.800000 -6696.600000 0 108.000000 -6696.600000 0 108.000000 -6740.800000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 753280.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -7590.800000 0 499.600000 -7590.800000 0 499.600000 -7585.700000 0 186.800000 -7585.700000 0 186.800000 -7590.800000 0
+eoFillPath subpath 1 494.500000 -7585.800000 0 499.600000 -7585.800000 0 499.600000 -7397.400000 0 494.500000 -7397.400000 0 494.500000 -7585.800000 0
+saveState
+eoClipPath subpath 1 181.800000 -7585.800000 0 494.500000 -7585.800000 0 494.500000 -7392.400000 0 181.800000 -7392.400000 0 181.800000 -7585.800000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -7392.300000 0 494.500000 -7392.300000 0 494.500000 -7392.300000 0 181.700000 -7392.300000 0
+eoFillPath subpath 1 181.700000 -7392.300000 0 494.500000 -7392.300000 0 494.500000 -7393.100000 0 181.700000 -7393.100000 0 181.700000 -7392.300000 0
+eoFillPath subpath 1 181.700000 -7393.100000 0 494.500000 -7393.100000 0 494.500000 -7393.800000 0 181.700000 -7393.800000 0 181.700000 -7393.100000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -7393.800000 0 494.500000 -7393.800000 0 494.500000 -7394.600000 0 181.700000 -7394.600000 0 181.700000 -7393.800000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -7394.600000 0 494.500000 -7394.600000 0 494.500000 -7395.400000 0 181.700000 -7395.400000 0 181.700000 -7394.600000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -7395.400000 0 494.500000 -7395.400000 0 494.500000 -7396.100000 0 181.700000 -7396.100000 0 181.700000 -7395.400000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -7396.100000 0 494.500000 -7396.100000 0 494.500000 -7396.900000 0 181.700000 -7396.900000 0 181.700000 -7396.100000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -7396.900000 0 494.500000 -7396.900000 0 494.500000 -7397.600000 0 181.700000 -7397.600000 0 181.700000 -7396.900000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -7397.600000 0 494.500000 -7397.600000 0 494.500000 -7398.400000 0 181.700000 -7398.400000 0 181.700000 -7397.600000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -7398.400000 0 494.500000 -7398.400000 0 494.500000 -7399.100000 0 181.700000 -7399.100000 0 181.700000 -7398.400000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -7399.100000 0 494.500000 -7399.100000 0 494.500000 -7399.900000 0 181.700000 -7399.900000 0 181.700000 -7399.100000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -7399.900000 0 494.500000 -7399.900000 0 494.500000 -7400.700000 0 181.700000 -7400.700000 0 181.700000 -7399.900000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -7400.700000 0 494.500000 -7400.700000 0 494.500000 -7401.400000 0 181.700000 -7401.400000 0 181.700000 -7400.700000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -7401.400000 0 494.500000 -7401.400000 0 494.500000 -7402.200000 0 181.700000 -7402.200000 0 181.700000 -7401.400000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -7402.200000 0 494.500000 -7402.200000 0 494.500000 -7402.900000 0 181.700000 -7402.900000 0 181.700000 -7402.200000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -7402.900000 0 494.500000 -7402.900000 0 494.500000 -7403.700000 0 181.700000 -7403.700000 0 181.700000 -7402.900000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -7403.700000 0 494.500000 -7403.700000 0 494.500000 -7404.500000 0 181.700000 -7404.500000 0 181.700000 -7403.700000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -7404.500000 0 494.500000 -7404.500000 0 494.500000 -7405.200000 0 181.700000 -7405.200000 0 181.700000 -7404.500000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -7405.200000 0 494.500000 -7405.200000 0 494.500000 -7406.000000 0 181.700000 -7406.000000 0 181.700000 -7405.200000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -7406.000000 0 494.500000 -7406.000000 0 494.500000 -7406.700000 0 181.700000 -7406.700000 0 181.700000 -7406.000000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -7406.700000 0 494.500000 -7406.700000 0 494.500000 -7407.500000 0 181.700000 -7407.500000 0 181.700000 -7406.700000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -7407.500000 0 494.500000 -7407.500000 0 494.500000 -7408.300000 0 181.700000 -7408.300000 0 181.700000 -7407.500000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -7408.300000 0 494.500000 -7408.300000 0 494.500000 -7409.000000 0 181.700000 -7409.000000 0 181.700000 -7408.300000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -7409.000000 0 494.500000 -7409.000000 0 494.500000 -7409.800000 0 181.700000 -7409.800000 0 181.700000 -7409.000000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -7409.800000 0 494.500000 -7409.800000 0 494.500000 -7410.500000 0 181.700000 -7410.500000 0 181.700000 -7409.800000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -7410.500000 0 494.500000 -7410.500000 0 494.500000 -7411.300000 0 181.700000 -7411.300000 0 181.700000 -7410.500000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -7411.300000 0 494.500000 -7411.300000 0 494.500000 -7412.000000 0 181.700000 -7412.000000 0 181.700000 -7411.300000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -7412.000000 0 494.500000 -7412.000000 0 494.500000 -7412.800000 0 181.700000 -7412.800000 0 181.700000 -7412.000000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -7412.800000 0 494.500000 -7412.800000 0 494.500000 -7413.600000 0 181.700000 -7413.600000 0 181.700000 -7412.800000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -7413.600000 0 494.500000 -7413.600000 0 494.500000 -7414.300000 0 181.700000 -7414.300000 0 181.700000 -7413.600000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -7414.300000 0 494.500000 -7414.300000 0 494.500000 -7415.100000 0 181.700000 -7415.100000 0 181.700000 -7414.300000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -7415.100000 0 494.500000 -7415.100000 0 494.500000 -7415.800000 0 181.700000 -7415.800000 0 181.700000 -7415.100000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -7415.800000 0 494.500000 -7415.800000 0 494.500000 -7416.600000 0 181.700000 -7416.600000 0 181.700000 -7415.800000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -7416.600000 0 494.500000 -7416.600000 0 494.500000 -7417.400000 0 181.700000 -7417.400000 0 181.700000 -7416.600000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -7417.400000 0 494.500000 -7417.400000 0 494.500000 -7418.100000 0 181.700000 -7418.100000 0 181.700000 -7417.400000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -7418.100000 0 494.500000 -7418.100000 0 494.500000 -7418.900000 0 181.700000 -7418.900000 0 181.700000 -7418.100000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -7418.900000 0 494.500000 -7418.900000 0 494.500000 -7419.600000 0 181.700000 -7419.600000 0 181.700000 -7418.900000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -7419.600000 0 494.500000 -7419.600000 0 494.500000 -7420.400000 0 181.700000 -7420.400000 0 181.700000 -7419.600000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -7420.400000 0 494.500000 -7420.400000 0 494.500000 -7421.200000 0 181.700000 -7421.200000 0 181.700000 -7420.400000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -7421.200000 0 494.500000 -7421.200000 0 494.500000 -7421.900000 0 181.700000 -7421.900000 0 181.700000 -7421.200000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -7421.900000 0 494.500000 -7421.900000 0 494.500000 -7422.700000 0 181.700000 -7422.700000 0 181.700000 -7421.900000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -7422.700000 0 494.500000 -7422.700000 0 494.500000 -7423.400000 0 181.700000 -7423.400000 0 181.700000 -7422.700000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -7423.400000 0 494.500000 -7423.400000 0 494.500000 -7424.200000 0 181.700000 -7424.200000 0 181.700000 -7423.400000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -7424.200000 0 494.500000 -7424.200000 0 494.500000 -7424.900000 0 181.700000 -7424.900000 0 181.700000 -7424.200000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -7424.900000 0 494.500000 -7424.900000 0 494.500000 -7425.700000 0 181.700000 -7425.700000 0 181.700000 -7424.900000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -7425.700000 0 494.500000 -7425.700000 0 494.500000 -7426.500000 0 181.700000 -7426.500000 0 181.700000 -7425.700000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -7426.500000 0 494.500000 -7426.500000 0 494.500000 -7427.200000 0 181.700000 -7427.200000 0 181.700000 -7426.500000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -7427.200000 0 494.500000 -7427.200000 0 494.500000 -7428.000000 0 181.700000 -7428.000000 0 181.700000 -7427.200000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -7428.000000 0 494.500000 -7428.000000 0 494.500000 -7428.700000 0 181.700000 -7428.700000 0 181.700000 -7428.000000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -7428.700000 0 494.500000 -7428.700000 0 494.500000 -7429.500000 0 181.700000 -7429.500000 0 181.700000 -7428.700000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -7429.500000 0 494.500000 -7429.500000 0 494.500000 -7430.300000 0 181.700000 -7430.300000 0 181.700000 -7429.500000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -7430.300000 0 494.500000 -7430.300000 0 494.500000 -7431.000000 0 181.700000 -7431.000000 0 181.700000 -7430.300000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -7431.000000 0 494.500000 -7431.000000 0 494.500000 -7431.800000 0 181.700000 -7431.800000 0 181.700000 -7431.000000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -7431.800000 0 494.500000 -7431.800000 0 494.500000 -7432.500000 0 181.700000 -7432.500000 0 181.700000 -7431.800000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -7432.500000 0 494.500000 -7432.500000 0 494.500000 -7433.300000 0 181.700000 -7433.300000 0 181.700000 -7432.500000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -7433.300000 0 494.500000 -7433.300000 0 494.500000 -7434.100000 0 181.700000 -7434.100000 0 181.700000 -7433.300000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -7434.100000 0 494.500000 -7434.100000 0 494.500000 -7434.800000 0 181.700000 -7434.800000 0 181.700000 -7434.100000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -7434.800000 0 494.500000 -7434.800000 0 494.500000 -7435.600000 0 181.700000 -7435.600000 0 181.700000 -7434.800000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -7435.600000 0 494.500000 -7435.600000 0 494.500000 -7436.300000 0 181.700000 -7436.300000 0 181.700000 -7435.600000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -7436.300000 0 494.500000 -7436.300000 0 494.500000 -7437.100000 0 181.700000 -7437.100000 0 181.700000 -7436.300000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -7437.100000 0 494.500000 -7437.100000 0 494.500000 -7437.800000 0 181.700000 -7437.800000 0 181.700000 -7437.100000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -7437.800000 0 494.500000 -7437.800000 0 494.500000 -7438.600000 0 181.700000 -7438.600000 0 181.700000 -7437.800000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -7438.600000 0 494.500000 -7438.600000 0 494.500000 -7439.400000 0 181.700000 -7439.400000 0 181.700000 -7438.600000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -7439.400000 0 494.500000 -7439.400000 0 494.500000 -7440.100000 0 181.700000 -7440.100000 0 181.700000 -7439.400000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -7440.100000 0 494.500000 -7440.100000 0 494.500000 -7440.900000 0 181.700000 -7440.900000 0 181.700000 -7440.100000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -7440.900000 0 494.500000 -7440.900000 0 494.500000 -7441.600000 0 181.700000 -7441.600000 0 181.700000 -7440.900000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -7441.600000 0 494.500000 -7441.600000 0 494.500000 -7442.400000 0 181.700000 -7442.400000 0 181.700000 -7441.600000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -7442.400000 0 494.500000 -7442.400000 0 494.500000 -7443.200000 0 181.700000 -7443.200000 0 181.700000 -7442.400000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -7443.200000 0 494.500000 -7443.200000 0 494.500000 -7443.900000 0 181.700000 -7443.900000 0 181.700000 -7443.200000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -7443.900000 0 494.500000 -7443.900000 0 494.500000 -7444.700000 0 181.700000 -7444.700000 0 181.700000 -7443.900000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -7444.700000 0 494.500000 -7444.700000 0 494.500000 -7445.400000 0 181.700000 -7445.400000 0 181.700000 -7444.700000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -7445.400000 0 494.500000 -7445.400000 0 494.500000 -7446.200000 0 181.700000 -7446.200000 0 181.700000 -7445.400000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -7446.200000 0 494.500000 -7446.200000 0 494.500000 -7447.000000 0 181.700000 -7447.000000 0 181.700000 -7446.200000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -7447.000000 0 494.500000 -7447.000000 0 494.500000 -7447.700000 0 181.700000 -7447.700000 0 181.700000 -7447.000000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -7447.700000 0 494.500000 -7447.700000 0 494.500000 -7448.500000 0 181.700000 -7448.500000 0 181.700000 -7447.700000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -7448.500000 0 494.500000 -7448.500000 0 494.500000 -7449.200000 0 181.700000 -7449.200000 0 181.700000 -7448.500000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -7449.200000 0 494.500000 -7449.200000 0 494.500000 -7450.000000 0 181.700000 -7450.000000 0 181.700000 -7449.200000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -7450.000000 0 494.500000 -7450.000000 0 494.500000 -7450.700000 0 181.700000 -7450.700000 0 181.700000 -7450.000000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -7450.700000 0 494.500000 -7450.700000 0 494.500000 -7451.500000 0 181.700000 -7451.500000 0 181.700000 -7450.700000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -7451.500000 0 494.500000 -7451.500000 0 494.500000 -7452.300000 0 181.700000 -7452.300000 0 181.700000 -7451.500000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -7452.300000 0 494.500000 -7452.300000 0 494.500000 -7453.000000 0 181.700000 -7453.000000 0 181.700000 -7452.300000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -7453.000000 0 494.500000 -7453.000000 0 494.500000 -7453.800000 0 181.700000 -7453.800000 0 181.700000 -7453.000000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -7453.800000 0 494.500000 -7453.800000 0 494.500000 -7454.500000 0 181.700000 -7454.500000 0 181.700000 -7453.800000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -7454.500000 0 494.500000 -7454.500000 0 494.500000 -7455.300000 0 181.700000 -7455.300000 0 181.700000 -7454.500000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -7455.300000 0 494.500000 -7455.300000 0 494.500000 -7456.100000 0 181.700000 -7456.100000 0 181.700000 -7455.300000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -7456.100000 0 494.500000 -7456.100000 0 494.500000 -7456.800000 0 181.700000 -7456.800000 0 181.700000 -7456.100000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -7456.800000 0 494.500000 -7456.800000 0 494.500000 -7457.600000 0 181.700000 -7457.600000 0 181.700000 -7456.800000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -7457.600000 0 494.500000 -7457.600000 0 494.500000 -7458.300000 0 181.700000 -7458.300000 0 181.700000 -7457.600000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -7458.300000 0 494.500000 -7458.300000 0 494.500000 -7459.100000 0 181.700000 -7459.100000 0 181.700000 -7458.300000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -7459.100000 0 494.500000 -7459.100000 0 494.500000 -7459.900000 0 181.700000 -7459.900000 0 181.700000 -7459.100000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -7459.900000 0 494.500000 -7459.900000 0 494.500000 -7460.600000 0 181.700000 -7460.600000 0 181.700000 -7459.900000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -7460.600000 0 494.500000 -7460.600000 0 494.500000 -7461.400000 0 181.700000 -7461.400000 0 181.700000 -7460.600000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -7461.400000 0 494.500000 -7461.400000 0 494.500000 -7462.100000 0 181.700000 -7462.100000 0 181.700000 -7461.400000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -7462.100000 0 494.500000 -7462.100000 0 494.500000 -7462.900000 0 181.700000 -7462.900000 0 181.700000 -7462.100000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -7462.900000 0 494.500000 -7462.900000 0 494.500000 -7463.600000 0 181.700000 -7463.600000 0 181.700000 -7462.900000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -7463.600000 0 494.500000 -7463.600000 0 494.500000 -7464.400000 0 181.700000 -7464.400000 0 181.700000 -7463.600000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -7464.400000 0 494.500000 -7464.400000 0 494.500000 -7465.200000 0 181.700000 -7465.200000 0 181.700000 -7464.400000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -7465.200000 0 494.500000 -7465.200000 0 494.500000 -7465.900000 0 181.700000 -7465.900000 0 181.700000 -7465.200000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -7465.900000 0 494.500000 -7465.900000 0 494.500000 -7466.700000 0 181.700000 -7466.700000 0 181.700000 -7465.900000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -7466.700000 0 494.500000 -7466.700000 0 494.500000 -7467.400000 0 181.700000 -7467.400000 0 181.700000 -7466.700000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -7467.400000 0 494.500000 -7467.400000 0 494.500000 -7468.200000 0 181.700000 -7468.200000 0 181.700000 -7467.400000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -7468.200000 0 494.500000 -7468.200000 0 494.500000 -7469.000000 0 181.700000 -7469.000000 0 181.700000 -7468.200000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -7469.000000 0 494.500000 -7469.000000 0 494.500000 -7469.700000 0 181.700000 -7469.700000 0 181.700000 -7469.000000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -7469.700000 0 494.500000 -7469.700000 0 494.500000 -7470.500000 0 181.700000 -7470.500000 0 181.700000 -7469.700000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -7470.500000 0 494.500000 -7470.500000 0 494.500000 -7471.200000 0 181.700000 -7471.200000 0 181.700000 -7470.500000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -7471.200000 0 494.500000 -7471.200000 0 494.500000 -7472.000000 0 181.700000 -7472.000000 0 181.700000 -7471.200000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -7472.000000 0 494.500000 -7472.000000 0 494.500000 -7472.700000 0 181.700000 -7472.700000 0 181.700000 -7472.000000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -7472.700000 0 494.500000 -7472.700000 0 494.500000 -7473.500000 0 181.700000 -7473.500000 0 181.700000 -7472.700000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -7473.500000 0 494.500000 -7473.500000 0 494.500000 -7474.300000 0 181.700000 -7474.300000 0 181.700000 -7473.500000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -7474.300000 0 494.500000 -7474.300000 0 494.500000 -7475.000000 0 181.700000 -7475.000000 0 181.700000 -7474.300000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -7475.000000 0 494.500000 -7475.000000 0 494.500000 -7475.800000 0 181.700000 -7475.800000 0 181.700000 -7475.000000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -7475.800000 0 494.500000 -7475.800000 0 494.500000 -7476.500000 0 181.700000 -7476.500000 0 181.700000 -7475.800000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -7476.500000 0 494.500000 -7476.500000 0 494.500000 -7477.300000 0 181.700000 -7477.300000 0 181.700000 -7476.500000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -7477.300000 0 494.500000 -7477.300000 0 494.500000 -7478.100000 0 181.700000 -7478.100000 0 181.700000 -7477.300000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -7478.100000 0 494.500000 -7478.100000 0 494.500000 -7478.800000 0 181.700000 -7478.800000 0 181.700000 -7478.100000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -7478.800000 0 494.500000 -7478.800000 0 494.500000 -7479.600000 0 181.700000 -7479.600000 0 181.700000 -7478.800000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -7479.600000 0 494.500000 -7479.600000 0 494.500000 -7480.300000 0 181.700000 -7480.300000 0 181.700000 -7479.600000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -7480.300000 0 494.500000 -7480.300000 0 494.500000 -7481.100000 0 181.700000 -7481.100000 0 181.700000 -7480.300000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -7481.100000 0 494.500000 -7481.100000 0 494.500000 -7481.800000 0 181.700000 -7481.800000 0 181.700000 -7481.100000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -7481.800000 0 494.500000 -7481.800000 0 494.500000 -7482.600000 0 181.700000 -7482.600000 0 181.700000 -7481.800000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -7482.600000 0 494.500000 -7482.600000 0 494.500000 -7483.400000 0 181.700000 -7483.400000 0 181.700000 -7482.600000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -7483.400000 0 494.500000 -7483.400000 0 494.500000 -7484.100000 0 181.700000 -7484.100000 0 181.700000 -7483.400000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -7484.100000 0 494.500000 -7484.100000 0 494.500000 -7484.900000 0 181.700000 -7484.900000 0 181.700000 -7484.100000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -7484.900000 0 494.500000 -7484.900000 0 494.500000 -7485.600000 0 181.700000 -7485.600000 0 181.700000 -7484.900000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -7485.600000 0 494.500000 -7485.600000 0 494.500000 -7486.400000 0 181.700000 -7486.400000 0 181.700000 -7485.600000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -7486.400000 0 494.500000 -7486.400000 0 494.500000 -7487.100000 0 181.700000 -7487.100000 0 181.700000 -7486.400000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -7487.100000 0 494.500000 -7487.100000 0 494.500000 -7487.900000 0 181.700000 -7487.900000 0 181.700000 -7487.100000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -7487.900000 0 494.500000 -7487.900000 0 494.500000 -7488.700000 0 181.700000 -7488.700000 0 181.700000 -7487.900000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -7488.700000 0 494.500000 -7488.700000 0 494.500000 -7489.400000 0 181.700000 -7489.400000 0 181.700000 -7488.700000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -7489.400000 0 494.500000 -7489.400000 0 494.500000 -7490.200000 0 181.700000 -7490.200000 0 181.700000 -7489.400000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -7490.200000 0 494.500000 -7490.200000 0 494.500000 -7490.900000 0 181.700000 -7490.900000 0 181.700000 -7490.200000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -7490.900000 0 494.500000 -7490.900000 0 494.500000 -7491.700000 0 181.700000 -7491.700000 0 181.700000 -7490.900000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -7491.700000 0 494.500000 -7491.700000 0 494.500000 -7492.500000 0 181.700000 -7492.500000 0 181.700000 -7491.700000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -7492.500000 0 494.500000 -7492.500000 0 494.500000 -7493.200000 0 181.700000 -7493.200000 0 181.700000 -7492.500000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -7493.200000 0 494.500000 -7493.200000 0 494.500000 -7494.000000 0 181.700000 -7494.000000 0 181.700000 -7493.200000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -7494.000000 0 494.500000 -7494.000000 0 494.500000 -7494.700000 0 181.700000 -7494.700000 0 181.700000 -7494.000000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -7494.700000 0 494.500000 -7494.700000 0 494.500000 -7495.500000 0 181.700000 -7495.500000 0 181.700000 -7494.700000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -7495.500000 0 494.500000 -7495.500000 0 494.500000 -7496.200000 0 181.700000 -7496.200000 0 181.700000 -7495.500000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -7496.200000 0 494.500000 -7496.200000 0 494.500000 -7497.000000 0 181.700000 -7497.000000 0 181.700000 -7496.200000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -7497.000000 0 494.500000 -7497.000000 0 494.500000 -7497.800000 0 181.700000 -7497.800000 0 181.700000 -7497.000000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -7497.800000 0 494.500000 -7497.800000 0 494.500000 -7498.500000 0 181.700000 -7498.500000 0 181.700000 -7497.800000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -7498.500000 0 494.500000 -7498.500000 0 494.500000 -7499.300000 0 181.700000 -7499.300000 0 181.700000 -7498.500000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -7499.300000 0 494.500000 -7499.300000 0 494.500000 -7500.000000 0 181.700000 -7500.000000 0 181.700000 -7499.300000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -7500.000000 0 494.500000 -7500.000000 0 494.500000 -7500.800000 0 181.700000 -7500.800000 0 181.700000 -7500.000000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -7500.800000 0 494.500000 -7500.800000 0 494.500000 -7501.600000 0 181.700000 -7501.600000 0 181.700000 -7500.800000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -7501.600000 0 494.500000 -7501.600000 0 494.500000 -7502.300000 0 181.700000 -7502.300000 0 181.700000 -7501.600000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -7502.300000 0 494.500000 -7502.300000 0 494.500000 -7503.100000 0 181.700000 -7503.100000 0 181.700000 -7502.300000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -7503.100000 0 494.500000 -7503.100000 0 494.500000 -7503.800000 0 181.700000 -7503.800000 0 181.700000 -7503.100000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -7503.800000 0 494.500000 -7503.800000 0 494.500000 -7504.600000 0 181.700000 -7504.600000 0 181.700000 -7503.800000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -7504.600000 0 494.500000 -7504.600000 0 494.500000 -7505.300000 0 181.700000 -7505.300000 0 181.700000 -7504.600000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -7505.300000 0 494.500000 -7505.300000 0 494.500000 -7506.100000 0 181.700000 -7506.100000 0 181.700000 -7505.300000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -7506.100000 0 494.500000 -7506.100000 0 494.500000 -7506.900000 0 181.700000 -7506.900000 0 181.700000 -7506.100000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -7506.900000 0 494.500000 -7506.900000 0 494.500000 -7507.600000 0 181.700000 -7507.600000 0 181.700000 -7506.900000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -7507.600000 0 494.500000 -7507.600000 0 494.500000 -7508.400000 0 181.700000 -7508.400000 0 181.700000 -7507.600000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -7508.400000 0 494.500000 -7508.400000 0 494.500000 -7509.100000 0 181.700000 -7509.100000 0 181.700000 -7508.400000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -7509.100000 0 494.500000 -7509.100000 0 494.500000 -7509.900000 0 181.700000 -7509.900000 0 181.700000 -7509.100000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -7509.900000 0 494.500000 -7509.900000 0 494.500000 -7510.700000 0 181.700000 -7510.700000 0 181.700000 -7509.900000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -7510.700000 0 494.500000 -7510.700000 0 494.500000 -7511.400000 0 181.700000 -7511.400000 0 181.700000 -7510.700000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -7511.400000 0 494.500000 -7511.400000 0 494.500000 -7512.200000 0 181.700000 -7512.200000 0 181.700000 -7511.400000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -7512.200000 0 494.500000 -7512.200000 0 494.500000 -7512.900000 0 181.700000 -7512.900000 0 181.700000 -7512.200000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -7512.900000 0 494.500000 -7512.900000 0 494.500000 -7513.700000 0 181.700000 -7513.700000 0 181.700000 -7512.900000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -7513.700000 0 494.500000 -7513.700000 0 494.500000 -7514.500000 0 181.700000 -7514.500000 0 181.700000 -7513.700000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -7514.500000 0 494.500000 -7514.500000 0 494.500000 -7515.200000 0 181.700000 -7515.200000 0 181.700000 -7514.500000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -7515.200000 0 494.500000 -7515.200000 0 494.500000 -7516.000000 0 181.700000 -7516.000000 0 181.700000 -7515.200000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -7516.000000 0 494.500000 -7516.000000 0 494.500000 -7516.700000 0 181.700000 -7516.700000 0 181.700000 -7516.000000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -7516.700000 0 494.500000 -7516.700000 0 494.500000 -7517.500000 0 181.700000 -7517.500000 0 181.700000 -7516.700000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -7517.500000 0 494.500000 -7517.500000 0 494.500000 -7518.200000 0 181.700000 -7518.200000 0 181.700000 -7517.500000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -7518.200000 0 494.500000 -7518.200000 0 494.500000 -7519.000000 0 181.700000 -7519.000000 0 181.700000 -7518.200000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -7519.000000 0 494.500000 -7519.000000 0 494.500000 -7519.800000 0 181.700000 -7519.800000 0 181.700000 -7519.000000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -7519.800000 0 494.500000 -7519.800000 0 494.500000 -7520.500000 0 181.700000 -7520.500000 0 181.700000 -7519.800000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -7520.500000 0 494.500000 -7520.500000 0 494.500000 -7521.300000 0 181.700000 -7521.300000 0 181.700000 -7520.500000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -7521.300000 0 494.500000 -7521.300000 0 494.500000 -7522.000000 0 181.700000 -7522.000000 0 181.700000 -7521.300000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -7522.000000 0 494.500000 -7522.000000 0 494.500000 -7522.800000 0 181.700000 -7522.800000 0 181.700000 -7522.000000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -7522.800000 0 494.500000 -7522.800000 0 494.500000 -7523.600000 0 181.700000 -7523.600000 0 181.700000 -7522.800000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -7523.600000 0 494.500000 -7523.600000 0 494.500000 -7524.300000 0 181.700000 -7524.300000 0 181.700000 -7523.600000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -7524.300000 0 494.500000 -7524.300000 0 494.500000 -7525.100000 0 181.700000 -7525.100000 0 181.700000 -7524.300000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -7525.100000 0 494.500000 -7525.100000 0 494.500000 -7525.800000 0 181.700000 -7525.800000 0 181.700000 -7525.100000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -7525.800000 0 494.500000 -7525.800000 0 494.500000 -7526.600000 0 181.700000 -7526.600000 0 181.700000 -7525.800000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -7526.600000 0 494.500000 -7526.600000 0 494.500000 -7527.400000 0 181.700000 -7527.400000 0 181.700000 -7526.600000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -7527.400000 0 494.500000 -7527.400000 0 494.500000 -7528.100000 0 181.700000 -7528.100000 0 181.700000 -7527.400000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -7528.100000 0 494.500000 -7528.100000 0 494.500000 -7528.900000 0 181.700000 -7528.900000 0 181.700000 -7528.100000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -7528.900000 0 494.500000 -7528.900000 0 494.500000 -7529.600000 0 181.700000 -7529.600000 0 181.700000 -7528.900000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -7529.600000 0 494.500000 -7529.600000 0 494.500000 -7530.400000 0 181.700000 -7530.400000 0 181.700000 -7529.600000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -7530.400000 0 494.500000 -7530.400000 0 494.500000 -7531.100000 0 181.700000 -7531.100000 0 181.700000 -7530.400000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -7531.100000 0 494.500000 -7531.100000 0 494.500000 -7531.900000 0 181.700000 -7531.900000 0 181.700000 -7531.100000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -7531.900000 0 494.500000 -7531.900000 0 494.500000 -7532.700000 0 181.700000 -7532.700000 0 181.700000 -7531.900000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -7532.700000 0 494.500000 -7532.700000 0 494.500000 -7533.400000 0 181.700000 -7533.400000 0 181.700000 -7532.700000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -7533.400000 0 494.500000 -7533.400000 0 494.500000 -7534.200000 0 181.700000 -7534.200000 0 181.700000 -7533.400000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -7534.200000 0 494.500000 -7534.200000 0 494.500000 -7534.900000 0 181.700000 -7534.900000 0 181.700000 -7534.200000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -7534.900000 0 494.500000 -7534.900000 0 494.500000 -7535.700000 0 181.700000 -7535.700000 0 181.700000 -7534.900000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -7535.700000 0 494.500000 -7535.700000 0 494.500000 -7536.500000 0 181.700000 -7536.500000 0 181.700000 -7535.700000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -7536.500000 0 494.500000 -7536.500000 0 494.500000 -7537.200000 0 181.700000 -7537.200000 0 181.700000 -7536.500000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -7537.200000 0 494.500000 -7537.200000 0 494.500000 -7538.000000 0 181.700000 -7538.000000 0 181.700000 -7537.200000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -7538.000000 0 494.500000 -7538.000000 0 494.500000 -7538.700000 0 181.700000 -7538.700000 0 181.700000 -7538.000000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -7538.700000 0 494.500000 -7538.700000 0 494.500000 -7539.500000 0 181.700000 -7539.500000 0 181.700000 -7538.700000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -7539.500000 0 494.500000 -7539.500000 0 494.500000 -7540.300000 0 181.700000 -7540.300000 0 181.700000 -7539.500000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -7540.300000 0 494.500000 -7540.300000 0 494.500000 -7541.000000 0 181.700000 -7541.000000 0 181.700000 -7540.300000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -7541.000000 0 494.500000 -7541.000000 0 494.500000 -7541.800000 0 181.700000 -7541.800000 0 181.700000 -7541.000000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -7541.800000 0 494.500000 -7541.800000 0 494.500000 -7542.500000 0 181.700000 -7542.500000 0 181.700000 -7541.800000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -7542.500000 0 494.500000 -7542.500000 0 494.500000 -7543.300000 0 181.700000 -7543.300000 0 181.700000 -7542.500000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -7543.300000 0 494.500000 -7543.300000 0 494.500000 -7544.000000 0 181.700000 -7544.000000 0 181.700000 -7543.300000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -7544.000000 0 494.500000 -7544.000000 0 494.500000 -7544.800000 0 181.700000 -7544.800000 0 181.700000 -7544.000000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -7544.800000 0 494.500000 -7544.800000 0 494.500000 -7545.600000 0 181.700000 -7545.600000 0 181.700000 -7544.800000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -7545.600000 0 494.500000 -7545.600000 0 494.500000 -7546.300000 0 181.700000 -7546.300000 0 181.700000 -7545.600000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -7546.300000 0 494.500000 -7546.300000 0 494.500000 -7547.100000 0 181.700000 -7547.100000 0 181.700000 -7546.300000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -7547.100000 0 494.500000 -7547.100000 0 494.500000 -7547.800000 0 181.700000 -7547.800000 0 181.700000 -7547.100000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -7547.800000 0 494.500000 -7547.800000 0 494.500000 -7548.600000 0 181.700000 -7548.600000 0 181.700000 -7547.800000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -7548.600000 0 494.500000 -7548.600000 0 494.500000 -7549.400000 0 181.700000 -7549.400000 0 181.700000 -7548.600000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -7549.400000 0 494.500000 -7549.400000 0 494.500000 -7550.100000 0 181.700000 -7550.100000 0 181.700000 -7549.400000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -7550.100000 0 494.500000 -7550.100000 0 494.500000 -7550.900000 0 181.700000 -7550.900000 0 181.700000 -7550.100000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -7550.900000 0 494.500000 -7550.900000 0 494.500000 -7551.600000 0 181.700000 -7551.600000 0 181.700000 -7550.900000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -7551.600000 0 494.500000 -7551.600000 0 494.500000 -7552.400000 0 181.700000 -7552.400000 0 181.700000 -7551.600000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -7552.400000 0 494.500000 -7552.400000 0 494.500000 -7553.200000 0 181.700000 -7553.200000 0 181.700000 -7552.400000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -7553.200000 0 494.500000 -7553.200000 0 494.500000 -7553.900000 0 181.700000 -7553.900000 0 181.700000 -7553.200000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -7553.900000 0 494.500000 -7553.900000 0 494.500000 -7554.700000 0 181.700000 -7554.700000 0 181.700000 -7553.900000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -7554.700000 0 494.500000 -7554.700000 0 494.500000 -7555.400000 0 181.700000 -7555.400000 0 181.700000 -7554.700000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -7555.400000 0 494.500000 -7555.400000 0 494.500000 -7556.200000 0 181.700000 -7556.200000 0 181.700000 -7555.400000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -7556.200000 0 494.500000 -7556.200000 0 494.500000 -7556.900000 0 181.700000 -7556.900000 0 181.700000 -7556.200000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -7556.900000 0 494.500000 -7556.900000 0 494.500000 -7557.700000 0 181.700000 -7557.700000 0 181.700000 -7556.900000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -7557.700000 0 494.500000 -7557.700000 0 494.500000 -7558.500000 0 181.700000 -7558.500000 0 181.700000 -7557.700000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -7558.500000 0 494.500000 -7558.500000 0 494.500000 -7559.200000 0 181.700000 -7559.200000 0 181.700000 -7558.500000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -7559.200000 0 494.500000 -7559.200000 0 494.500000 -7560.000000 0 181.700000 -7560.000000 0 181.700000 -7559.200000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -7560.000000 0 494.500000 -7560.000000 0 494.500000 -7560.700000 0 181.700000 -7560.700000 0 181.700000 -7560.000000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -7560.700000 0 494.500000 -7560.700000 0 494.500000 -7561.500000 0 181.700000 -7561.500000 0 181.700000 -7560.700000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -7561.500000 0 494.500000 -7561.500000 0 494.500000 -7562.300000 0 181.700000 -7562.300000 0 181.700000 -7561.500000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -7562.300000 0 494.500000 -7562.300000 0 494.500000 -7563.000000 0 181.700000 -7563.000000 0 181.700000 -7562.300000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -7563.000000 0 494.500000 -7563.000000 0 494.500000 -7563.800000 0 181.700000 -7563.800000 0 181.700000 -7563.000000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -7563.800000 0 494.500000 -7563.800000 0 494.500000 -7564.500000 0 181.700000 -7564.500000 0 181.700000 -7563.800000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -7564.500000 0 494.500000 -7564.500000 0 494.500000 -7565.300000 0 181.700000 -7565.300000 0 181.700000 -7564.500000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -7565.300000 0 494.500000 -7565.300000 0 494.500000 -7566.100000 0 181.700000 -7566.100000 0 181.700000 -7565.300000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -7566.100000 0 494.500000 -7566.100000 0 494.500000 -7566.800000 0 181.700000 -7566.800000 0 181.700000 -7566.100000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -7566.800000 0 494.500000 -7566.800000 0 494.500000 -7567.600000 0 181.700000 -7567.600000 0 181.700000 -7566.800000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -7567.600000 0 494.500000 -7567.600000 0 494.500000 -7568.300000 0 181.700000 -7568.300000 0 181.700000 -7567.600000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -7568.300000 0 494.500000 -7568.300000 0 494.500000 -7569.100000 0 181.700000 -7569.100000 0 181.700000 -7568.300000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -7569.100000 0 494.500000 -7569.100000 0 494.500000 -7569.800000 0 181.700000 -7569.800000 0 181.700000 -7569.100000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -7569.800000 0 494.500000 -7569.800000 0 494.500000 -7570.600000 0 181.700000 -7570.600000 0 181.700000 -7569.800000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -7570.600000 0 494.500000 -7570.600000 0 494.500000 -7571.400000 0 181.700000 -7571.400000 0 181.700000 -7570.600000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -7571.400000 0 494.500000 -7571.400000 0 494.500000 -7572.100000 0 181.700000 -7572.100000 0 181.700000 -7571.400000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -7572.100000 0 494.500000 -7572.100000 0 494.500000 -7572.900000 0 181.700000 -7572.900000 0 181.700000 -7572.100000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -7572.900000 0 494.500000 -7572.900000 0 494.500000 -7573.600000 0 181.700000 -7573.600000 0 181.700000 -7572.900000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -7573.600000 0 494.500000 -7573.600000 0 494.500000 -7574.400000 0 181.700000 -7574.400000 0 181.700000 -7573.600000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -7574.400000 0 494.500000 -7574.400000 0 494.500000 -7575.200000 0 181.700000 -7575.200000 0 181.700000 -7574.400000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -7575.200000 0 494.500000 -7575.200000 0 494.500000 -7575.900000 0 181.700000 -7575.900000 0 181.700000 -7575.200000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -7575.900000 0 494.500000 -7575.900000 0 494.500000 -7576.700000 0 181.700000 -7576.700000 0 181.700000 -7575.900000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -7576.700000 0 494.500000 -7576.700000 0 494.500000 -7577.400000 0 181.700000 -7577.400000 0 181.700000 -7576.700000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -7577.400000 0 494.500000 -7577.400000 0 494.500000 -7578.200000 0 181.700000 -7578.200000 0 181.700000 -7577.400000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -7578.200000 0 494.500000 -7578.200000 0 494.500000 -7579.000000 0 181.700000 -7579.000000 0 181.700000 -7578.200000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -7579.000000 0 494.500000 -7579.000000 0 494.500000 -7579.700000 0 181.700000 -7579.700000 0 181.700000 -7579.000000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -7579.700000 0 494.500000 -7579.700000 0 494.500000 -7580.500000 0 181.700000 -7580.500000 0 181.700000 -7579.700000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -7580.500000 0 494.500000 -7580.500000 0 494.500000 -7581.200000 0 181.700000 -7581.200000 0 181.700000 -7580.500000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -7581.200000 0 494.500000 -7581.200000 0 494.500000 -7582.000000 0 181.700000 -7582.000000 0 181.700000 -7581.200000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -7582.000000 0 494.500000 -7582.000000 0 494.500000 -7582.700000 0 181.700000 -7582.700000 0 181.700000 -7582.000000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -7582.700000 0 494.500000 -7582.700000 0 494.500000 -7583.500000 0 181.700000 -7583.500000 0 181.700000 -7582.700000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -7583.500000 0 494.500000 -7583.500000 0 494.500000 -7584.300000 0 181.700000 -7584.300000 0 181.700000 -7583.500000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -7584.300000 0 494.500000 -7584.300000 0 494.500000 -7585.000000 0 181.700000 -7585.000000 0 181.700000 -7584.300000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -7585.000000 0 494.500000 -7585.000000 0 494.500000 -7585.800000 0 181.700000 -7585.800000 0 181.700000 -7585.000000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -7585.700000 0 181.800000 -7585.700000 0 181.800000 -7392.400000 0 494.400000 -7392.400000 0 494.400000 -7585.700000 0 338.100000 -7585.700000 0
+strokePath subpath 1 338.100000 -7585.700000 0 181.800000 -7585.700000 0 181.800000 -7392.400000 0 494.400000 -7392.400000 0 494.400000 -7585.700000 0 338.100000 -7585.700000 0
+saveState
+updateCtm 11420.000000 0.000000 0.000000 -8760.000000 20530.000000 830170.000000
+drawSoftMaskedImage 1143 877 1143 877 JPEG 71324 PPM 3007249
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -7546.676000 215.488000 -7554.676000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -7546.676000 220.592000 -7554.676000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -7546.676000 225.696000 -7554.676000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -7546.676000 230.800000 -7554.676000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -7554.276000 241.388000 -7562.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -7554.276000 246.492000 -7562.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -7554.276000 251.596000 -7562.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -7554.276000 256.700000 -7562.276000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -7561.976000 267.188000 -7569.976000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -7561.976000 272.292000 -7569.976000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -7561.976000 277.396000 -7569.976000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -7561.976000 282.500000 -7569.976000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -7569.576000 293.088000 -7577.576000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -7569.576000 298.192000 -7577.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -7569.576000 303.296000 -7577.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -7569.576000 308.400000 -7577.576000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -7531.676000 202.588000 -7539.676000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -7512.376000 201.688000 -7520.376000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -7493.076000 195.788000 -7501.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -7493.076000 200.892000 -7501.076000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -7473.676000 194.888000 -7481.676000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -7473.676000 199.992000 -7481.676000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -7454.376000 193.988000 -7462.376000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -7454.376000 199.092000 -7462.376000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -7435.076000 193.088000 -7443.076000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -7435.076000 198.192000 -7443.076000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -7562.976000 330.188000 -7570.976000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -7562.976000 332.716000 -7570.976000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -7562.976000 337.596000 -7570.976000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -7562.976000 341.396000 -7570.976000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -7562.976000 346.036000 -7570.976000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -7562.976000 350.900000 -7570.976000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -7562.976000 355.972000 -7570.976000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -7562.976000 359.196000 -7570.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -7562.976000 362.196000 -7570.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -7562.976000 367.404000 -7570.976000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -7562.976000 371.876000 -7570.976000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -7562.976000 375.052000 -7570.976000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -7543.476000 361.172000 -7551.476000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -7543.476000 364.340000 -7551.476000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -7543.476000 367.396000 -7551.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -7543.476000 372.604000 -7551.476000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -7543.476000 379.348000 -7551.476000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -7543.476000 384.484000 -7551.476000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -7543.476000 389.436000 -7551.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -7543.476000 392.108000 -7551.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -7543.476000 395.708000 -7551.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -7543.476000 397.540000 -7551.476000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -7543.476000 402.444000 -7551.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -7543.476000 406.788000 -7551.476000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -7523.876000 392.972000 -7531.876000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -7523.876000 398.076000 -7531.876000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -7523.876000 403.180000 -7531.876000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -7523.876000 405.428000 -7531.876000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -7523.876000 410.332000 -7531.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -7523.876000 414.476000 -7531.876000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -7396.308000 305.808000 -7410.308000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -7396.308000 314.138000 -7410.308000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -7396.308000 320.788000 -7410.308000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -7396.308000 328.698000 -7410.308000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -7396.308000 336.972000 -7410.308000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -7396.308000 344.182000 -7410.308000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -7396.308000 349.810000 -7410.308000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -7396.308000 354.234000 -7410.308000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -7396.308000 362.718000 -7410.308000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -7396.308000 367.870000 -7410.308000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -7396.308000 372.322000 -7410.308000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -7396.308000 382.080000 -7410.308000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -7396.308000 388.772000 -7410.308000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -7396.308000 397.802000 -7410.308000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -7396.308000 402.254000 -7410.308000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -7396.308000 407.896000 -7410.308000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -7519.200000 0 424.300000 -7519.200000 0 424.300000 -7458.500000 0 493.600000 -7458.500000 0 493.600000 -7519.200000 0 458.900000 -7519.200000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -7468.100000 0 428.900000 -7468.100000 0 428.900000 -7462.100000 0 434.800000 -7462.100000 0 434.800000 -7468.100000 0 431.900000 -7468.100000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -7479.200000 0 428.900000 -7479.200000 0 428.900000 -7473.200000 0 434.800000 -7473.200000 0 434.800000 -7479.200000 0 431.900000 -7479.200000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -7490.300000 0 428.900000 -7490.300000 0 428.900000 -7484.300000 0 434.800000 -7484.300000 0 434.800000 -7490.300000 0 431.900000 -7490.300000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -7501.400000 0 428.900000 -7501.400000 0 428.900000 -7495.400000 0 434.800000 -7495.400000 0 434.800000 -7501.400000 0 431.900000 -7501.400000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -7512.500000 0 428.900000 -7512.500000 0 428.900000 -7506.500000 0 434.800000 -7506.500000 0 434.800000 -7512.500000 0 431.900000 -7512.500000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -7460.976000 443.288000 -7468.976000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -7460.976000 445.816000 -7468.976000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -7460.976000 450.600000 -7468.976000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -7460.976000 454.496000 -7468.976000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -7460.976000 459.136000 -7468.976000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -7460.976000 464.000000 -7468.976000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -7460.976000 468.976000 -7468.976000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -7460.976000 472.304000 -7468.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -7460.976000 475.208000 -7468.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -7460.976000 480.520000 -7468.976000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -7460.976000 484.992000 -7468.976000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -7460.976000 488.168000 -7468.976000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -7472.076000 443.352000 -7480.076000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -7472.076000 447.920000 -7480.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -7472.076000 452.976000 -7480.076000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -7472.076000 457.400000 -7480.076000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -7472.076000 462.472000 -7480.076000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -7472.076000 465.800000 -7480.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -7472.076000 468.904000 -7480.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -7472.076000 473.816000 -7480.076000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -7472.076000 478.888000 -7480.076000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -7472.076000 482.064000 -7480.076000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -7483.176000 442.872000 -7491.176000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -7483.176000 446.040000 -7491.176000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -7483.176000 448.992000 -7491.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -7483.176000 454.304000 -7491.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -7483.176000 461.048000 -7491.176000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -7483.176000 466.184000 -7491.176000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -7483.176000 471.136000 -7491.176000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -7483.176000 473.808000 -7491.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -7483.176000 477.408000 -7491.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -7483.176000 479.240000 -7491.176000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -7483.176000 484.144000 -7491.176000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -7483.176000 488.488000 -7491.176000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -7494.276000 443.384000 -7502.276000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -7494.276000 448.464000 -7502.276000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -7494.276000 453.424000 -7502.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -7494.276000 456.696000 -7502.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -7494.276000 459.800000 -7502.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -7494.276000 462.032000 -7502.276000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -7494.276000 466.936000 -7502.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -7494.276000 471.080000 -7502.276000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -7505.376000 443.272000 -7513.376000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -7505.376000 448.376000 -7513.376000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -7505.376000 453.480000 -7513.376000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -7505.376000 455.728000 -7513.376000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -7505.376000 460.632000 -7513.376000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -7505.376000 464.776000 -7513.376000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -10150.400000 0 114.800000 -10150.400000 0 114.800000 -10107.600000 0 72.000000 -10107.600000 0 72.000000 -10150.400000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 1094230.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 668.600000 0 504.000000 668.600000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 668.600000 0
+eoFillPath subpath 1 72.000000 419.700000 0 121.400000 419.700000 0 121.400000 541.800000 0 72.000000 541.800000 0 72.000000 419.700000 0
+eoFillPath subpath 1 454.500000 419.700000 0 504.000000 419.700000 0 504.000000 541.800000 0 454.500000 541.800000 0 454.500000 419.700000 0
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 419.700000 0 504.000000 419.700000 0 504.000000 541.800000 0 72.000000 541.800000 0 72.000000 419.700000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 541.800000 0 76.300000 541.800000 0 76.300000 668.600000 0 72.000000 668.600000 0 72.000000 541.800000 0
+eoFillPath subpath 1 158.800000 546.200000 0 504.000000 546.200000 0 504.000000 668.600000 0 158.800000 668.600000 0 158.800000 546.200000 0
+eoFillPath subpath 1 454.500000 541.800000 0 504.000000 541.800000 0 504.000000 546.200000 0 454.500000 546.200000 0 454.500000 541.800000 0
+restoreState
+saveState
+eoClipPath subpath 1 158.800000 541.800000 0 504.000000 541.800000 0 504.000000 668.600000 0 158.800000 668.600000 0 158.800000 541.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 245.800000 0 72.000000 245.800000 0 72.000000 72.000000 0
+eoFillPath subpath 1 72.000000 245.800000 0 121.400000 245.800000 0 121.400000 267.200000 0 72.000000 267.200000 0 72.000000 245.800000 0
+eoFillPath subpath 1 454.500000 245.800000 0 504.000000 245.800000 0 504.000000 267.200000 0 454.500000 267.200000 0 454.500000 245.800000 0
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 267.200000 0 72.000000 267.200000 0 72.000000 72.000000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 267.200000 0 76.300000 267.200000 0 76.300000 419.700000 0 72.000000 419.700000 0 72.000000 267.200000 0
+eoFillPath subpath 1 454.500000 267.200000 0 504.000000 267.200000 0 504.000000 419.700000 0 454.500000 419.700000 0 454.500000 267.200000 0
+restoreState
+saveState
+eoClipPath subpath 1 156.200000 267.200000 0 504.000000 267.200000 0 504.000000 419.700000 0 156.200000 419.700000 0 156.200000 267.200000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 701.300000 0 504.000000 701.300000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 701.300000 0
+eoFillPath subpath 1 72.000000 72.200000 0 504.000000 72.200000 0 504.000000 86.100000 0 72.000000 86.100000 0 72.000000 72.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 331.200000 719.948000 344.992000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 345.008000 719.948000 354.464000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 354.512000 719.948000 359.584000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.616000 719.948000 371.632000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 371.616000 719.948000 381.392000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 381.424000 719.948000 391.552000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 391.520000 719.948000 399.840000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 399.824000 719.948000 409.664000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 409.632000 719.948000 414.704000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 414.736000 719.948000 420.496000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 420.544000 719.948000 425.616000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 425.600000 719.948000 434.800000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 433.600000 719.948000 438.032000 703.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 438.000000 719.948000 444.576000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 444.608000 719.948000 452.928000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 452.912000 719.948000 459.184000 703.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 459.216000 719.948000 464.288000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 464.320000 719.948000 473.520000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 473.520000 719.948000 477.952000 703.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 477.920000 719.948000 487.696000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 487.728000 719.948000 497.504000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 497.536000 719.948000 504.112000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 672.936000 193.180000 660.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 193.204000 672.936000 200.356000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 200.404000 672.936000 206.140000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 206.104000 672.936000 209.932000 660.936000 1.000000 0.000000 0.000000 1.000000 i
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 209.900000 672.936000 213.704000 660.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 213.896000 672.936000 217.700000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 217.892000 672.936000 224.660000 660.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 224.696000 672.936000 231.848000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 231.800000 672.936000 237.536000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 237.596000 672.936000 241.424000 660.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 241.400000 672.936000 248.624000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 248.600000 672.936000 256.328000 660.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 256.400000 672.936000 262.556000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 262.700000 672.936000 266.504000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.804000 672.936000 270.632000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 270.608000 672.936000 274.436000 660.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 274.412000 672.936000 282.092000 660.936000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 282.116000 672.936000 289.844000 660.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 289.820000 672.936000 296.912000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.020000 672.936000 304.748000 660.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 304.724000 672.936000 310.460000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 310.520000 672.936000 316.676000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 316.820000 672.936000 320.624000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 320.816000 672.936000 327.968000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 328.016000 672.936000 335.744000 660.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 335.720000 672.936000 343.400000 660.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 343.616000 672.936000 347.420000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 347.612000 672.936000 354.764000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 354.908000 672.936000 358.712000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 358.904000 672.936000 363.344000 660.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 363.308000 672.936000 370.400000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 370.412000 672.936000 380.672000 660.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 380.912000 672.936000 384.716000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.016000 672.936000 390.524000 660.936000 1.000000 0.000000 0.000000 1.000000 "
+drawChar 390.512000 672.936000 398.240000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 398.216000 672.936000 405.368000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 405.416000 672.936000 411.152000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 411.116000 672.936000 418.796000 660.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 418.820000 672.936000 424.328000 660.936000 1.000000 0.000000 0.000000 1.000000 "
+drawChar 424.520000 672.936000 428.324000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 428.516000 672.936000 436.196000 660.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 436.220000 672.936000 441.956000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 441.920000 672.936000 445.748000 660.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 445.820000 672.936000 453.548000 660.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 453.524000 672.936000 460.784000 660.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 460.820000 672.936000 466.976000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 467.120000 672.936000 470.924000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 471.116000 672.936000 482.492000 660.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 482.516000 672.936000 489.668000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 489.620000 672.936000 496.880000 660.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 497.024000 672.936000 504.116000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 672.936000 507.904000 660.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 659.036000 193.228000 647.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 193.204000 659.036000 200.884000 647.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 201.400000 659.036000 205.204000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 205.804000 659.036000 210.616000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 210.604000 659.036000 218.332000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 218.404000 659.036000 225.496000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 226.108000 659.036000 229.912000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 230.512000 659.036000 237.664000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 237.712000 659.036000 241.540000 647.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 241.516000 659.036000 248.236000 647.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 248.212000 659.036000 255.436000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 255.412000 659.036000 263.140000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 263.212000 659.036000 270.436000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 270.412000 659.036000 274.240000 647.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 274.216000 659.036000 278.044000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 278.116000 659.036000 284.836000 647.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 285.316000 659.036000 289.120000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.720000 659.036000 297.400000 647.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 297.424000 659.036000 304.648000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 304.624000 659.036000 310.360000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 310.324000 659.036000 315.136000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 315.220000 659.036000 319.048000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 319.024000 659.036000 326.248000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 326.224000 659.036000 333.952000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 334.024000 659.036000 337.828000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 339.028000 659.036000 342.832000 647.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 342.800000 659.036000 352.376000 647.036000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 352.400000 659.036000 358.136000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.100000 659.036000 365.192000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.204000 659.036000 372.932000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 372.908000 659.036000 380.060000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 380.108000 659.036000 387.788000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 387.812000 659.036000 391.640000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 391.616000 659.036000 399.344000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 399.320000 659.036000 406.412000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 406.500000 659.036000 410.304000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 411.396000 659.036000 418.548000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 418.596000 659.036000 426.324000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 426.300000 659.036000 433.980000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 434.604000 659.036000 438.408000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.008000 659.036000 442.836000 647.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 442.812000 659.036000 446.640000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 446.712000 659.036000 458.088000 647.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 458.112000 659.036000 465.204000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 465.612000 659.036000 469.416000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.112000 659.036000 476.268000 647.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 476.316000 659.036000 483.084000 647.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 483.012000 659.036000 488.748000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 488.808000 659.036000 496.536000 647.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 496.512000 659.036000 504.192000 647.036000 1.000000 0.000000 0.000000 1.000000 p
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 659.036000 508.004000 647.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 645.136000 192.652000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 645.136000 198.436000 633.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.400000 645.136000 205.492000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 206.104000 645.136000 209.908000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 210.508000 645.136000 217.660000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 217.708000 645.136000 221.536000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 221.512000 645.136000 227.668000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.716000 645.136000 234.940000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 235.516000 645.136000 239.320000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.920000 645.136000 247.072000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 247.120000 645.136000 253.888000 633.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 253.816000 645.136000 260.968000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 261.016000 645.136000 264.844000 633.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 264.820000 645.136000 268.648000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 268.720000 645.136000 275.872000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 275.824000 645.136000 283.504000 633.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 283.528000 645.136000 287.356000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 287.332000 645.136000 294.424000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 295.036000 645.136000 298.840000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 299.440000 645.136000 303.880000 633.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 303.844000 645.136000 311.068000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 311.140000 645.136000 316.876000 633.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 317.536000 645.136000 321.340000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 321.940000 645.136000 329.668000 633.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 329.644000 645.136000 336.868000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 336.940000 645.136000 344.668000 633.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 344.536000 645.136000 348.580000 633.136000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 348.640000 645.136000 355.792000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 355.840000 645.136000 359.668000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 359.644000 645.136000 366.364000 633.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 366.448000 645.136000 373.672000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 373.552000 645.136000 381.280000 633.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 381.256000 645.136000 388.480000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 388.552000 645.136000 392.380000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 392.356000 645.136000 396.184000 633.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 396.160000 645.136000 402.880000 633.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 403.564000 645.136000 407.368000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.968000 645.136000 414.124000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 414.172000 645.136000 421.852000 633.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 421.768000 645.136000 428.860000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 428.872000 645.136000 435.592000 633.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 435.676000 645.136000 439.504000 633.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 439.480000 645.136000 446.632000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 446.680000 645.136000 450.508000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 450.484000 645.136000 455.296000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 455.284000 645.136000 459.112000 633.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 459.184000 645.136000 466.276000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.288000 645.136000 472.444000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 472.384000 645.136000 476.188000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.788000 645.136000 480.592000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.192000 645.136000 489.184000 633.136000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 489.196000 645.136000 496.924000 633.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.900000 645.136000 503.992000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 645.136000 508.004000 633.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 631.236000 193.228000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 193.204000 631.236000 200.296000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 200.308000 631.236000 207.028000 619.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 207.112000 631.236000 214.204000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 214.216000 631.236000 220.372000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 220.312000 631.236000 226.468000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 226.516000 631.236000 233.668000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 233.620000 631.236000 239.356000 619.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 239.416000 631.236000 246.184000 619.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 246.820000 631.236000 250.624000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 251.416000 631.236000 262.792000 619.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 262.720000 631.236000 266.548000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 266.524000 631.236000 273.280000 619.236000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 273.328000 631.236000 277.156000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 277.132000 631.236000 284.860000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 284.932000 631.236000 292.612000 619.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 293.332000 631.236000 297.136000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 297.832000 631.236000 305.560000 619.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 305.536000 631.236000 310.348000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 310.432000 631.236000 317.524000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 317.536000 631.236000 325.264000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 325.240000 631.236000 331.396000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 331.336000 631.236000 335.164000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 335.236000 631.236000 339.064000 619.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 339.040000 631.236000 345.196000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 345.940000 631.236000 349.744000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 350.440000 631.236000 356.596000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 356.644000 631.236000 364.372000 619.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 364.348000 631.236000 371.068000 619.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 371.044000 631.236000 378.772000 619.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 379.444000 631.236000 383.248000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.944000 631.236000 391.096000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 391.144000 631.236000 397.300000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 398.044000 631.236000 401.848000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.544000 631.236000 409.696000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 411.040000 631.236000 414.844000 619.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 415.100000 631.236000 421.256000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 421.304000 631.236000 429.032000 619.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 429.008000 631.236000 436.160000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 436.112000 631.236000 443.372000 619.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 443.408000 631.236000 450.500000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 450.512000 631.236000 456.248000 619.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 457.016000 631.236000 460.820000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 461.516000 631.236000 468.668000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 468.716000 631.236000 476.444000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 476.312000 631.236000 483.992000 619.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 484.712000 631.236000 488.516000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 489.212000 631.236000 496.364000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 496.412000 631.236000 504.140000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 631.236000 507.904000 619.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 617.336000 192.592000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 192.604000 617.336000 196.432000 605.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 196.408000 617.336000 203.500000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 203.512000 617.336000 210.232000 605.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 210.316000 617.336000 215.128000 605.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 215.116000 617.336000 220.852000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 220.816000 617.336000 224.644000 605.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 224.716000 617.336000 231.436000 605.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 232.312000 617.336000 236.116000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 237.016000 617.336000 248.392000 605.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 248.416000 617.336000 252.244000 605.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 252.220000 617.336000 258.976000 605.336000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 259.024000 617.336000 266.116000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 266.128000 617.336000 271.864000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 272.728000 617.336000 276.532000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.528000 617.336000 281.968000 605.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 281.932000 617.336000 289.156000 605.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 289.228000 617.336000 294.964000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 296.728000 617.336000 300.532000 605.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 300.600000 617.336000 305.040000 605.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 305.004000 617.336000 310.740000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 310.800000 617.336000 318.024000 605.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 318.000000 617.336000 324.312000 605.336000 1.000000 0.000000 0.000000 1.000000 z
+drawChar 324.300000 617.336000 331.392000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 331.404000 617.336000 339.132000 605.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 340.104000 617.336000 343.908000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 344.808000 617.336000 356.184000 605.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 356.112000 617.336000 363.264000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 363.312000 617.336000 369.048000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 369.012000 617.336000 376.692000 605.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 376.716000 617.336000 383.868000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 383.820000 617.336000 389.556000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 389.616000 617.336000 393.444000 605.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 393.420000 617.336000 398.232000 605.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 398.316000 617.336000 405.468000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 405.516000 617.336000 411.672000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 412.512000 617.336000 416.316000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 417.312000 617.336000 424.464000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 424.512000 617.336000 430.248000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 430.212000 617.336000 437.304000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 438.216000 617.336000 442.020000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 442.920000 617.336000 450.072000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.120000 617.336000 453.948000 605.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 453.924000 617.336000 460.080000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 460.128000 617.336000 467.352000 605.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 468.228000 617.336000 472.032000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 473.028000 617.336000 479.748000 605.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 479.724000 617.336000 483.552000 605.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 483.624000 617.336000 490.848000 605.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 490.824000 617.336000 496.980000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 496.920000 617.336000 504.012000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 617.336000 507.904000 605.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 603.436000 192.652000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 603.436000 197.512000 591.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 199.000000 603.436000 202.804000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 204.400000 603.436000 212.128000 591.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 212.104000 603.436000 219.256000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 219.304000 603.436000 227.032000 591.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 227.008000 603.436000 234.688000 591.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 234.712000 603.436000 238.516000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.112000 603.436000 243.916000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.512000 603.436000 257.788000 591.436000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 257.812000 603.436000 264.580000 591.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 266.116000 603.436000 269.920000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 271.516000 603.436000 275.956000 591.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 275.920000 603.436000 283.072000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 283.120000 603.436000 289.888000 591.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 289.924000 603.436000 297.148000 591.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 297.124000 603.436000 302.860000 591.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 302.824000 603.436000 306.652000 591.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 306.724000 603.436000 311.536000 591.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 311.524000 603.436000 318.616000 591.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 320.224000 603.436000 324.028000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 325.624000 603.436000 333.304000 591.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 333.328000 603.436000 339.064000 591.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 339.028000 603.436000 342.856000 591.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 342.928000 603.436000 350.656000 591.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 350.632000 603.436000 357.892000 591.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 359.428000 603.436000 363.232000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.828000 603.436000 368.656000 591.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 368.632000 603.436000 374.788000 591.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 376.432000 603.436000 380.236000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 381.832000 603.436000 386.644000 591.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 386.632000 603.436000 394.360000 591.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 394.432000 603.436000 401.524000 591.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.928000 603.436000 406.732000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 408.424000 603.436000 414.580000 591.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 414.628000 603.436000 421.780000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 421.732000 603.436000 433.108000 591.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 433.036000 603.436000 440.128000 591.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 441.736000 603.436000 445.540000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 447.232000 603.436000 454.384000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.432000 603.436000 460.588000 591.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 462.028000 603.436000 465.832000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 467.428000 603.436000 472.228000 591.436000 1.000000 0.000000 0.000000 1.000000 J
+drawChar 472.228000 603.436000 479.380000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.428000 603.436000 490.804000 591.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 490.732000 603.436000 497.824000 591.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 497.836000 603.436000 503.992000 591.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 603.436000 507.904000 591.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 589.536000 194.308000 577.536000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 194.296000 589.536000 201.520000 577.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 201.496000 589.536000 209.224000 577.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 209.296000 589.536000 216.976000 577.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 217.000000 589.536000 220.288000 577.536000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 220.300000 589.536000 226.456000 577.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 226.396000 589.536000 230.428000 577.536000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 230.800000 589.536000 234.604000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 235.000000 589.536000 242.152000 577.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 242.896000 589.536000 246.700000 577.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 246.800000 589.536000 258.176000 577.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 258.200000 589.536000 265.352000 577.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 265.304000 589.536000 271.040000 577.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 271.100000 589.536000 275.912000 577.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 275.900000 589.536000 279.728000 577.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 279.704000 589.536000 287.432000 577.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 287.504000 589.536000 291.332000 577.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 291.308000 589.536000 295.112000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 295.508000 589.536000 299.312000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 299.708000 589.536000 310.172000 577.536000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 310.208000 589.536000 317.432000 577.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 317.408000 589.536000 327.668000 577.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 327.704000 589.536000 334.796000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 334.808000 589.536000 341.576000 577.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 341.504000 589.536000 348.596000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 348.608000 589.536000 354.344000 577.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 353.108000 589.536000 356.912000 577.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 357.212000 589.536000 361.016000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.412000 589.536000 365.240000 577.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 365.216000 589.536000 370.028000 577.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 370.520000 589.536000 374.324000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.720000 589.536000 382.400000 577.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 382.424000 589.536000 389.648000 577.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 389.624000 589.536000 396.716000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 396.728000 589.536000 402.884000 577.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 402.932000 589.536000 410.660000 577.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 410.636000 589.536000 413.924000 577.536000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 413.936000 589.536000 418.748000 577.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 419.036000 589.536000 422.840000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.236000 589.536000 434.612000 577.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 434.636000 589.536000 441.788000 577.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 441.740000 589.536000 446.552000 577.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 446.636000 589.536000 451.448000 577.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 451.436000 589.536000 458.528000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 458.540000 589.536000 464.276000 577.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 464.636000 589.536000 468.440000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 468.932000 589.536000 473.744000 577.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 473.732000 589.536000 480.956000 577.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 481.232000 589.536000 485.036000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 485.432000 589.536000 496.808000 577.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 496.832000 589.536000 503.924000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 589.536000 507.904000 577.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 575.636000 195.760000 563.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 195.796000 575.636000 203.524000 563.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 203.500000 575.636000 210.592000 563.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 210.604000 575.636000 215.416000 563.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 215.404000 575.636000 223.132000 563.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 223.108000 575.636000 230.200000 563.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 230.212000 575.636000 235.948000 563.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 235.912000 575.636000 239.716000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.716000 575.636000 243.544000 563.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 243.520000 575.636000 248.332000 563.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 248.320000 575.636000 251.608000 563.636000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 251.620000 575.636000 257.776000 563.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 257.824000 575.636000 261.628000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 261.628000 575.636000 267.784000 563.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 267.832000 575.636000 275.560000 563.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 275.536000 575.636000 282.688000 563.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 282.736000 575.636000 289.996000 563.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 290.032000 575.636000 297.124000 563.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.136000 575.636000 304.864000 563.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 304.840000 575.636000 308.644000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.644000 575.636000 315.868000 563.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 315.844000 575.636000 321.580000 563.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 321.544000 575.636000 325.348000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 325.348000 575.636000 331.504000 563.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 331.552000 575.636000 336.364000 563.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 336.352000 575.636000 340.180000 563.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 340.156000 575.636000 345.892000 563.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 345.856000 575.636000 351.592000 563.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 351.556000 575.636000 358.648000 563.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 358.660000 575.636000 366.340000 563.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 366.364000 575.636000 370.168000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.168000 575.636000 373.972000 563.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 555.736000 193.492000 543.736000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 555.736000 201.232000 543.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 555.736000 208.300000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 208.312000 555.736000 212.116000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 212.212000 555.736000 218.368000 543.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 218.416000 555.736000 226.144000 543.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 226.120000 555.736000 233.344000 543.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 233.416000 555.736000 243.676000 543.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 243.712000 555.736000 251.392000 543.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 251.416000 555.736000 255.244000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 255.220000 555.736000 262.312000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 262.324000 555.736000 269.044000 543.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 269.020000 555.736000 276.112000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 276.220000 555.736000 280.024000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 280.120000 555.736000 283.948000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 283.924000 555.736000 291.652000 543.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 291.724000 555.736000 295.528000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 295.720000 555.736000 307.096000 543.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 306.916000 555.736000 313.684000 543.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 313.816000 555.736000 317.620000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.716000 555.736000 329.092000 543.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 329.116000 555.736000 332.944000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 333.016000 555.736000 340.744000 543.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 340.720000 555.736000 344.548000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 344.620000 555.736000 352.300000 543.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 352.216000 555.736000 359.368000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 359.416000 555.736000 365.152000 543.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 365.116000 555.736000 368.920000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 369.016000 555.736000 372.844000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 372.820000 555.736000 378.976000 543.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 379.120000 555.736000 382.924000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.020000 555.736000 390.172000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 390.316000 555.736000 394.120000 543.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 394.300000 555.736000 400.456000 543.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 400.504000 555.736000 407.728000 543.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 407.704000 555.736000 415.384000 543.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 415.408000 555.736000 422.560000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 422.512000 555.736000 426.316000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.508000 555.736000 432.664000 543.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 432.604000 555.736000 436.432000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 436.504000 555.736000 444.184000 543.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 444.100000 555.736000 451.828000 543.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 451.804000 555.736000 459.028000 543.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 459.100000 555.736000 466.828000 543.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 466.804000 555.736000 470.608000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.800000 555.736000 482.176000 543.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 482.200000 555.736000 489.352000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 489.304000 555.736000 496.984000 543.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 497.008000 555.736000 504.100000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 555.736000 507.904000 543.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 541.836000 192.724000 529.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 192.700000 541.836000 197.140000 529.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 199.600000 541.836000 203.404000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 205.804000 541.836000 210.616000 529.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 210.604000 541.836000 218.332000 529.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 218.404000 541.836000 224.140000 529.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 224.104000 541.836000 231.784000 529.836000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 231.808000 541.836000 239.536000 529.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 239.512000 541.836000 246.736000 529.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 246.712000 541.836000 250.540000 529.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 250.612000 541.836000 256.768000 529.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 256.708000 541.836000 263.800000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 263.812000 541.836000 267.856000 529.836000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 267.916000 541.836000 274.636000 529.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 274.612000 541.836000 281.836000 529.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 281.812000 541.836000 285.640000 529.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 285.712000 541.836000 292.936000 529.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 292.912000 541.836000 298.648000 529.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 298.612000 541.836000 305.704000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 305.716000 541.836000 313.396000 529.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 315.820000 541.836000 319.624000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.120000 541.836000 329.800000 529.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 329.824000 541.836000 333.652000 529.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 333.628000 541.836000 340.780000 529.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 340.828000 541.836000 346.984000 529.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 346.924000 541.836000 353.080000 529.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 353.128000 541.836000 356.932000 529.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 359.332000 541.836000 363.136000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.536000 541.836000 375.796000 529.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 375.832000 541.836000 383.560000 529.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 383.536000 541.836000 387.364000 529.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 387.340000 541.836000 394.060000 529.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 394.144000 541.836000 401.872000 529.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 404.248000 541.836000 408.052000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 410.548000 541.836000 415.288000 529.836000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 417.748000 541.836000 421.552000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.952000 541.836000 430.672000 529.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 430.648000 541.836000 437.800000 529.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 437.848000 541.836000 449.224000 529.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 449.248000 541.836000 456.340000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 458.644000 541.836000 462.448000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 464.944000 541.836000 472.096000 529.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 472.144000 541.836000 478.864000 529.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 478.840000 541.836000 484.576000 529.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 484.636000 541.836000 491.860000 529.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 491.836000 541.836000 497.992000 529.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 497.932000 541.836000 504.088000 529.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 541.836000 507.904000 529.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 527.936000 192.268000 515.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 192.304000 527.936000 199.396000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 199.408000 527.936000 206.560000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 206.512000 527.936000 212.248000 515.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 212.308000 527.936000 218.464000 515.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 218.812000 527.936000 222.616000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 223.108000 527.936000 230.260000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 230.308000 527.936000 237.988000 515.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 237.904000 527.936000 245.128000 515.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 245.704000 527.936000 249.508000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 250.000000 527.936000 257.152000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 257.200000 527.936000 262.012000 515.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 262.396000 527.936000 266.200000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.692000 527.936000 273.844000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 274.396000 527.936000 278.200000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.196000 527.936000 287.188000 515.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 286.696000 527.936000 293.788000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 293.800000 527.936000 300.952000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 301.300000 527.936000 305.104000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 305.704000 527.936000 317.080000 515.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 317.008000 527.936000 324.160000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 324.208000 527.936000 329.944000 515.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 329.908000 527.936000 337.168000 515.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 337.204000 527.936000 344.296000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 344.308000 527.936000 349.120000 515.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.612000 527.936000 353.416000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.908000 527.936000 357.736000 515.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 357.712000 527.936000 365.440000 515.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 365.908000 527.936000 369.712000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.204000 527.936000 380.704000 515.936000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 380.704000 527.936000 387.796000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 387.808000 527.936000 398.068000 515.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 398.608000 527.936000 402.412000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.904000 527.936000 410.824000 515.936000 1.000000 0.000000 0.000000 1.000000 Y
+drawChar 409.804000 527.936000 417.028000 515.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 417.004000 527.936000 422.740000 515.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 422.704000 527.936000 429.964000 515.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 430.000000 527.936000 433.804000 515.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.200000 527.936000 438.004000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.496000 527.936000 443.236000 515.936000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 443.200000 527.936000 448.012000 515.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 448.096000 527.936000 451.384000 515.936000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 451.396000 527.936000 457.552000 515.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 458.092000 527.936000 461.896000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 462.388000 527.936000 469.540000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 469.888000 527.936000 473.692000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.184000 527.936000 484.444000 515.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 484.480000 527.936000 491.704000 515.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 491.680000 527.936000 499.408000 515.936000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 527.936000 504.044000 515.936000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 514.036000 193.180000 502.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 193.204000 514.036000 200.296000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 200.308000 514.036000 206.044000 502.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 206.008000 514.036000 210.448000 502.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 210.412000 514.036000 218.140000 502.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 218.116000 514.036000 221.944000 502.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 221.920000 514.036000 225.724000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 225.820000 514.036000 233.500000 502.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 233.524000 514.036000 237.352000 502.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 237.328000 514.036000 244.480000 502.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 244.528000 514.036000 251.248000 502.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 251.224000 514.036000 258.316000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 258.328000 514.036000 262.132000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.228000 514.036000 267.040000 502.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 267.028000 514.036000 274.252000 502.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 274.228000 514.036000 278.032000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 278.128000 514.036000 286.120000 502.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 286.132000 514.036000 293.860000 502.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 293.836000 514.036000 301.516000 502.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 301.540000 514.036000 305.344000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 305.440000 514.036000 310.252000 502.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 310.240000 514.036000 315.976000 502.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 315.940000 514.036000 323.032000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 323.044000 514.036000 330.196000 502.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 330.244000 514.036000 336.400000 502.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 336.448000 514.036000 344.176000 502.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 344.152000 514.036000 349.888000 502.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 349.852000 514.036000 356.944000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 356.956000 514.036000 363.112000 502.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 363.160000 514.036000 366.964000 502.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 366.964000 514.036000 370.768000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.864000 514.036000 378.016000 502.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 378.064000 514.036000 385.792000 502.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 385.768000 514.036000 393.448000 502.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 393.472000 514.036000 397.276000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 397.372000 514.036000 402.184000 502.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 402.172000 514.036000 409.324000 502.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 409.372000 514.036000 416.632000 502.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 416.668000 514.036000 423.760000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 423.772000 514.036000 429.928000 502.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 429.976000 514.036000 433.780000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 433.876000 514.036000 441.556000 502.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 441.580000 514.036000 445.408000 502.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.384000 514.036000 452.536000 502.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 452.584000 514.036000 459.304000 502.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 459.280000 514.036000 466.372000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.384000 514.036000 470.188000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.284000 514.036000 477.376000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 477.388000 514.036000 484.156000 502.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 484.192000 514.036000 491.284000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 491.296000 514.036000 497.032000 502.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 496.996000 514.036000 503.764000 502.036000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 514.036000 507.904000 502.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 500.136000 193.720000 488.136000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 193.696000 500.136000 201.424000 488.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 201.400000 500.136000 209.128000 488.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 209.200000 500.136000 216.880000 488.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 216.904000 500.136000 224.056000 488.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 224.008000 500.136000 230.776000 488.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 233.008000 500.136000 236.812000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.008000 500.136000 246.160000 488.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 246.208000 500.136000 251.020000 488.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 253.204000 500.136000 257.008000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 259.300000 500.136000 264.112000 488.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 264.100000 500.136000 271.828000 488.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 271.900000 500.136000 278.992000 488.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 281.200000 500.136000 285.004000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 287.200000 500.136000 293.920000 488.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 293.896000 500.136000 301.120000 488.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 301.096000 500.136000 306.832000 488.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 306.796000 500.136000 314.524000 488.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 314.500000 500.136000 321.592000 488.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 321.604000 500.136000 327.340000 488.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 329.608000 500.136000 333.412000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 335.704000 500.136000 342.928000 488.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 343.000000 500.136000 347.440000 488.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 349.600000 500.136000 353.404000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.796000 500.136000 361.600000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 363.892000 500.136000 371.524000 488.136000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 371.488000 500.136000 376.300000 488.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 376.384000 500.136000 384.112000 488.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 386.284000 500.136000 390.088000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 392.284000 500.136000 400.948000 488.136000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 400.480000 500.136000 407.248000 488.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 407.284000 500.136000 414.376000 488.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 414.388000 500.136000 422.116000 488.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 422.092000 500.136000 429.820000 488.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 429.796000 500.136000 436.888000 488.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 439.096000 500.136000 442.900000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.300000 500.136000 452.452000 488.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 452.500000 500.136000 460.228000 488.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 460.096000 500.136000 467.776000 488.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 469.996000 500.136000 473.800000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 475.996000 500.136000 483.628000 488.136000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 483.592000 500.136000 491.224000 488.136000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 491.296000 500.136000 496.108000 488.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 496.096000 500.136000 503.824000 488.136000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 500.136000 507.904000 488.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 486.236000 193.720000 474.236000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 193.696000 486.236000 198.508000 474.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 198.496000 486.236000 204.232000 474.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 204.196000 486.236000 211.288000 474.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 211.300000 486.236000 218.392000 474.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 218.404000 486.236000 223.216000 474.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 223.204000 486.236000 227.008000 474.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 454.492000 82.936000 440.492000 1.000000 0.000000 0.000000 1.000000 K
+drawChar 82.894000 454.492000 87.682000 440.492000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 87.696000 454.492000 94.388000 440.492000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 94.402000 454.492000 102.690000 440.492000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 102.704000 454.492000 112.658000 440.492000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 112.700000 454.492000 122.192000 440.492000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 122.206000 454.492000 132.160000 440.492000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 432.236000 197.776000 420.236000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 197.800000 432.236000 204.568000 420.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 205.600000 432.236000 209.404000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 210.400000 432.236000 217.660000 420.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 217.696000 432.236000 221.524000 420.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 221.500000 432.236000 226.312000 420.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 432.236000 233.020000 420.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 233.104000 432.236000 240.832000 420.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 240.808000 432.236000 247.900000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 247.912000 432.236000 255.640000 420.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 256.612000 432.236000 260.416000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 261.412000 432.236000 269.140000 420.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 269.116000 432.236000 276.268000 420.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 276.316000 432.236000 282.472000 420.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 283.420000 432.236000 287.224000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.316000 432.236000 295.468000 420.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 295.516000 432.236000 299.344000 420.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 299.320000 432.236000 303.148000 420.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 304.120000 432.236000 307.924000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.920000 432.236000 316.144000 420.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 316.120000 432.236000 320.560000 420.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 321.616000 432.236000 325.420000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.416000 432.236000 331.228000 420.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 331.216000 432.236000 338.944000 420.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 339.016000 432.236000 346.108000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 347.020000 432.236000 350.824000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.916000 432.236000 358.636000 420.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 358.612000 432.236000 365.836000 420.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 365.812000 432.236000 373.540000 420.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 373.612000 432.236000 380.380000 420.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 380.416000 432.236000 387.508000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 387.520000 432.236000 395.248000 420.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 395.116000 432.236000 398.944000 420.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 398.920000 432.236000 406.012000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 406.024000 432.236000 413.752000 420.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 413.824000 432.236000 420.544000 420.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 420.520000 432.236000 427.612000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 427.624000 432.236000 433.780000 420.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 434.824000 432.236000 438.628000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.624000 432.236000 446.848000 420.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 446.824000 432.236000 451.264000 420.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 452.320000 432.236000 456.124000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 457.120000 432.236000 468.496000 420.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 468.520000 432.236000 475.744000 420.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 475.720000 432.236000 483.400000 420.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 483.424000 432.236000 490.516000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 490.528000 432.236000 496.264000 420.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 496.228000 432.236000 503.956000 420.236000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 432.236000 507.904000 420.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 418.336000 190.312000 406.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 418.336000 197.392000 406.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 197.404000 418.336000 204.124000 406.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 204.100000 418.336000 211.828000 406.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 211.900000 418.336000 219.628000 406.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 219.604000 418.336000 226.828000 406.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 226.804000 418.336000 230.632000 406.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 230.704000 418.336000 237.928000 406.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 237.904000 418.336000 245.584000 406.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 245.608000 418.336000 252.376000 406.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 250.804000 418.336000 254.608000 406.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.500000 418.336000 261.304000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 264.196000 418.336000 276.472000 406.336000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 276.496000 418.336000 283.264000 406.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 286.192000 418.336000 289.996000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 292.996000 418.336000 304.372000 406.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 304.300000 418.336000 311.524000 406.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 311.596000 418.336000 317.752000 406.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 317.800000 418.336000 322.612000 406.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 322.504000 418.336000 326.548000 406.336000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 326.608000 418.336000 333.328000 406.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 333.304000 418.336000 341.032000 406.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 341.104000 418.336000 348.196000 406.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 348.208000 418.336000 353.944000 406.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 353.908000 418.336000 357.736000 406.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 357.712000 418.336000 363.868000 406.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 363.916000 418.336000 371.644000 406.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 371.620000 418.336000 378.712000 406.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 378.724000 418.336000 386.404000 406.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 389.320000 418.336000 393.124000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 396.016000 418.336000 403.168000 406.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 403.216000 418.336000 410.896000 406.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 410.812000 418.336000 418.492000 406.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 418.516000 418.336000 422.344000 406.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 422.416000 418.336000 426.244000 406.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 426.220000 418.336000 433.372000 406.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 433.324000 418.336000 441.052000 406.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 441.124000 418.336000 447.844000 406.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 447.820000 418.336000 454.912000 406.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 457.816000 418.336000 461.620000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 464.620000 418.336000 468.448000 406.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 468.424000 418.336000 474.580000 406.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 477.520000 418.336000 481.324000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.216000 418.336000 489.028000 406.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.112000 418.336000 496.840000 406.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.816000 418.336000 503.908000 406.336000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 418.336000 508.004000 406.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 404.436000 193.180000 392.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 193.204000 404.436000 197.032000 392.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 197.008000 404.436000 203.164000 392.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 203.212000 404.436000 210.940000 392.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 210.916000 404.436000 221.176000 392.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 221.212000 404.436000 228.364000 392.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.316000 404.436000 234.472000 392.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 234.520000 404.436000 242.248000 392.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 242.224000 404.436000 249.316000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 249.328000 404.436000 255.064000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 253.732000 404.436000 257.536000 392.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.728000 404.436000 261.532000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 261.628000 404.436000 266.368000 392.436000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 266.332000 404.436000 270.136000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.436000 404.436000 276.592000 392.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 276.640000 404.436000 281.452000 392.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 281.440000 404.436000 285.268000 392.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 285.244000 404.436000 289.072000 392.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 289.144000 404.436000 292.972000 392.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 293.044000 404.436000 296.848000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 296.944000 404.436000 302.680000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 302.644000 404.436000 309.736000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 309.748000 404.436000 321.124000 392.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 321.148000 404.436000 328.240000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 328.252000 404.436000 339.628000 392.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 339.652000 404.436000 347.332000 392.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 347.356000 404.436000 354.448000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 354.460000 404.436000 360.196000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 360.256000 404.436000 364.060000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.360000 404.436000 374.620000 392.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 374.560000 404.436000 378.388000 392.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 378.460000 404.436000 383.272000 392.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 383.260000 404.436000 390.988000 392.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 391.060000 404.436000 394.864000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 394.960000 404.436000 402.688000 392.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 402.664000 404.436000 409.888000 392.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 409.960000 404.436000 415.696000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 415.660000 404.436000 421.396000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 421.360000 404.436000 428.584000 392.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 428.656000 404.436000 434.392000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 434.452000 404.436000 438.256000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.556000 404.436000 449.932000 392.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 449.860000 404.436000 456.628000 392.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 456.760000 404.436000 460.564000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 460.660000 404.436000 467.380000 392.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 467.356000 404.436000 474.580000 392.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 474.556000 404.436000 478.384000 392.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 478.456000 404.436000 482.284000 392.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 482.260000 404.436000 489.352000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 489.364000 404.436000 497.044000 392.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 497.068000 404.436000 504.160000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 404.436000 508.004000 392.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 390.536000 193.180000 378.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 193.204000 390.536000 200.356000 378.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 200.308000 390.536000 207.076000 378.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 207.112000 390.536000 213.268000 378.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 213.508000 390.536000 217.312000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 217.612000 390.536000 224.764000 378.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 224.812000 390.536000 232.540000 378.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 232.516000 390.536000 240.196000 378.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 240.520000 390.536000 244.324000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 244.624000 390.536000 249.436000 378.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 249.424000 390.536000 257.152000 378.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 257.224000 390.536000 264.316000 378.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 264.424000 390.536000 268.228000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.528000 390.536000 279.904000 378.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 279.928000 390.536000 287.152000 378.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 287.128000 390.536000 294.856000 378.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 294.832000 390.536000 302.560000 378.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 302.632000 390.536000 307.444000 378.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 307.432000 390.536000 314.584000 378.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.536000 390.536000 318.364000 378.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 318.436000 390.536000 326.164000 378.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 326.440000 390.536000 330.244000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.640000 390.536000 337.864000 378.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 337.840000 390.536000 342.280000 378.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 342.436000 390.536000 346.240000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 346.540000 390.536000 354.220000 378.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 354.244000 390.536000 358.072000 378.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 358.144000 390.536000 363.880000 378.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 363.844000 390.536000 368.656000 378.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 368.740000 390.536000 375.508000 378.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 375.736000 390.536000 379.540000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.840000 390.536000 387.520000 378.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 387.544000 390.536000 391.372000 378.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 391.348000 390.536000 397.504000 378.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 397.552000 390.536000 405.280000 378.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 405.256000 390.536000 412.348000 378.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 412.360000 390.536000 418.516000 378.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 418.756000 390.536000 422.560000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 422.860000 390.536000 427.672000 378.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 427.660000 390.536000 434.884000 378.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 435.160000 390.536000 438.964000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.264000 390.536000 449.524000 378.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 449.560000 390.536000 456.712000 378.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 456.664000 390.536000 462.820000 378.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 462.868000 390.536000 470.596000 378.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 470.872000 390.536000 474.676000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.976000 390.536000 482.128000 378.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 482.176000 390.536000 486.616000 378.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 486.580000 390.536000 491.392000 378.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 491.380000 390.536000 498.472000 378.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 498.484000 390.536000 504.220000 378.536000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 390.536000 508.004000 378.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 376.636000 193.180000 364.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 193.204000 376.636000 200.356000 364.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 200.308000 376.636000 206.044000 364.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 206.104000 376.636000 210.916000 364.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 210.904000 376.636000 214.732000 364.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 214.708000 376.636000 221.800000 364.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 221.812000 376.636000 227.968000 364.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 228.016000 376.636000 231.820000 364.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.916000 376.636000 235.720000 364.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 235.816000 376.636000 246.316000 364.636000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 246.316000 376.636000 253.540000 364.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 253.516000 376.636000 263.776000 364.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 263.812000 376.636000 270.964000 364.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 271.012000 376.636000 278.692000 364.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 278.608000 376.636000 285.760000 364.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 285.808000 376.636000 292.576000 364.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 292.612000 376.636000 298.768000 364.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 298.816000 376.636000 302.620000 364.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 302.920000 376.636000 307.732000 364.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 307.720000 376.636000 315.448000 364.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 315.424000 376.636000 322.516000 364.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 322.624000 376.636000 326.428000 364.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.524000 376.636000 337.900000 364.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 337.924000 376.636000 345.076000 364.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 345.028000 376.636000 348.856000 364.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 348.928000 376.636000 356.656000 364.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 356.728000 376.636000 360.532000 364.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 360.832000 376.636000 368.560000 364.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 368.536000 376.636000 374.692000 364.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 374.740000 376.636000 381.832000 364.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 381.844000 376.636000 385.648000 364.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.744000 376.636000 390.184000 364.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 390.148000 376.636000 397.372000 364.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 397.444000 376.636000 403.180000 364.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 403.240000 376.636000 407.044000 364.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.344000 376.636000 418.720000 364.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 418.648000 376.636000 425.416000 364.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 425.452000 376.636000 429.256000 364.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.448000 376.636000 436.708000 364.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 436.744000 376.636000 440.572000 364.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 440.548000 376.636000 445.360000 364.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.348000 376.636000 452.068000 364.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 452.152000 376.636000 459.880000 364.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 459.856000 376.636000 466.948000 364.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.960000 376.636000 474.688000 364.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 474.760000 376.636000 478.564000 364.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.864000 376.636000 485.020000 364.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 484.960000 376.636000 488.788000 364.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 488.860000 376.636000 496.588000 364.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 496.564000 376.636000 503.824000 364.636000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 376.636000 507.904000 364.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 362.736000 189.328000 350.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 189.304000 362.736000 195.460000 350.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 195.508000 362.736000 199.312000 350.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 199.312000 362.736000 204.124000 350.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 204.112000 362.736000 211.840000 350.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 211.816000 362.736000 218.908000 350.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 218.920000 362.736000 222.724000 350.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 222.724000 362.736000 230.404000 350.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 230.428000 362.736000 238.156000 350.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 238.132000 362.736000 241.960000 350.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 241.936000 362.736000 245.764000 350.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 245.740000 362.736000 250.552000 350.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 250.540000 362.736000 254.584000 350.736000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 254.644000 362.736000 258.472000 350.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 258.448000 362.736000 266.176000 350.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 266.152000 362.736000 269.956000 350.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 270.100000 362.736000 277.780000 350.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 277.804000 362.736000 284.956000 350.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 285.004000 362.736000 290.740000 350.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 290.704000 362.736000 298.384000 350.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 298.408000 362.736000 305.560000 350.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 305.608000 362.736000 313.288000 350.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 313.312000 362.736000 320.404000 350.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 320.416000 362.736000 324.220000 350.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 324.220000 362.736000 331.900000 350.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 331.924000 362.736000 335.752000 350.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 335.728000 362.736000 341.884000 350.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 341.932000 362.736000 349.612000 350.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 349.636000 362.736000 356.860000 350.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 356.836000 362.736000 362.992000 350.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 363.040000 362.736000 370.192000 350.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 370.240000 362.736000 374.068000 350.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 374.044000 362.736000 377.848000 350.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.848000 362.736000 381.652000 350.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 342.836000 190.240000 330.836000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 190.204000 342.836000 197.932000 330.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 199.108000 342.836000 202.912000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 204.112000 342.836000 208.924000 330.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 208.912000 342.836000 216.640000 330.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 216.712000 342.836000 223.804000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 224.908000 342.836000 228.712000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 230.008000 342.836000 241.384000 330.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 241.312000 342.836000 245.140000 330.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 245.116000 342.836000 252.796000 330.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 252.820000 342.836000 260.500000 330.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 260.524000 342.836000 264.352000 330.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 264.328000 342.836000 271.420000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 272.632000 342.836000 276.436000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.636000 342.836000 284.860000 330.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 284.836000 342.836000 289.276000 330.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 290.536000 342.836000 294.340000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 295.540000 342.836000 300.352000 330.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 300.340000 342.836000 308.068000 330.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 308.140000 342.836000 315.232000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 316.240000 342.836000 320.044000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 321.244000 342.836000 328.504000 330.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 328.540000 342.836000 332.368000 330.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 332.344000 342.836000 337.156000 330.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 337.144000 342.836000 343.864000 330.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 343.948000 342.836000 351.676000 330.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 351.652000 342.836000 358.744000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 358.756000 342.836000 366.484000 330.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 367.660000 342.836000 371.464000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.760000 342.836000 376.588000 330.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 376.564000 342.836000 382.720000 330.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 383.860000 342.836000 387.664000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 388.864000 342.836000 396.016000 330.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 397.168000 342.836000 400.972000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.172000 342.836000 413.548000 330.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 413.572000 342.836000 420.724000 330.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 420.676000 342.836000 426.832000 330.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 426.880000 342.836000 433.036000 330.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 432.976000 342.836000 436.804000 330.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 436.876000 342.836000 443.644000 330.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 443.680000 342.836000 450.772000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 451.876000 342.836000 455.680000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.880000 342.836000 467.140000 330.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 467.176000 342.836000 474.400000 330.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 474.376000 342.836000 481.600000 330.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 481.576000 342.836000 489.256000 330.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 489.280000 342.836000 496.372000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 496.384000 342.836000 504.112000 330.836000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 342.836000 508.004000 330.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 328.936000 190.312000 316.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 328.936000 197.452000 316.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 197.500000 328.936000 205.180000 316.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 205.204000 328.936000 209.032000 316.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 209.008000 328.936000 216.100000 316.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 216.904000 328.936000 220.708000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 221.500000 328.936000 231.760000 316.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 231.796000 328.936000 239.524000 316.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 239.500000 328.936000 243.328000 316.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 243.304000 328.936000 250.024000 316.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 250.108000 328.936000 257.836000 316.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 258.604000 328.936000 262.408000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 263.200000 328.936000 269.356000 316.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 269.404000 328.936000 276.496000 316.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 276.508000 328.936000 282.244000 316.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 282.208000 328.936000 288.976000 316.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 289.012000 328.936000 296.104000 316.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 296.116000 328.936000 302.272000 316.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 303.016000 328.936000 306.820000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 307.720000 328.936000 314.872000 316.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.920000 328.936000 321.076000 316.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 321.820000 328.936000 325.624000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.416000 328.936000 333.568000 316.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 334.312000 328.936000 338.116000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.016000 328.936000 345.736000 316.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 345.712000 328.936000 353.440000 316.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 353.416000 328.936000 358.228000 316.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 358.312000 328.936000 363.124000 316.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 363.112000 328.936000 366.940000 316.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 366.916000 328.936000 374.644000 316.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 374.716000 328.936000 382.396000 316.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 383.116000 328.936000 386.920000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 387.712000 328.936000 395.392000 316.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 395.416000 328.936000 399.244000 316.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 399.220000 328.936000 406.444000 316.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 406.420000 328.936000 413.140000 316.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 413.224000 328.936000 420.484000 316.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 420.424000 328.936000 424.228000 316.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 425.128000 328.936000 428.932000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.724000 328.936000 439.984000 316.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 440.020000 328.936000 443.848000 316.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 443.824000 328.936000 448.636000 316.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 448.624000 328.936000 456.352000 316.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 457.120000 328.936000 460.924000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 461.824000 328.936000 468.544000 316.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 468.520000 328.936000 475.744000 316.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 475.720000 328.936000 483.400000 316.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 483.424000 328.936000 491.104000 316.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 491.128000 328.936000 498.220000 316.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 498.232000 328.936000 503.968000 316.936000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 328.936000 507.904000 316.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 315.036000 193.180000 303.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 193.204000 315.036000 200.428000 303.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 200.404000 315.036000 205.216000 303.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 205.204000 315.036000 211.360000 303.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 211.504000 315.036000 215.308000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 215.500000 315.036000 222.652000 303.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 222.700000 315.036000 230.428000 303.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 230.404000 315.036000 238.084000 303.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 238.204000 315.036000 242.008000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 242.200000 315.036000 249.880000 303.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 249.904000 315.036000 257.056000 303.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 257.008000 315.036000 264.736000 303.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 264.808000 315.036000 270.964000 303.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 271.012000 315.036000 274.816000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 275.008000 315.036000 282.736000 303.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 282.712000 315.036000 289.864000 303.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 289.912000 315.036000 297.640000 303.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 297.616000 315.036000 305.296000 303.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 305.320000 315.036000 309.148000 303.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 309.124000 315.036000 316.852000 303.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 316.924000 315.036000 324.604000 303.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 324.724000 315.036000 328.528000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 328.720000 315.036000 335.872000 303.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 335.920000 315.036000 343.600000 303.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 343.516000 315.036000 350.740000 303.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 350.812000 315.036000 357.580000 303.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 357.508000 315.036000 364.600000 303.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 364.612000 315.036000 368.416000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.812000 315.036000 379.072000 303.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.012000 315.036000 382.840000 303.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 382.912000 315.036000 387.724000 303.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 387.712000 315.036000 395.440000 303.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 395.416000 315.036000 399.244000 303.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 399.316000 315.036000 407.044000 303.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 407.116000 315.036000 410.920000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 411.112000 315.036000 418.204000 303.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 418.216000 315.036000 425.368000 303.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 425.416000 315.036000 431.572000 303.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 431.512000 315.036000 438.280000 303.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 438.412000 315.036000 442.216000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 442.408000 315.036000 448.144000 303.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 448.108000 315.036000 455.200000 303.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 455.212000 315.036000 462.364000 303.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 462.412000 315.036000 469.132000 303.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 469.108000 315.036000 476.836000 303.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 476.812000 315.036000 480.616000 303.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.712000 315.036000 484.516000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.816000 315.036000 489.556000 303.036000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 489.520000 315.036000 494.332000 303.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 494.320000 315.036000 497.608000 303.036000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 497.620000 315.036000 503.776000 303.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 315.036000 507.904000 303.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 301.136000 192.268000 289.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 192.304000 301.136000 199.396000 289.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 199.408000 301.136000 205.144000 289.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 205.108000 301.136000 211.876000 289.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 212.008000 301.136000 215.812000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 215.908000 301.136000 222.628000 289.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 222.604000 301.136000 229.828000 289.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 229.804000 301.136000 237.532000 289.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 237.604000 301.136000 244.372000 289.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 244.408000 301.136000 251.500000 289.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 251.512000 301.136000 259.240000 289.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 259.216000 301.136000 263.044000 289.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 263.020000 301.136000 270.112000 289.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 270.124000 301.136000 277.852000 289.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 277.924000 301.136000 282.736000 289.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 282.820000 301.136000 286.624000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.924000 301.136000 294.076000 289.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 294.028000 301.136000 301.756000 289.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 301.732000 301.136000 309.412000 289.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 309.436000 301.136000 313.240000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 313.432000 301.136000 319.588000 289.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 319.636000 301.136000 327.316000 289.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 327.232000 301.136000 334.384000 289.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 334.432000 301.136000 341.152000 289.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.128000 301.136000 344.956000 289.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 345.028000 301.136000 352.252000 289.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 352.228000 301.136000 359.956000 289.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 359.932000 301.136000 366.088000 289.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 366.136000 301.136000 369.940000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.132000 301.136000 377.224000 289.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 377.236000 301.136000 384.964000 289.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 385.036000 301.136000 392.260000 289.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 392.236000 301.136000 399.964000 289.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 399.940000 301.136000 407.620000 289.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 407.644000 301.136000 415.372000 289.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 415.444000 301.136000 419.248000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.548000 301.136000 423.988000 289.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 423.844000 301.136000 431.068000 289.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 431.044000 301.136000 436.780000 289.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 436.948000 301.136000 440.752000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 441.052000 301.136000 452.428000 289.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 452.356000 301.136000 459.580000 289.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 459.652000 301.136000 465.388000 289.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.256000 301.136000 472.348000 289.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 472.456000 301.136000 476.260000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 476.356000 301.136000 481.168000 289.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 481.252000 301.136000 488.980000 289.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 488.956000 301.136000 496.108000 289.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 496.060000 301.136000 503.788000 289.136000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 301.136000 507.904000 289.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 287.236000 192.724000 275.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 192.700000 287.236000 200.428000 275.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 200.500000 287.236000 207.592000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 207.796000 287.236000 211.600000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 211.900000 287.236000 218.620000 275.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 218.596000 287.236000 226.324000 275.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 226.300000 287.236000 233.392000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 233.500000 287.236000 237.940000 275.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 238.204000 287.236000 242.008000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 242.308000 287.236000 247.120000 275.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 247.108000 287.236000 254.332000 275.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 254.512000 287.236000 258.316000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.616000 287.236000 268.876000 275.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 268.912000 287.236000 276.136000 275.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 276.112000 287.236000 281.848000 275.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 281.812000 287.236000 289.072000 275.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 289.408000 287.236000 293.212000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 293.608000 287.236000 300.760000 275.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 300.808000 287.236000 305.620000 275.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 305.704000 287.236000 309.508000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 309.808000 287.236000 314.620000 275.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 314.704000 287.236000 322.432000 275.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 322.408000 287.236000 329.500000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 329.812000 287.236000 333.616000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.916000 287.236000 340.072000 275.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 340.120000 287.236000 347.272000 275.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 347.224000 287.236000 358.600000 275.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 358.624000 287.236000 365.716000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.920000 287.236000 369.724000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.024000 287.236000 374.836000 275.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 374.824000 287.236000 378.652000 275.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 378.724000 287.236000 390.100000 275.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 390.028000 287.236000 397.120000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 397.132000 287.236000 400.936000 275.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.332000 287.236000 405.136000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 405.436000 287.236000 413.428000 275.236000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 413.440000 287.236000 421.168000 275.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 421.144000 287.236000 428.236000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 428.248000 287.236000 433.984000 275.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 434.044000 287.236000 441.136000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 441.340000 287.236000 445.144000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.444000 287.236000 449.272000 275.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 449.248000 287.236000 455.404000 275.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 455.752000 287.236000 459.556000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.856000 287.236000 467.008000 275.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 467.152000 287.236000 470.956000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 471.352000 287.236000 477.508000 275.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 477.556000 287.236000 488.932000 275.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 488.860000 287.236000 496.012000 275.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 495.964000 287.236000 499.792000 275.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 499.768000 287.236000 503.596000 275.236000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 287.236000 507.904000 275.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 273.336000 190.312000 261.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 273.336000 197.452000 261.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 197.500000 273.336000 205.180000 261.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 205.204000 273.336000 209.032000 261.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 209.008000 273.336000 216.100000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 217.012000 273.336000 220.816000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 221.716000 273.336000 225.544000 261.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 225.520000 273.336000 233.248000 261.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 234.220000 273.336000 238.024000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.020000 273.336000 243.832000 261.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 243.820000 273.336000 251.548000 261.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 251.620000 273.336000 258.712000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 259.516000 273.336000 263.320000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 264.316000 273.336000 271.576000 261.336000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 271.612000 273.336000 275.440000 261.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 275.416000 273.336000 280.228000 261.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 280.216000 273.336000 286.936000 261.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 287.020000 273.336000 294.748000 261.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 294.616000 273.336000 301.708000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 301.720000 273.336000 309.448000 261.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 310.420000 273.336000 314.224000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 315.220000 273.336000 322.372000 261.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 322.420000 273.336000 328.576000 261.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 329.416000 273.336000 333.220000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 334.120000 273.336000 344.380000 261.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 344.416000 273.336000 351.508000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 351.520000 273.336000 355.348000 261.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 355.324000 273.336000 359.152000 261.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 359.128000 273.336000 362.932000 261.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 363.928000 273.336000 367.732000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.728000 273.336000 372.556000 261.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 372.532000 273.336000 380.260000 261.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 381.232000 273.336000 385.036000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.936000 273.336000 393.088000 261.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 393.940000 273.336000 397.744000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.740000 273.336000 404.896000 261.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 404.944000 273.336000 412.672000 261.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 412.648000 273.336000 420.376000 261.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 420.448000 273.336000 428.176000 261.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 428.152000 273.336000 434.920000 261.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 435.856000 273.336000 439.660000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.560000 273.336000 448.288000 261.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 448.264000 273.336000 455.488000 261.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 455.560000 273.336000 462.784000 261.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 462.760000 273.336000 470.020000 261.336000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 469.960000 273.336000 473.764000 261.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 474.664000 273.336000 478.468000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 479.560000 273.336000 487.240000 261.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 487.156000 273.336000 494.248000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 494.260000 273.336000 499.996000 261.336000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.100000 273.336000 504.144000 261.336000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 259.436000 189.940000 247.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 189.904000 259.436000 196.996000 247.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 197.008000 259.436000 203.728000 247.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 203.704000 259.436000 208.516000 247.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 208.504000 259.436000 212.308000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 212.308000 259.436000 216.748000 247.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 216.712000 259.436000 223.936000 247.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 223.912000 259.436000 229.648000 247.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 229.612000 259.436000 233.416000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 233.416000 259.436000 241.096000 247.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 241.120000 259.436000 246.856000 247.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 246.820000 259.436000 253.912000 247.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 253.924000 259.436000 261.076000 247.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 261.124000 259.436000 268.384000 247.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 268.420000 259.436000 272.860000 247.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 272.824000 259.436000 279.976000 247.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 280.024000 259.436000 286.180000 247.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 286.228000 259.436000 291.040000 247.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 291.028000 259.436000 294.832000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 294.832000 259.436000 299.272000 247.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 299.236000 259.436000 306.460000 247.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 306.436000 259.436000 312.172000 247.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 312.136000 259.436000 315.940000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 315.940000 259.436000 320.752000 247.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 320.740000 259.436000 331.000000 247.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 331.036000 259.436000 338.260000 247.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 338.032000 259.436000 341.836000 247.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 341.836000 259.436000 345.640000 247.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 239.536000 196.000000 227.536000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 196.000000 239.536000 203.092000 227.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 203.104000 239.536000 209.860000 227.536000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 209.908000 239.536000 214.720000 227.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 216.412000 239.536000 220.216000 227.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 221.908000 239.536000 226.720000 227.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.708000 239.536000 233.932000 227.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 235.708000 239.536000 239.512000 227.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.312000 239.536000 246.124000 227.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 246.112000 239.536000 253.840000 227.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 253.912000 239.536000 261.004000 227.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 262.612000 239.536000 266.416000 227.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.108000 239.536000 275.788000 227.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 275.812000 239.536000 281.548000 227.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 281.608000 239.536000 288.700000 227.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 288.712000 239.536000 295.864000 227.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 295.912000 239.536000 303.172000 227.536000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 303.112000 239.536000 307.552000 227.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 307.612000 239.536000 314.764000 227.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.716000 239.536000 320.872000 227.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 320.812000 239.536000 325.624000 227.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 327.412000 239.536000 331.216000 227.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.016000 239.536000 340.744000 227.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 340.720000 239.536000 347.944000 227.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 348.016000 239.536000 355.240000 227.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 355.120000 239.536000 362.380000 227.536000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 364.120000 239.536000 367.924000 227.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 369.616000 239.536000 376.768000 227.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 376.816000 239.536000 382.552000 227.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 382.516000 239.536000 389.608000 227.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 391.312000 239.536000 395.116000 227.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 396.916000 239.536000 401.728000 227.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 401.812000 239.536000 409.540000 227.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 409.516000 239.536000 416.608000 227.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 418.312000 239.536000 422.116000 227.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.808000 239.536000 431.488000 227.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 431.512000 239.536000 438.736000 227.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 438.712000 239.536000 445.936000 227.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 445.912000 239.536000 451.648000 227.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 451.708000 239.536000 457.864000 227.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 459.508000 239.536000 463.312000 227.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 465.112000 239.536000 469.924000 227.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 470.008000 239.536000 477.232000 227.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 478.912000 239.536000 482.716000 227.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.408000 239.536000 489.220000 227.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.208000 239.536000 496.936000 227.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 497.008000 239.536000 504.100000 227.536000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 239.536000 508.004000 227.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 225.636000 193.180000 213.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 193.204000 225.636000 200.356000 213.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 200.308000 225.636000 208.036000 213.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 208.108000 225.636000 212.920000 213.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 212.908000 225.636000 218.644000 213.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 218.608000 225.636000 225.376000 213.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 226.108000 225.636000 229.912000 213.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 230.704000 225.636000 237.856000 213.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 237.904000 225.636000 245.632000 213.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 245.608000 225.636000 253.288000 213.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 254.104000 225.636000 257.908000 213.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.700000 225.636000 263.512000 213.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 263.500000 225.636000 271.228000 213.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 271.300000 225.636000 278.392000 213.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 279.004000 225.636000 282.808000 213.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 283.708000 225.636000 287.536000 213.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 287.512000 225.636000 294.664000 213.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 294.712000 225.636000 302.440000 213.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 302.416000 225.636000 310.144000 213.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 310.120000 225.636000 317.800000 213.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 317.824000 225.636000 323.560000 213.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 323.620000 225.636000 330.388000 213.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 331.120000 225.636000 334.924000 213.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 335.716000 225.636000 341.452000 213.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 341.416000 225.636000 348.640000 213.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 348.712000 225.636000 355.936000 213.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 355.912000 225.636000 367.288000 213.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 367.312000 225.636000 371.116000 213.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.812000 225.636000 375.616000 213.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 376.408000 225.636000 385.072000 213.636000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 385.912000 225.636000 389.716000 213.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 390.508000 225.636000 394.336000 213.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 394.312000 225.636000 401.464000 213.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 401.512000 225.636000 407.248000 213.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 407.212000 225.636000 414.892000 213.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 414.916000 225.636000 422.008000 213.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 422.020000 225.636000 426.064000 213.636000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 426.124000 225.636000 430.564000 213.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 430.528000 225.636000 437.680000 213.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 437.728000 225.636000 444.448000 213.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 444.424000 225.636000 451.516000 213.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 451.528000 225.636000 459.208000 213.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 460.732000 225.636000 464.536000 213.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 464.700000 225.636000 472.380000 213.636000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 472.404000 225.636000 480.132000 213.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 480.108000 225.636000 487.260000 213.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 487.308000 225.636000 493.044000 213.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 493.008000 225.636000 497.820000 213.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 497.808000 225.636000 504.120000 213.636000 1.000000 0.000000 0.000000 1.000000 z
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 225.636000 507.904000 213.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 211.736000 192.220000 199.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 192.196000 211.736000 196.024000 199.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 196.096000 211.736000 203.320000 199.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 203.296000 211.736000 210.016000 199.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 209.992000 211.736000 217.252000 199.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 217.696000 211.736000 221.500000 199.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 221.992000 211.736000 229.720000 199.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 229.696000 211.736000 236.848000 199.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 236.896000 211.736000 244.624000 199.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 244.600000 211.736000 252.280000 199.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 252.304000 211.736000 258.460000 199.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 258.904000 211.736000 262.708000 199.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 263.308000 211.736000 270.460000 199.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 270.508000 211.736000 278.188000 199.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 278.104000 211.736000 285.328000 199.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 285.400000 211.736000 292.168000 199.736000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 292.096000 211.736000 299.188000 199.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 299.596000 211.736000 303.400000 199.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 303.892000 211.736000 308.704000 199.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 308.692000 211.736000 316.420000 199.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 316.492000 211.736000 323.584000 199.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 324.088000 211.736000 327.892000 199.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 328.384000 211.736000 336.064000 199.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 336.088000 211.736000 343.312000 199.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 343.288000 211.736000 350.512000 199.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 350.488000 211.736000 356.224000 199.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 356.284000 211.736000 362.440000 199.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 362.380000 211.736000 366.184000 199.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.580000 211.736000 370.384000 199.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.876000 211.736000 380.704000 199.736000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 380.680000 211.736000 388.408000 199.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 388.984000 211.736000 392.788000 199.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.280000 211.736000 398.092000 199.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 398.080000 211.736000 405.808000 199.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 405.880000 211.736000 412.972000 199.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 413.380000 211.736000 417.184000 199.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 417.676000 211.736000 423.412000 199.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 423.376000 211.736000 427.204000 199.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 427.276000 211.736000 434.956000 199.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 434.980000 211.736000 442.708000 199.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 442.684000 211.736000 447.496000 199.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 447.988000 211.736000 451.792000 199.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 452.284000 211.736000 458.440000 199.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 458.488000 211.736000 462.316000 199.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.292000 211.736000 469.972000 199.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 469.996000 211.736000 477.088000 199.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 477.496000 211.736000 481.300000 199.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.792000 211.736000 485.620000 199.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 485.596000 211.736000 491.752000 199.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 492.292000 211.736000 496.096000 199.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 496.588000 211.736000 503.740000 199.736000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 211.736000 508.004000 199.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 197.836000 195.760000 185.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 195.796000 197.836000 199.624000 185.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 199.600000 197.836000 207.328000 185.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 207.304000 197.836000 214.984000 185.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 215.008000 197.836000 222.232000 185.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 222.208000 197.836000 232.468000 185.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 232.504000 197.836000 236.308000 185.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 236.308000 197.836000 243.460000 185.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 243.508000 197.836000 251.236000 185.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 251.212000 197.836000 258.892000 185.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 258.916000 197.836000 262.720000 185.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.720000 197.836000 269.872000 185.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 269.920000 197.836000 273.724000 185.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.724000 197.836000 279.880000 185.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 279.928000 197.836000 283.756000 185.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 283.732000 197.836000 287.560000 185.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 287.536000 197.836000 295.216000 185.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 295.240000 197.836000 299.068000 185.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 299.044000 197.836000 306.772000 185.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 306.748000 197.836000 314.428000 185.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 314.452000 197.836000 318.256000 185.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.256000 197.836000 325.936000 185.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 325.960000 197.836000 333.184000 185.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 333.160000 197.836000 340.384000 185.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 340.360000 197.836000 346.096000 185.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 346.060000 197.836000 349.864000 185.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 349.864000 197.836000 353.692000 185.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 353.668000 197.836000 360.760000 185.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.772000 197.836000 367.924000 185.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 367.972000 197.836000 375.652000 185.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 375.676000 197.836000 379.504000 185.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 379.480000 197.836000 387.208000 185.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 387.184000 197.836000 394.864000 185.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 394.888000 197.836000 398.692000 185.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.692000 197.836000 405.916000 185.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 405.892000 197.836000 413.620000 185.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 413.596000 197.836000 418.408000 185.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 418.396000 197.836000 425.620000 185.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 425.596000 197.836000 429.400000 185.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.400000 197.836000 434.212000 185.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 434.200000 197.836000 441.928000 185.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 441.904000 197.836000 448.996000 185.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 449.008000 197.836000 452.812000 185.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 453.100000 197.836000 457.912000 185.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 457.900000 197.836000 464.992000 185.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 465.004000 197.836000 470.740000 185.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 470.704000 197.836000 476.440000 185.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 476.404000 197.836000 483.556000 185.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 483.604000 197.836000 490.324000 185.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 490.300000 197.836000 497.392000 185.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 497.404000 197.836000 501.208000 185.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 463.300000 86.136000 471.364000 74.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 470.800000 86.136000 477.952000 74.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 478.000000 86.136000 485.680000 74.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 485.704000 86.136000 492.796000 74.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 492.808000 86.136000 496.612000 74.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 496.600000 86.136000 504.232000 74.136000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 3521.600000 0 477.900000 3521.600000 0 477.900000 3831.400000 0 134.300000 3831.400000 0 134.300000 3521.600000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -272970.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 532.500000 0 168.100000 532.500000 0 168.100000 537.500000 0 76.900000 537.500000 0 76.900000 532.500000 0
+eoFillPath subpath 1 163.100000 537.400000 0 168.100000 537.400000 0 168.100000 668.000000 0 163.100000 668.000000 0 163.100000 537.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 537.500000 0 163.100000 537.500000 0 163.100000 672.900000 0 72.000000 672.900000 0 72.000000 537.500000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 668.580000 87.320000 658.580000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 668.580000 93.420000 658.580000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 668.580000 97.510000 658.580000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 668.580000 101.420000 658.580000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 668.580000 104.170000 658.580000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 668.580000 110.530000 658.580000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 668.580000 113.270000 658.580000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 668.580000 116.470000 658.580000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 668.580000 123.480000 658.580000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 668.580000 129.610000 658.580000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 668.580000 135.090000 658.580000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 668.580000 140.890000 658.580000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 668.580000 144.820000 658.580000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 668.580000 150.920000 658.580000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 668.580000 153.670000 658.580000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 668.580000 156.470000 658.580000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 541.700000 0 168.200000 541.700000 0 168.200000 656.900000 0 72.000000 656.900000 0 72.000000 541.700000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 609.852000 79.253000 600.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 609.852000 86.669000 600.852000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 609.852000 90.215000 600.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 609.852000 93.077000 600.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 609.852000 97.406000 600.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 609.852000 100.853000 600.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 609.852000 107.324000 600.852000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 609.852000 112.337000 600.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 609.852000 115.271000 600.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 609.852000 118.655000 600.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 609.852000 126.512000 600.852000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 609.852000 130.805000 600.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 609.852000 135.881000 600.852000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 609.852000 139.355000 600.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 609.852000 147.284000 600.852000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 609.852000 150.074000 600.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 609.852000 155.897000 600.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 609.852000 158.750000 600.852000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 609.852000 161.853000 600.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 599.352000 82.124000 590.352000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 599.352000 87.137000 590.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 599.352000 90.071000 590.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 599.352000 93.356000 590.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 599.352000 100.403000 590.352000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 599.352000 104.921000 590.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 599.352000 109.205000 590.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 599.352000 117.737000 590.352000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 599.352000 123.119000 590.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 599.352000 128.996000 590.352000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 599.352000 132.605000 590.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 599.352000 138.392000 590.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 599.352000 141.749000 590.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 599.352000 149.507000 590.352000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 599.352000 153.800000 590.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 599.352000 158.876000 590.352000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 599.352000 161.853000 590.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 588.852000 81.764000 579.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 588.852000 87.596000 579.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 588.852000 93.356000 579.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 588.852000 102.050000 579.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 588.852000 113.822000 579.852000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 588.852000 122.651000 579.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 588.852000 134.117000 579.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 588.852000 138.401000 579.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 588.852000 147.149000 579.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 588.852000 158.921000 579.852000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 588.852000 161.853000 579.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 578.352000 79.271000 569.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 578.352000 84.338000 569.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 578.352000 89.621000 569.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 578.352000 94.643000 569.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 578.352000 100.502000 569.352000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 578.352000 106.262000 569.352000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 578.352000 111.518000 569.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 578.352000 116.216000 569.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 578.352000 119.249000 569.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 578.352000 122.363000 569.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 578.352000 128.186000 569.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 578.352000 131.345000 569.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 578.352000 137.060000 569.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 578.352000 140.147000 569.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 578.352000 145.007000 569.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 578.352000 148.598000 569.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 578.352000 151.460000 569.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 578.352000 155.789000 569.352000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 578.352000 158.933000 569.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 567.852000 80.702000 558.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 567.852000 83.573000 558.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 567.852000 89.396000 558.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 567.852000 95.156000 558.852000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 567.852000 100.547000 558.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 567.852000 109.052000 558.852000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 567.852000 111.959000 558.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 567.852000 117.251000 558.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 567.852000 121.904000 558.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 567.852000 126.503000 558.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 567.852000 129.338000 558.852000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 567.852000 134.936000 558.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 567.852000 143.441000 558.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 567.852000 148.796000 558.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 567.852000 154.574000 558.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 567.852000 158.876000 558.852000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 567.852000 161.853000 558.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 557.352000 79.271000 548.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 557.352000 85.094000 548.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 557.352000 88.703000 548.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 557.352000 94.112000 548.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 557.352000 97.244000 548.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 557.352000 103.058000 548.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 557.352000 108.890000 548.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 557.352000 111.950000 548.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 557.352000 115.271000 548.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 557.352000 120.338000 548.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 557.352000 125.621000 548.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 557.352000 131.363000 548.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 557.352000 134.558000 548.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 557.352000 140.048000 548.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 557.352000 145.430000 548.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 557.352000 150.551000 548.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 557.352000 155.960000 548.352000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 557.352000 158.933000 548.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 546.852000 80.009000 537.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 546.852000 85.364000 537.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 546.852000 88.271000 537.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 546.852000 91.169000 537.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 546.852000 97.955000 537.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 546.852000 107.765000 537.852000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 546.852000 110.672000 537.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 546.852000 115.964000 537.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 546.852000 120.617000 537.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 546.852000 125.216000 537.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 546.852000 128.051000 537.852000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 546.852000 134.954000 537.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 546.852000 146.285000 537.852000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 546.852000 151.667000 537.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 546.852000 155.906000 537.852000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 546.852000 159.033000 537.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 537.400000 0 72.100000 537.400000 0 72.100000 672.900000 0 72.000000 672.900000 0 72.000000 537.400000 0
+eoFillPath subpath 1 163.100000 537.400000 0 163.200000 537.400000 0 163.200000 672.900000 0 163.100000 672.900000 0 163.100000 537.400000 0
+eoFillPath subpath 1 72.000000 672.800000 0 163.200000 672.800000 0 163.200000 672.900000 0 72.000000 672.900000 0 72.000000 672.800000 0
+eoFillPath subpath 1 72.000000 537.400000 0 163.200000 537.400000 0 163.200000 537.500000 0 72.000000 537.500000 0 72.000000 537.400000 0
+saveState
+eoClipPath subpath 1 96.900000 612.700000 0 138.300000 612.700000 0 138.300000 656.900000 0 96.900000 656.900000 0 96.900000 612.700000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 17920.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 257.900000 0 165.500000 257.900000 0 165.500000 262.900000 0 76.900000 262.900000 0 76.900000 257.900000 0
+eoFillPath subpath 1 160.500000 262.800000 0 165.500000 262.800000 0 165.500000 419.100000 0 160.500000 419.100000 0 160.500000 262.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 262.900000 0 121.400000 262.900000 0 121.400000 424.000000 0 72.000000 424.000000 0 72.000000 262.900000 0
+saveState
+eoClipPath subpath 1 72.000000 262.900000 0 160.500000 262.900000 0 160.500000 424.000000 0 72.000000 424.000000 0 72.000000 262.900000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 419.680000 89.280000 409.680000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 419.680000 95.630000 409.680000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 419.680000 99.520000 409.680000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 419.680000 102.270000 409.680000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 419.680000 108.450000 409.680000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 419.680000 112.610000 409.680000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 419.680000 118.510000 409.680000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 419.680000 121.670000 409.680000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 419.680000 124.470000 409.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 419.680000 130.830000 409.680000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 419.680000 133.970000 409.680000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 419.680000 137.920000 409.680000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 419.680000 144.230000 409.680000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 419.680000 150.350000 409.680000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 419.680000 153.570000 409.680000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 407.980000 95.000000 397.980000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 407.980000 97.770000 397.980000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 407.980000 103.000000 397.980000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 407.980000 109.330000 397.980000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 407.980000 117.470000 397.980000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 407.980000 123.620000 397.980000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 407.980000 128.800000 397.980000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 407.980000 135.130000 397.980000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 407.980000 141.250000 397.980000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 407.980000 145.410000 397.980000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 393.152000 82.961000 384.152000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 393.152000 87.614000 384.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 393.152000 93.356000 384.152000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 393.152000 98.612000 384.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 393.152000 103.733000 384.152000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 393.152000 106.568000 384.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 393.152000 111.959000 384.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 393.152000 114.866000 384.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 393.152000 117.665000 384.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 393.152000 122.768000 384.152000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 393.152000 125.747000 384.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 393.152000 131.651000 384.152000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 393.152000 136.907000 384.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 393.152000 142.307000 384.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 393.152000 148.049000 384.152000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 393.152000 150.956000 384.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 393.152000 156.302000 384.152000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 393.152000 159.253000 384.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 382.652000 84.095000 373.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 382.652000 89.900000 373.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 382.652000 95.318000 373.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 382.652000 100.349000 373.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 382.652000 110.789000 373.652000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 382.652000 111.464000 373.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 382.652000 114.362000 373.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 382.652000 119.348000 373.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 382.652000 126.962000 373.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 382.652000 132.047000 373.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 382.652000 139.958000 373.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 382.652000 142.865000 373.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 382.652000 147.410000 373.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 382.652000 153.287000 373.652000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 382.652000 156.333000 373.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 372.152000 84.095000 363.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 372.152000 89.468000 363.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 372.152000 94.121000 363.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 372.152000 99.899000 363.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 372.152000 105.218000 363.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 372.152000 109.502000 363.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 372.152000 115.649000 363.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 372.152000 122.327000 363.152000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 372.152000 127.718000 363.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 372.152000 132.002000 363.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 372.152000 138.149000 363.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 372.152000 145.205000 363.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 372.152000 150.992000 363.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 372.152000 156.311000 363.152000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 372.152000 159.253000 363.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 361.652000 82.394000 352.652000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 361.652000 86.705000 352.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 361.652000 91.322000 352.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 361.652000 94.913000 352.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 361.652000 98.054000 352.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 361.652000 102.014000 352.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 361.652000 104.876000 352.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 361.652000 113.435000 352.652000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 361.652000 118.718000 352.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 361.652000 121.949000 352.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 361.652000 125.063000 352.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 361.652000 130.886000 352.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 361.652000 134.045000 352.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 361.652000 138.005000 352.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 361.652000 143.792000 352.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 361.652000 149.111000 352.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 361.652000 151.964000 352.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 361.652000 156.293000 352.652000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 361.652000 159.153000 352.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 351.152000 79.271000 342.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 351.152000 82.169000 342.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 351.152000 85.526000 342.152000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 351.152000 90.818000 342.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 351.152000 94.454000 342.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 351.152000 99.008000 342.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 351.152000 104.318000 342.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 351.152000 110.096000 342.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 351.152000 115.856000 342.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 351.152000 119.546000 342.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 351.152000 124.001000 342.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 351.152000 129.509000 342.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 351.152000 133.145000 342.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 351.152000 139.751000 342.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 351.152000 145.205000 342.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 351.152000 148.841000 342.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 351.152000 152.657000 342.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 351.152000 156.293000 342.152000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 351.152000 159.253000 342.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 340.652000 84.095000 331.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 340.652000 88.406000 331.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 340.652000 93.824000 331.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 340.652000 99.602000 331.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 340.652000 105.362000 331.652000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 340.652000 108.422000 331.652000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 340.652000 116.747000 331.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 340.652000 129.275000 331.652000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 340.652000 135.089000 331.652000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 340.652000 138.698000 331.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 340.652000 141.560000 331.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 340.652000 146.906000 331.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 340.652000 151.190000 331.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 340.652000 156.266000 331.652000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 340.652000 159.253000 331.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 330.152000 82.196000 321.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 330.152000 87.560000 321.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 330.152000 92.213000 321.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 330.152000 96.551000 321.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 330.152000 101.708000 321.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 330.152000 107.216000 321.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 330.152000 111.653000 321.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 330.152000 118.961000 321.152000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 330.152000 124.316000 321.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 330.152000 128.654000 321.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 330.152000 133.172000 321.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 330.152000 138.995000 321.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 330.152000 143.612000 321.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 330.152000 148.913000 321.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 330.152000 153.197000 321.152000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 330.152000 156.333000 321.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 319.652000 80.009000 310.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 319.652000 85.319000 310.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 319.652000 91.061000 310.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 319.652000 100.052000 310.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 319.652000 113.993000 310.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 319.652000 116.873000 310.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 319.652000 120.410000 310.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 319.652000 126.296000 310.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 319.652000 135.350000 310.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 319.652000 145.106000 310.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 319.652000 150.893000 310.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 319.652000 156.212000 310.652000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 319.652000 159.253000 310.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 309.152000 82.196000 300.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 309.152000 87.560000 300.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 309.152000 93.392000 300.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 309.152000 99.152000 300.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 309.152000 101.960000 300.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 309.152000 107.306000 300.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 309.152000 111.905000 300.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 309.152000 115.640000 300.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 309.152000 122.444000 300.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 309.152000 127.898000 300.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 309.152000 135.575000 300.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 309.152000 141.380000 300.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 309.152000 145.241000 300.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 309.152000 150.803000 300.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 309.152000 156.302000 300.152000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 309.152000 159.253000 300.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 298.652000 80.009000 289.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 298.652000 85.796000 289.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 298.652000 91.115000 289.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 298.652000 95.399000 289.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 298.652000 100.718000 289.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 298.652000 107.054000 289.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 298.652000 118.097000 289.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 298.652000 123.524000 289.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 298.652000 129.401000 289.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 298.652000 131.768000 289.652000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 298.652000 135.413000 289.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 298.652000 141.659000 289.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 298.652000 150.965000 289.652000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 298.652000 156.320000 289.652000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 298.652000 159.253000 289.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 288.152000 81.017000 279.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 288.152000 84.608000 279.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 288.152000 89.963000 279.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 288.152000 92.870000 279.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 288.152000 98.693000 279.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 288.152000 103.310000 279.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 288.152000 107.243000 279.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 288.152000 116.081000 279.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 288.152000 121.886000 279.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 288.152000 127.205000 279.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 288.152000 132.983000 279.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 288.152000 136.943000 279.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 288.152000 143.846000 279.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 288.152000 148.184000 279.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 288.152000 153.260000 279.152000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 288.152000 156.433000 279.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 277.652000 79.271000 268.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 277.652000 85.094000 268.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 277.652000 90.854000 268.652000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 277.652000 93.653000 268.652000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 262.800000 0 72.100000 262.800000 0 72.100000 424.000000 0 72.000000 424.000000 0 72.000000 262.800000 0
+eoFillPath subpath 1 160.500000 262.800000 0 160.600000 262.800000 0 160.600000 424.000000 0 160.500000 424.000000 0 160.500000 262.800000 0
+eoFillPath subpath 1 72.000000 423.900000 0 160.600000 423.900000 0 160.600000 424.000000 0 72.000000 424.000000 0 72.000000 423.900000 0
+eoFillPath subpath 1 72.000000 262.800000 0 160.600000 262.800000 0 160.600000 262.900000 0 72.000000 262.900000 0 72.000000 262.800000 0
+saveState
+eoClipPath subpath 1 108.000000 -224.600000 0 178.900000 -224.600000 0 178.900000 -167.900000 0 108.000000 -167.900000 0 108.000000 -224.600000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 101650.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -4282.900000 0 165.500000 -4282.900000 0 165.500000 -4277.900000 0 76.900000 -4277.900000 0 76.900000 -4282.900000 0
+eoFillPath subpath 1 160.500000 -4278.000000 0 165.500000 -4278.000000 0 165.500000 -4169.200000 0 160.500000 -4169.200000 0 160.500000 -4278.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -4277.900000 0 160.500000 -4277.900000 0 160.500000 -4164.300000 0 72.000000 -4164.300000 0 72.000000 -4277.900000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4168.648000 83.771000 -4177.648000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 -4168.648000 89.594000 -4177.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 -4168.648000 92.465000 -4177.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 -4168.648000 97.568000 -4177.648000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 -4168.648000 100.943000 -4177.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 -4168.648000 106.955000 -4177.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 -4168.648000 110.447000 -4177.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 -4168.648000 114.425000 -4177.648000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 -4168.648000 119.717000 -4177.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 -4168.648000 127.493000 -4177.648000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 -4168.648000 130.949000 -4177.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 -4168.648000 136.574000 -4177.648000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 -4168.648000 141.920000 -4177.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 -4168.648000 147.365000 -4177.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 -4168.648000 151.703000 -4177.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 -4168.648000 156.320000 -4177.648000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -4168.648000 159.153000 -4177.648000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4179.148000 81.764000 -4188.148000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -4179.148000 85.130000 -4188.148000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 -4179.148000 88.712000 -4188.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 -4179.148000 94.022000 -4188.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 -4179.148000 98.306000 -4188.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -4179.148000 102.455000 -4188.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 -4179.148000 106.676000 -4188.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 -4179.148000 110.312000 -4188.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 -4179.148000 114.920000 -4188.148000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 -4179.148000 119.060000 -4188.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 -4179.148000 125.450000 -4188.148000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 -4179.148000 130.832000 -4188.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 -4179.148000 139.445000 -4188.148000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 -4179.148000 145.169000 -4188.148000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 -4179.148000 148.076000 -4188.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 -4179.148000 153.323000 -4188.148000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -4179.148000 156.433000 -4188.148000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4189.648000 80.009000 -4198.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -4189.648000 82.871000 -4198.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 -4189.648000 88.316000 -4198.648000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 -4189.648000 94.094000 -4198.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 -4189.648000 96.947000 -4198.648000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 -4189.648000 104.948000 -4198.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 -4189.648000 113.705000 -4198.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 -4189.648000 119.492000 -4198.648000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 -4189.648000 124.811000 -4198.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 -4189.648000 132.848000 -4198.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 -4189.648000 141.605000 -4198.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 -4189.648000 144.467000 -4198.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 -4189.648000 148.103000 -4198.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 -4189.648000 150.965000 -4198.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 -4189.648000 156.311000 -4198.648000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -4189.648000 159.253000 -4198.648000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4200.148000 80.999000 -4209.148000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 -4200.148000 90.539000 -4209.148000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 -4200.148000 95.318000 -4209.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 -4200.148000 99.602000 -4209.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -4200.148000 102.473000 -4209.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 -4200.148000 108.260000 -4209.148000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 -4200.148000 110.762000 -4209.148000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 -4200.148000 115.316000 -4209.148000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 -4200.148000 122.156000 -4209.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 -4200.148000 132.299000 -4209.148000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 -4200.148000 136.970000 -4209.148000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 -4200.148000 139.877000 -4209.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 -4200.148000 142.775000 -4209.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 -4200.148000 148.022000 -4209.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 -4200.148000 152.720000 -4209.148000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 -4200.148000 156.311000 -4209.148000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -4200.148000 159.253000 -4209.148000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4210.648000 83.006000 -4219.648000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 -4210.648000 88.793000 -4219.648000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 -4210.648000 91.664000 -4219.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 -4210.648000 94.562000 -4219.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 -4210.648000 100.349000 -4219.648000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 -4210.648000 103.157000 -4219.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 -4210.648000 108.980000 -4219.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 -4210.648000 114.740000 -4219.648000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 -4210.648000 119.375000 -4219.648000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 -4210.648000 128.033000 -4219.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 -4210.648000 141.479000 -4219.648000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 -4210.648000 146.807000 -4219.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -4210.648000 152.684000 -4219.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 -4210.648000 156.293000 -4219.648000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -4210.648000 159.253000 -4219.648000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4221.148000 79.730000 -4230.148000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 -4221.148000 84.005000 -4230.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 -4221.148000 89.423000 -4230.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 -4221.148000 98.036000 -4230.148000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 -4221.148000 121.157000 -4230.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 -4221.148000 145.115000 -4230.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 -4221.148000 151.001000 -4230.148000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 -4221.148000 156.320000 -4230.148000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -4221.148000 159.253000 -4230.148000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4231.648000 83.285000 -4240.648000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 -4231.648000 89.099000 -4240.648000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 -4231.648000 93.401000 -4240.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 -4231.648000 98.477000 -4240.648000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 -4231.648000 103.121000 -4240.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 -4231.648000 105.974000 -4240.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 -4231.648000 111.320000 -4240.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 -4231.648000 115.604000 -4240.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 -4231.648000 123.857000 -4240.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 -4231.648000 136.007000 -4240.648000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 -4231.648000 141.794000 -4240.648000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 -4231.648000 144.665000 -4240.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 -4231.648000 147.464000 -4240.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 -4231.648000 153.251000 -4240.648000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -4231.648000 156.433000 -4240.648000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4242.148000 79.271000 -4251.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -4242.148000 85.094000 -4251.148000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -4242.148000 90.854000 -4251.148000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 -4242.148000 96.146000 -4251.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 -4242.148000 102.302000 -4251.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 -4242.148000 107.711000 -4251.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 -4242.148000 113.048000 -4251.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 -4242.148000 119.204000 -4251.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 -4242.148000 124.991000 -4251.148000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 -4242.148000 130.310000 -4251.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 -4242.148000 135.647000 -4251.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 -4242.148000 144.755000 -4251.148000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 -4242.148000 153.323000 -4251.148000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -4242.148000 156.333000 -4251.148000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4252.648000 82.160000 -4261.648000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 -4252.648000 85.067000 -4261.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 -4252.648000 89.297000 -4261.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 -4252.648000 94.616000 -4261.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 -4252.648000 98.747000 -4261.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 -4252.648000 106.055000 -4261.648000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 -4252.648000 109.700000 -4261.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 -4252.648000 115.055000 -4261.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 -4252.648000 118.601000 -4261.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 -4252.648000 124.010000 -4261.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 -4252.648000 128.042000 -4261.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 -4252.648000 135.998000 -4261.648000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 -4252.648000 141.785000 -4261.648000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 -4252.648000 144.656000 -4261.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 -4252.648000 147.554000 -4261.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 -4252.648000 153.341000 -4261.648000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -4252.648000 156.433000 -4261.648000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -4263.148000 79.271000 -4272.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -4263.148000 85.094000 -4272.148000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -4263.148000 90.854000 -4272.148000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 -4263.148000 93.743000 -4272.148000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -4278.000000 0 72.100000 -4278.000000 0 72.100000 -4164.300000 0 72.000000 -4164.300000 0 72.000000 -4278.000000 0
+eoFillPath subpath 1 160.500000 -4278.000000 0 160.600000 -4278.000000 0 160.600000 -4164.300000 0 160.500000 -4164.300000 0 160.500000 -4278.000000 0
+eoFillPath subpath 1 72.000000 -4164.400000 0 160.600000 -4164.400000 0 160.600000 -4164.300000 0 72.000000 -4164.300000 0 72.000000 -4164.400000 0
+eoFillPath subpath 1 72.000000 -4278.000000 0 160.600000 -4278.000000 0 160.600000 -4277.900000 0 72.000000 -4277.900000 0 72.000000 -4278.000000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 1911.600000 0 169.600000 1911.600000 0 169.600000 1916.600000 0 76.900000 1916.600000 0 76.900000 1911.600000 0
+eoFillPath subpath 1 164.600000 1916.500000 0 169.600000 1916.500000 0 169.600000 2032.100000 0 164.600000 2032.100000 0 164.600000 1916.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1916.600000 0 121.400000 1916.600000 0 121.400000 2037.000000 0 72.000000 2037.000000 0 72.000000 1916.600000 0
+saveState
+eoClipPath subpath 1 72.000000 1916.500000 0 164.600000 1916.500000 0 164.600000 2036.900000 0 72.000000 2036.900000 0 72.000000 1916.500000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -106630.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1986.500000 0 93.700000 1986.500000 0 93.700000 2005.700000 0 72.000000 2005.700000 0 72.000000 1986.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 1986.500000 0 169.600000 1986.500000 0 169.600000 2005.700000 0 93.700000 2005.700000 0 93.700000 1986.500000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1969.800000 0 93.700000 1969.800000 0 93.700000 1986.500000 0 72.000000 1986.500000 0 72.000000 1969.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 1969.800000 0 169.600000 1969.800000 0 169.600000 1986.500000 0 93.700000 1986.500000 0 93.700000 1969.800000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1950.600000 0 93.700000 1950.600000 0 93.700000 1969.800000 0 72.000000 1969.800000 0 72.000000 1950.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 1950.600000 0 169.600000 1950.600000 0 169.600000 1969.800000 0 93.700000 1969.800000 0 93.700000 1950.600000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 1931.400000 0 93.700000 1931.400000 0 93.700000 1950.600000 0 72.000000 1950.600000 0 72.000000 1931.400000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 1931.400000 0 169.600000 1931.400000 0 169.600000 1950.600000 0 93.700000 1950.600000 0 93.700000 1931.400000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2032.652000 82.898000 2023.652000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 2032.652000 87.200000 2023.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 2032.652000 90.809000 2023.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 2032.652000 93.671000 2023.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 2032.652000 98.315000 2023.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 2032.652000 101.906000 2023.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 2032.652000 106.514000 2023.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 2032.652000 109.754000 2023.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 2032.652000 112.868000 2023.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 2032.652000 118.691000 2023.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 2032.652000 121.850000 2023.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 2032.652000 125.702000 2023.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 2032.652000 131.588000 2023.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 2032.652000 136.907000 2023.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 2032.652000 140.039000 2023.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 2032.652000 146.078000 2023.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 2032.652000 151.442000 2023.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 2032.652000 154.349000 2023.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 2032.652000 157.148000 2023.652000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 2032.652000 160.433000 2023.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2022.152000 84.095000 2013.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 2022.152000 89.468000 2013.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 2022.152000 94.580000 2013.152000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 2022.152000 97.631000 2013.152000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 2001.752000 104.443000 1992.752000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 2001.752000 109.060000 1992.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 2001.752000 113.398000 1992.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 2001.752000 119.194000 1992.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 2001.752000 124.612000 1992.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 2001.752000 127.465000 1992.752000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 1985.052000 101.176000 1976.052000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 1985.052000 104.074000 1976.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 1985.052000 109.420000 1976.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 1985.052000 114.442000 1976.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 1985.052000 120.202000 1976.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 1985.052000 123.811000 1976.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 1985.052000 129.121000 1976.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 1985.052000 134.899000 1976.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 1985.052000 139.516000 1976.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 1985.052000 143.107000 1976.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 1985.052000 148.417000 1976.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 1985.052000 151.270000 1976.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 1985.052000 157.093000 1976.052000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 1968.352000 103.048000 1959.352000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 1968.352000 108.421000 1959.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 1968.352000 113.443000 1959.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 1968.352000 118.852000 1959.352000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 1968.352000 124.702000 1959.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 1968.352000 130.021000 1959.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 1968.352000 135.079000 1959.352000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 1949.152000 104.407000 1940.152000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 1949.152000 109.816000 1940.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 1949.152000 115.594000 1940.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 1949.152000 121.354000 1940.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 1949.152000 125.692000 1940.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 1949.152000 128.563000 1940.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 1949.152000 133.954000 1940.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 1949.152000 139.786000 1940.152000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 1916.500000 0 72.100000 1916.500000 0 72.100000 2037.000000 0 72.000000 2037.000000 0 72.000000 1916.500000 0
+eoFillPath subpath 1 164.600000 1916.500000 0 164.700000 1916.500000 0 164.700000 2037.000000 0 164.600000 2037.000000 0 164.600000 1916.500000 0
+eoFillPath subpath 1 72.000000 2036.900000 0 164.700000 2036.900000 0 164.700000 2037.000000 0 72.000000 2037.000000 0 72.000000 2036.900000 0
+eoFillPath subpath 1 72.000000 1916.500000 0 164.700000 1916.500000 0 164.700000 1916.600000 0 72.000000 1916.600000 0 72.000000 1916.500000 0
+eoFillPath subpath 1 91.300000 1931.400000 0 93.700000 1931.400000 0 93.700000 2005.700000 0 91.300000 2005.700000 0 91.300000 1931.400000 0
+eoFillPath subpath 1 72.000000 1950.600000 0 169.600000 1950.600000 0 169.600000 1953.000000 0 72.000000 1953.000000 0 72.000000 1950.600000 0
+eoFillPath subpath 1 72.000000 2003.300000 0 169.600000 2003.300000 0 169.600000 2005.700000 0 72.000000 2005.700000 0 72.000000 2003.300000 0
+eoFillPath subpath 1 72.000000 1931.400000 0 169.600000 1931.400000 0 169.600000 1933.800000 0 72.000000 1933.800000 0 72.000000 1931.400000 0
+saveState
+eoClipPath subpath 1 108.000000 -5934.600000 0 150.800000 -5934.600000 0 150.800000 -5890.400000 0 108.000000 -5890.400000 0 108.000000 -5934.600000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 672660.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -6784.600000 0 499.600000 -6784.600000 0 499.600000 -6779.500000 0 186.800000 -6779.500000 0 186.800000 -6784.600000 0
+eoFillPath subpath 1 494.500000 -6779.600000 0 499.600000 -6779.600000 0 499.600000 -6591.200000 0 494.500000 -6591.200000 0 494.500000 -6779.600000 0
+saveState
+eoClipPath subpath 1 181.800000 -6779.600000 0 494.500000 -6779.600000 0 494.500000 -6586.200000 0 181.800000 -6586.200000 0 181.800000 -6779.600000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -6586.100000 0 494.500000 -6586.100000 0 494.500000 -6586.100000 0 181.700000 -6586.100000 0
+eoFillPath subpath 1 181.700000 -6586.100000 0 494.500000 -6586.100000 0 494.500000 -6586.900000 0 181.700000 -6586.900000 0 181.700000 -6586.100000 0
+eoFillPath subpath 1 181.700000 -6586.900000 0 494.500000 -6586.900000 0 494.500000 -6587.600000 0 181.700000 -6587.600000 0 181.700000 -6586.900000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -6587.600000 0 494.500000 -6587.600000 0 494.500000 -6588.400000 0 181.700000 -6588.400000 0 181.700000 -6587.600000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -6588.400000 0 494.500000 -6588.400000 0 494.500000 -6589.200000 0 181.700000 -6589.200000 0 181.700000 -6588.400000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -6589.200000 0 494.500000 -6589.200000 0 494.500000 -6589.900000 0 181.700000 -6589.900000 0 181.700000 -6589.200000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -6589.900000 0 494.500000 -6589.900000 0 494.500000 -6590.700000 0 181.700000 -6590.700000 0 181.700000 -6589.900000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -6590.700000 0 494.500000 -6590.700000 0 494.500000 -6591.400000 0 181.700000 -6591.400000 0 181.700000 -6590.700000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -6591.400000 0 494.500000 -6591.400000 0 494.500000 -6592.200000 0 181.700000 -6592.200000 0 181.700000 -6591.400000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -6592.200000 0 494.500000 -6592.200000 0 494.500000 -6592.900000 0 181.700000 -6592.900000 0 181.700000 -6592.200000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -6592.900000 0 494.500000 -6592.900000 0 494.500000 -6593.700000 0 181.700000 -6593.700000 0 181.700000 -6592.900000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -6593.700000 0 494.500000 -6593.700000 0 494.500000 -6594.500000 0 181.700000 -6594.500000 0 181.700000 -6593.700000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -6594.500000 0 494.500000 -6594.500000 0 494.500000 -6595.200000 0 181.700000 -6595.200000 0 181.700000 -6594.500000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -6595.200000 0 494.500000 -6595.200000 0 494.500000 -6596.000000 0 181.700000 -6596.000000 0 181.700000 -6595.200000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -6596.000000 0 494.500000 -6596.000000 0 494.500000 -6596.700000 0 181.700000 -6596.700000 0 181.700000 -6596.000000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -6596.700000 0 494.500000 -6596.700000 0 494.500000 -6597.500000 0 181.700000 -6597.500000 0 181.700000 -6596.700000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -6597.500000 0 494.500000 -6597.500000 0 494.500000 -6598.300000 0 181.700000 -6598.300000 0 181.700000 -6597.500000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -6598.300000 0 494.500000 -6598.300000 0 494.500000 -6599.000000 0 181.700000 -6599.000000 0 181.700000 -6598.300000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -6599.000000 0 494.500000 -6599.000000 0 494.500000 -6599.800000 0 181.700000 -6599.800000 0 181.700000 -6599.000000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -6599.800000 0 494.500000 -6599.800000 0 494.500000 -6600.500000 0 181.700000 -6600.500000 0 181.700000 -6599.800000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -6600.500000 0 494.500000 -6600.500000 0 494.500000 -6601.300000 0 181.700000 -6601.300000 0 181.700000 -6600.500000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -6601.300000 0 494.500000 -6601.300000 0 494.500000 -6602.100000 0 181.700000 -6602.100000 0 181.700000 -6601.300000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -6602.100000 0 494.500000 -6602.100000 0 494.500000 -6602.800000 0 181.700000 -6602.800000 0 181.700000 -6602.100000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -6602.800000 0 494.500000 -6602.800000 0 494.500000 -6603.600000 0 181.700000 -6603.600000 0 181.700000 -6602.800000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -6603.600000 0 494.500000 -6603.600000 0 494.500000 -6604.300000 0 181.700000 -6604.300000 0 181.700000 -6603.600000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -6604.300000 0 494.500000 -6604.300000 0 494.500000 -6605.100000 0 181.700000 -6605.100000 0 181.700000 -6604.300000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -6605.100000 0 494.500000 -6605.100000 0 494.500000 -6605.800000 0 181.700000 -6605.800000 0 181.700000 -6605.100000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -6605.800000 0 494.500000 -6605.800000 0 494.500000 -6606.600000 0 181.700000 -6606.600000 0 181.700000 -6605.800000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -6606.600000 0 494.500000 -6606.600000 0 494.500000 -6607.400000 0 181.700000 -6607.400000 0 181.700000 -6606.600000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -6607.400000 0 494.500000 -6607.400000 0 494.500000 -6608.100000 0 181.700000 -6608.100000 0 181.700000 -6607.400000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -6608.100000 0 494.500000 -6608.100000 0 494.500000 -6608.900000 0 181.700000 -6608.900000 0 181.700000 -6608.100000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -6608.900000 0 494.500000 -6608.900000 0 494.500000 -6609.600000 0 181.700000 -6609.600000 0 181.700000 -6608.900000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -6609.600000 0 494.500000 -6609.600000 0 494.500000 -6610.400000 0 181.700000 -6610.400000 0 181.700000 -6609.600000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -6610.400000 0 494.500000 -6610.400000 0 494.500000 -6611.200000 0 181.700000 -6611.200000 0 181.700000 -6610.400000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -6611.200000 0 494.500000 -6611.200000 0 494.500000 -6611.900000 0 181.700000 -6611.900000 0 181.700000 -6611.200000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -6611.900000 0 494.500000 -6611.900000 0 494.500000 -6612.700000 0 181.700000 -6612.700000 0 181.700000 -6611.900000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -6612.700000 0 494.500000 -6612.700000 0 494.500000 -6613.400000 0 181.700000 -6613.400000 0 181.700000 -6612.700000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -6613.400000 0 494.500000 -6613.400000 0 494.500000 -6614.200000 0 181.700000 -6614.200000 0 181.700000 -6613.400000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -6614.200000 0 494.500000 -6614.200000 0 494.500000 -6615.000000 0 181.700000 -6615.000000 0 181.700000 -6614.200000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -6615.000000 0 494.500000 -6615.000000 0 494.500000 -6615.700000 0 181.700000 -6615.700000 0 181.700000 -6615.000000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -6615.700000 0 494.500000 -6615.700000 0 494.500000 -6616.500000 0 181.700000 -6616.500000 0 181.700000 -6615.700000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -6616.500000 0 494.500000 -6616.500000 0 494.500000 -6617.200000 0 181.700000 -6617.200000 0 181.700000 -6616.500000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -6617.200000 0 494.500000 -6617.200000 0 494.500000 -6618.000000 0 181.700000 -6618.000000 0 181.700000 -6617.200000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -6618.000000 0 494.500000 -6618.000000 0 494.500000 -6618.700000 0 181.700000 -6618.700000 0 181.700000 -6618.000000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -6618.700000 0 494.500000 -6618.700000 0 494.500000 -6619.500000 0 181.700000 -6619.500000 0 181.700000 -6618.700000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -6619.500000 0 494.500000 -6619.500000 0 494.500000 -6620.300000 0 181.700000 -6620.300000 0 181.700000 -6619.500000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -6620.300000 0 494.500000 -6620.300000 0 494.500000 -6621.000000 0 181.700000 -6621.000000 0 181.700000 -6620.300000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -6621.000000 0 494.500000 -6621.000000 0 494.500000 -6621.800000 0 181.700000 -6621.800000 0 181.700000 -6621.000000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -6621.800000 0 494.500000 -6621.800000 0 494.500000 -6622.500000 0 181.700000 -6622.500000 0 181.700000 -6621.800000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -6622.500000 0 494.500000 -6622.500000 0 494.500000 -6623.300000 0 181.700000 -6623.300000 0 181.700000 -6622.500000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -6623.300000 0 494.500000 -6623.300000 0 494.500000 -6624.100000 0 181.700000 -6624.100000 0 181.700000 -6623.300000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -6624.100000 0 494.500000 -6624.100000 0 494.500000 -6624.800000 0 181.700000 -6624.800000 0 181.700000 -6624.100000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -6624.800000 0 494.500000 -6624.800000 0 494.500000 -6625.600000 0 181.700000 -6625.600000 0 181.700000 -6624.800000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -6625.600000 0 494.500000 -6625.600000 0 494.500000 -6626.300000 0 181.700000 -6626.300000 0 181.700000 -6625.600000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -6626.300000 0 494.500000 -6626.300000 0 494.500000 -6627.100000 0 181.700000 -6627.100000 0 181.700000 -6626.300000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -6627.100000 0 494.500000 -6627.100000 0 494.500000 -6627.900000 0 181.700000 -6627.900000 0 181.700000 -6627.100000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -6627.900000 0 494.500000 -6627.900000 0 494.500000 -6628.600000 0 181.700000 -6628.600000 0 181.700000 -6627.900000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -6628.600000 0 494.500000 -6628.600000 0 494.500000 -6629.400000 0 181.700000 -6629.400000 0 181.700000 -6628.600000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -6629.400000 0 494.500000 -6629.400000 0 494.500000 -6630.100000 0 181.700000 -6630.100000 0 181.700000 -6629.400000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -6630.100000 0 494.500000 -6630.100000 0 494.500000 -6630.900000 0 181.700000 -6630.900000 0 181.700000 -6630.100000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -6630.900000 0 494.500000 -6630.900000 0 494.500000 -6631.600000 0 181.700000 -6631.600000 0 181.700000 -6630.900000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -6631.600000 0 494.500000 -6631.600000 0 494.500000 -6632.400000 0 181.700000 -6632.400000 0 181.700000 -6631.600000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -6632.400000 0 494.500000 -6632.400000 0 494.500000 -6633.200000 0 181.700000 -6633.200000 0 181.700000 -6632.400000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -6633.200000 0 494.500000 -6633.200000 0 494.500000 -6633.900000 0 181.700000 -6633.900000 0 181.700000 -6633.200000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -6633.900000 0 494.500000 -6633.900000 0 494.500000 -6634.700000 0 181.700000 -6634.700000 0 181.700000 -6633.900000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -6634.700000 0 494.500000 -6634.700000 0 494.500000 -6635.400000 0 181.700000 -6635.400000 0 181.700000 -6634.700000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -6635.400000 0 494.500000 -6635.400000 0 494.500000 -6636.200000 0 181.700000 -6636.200000 0 181.700000 -6635.400000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -6636.200000 0 494.500000 -6636.200000 0 494.500000 -6637.000000 0 181.700000 -6637.000000 0 181.700000 -6636.200000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -6637.000000 0 494.500000 -6637.000000 0 494.500000 -6637.700000 0 181.700000 -6637.700000 0 181.700000 -6637.000000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -6637.700000 0 494.500000 -6637.700000 0 494.500000 -6638.500000 0 181.700000 -6638.500000 0 181.700000 -6637.700000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -6638.500000 0 494.500000 -6638.500000 0 494.500000 -6639.200000 0 181.700000 -6639.200000 0 181.700000 -6638.500000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -6639.200000 0 494.500000 -6639.200000 0 494.500000 -6640.000000 0 181.700000 -6640.000000 0 181.700000 -6639.200000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -6640.000000 0 494.500000 -6640.000000 0 494.500000 -6640.800000 0 181.700000 -6640.800000 0 181.700000 -6640.000000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -6640.800000 0 494.500000 -6640.800000 0 494.500000 -6641.500000 0 181.700000 -6641.500000 0 181.700000 -6640.800000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -6641.500000 0 494.500000 -6641.500000 0 494.500000 -6642.300000 0 181.700000 -6642.300000 0 181.700000 -6641.500000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -6642.300000 0 494.500000 -6642.300000 0 494.500000 -6643.000000 0 181.700000 -6643.000000 0 181.700000 -6642.300000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -6643.000000 0 494.500000 -6643.000000 0 494.500000 -6643.800000 0 181.700000 -6643.800000 0 181.700000 -6643.000000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -6643.800000 0 494.500000 -6643.800000 0 494.500000 -6644.500000 0 181.700000 -6644.500000 0 181.700000 -6643.800000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -6644.500000 0 494.500000 -6644.500000 0 494.500000 -6645.300000 0 181.700000 -6645.300000 0 181.700000 -6644.500000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -6645.300000 0 494.500000 -6645.300000 0 494.500000 -6646.100000 0 181.700000 -6646.100000 0 181.700000 -6645.300000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -6646.100000 0 494.500000 -6646.100000 0 494.500000 -6646.800000 0 181.700000 -6646.800000 0 181.700000 -6646.100000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -6646.800000 0 494.500000 -6646.800000 0 494.500000 -6647.600000 0 181.700000 -6647.600000 0 181.700000 -6646.800000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -6647.600000 0 494.500000 -6647.600000 0 494.500000 -6648.300000 0 181.700000 -6648.300000 0 181.700000 -6647.600000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -6648.300000 0 494.500000 -6648.300000 0 494.500000 -6649.100000 0 181.700000 -6649.100000 0 181.700000 -6648.300000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -6649.100000 0 494.500000 -6649.100000 0 494.500000 -6649.900000 0 181.700000 -6649.900000 0 181.700000 -6649.100000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -6649.900000 0 494.500000 -6649.900000 0 494.500000 -6650.600000 0 181.700000 -6650.600000 0 181.700000 -6649.900000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -6650.600000 0 494.500000 -6650.600000 0 494.500000 -6651.400000 0 181.700000 -6651.400000 0 181.700000 -6650.600000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -6651.400000 0 494.500000 -6651.400000 0 494.500000 -6652.100000 0 181.700000 -6652.100000 0 181.700000 -6651.400000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -6652.100000 0 494.500000 -6652.100000 0 494.500000 -6652.900000 0 181.700000 -6652.900000 0 181.700000 -6652.100000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -6652.900000 0 494.500000 -6652.900000 0 494.500000 -6653.700000 0 181.700000 -6653.700000 0 181.700000 -6652.900000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -6653.700000 0 494.500000 -6653.700000 0 494.500000 -6654.400000 0 181.700000 -6654.400000 0 181.700000 -6653.700000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -6654.400000 0 494.500000 -6654.400000 0 494.500000 -6655.200000 0 181.700000 -6655.200000 0 181.700000 -6654.400000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -6655.200000 0 494.500000 -6655.200000 0 494.500000 -6655.900000 0 181.700000 -6655.900000 0 181.700000 -6655.200000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -6655.900000 0 494.500000 -6655.900000 0 494.500000 -6656.700000 0 181.700000 -6656.700000 0 181.700000 -6655.900000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -6656.700000 0 494.500000 -6656.700000 0 494.500000 -6657.400000 0 181.700000 -6657.400000 0 181.700000 -6656.700000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -6657.400000 0 494.500000 -6657.400000 0 494.500000 -6658.200000 0 181.700000 -6658.200000 0 181.700000 -6657.400000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -6658.200000 0 494.500000 -6658.200000 0 494.500000 -6659.000000 0 181.700000 -6659.000000 0 181.700000 -6658.200000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -6659.000000 0 494.500000 -6659.000000 0 494.500000 -6659.700000 0 181.700000 -6659.700000 0 181.700000 -6659.000000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -6659.700000 0 494.500000 -6659.700000 0 494.500000 -6660.500000 0 181.700000 -6660.500000 0 181.700000 -6659.700000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -6660.500000 0 494.500000 -6660.500000 0 494.500000 -6661.200000 0 181.700000 -6661.200000 0 181.700000 -6660.500000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -6661.200000 0 494.500000 -6661.200000 0 494.500000 -6662.000000 0 181.700000 -6662.000000 0 181.700000 -6661.200000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -6662.000000 0 494.500000 -6662.000000 0 494.500000 -6662.700000 0 181.700000 -6662.700000 0 181.700000 -6662.000000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -6662.700000 0 494.500000 -6662.700000 0 494.500000 -6663.500000 0 181.700000 -6663.500000 0 181.700000 -6662.700000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -6663.500000 0 494.500000 -6663.500000 0 494.500000 -6664.300000 0 181.700000 -6664.300000 0 181.700000 -6663.500000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -6664.300000 0 494.500000 -6664.300000 0 494.500000 -6665.000000 0 181.700000 -6665.000000 0 181.700000 -6664.300000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -6665.000000 0 494.500000 -6665.000000 0 494.500000 -6665.800000 0 181.700000 -6665.800000 0 181.700000 -6665.000000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -6665.800000 0 494.500000 -6665.800000 0 494.500000 -6666.500000 0 181.700000 -6666.500000 0 181.700000 -6665.800000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -6666.500000 0 494.500000 -6666.500000 0 494.500000 -6667.300000 0 181.700000 -6667.300000 0 181.700000 -6666.500000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -6667.300000 0 494.500000 -6667.300000 0 494.500000 -6668.100000 0 181.700000 -6668.100000 0 181.700000 -6667.300000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -6668.100000 0 494.500000 -6668.100000 0 494.500000 -6668.800000 0 181.700000 -6668.800000 0 181.700000 -6668.100000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -6668.800000 0 494.500000 -6668.800000 0 494.500000 -6669.600000 0 181.700000 -6669.600000 0 181.700000 -6668.800000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -6669.600000 0 494.500000 -6669.600000 0 494.500000 -6670.300000 0 181.700000 -6670.300000 0 181.700000 -6669.600000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -6670.300000 0 494.500000 -6670.300000 0 494.500000 -6671.100000 0 181.700000 -6671.100000 0 181.700000 -6670.300000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -6671.100000 0 494.500000 -6671.100000 0 494.500000 -6671.800000 0 181.700000 -6671.800000 0 181.700000 -6671.100000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -6671.800000 0 494.500000 -6671.800000 0 494.500000 -6672.600000 0 181.700000 -6672.600000 0 181.700000 -6671.800000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -6672.600000 0 494.500000 -6672.600000 0 494.500000 -6673.400000 0 181.700000 -6673.400000 0 181.700000 -6672.600000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -6673.400000 0 494.500000 -6673.400000 0 494.500000 -6674.100000 0 181.700000 -6674.100000 0 181.700000 -6673.400000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -6674.100000 0 494.500000 -6674.100000 0 494.500000 -6674.900000 0 181.700000 -6674.900000 0 181.700000 -6674.100000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -6674.900000 0 494.500000 -6674.900000 0 494.500000 -6675.600000 0 181.700000 -6675.600000 0 181.700000 -6674.900000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -6675.600000 0 494.500000 -6675.600000 0 494.500000 -6676.400000 0 181.700000 -6676.400000 0 181.700000 -6675.600000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -6676.400000 0 494.500000 -6676.400000 0 494.500000 -6677.100000 0 181.700000 -6677.100000 0 181.700000 -6676.400000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -6677.100000 0 494.500000 -6677.100000 0 494.500000 -6677.900000 0 181.700000 -6677.900000 0 181.700000 -6677.100000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -6677.900000 0 494.500000 -6677.900000 0 494.500000 -6678.700000 0 181.700000 -6678.700000 0 181.700000 -6677.900000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -6678.700000 0 494.500000 -6678.700000 0 494.500000 -6679.400000 0 181.700000 -6679.400000 0 181.700000 -6678.700000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -6679.400000 0 494.500000 -6679.400000 0 494.500000 -6680.200000 0 181.700000 -6680.200000 0 181.700000 -6679.400000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -6680.200000 0 494.500000 -6680.200000 0 494.500000 -6680.900000 0 181.700000 -6680.900000 0 181.700000 -6680.200000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -6680.900000 0 494.500000 -6680.900000 0 494.500000 -6681.700000 0 181.700000 -6681.700000 0 181.700000 -6680.900000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -6681.700000 0 494.500000 -6681.700000 0 494.500000 -6682.500000 0 181.700000 -6682.500000 0 181.700000 -6681.700000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -6682.500000 0 494.500000 -6682.500000 0 494.500000 -6683.200000 0 181.700000 -6683.200000 0 181.700000 -6682.500000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -6683.200000 0 494.500000 -6683.200000 0 494.500000 -6684.000000 0 181.700000 -6684.000000 0 181.700000 -6683.200000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -6684.000000 0 494.500000 -6684.000000 0 494.500000 -6684.700000 0 181.700000 -6684.700000 0 181.700000 -6684.000000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -6684.700000 0 494.500000 -6684.700000 0 494.500000 -6685.500000 0 181.700000 -6685.500000 0 181.700000 -6684.700000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -6685.500000 0 494.500000 -6685.500000 0 494.500000 -6686.200000 0 181.700000 -6686.200000 0 181.700000 -6685.500000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -6686.200000 0 494.500000 -6686.200000 0 494.500000 -6687.000000 0 181.700000 -6687.000000 0 181.700000 -6686.200000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -6687.000000 0 494.500000 -6687.000000 0 494.500000 -6687.800000 0 181.700000 -6687.800000 0 181.700000 -6687.000000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -6687.800000 0 494.500000 -6687.800000 0 494.500000 -6688.500000 0 181.700000 -6688.500000 0 181.700000 -6687.800000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -6688.500000 0 494.500000 -6688.500000 0 494.500000 -6689.300000 0 181.700000 -6689.300000 0 181.700000 -6688.500000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -6689.300000 0 494.500000 -6689.300000 0 494.500000 -6690.000000 0 181.700000 -6690.000000 0 181.700000 -6689.300000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -6690.000000 0 494.500000 -6690.000000 0 494.500000 -6690.800000 0 181.700000 -6690.800000 0 181.700000 -6690.000000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -6690.800000 0 494.500000 -6690.800000 0 494.500000 -6691.600000 0 181.700000 -6691.600000 0 181.700000 -6690.800000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -6691.600000 0 494.500000 -6691.600000 0 494.500000 -6692.300000 0 181.700000 -6692.300000 0 181.700000 -6691.600000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -6692.300000 0 494.500000 -6692.300000 0 494.500000 -6693.100000 0 181.700000 -6693.100000 0 181.700000 -6692.300000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -6693.100000 0 494.500000 -6693.100000 0 494.500000 -6693.800000 0 181.700000 -6693.800000 0 181.700000 -6693.100000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -6693.800000 0 494.500000 -6693.800000 0 494.500000 -6694.600000 0 181.700000 -6694.600000 0 181.700000 -6693.800000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -6694.600000 0 494.500000 -6694.600000 0 494.500000 -6695.400000 0 181.700000 -6695.400000 0 181.700000 -6694.600000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -6695.400000 0 494.500000 -6695.400000 0 494.500000 -6696.100000 0 181.700000 -6696.100000 0 181.700000 -6695.400000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -6696.100000 0 494.500000 -6696.100000 0 494.500000 -6696.900000 0 181.700000 -6696.900000 0 181.700000 -6696.100000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -6696.900000 0 494.500000 -6696.900000 0 494.500000 -6697.600000 0 181.700000 -6697.600000 0 181.700000 -6696.900000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -6697.600000 0 494.500000 -6697.600000 0 494.500000 -6698.400000 0 181.700000 -6698.400000 0 181.700000 -6697.600000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -6698.400000 0 494.500000 -6698.400000 0 494.500000 -6699.100000 0 181.700000 -6699.100000 0 181.700000 -6698.400000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -6699.100000 0 494.500000 -6699.100000 0 494.500000 -6699.900000 0 181.700000 -6699.900000 0 181.700000 -6699.100000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -6699.900000 0 494.500000 -6699.900000 0 494.500000 -6700.700000 0 181.700000 -6700.700000 0 181.700000 -6699.900000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -6700.700000 0 494.500000 -6700.700000 0 494.500000 -6701.400000 0 181.700000 -6701.400000 0 181.700000 -6700.700000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -6701.400000 0 494.500000 -6701.400000 0 494.500000 -6702.200000 0 181.700000 -6702.200000 0 181.700000 -6701.400000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -6702.200000 0 494.500000 -6702.200000 0 494.500000 -6702.900000 0 181.700000 -6702.900000 0 181.700000 -6702.200000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -6702.900000 0 494.500000 -6702.900000 0 494.500000 -6703.700000 0 181.700000 -6703.700000 0 181.700000 -6702.900000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -6703.700000 0 494.500000 -6703.700000 0 494.500000 -6704.500000 0 181.700000 -6704.500000 0 181.700000 -6703.700000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -6704.500000 0 494.500000 -6704.500000 0 494.500000 -6705.200000 0 181.700000 -6705.200000 0 181.700000 -6704.500000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -6705.200000 0 494.500000 -6705.200000 0 494.500000 -6706.000000 0 181.700000 -6706.000000 0 181.700000 -6705.200000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -6706.000000 0 494.500000 -6706.000000 0 494.500000 -6706.700000 0 181.700000 -6706.700000 0 181.700000 -6706.000000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -6706.700000 0 494.500000 -6706.700000 0 494.500000 -6707.500000 0 181.700000 -6707.500000 0 181.700000 -6706.700000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -6707.500000 0 494.500000 -6707.500000 0 494.500000 -6708.300000 0 181.700000 -6708.300000 0 181.700000 -6707.500000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -6708.300000 0 494.500000 -6708.300000 0 494.500000 -6709.000000 0 181.700000 -6709.000000 0 181.700000 -6708.300000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -6709.000000 0 494.500000 -6709.000000 0 494.500000 -6709.800000 0 181.700000 -6709.800000 0 181.700000 -6709.000000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -6709.800000 0 494.500000 -6709.800000 0 494.500000 -6710.500000 0 181.700000 -6710.500000 0 181.700000 -6709.800000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -6710.500000 0 494.500000 -6710.500000 0 494.500000 -6711.300000 0 181.700000 -6711.300000 0 181.700000 -6710.500000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -6711.300000 0 494.500000 -6711.300000 0 494.500000 -6712.000000 0 181.700000 -6712.000000 0 181.700000 -6711.300000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -6712.000000 0 494.500000 -6712.000000 0 494.500000 -6712.800000 0 181.700000 -6712.800000 0 181.700000 -6712.000000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -6712.800000 0 494.500000 -6712.800000 0 494.500000 -6713.600000 0 181.700000 -6713.600000 0 181.700000 -6712.800000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -6713.600000 0 494.500000 -6713.600000 0 494.500000 -6714.300000 0 181.700000 -6714.300000 0 181.700000 -6713.600000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -6714.300000 0 494.500000 -6714.300000 0 494.500000 -6715.100000 0 181.700000 -6715.100000 0 181.700000 -6714.300000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -6715.100000 0 494.500000 -6715.100000 0 494.500000 -6715.800000 0 181.700000 -6715.800000 0 181.700000 -6715.100000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -6715.800000 0 494.500000 -6715.800000 0 494.500000 -6716.600000 0 181.700000 -6716.600000 0 181.700000 -6715.800000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -6716.600000 0 494.500000 -6716.600000 0 494.500000 -6717.400000 0 181.700000 -6717.400000 0 181.700000 -6716.600000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -6717.400000 0 494.500000 -6717.400000 0 494.500000 -6718.100000 0 181.700000 -6718.100000 0 181.700000 -6717.400000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -6718.100000 0 494.500000 -6718.100000 0 494.500000 -6718.900000 0 181.700000 -6718.900000 0 181.700000 -6718.100000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -6718.900000 0 494.500000 -6718.900000 0 494.500000 -6719.600000 0 181.700000 -6719.600000 0 181.700000 -6718.900000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -6719.600000 0 494.500000 -6719.600000 0 494.500000 -6720.400000 0 181.700000 -6720.400000 0 181.700000 -6719.600000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -6720.400000 0 494.500000 -6720.400000 0 494.500000 -6721.200000 0 181.700000 -6721.200000 0 181.700000 -6720.400000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -6721.200000 0 494.500000 -6721.200000 0 494.500000 -6721.900000 0 181.700000 -6721.900000 0 181.700000 -6721.200000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -6721.900000 0 494.500000 -6721.900000 0 494.500000 -6722.700000 0 181.700000 -6722.700000 0 181.700000 -6721.900000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -6722.700000 0 494.500000 -6722.700000 0 494.500000 -6723.400000 0 181.700000 -6723.400000 0 181.700000 -6722.700000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -6723.400000 0 494.500000 -6723.400000 0 494.500000 -6724.200000 0 181.700000 -6724.200000 0 181.700000 -6723.400000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -6724.200000 0 494.500000 -6724.200000 0 494.500000 -6724.900000 0 181.700000 -6724.900000 0 181.700000 -6724.200000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -6724.900000 0 494.500000 -6724.900000 0 494.500000 -6725.700000 0 181.700000 -6725.700000 0 181.700000 -6724.900000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -6725.700000 0 494.500000 -6725.700000 0 494.500000 -6726.500000 0 181.700000 -6726.500000 0 181.700000 -6725.700000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -6726.500000 0 494.500000 -6726.500000 0 494.500000 -6727.200000 0 181.700000 -6727.200000 0 181.700000 -6726.500000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -6727.200000 0 494.500000 -6727.200000 0 494.500000 -6728.000000 0 181.700000 -6728.000000 0 181.700000 -6727.200000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -6728.000000 0 494.500000 -6728.000000 0 494.500000 -6728.700000 0 181.700000 -6728.700000 0 181.700000 -6728.000000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -6728.700000 0 494.500000 -6728.700000 0 494.500000 -6729.500000 0 181.700000 -6729.500000 0 181.700000 -6728.700000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -6729.500000 0 494.500000 -6729.500000 0 494.500000 -6730.300000 0 181.700000 -6730.300000 0 181.700000 -6729.500000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -6730.300000 0 494.500000 -6730.300000 0 494.500000 -6731.000000 0 181.700000 -6731.000000 0 181.700000 -6730.300000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -6731.000000 0 494.500000 -6731.000000 0 494.500000 -6731.800000 0 181.700000 -6731.800000 0 181.700000 -6731.000000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -6731.800000 0 494.500000 -6731.800000 0 494.500000 -6732.500000 0 181.700000 -6732.500000 0 181.700000 -6731.800000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -6732.500000 0 494.500000 -6732.500000 0 494.500000 -6733.300000 0 181.700000 -6733.300000 0 181.700000 -6732.500000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -6733.300000 0 494.500000 -6733.300000 0 494.500000 -6734.100000 0 181.700000 -6734.100000 0 181.700000 -6733.300000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -6734.100000 0 494.500000 -6734.100000 0 494.500000 -6734.800000 0 181.700000 -6734.800000 0 181.700000 -6734.100000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -6734.800000 0 494.500000 -6734.800000 0 494.500000 -6735.600000 0 181.700000 -6735.600000 0 181.700000 -6734.800000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -6735.600000 0 494.500000 -6735.600000 0 494.500000 -6736.300000 0 181.700000 -6736.300000 0 181.700000 -6735.600000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -6736.300000 0 494.500000 -6736.300000 0 494.500000 -6737.100000 0 181.700000 -6737.100000 0 181.700000 -6736.300000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -6737.100000 0 494.500000 -6737.100000 0 494.500000 -6737.800000 0 181.700000 -6737.800000 0 181.700000 -6737.100000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -6737.800000 0 494.500000 -6737.800000 0 494.500000 -6738.600000 0 181.700000 -6738.600000 0 181.700000 -6737.800000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -6738.600000 0 494.500000 -6738.600000 0 494.500000 -6739.400000 0 181.700000 -6739.400000 0 181.700000 -6738.600000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -6739.400000 0 494.500000 -6739.400000 0 494.500000 -6740.100000 0 181.700000 -6740.100000 0 181.700000 -6739.400000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -6740.100000 0 494.500000 -6740.100000 0 494.500000 -6740.900000 0 181.700000 -6740.900000 0 181.700000 -6740.100000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -6740.900000 0 494.500000 -6740.900000 0 494.500000 -6741.600000 0 181.700000 -6741.600000 0 181.700000 -6740.900000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -6741.600000 0 494.500000 -6741.600000 0 494.500000 -6742.400000 0 181.700000 -6742.400000 0 181.700000 -6741.600000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -6742.400000 0 494.500000 -6742.400000 0 494.500000 -6743.200000 0 181.700000 -6743.200000 0 181.700000 -6742.400000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -6743.200000 0 494.500000 -6743.200000 0 494.500000 -6743.900000 0 181.700000 -6743.900000 0 181.700000 -6743.200000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -6743.900000 0 494.500000 -6743.900000 0 494.500000 -6744.700000 0 181.700000 -6744.700000 0 181.700000 -6743.900000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -6744.700000 0 494.500000 -6744.700000 0 494.500000 -6745.400000 0 181.700000 -6745.400000 0 181.700000 -6744.700000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -6745.400000 0 494.500000 -6745.400000 0 494.500000 -6746.200000 0 181.700000 -6746.200000 0 181.700000 -6745.400000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -6746.200000 0 494.500000 -6746.200000 0 494.500000 -6747.000000 0 181.700000 -6747.000000 0 181.700000 -6746.200000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -6747.000000 0 494.500000 -6747.000000 0 494.500000 -6747.700000 0 181.700000 -6747.700000 0 181.700000 -6747.000000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -6747.700000 0 494.500000 -6747.700000 0 494.500000 -6748.500000 0 181.700000 -6748.500000 0 181.700000 -6747.700000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -6748.500000 0 494.500000 -6748.500000 0 494.500000 -6749.200000 0 181.700000 -6749.200000 0 181.700000 -6748.500000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -6749.200000 0 494.500000 -6749.200000 0 494.500000 -6750.000000 0 181.700000 -6750.000000 0 181.700000 -6749.200000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -6750.000000 0 494.500000 -6750.000000 0 494.500000 -6750.700000 0 181.700000 -6750.700000 0 181.700000 -6750.000000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -6750.700000 0 494.500000 -6750.700000 0 494.500000 -6751.500000 0 181.700000 -6751.500000 0 181.700000 -6750.700000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -6751.500000 0 494.500000 -6751.500000 0 494.500000 -6752.300000 0 181.700000 -6752.300000 0 181.700000 -6751.500000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -6752.300000 0 494.500000 -6752.300000 0 494.500000 -6753.000000 0 181.700000 -6753.000000 0 181.700000 -6752.300000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -6753.000000 0 494.500000 -6753.000000 0 494.500000 -6753.800000 0 181.700000 -6753.800000 0 181.700000 -6753.000000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -6753.800000 0 494.500000 -6753.800000 0 494.500000 -6754.500000 0 181.700000 -6754.500000 0 181.700000 -6753.800000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -6754.500000 0 494.500000 -6754.500000 0 494.500000 -6755.300000 0 181.700000 -6755.300000 0 181.700000 -6754.500000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -6755.300000 0 494.500000 -6755.300000 0 494.500000 -6756.100000 0 181.700000 -6756.100000 0 181.700000 -6755.300000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -6756.100000 0 494.500000 -6756.100000 0 494.500000 -6756.800000 0 181.700000 -6756.800000 0 181.700000 -6756.100000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -6756.800000 0 494.500000 -6756.800000 0 494.500000 -6757.600000 0 181.700000 -6757.600000 0 181.700000 -6756.800000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -6757.600000 0 494.500000 -6757.600000 0 494.500000 -6758.300000 0 181.700000 -6758.300000 0 181.700000 -6757.600000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -6758.300000 0 494.500000 -6758.300000 0 494.500000 -6759.100000 0 181.700000 -6759.100000 0 181.700000 -6758.300000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -6759.100000 0 494.500000 -6759.100000 0 494.500000 -6759.900000 0 181.700000 -6759.900000 0 181.700000 -6759.100000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -6759.900000 0 494.500000 -6759.900000 0 494.500000 -6760.600000 0 181.700000 -6760.600000 0 181.700000 -6759.900000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -6760.600000 0 494.500000 -6760.600000 0 494.500000 -6761.400000 0 181.700000 -6761.400000 0 181.700000 -6760.600000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -6761.400000 0 494.500000 -6761.400000 0 494.500000 -6762.100000 0 181.700000 -6762.100000 0 181.700000 -6761.400000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -6762.100000 0 494.500000 -6762.100000 0 494.500000 -6762.900000 0 181.700000 -6762.900000 0 181.700000 -6762.100000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -6762.900000 0 494.500000 -6762.900000 0 494.500000 -6763.600000 0 181.700000 -6763.600000 0 181.700000 -6762.900000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -6763.600000 0 494.500000 -6763.600000 0 494.500000 -6764.400000 0 181.700000 -6764.400000 0 181.700000 -6763.600000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -6764.400000 0 494.500000 -6764.400000 0 494.500000 -6765.200000 0 181.700000 -6765.200000 0 181.700000 -6764.400000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -6765.200000 0 494.500000 -6765.200000 0 494.500000 -6765.900000 0 181.700000 -6765.900000 0 181.700000 -6765.200000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -6765.900000 0 494.500000 -6765.900000 0 494.500000 -6766.700000 0 181.700000 -6766.700000 0 181.700000 -6765.900000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -6766.700000 0 494.500000 -6766.700000 0 494.500000 -6767.400000 0 181.700000 -6767.400000 0 181.700000 -6766.700000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -6767.400000 0 494.500000 -6767.400000 0 494.500000 -6768.200000 0 181.700000 -6768.200000 0 181.700000 -6767.400000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -6768.200000 0 494.500000 -6768.200000 0 494.500000 -6769.000000 0 181.700000 -6769.000000 0 181.700000 -6768.200000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -6769.000000 0 494.500000 -6769.000000 0 494.500000 -6769.700000 0 181.700000 -6769.700000 0 181.700000 -6769.000000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -6769.700000 0 494.500000 -6769.700000 0 494.500000 -6770.500000 0 181.700000 -6770.500000 0 181.700000 -6769.700000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -6770.500000 0 494.500000 -6770.500000 0 494.500000 -6771.200000 0 181.700000 -6771.200000 0 181.700000 -6770.500000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -6771.200000 0 494.500000 -6771.200000 0 494.500000 -6772.000000 0 181.700000 -6772.000000 0 181.700000 -6771.200000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -6772.000000 0 494.500000 -6772.000000 0 494.500000 -6772.800000 0 181.700000 -6772.800000 0 181.700000 -6772.000000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -6772.800000 0 494.500000 -6772.800000 0 494.500000 -6773.500000 0 181.700000 -6773.500000 0 181.700000 -6772.800000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -6773.500000 0 494.500000 -6773.500000 0 494.500000 -6774.300000 0 181.700000 -6774.300000 0 181.700000 -6773.500000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -6774.300000 0 494.500000 -6774.300000 0 494.500000 -6775.000000 0 181.700000 -6775.000000 0 181.700000 -6774.300000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -6775.000000 0 494.500000 -6775.000000 0 494.500000 -6775.800000 0 181.700000 -6775.800000 0 181.700000 -6775.000000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -6775.800000 0 494.500000 -6775.800000 0 494.500000 -6776.500000 0 181.700000 -6776.500000 0 181.700000 -6775.800000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -6776.500000 0 494.500000 -6776.500000 0 494.500000 -6777.300000 0 181.700000 -6777.300000 0 181.700000 -6776.500000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -6777.300000 0 494.500000 -6777.300000 0 494.500000 -6778.100000 0 181.700000 -6778.100000 0 181.700000 -6777.300000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -6778.100000 0 494.500000 -6778.100000 0 494.500000 -6778.800000 0 181.700000 -6778.800000 0 181.700000 -6778.100000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -6778.800000 0 494.500000 -6778.800000 0 494.500000 -6779.600000 0 181.700000 -6779.600000 0 181.700000 -6778.800000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -6779.500000 0 181.800000 -6779.500000 0 181.800000 -6586.200000 0 494.400000 -6586.200000 0 494.400000 -6779.500000 0 338.100000 -6779.500000 0
+strokePath subpath 1 338.100000 -6779.500000 0 181.800000 -6779.500000 0 181.800000 -6586.200000 0 494.400000 -6586.200000 0 494.400000 -6779.500000 0 338.100000 -6779.500000 0
+saveState
+updateCtm 11420.000000 0.000000 0.000000 -8760.000000 20530.000000 749550.000000
+drawSoftMaskedImage 1143 877 1143 877 JPEG 71324 PPM 3007249
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -6740.476000 215.488000 -6748.476000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -6740.476000 220.592000 -6748.476000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -6740.476000 225.696000 -6748.476000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -6740.476000 230.800000 -6748.476000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -6748.076000 241.388000 -6756.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -6748.076000 246.492000 -6756.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -6748.076000 251.596000 -6756.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -6748.076000 256.700000 -6756.076000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -6755.776000 267.188000 -6763.776000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -6755.776000 272.292000 -6763.776000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -6755.776000 277.396000 -6763.776000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -6755.776000 282.500000 -6763.776000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -6763.276000 293.088000 -6771.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -6763.276000 298.192000 -6771.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -6763.276000 303.296000 -6771.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -6763.276000 308.400000 -6771.276000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -6725.476000 202.588000 -6733.476000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -6706.176000 201.688000 -6714.176000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -6686.876000 195.788000 -6694.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -6686.876000 200.892000 -6694.876000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -6667.476000 194.888000 -6675.476000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -6667.476000 199.992000 -6675.476000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -6648.176000 193.988000 -6656.176000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -6648.176000 199.092000 -6656.176000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -6628.876000 193.088000 -6636.876000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -6628.876000 198.192000 -6636.876000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -6756.776000 330.188000 -6764.776000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -6756.776000 332.716000 -6764.776000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -6756.776000 337.596000 -6764.776000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -6756.776000 341.396000 -6764.776000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -6756.776000 346.036000 -6764.776000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -6756.776000 350.900000 -6764.776000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -6756.776000 355.972000 -6764.776000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -6756.776000 359.196000 -6764.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -6756.776000 362.196000 -6764.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -6756.776000 367.404000 -6764.776000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -6756.776000 371.876000 -6764.776000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -6756.776000 375.052000 -6764.776000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -6737.276000 361.172000 -6745.276000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -6737.276000 364.340000 -6745.276000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -6737.276000 367.396000 -6745.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -6737.276000 372.604000 -6745.276000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -6737.276000 379.348000 -6745.276000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -6737.276000 384.484000 -6745.276000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -6737.276000 389.436000 -6745.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -6737.276000 392.108000 -6745.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -6737.276000 395.708000 -6745.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -6737.276000 397.540000 -6745.276000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -6737.276000 402.444000 -6745.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -6737.276000 406.788000 -6745.276000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -6717.676000 392.972000 -6725.676000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -6717.676000 398.076000 -6725.676000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -6717.676000 403.180000 -6725.676000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -6717.676000 405.428000 -6725.676000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -6717.676000 410.332000 -6725.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -6717.676000 414.476000 -6725.676000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -6590.108000 305.808000 -6604.108000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -6590.108000 314.138000 -6604.108000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -6590.108000 320.788000 -6604.108000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -6590.108000 328.698000 -6604.108000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -6590.108000 336.972000 -6604.108000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -6590.108000 344.182000 -6604.108000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -6590.108000 349.810000 -6604.108000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -6590.108000 354.234000 -6604.108000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -6590.108000 362.718000 -6604.108000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -6590.108000 367.870000 -6604.108000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -6590.108000 372.322000 -6604.108000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -6590.108000 382.080000 -6604.108000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -6590.108000 388.772000 -6604.108000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -6590.108000 397.802000 -6604.108000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -6590.108000 402.254000 -6604.108000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -6590.108000 407.896000 -6604.108000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -6713.000000 0 424.300000 -6713.000000 0 424.300000 -6652.300000 0 493.600000 -6652.300000 0 493.600000 -6713.000000 0 458.900000 -6713.000000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -6661.900000 0 428.900000 -6661.900000 0 428.900000 -6655.900000 0 434.800000 -6655.900000 0 434.800000 -6661.900000 0 431.900000 -6661.900000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -6673.000000 0 428.900000 -6673.000000 0 428.900000 -6667.000000 0 434.800000 -6667.000000 0 434.800000 -6673.000000 0 431.900000 -6673.000000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -6684.100000 0 428.900000 -6684.100000 0 428.900000 -6678.100000 0 434.800000 -6678.100000 0 434.800000 -6684.100000 0 431.900000 -6684.100000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -6695.200000 0 428.900000 -6695.200000 0 428.900000 -6689.200000 0 434.800000 -6689.200000 0 434.800000 -6695.200000 0 431.900000 -6695.200000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -6706.300000 0 428.900000 -6706.300000 0 428.900000 -6700.300000 0 434.800000 -6700.300000 0 434.800000 -6706.300000 0 431.900000 -6706.300000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -6654.776000 443.288000 -6662.776000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -6654.776000 445.816000 -6662.776000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -6654.776000 450.600000 -6662.776000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -6654.776000 454.496000 -6662.776000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -6654.776000 459.136000 -6662.776000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -6654.776000 464.000000 -6662.776000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -6654.776000 468.976000 -6662.776000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -6654.776000 472.304000 -6662.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -6654.776000 475.208000 -6662.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -6654.776000 480.520000 -6662.776000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -6654.776000 484.992000 -6662.776000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -6654.776000 488.168000 -6662.776000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -6665.876000 443.352000 -6673.876000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -6665.876000 447.920000 -6673.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -6665.876000 452.976000 -6673.876000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -6665.876000 457.400000 -6673.876000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -6665.876000 462.472000 -6673.876000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -6665.876000 465.800000 -6673.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -6665.876000 468.904000 -6673.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -6665.876000 473.816000 -6673.876000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -6665.876000 478.888000 -6673.876000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -6665.876000 482.064000 -6673.876000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -6676.976000 442.872000 -6684.976000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -6676.976000 446.040000 -6684.976000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -6676.976000 448.992000 -6684.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -6676.976000 454.304000 -6684.976000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -6676.976000 461.048000 -6684.976000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -6676.976000 466.184000 -6684.976000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -6676.976000 471.136000 -6684.976000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -6676.976000 473.808000 -6684.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -6676.976000 477.408000 -6684.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -6676.976000 479.240000 -6684.976000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -6676.976000 484.144000 -6684.976000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -6676.976000 488.488000 -6684.976000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -6688.076000 443.384000 -6696.076000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -6688.076000 448.464000 -6696.076000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -6688.076000 453.424000 -6696.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -6688.076000 456.696000 -6696.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -6688.076000 459.800000 -6696.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -6688.076000 462.032000 -6696.076000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -6688.076000 466.936000 -6696.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -6688.076000 471.080000 -6696.076000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -6699.176000 443.272000 -6707.176000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -6699.176000 448.376000 -6707.176000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -6699.176000 453.480000 -6707.176000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -6699.176000 455.728000 -6707.176000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -6699.176000 460.632000 -6707.176000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -6699.176000 464.776000 -6707.176000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -9344.200000 0 114.800000 -9344.200000 0 114.800000 -9301.400000 0 72.000000 -9301.400000 0 72.000000 -9344.200000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 1013610.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 108.000000 546.200000 0 540.000000 546.200000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 546.200000 0
+eoFillPath subpath 1 108.000000 72.000000 0 540.000000 72.000000 0 540.000000 245.800000 0 108.000000 245.800000 0 108.000000 72.000000 0
+eoFillPath subpath 1 108.000000 245.800000 0 157.400000 245.800000 0 157.400000 546.200000 0 108.000000 546.200000 0 108.000000 245.800000 0
+eoFillPath subpath 1 490.500000 245.800000 0 540.000000 245.800000 0 540.000000 546.200000 0 490.500000 546.200000 0 490.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 15740.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 108.000000 701.300000 0 540.000000 701.300000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 701.300000 0
+eoFillPath subpath 1 108.000000 76.200000 0 540.000000 76.200000 0 540.000000 90.100000 0 108.000000 90.100000 0 108.000000 76.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 108.100000 719.948000 121.892000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 121.908000 719.948000 131.364000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 131.412000 719.948000 136.484000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 136.516000 719.948000 148.532000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 148.516000 719.948000 158.292000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 158.324000 719.948000 168.452000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 168.420000 719.948000 176.740000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 176.724000 719.948000 186.564000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 186.532000 719.948000 191.604000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 191.636000 719.948000 197.396000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 197.444000 719.948000 202.516000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 202.500000 719.948000 211.700000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 210.500000 719.948000 214.932000 703.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 214.900000 719.948000 221.476000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 221.508000 719.948000 229.828000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 229.812000 719.948000 236.084000 703.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 236.116000 719.948000 241.188000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.220000 719.948000 250.420000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 250.420000 719.948000 254.852000 703.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 254.820000 719.948000 264.596000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 264.628000 719.948000 274.404000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 274.436000 719.948000 281.012000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 672.936000 116.884000 660.936000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 116.596000 672.936000 124.684000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 124.696000 672.936000 133.228000 660.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 133.192000 672.936000 138.928000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.892000 672.936000 144.808000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.796000 672.936000 152.608000 660.936000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 655.936000 225.304000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 226.096000 655.936000 234.088000 643.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 234.100000 655.936000 241.828000 643.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 241.804000 655.936000 248.896000 643.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 249.304000 655.936000 253.108000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 253.600000 655.936000 261.280000 643.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 261.196000 655.936000 268.348000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 268.396000 655.936000 276.124000 643.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 276.100000 655.936000 280.912000 643.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 280.900000 655.936000 286.636000 643.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 286.600000 655.936000 293.368000 643.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 293.896000 655.936000 297.700000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 298.096000 655.936000 301.924000 643.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 301.900000 655.936000 308.056000 643.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 308.500000 655.936000 312.304000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 312.700000 655.936000 319.852000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 320.200000 655.936000 324.004000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 324.496000 655.936000 330.652000 643.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 330.700000 655.936000 342.076000 643.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 342.004000 655.936000 349.156000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 349.204000 655.936000 353.032000 643.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 353.008000 655.936000 356.836000 643.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 357.208000 655.936000 361.012000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.408000 655.936000 368.128000 643.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 368.212000 655.936000 375.436000 643.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 375.412000 655.936000 386.788000 643.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 386.812000 655.936000 394.492000 643.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 394.408000 655.936000 401.560000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 401.608000 655.936000 407.344000 643.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 407.308000 655.936000 412.120000 643.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 412.204000 655.936000 423.580000 643.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 423.508000 655.936000 430.600000 643.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 430.612000 655.936000 438.340000 643.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 438.316000 655.936000 443.128000 643.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 443.620000 655.936000 447.424000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 447.820000 655.936000 455.548000 643.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 455.524000 655.936000 462.616000 643.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 462.628000 655.936000 469.384000 643.936000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 469.432000 655.936000 474.244000 643.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 474.628000 655.936000 478.432000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.828000 655.936000 483.640000 643.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 483.724000 655.936000 490.948000 643.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 491.320000 655.936000 495.124000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 495.520000 655.936000 500.332000 643.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 500.320000 655.936000 508.048000 643.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 508.120000 655.936000 515.212000 643.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 515.620000 655.936000 519.424000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 519.820000 655.936000 527.080000 643.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 527.116000 655.936000 530.944000 643.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 530.920000 655.936000 535.732000 643.936000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.100000 655.936000 540.144000 643.936000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 642.036000 228.220000 630.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 228.196000 642.036000 235.924000 630.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 235.900000 642.036000 242.992000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 243.100000 642.036000 250.828000 630.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 250.804000 642.036000 254.608000 630.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 256.504000 642.036000 260.308000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.300000 642.036000 272.560000 630.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 272.596000 642.036000 280.324000 630.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 280.300000 642.036000 287.392000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 287.404000 642.036000 293.140000 630.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 293.104000 642.036000 300.196000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 302.200000 642.036000 306.004000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.104000 642.036000 315.256000 630.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 315.304000 642.036000 319.132000 630.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 319.108000 642.036000 322.936000 630.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 324.808000 642.036000 328.612000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.604000 642.036000 338.332000 630.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 338.308000 642.036000 345.532000 630.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 345.604000 642.036000 353.332000 630.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 353.308000 642.036000 357.352000 630.036000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 357.304000 642.036000 364.984000 630.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 365.008000 642.036000 372.100000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 372.112000 642.036000 377.848000 630.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 377.908000 642.036000 381.736000 630.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 381.712000 642.036000 387.868000 630.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 387.916000 642.036000 395.644000 630.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 395.620000 642.036000 402.772000 630.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 402.724000 642.036000 410.404000 630.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 410.428000 642.036000 414.256000 630.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 414.328000 642.036000 421.420000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 423.424000 642.036000 427.228000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.220000 642.036000 433.660000 630.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 433.624000 642.036000 440.848000 630.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 440.920000 642.036000 448.144000 630.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 448.120000 642.036000 455.800000 630.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 455.824000 642.036000 461.980000 630.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 463.828000 642.036000 467.632000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 469.624000 642.036000 476.776000 630.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 476.824000 642.036000 482.560000 630.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 482.524000 642.036000 489.616000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 491.620000 642.036000 495.424000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 497.416000 642.036000 503.572000 630.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 503.620000 642.036000 508.432000 630.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 508.420000 642.036000 515.644000 630.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 515.620000 642.036000 521.356000 630.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 521.320000 642.036000 528.412000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 528.424000 642.036000 536.104000 630.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 536.224000 642.036000 540.028000 630.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 642.036000 544.004000 630.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 628.136000 229.492000 616.136000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 628.136000 237.232000 616.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 628.136000 241.036000 616.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 241.108000 628.136000 247.264000 616.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 247.504000 628.136000 251.308000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 251.704000 628.136000 255.532000 616.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 255.508000 628.136000 263.236000 616.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 263.308000 628.136000 270.028000 616.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 270.004000 628.136000 273.832000 616.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 273.808000 628.136000 281.536000 616.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 281.608000 628.136000 289.288000 616.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 289.204000 628.136000 296.296000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 296.308000 628.136000 302.464000 616.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 302.908000 628.136000 306.712000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 307.204000 628.136000 314.296000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 314.308000 628.136000 321.076000 616.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 321.004000 628.136000 328.096000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 328.108000 628.136000 333.844000 616.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 333.808000 628.136000 340.576000 616.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 340.708000 628.136000 345.520000 616.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 345.508000 628.136000 353.236000 616.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 353.308000 628.136000 357.136000 616.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 357.004000 628.136000 364.732000 616.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 364.708000 628.136000 372.388000 616.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 372.712000 628.136000 376.516000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.008000 628.136000 381.448000 616.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 381.412000 628.136000 387.148000 616.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 387.112000 628.136000 394.336000 616.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 394.408000 628.136000 405.784000 616.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 406.504000 628.136000 410.308000 616.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 410.500000 628.136000 417.220000 616.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 417.196000 628.136000 424.348000 616.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 424.396000 628.136000 432.124000 616.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 432.100000 628.136000 439.828000 616.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 439.804000 628.136000 446.896000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 446.908000 628.136000 454.588000 616.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 454.912000 628.136000 458.716000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.112000 628.136000 466.792000 616.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 466.816000 628.136000 474.040000 616.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 474.016000 628.136000 481.240000 616.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 481.216000 628.136000 488.896000 616.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 488.920000 628.136000 495.076000 616.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 495.520000 628.136000 499.324000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 499.720000 628.136000 504.532000 616.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 504.520000 628.136000 511.744000 616.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 512.524000 628.136000 516.328000 616.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 516.400000 628.136000 523.120000 616.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 523.096000 628.136000 530.188000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 530.200000 628.136000 535.936000 616.136000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 628.136000 540.044000 616.136000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 614.236000 228.592000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 228.604000 614.236000 235.756000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 235.804000 614.236000 239.632000 602.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 239.608000 614.236000 245.764000 602.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 246.112000 614.236000 249.916000 602.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 251.008000 614.236000 254.812000 602.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 254.900000 614.236000 262.580000 602.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 262.604000 614.236000 269.756000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 269.708000 614.236000 275.864000 602.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 275.912000 614.236000 280.724000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 280.712000 614.236000 287.864000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 288.212000 614.236000 292.016000 602.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 293.216000 614.236000 297.020000 602.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 296.900000 614.236000 304.580000 602.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 304.604000 614.236000 311.828000 602.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 311.804000 614.236000 316.616000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 316.604000 614.236000 323.756000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 323.804000 614.236000 328.616000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 328.604000 614.236000 335.828000 602.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 335.804000 614.236000 342.896000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 342.908000 614.236000 349.064000 602.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 349.112000 614.236000 352.916000 602.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 353.612000 614.236000 357.416000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 358.112000 614.236000 365.204000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.216000 614.236000 370.028000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 370.016000 614.236000 376.736000 602.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 376.712000 614.236000 380.516000 602.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.308000 614.236000 385.112000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.904000 614.236000 390.644000 602.236000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 391.304000 614.236000 395.108000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 395.804000 614.236000 399.632000 602.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 399.608000 614.236000 403.436000 602.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 403.508000 614.236000 410.768000 602.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 410.708000 614.236000 417.800000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 418.604000 614.236000 422.408000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.200000 614.236000 428.012000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 428.000000 614.236000 435.224000 602.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 436.004000 614.236000 439.808000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.504000 614.236000 447.764000 602.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 447.800000 614.236000 454.892000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 454.904000 614.236000 461.996000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 462.008000 614.236000 469.688000 602.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 470.312000 614.236000 474.116000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.908000 614.236000 482.060000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 482.804000 614.236000 486.608000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 487.304000 614.236000 493.460000 602.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 493.508000 614.236000 498.320000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 498.308000 614.236000 505.532000 602.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 505.508000 614.236000 512.228000 602.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 512.204000 614.236000 519.464000 602.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 520.208000 614.236000 524.012000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 524.804000 614.236000 532.028000 602.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 532.004000 614.236000 539.732000 602.236000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 614.236000 543.904000 602.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 600.336000 229.228000 588.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 229.204000 600.336000 236.356000 588.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 236.404000 600.336000 244.132000 588.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 244.108000 600.336000 251.788000 588.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 252.412000 600.336000 256.216000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.816000 600.336000 262.972000 588.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 263.020000 600.336000 270.244000 588.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 270.820000 600.336000 274.624000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 275.320000 600.336000 280.060000 588.336000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 280.624000 600.336000 284.428000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.124000 600.336000 292.804000 588.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 292.720000 600.336000 299.944000 588.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 300.016000 600.336000 307.744000 588.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 307.720000 600.336000 311.008000 588.336000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 311.020000 600.336000 315.832000 588.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 316.420000 600.336000 320.224000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 320.920000 600.336000 328.648000 588.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 328.624000 600.336000 335.776000 588.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 335.824000 600.336000 342.592000 588.336000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 342.628000 600.336000 349.720000 588.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 350.332000 600.336000 354.136000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.736000 600.336000 359.548000 588.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 359.536000 600.336000 366.760000 588.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 367.432000 600.336000 371.236000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 371.932000 600.336000 377.668000 588.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 377.632000 600.336000 385.360000 588.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 385.432000 600.336000 393.160000 588.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 393.736000 600.336000 397.540000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.140000 600.336000 402.952000 588.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 402.940000 600.336000 410.164000 588.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 410.740000 600.336000 414.544000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 415.240000 600.336000 420.052000 588.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 420.136000 600.336000 427.864000 588.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 427.840000 600.336000 434.932000 588.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 435.544000 600.336000 439.348000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.948000 600.336000 446.104000 588.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 446.152000 600.336000 450.964000 588.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 450.952000 600.336000 458.176000 588.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 458.152000 600.336000 463.888000 588.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 463.852000 600.336000 470.944000 588.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 471.556000 600.336000 475.360000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 476.152000 600.336000 483.304000 588.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 483.352000 600.336000 488.164000 588.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 488.656000 600.336000 492.460000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 493.156000 600.336000 497.968000 588.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 497.956000 600.336000 505.684000 588.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 505.756000 600.336000 512.848000 588.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 513.352000 600.336000 517.156000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 517.852000 600.336000 521.680000 588.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 521.656000 600.336000 528.808000 588.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 528.856000 600.336000 535.012000 588.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 535.060000 600.336000 539.872000 588.336000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 600.336000 543.904000 588.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 586.436000 232.876000 574.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 232.900000 586.436000 236.728000 574.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 236.704000 586.436000 244.432000 574.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 244.408000 586.436000 252.136000 574.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 252.208000 586.436000 257.020000 574.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 257.008000 586.436000 264.100000 574.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 266.512000 586.436000 270.316000 574.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 272.716000 586.436000 277.156000 574.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 277.120000 586.436000 284.344000 574.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 284.416000 586.436000 290.152000 574.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 292.516000 586.436000 296.320000 574.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 298.720000 586.436000 304.876000 574.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 304.924000 586.436000 312.148000 574.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 312.124000 586.436000 323.500000 574.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 323.524000 586.436000 330.616000 574.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 330.628000 586.436000 335.440000 574.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 335.428000 586.436000 343.156000 574.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 343.132000 586.436000 346.960000 574.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 347.032000 586.436000 354.760000 574.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 354.736000 586.436000 362.416000 574.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 362.440000 586.436000 366.244000 574.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.644000 586.436000 372.448000 574.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.848000 586.436000 382.840000 574.436000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 382.852000 586.436000 390.580000 574.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 390.556000 586.436000 397.648000 574.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 397.660000 586.436000 403.396000 574.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 403.456000 586.436000 410.548000 574.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 412.960000 586.436000 416.764000 574.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.164000 586.436000 426.316000 574.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 426.364000 586.436000 432.100000 574.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 432.064000 586.436000 439.156000 574.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 441.568000 586.436000 445.372000 574.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 447.772000 586.436000 454.492000 574.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.468000 586.436000 461.692000 574.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 461.668000 586.436000 469.396000 574.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 469.468000 586.436000 475.624000 574.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 475.564000 586.436000 482.656000 574.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 482.668000 586.436000 488.404000 574.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 488.464000 586.436000 495.232000 574.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 495.160000 586.436000 502.252000 574.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 502.360000 586.436000 508.516000 574.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 510.856000 586.436000 514.660000 574.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 517.060000 586.436000 521.872000 574.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 521.956000 586.436000 529.180000 574.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 529.156000 586.436000 536.380000 574.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 536.356000 586.436000 540.160000 574.436000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 586.436000 543.904000 574.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 572.536000 227.656000 560.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 572.536000 235.432000 560.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 235.408000 572.536000 242.128000 560.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 242.104000 572.536000 249.832000 560.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 250.408000 572.536000 254.212000 560.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 255.004000 572.536000 262.156000 560.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 262.204000 572.536000 268.360000 560.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 269.704000 572.536000 273.508000 560.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 273.500000 572.536000 277.220000 560.536000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 277.196000 572.536000 284.348000 560.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 284.396000 572.536000 295.772000 560.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 295.796000 572.536000 301.952000 560.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 302.492000 572.536000 306.296000 560.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 306.992000 572.536000 314.144000 560.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.192000 572.536000 321.920000 560.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 321.896000 572.536000 329.576000 560.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 330.992000 572.536000 334.796000 560.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.800000 572.536000 338.520000 560.536000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 338.496000 572.536000 345.588000 560.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 345.600000 572.536000 349.428000 560.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 349.500000 572.536000 353.328000 560.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 353.304000 572.536000 357.132000 560.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 357.108000 572.536000 364.200000 560.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 364.212000 572.536000 370.368000 560.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 370.416000 572.536000 374.220000 560.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 374.820000 572.536000 378.624000 560.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.320000 572.536000 386.472000 560.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 386.520000 572.536000 394.248000 560.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 394.224000 572.536000 401.904000 560.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 402.624000 572.536000 406.428000 560.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.124000 572.536000 413.844000 560.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 413.820000 572.536000 420.972000 560.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 421.020000 572.536000 428.748000 560.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 428.724000 572.536000 436.452000 560.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 436.428000 572.536000 443.520000 560.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 443.532000 572.536000 451.212000 560.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 451.836000 572.536000 455.640000 560.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.336000 572.536000 460.776000 560.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 460.740000 572.536000 466.476000 560.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 466.536000 572.536000 474.264000 560.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 474.240000 572.536000 478.068000 560.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 478.044000 572.536000 482.856000 560.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 482.940000 572.536000 489.096000 560.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 489.840000 572.536000 493.644000 560.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 494.340000 572.536000 501.492000 560.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 501.540000 572.536000 509.268000 560.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 509.244000 572.536000 516.924000 560.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 517.440000 572.536000 521.244000 560.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 522.036000 572.536000 528.804000 560.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 528.732000 572.536000 535.824000 560.536000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 572.536000 540.044000 560.536000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 558.636000 229.180000 546.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 229.204000 558.636000 236.296000 546.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.308000 558.636000 241.120000 546.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 241.108000 558.636000 248.260000 546.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 248.308000 558.636000 255.988000 546.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 255.904000 558.636000 259.732000 546.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 259.804000 558.636000 266.896000 546.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 266.908000 558.636000 273.064000 546.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 273.808000 558.636000 277.612000 546.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 278.512000 558.636000 282.952000 546.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 282.916000 558.636000 288.652000 546.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 288.616000 558.636000 295.840000 546.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 295.912000 558.636000 307.288000 546.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 308.008000 558.636000 311.812000 546.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 312.604000 558.636000 323.980000 546.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 324.004000 558.636000 330.772000 546.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 331.600000 558.636000 335.404000 546.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 336.196000 558.636000 343.420000 546.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 343.396000 558.636000 353.656000 546.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 353.692000 558.636000 361.420000 546.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 362.188000 558.636000 365.992000 546.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 366.892000 558.636000 374.572000 546.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 374.488000 558.636000 381.640000 546.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 381.688000 558.636000 387.424000 546.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 387.388000 558.636000 395.068000 546.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 395.092000 558.636000 402.184000 546.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.196000 558.636000 409.924000 546.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 409.900000 558.636000 413.704000 546.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.604000 558.636000 418.408000 546.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.200000 558.636000 423.940000 546.636000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 424.696000 558.636000 428.500000 546.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.292000 558.636000 436.444000 546.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 436.492000 558.636000 440.320000 546.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 440.296000 558.636000 446.452000 546.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 446.500000 558.636000 453.724000 546.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 454.504000 558.636000 458.308000 546.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.100000 558.636000 466.360000 546.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 466.396000 558.636000 473.488000 546.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 473.500000 558.636000 480.592000 546.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 480.604000 558.636000 488.284000 546.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 489.904000 558.636000 493.708000 546.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 493.700000 558.636000 500.420000 546.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 500.396000 558.636000 507.548000 546.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 507.596000 558.636000 515.324000 546.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 515.300000 558.636000 522.980000 546.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 523.004000 558.636000 526.832000 546.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 526.808000 558.636000 533.900000 546.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 533.912000 558.636000 540.068000 546.636000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 558.636000 543.904000 546.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 544.736000 228.652000 532.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.700000 544.736000 236.428000 532.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.404000 544.736000 244.084000 532.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 244.108000 544.736000 247.912000 532.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.912000 544.736000 255.064000 532.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 255.112000 544.736000 258.916000 532.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 258.800000 544.736000 266.792000 532.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 266.804000 544.736000 272.540000 532.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 272.504000 544.736000 278.660000 532.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 278.708000 544.736000 283.520000 532.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 283.508000 544.736000 287.312000 532.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 287.312000 544.736000 294.464000 532.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 294.512000 544.736000 298.340000 532.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 298.316000 544.736000 305.996000 532.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 306.020000 544.736000 309.824000 532.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 309.824000 544.736000 317.084000 532.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 317.120000 544.736000 320.948000 532.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 320.924000 544.736000 325.736000 532.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 325.724000 544.736000 329.528000 532.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.528000 544.736000 337.256000 532.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 337.232000 544.736000 344.324000 532.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 344.336000 544.736000 350.072000 532.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 350.036000 544.736000 357.128000 532.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.140000 544.736000 360.944000 532.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 360.944000 544.736000 364.664000 532.736000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 364.640000 544.736000 372.368000 532.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 372.344000 544.736000 378.500000 532.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 378.548000 544.736000 383.360000 532.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 383.348000 544.736000 387.152000 532.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 387.152000 544.736000 390.980000 532.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 390.956000 544.736000 398.684000 532.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 398.660000 544.736000 402.464000 532.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.464000 544.736000 409.184000 532.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 409.160000 544.736000 416.312000 532.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 416.360000 544.736000 422.516000 532.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 422.564000 544.736000 429.656000 532.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 429.668000 544.736000 433.472000 532.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 433.472000 544.736000 440.696000 532.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 440.672000 544.736000 445.112000 532.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 445.076000 544.736000 448.880000 532.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 448.880000 544.736000 455.972000 532.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 455.984000 544.736000 467.360000 532.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 467.384000 544.736000 474.476000 532.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 474.488000 544.736000 480.224000 532.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 480.188000 544.736000 487.868000 532.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 487.892000 544.736000 494.984000 532.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 494.996000 544.736000 502.724000 532.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 502.700000 544.736000 509.420000 532.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 509.396000 544.736000 513.224000 532.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 513.200000 544.736000 520.292000 532.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 520.304000 544.736000 526.460000 532.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 526.508000 544.736000 530.312000 532.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 518.936000 115.744000 506.936000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 115.696000 518.936000 123.784000 506.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.796000 518.936000 132.328000 506.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 132.292000 518.936000 140.824000 506.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 140.788000 518.936000 149.368000 506.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 149.392000 518.936000 155.308000 506.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 155.296000 518.936000 163.108000 506.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 163.096000 518.936000 167.272000 506.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 167.296000 518.936000 176.536000 506.936000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 176.500000 518.936000 184.744000 506.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 184.696000 518.936000 192.940000 506.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 192.892000 518.936000 205.384000 506.936000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 501.936000 229.468000 489.936000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 229.504000 501.936000 236.596000 489.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.608000 501.936000 243.760000 489.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 243.712000 501.936000 251.392000 489.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 251.416000 501.936000 255.244000 489.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 255.220000 501.936000 262.948000 489.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 263.020000 501.936000 270.700000 489.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 271.120000 501.936000 274.924000 489.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 275.416000 501.936000 282.640000 489.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 282.616000 501.936000 291.136000 489.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 291.616000 501.936000 295.420000 489.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 295.912000 501.936000 300.352000 489.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 300.316000 501.936000 306.052000 489.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 306.112000 501.936000 313.336000 489.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 313.312000 501.936000 324.688000 489.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 325.108000 501.936000 328.912000 489.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.404000 501.936000 334.216000 489.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 334.300000 501.936000 342.028000 489.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 342.004000 501.936000 349.096000 489.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.600000 501.936000 353.404000 489.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.896000 501.936000 361.156000 489.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 361.192000 501.936000 365.020000 489.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 364.996000 501.936000 369.808000 489.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 369.796000 501.936000 376.516000 489.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 376.600000 501.936000 384.328000 489.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 384.304000 501.936000 391.396000 489.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 391.408000 501.936000 399.136000 489.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 399.508000 501.936000 403.312000 489.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 403.804000 501.936000 407.632000 489.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 407.608000 501.936000 413.764000 489.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 414.304000 501.936000 418.108000 489.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 418.600000 501.936000 425.752000 489.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 425.800000 501.936000 433.528000 489.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 433.504000 501.936000 440.728000 489.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 440.704000 501.936000 445.516000 489.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.504000 501.936000 453.232000 489.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 453.304000 501.936000 460.396000 489.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.408000 501.936000 466.144000 489.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 466.504000 501.936000 470.308000 489.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.800000 501.936000 478.480000 489.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 478.504000 501.936000 485.728000 489.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 485.704000 501.936000 492.928000 489.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 492.904000 501.936000 498.640000 489.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 499.204000 501.936000 503.008000 489.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 503.500000 501.936000 508.312000 489.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 508.300000 501.936000 515.524000 489.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 516.004000 501.936000 519.808000 489.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 520.300000 501.936000 525.112000 489.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 525.100000 501.936000 532.828000 489.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 532.900000 501.936000 539.992000 489.936000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 501.936000 543.904000 489.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 488.036000 225.328000 476.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 225.304000 488.036000 232.456000 476.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 232.504000 488.036000 240.232000 476.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 240.208000 488.036000 247.936000 476.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 247.912000 488.036000 255.592000 476.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 255.616000 488.036000 261.352000 476.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 261.316000 488.036000 268.084000 476.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 268.120000 488.036000 271.924000 476.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 271.924000 488.036000 277.660000 476.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 277.624000 488.036000 284.848000 476.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 284.824000 488.036000 292.048000 476.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 292.024000 488.036000 303.400000 476.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 303.424000 488.036000 307.228000 476.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 307.228000 488.036000 311.032000 476.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 311.032000 488.036000 315.772000 476.036000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 315.736000 488.036000 323.464000 476.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 323.440000 488.036000 327.244000 476.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 327.244000 488.036000 332.056000 476.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 332.044000 488.036000 339.772000 476.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 339.748000 488.036000 343.576000 476.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 343.552000 488.036000 349.708000 476.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 349.756000 488.036000 353.560000 476.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.560000 488.036000 359.296000 476.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 359.260000 488.036000 366.484000 476.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 366.460000 488.036000 373.684000 476.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 373.660000 488.036000 385.036000 476.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 385.060000 488.036000 388.864000 476.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 388.864000 488.036000 392.692000 476.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 392.668000 488.036000 398.824000 476.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 398.872000 488.036000 402.676000 476.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.676000 488.036000 409.828000 476.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 409.876000 488.036000 413.680000 476.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 413.680000 488.036000 420.400000 476.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 420.376000 488.036000 427.600000 476.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 427.576000 488.036000 435.304000 476.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 435.280000 488.036000 442.048000 476.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 442.084000 488.036000 449.176000 476.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 449.188000 488.036000 456.916000 476.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 456.892000 488.036000 461.704000 476.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 461.692000 488.036000 465.520000 476.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 465.496000 488.036000 472.720000 476.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 472.696000 488.036000 480.424000 476.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 480.400000 488.036000 487.552000 476.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 487.600000 488.036000 491.428000 476.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 491.404000 488.036000 495.208000 476.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 495.900000 488.036000 506.160000 476.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 506.196000 488.036000 513.348000 476.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 513.396000 488.036000 519.552000 476.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 519.600000 488.036000 527.328000 476.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 527.304000 488.036000 534.396000 476.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 534.408000 488.036000 540.144000 476.036000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 488.036000 543.904000 476.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 474.136000 228.652000 462.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.700000 474.136000 236.428000 462.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.404000 474.136000 244.084000 462.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 244.804000 474.136000 248.608000 462.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 248.700000 474.136000 256.380000 462.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 256.404000 474.136000 262.140000 462.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 262.104000 474.136000 268.872000 462.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 268.908000 474.136000 276.000000 462.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 276.012000 474.136000 281.748000 462.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 280.416000 474.136000 284.220000 462.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 284.616000 474.136000 288.420000 462.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.816000 474.136000 295.968000 462.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 296.016000 474.136000 299.844000 462.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 299.820000 474.136000 307.044000 462.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 307.116000 474.136000 314.844000 462.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 314.820000 474.136000 322.500000 462.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 322.824000 474.136000 326.628000 462.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 327.024000 474.136000 337.284000 462.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 337.320000 474.136000 341.148000 462.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 341.124000 474.136000 345.936000 462.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 345.924000 474.136000 353.652000 462.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 354.024000 474.136000 357.828000 462.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 358.320000 474.136000 365.472000 462.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 365.724000 474.136000 369.528000 462.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 369.924000 474.136000 380.184000 462.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 380.220000 474.136000 387.372000 462.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 387.324000 474.136000 393.480000 462.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 393.528000 474.136000 401.256000 462.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 401.232000 474.136000 408.912000 462.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 408.936000 474.136000 416.088000 462.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 416.040000 474.136000 422.196000 462.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 422.244000 474.136000 426.072000 462.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 426.048000 474.136000 433.776000 462.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 434.244000 474.136000 438.048000 462.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.444000 474.136000 445.596000 462.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 445.644000 474.136000 453.372000 462.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 453.348000 474.136000 461.028000 462.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 461.352000 474.136000 465.156000 462.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 465.552000 474.136000 472.272000 462.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 472.248000 474.136000 476.076000 462.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 476.148000 474.136000 483.372000 462.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 483.348000 474.136000 488.160000 462.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 488.148000 474.136000 495.876000 462.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 495.852000 474.136000 502.944000 462.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 502.956000 474.136000 509.112000 462.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 509.160000 474.136000 513.204000 462.136000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 513.156000 474.136000 518.892000 462.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 518.952000 474.136000 526.104000 462.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 526.056000 474.136000 532.776000 462.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 532.860000 474.136000 540.120000 462.136000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 474.136000 543.904000 462.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 460.236000 225.940000 448.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 225.904000 460.236000 233.128000 448.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 233.200000 460.236000 238.936000 448.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 240.304000 460.236000 244.108000 448.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.608000 460.236000 253.336000 448.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 253.312000 460.236000 260.464000 448.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 260.512000 460.236000 268.240000 448.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 268.216000 460.236000 275.896000 448.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 275.920000 460.236000 279.964000 448.236000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 279.916000 460.236000 290.176000 448.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 290.212000 460.236000 297.364000 448.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 297.412000 460.236000 303.568000 448.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 303.508000 460.236000 311.236000 448.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 311.308000 460.236000 318.460000 448.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 318.412000 460.236000 326.092000 448.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 326.116000 460.236000 329.944000 448.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 329.920000 460.236000 337.012000 448.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.024000 460.236000 343.180000 448.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 343.228000 460.236000 347.032000 448.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.532000 460.236000 352.336000 448.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.836000 460.236000 362.644000 448.236000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 362.740000 460.236000 369.892000 448.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 369.940000 460.236000 374.752000 448.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 374.644000 460.236000 382.372000 448.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 383.848000 460.236000 387.652000 448.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 389.152000 460.236000 393.964000 448.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 393.952000 460.236000 401.176000 448.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 401.152000 460.236000 411.412000 448.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 411.448000 460.236000 418.540000 448.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 418.552000 460.236000 422.380000 448.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 422.452000 460.236000 428.608000 448.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 428.548000 460.236000 432.352000 448.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 435.352000 460.236000 439.156000 448.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 439.200000 460.236000 446.880000 448.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 446.904000 460.236000 450.732000 448.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 450.708000 460.236000 456.864000 448.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 456.912000 460.236000 464.640000 448.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 466.008000 460.236000 469.812000 448.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 471.312000 460.236000 476.124000 448.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 476.112000 460.236000 483.336000 448.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 483.312000 460.236000 493.572000 448.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 493.608000 460.236000 500.700000 448.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 500.712000 460.236000 504.540000 448.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 504.612000 460.236000 510.768000 448.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 512.208000 460.236000 516.012000 448.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 517.608000 460.236000 524.760000 448.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 524.808000 460.236000 532.536000 448.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 532.404000 460.236000 540.084000 448.236000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 460.236000 544.004000 448.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 446.336000 227.656000 434.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 446.336000 235.432000 434.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 235.408000 446.336000 242.500000 434.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 242.512000 446.336000 249.604000 434.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 249.616000 446.336000 254.428000 434.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 254.416000 446.336000 260.572000 434.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 262.720000 446.336000 266.524000 434.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.624000 446.336000 275.776000 434.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 275.824000 446.336000 281.560000 434.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 281.524000 446.336000 288.616000 434.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 290.728000 446.336000 294.532000 434.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 296.632000 446.336000 303.784000 434.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 303.832000 446.336000 307.660000 434.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 307.636000 446.336000 311.464000 434.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 313.540000 446.336000 317.344000 434.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 319.444000 446.336000 325.600000 434.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 325.648000 446.336000 330.460000 434.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 330.448000 446.336000 337.672000 434.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 337.648000 446.336000 343.384000 434.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 343.348000 446.336000 350.440000 434.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 350.452000 446.336000 358.132000 434.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 360.352000 446.336000 364.156000 434.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 366.256000 446.336000 373.984000 434.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 373.960000 446.336000 381.052000 434.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 381.064000 446.336000 386.800000 434.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 386.860000 446.336000 393.952000 434.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 393.964000 446.336000 397.768000 434.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.868000 446.336000 403.672000 434.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 405.772000 446.336000 413.764000 434.336000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 413.776000 446.336000 421.504000 434.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 421.480000 446.336000 428.572000 434.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 432.784000 446.336000 436.588000 434.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 436.700000 446.336000 443.468000 434.336000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 443.504000 446.336000 450.656000 434.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.608000 446.336000 457.328000 434.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.412000 446.336000 465.140000 434.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 465.116000 446.336000 472.844000 434.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 472.820000 446.336000 484.196000 434.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 486.320000 446.336000 490.124000 434.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 492.224000 446.336000 498.944000 434.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 498.920000 446.336000 502.748000 434.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 502.820000 446.336000 509.912000 434.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 509.924000 446.336000 517.076000 434.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 517.028000 446.336000 524.756000 434.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 524.732000 446.336000 531.824000 434.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 531.836000 446.336000 537.572000 434.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 536.336000 446.336000 540.140000 434.336000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 446.336000 543.904000 434.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 432.436000 229.180000 420.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 229.204000 432.436000 234.940000 420.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 234.904000 432.436000 242.128000 420.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 242.104000 432.436000 249.328000 420.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 249.400000 432.436000 260.776000 420.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 264.196000 432.436000 268.000000 420.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 271.696000 432.436000 278.848000 420.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 278.800000 432.436000 286.528000 420.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 286.504000 432.436000 294.184000 420.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 301.408000 432.436000 305.212000 420.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 305.200000 432.436000 312.880000 420.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 312.904000 432.436000 320.632000 420.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 320.608000 432.436000 326.764000 420.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 326.812000 432.436000 331.624000 420.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 331.612000 432.436000 339.292000 420.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 339.316000 432.436000 346.468000 420.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 346.420000 432.436000 354.148000 420.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 355.120000 432.436000 358.924000 420.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 365.116000 432.436000 368.920000 420.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 369.000000 432.436000 372.828000 420.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 372.804000 432.436000 378.540000 420.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 378.600000 432.436000 385.824000 420.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 385.800000 432.436000 393.528000 420.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 393.504000 432.436000 397.332000 420.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.404000 432.436000 405.132000 420.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 405.108000 432.436000 412.788000 420.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 416.412000 432.436000 420.216000 420.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.816000 432.436000 431.496000 420.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 431.520000 432.436000 438.744000 420.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 438.720000 432.436000 445.872000 420.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 445.920000 432.436000 451.656000 420.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 451.620000 432.436000 459.300000 420.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 459.324000 432.436000 463.128000 420.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 466.620000 432.436000 470.424000 420.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.024000 432.436000 481.176000 420.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 481.224000 432.436000 488.952000 420.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 488.928000 432.436000 496.608000 420.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 500.232000 432.436000 504.036000 420.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 507.636000 432.436000 514.860000 420.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 514.836000 432.436000 519.648000 420.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 519.636000 432.436000 527.364000 420.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 527.436000 432.436000 534.528000 420.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 534.540000 432.436000 540.276000 420.436000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 432.436000 543.904000 420.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 418.536000 229.228000 406.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 229.204000 418.536000 236.428000 406.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.500000 418.536000 244.228000 406.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 244.204000 418.536000 250.360000 406.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 250.300000 418.536000 257.392000 406.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 257.404000 418.536000 265.132000 406.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 265.204000 418.536000 272.428000 406.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 272.404000 418.536000 276.232000 406.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 276.208000 418.536000 283.888000 406.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 284.008000 418.536000 287.812000 406.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.004000 418.536000 295.156000 406.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 295.204000 418.536000 302.884000 406.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 302.800000 418.536000 310.480000 406.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 310.504000 418.536000 314.332000 406.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 314.404000 418.536000 318.232000 406.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 318.208000 418.536000 325.360000 406.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 325.312000 418.536000 333.040000 406.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 333.112000 418.536000 339.832000 406.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 339.808000 418.536000 346.900000 406.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 346.912000 418.536000 353.068000 406.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 353.308000 418.536000 357.112000 406.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.304000 418.536000 364.456000 406.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 364.504000 418.536000 372.232000 406.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 372.208000 418.536000 379.888000 406.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 380.008000 418.536000 383.812000 406.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 384.004000 418.536000 390.724000 406.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 390.700000 418.536000 394.528000 406.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 394.600000 418.536000 401.692000 406.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 401.704000 418.536000 408.856000 406.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 408.808000 418.536000 416.536000 406.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 416.512000 418.536000 423.604000 406.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 423.616000 418.536000 429.352000 406.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 429.412000 418.536000 435.568000 406.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 435.712000 418.536000 439.516000 406.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.708000 418.536000 446.860000 406.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 446.908000 418.536000 452.644000 406.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 452.608000 418.536000 459.700000 406.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 459.808000 418.536000 463.612000 406.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 463.804000 418.536000 471.064000 406.536000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 471.100000 418.536000 478.192000 406.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 478.204000 418.536000 485.884000 406.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 485.908000 418.536000 490.720000 406.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 490.912000 418.536000 494.716000 406.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 494.908000 418.536000 502.636000 406.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 502.612000 418.536000 509.704000 406.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 509.716000 418.536000 515.452000 406.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 515.512000 418.536000 522.604000 406.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 522.712000 418.536000 526.516000 406.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 526.708000 418.536000 533.860000 406.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 533.908000 418.536000 540.064000 406.536000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 418.536000 543.904000 406.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 404.636000 231.760000 392.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 231.796000 404.636000 238.888000 392.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 238.900000 404.636000 242.728000 392.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 242.704000 404.636000 246.532000 392.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 246.508000 404.636000 250.312000 392.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 372.892000 119.580000 358.892000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 119.594000 372.892000 129.548000 358.892000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 129.590000 372.892000 139.082000 358.892000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 139.096000 372.892000 147.426000 358.892000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.398000 372.892000 154.090000 358.892000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 154.104000 372.892000 158.976000 358.892000 1.000000 0.000000 0.000000 1.000000
+drawChar 159.004000 372.892000 169.672000 358.892000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 169.700000 372.892000 179.136000 358.892000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 179.094000 372.892000 185.786000 358.892000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 185.800000 372.892000 195.754000 358.892000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 350.636000 231.112000 338.636000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 231.100000 350.636000 234.928000 338.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 235.000000 350.636000 240.736000 338.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 240.700000 350.636000 247.792000 338.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 247.804000 350.636000 254.524000 338.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 254.500000 350.636000 259.312000 338.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 259.300000 350.636000 263.128000 338.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 263.200000 350.636000 269.968000 338.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 271.696000 350.636000 275.500000 338.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.300000 350.636000 285.028000 338.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 285.004000 350.636000 292.096000 338.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 292.108000 350.636000 298.864000 338.636000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 298.912000 350.636000 303.724000 338.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 305.416000 350.636000 309.220000 338.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 311.020000 350.636000 315.832000 338.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 315.820000 350.636000 323.044000 338.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 324.820000 350.636000 328.624000 338.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.424000 350.636000 335.236000 338.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 335.224000 350.636000 342.952000 338.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 343.024000 350.636000 350.116000 338.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 351.724000 350.636000 355.528000 338.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.328000 350.636000 365.008000 338.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 365.032000 350.636000 372.184000 338.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.136000 350.636000 379.864000 338.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 379.936000 350.636000 384.748000 338.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 384.736000 350.636000 390.472000 338.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 390.532000 350.636000 397.300000 338.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 398.932000 350.636000 402.736000 338.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.632000 350.636000 408.460000 338.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 408.436000 350.636000 414.592000 338.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 416.236000 350.636000 420.040000 338.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 421.936000 350.636000 429.088000 338.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 430.732000 350.636000 434.536000 338.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 436.336000 350.636000 444.016000 338.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 444.040000 350.636000 451.768000 338.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 451.744000 350.636000 458.836000 338.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 458.848000 350.636000 465.004000 338.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 465.052000 350.636000 469.864000 338.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 471.556000 350.636000 475.360000 338.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 477.160000 350.636000 484.840000 338.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 484.864000 350.636000 492.016000 338.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 491.968000 350.636000 496.780000 338.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 496.864000 350.636000 504.592000 338.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 504.568000 350.636000 510.304000 338.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 510.364000 350.636000 517.588000 338.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 517.564000 350.636000 524.788000 338.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 524.764000 350.636000 536.140000 338.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 536.164000 350.636000 539.968000 338.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 350.636000 543.904000 338.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 336.736000 229.720000 324.736000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 229.696000 336.736000 237.424000 324.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 237.400000 336.736000 244.120000 324.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 244.204000 336.736000 251.932000 324.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 253.000000 336.736000 256.804000 324.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.004000 336.736000 264.724000 324.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 264.700000 336.736000 271.924000 324.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 271.900000 336.736000 283.276000 324.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 283.300000 336.736000 287.740000 324.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 287.800000 336.736000 295.024000 324.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 295.000000 336.736000 300.736000 324.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 300.700000 336.736000 305.512000 324.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 305.500000 336.736000 311.656000 324.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 312.796000 336.736000 316.600000 324.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.800000 336.736000 328.060000 324.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 328.096000 336.736000 335.188000 324.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 335.200000 336.736000 340.936000 324.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 340.900000 336.736000 347.992000 324.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.096000 336.736000 352.900000 324.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.196000 336.736000 361.924000 324.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 361.900000 336.736000 369.124000 324.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 369.196000 336.736000 374.008000 324.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 374.992000 336.736000 378.796000 324.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.996000 336.736000 386.152000 324.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 386.200000 336.736000 391.012000 324.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 391.000000 336.736000 398.152000 324.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 398.104000 336.736000 405.832000 324.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 405.904000 336.736000 413.584000 324.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 413.500000 336.736000 420.652000 324.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 420.700000 336.736000 426.436000 324.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 426.400000 336.736000 434.080000 324.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 435.304000 336.736000 439.108000 324.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.308000 336.736000 447.460000 324.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 447.508000 336.736000 452.320000 324.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 453.412000 336.736000 457.216000 324.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 458.416000 336.736000 463.228000 324.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 463.216000 336.736000 470.944000 324.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 471.016000 336.736000 478.108000 324.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 479.116000 336.736000 482.920000 324.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.120000 336.736000 488.932000 324.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.016000 336.736000 492.844000 324.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 492.820000 336.736000 504.196000 324.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 504.220000 336.736000 511.312000 324.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 512.416000 336.736000 516.220000 324.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 517.420000 336.736000 522.232000 324.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 522.220000 336.736000 529.948000 324.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 530.020000 336.736000 533.848000 324.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 533.824000 336.736000 539.980000 324.736000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 336.736000 543.904000 324.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 322.836000 229.228000 310.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 229.204000 322.836000 236.428000 310.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.500000 322.836000 244.228000 310.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 244.204000 322.836000 250.360000 310.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 250.300000 322.836000 257.392000 310.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 258.304000 322.836000 262.108000 310.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 263.104000 322.836000 273.364000 310.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 273.400000 322.836000 280.552000 310.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 280.504000 322.836000 286.660000 310.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 287.500000 322.836000 291.304000 310.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 292.396000 322.836000 300.076000 310.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 299.992000 322.836000 307.720000 310.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 307.696000 322.836000 311.524000 310.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 311.596000 322.836000 315.424000 310.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 315.400000 322.836000 320.212000 310.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 320.200000 322.836000 324.004000 310.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 325.000000 322.836000 328.804000 310.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.704000 322.836000 335.860000 310.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 335.908000 322.836000 343.132000 310.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 344.008000 322.836000 347.812000 310.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 348.808000 322.836000 355.960000 310.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 356.812000 322.836000 360.616000 310.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.612000 322.836000 369.292000 310.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 369.208000 322.836000 376.432000 310.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 376.504000 322.836000 382.240000 310.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 382.204000 322.836000 387.016000 310.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 387.100000 322.836000 390.928000 310.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 390.904000 322.836000 398.128000 310.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 398.104000 322.836000 405.832000 310.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 406.708000 322.836000 410.512000 310.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 411.508000 322.836000 418.732000 310.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 418.804000 322.836000 423.244000 310.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 424.108000 322.836000 427.912000 310.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 428.812000 322.836000 433.624000 310.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 433.612000 322.836000 441.340000 310.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 441.412000 322.836000 448.504000 310.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 449.416000 322.836000 453.220000 310.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.216000 322.836000 461.896000 310.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 461.920000 322.836000 469.072000 310.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 469.024000 322.836000 476.752000 310.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 476.824000 322.836000 481.636000 310.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 481.624000 322.836000 487.360000 310.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 487.324000 322.836000 494.092000 310.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 495.028000 322.836000 498.832000 310.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 499.732000 322.836000 507.460000 310.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 507.436000 322.836000 514.588000 310.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 514.636000 322.836000 522.316000 310.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 523.240000 322.836000 527.044000 310.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 528.040000 322.836000 532.852000 310.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 532.840000 322.836000 540.064000 310.836000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 322.836000 544.004000 310.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 308.936000 229.180000 296.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 229.204000 308.936000 236.296000 296.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.800000 308.936000 240.604000 296.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.096000 308.936000 246.832000 296.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 246.796000 308.936000 253.888000 296.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 253.900000 308.936000 265.276000 296.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 265.300000 308.936000 272.524000 296.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 272.500000 308.936000 279.268000 296.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 279.304000 308.936000 286.396000 296.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 286.408000 308.936000 294.088000 296.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 294.604000 308.936000 298.408000 296.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 299.008000 308.936000 303.820000 296.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 303.808000 308.936000 311.032000 296.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 311.608000 308.936000 315.412000 296.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 315.904000 308.936000 327.280000 296.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 327.304000 308.936000 334.456000 296.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 334.408000 308.936000 341.668000 296.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 341.704000 308.936000 348.796000 296.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.300000 308.936000 353.104000 296.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.704000 308.936000 359.440000 296.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 359.404000 308.936000 366.628000 296.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 366.700000 308.936000 373.924000 296.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 373.900000 308.936000 385.276000 296.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 385.804000 308.936000 389.608000 296.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 390.100000 308.936000 394.540000 296.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 394.504000 308.936000 401.728000 296.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 401.800000 308.936000 407.536000 296.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 408.004000 308.936000 411.808000 296.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 412.408000 308.936000 416.236000 296.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 416.212000 308.936000 421.024000 296.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 421.108000 308.936000 424.912000 296.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.404000 308.936000 429.208000 296.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.700000 308.936000 437.692000 296.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 437.704000 308.936000 445.432000 296.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 445.408000 308.936000 452.500000 296.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.004000 308.936000 456.808000 296.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 457.408000 308.936000 463.144000 296.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 463.108000 308.936000 470.332000 296.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 470.404000 308.936000 477.628000 296.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 477.604000 308.936000 488.980000 296.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 489.508000 308.936000 493.312000 296.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 493.804000 308.936000 497.632000 296.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 497.608000 308.936000 503.764000 296.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 504.304000 308.936000 508.108000 296.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 508.708000 308.936000 516.388000 296.936000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 516.412000 308.936000 524.140000 296.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 524.116000 308.936000 527.944000 296.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 527.920000 308.936000 532.732000 296.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 532.816000 308.936000 539.908000 296.936000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 308.936000 544.004000 296.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 295.036000 227.656000 283.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 295.036000 239.080000 283.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 239.008000 295.036000 246.160000 283.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 246.208000 295.036000 250.036000 283.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 250.012000 295.036000 253.840000 283.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 253.912000 295.036000 257.716000 283.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 258.112000 295.036000 261.916000 283.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.312000 295.036000 269.464000 283.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 269.512000 295.036000 277.240000 283.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 277.216000 295.036000 284.896000 283.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 285.316000 295.036000 289.120000 283.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.612000 295.036000 295.768000 283.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 295.816000 295.036000 303.496000 283.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 303.412000 295.036000 310.564000 283.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 310.612000 295.036000 316.348000 283.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 316.312000 295.036000 322.468000 283.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 322.516000 295.036000 329.608000 283.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 329.620000 295.036000 333.448000 283.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 333.424000 295.036000 340.192000 283.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 340.624000 295.036000 344.428000 283.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 344.824000 295.036000 349.264000 283.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 349.228000 295.036000 356.956000 283.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 357.028000 295.036000 362.764000 283.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.728000 295.036000 370.456000 283.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 370.432000 295.036000 374.260000 283.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 374.332000 295.036000 380.488000 283.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 380.428000 295.036000 388.156000 283.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 388.228000 295.036000 395.320000 283.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 395.332000 295.036000 403.012000 283.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 403.336000 295.036000 407.140000 283.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.740000 295.036000 418.000000 283.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 418.036000 295.036000 421.864000 283.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 421.840000 295.036000 426.652000 283.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 426.640000 295.036000 434.368000 283.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 434.740000 295.036000 438.544000 283.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.940000 295.036000 446.164000 283.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 446.236000 295.036000 453.964000 283.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 453.940000 295.036000 457.768000 283.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 457.840000 295.036000 464.608000 283.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 464.944000 295.036000 468.748000 283.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 469.240000 295.036000 476.392000 283.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 476.836000 295.036000 480.640000 283.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.036000 295.036000 485.848000 283.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 485.836000 295.036000 493.060000 283.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 493.036000 295.036000 496.864000 283.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 496.936000 295.036000 500.764000 283.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 500.740000 295.036000 507.832000 283.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 507.844000 295.036000 512.656000 283.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 513.040000 295.036000 516.844000 283.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 517.336000 295.036000 524.488000 283.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 524.536000 295.036000 532.264000 283.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 532.240000 295.036000 539.920000 283.036000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 295.036000 543.904000 283.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 281.136000 228.652000 269.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.700000 281.136000 232.504000 269.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 232.504000 281.136000 242.764000 269.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 242.800000 281.136000 249.952000 269.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 250.000000 281.136000 256.156000 269.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 256.204000 281.136000 263.932000 269.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 263.908000 281.136000 271.588000 269.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 271.612000 281.136000 278.764000 269.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 278.812000 281.136000 284.968000 269.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 285.016000 281.136000 288.844000 269.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 288.820000 281.136000 296.548000 269.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 296.524000 281.136000 300.328000 269.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 249.392000 119.720000 235.392000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 119.706000 249.392000 124.494000 235.392000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.508000 249.392000 134.462000 235.392000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.504000 249.392000 139.292000 235.392000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 139.306000 249.392000 149.260000 235.392000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 149.302000 249.392000 159.312000 235.392000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 159.298000 249.392000 164.170000 235.392000 1.000000 0.000000 0.000000 1.000000
+drawChar 164.198000 249.392000 174.978000 235.392000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 174.992000 249.392000 184.610000 235.392000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 184.596000 249.392000 194.214000 235.392000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 194.200000 249.392000 208.774000 235.392000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 227.136000 229.492000 215.136000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 227.136000 237.232000 215.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 227.136000 244.300000 215.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 245.212000 227.136000 249.016000 215.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 249.916000 227.136000 261.292000 215.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 261.316000 227.136000 268.540000 215.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 268.612000 227.136000 274.768000 215.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 274.816000 227.136000 279.628000 215.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 280.420000 227.136000 284.224000 215.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.220000 227.136000 292.948000 215.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 292.924000 227.136000 300.148000 215.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 300.220000 227.136000 305.032000 215.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 305.020000 227.136000 312.172000 215.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 312.124000 227.136000 319.804000 215.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 319.924000 227.136000 323.752000 215.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 323.728000 227.136000 330.820000 215.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 331.732000 227.136000 335.536000 215.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 336.436000 227.136000 344.116000 215.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 344.140000 227.136000 347.968000 215.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 347.944000 227.136000 355.036000 215.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 355.048000 227.136000 361.768000 215.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 361.744000 227.136000 368.836000 215.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 369.844000 227.136000 373.648000 215.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.644000 227.136000 381.868000 215.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 381.844000 227.136000 386.284000 215.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 387.148000 227.136000 390.952000 215.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.948000 227.136000 396.388000 215.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 396.352000 227.136000 404.080000 215.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 404.152000 227.136000 409.888000 215.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 409.852000 227.136000 417.580000 215.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 417.556000 227.136000 421.384000 215.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 421.456000 227.136000 426.268000 215.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 426.160000 227.136000 433.888000 215.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 433.864000 227.136000 439.600000 215.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 439.660000 227.136000 446.752000 215.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.664000 227.136000 451.468000 215.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 452.464000 227.136000 460.192000 215.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 460.168000 227.136000 467.848000 215.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 467.872000 227.136000 475.096000 215.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 475.072000 227.136000 482.800000 215.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 483.772000 227.136000 487.576000 215.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.476000 227.136000 495.568000 215.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 495.580000 227.136000 503.308000 215.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 503.284000 227.136000 508.096000 215.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 508.180000 227.136000 515.272000 215.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 515.284000 227.136000 521.020000 215.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 520.984000 227.136000 524.812000 215.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 524.788000 227.136000 532.516000 215.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 532.588000 227.136000 540.268000 215.136000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 227.136000 544.004000 215.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 213.236000 226.312000 201.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 213.236000 234.028000 201.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 234.100000 213.236000 241.192000 201.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 242.404000 213.236000 246.208000 201.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.408000 213.236000 255.088000 201.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 255.004000 213.236000 258.832000 201.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 258.808000 213.236000 266.536000 201.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 266.608000 213.236000 270.436000 201.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 270.508000 213.236000 278.236000 201.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 278.212000 213.236000 285.892000 201.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 287.116000 213.236000 290.920000 201.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 292.216000 213.236000 297.952000 201.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 297.916000 213.236000 305.140000 201.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 305.212000 213.236000 312.436000 201.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 312.412000 213.236000 323.788000 201.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 324.916000 213.236000 328.720000 201.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.016000 213.236000 333.844000 201.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 333.820000 213.236000 339.976000 201.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 341.224000 213.236000 345.028000 201.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 346.324000 213.236000 353.476000 201.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 355.828000 213.236000 359.632000 201.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 359.800000 213.236000 368.464000 201.236000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 368.296000 213.236000 372.124000 201.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 372.100000 213.236000 378.820000 201.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 378.796000 213.236000 383.608000 201.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 383.596000 213.236000 390.820000 201.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 390.892000 213.236000 396.628000 201.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 396.592000 213.236000 400.420000 201.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 400.396000 213.236000 407.548000 201.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 407.596000 213.236000 415.324000 201.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 416.500000 213.236000 420.304000 201.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 421.504000 213.236000 427.660000 201.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 427.708000 213.236000 432.520000 201.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 432.508000 213.236000 439.276000 201.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 439.312000 213.236000 443.140000 201.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 443.116000 213.236000 450.208000 201.236000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 450.300000 213.236000 454.104000 201.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.600000 213.236000 461.412000 201.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 461.400000 213.236000 468.552000 201.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 468.504000 213.236000 476.184000 201.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 476.304000 213.236000 480.132000 201.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 480.108000 213.236000 487.200000 201.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 487.212000 213.236000 491.016000 201.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 492.216000 213.236000 496.020000 201.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 497.220000 213.236000 504.900000 201.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 504.924000 213.236000 512.148000 201.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 512.124000 213.236000 519.852000 201.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 519.828000 213.236000 527.508000 201.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 527.628000 213.236000 535.356000 201.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 535.332000 213.236000 540.144000 201.236000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 213.236000 543.904000 201.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 199.336000 225.940000 187.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 225.904000 199.336000 231.640000 187.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 231.700000 199.336000 238.924000 187.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 238.900000 199.336000 250.276000 187.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 251.896000 199.336000 255.700000 187.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.392000 199.336000 264.544000 187.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 264.592000 199.336000 272.320000 187.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 273.988000 199.336000 277.792000 187.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.484000 199.336000 286.636000 187.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 286.684000 199.336000 294.412000 187.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 294.388000 199.336000 299.200000 187.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 299.188000 199.336000 303.016000 187.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 302.992000 199.336000 310.672000 187.336000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 310.696000 199.336000 318.424000 187.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 318.496000 199.336000 325.588000 187.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 327.100000 199.336000 330.904000 187.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 332.704000 199.336000 340.384000 187.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 340.300000 199.336000 347.392000 187.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 347.404000 199.336000 354.556000 187.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 354.604000 199.336000 358.432000 187.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 358.408000 199.336000 365.500000 187.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.512000 199.336000 371.248000 187.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 373.012000 199.336000 376.816000 187.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 378.508000 199.336000 382.336000 187.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 382.312000 199.336000 390.040000 187.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 393.412000 199.336000 397.216000 187.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 397.400000 199.336000 406.148000 187.336000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 406.196000 199.336000 413.924000 187.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 413.900000 199.336000 421.580000 187.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 421.604000 199.336000 425.432000 187.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 425.408000 199.336000 432.560000 187.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 432.608000 199.336000 440.336000 187.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 440.312000 199.336000 447.992000 187.336000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 448.000000 199.336000 451.804000 187.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.496000 199.336000 457.300000 187.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 458.992000 199.336000 467.740000 187.336000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 467.788000 199.336000 471.616000 187.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 471.592000 199.336000 479.272000 187.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 479.296000 199.336000 487.024000 187.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 487.000000 199.336000 491.812000 187.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 493.504000 199.336000 497.308000 187.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 499.000000 199.336000 505.720000 187.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 505.696000 199.336000 513.424000 187.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 513.400000 199.336000 520.552000 187.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 520.600000 199.336000 524.428000 187.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 524.404000 199.336000 530.140000 187.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 530.200000 199.336000 536.356000 187.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 536.296000 199.336000 540.100000 187.336000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 199.336000 543.904000 187.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 185.436000 226.312000 173.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 185.436000 236.560000 173.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 236.596000 185.436000 243.820000 173.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 245.092000 185.436000 248.896000 173.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 250.288000 185.436000 257.512000 173.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 257.584000 185.436000 262.024000 173.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 263.380000 185.436000 267.184000 173.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.576000 185.436000 275.668000 173.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 275.680000 185.436000 282.832000 173.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 282.880000 185.436000 289.600000 173.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 289.576000 185.436000 297.304000 173.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 298.576000 185.436000 302.380000 173.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 303.772000 185.436000 310.996000 173.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 311.068000 185.436000 315.508000 173.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 316.864000 185.436000 320.668000 173.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.060000 185.436000 326.872000 173.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 326.860000 185.436000 334.588000 173.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 334.660000 185.436000 341.752000 173.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 343.060000 185.436000 346.864000 173.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 348.256000 185.436000 352.696000 173.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 352.660000 185.436000 359.884000 173.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 359.956000 185.436000 367.684000 173.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 367.660000 185.436000 373.396000 173.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 374.764000 185.436000 378.568000 173.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.960000 185.436000 387.640000 173.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 387.664000 185.436000 391.492000 173.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 391.468000 185.436000 399.988000 173.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 399.964000 185.436000 407.056000 173.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 407.068000 185.436000 412.804000 173.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 412.864000 185.436000 419.956000 173.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 419.968000 185.436000 427.696000 173.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 427.672000 185.436000 432.484000 173.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 433.876000 185.436000 437.680000 173.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.072000 185.436000 445.228000 173.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 445.276000 185.436000 450.088000 173.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 450.076000 185.436000 456.844000 173.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 456.880000 185.436000 460.708000 173.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 460.684000 185.436000 467.776000 173.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 467.788000 185.436000 473.944000 173.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 473.992000 185.436000 477.796000 173.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 479.092000 185.436000 482.896000 173.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.396000 185.436000 490.552000 173.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 490.600000 185.436000 498.328000 173.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 498.196000 185.436000 503.932000 173.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 503.896000 185.436000 509.632000 173.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 509.692000 185.436000 516.916000 173.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 516.892000 185.436000 524.620000 173.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 524.596000 185.436000 532.324000 173.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 532.396000 185.436000 540.076000 173.436000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 185.436000 543.904000 173.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 108.100000 90.136000 116.164000 78.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 115.600000 90.136000 122.752000 78.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 122.800000 90.136000 130.480000 78.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 130.504000 90.136000 137.596000 78.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.608000 90.136000 141.412000 78.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 141.400000 90.136000 149.032000 78.136000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 4327.800000 0 477.900000 4327.800000 0 477.900000 4637.600000 0 134.300000 4637.600000 0 134.300000 4327.800000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -353590.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 1338.800000 0 168.100000 1338.800000 0 168.100000 1343.800000 0 76.900000 1343.800000 0 76.900000 1338.800000 0
+eoFillPath subpath 1 163.100000 1343.700000 0 168.100000 1343.700000 0 168.100000 1474.300000 0 163.100000 1474.300000 0 163.100000 1343.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1343.800000 0 163.100000 1343.800000 0 163.100000 1479.200000 0 72.000000 1479.200000 0 72.000000 1343.800000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 1474.880000 87.320000 1464.880000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 1474.880000 93.420000 1464.880000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 1474.880000 97.510000 1464.880000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 1474.880000 101.420000 1464.880000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 1474.880000 104.170000 1464.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 1474.880000 110.530000 1464.880000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 1474.880000 113.270000 1464.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 1474.880000 116.470000 1464.880000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 1474.880000 123.480000 1464.880000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 1474.880000 129.610000 1464.880000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 1474.880000 135.090000 1464.880000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 1474.880000 140.890000 1464.880000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 1474.880000 144.820000 1464.880000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 1474.880000 150.920000 1464.880000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 1474.880000 153.670000 1464.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 1474.880000 156.470000 1464.880000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 1348.000000 0 168.200000 1348.000000 0 168.200000 1463.200000 0 72.000000 1463.200000 0 72.000000 1348.000000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1416.152000 79.253000 1407.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 1416.152000 86.669000 1407.152000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 1416.152000 90.215000 1407.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 1416.152000 93.077000 1407.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 1416.152000 97.406000 1407.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 1416.152000 100.853000 1407.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 1416.152000 107.324000 1407.152000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 1416.152000 112.337000 1407.152000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 1416.152000 115.271000 1407.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 1416.152000 118.655000 1407.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 1416.152000 126.512000 1407.152000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 1416.152000 130.805000 1407.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 1416.152000 135.881000 1407.152000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 1416.152000 139.355000 1407.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 1416.152000 147.284000 1407.152000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 1416.152000 150.074000 1407.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 1416.152000 155.897000 1407.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 1416.152000 158.750000 1407.152000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 1416.152000 161.853000 1407.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1405.652000 82.124000 1396.652000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 1405.652000 87.137000 1396.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 1405.652000 90.071000 1396.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 1405.652000 93.356000 1396.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 1405.652000 100.403000 1396.652000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 1405.652000 104.921000 1396.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 1405.652000 109.205000 1396.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 1405.652000 117.737000 1396.652000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 1405.652000 123.119000 1396.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 1405.652000 128.996000 1396.652000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 1405.652000 132.605000 1396.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 1405.652000 138.392000 1396.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 1405.652000 141.749000 1396.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 1405.652000 149.507000 1396.652000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 1405.652000 153.800000 1396.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 1405.652000 158.876000 1396.652000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 1405.652000 161.853000 1396.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1395.152000 81.764000 1386.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 1395.152000 87.596000 1386.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 1395.152000 93.356000 1386.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 1395.152000 102.050000 1386.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 1395.152000 113.822000 1386.152000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 1395.152000 122.651000 1386.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 1395.152000 134.117000 1386.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 1395.152000 138.401000 1386.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 1395.152000 147.149000 1386.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 1395.152000 158.921000 1386.152000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 1395.152000 161.853000 1386.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1384.652000 79.271000 1375.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 1384.652000 84.338000 1375.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 1384.652000 89.621000 1375.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 1384.652000 94.643000 1375.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 1384.652000 100.502000 1375.652000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 1384.652000 106.262000 1375.652000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 1384.652000 111.518000 1375.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 1384.652000 116.216000 1375.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 1384.652000 119.249000 1375.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 1384.652000 122.363000 1375.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 1384.652000 128.186000 1375.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 1384.652000 131.345000 1375.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 1384.652000 137.060000 1375.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 1384.652000 140.147000 1375.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 1384.652000 145.007000 1375.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 1384.652000 148.598000 1375.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 1384.652000 151.460000 1375.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 1384.652000 155.789000 1375.652000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 1384.652000 158.933000 1375.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1374.152000 80.702000 1365.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 1374.152000 83.573000 1365.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 1374.152000 89.396000 1365.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 1374.152000 95.156000 1365.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 1374.152000 100.547000 1365.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 1374.152000 109.052000 1365.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 1374.152000 111.959000 1365.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 1374.152000 117.251000 1365.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 1374.152000 121.904000 1365.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 1374.152000 126.503000 1365.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 1374.152000 129.338000 1365.152000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 1374.152000 134.936000 1365.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 1374.152000 143.441000 1365.152000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 1374.152000 148.796000 1365.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 1374.152000 154.574000 1365.152000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 1374.152000 158.876000 1365.152000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 1374.152000 161.853000 1365.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1363.652000 79.271000 1354.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 1363.652000 85.094000 1354.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 1363.652000 88.703000 1354.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 1363.652000 94.112000 1354.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 1363.652000 97.244000 1354.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 1363.652000 103.058000 1354.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 1363.652000 108.890000 1354.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 1363.652000 111.950000 1354.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 1363.652000 115.271000 1354.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 1363.652000 120.338000 1354.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 1363.652000 125.621000 1354.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 1363.652000 131.363000 1354.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 1363.652000 134.558000 1354.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 1363.652000 140.048000 1354.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 1363.652000 145.430000 1354.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 1363.652000 150.551000 1354.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 1363.652000 155.960000 1354.652000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 1363.652000 158.933000 1354.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1353.152000 80.009000 1344.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 1353.152000 85.364000 1344.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 1353.152000 88.271000 1344.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 1353.152000 91.169000 1344.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 1353.152000 97.955000 1344.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 1353.152000 107.765000 1344.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 1353.152000 110.672000 1344.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 1353.152000 115.964000 1344.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 1353.152000 120.617000 1344.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 1353.152000 125.216000 1344.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 1353.152000 128.051000 1344.152000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 1353.152000 134.954000 1344.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 1353.152000 146.285000 1344.152000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 1353.152000 151.667000 1344.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 1353.152000 155.906000 1344.152000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 1353.152000 159.033000 1344.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 1343.700000 0 72.100000 1343.700000 0 72.100000 1479.200000 0 72.000000 1479.200000 0 72.000000 1343.700000 0
+eoFillPath subpath 1 163.100000 1343.700000 0 163.200000 1343.700000 0 163.200000 1479.200000 0 163.100000 1479.200000 0 163.100000 1343.700000 0
+eoFillPath subpath 1 72.000000 1479.100000 0 163.200000 1479.100000 0 163.200000 1479.200000 0 72.000000 1479.200000 0 72.000000 1479.100000 0
+eoFillPath subpath 1 72.000000 1343.700000 0 163.200000 1343.700000 0 163.200000 1343.800000 0 72.000000 1343.800000 0 72.000000 1343.700000 0
+saveState
+eoClipPath subpath 1 96.900000 1419.000000 0 138.300000 1419.000000 0 138.300000 1463.200000 0 96.900000 1463.200000 0 96.900000 1419.000000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -62710.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 1064.200000 0 165.500000 1064.200000 0 165.500000 1069.200000 0 76.900000 1069.200000 0 76.900000 1064.200000 0
+eoFillPath subpath 1 160.500000 1069.100000 0 165.500000 1069.100000 0 165.500000 1225.400000 0 160.500000 1225.400000 0 160.500000 1069.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1069.200000 0 121.400000 1069.200000 0 121.400000 1230.300000 0 72.000000 1230.300000 0 72.000000 1069.200000 0
+saveState
+eoClipPath subpath 1 72.000000 1069.100000 0 160.500000 1069.100000 0 160.500000 1230.200000 0 72.000000 1230.200000 0 72.000000 1069.100000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -26010.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 1225.980000 89.280000 1215.980000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 1225.980000 95.630000 1215.980000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 1225.980000 99.520000 1215.980000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 1225.980000 102.270000 1215.980000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 1225.980000 108.450000 1215.980000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 1225.980000 112.610000 1215.980000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 1225.980000 118.510000 1215.980000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 1225.980000 121.670000 1215.980000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 1225.980000 124.470000 1215.980000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 1225.980000 130.830000 1215.980000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 1225.980000 133.970000 1215.980000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 1225.980000 137.920000 1215.980000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 1225.980000 144.230000 1215.980000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 1225.980000 150.350000 1215.980000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 1225.980000 153.570000 1215.980000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 1214.280000 95.000000 1204.280000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 1214.280000 97.770000 1204.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 1214.280000 103.000000 1204.280000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 1214.280000 109.330000 1204.280000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 1214.280000 117.470000 1204.280000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 1214.280000 123.620000 1204.280000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 1214.280000 128.800000 1204.280000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 1214.280000 135.130000 1204.280000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 1214.280000 141.250000 1204.280000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 1214.280000 145.410000 1204.280000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1199.452000 82.961000 1190.452000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 1199.452000 87.614000 1190.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 1199.452000 93.356000 1190.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 1199.452000 98.612000 1190.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 1199.452000 103.733000 1190.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 1199.452000 106.568000 1190.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 1199.452000 111.959000 1190.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 1199.452000 114.866000 1190.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 1199.452000 117.665000 1190.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 1199.452000 122.768000 1190.452000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 1199.452000 125.747000 1190.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 1199.452000 131.651000 1190.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 1199.452000 136.907000 1190.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 1199.452000 142.307000 1190.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 1199.452000 148.049000 1190.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 1199.452000 150.956000 1190.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 1199.452000 156.302000 1190.452000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1199.452000 159.253000 1190.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1188.952000 84.095000 1179.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 1188.952000 89.900000 1179.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 1188.952000 95.318000 1179.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 1188.952000 100.349000 1179.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 1188.952000 110.789000 1179.952000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 1188.952000 111.464000 1179.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 1188.952000 114.362000 1179.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 1188.952000 119.348000 1179.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 1188.952000 126.962000 1179.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 1188.952000 132.047000 1179.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 1188.952000 139.958000 1179.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 1188.952000 142.865000 1179.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 1188.952000 147.410000 1179.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 1188.952000 153.287000 1179.952000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 1188.952000 156.333000 1179.952000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1178.452000 84.095000 1169.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 1178.452000 89.468000 1169.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 1178.452000 94.121000 1169.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 1178.452000 99.899000 1169.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 1178.452000 105.218000 1169.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 1178.452000 109.502000 1169.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 1178.452000 115.649000 1169.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 1178.452000 122.327000 1169.452000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 1178.452000 127.718000 1169.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 1178.452000 132.002000 1169.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 1178.452000 138.149000 1169.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 1178.452000 145.205000 1169.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 1178.452000 150.992000 1169.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 1178.452000 156.311000 1169.452000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1178.452000 159.253000 1169.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1167.952000 82.394000 1158.952000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 1167.952000 86.705000 1158.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 1167.952000 91.322000 1158.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 1167.952000 94.913000 1158.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 1167.952000 98.054000 1158.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 1167.952000 102.014000 1158.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 1167.952000 104.876000 1158.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 1167.952000 113.435000 1158.952000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 1167.952000 118.718000 1158.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 1167.952000 121.949000 1158.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 1167.952000 125.063000 1158.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 1167.952000 130.886000 1158.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 1167.952000 134.045000 1158.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 1167.952000 138.005000 1158.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 1167.952000 143.792000 1158.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 1167.952000 149.111000 1158.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 1167.952000 151.964000 1158.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 1167.952000 156.293000 1158.952000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 1167.952000 159.153000 1158.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1157.452000 79.271000 1148.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 1157.452000 82.169000 1148.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 1157.452000 85.526000 1148.452000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 1157.452000 90.818000 1148.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 1157.452000 94.454000 1148.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 1157.452000 99.008000 1148.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 1157.452000 104.318000 1148.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 1157.452000 110.096000 1148.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 1157.452000 115.856000 1148.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 1157.452000 119.546000 1148.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 1157.452000 124.001000 1148.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 1157.452000 129.509000 1148.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 1157.452000 133.145000 1148.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 1157.452000 139.751000 1148.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 1157.452000 145.205000 1148.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 1157.452000 148.841000 1148.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 1157.452000 152.657000 1148.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 1157.452000 156.293000 1148.452000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1157.452000 159.253000 1148.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1146.952000 84.095000 1137.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 1146.952000 88.406000 1137.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 1146.952000 93.824000 1137.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 1146.952000 99.602000 1137.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 1146.952000 105.362000 1137.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 1146.952000 108.422000 1137.952000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 1146.952000 116.747000 1137.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 1146.952000 129.275000 1137.952000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 1146.952000 135.089000 1137.952000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 1146.952000 138.698000 1137.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 1146.952000 141.560000 1137.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 1146.952000 146.906000 1137.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 1146.952000 151.190000 1137.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 1146.952000 156.266000 1137.952000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1146.952000 159.253000 1137.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1136.452000 82.196000 1127.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 1136.452000 87.560000 1127.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 1136.452000 92.213000 1127.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 1136.452000 96.551000 1127.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 1136.452000 101.708000 1127.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 1136.452000 107.216000 1127.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 1136.452000 111.653000 1127.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 1136.452000 118.961000 1127.452000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 1136.452000 124.316000 1127.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 1136.452000 128.654000 1127.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 1136.452000 133.172000 1127.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 1136.452000 138.995000 1127.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 1136.452000 143.612000 1127.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 1136.452000 148.913000 1127.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 1136.452000 153.197000 1127.452000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 1136.452000 156.333000 1127.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1125.952000 80.009000 1116.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 1125.952000 85.319000 1116.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 1125.952000 91.061000 1116.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 1125.952000 100.052000 1116.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 1125.952000 113.993000 1116.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 1125.952000 116.873000 1116.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 1125.952000 120.410000 1116.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 1125.952000 126.296000 1116.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 1125.952000 135.350000 1116.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 1125.952000 145.106000 1116.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 1125.952000 150.893000 1116.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 1125.952000 156.212000 1116.952000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1125.952000 159.253000 1116.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1115.452000 82.196000 1106.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 1115.452000 87.560000 1106.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 1115.452000 93.392000 1106.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 1115.452000 99.152000 1106.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 1115.452000 101.960000 1106.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 1115.452000 107.306000 1106.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 1115.452000 111.905000 1106.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 1115.452000 115.640000 1106.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 1115.452000 122.444000 1106.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 1115.452000 127.898000 1106.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 1115.452000 135.575000 1106.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 1115.452000 141.380000 1106.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 1115.452000 145.241000 1106.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 1115.452000 150.803000 1106.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 1115.452000 156.302000 1106.452000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1115.452000 159.253000 1106.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1104.952000 80.009000 1095.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 1104.952000 85.796000 1095.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 1104.952000 91.115000 1095.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 1104.952000 95.399000 1095.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 1104.952000 100.718000 1095.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 1104.952000 107.054000 1095.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 1104.952000 118.097000 1095.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 1104.952000 123.524000 1095.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 1104.952000 129.401000 1095.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 1104.952000 131.768000 1095.952000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 1104.952000 135.413000 1095.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 1104.952000 141.659000 1095.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 1104.952000 150.965000 1095.952000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 1104.952000 156.320000 1095.952000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1104.952000 159.253000 1095.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1094.452000 81.017000 1085.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 1094.452000 84.608000 1085.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 1094.452000 89.963000 1085.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 1094.452000 92.870000 1085.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 1094.452000 98.693000 1085.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 1094.452000 103.310000 1085.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 1094.452000 107.243000 1085.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 1094.452000 116.081000 1085.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 1094.452000 121.886000 1085.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 1094.452000 127.205000 1085.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 1094.452000 132.983000 1085.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 1094.452000 136.943000 1085.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 1094.452000 143.846000 1085.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 1094.452000 148.184000 1085.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 1094.452000 153.260000 1085.452000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 1094.452000 156.433000 1085.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1083.952000 79.271000 1074.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 1083.952000 85.094000 1074.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 1083.952000 90.854000 1074.952000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 1083.952000 93.653000 1074.952000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 1069.100000 0 72.100000 1069.100000 0 72.100000 1230.300000 0 72.000000 1230.300000 0 72.000000 1069.100000 0
+eoFillPath subpath 1 160.500000 1069.100000 0 160.600000 1069.100000 0 160.600000 1230.300000 0 160.500000 1230.300000 0 160.500000 1069.100000 0
+eoFillPath subpath 1 72.000000 1230.200000 0 160.600000 1230.200000 0 160.600000 1230.300000 0 72.000000 1230.300000 0 72.000000 1230.200000 0
+eoFillPath subpath 1 72.000000 1069.100000 0 160.600000 1069.100000 0 160.600000 1069.200000 0 72.000000 1069.200000 0 72.000000 1069.100000 0
+saveState
+eoClipPath subpath 1 108.000000 581.600000 0 178.900000 581.600000 0 178.900000 638.300000 0 108.000000 638.300000 0 108.000000 581.600000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 21030.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -3476.700000 0 165.500000 -3476.700000 0 165.500000 -3471.700000 0 76.900000 -3471.700000 0 76.900000 -3476.700000 0
+eoFillPath subpath 1 160.500000 -3471.800000 0 165.500000 -3471.800000 0 165.500000 -3363.000000 0 160.500000 -3363.000000 0 160.500000 -3471.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -3471.700000 0 160.500000 -3471.700000 0 160.500000 -3358.100000 0 72.000000 -3358.100000 0 72.000000 -3471.700000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -3362.448000 83.771000 -3371.448000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 -3362.448000 89.594000 -3371.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 -3362.448000 92.465000 -3371.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 -3362.448000 97.568000 -3371.448000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 -3362.448000 100.943000 -3371.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 -3362.448000 106.955000 -3371.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 -3362.448000 110.447000 -3371.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 -3362.448000 114.425000 -3371.448000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 -3362.448000 119.717000 -3371.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 -3362.448000 127.493000 -3371.448000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 -3362.448000 130.949000 -3371.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 -3362.448000 136.574000 -3371.448000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 -3362.448000 141.920000 -3371.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 -3362.448000 147.365000 -3371.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 -3362.448000 151.703000 -3371.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 -3362.448000 156.320000 -3371.448000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -3362.448000 159.153000 -3371.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -3372.948000 81.764000 -3381.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -3372.948000 85.130000 -3381.948000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 -3372.948000 88.712000 -3381.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 -3372.948000 94.022000 -3381.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 -3372.948000 98.306000 -3381.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -3372.948000 102.455000 -3381.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 -3372.948000 106.676000 -3381.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 -3372.948000 110.312000 -3381.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 -3372.948000 114.920000 -3381.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 -3372.948000 119.060000 -3381.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 -3372.948000 125.450000 -3381.948000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 -3372.948000 130.832000 -3381.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 -3372.948000 139.445000 -3381.948000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 -3372.948000 145.169000 -3381.948000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 -3372.948000 148.076000 -3381.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 -3372.948000 153.323000 -3381.948000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -3372.948000 156.433000 -3381.948000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -3383.448000 80.009000 -3392.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -3383.448000 82.871000 -3392.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 -3383.448000 88.316000 -3392.448000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 -3383.448000 94.094000 -3392.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 -3383.448000 96.947000 -3392.448000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 -3383.448000 104.948000 -3392.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 -3383.448000 113.705000 -3392.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 -3383.448000 119.492000 -3392.448000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 -3383.448000 124.811000 -3392.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 -3383.448000 132.848000 -3392.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 -3383.448000 141.605000 -3392.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 -3383.448000 144.467000 -3392.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 -3383.448000 148.103000 -3392.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 -3383.448000 150.965000 -3392.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 -3383.448000 156.311000 -3392.448000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -3383.448000 159.253000 -3392.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -3393.948000 80.999000 -3402.948000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 -3393.948000 90.539000 -3402.948000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 -3393.948000 95.318000 -3402.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 -3393.948000 99.602000 -3402.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -3393.948000 102.473000 -3402.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 -3393.948000 108.260000 -3402.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 -3393.948000 110.762000 -3402.948000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 -3393.948000 115.316000 -3402.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 -3393.948000 122.156000 -3402.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 -3393.948000 132.299000 -3402.948000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 -3393.948000 136.970000 -3402.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 -3393.948000 139.877000 -3402.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 -3393.948000 142.775000 -3402.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 -3393.948000 148.022000 -3402.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 -3393.948000 152.720000 -3402.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 -3393.948000 156.311000 -3402.948000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -3393.948000 159.253000 -3402.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -3404.448000 83.006000 -3413.448000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 -3404.448000 88.793000 -3413.448000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 -3404.448000 91.664000 -3413.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 -3404.448000 94.562000 -3413.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 -3404.448000 100.349000 -3413.448000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 -3404.448000 103.157000 -3413.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 -3404.448000 108.980000 -3413.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 -3404.448000 114.740000 -3413.448000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 -3404.448000 119.375000 -3413.448000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 -3404.448000 128.033000 -3413.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 -3404.448000 141.479000 -3413.448000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 -3404.448000 146.807000 -3413.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -3404.448000 152.684000 -3413.448000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 -3404.448000 156.293000 -3413.448000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -3404.448000 159.253000 -3413.448000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -3414.948000 79.730000 -3423.948000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 -3414.948000 84.005000 -3423.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 -3414.948000 89.423000 -3423.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 -3414.948000 98.036000 -3423.948000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 -3414.948000 121.157000 -3423.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 -3414.948000 145.115000 -3423.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 -3414.948000 151.001000 -3423.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 -3414.948000 156.320000 -3423.948000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -3414.948000 159.253000 -3423.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -3425.448000 83.285000 -3434.448000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 -3425.448000 89.099000 -3434.448000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 -3425.448000 93.401000 -3434.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 -3425.448000 98.477000 -3434.448000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 -3425.448000 103.121000 -3434.448000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 -3425.448000 105.974000 -3434.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 -3425.448000 111.320000 -3434.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 -3425.448000 115.604000 -3434.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 -3425.448000 123.857000 -3434.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 -3425.448000 136.007000 -3434.448000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 -3425.448000 141.794000 -3434.448000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 -3425.448000 144.665000 -3434.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 -3425.448000 147.464000 -3434.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 -3425.448000 153.251000 -3434.448000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -3425.448000 156.433000 -3434.448000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -3435.948000 79.271000 -3444.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -3435.948000 85.094000 -3444.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -3435.948000 90.854000 -3444.948000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 -3435.948000 96.146000 -3444.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 -3435.948000 102.302000 -3444.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 -3435.948000 107.711000 -3444.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 -3435.948000 113.048000 -3444.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 -3435.948000 119.204000 -3444.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 -3435.948000 124.991000 -3444.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 -3435.948000 130.310000 -3444.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 -3435.948000 135.647000 -3444.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 -3435.948000 144.755000 -3444.948000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 -3435.948000 153.323000 -3444.948000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -3435.948000 156.333000 -3444.948000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -3446.448000 82.160000 -3455.448000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 -3446.448000 85.067000 -3455.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 -3446.448000 89.297000 -3455.448000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 -3446.448000 94.616000 -3455.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 -3446.448000 98.747000 -3455.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 -3446.448000 106.055000 -3455.448000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 -3446.448000 109.700000 -3455.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 -3446.448000 115.055000 -3455.448000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 -3446.448000 118.601000 -3455.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 -3446.448000 124.010000 -3455.448000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 -3446.448000 128.042000 -3455.448000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 -3446.448000 135.998000 -3455.448000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 -3446.448000 141.785000 -3455.448000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 -3446.448000 144.656000 -3455.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 -3446.448000 147.554000 -3455.448000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 -3446.448000 153.341000 -3455.448000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -3446.448000 156.433000 -3455.448000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -3456.948000 79.271000 -3465.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -3456.948000 85.094000 -3465.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -3456.948000 90.854000 -3465.948000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 -3456.948000 93.743000 -3465.948000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -3471.800000 0 72.100000 -3471.800000 0 72.100000 -3358.100000 0 72.000000 -3358.100000 0 72.000000 -3471.800000 0
+eoFillPath subpath 1 160.500000 -3471.800000 0 160.600000 -3471.800000 0 160.600000 -3358.100000 0 160.500000 -3358.100000 0 160.500000 -3471.800000 0
+eoFillPath subpath 1 72.000000 -3358.200000 0 160.600000 -3358.200000 0 160.600000 -3358.100000 0 72.000000 -3358.100000 0 72.000000 -3358.200000 0
+eoFillPath subpath 1 72.000000 -3471.800000 0 160.600000 -3471.800000 0 160.600000 -3471.700000 0 72.000000 -3471.700000 0 72.000000 -3471.800000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 2717.800000 0 169.600000 2717.800000 0 169.600000 2722.800000 0 76.900000 2722.800000 0 76.900000 2717.800000 0
+eoFillPath subpath 1 164.600000 2722.700000 0 169.600000 2722.700000 0 169.600000 2838.300000 0 164.600000 2838.300000 0 164.600000 2722.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 2722.800000 0 121.400000 2722.800000 0 121.400000 2843.200000 0 72.000000 2843.200000 0 72.000000 2722.800000 0
+saveState
+eoClipPath subpath 1 72.000000 2722.700000 0 164.600000 2722.700000 0 164.600000 2843.100000 0 72.000000 2843.100000 0 72.000000 2722.700000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -187250.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 2792.700000 0 93.700000 2792.700000 0 93.700000 2811.900000 0 72.000000 2811.900000 0 72.000000 2792.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 2792.700000 0 169.600000 2792.700000 0 169.600000 2811.900000 0 93.700000 2811.900000 0 93.700000 2792.700000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 2776.000000 0 93.700000 2776.000000 0 93.700000 2792.700000 0 72.000000 2792.700000 0 72.000000 2776.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 2776.000000 0 169.600000 2776.000000 0 169.600000 2792.700000 0 93.700000 2792.700000 0 93.700000 2776.000000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 2756.800000 0 93.700000 2756.800000 0 93.700000 2776.000000 0 72.000000 2776.000000 0 72.000000 2756.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 2756.800000 0 169.600000 2756.800000 0 169.600000 2776.000000 0 93.700000 2776.000000 0 93.700000 2756.800000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 2737.600000 0 93.700000 2737.600000 0 93.700000 2756.800000 0 72.000000 2756.800000 0 72.000000 2737.600000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 2737.600000 0 169.600000 2737.600000 0 169.600000 2756.800000 0 93.700000 2756.800000 0 93.700000 2737.600000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2838.852000 82.898000 2829.852000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 2838.852000 87.200000 2829.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 2838.852000 90.809000 2829.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 2838.852000 93.671000 2829.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 2838.852000 98.315000 2829.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 2838.852000 101.906000 2829.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 2838.852000 106.514000 2829.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 2838.852000 109.754000 2829.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 2838.852000 112.868000 2829.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 2838.852000 118.691000 2829.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 2838.852000 121.850000 2829.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 2838.852000 125.702000 2829.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 2838.852000 131.588000 2829.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 2838.852000 136.907000 2829.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 2838.852000 140.039000 2829.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 2838.852000 146.078000 2829.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 2838.852000 151.442000 2829.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 2838.852000 154.349000 2829.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 2838.852000 157.148000 2829.852000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 2838.852000 160.433000 2829.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2828.352000 84.095000 2819.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 2828.352000 89.468000 2819.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 2828.352000 94.580000 2819.352000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 2828.352000 97.631000 2819.352000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 2807.952000 104.443000 2798.952000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 2807.952000 109.060000 2798.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 2807.952000 113.398000 2798.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 2807.952000 119.194000 2798.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 2807.952000 124.612000 2798.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 2807.952000 127.465000 2798.952000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 2791.252000 101.176000 2782.252000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 2791.252000 104.074000 2782.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 2791.252000 109.420000 2782.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 2791.252000 114.442000 2782.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 2791.252000 120.202000 2782.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 2791.252000 123.811000 2782.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 2791.252000 129.121000 2782.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 2791.252000 134.899000 2782.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 2791.252000 139.516000 2782.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 2791.252000 143.107000 2782.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 2791.252000 148.417000 2782.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 2791.252000 151.270000 2782.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 2791.252000 157.093000 2782.252000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 2774.552000 103.048000 2765.552000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 2774.552000 108.421000 2765.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 2774.552000 113.443000 2765.552000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 2774.552000 118.852000 2765.552000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 2774.552000 124.702000 2765.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 2774.552000 130.021000 2765.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 2774.552000 135.079000 2765.552000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 2755.352000 104.407000 2746.352000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 2755.352000 109.816000 2746.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 2755.352000 115.594000 2746.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 2755.352000 121.354000 2746.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 2755.352000 125.692000 2746.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 2755.352000 128.563000 2746.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 2755.352000 133.954000 2746.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 2755.352000 139.786000 2746.352000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 2722.700000 0 72.100000 2722.700000 0 72.100000 2843.200000 0 72.000000 2843.200000 0 72.000000 2722.700000 0
+eoFillPath subpath 1 164.600000 2722.700000 0 164.700000 2722.700000 0 164.700000 2843.200000 0 164.600000 2843.200000 0 164.600000 2722.700000 0
+eoFillPath subpath 1 72.000000 2843.100000 0 164.700000 2843.100000 0 164.700000 2843.200000 0 72.000000 2843.200000 0 72.000000 2843.100000 0
+eoFillPath subpath 1 72.000000 2722.700000 0 164.700000 2722.700000 0 164.700000 2722.800000 0 72.000000 2722.800000 0 72.000000 2722.700000 0
+eoFillPath subpath 1 91.300000 2737.600000 0 93.700000 2737.600000 0 93.700000 2811.900000 0 91.300000 2811.900000 0 91.300000 2737.600000 0
+eoFillPath subpath 1 72.000000 2756.800000 0 169.600000 2756.800000 0 169.600000 2759.200000 0 72.000000 2759.200000 0 72.000000 2756.800000 0
+eoFillPath subpath 1 72.000000 2809.500000 0 169.600000 2809.500000 0 169.600000 2811.900000 0 72.000000 2811.900000 0 72.000000 2809.500000 0
+eoFillPath subpath 1 72.000000 2737.600000 0 169.600000 2737.600000 0 169.600000 2740.000000 0 72.000000 2740.000000 0 72.000000 2737.600000 0
+saveState
+eoClipPath subpath 1 108.000000 -5128.400000 0 150.800000 -5128.400000 0 150.800000 -5084.200000 0 108.000000 -5084.200000 0 108.000000 -5128.400000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 592040.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -5978.400000 0 499.600000 -5978.400000 0 499.600000 -5973.300000 0 186.800000 -5973.300000 0 186.800000 -5978.400000 0
+eoFillPath subpath 1 494.500000 -5973.400000 0 499.600000 -5973.400000 0 499.600000 -5785.000000 0 494.500000 -5785.000000 0 494.500000 -5973.400000 0
+saveState
+eoClipPath subpath 1 181.800000 -5973.400000 0 494.500000 -5973.400000 0 494.500000 -5780.000000 0 181.800000 -5780.000000 0 181.800000 -5973.400000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -5779.900000 0 494.500000 -5779.900000 0 494.500000 -5779.900000 0 181.700000 -5779.900000 0
+eoFillPath subpath 1 181.700000 -5779.900000 0 494.500000 -5779.900000 0 494.500000 -5780.700000 0 181.700000 -5780.700000 0 181.700000 -5779.900000 0
+eoFillPath subpath 1 181.700000 -5780.700000 0 494.500000 -5780.700000 0 494.500000 -5781.400000 0 181.700000 -5781.400000 0 181.700000 -5780.700000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -5781.400000 0 494.500000 -5781.400000 0 494.500000 -5782.200000 0 181.700000 -5782.200000 0 181.700000 -5781.400000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -5782.200000 0 494.500000 -5782.200000 0 494.500000 -5783.000000 0 181.700000 -5783.000000 0 181.700000 -5782.200000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -5783.000000 0 494.500000 -5783.000000 0 494.500000 -5783.700000 0 181.700000 -5783.700000 0 181.700000 -5783.000000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -5783.700000 0 494.500000 -5783.700000 0 494.500000 -5784.500000 0 181.700000 -5784.500000 0 181.700000 -5783.700000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -5784.500000 0 494.500000 -5784.500000 0 494.500000 -5785.200000 0 181.700000 -5785.200000 0 181.700000 -5784.500000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -5785.200000 0 494.500000 -5785.200000 0 494.500000 -5786.000000 0 181.700000 -5786.000000 0 181.700000 -5785.200000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -5786.000000 0 494.500000 -5786.000000 0 494.500000 -5786.700000 0 181.700000 -5786.700000 0 181.700000 -5786.000000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -5786.700000 0 494.500000 -5786.700000 0 494.500000 -5787.500000 0 181.700000 -5787.500000 0 181.700000 -5786.700000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -5787.500000 0 494.500000 -5787.500000 0 494.500000 -5788.300000 0 181.700000 -5788.300000 0 181.700000 -5787.500000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -5788.300000 0 494.500000 -5788.300000 0 494.500000 -5789.000000 0 181.700000 -5789.000000 0 181.700000 -5788.300000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -5789.000000 0 494.500000 -5789.000000 0 494.500000 -5789.800000 0 181.700000 -5789.800000 0 181.700000 -5789.000000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -5789.800000 0 494.500000 -5789.800000 0 494.500000 -5790.500000 0 181.700000 -5790.500000 0 181.700000 -5789.800000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -5790.500000 0 494.500000 -5790.500000 0 494.500000 -5791.300000 0 181.700000 -5791.300000 0 181.700000 -5790.500000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -5791.300000 0 494.500000 -5791.300000 0 494.500000 -5792.100000 0 181.700000 -5792.100000 0 181.700000 -5791.300000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -5792.100000 0 494.500000 -5792.100000 0 494.500000 -5792.800000 0 181.700000 -5792.800000 0 181.700000 -5792.100000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -5792.800000 0 494.500000 -5792.800000 0 494.500000 -5793.600000 0 181.700000 -5793.600000 0 181.700000 -5792.800000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -5793.600000 0 494.500000 -5793.600000 0 494.500000 -5794.300000 0 181.700000 -5794.300000 0 181.700000 -5793.600000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -5794.300000 0 494.500000 -5794.300000 0 494.500000 -5795.100000 0 181.700000 -5795.100000 0 181.700000 -5794.300000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -5795.100000 0 494.500000 -5795.100000 0 494.500000 -5795.900000 0 181.700000 -5795.900000 0 181.700000 -5795.100000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -5795.900000 0 494.500000 -5795.900000 0 494.500000 -5796.600000 0 181.700000 -5796.600000 0 181.700000 -5795.900000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -5796.600000 0 494.500000 -5796.600000 0 494.500000 -5797.400000 0 181.700000 -5797.400000 0 181.700000 -5796.600000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -5797.400000 0 494.500000 -5797.400000 0 494.500000 -5798.100000 0 181.700000 -5798.100000 0 181.700000 -5797.400000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -5798.100000 0 494.500000 -5798.100000 0 494.500000 -5798.900000 0 181.700000 -5798.900000 0 181.700000 -5798.100000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -5798.900000 0 494.500000 -5798.900000 0 494.500000 -5799.600000 0 181.700000 -5799.600000 0 181.700000 -5798.900000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -5799.600000 0 494.500000 -5799.600000 0 494.500000 -5800.400000 0 181.700000 -5800.400000 0 181.700000 -5799.600000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -5800.400000 0 494.500000 -5800.400000 0 494.500000 -5801.200000 0 181.700000 -5801.200000 0 181.700000 -5800.400000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -5801.200000 0 494.500000 -5801.200000 0 494.500000 -5801.900000 0 181.700000 -5801.900000 0 181.700000 -5801.200000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -5801.900000 0 494.500000 -5801.900000 0 494.500000 -5802.700000 0 181.700000 -5802.700000 0 181.700000 -5801.900000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -5802.700000 0 494.500000 -5802.700000 0 494.500000 -5803.400000 0 181.700000 -5803.400000 0 181.700000 -5802.700000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -5803.400000 0 494.500000 -5803.400000 0 494.500000 -5804.200000 0 181.700000 -5804.200000 0 181.700000 -5803.400000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -5804.200000 0 494.500000 -5804.200000 0 494.500000 -5805.000000 0 181.700000 -5805.000000 0 181.700000 -5804.200000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -5805.000000 0 494.500000 -5805.000000 0 494.500000 -5805.700000 0 181.700000 -5805.700000 0 181.700000 -5805.000000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -5805.700000 0 494.500000 -5805.700000 0 494.500000 -5806.500000 0 181.700000 -5806.500000 0 181.700000 -5805.700000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -5806.500000 0 494.500000 -5806.500000 0 494.500000 -5807.200000 0 181.700000 -5807.200000 0 181.700000 -5806.500000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -5807.200000 0 494.500000 -5807.200000 0 494.500000 -5808.000000 0 181.700000 -5808.000000 0 181.700000 -5807.200000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -5808.000000 0 494.500000 -5808.000000 0 494.500000 -5808.800000 0 181.700000 -5808.800000 0 181.700000 -5808.000000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -5808.800000 0 494.500000 -5808.800000 0 494.500000 -5809.500000 0 181.700000 -5809.500000 0 181.700000 -5808.800000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -5809.500000 0 494.500000 -5809.500000 0 494.500000 -5810.300000 0 181.700000 -5810.300000 0 181.700000 -5809.500000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -5810.300000 0 494.500000 -5810.300000 0 494.500000 -5811.000000 0 181.700000 -5811.000000 0 181.700000 -5810.300000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -5811.000000 0 494.500000 -5811.000000 0 494.500000 -5811.800000 0 181.700000 -5811.800000 0 181.700000 -5811.000000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -5811.800000 0 494.500000 -5811.800000 0 494.500000 -5812.500000 0 181.700000 -5812.500000 0 181.700000 -5811.800000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -5812.500000 0 494.500000 -5812.500000 0 494.500000 -5813.300000 0 181.700000 -5813.300000 0 181.700000 -5812.500000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -5813.300000 0 494.500000 -5813.300000 0 494.500000 -5814.100000 0 181.700000 -5814.100000 0 181.700000 -5813.300000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -5814.100000 0 494.500000 -5814.100000 0 494.500000 -5814.800000 0 181.700000 -5814.800000 0 181.700000 -5814.100000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -5814.800000 0 494.500000 -5814.800000 0 494.500000 -5815.600000 0 181.700000 -5815.600000 0 181.700000 -5814.800000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -5815.600000 0 494.500000 -5815.600000 0 494.500000 -5816.300000 0 181.700000 -5816.300000 0 181.700000 -5815.600000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -5816.300000 0 494.500000 -5816.300000 0 494.500000 -5817.100000 0 181.700000 -5817.100000 0 181.700000 -5816.300000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -5817.100000 0 494.500000 -5817.100000 0 494.500000 -5817.900000 0 181.700000 -5817.900000 0 181.700000 -5817.100000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -5817.900000 0 494.500000 -5817.900000 0 494.500000 -5818.600000 0 181.700000 -5818.600000 0 181.700000 -5817.900000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -5818.600000 0 494.500000 -5818.600000 0 494.500000 -5819.400000 0 181.700000 -5819.400000 0 181.700000 -5818.600000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -5819.400000 0 494.500000 -5819.400000 0 494.500000 -5820.100000 0 181.700000 -5820.100000 0 181.700000 -5819.400000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -5820.100000 0 494.500000 -5820.100000 0 494.500000 -5820.900000 0 181.700000 -5820.900000 0 181.700000 -5820.100000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -5820.900000 0 494.500000 -5820.900000 0 494.500000 -5821.700000 0 181.700000 -5821.700000 0 181.700000 -5820.900000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -5821.700000 0 494.500000 -5821.700000 0 494.500000 -5822.400000 0 181.700000 -5822.400000 0 181.700000 -5821.700000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -5822.400000 0 494.500000 -5822.400000 0 494.500000 -5823.200000 0 181.700000 -5823.200000 0 181.700000 -5822.400000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -5823.200000 0 494.500000 -5823.200000 0 494.500000 -5823.900000 0 181.700000 -5823.900000 0 181.700000 -5823.200000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -5823.900000 0 494.500000 -5823.900000 0 494.500000 -5824.700000 0 181.700000 -5824.700000 0 181.700000 -5823.900000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -5824.700000 0 494.500000 -5824.700000 0 494.500000 -5825.400000 0 181.700000 -5825.400000 0 181.700000 -5824.700000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -5825.400000 0 494.500000 -5825.400000 0 494.500000 -5826.200000 0 181.700000 -5826.200000 0 181.700000 -5825.400000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -5826.200000 0 494.500000 -5826.200000 0 494.500000 -5827.000000 0 181.700000 -5827.000000 0 181.700000 -5826.200000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -5827.000000 0 494.500000 -5827.000000 0 494.500000 -5827.700000 0 181.700000 -5827.700000 0 181.700000 -5827.000000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -5827.700000 0 494.500000 -5827.700000 0 494.500000 -5828.500000 0 181.700000 -5828.500000 0 181.700000 -5827.700000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -5828.500000 0 494.500000 -5828.500000 0 494.500000 -5829.200000 0 181.700000 -5829.200000 0 181.700000 -5828.500000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -5829.200000 0 494.500000 -5829.200000 0 494.500000 -5830.000000 0 181.700000 -5830.000000 0 181.700000 -5829.200000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -5830.000000 0 494.500000 -5830.000000 0 494.500000 -5830.800000 0 181.700000 -5830.800000 0 181.700000 -5830.000000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -5830.800000 0 494.500000 -5830.800000 0 494.500000 -5831.500000 0 181.700000 -5831.500000 0 181.700000 -5830.800000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -5831.500000 0 494.500000 -5831.500000 0 494.500000 -5832.300000 0 181.700000 -5832.300000 0 181.700000 -5831.500000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -5832.300000 0 494.500000 -5832.300000 0 494.500000 -5833.000000 0 181.700000 -5833.000000 0 181.700000 -5832.300000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -5833.000000 0 494.500000 -5833.000000 0 494.500000 -5833.800000 0 181.700000 -5833.800000 0 181.700000 -5833.000000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -5833.800000 0 494.500000 -5833.800000 0 494.500000 -5834.600000 0 181.700000 -5834.600000 0 181.700000 -5833.800000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -5834.600000 0 494.500000 -5834.600000 0 494.500000 -5835.300000 0 181.700000 -5835.300000 0 181.700000 -5834.600000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -5835.300000 0 494.500000 -5835.300000 0 494.500000 -5836.100000 0 181.700000 -5836.100000 0 181.700000 -5835.300000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -5836.100000 0 494.500000 -5836.100000 0 494.500000 -5836.800000 0 181.700000 -5836.800000 0 181.700000 -5836.100000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -5836.800000 0 494.500000 -5836.800000 0 494.500000 -5837.600000 0 181.700000 -5837.600000 0 181.700000 -5836.800000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -5837.600000 0 494.500000 -5837.600000 0 494.500000 -5838.300000 0 181.700000 -5838.300000 0 181.700000 -5837.600000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -5838.300000 0 494.500000 -5838.300000 0 494.500000 -5839.100000 0 181.700000 -5839.100000 0 181.700000 -5838.300000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -5839.100000 0 494.500000 -5839.100000 0 494.500000 -5839.900000 0 181.700000 -5839.900000 0 181.700000 -5839.100000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -5839.900000 0 494.500000 -5839.900000 0 494.500000 -5840.600000 0 181.700000 -5840.600000 0 181.700000 -5839.900000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -5840.600000 0 494.500000 -5840.600000 0 494.500000 -5841.400000 0 181.700000 -5841.400000 0 181.700000 -5840.600000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -5841.400000 0 494.500000 -5841.400000 0 494.500000 -5842.100000 0 181.700000 -5842.100000 0 181.700000 -5841.400000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -5842.100000 0 494.500000 -5842.100000 0 494.500000 -5842.900000 0 181.700000 -5842.900000 0 181.700000 -5842.100000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -5842.900000 0 494.500000 -5842.900000 0 494.500000 -5843.700000 0 181.700000 -5843.700000 0 181.700000 -5842.900000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -5843.700000 0 494.500000 -5843.700000 0 494.500000 -5844.400000 0 181.700000 -5844.400000 0 181.700000 -5843.700000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -5844.400000 0 494.500000 -5844.400000 0 494.500000 -5845.200000 0 181.700000 -5845.200000 0 181.700000 -5844.400000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -5845.200000 0 494.500000 -5845.200000 0 494.500000 -5845.900000 0 181.700000 -5845.900000 0 181.700000 -5845.200000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -5845.900000 0 494.500000 -5845.900000 0 494.500000 -5846.700000 0 181.700000 -5846.700000 0 181.700000 -5845.900000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -5846.700000 0 494.500000 -5846.700000 0 494.500000 -5847.400000 0 181.700000 -5847.400000 0 181.700000 -5846.700000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -5847.400000 0 494.500000 -5847.400000 0 494.500000 -5848.200000 0 181.700000 -5848.200000 0 181.700000 -5847.400000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -5848.200000 0 494.500000 -5848.200000 0 494.500000 -5849.000000 0 181.700000 -5849.000000 0 181.700000 -5848.200000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -5849.000000 0 494.500000 -5849.000000 0 494.500000 -5849.700000 0 181.700000 -5849.700000 0 181.700000 -5849.000000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -5849.700000 0 494.500000 -5849.700000 0 494.500000 -5850.500000 0 181.700000 -5850.500000 0 181.700000 -5849.700000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -5850.500000 0 494.500000 -5850.500000 0 494.500000 -5851.200000 0 181.700000 -5851.200000 0 181.700000 -5850.500000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -5851.200000 0 494.500000 -5851.200000 0 494.500000 -5852.000000 0 181.700000 -5852.000000 0 181.700000 -5851.200000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -5852.000000 0 494.500000 -5852.000000 0 494.500000 -5852.700000 0 181.700000 -5852.700000 0 181.700000 -5852.000000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -5852.700000 0 494.500000 -5852.700000 0 494.500000 -5853.500000 0 181.700000 -5853.500000 0 181.700000 -5852.700000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -5853.500000 0 494.500000 -5853.500000 0 494.500000 -5854.300000 0 181.700000 -5854.300000 0 181.700000 -5853.500000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -5854.300000 0 494.500000 -5854.300000 0 494.500000 -5855.000000 0 181.700000 -5855.000000 0 181.700000 -5854.300000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -5855.000000 0 494.500000 -5855.000000 0 494.500000 -5855.800000 0 181.700000 -5855.800000 0 181.700000 -5855.000000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -5855.800000 0 494.500000 -5855.800000 0 494.500000 -5856.500000 0 181.700000 -5856.500000 0 181.700000 -5855.800000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -5856.500000 0 494.500000 -5856.500000 0 494.500000 -5857.300000 0 181.700000 -5857.300000 0 181.700000 -5856.500000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -5857.300000 0 494.500000 -5857.300000 0 494.500000 -5858.100000 0 181.700000 -5858.100000 0 181.700000 -5857.300000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -5858.100000 0 494.500000 -5858.100000 0 494.500000 -5858.800000 0 181.700000 -5858.800000 0 181.700000 -5858.100000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -5858.800000 0 494.500000 -5858.800000 0 494.500000 -5859.600000 0 181.700000 -5859.600000 0 181.700000 -5858.800000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -5859.600000 0 494.500000 -5859.600000 0 494.500000 -5860.300000 0 181.700000 -5860.300000 0 181.700000 -5859.600000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -5860.300000 0 494.500000 -5860.300000 0 494.500000 -5861.100000 0 181.700000 -5861.100000 0 181.700000 -5860.300000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -5861.100000 0 494.500000 -5861.100000 0 494.500000 -5861.800000 0 181.700000 -5861.800000 0 181.700000 -5861.100000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -5861.800000 0 494.500000 -5861.800000 0 494.500000 -5862.600000 0 181.700000 -5862.600000 0 181.700000 -5861.800000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -5862.600000 0 494.500000 -5862.600000 0 494.500000 -5863.400000 0 181.700000 -5863.400000 0 181.700000 -5862.600000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -5863.400000 0 494.500000 -5863.400000 0 494.500000 -5864.100000 0 181.700000 -5864.100000 0 181.700000 -5863.400000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -5864.100000 0 494.500000 -5864.100000 0 494.500000 -5864.900000 0 181.700000 -5864.900000 0 181.700000 -5864.100000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -5864.900000 0 494.500000 -5864.900000 0 494.500000 -5865.600000 0 181.700000 -5865.600000 0 181.700000 -5864.900000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -5865.600000 0 494.500000 -5865.600000 0 494.500000 -5866.400000 0 181.700000 -5866.400000 0 181.700000 -5865.600000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -5866.400000 0 494.500000 -5866.400000 0 494.500000 -5867.100000 0 181.700000 -5867.100000 0 181.700000 -5866.400000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -5867.100000 0 494.500000 -5867.100000 0 494.500000 -5867.900000 0 181.700000 -5867.900000 0 181.700000 -5867.100000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -5867.900000 0 494.500000 -5867.900000 0 494.500000 -5868.700000 0 181.700000 -5868.700000 0 181.700000 -5867.900000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -5868.700000 0 494.500000 -5868.700000 0 494.500000 -5869.400000 0 181.700000 -5869.400000 0 181.700000 -5868.700000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -5869.400000 0 494.500000 -5869.400000 0 494.500000 -5870.200000 0 181.700000 -5870.200000 0 181.700000 -5869.400000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -5870.200000 0 494.500000 -5870.200000 0 494.500000 -5870.900000 0 181.700000 -5870.900000 0 181.700000 -5870.200000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -5870.900000 0 494.500000 -5870.900000 0 494.500000 -5871.700000 0 181.700000 -5871.700000 0 181.700000 -5870.900000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -5871.700000 0 494.500000 -5871.700000 0 494.500000 -5872.500000 0 181.700000 -5872.500000 0 181.700000 -5871.700000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -5872.500000 0 494.500000 -5872.500000 0 494.500000 -5873.200000 0 181.700000 -5873.200000 0 181.700000 -5872.500000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -5873.200000 0 494.500000 -5873.200000 0 494.500000 -5874.000000 0 181.700000 -5874.000000 0 181.700000 -5873.200000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -5874.000000 0 494.500000 -5874.000000 0 494.500000 -5874.700000 0 181.700000 -5874.700000 0 181.700000 -5874.000000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -5874.700000 0 494.500000 -5874.700000 0 494.500000 -5875.500000 0 181.700000 -5875.500000 0 181.700000 -5874.700000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -5875.500000 0 494.500000 -5875.500000 0 494.500000 -5876.300000 0 181.700000 -5876.300000 0 181.700000 -5875.500000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -5876.300000 0 494.500000 -5876.300000 0 494.500000 -5877.000000 0 181.700000 -5877.000000 0 181.700000 -5876.300000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -5877.000000 0 494.500000 -5877.000000 0 494.500000 -5877.800000 0 181.700000 -5877.800000 0 181.700000 -5877.000000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -5877.800000 0 494.500000 -5877.800000 0 494.500000 -5878.500000 0 181.700000 -5878.500000 0 181.700000 -5877.800000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -5878.500000 0 494.500000 -5878.500000 0 494.500000 -5879.300000 0 181.700000 -5879.300000 0 181.700000 -5878.500000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -5879.300000 0 494.500000 -5879.300000 0 494.500000 -5880.000000 0 181.700000 -5880.000000 0 181.700000 -5879.300000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -5880.000000 0 494.500000 -5880.000000 0 494.500000 -5880.800000 0 181.700000 -5880.800000 0 181.700000 -5880.000000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -5880.800000 0 494.500000 -5880.800000 0 494.500000 -5881.600000 0 181.700000 -5881.600000 0 181.700000 -5880.800000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -5881.600000 0 494.500000 -5881.600000 0 494.500000 -5882.300000 0 181.700000 -5882.300000 0 181.700000 -5881.600000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -5882.300000 0 494.500000 -5882.300000 0 494.500000 -5883.100000 0 181.700000 -5883.100000 0 181.700000 -5882.300000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -5883.100000 0 494.500000 -5883.100000 0 494.500000 -5883.800000 0 181.700000 -5883.800000 0 181.700000 -5883.100000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -5883.800000 0 494.500000 -5883.800000 0 494.500000 -5884.600000 0 181.700000 -5884.600000 0 181.700000 -5883.800000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -5884.600000 0 494.500000 -5884.600000 0 494.500000 -5885.400000 0 181.700000 -5885.400000 0 181.700000 -5884.600000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -5885.400000 0 494.500000 -5885.400000 0 494.500000 -5886.100000 0 181.700000 -5886.100000 0 181.700000 -5885.400000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -5886.100000 0 494.500000 -5886.100000 0 494.500000 -5886.900000 0 181.700000 -5886.900000 0 181.700000 -5886.100000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -5886.900000 0 494.500000 -5886.900000 0 494.500000 -5887.600000 0 181.700000 -5887.600000 0 181.700000 -5886.900000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -5887.600000 0 494.500000 -5887.600000 0 494.500000 -5888.400000 0 181.700000 -5888.400000 0 181.700000 -5887.600000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -5888.400000 0 494.500000 -5888.400000 0 494.500000 -5889.200000 0 181.700000 -5889.200000 0 181.700000 -5888.400000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -5889.200000 0 494.500000 -5889.200000 0 494.500000 -5889.900000 0 181.700000 -5889.900000 0 181.700000 -5889.200000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -5889.900000 0 494.500000 -5889.900000 0 494.500000 -5890.700000 0 181.700000 -5890.700000 0 181.700000 -5889.900000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -5890.700000 0 494.500000 -5890.700000 0 494.500000 -5891.400000 0 181.700000 -5891.400000 0 181.700000 -5890.700000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -5891.400000 0 494.500000 -5891.400000 0 494.500000 -5892.200000 0 181.700000 -5892.200000 0 181.700000 -5891.400000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -5892.200000 0 494.500000 -5892.200000 0 494.500000 -5892.900000 0 181.700000 -5892.900000 0 181.700000 -5892.200000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -5892.900000 0 494.500000 -5892.900000 0 494.500000 -5893.700000 0 181.700000 -5893.700000 0 181.700000 -5892.900000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -5893.700000 0 494.500000 -5893.700000 0 494.500000 -5894.500000 0 181.700000 -5894.500000 0 181.700000 -5893.700000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -5894.500000 0 494.500000 -5894.500000 0 494.500000 -5895.200000 0 181.700000 -5895.200000 0 181.700000 -5894.500000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -5895.200000 0 494.500000 -5895.200000 0 494.500000 -5896.000000 0 181.700000 -5896.000000 0 181.700000 -5895.200000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -5896.000000 0 494.500000 -5896.000000 0 494.500000 -5896.700000 0 181.700000 -5896.700000 0 181.700000 -5896.000000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -5896.700000 0 494.500000 -5896.700000 0 494.500000 -5897.500000 0 181.700000 -5897.500000 0 181.700000 -5896.700000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -5897.500000 0 494.500000 -5897.500000 0 494.500000 -5898.300000 0 181.700000 -5898.300000 0 181.700000 -5897.500000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -5898.300000 0 494.500000 -5898.300000 0 494.500000 -5899.000000 0 181.700000 -5899.000000 0 181.700000 -5898.300000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -5899.000000 0 494.500000 -5899.000000 0 494.500000 -5899.800000 0 181.700000 -5899.800000 0 181.700000 -5899.000000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -5899.800000 0 494.500000 -5899.800000 0 494.500000 -5900.500000 0 181.700000 -5900.500000 0 181.700000 -5899.800000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -5900.500000 0 494.500000 -5900.500000 0 494.500000 -5901.300000 0 181.700000 -5901.300000 0 181.700000 -5900.500000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -5901.300000 0 494.500000 -5901.300000 0 494.500000 -5902.100000 0 181.700000 -5902.100000 0 181.700000 -5901.300000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -5902.100000 0 494.500000 -5902.100000 0 494.500000 -5902.800000 0 181.700000 -5902.800000 0 181.700000 -5902.100000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -5902.800000 0 494.500000 -5902.800000 0 494.500000 -5903.600000 0 181.700000 -5903.600000 0 181.700000 -5902.800000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -5903.600000 0 494.500000 -5903.600000 0 494.500000 -5904.300000 0 181.700000 -5904.300000 0 181.700000 -5903.600000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -5904.300000 0 494.500000 -5904.300000 0 494.500000 -5905.100000 0 181.700000 -5905.100000 0 181.700000 -5904.300000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -5905.100000 0 494.500000 -5905.100000 0 494.500000 -5905.800000 0 181.700000 -5905.800000 0 181.700000 -5905.100000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -5905.800000 0 494.500000 -5905.800000 0 494.500000 -5906.600000 0 181.700000 -5906.600000 0 181.700000 -5905.800000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -5906.600000 0 494.500000 -5906.600000 0 494.500000 -5907.400000 0 181.700000 -5907.400000 0 181.700000 -5906.600000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -5907.400000 0 494.500000 -5907.400000 0 494.500000 -5908.100000 0 181.700000 -5908.100000 0 181.700000 -5907.400000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -5908.100000 0 494.500000 -5908.100000 0 494.500000 -5908.900000 0 181.700000 -5908.900000 0 181.700000 -5908.100000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -5908.900000 0 494.500000 -5908.900000 0 494.500000 -5909.600000 0 181.700000 -5909.600000 0 181.700000 -5908.900000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -5909.600000 0 494.500000 -5909.600000 0 494.500000 -5910.400000 0 181.700000 -5910.400000 0 181.700000 -5909.600000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -5910.400000 0 494.500000 -5910.400000 0 494.500000 -5911.200000 0 181.700000 -5911.200000 0 181.700000 -5910.400000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -5911.200000 0 494.500000 -5911.200000 0 494.500000 -5911.900000 0 181.700000 -5911.900000 0 181.700000 -5911.200000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -5911.900000 0 494.500000 -5911.900000 0 494.500000 -5912.700000 0 181.700000 -5912.700000 0 181.700000 -5911.900000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -5912.700000 0 494.500000 -5912.700000 0 494.500000 -5913.400000 0 181.700000 -5913.400000 0 181.700000 -5912.700000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -5913.400000 0 494.500000 -5913.400000 0 494.500000 -5914.200000 0 181.700000 -5914.200000 0 181.700000 -5913.400000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -5914.200000 0 494.500000 -5914.200000 0 494.500000 -5915.000000 0 181.700000 -5915.000000 0 181.700000 -5914.200000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -5915.000000 0 494.500000 -5915.000000 0 494.500000 -5915.700000 0 181.700000 -5915.700000 0 181.700000 -5915.000000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -5915.700000 0 494.500000 -5915.700000 0 494.500000 -5916.500000 0 181.700000 -5916.500000 0 181.700000 -5915.700000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -5916.500000 0 494.500000 -5916.500000 0 494.500000 -5917.200000 0 181.700000 -5917.200000 0 181.700000 -5916.500000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -5917.200000 0 494.500000 -5917.200000 0 494.500000 -5918.000000 0 181.700000 -5918.000000 0 181.700000 -5917.200000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -5918.000000 0 494.500000 -5918.000000 0 494.500000 -5918.700000 0 181.700000 -5918.700000 0 181.700000 -5918.000000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -5918.700000 0 494.500000 -5918.700000 0 494.500000 -5919.500000 0 181.700000 -5919.500000 0 181.700000 -5918.700000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -5919.500000 0 494.500000 -5919.500000 0 494.500000 -5920.300000 0 181.700000 -5920.300000 0 181.700000 -5919.500000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -5920.300000 0 494.500000 -5920.300000 0 494.500000 -5921.000000 0 181.700000 -5921.000000 0 181.700000 -5920.300000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -5921.000000 0 494.500000 -5921.000000 0 494.500000 -5921.800000 0 181.700000 -5921.800000 0 181.700000 -5921.000000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -5921.800000 0 494.500000 -5921.800000 0 494.500000 -5922.500000 0 181.700000 -5922.500000 0 181.700000 -5921.800000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -5922.500000 0 494.500000 -5922.500000 0 494.500000 -5923.300000 0 181.700000 -5923.300000 0 181.700000 -5922.500000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -5923.300000 0 494.500000 -5923.300000 0 494.500000 -5924.100000 0 181.700000 -5924.100000 0 181.700000 -5923.300000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -5924.100000 0 494.500000 -5924.100000 0 494.500000 -5924.800000 0 181.700000 -5924.800000 0 181.700000 -5924.100000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -5924.800000 0 494.500000 -5924.800000 0 494.500000 -5925.600000 0 181.700000 -5925.600000 0 181.700000 -5924.800000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -5925.600000 0 494.500000 -5925.600000 0 494.500000 -5926.300000 0 181.700000 -5926.300000 0 181.700000 -5925.600000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -5926.300000 0 494.500000 -5926.300000 0 494.500000 -5927.100000 0 181.700000 -5927.100000 0 181.700000 -5926.300000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -5927.100000 0 494.500000 -5927.100000 0 494.500000 -5927.900000 0 181.700000 -5927.900000 0 181.700000 -5927.100000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -5927.900000 0 494.500000 -5927.900000 0 494.500000 -5928.600000 0 181.700000 -5928.600000 0 181.700000 -5927.900000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -5928.600000 0 494.500000 -5928.600000 0 494.500000 -5929.400000 0 181.700000 -5929.400000 0 181.700000 -5928.600000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -5929.400000 0 494.500000 -5929.400000 0 494.500000 -5930.100000 0 181.700000 -5930.100000 0 181.700000 -5929.400000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -5930.100000 0 494.500000 -5930.100000 0 494.500000 -5930.900000 0 181.700000 -5930.900000 0 181.700000 -5930.100000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -5930.900000 0 494.500000 -5930.900000 0 494.500000 -5931.600000 0 181.700000 -5931.600000 0 181.700000 -5930.900000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -5931.600000 0 494.500000 -5931.600000 0 494.500000 -5932.400000 0 181.700000 -5932.400000 0 181.700000 -5931.600000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -5932.400000 0 494.500000 -5932.400000 0 494.500000 -5933.200000 0 181.700000 -5933.200000 0 181.700000 -5932.400000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -5933.200000 0 494.500000 -5933.200000 0 494.500000 -5933.900000 0 181.700000 -5933.900000 0 181.700000 -5933.200000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -5933.900000 0 494.500000 -5933.900000 0 494.500000 -5934.700000 0 181.700000 -5934.700000 0 181.700000 -5933.900000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -5934.700000 0 494.500000 -5934.700000 0 494.500000 -5935.400000 0 181.700000 -5935.400000 0 181.700000 -5934.700000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -5935.400000 0 494.500000 -5935.400000 0 494.500000 -5936.200000 0 181.700000 -5936.200000 0 181.700000 -5935.400000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -5936.200000 0 494.500000 -5936.200000 0 494.500000 -5937.000000 0 181.700000 -5937.000000 0 181.700000 -5936.200000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -5937.000000 0 494.500000 -5937.000000 0 494.500000 -5937.700000 0 181.700000 -5937.700000 0 181.700000 -5937.000000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -5937.700000 0 494.500000 -5937.700000 0 494.500000 -5938.500000 0 181.700000 -5938.500000 0 181.700000 -5937.700000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -5938.500000 0 494.500000 -5938.500000 0 494.500000 -5939.200000 0 181.700000 -5939.200000 0 181.700000 -5938.500000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -5939.200000 0 494.500000 -5939.200000 0 494.500000 -5940.000000 0 181.700000 -5940.000000 0 181.700000 -5939.200000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -5940.000000 0 494.500000 -5940.000000 0 494.500000 -5940.800000 0 181.700000 -5940.800000 0 181.700000 -5940.000000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -5940.800000 0 494.500000 -5940.800000 0 494.500000 -5941.500000 0 181.700000 -5941.500000 0 181.700000 -5940.800000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -5941.500000 0 494.500000 -5941.500000 0 494.500000 -5942.300000 0 181.700000 -5942.300000 0 181.700000 -5941.500000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -5942.300000 0 494.500000 -5942.300000 0 494.500000 -5943.000000 0 181.700000 -5943.000000 0 181.700000 -5942.300000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -5943.000000 0 494.500000 -5943.000000 0 494.500000 -5943.800000 0 181.700000 -5943.800000 0 181.700000 -5943.000000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -5943.800000 0 494.500000 -5943.800000 0 494.500000 -5944.500000 0 181.700000 -5944.500000 0 181.700000 -5943.800000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -5944.500000 0 494.500000 -5944.500000 0 494.500000 -5945.300000 0 181.700000 -5945.300000 0 181.700000 -5944.500000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -5945.300000 0 494.500000 -5945.300000 0 494.500000 -5946.100000 0 181.700000 -5946.100000 0 181.700000 -5945.300000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -5946.100000 0 494.500000 -5946.100000 0 494.500000 -5946.800000 0 181.700000 -5946.800000 0 181.700000 -5946.100000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -5946.800000 0 494.500000 -5946.800000 0 494.500000 -5947.600000 0 181.700000 -5947.600000 0 181.700000 -5946.800000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -5947.600000 0 494.500000 -5947.600000 0 494.500000 -5948.300000 0 181.700000 -5948.300000 0 181.700000 -5947.600000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -5948.300000 0 494.500000 -5948.300000 0 494.500000 -5949.100000 0 181.700000 -5949.100000 0 181.700000 -5948.300000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -5949.100000 0 494.500000 -5949.100000 0 494.500000 -5949.900000 0 181.700000 -5949.900000 0 181.700000 -5949.100000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -5949.900000 0 494.500000 -5949.900000 0 494.500000 -5950.600000 0 181.700000 -5950.600000 0 181.700000 -5949.900000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -5950.600000 0 494.500000 -5950.600000 0 494.500000 -5951.400000 0 181.700000 -5951.400000 0 181.700000 -5950.600000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -5951.400000 0 494.500000 -5951.400000 0 494.500000 -5952.100000 0 181.700000 -5952.100000 0 181.700000 -5951.400000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -5952.100000 0 494.500000 -5952.100000 0 494.500000 -5952.900000 0 181.700000 -5952.900000 0 181.700000 -5952.100000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -5952.900000 0 494.500000 -5952.900000 0 494.500000 -5953.700000 0 181.700000 -5953.700000 0 181.700000 -5952.900000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -5953.700000 0 494.500000 -5953.700000 0 494.500000 -5954.400000 0 181.700000 -5954.400000 0 181.700000 -5953.700000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -5954.400000 0 494.500000 -5954.400000 0 494.500000 -5955.200000 0 181.700000 -5955.200000 0 181.700000 -5954.400000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -5955.200000 0 494.500000 -5955.200000 0 494.500000 -5955.900000 0 181.700000 -5955.900000 0 181.700000 -5955.200000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -5955.900000 0 494.500000 -5955.900000 0 494.500000 -5956.700000 0 181.700000 -5956.700000 0 181.700000 -5955.900000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -5956.700000 0 494.500000 -5956.700000 0 494.500000 -5957.400000 0 181.700000 -5957.400000 0 181.700000 -5956.700000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -5957.400000 0 494.500000 -5957.400000 0 494.500000 -5958.200000 0 181.700000 -5958.200000 0 181.700000 -5957.400000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -5958.200000 0 494.500000 -5958.200000 0 494.500000 -5959.000000 0 181.700000 -5959.000000 0 181.700000 -5958.200000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -5959.000000 0 494.500000 -5959.000000 0 494.500000 -5959.700000 0 181.700000 -5959.700000 0 181.700000 -5959.000000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -5959.700000 0 494.500000 -5959.700000 0 494.500000 -5960.500000 0 181.700000 -5960.500000 0 181.700000 -5959.700000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -5960.500000 0 494.500000 -5960.500000 0 494.500000 -5961.200000 0 181.700000 -5961.200000 0 181.700000 -5960.500000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -5961.200000 0 494.500000 -5961.200000 0 494.500000 -5962.000000 0 181.700000 -5962.000000 0 181.700000 -5961.200000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -5962.000000 0 494.500000 -5962.000000 0 494.500000 -5962.800000 0 181.700000 -5962.800000 0 181.700000 -5962.000000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -5962.800000 0 494.500000 -5962.800000 0 494.500000 -5963.500000 0 181.700000 -5963.500000 0 181.700000 -5962.800000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -5963.500000 0 494.500000 -5963.500000 0 494.500000 -5964.300000 0 181.700000 -5964.300000 0 181.700000 -5963.500000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -5964.300000 0 494.500000 -5964.300000 0 494.500000 -5965.000000 0 181.700000 -5965.000000 0 181.700000 -5964.300000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -5965.000000 0 494.500000 -5965.000000 0 494.500000 -5965.800000 0 181.700000 -5965.800000 0 181.700000 -5965.000000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -5965.800000 0 494.500000 -5965.800000 0 494.500000 -5966.600000 0 181.700000 -5966.600000 0 181.700000 -5965.800000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -5966.600000 0 494.500000 -5966.600000 0 494.500000 -5967.300000 0 181.700000 -5967.300000 0 181.700000 -5966.600000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -5967.300000 0 494.500000 -5967.300000 0 494.500000 -5968.100000 0 181.700000 -5968.100000 0 181.700000 -5967.300000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -5968.100000 0 494.500000 -5968.100000 0 494.500000 -5968.800000 0 181.700000 -5968.800000 0 181.700000 -5968.100000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -5968.800000 0 494.500000 -5968.800000 0 494.500000 -5969.600000 0 181.700000 -5969.600000 0 181.700000 -5968.800000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -5969.600000 0 494.500000 -5969.600000 0 494.500000 -5970.300000 0 181.700000 -5970.300000 0 181.700000 -5969.600000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -5970.300000 0 494.500000 -5970.300000 0 494.500000 -5971.100000 0 181.700000 -5971.100000 0 181.700000 -5970.300000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -5971.100000 0 494.500000 -5971.100000 0 494.500000 -5971.900000 0 181.700000 -5971.900000 0 181.700000 -5971.100000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -5971.900000 0 494.500000 -5971.900000 0 494.500000 -5972.600000 0 181.700000 -5972.600000 0 181.700000 -5971.900000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -5972.600000 0 494.500000 -5972.600000 0 494.500000 -5973.400000 0 181.700000 -5973.400000 0 181.700000 -5972.600000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -5973.300000 0 181.800000 -5973.300000 0 181.800000 -5780.000000 0 494.400000 -5780.000000 0 494.400000 -5973.300000 0 338.100000 -5973.300000 0
+strokePath subpath 1 338.100000 -5973.300000 0 181.800000 -5973.300000 0 181.800000 -5780.000000 0 494.400000 -5780.000000 0 494.400000 -5973.300000 0 338.100000 -5973.300000 0
+saveState
+updateCtm 11420.000000 0.000000 0.000000 -8760.000000 20530.000000 668930.000000
+drawSoftMaskedImage 1143 877 1143 877 JPEG 71324 PPM 3007249
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -5934.276000 215.488000 -5942.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -5934.276000 220.592000 -5942.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -5934.276000 225.696000 -5942.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -5934.276000 230.800000 -5942.276000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -5941.876000 241.388000 -5949.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -5941.876000 246.492000 -5949.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -5941.876000 251.596000 -5949.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -5941.876000 256.700000 -5949.876000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -5949.576000 267.188000 -5957.576000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -5949.576000 272.292000 -5957.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -5949.576000 277.396000 -5957.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -5949.576000 282.500000 -5957.576000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -5957.076000 293.088000 -5965.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -5957.076000 298.192000 -5965.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -5957.076000 303.296000 -5965.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -5957.076000 308.400000 -5965.076000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -5919.276000 202.588000 -5927.276000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -5899.976000 201.688000 -5907.976000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -5880.676000 195.788000 -5888.676000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -5880.676000 200.892000 -5888.676000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -5861.276000 194.888000 -5869.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -5861.276000 199.992000 -5869.276000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -5841.976000 193.988000 -5849.976000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -5841.976000 199.092000 -5849.976000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -5822.676000 193.088000 -5830.676000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -5822.676000 198.192000 -5830.676000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -5950.576000 330.188000 -5958.576000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -5950.576000 332.716000 -5958.576000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -5950.576000 337.596000 -5958.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -5950.576000 341.396000 -5958.576000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -5950.576000 346.036000 -5958.576000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -5950.576000 350.900000 -5958.576000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -5950.576000 355.972000 -5958.576000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -5950.576000 359.196000 -5958.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -5950.576000 362.196000 -5958.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -5950.576000 367.404000 -5958.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -5950.576000 371.876000 -5958.576000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -5950.576000 375.052000 -5958.576000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -5931.076000 361.172000 -5939.076000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -5931.076000 364.340000 -5939.076000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -5931.076000 367.396000 -5939.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -5931.076000 372.604000 -5939.076000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -5931.076000 379.348000 -5939.076000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -5931.076000 384.484000 -5939.076000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -5931.076000 389.436000 -5939.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -5931.076000 392.108000 -5939.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -5931.076000 395.708000 -5939.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -5931.076000 397.540000 -5939.076000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -5931.076000 402.444000 -5939.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -5931.076000 406.788000 -5939.076000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -5911.476000 392.972000 -5919.476000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -5911.476000 398.076000 -5919.476000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -5911.476000 403.180000 -5919.476000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -5911.476000 405.428000 -5919.476000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -5911.476000 410.332000 -5919.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -5911.476000 414.476000 -5919.476000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -5783.908000 305.808000 -5797.908000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -5783.908000 314.138000 -5797.908000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -5783.908000 320.788000 -5797.908000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -5783.908000 328.698000 -5797.908000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -5783.908000 336.972000 -5797.908000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -5783.908000 344.182000 -5797.908000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -5783.908000 349.810000 -5797.908000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -5783.908000 354.234000 -5797.908000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -5783.908000 362.718000 -5797.908000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -5783.908000 367.870000 -5797.908000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -5783.908000 372.322000 -5797.908000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -5783.908000 382.080000 -5797.908000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -5783.908000 388.772000 -5797.908000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -5783.908000 397.802000 -5797.908000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -5783.908000 402.254000 -5797.908000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -5783.908000 407.896000 -5797.908000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -5906.800000 0 424.300000 -5906.800000 0 424.300000 -5846.100000 0 493.600000 -5846.100000 0 493.600000 -5906.800000 0 458.900000 -5906.800000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -5855.700000 0 428.900000 -5855.700000 0 428.900000 -5849.700000 0 434.800000 -5849.700000 0 434.800000 -5855.700000 0 431.900000 -5855.700000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -5866.800000 0 428.900000 -5866.800000 0 428.900000 -5860.800000 0 434.800000 -5860.800000 0 434.800000 -5866.800000 0 431.900000 -5866.800000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -5877.900000 0 428.900000 -5877.900000 0 428.900000 -5871.900000 0 434.800000 -5871.900000 0 434.800000 -5877.900000 0 431.900000 -5877.900000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -5889.000000 0 428.900000 -5889.000000 0 428.900000 -5883.000000 0 434.800000 -5883.000000 0 434.800000 -5889.000000 0 431.900000 -5889.000000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -5900.100000 0 428.900000 -5900.100000 0 428.900000 -5894.100000 0 434.800000 -5894.100000 0 434.800000 -5900.100000 0 431.900000 -5900.100000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -5848.576000 443.288000 -5856.576000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -5848.576000 445.816000 -5856.576000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -5848.576000 450.600000 -5856.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -5848.576000 454.496000 -5856.576000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -5848.576000 459.136000 -5856.576000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -5848.576000 464.000000 -5856.576000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -5848.576000 468.976000 -5856.576000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -5848.576000 472.304000 -5856.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -5848.576000 475.208000 -5856.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -5848.576000 480.520000 -5856.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -5848.576000 484.992000 -5856.576000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -5848.576000 488.168000 -5856.576000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -5859.676000 443.352000 -5867.676000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -5859.676000 447.920000 -5867.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -5859.676000 452.976000 -5867.676000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -5859.676000 457.400000 -5867.676000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -5859.676000 462.472000 -5867.676000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -5859.676000 465.800000 -5867.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -5859.676000 468.904000 -5867.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -5859.676000 473.816000 -5867.676000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -5859.676000 478.888000 -5867.676000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -5859.676000 482.064000 -5867.676000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -5870.776000 442.872000 -5878.776000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -5870.776000 446.040000 -5878.776000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -5870.776000 448.992000 -5878.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -5870.776000 454.304000 -5878.776000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -5870.776000 461.048000 -5878.776000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -5870.776000 466.184000 -5878.776000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -5870.776000 471.136000 -5878.776000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -5870.776000 473.808000 -5878.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -5870.776000 477.408000 -5878.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -5870.776000 479.240000 -5878.776000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -5870.776000 484.144000 -5878.776000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -5870.776000 488.488000 -5878.776000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -5881.876000 443.384000 -5889.876000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -5881.876000 448.464000 -5889.876000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -5881.876000 453.424000 -5889.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -5881.876000 456.696000 -5889.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -5881.876000 459.800000 -5889.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -5881.876000 462.032000 -5889.876000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -5881.876000 466.936000 -5889.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -5881.876000 471.080000 -5889.876000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -5892.976000 443.272000 -5900.976000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -5892.976000 448.376000 -5900.976000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -5892.976000 453.480000 -5900.976000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -5892.976000 455.728000 -5900.976000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -5892.976000 460.632000 -5900.976000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -5892.976000 464.776000 -5900.976000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -8538.000000 0 114.800000 -8538.000000 0 114.800000 -8495.200000 0 72.000000 -8495.200000 0 72.000000 -8538.000000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 932990.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 546.200000 0 504.000000 546.200000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 546.200000 0
+eoFillPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 245.800000 0 72.000000 245.800000 0 72.000000 72.000000 0
+eoFillPath subpath 1 72.000000 245.800000 0 121.400000 245.800000 0 121.400000 546.200000 0 72.000000 546.200000 0 72.000000 245.800000 0
+eoFillPath subpath 1 454.500000 245.800000 0 504.000000 245.800000 0 504.000000 546.200000 0 454.500000 546.200000 0 454.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 701.300000 0 504.000000 701.300000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 701.300000 0
+eoFillPath subpath 1 72.000000 72.200000 0 504.000000 72.200000 0 504.000000 86.100000 0 72.000000 86.100000 0 72.000000 72.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 331.200000 719.948000 344.992000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 345.008000 719.948000 354.464000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 354.512000 719.948000 359.584000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.616000 719.948000 371.632000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 371.616000 719.948000 381.392000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 381.424000 719.948000 391.552000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 391.520000 719.948000 399.840000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 399.824000 719.948000 409.664000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 409.632000 719.948000 414.704000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 414.736000 719.948000 420.496000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 420.544000 719.948000 425.616000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 425.600000 719.948000 434.800000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 433.600000 719.948000 438.032000 703.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 438.000000 719.948000 444.576000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 444.608000 719.948000 452.928000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 452.912000 719.948000 459.184000 703.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 459.216000 719.948000 464.288000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 464.320000 719.948000 473.520000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 473.520000 719.948000 477.952000 703.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 477.920000 719.948000 487.696000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 487.728000 719.948000 497.504000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 497.536000 719.948000 504.112000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 672.936000 190.312000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 672.936000 198.028000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 672.936000 205.192000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 206.800000 672.936000 210.604000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 212.296000 672.936000 216.124000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 216.100000 672.936000 223.252000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 223.300000 672.936000 229.036000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 229.000000 672.936000 236.680000 660.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 236.704000 672.936000 243.796000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 245.500000 672.936000 249.304000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 250.996000 672.936000 258.220000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 258.196000 672.936000 264.964000 660.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 265.000000 672.936000 272.152000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 272.200000 672.936000 276.028000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 277.600000 672.936000 281.404000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 283.096000 672.936000 287.908000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 287.896000 672.936000 295.048000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 295.096000 672.936000 302.776000 660.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 302.800000 672.936000 306.628000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 306.604000 672.936000 313.696000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 313.708000 672.936000 317.512000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 319.204000 672.936000 323.008000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 324.700000 672.936000 332.920000 660.936000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 333.004000 672.936000 336.832000 660.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 336.808000 672.936000 344.536000 660.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 344.608000 672.936000 351.328000 660.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 351.208000 672.936000 358.300000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 359.908000 672.936000 363.712000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.512000 672.936000 370.324000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 370.312000 672.936000 378.040000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 378.112000 672.936000 385.204000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 385.216000 672.936000 391.984000 660.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 393.616000 672.936000 397.420000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 399.112000 672.936000 406.264000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 406.312000 672.936000 412.048000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 412.012000 672.936000 419.104000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 420.712000 672.936000 424.516000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.208000 672.936000 433.360000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 433.408000 672.936000 437.236000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 437.212000 672.936000 441.040000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 442.708000 672.936000 446.512000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 448.312000 672.936000 452.752000 660.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 452.716000 672.936000 458.452000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 458.416000 672.936000 465.640000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 465.712000 672.936000 477.088000 660.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 478.612000 672.936000 482.416000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.108000 672.936000 488.920000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.004000 672.936000 496.732000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.708000 672.936000 503.800000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 672.936000 507.904000 660.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 659.036000 191.656000 647.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 659.036000 198.856000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 198.904000 659.036000 210.280000 647.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 210.304000 659.036000 217.396000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 217.408000 659.036000 221.212000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 221.212000 659.036000 232.588000 647.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 232.612000 659.036000 239.764000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 239.812000 659.036000 247.540000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 247.516000 659.036000 255.244000 647.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 255.220000 659.036000 259.660000 647.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 259.624000 659.036000 266.776000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 266.824000 659.036000 273.544000 647.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 273.520000 659.036000 278.332000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 278.320000 659.036000 286.048000 647.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 286.024000 659.036000 291.760000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 291.724000 659.036000 298.816000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 298.828000 659.036000 304.564000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 303.232000 659.036000 307.036000 647.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 307.036000 659.036000 310.840000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.840000 659.036000 315.652000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 315.640000 659.036000 323.368000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 323.344000 659.036000 330.568000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 330.544000 659.036000 338.272000 647.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 338.248000 659.036000 345.928000 647.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 345.952000 659.036000 353.680000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 353.656000 659.036000 357.460000 647.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 357.460000 659.036000 361.264000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.264000 659.036000 366.076000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 366.064000 659.036000 373.792000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 373.768000 659.036000 380.860000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 380.872000 659.036000 387.640000 647.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 387.676000 659.036000 391.480000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.480000 659.036000 402.856000 647.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 402.880000 659.036000 410.032000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 410.080000 659.036000 414.892000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 414.880000 659.036000 421.600000 647.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 421.576000 659.036000 429.304000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 429.280000 659.036000 433.084000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 433.084000 659.036000 443.344000 647.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 443.380000 659.036000 450.472000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 450.484000 659.036000 454.312000 647.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 454.288000 659.036000 458.116000 647.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 458.092000 659.036000 461.896000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 639.136000 193.420000 627.136000 1.000000 0.000000 0.000000 1.000000 Y
+drawChar 192.400000 639.136000 199.624000 627.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 199.600000 639.136000 207.328000 627.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 207.604000 639.136000 211.408000 627.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 211.804000 639.136000 222.064000 627.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 222.100000 639.136000 229.324000 627.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 229.300000 639.136000 237.028000 627.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 237.100000 639.136000 240.928000 627.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 240.904000 639.136000 248.584000 627.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 248.908000 639.136000 252.712000 627.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 253.108000 639.136000 260.200000 627.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 260.212000 639.136000 266.968000 627.136000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 267.016000 639.136000 274.696000 627.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 274.720000 639.136000 281.812000 627.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 281.824000 639.136000 288.544000 627.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 288.520000 639.136000 293.332000 627.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 293.620000 639.136000 297.424000 627.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 297.820000 639.136000 302.632000 627.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 302.620000 639.136000 309.844000 627.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 310.216000 639.136000 314.020000 627.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 314.812000 639.136000 322.804000 627.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 322.408000 639.136000 330.136000 627.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 330.112000 639.136000 337.792000 627.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 338.116000 639.136000 341.920000 627.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 342.316000 639.136000 349.408000 627.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.420000 639.136000 356.176000 627.136000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 356.224000 639.136000 363.904000 627.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 363.928000 639.136000 371.020000 627.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 371.032000 639.136000 378.760000 627.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 378.736000 639.136000 384.892000 627.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 384.832000 639.136000 388.660000 627.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 388.732000 639.136000 395.500000 627.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 395.536000 639.136000 402.628000 627.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.640000 639.136000 406.444000 627.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 406.744000 639.136000 410.548000 627.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 410.944000 639.136000 418.096000 627.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 418.144000 639.136000 425.872000 627.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 425.848000 639.136000 430.660000 627.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 430.648000 639.136000 434.476000 627.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 434.452000 639.136000 442.132000 627.136000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 442.156000 639.136000 449.884000 627.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 449.956000 639.136000 457.048000 627.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 457.660000 639.136000 461.464000 627.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 461.700000 639.136000 469.380000 627.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 469.404000 639.136000 476.628000 627.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 476.604000 639.136000 482.340000 627.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 482.304000 639.136000 489.024000 627.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 489.000000 639.136000 496.092000 627.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 496.104000 639.136000 499.932000 627.136000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 639.136000 504.044000 627.136000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 625.236000 192.652000 613.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 625.236000 196.528000 613.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 196.504000 625.236000 204.232000 613.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 206.008000 625.236000 209.812000 613.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 211.612000 625.236000 216.424000 613.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 216.508000 625.236000 223.732000 613.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 225.508000 625.236000 229.312000 613.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 231.208000 625.236000 242.584000 613.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 242.608000 625.236000 249.760000 613.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 249.712000 625.236000 254.524000 613.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 254.608000 625.236000 261.328000 613.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 261.304000 625.236000 269.032000 613.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 270.808000 625.236000 274.612000 613.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 276.412000 625.236000 281.224000 613.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 281.212000 625.236000 288.940000 613.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 289.012000 625.236000 296.104000 613.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.916000 625.236000 301.720000 613.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 303.616000 625.236000 310.708000 613.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 310.720000 625.236000 317.476000 613.236000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 317.524000 625.236000 325.204000 613.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 325.228000 625.236000 332.320000 613.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 332.332000 625.236000 340.060000 613.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 340.036000 625.236000 346.192000 613.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 346.132000 625.236000 349.960000 613.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 350.032000 625.236000 356.800000 613.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 356.836000 625.236000 363.928000 613.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 363.940000 625.236000 367.744000 613.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 369.544000 625.236000 373.348000 613.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 375.148000 625.236000 382.300000 613.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 382.348000 625.236000 390.076000 613.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 390.052000 625.236000 394.864000 613.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 394.852000 625.236000 398.680000 613.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 398.656000 625.236000 406.336000 613.236000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 406.360000 625.236000 414.088000 613.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 414.160000 625.236000 421.252000 613.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 422.956000 625.236000 426.760000 613.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 428.656000 625.236000 433.468000 613.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 433.552000 625.236000 440.704000 613.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 440.752000 625.236000 448.432000 613.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 448.348000 625.236000 452.176000 613.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 452.248000 625.236000 459.340000 613.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 459.244000 625.236000 463.048000 613.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.944000 625.236000 468.748000 613.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.548000 625.236000 479.356000 613.236000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 479.344000 625.236000 487.072000 613.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 487.048000 625.236000 491.860000 613.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 493.648000 625.236000 497.452000 613.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 499.348000 625.236000 504.088000 613.236000 1.000000 0.000000 0.000000 1.000000 I
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 625.236000 507.904000 613.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 611.336000 193.180000 599.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 193.204000 611.336000 200.296000 599.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 200.308000 611.336000 208.036000 599.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 208.012000 611.336000 215.104000 599.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 215.116000 611.336000 220.852000 599.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 220.816000 611.336000 227.968000 599.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.016000 611.336000 231.844000 599.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 231.820000 611.336000 235.648000 599.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 235.720000 611.336000 242.488000 599.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 243.220000 611.336000 247.024000 599.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.816000 611.336000 255.496000 599.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 255.520000 611.336000 261.256000 599.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 261.220000 611.336000 268.312000 599.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 268.324000 611.336000 272.764000 599.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 272.824000 611.336000 279.916000 599.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 279.928000 611.336000 285.664000 599.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 286.432000 611.336000 290.236000 599.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 291.028000 611.336000 295.840000 599.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 295.828000 611.336000 303.556000 599.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 303.628000 611.336000 310.720000 599.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 311.332000 611.336000 315.136000 599.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.036000 611.336000 327.412000 599.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 327.340000 611.336000 334.564000 599.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 334.636000 611.336000 342.316000 599.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 342.232000 611.336000 349.324000 599.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.336000 611.336000 355.072000 599.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 355.036000 611.336000 362.764000 599.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 363.640000 611.336000 367.444000 599.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.236000 611.336000 374.392000 599.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 374.440000 611.336000 379.252000 599.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 379.240000 611.336000 386.008000 599.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 386.044000 611.336000 389.872000 599.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 389.848000 611.336000 396.940000 599.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 397.648000 611.336000 401.452000 599.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.244000 611.336000 409.468000 599.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 409.540000 611.336000 413.980000 599.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 414.736000 611.336000 418.540000 599.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.332000 611.336000 424.144000 599.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 424.132000 611.336000 431.860000 599.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 431.932000 611.336000 439.024000 599.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 439.732000 611.336000 443.536000 599.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 444.328000 611.336000 452.056000 599.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 452.032000 611.336000 459.760000 599.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 459.832000 611.336000 467.512000 599.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 467.428000 611.336000 473.164000 599.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 473.224000 611.336000 480.316000 599.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 480.328000 611.336000 485.140000 599.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 485.128000 611.336000 492.220000 599.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 492.232000 611.336000 499.960000 599.336000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 611.336000 504.044000 599.336000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 597.436000 190.312000 585.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 597.436000 194.128000 585.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 194.200000 597.436000 201.424000 585.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 201.400000 597.436000 209.128000 585.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 209.104000 597.436000 215.260000 585.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 215.308000 597.436000 219.112000 585.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 219.712000 597.436000 223.516000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 224.116000 597.436000 234.376000 585.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 234.412000 597.436000 242.140000 585.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 242.116000 597.436000 245.944000 585.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 245.920000 597.436000 250.732000 585.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 250.816000 597.436000 257.908000 585.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 259.120000 597.436000 262.924000 585.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 262.900000 597.436000 270.580000 585.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 270.604000 597.436000 277.828000 585.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 277.804000 597.436000 285.532000 585.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 285.508000 597.436000 292.600000 585.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 293.212000 597.436000 297.016000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 297.712000 597.436000 304.432000 585.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 304.408000 597.436000 312.136000 585.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 312.112000 597.436000 315.940000 585.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 315.916000 597.436000 323.644000 585.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 323.620000 597.436000 330.772000 585.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 330.820000 597.436000 334.624000 585.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 335.224000 597.436000 339.028000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.628000 597.436000 344.068000 585.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 344.032000 597.436000 349.768000 585.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 349.828000 597.436000 357.052000 585.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 357.124000 597.436000 368.500000 585.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 369.028000 597.436000 372.832000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 373.432000 597.436000 382.180000 585.436000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 382.228000 597.436000 389.956000 585.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 389.932000 597.436000 397.612000 585.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 397.636000 597.436000 401.464000 585.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 401.536000 597.436000 408.688000 585.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 408.736000 597.436000 416.464000 585.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 416.332000 597.436000 424.012000 585.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 424.636000 597.436000 428.440000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.040000 597.436000 436.192000 585.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 436.240000 597.436000 442.396000 585.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 442.936000 597.436000 446.740000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 447.436000 597.436000 457.696000 585.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 457.732000 597.436000 464.824000 585.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 464.836000 597.436000 468.664000 585.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 468.640000 597.436000 472.468000 585.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 472.444000 597.436000 476.248000 585.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.848000 597.436000 480.652000 585.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.252000 597.436000 489.244000 585.436000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 489.256000 597.436000 496.984000 585.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.960000 597.436000 504.052000 585.436000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 597.436000 507.904000 585.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 583.536000 191.656000 571.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 583.536000 195.532000 571.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 195.508000 583.536000 199.336000 571.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 199.312000 583.536000 206.080000 571.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 206.116000 583.536000 213.208000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 213.220000 583.536000 218.956000 571.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 219.016000 583.536000 229.276000 571.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 229.216000 583.536000 236.368000 571.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 236.416000 583.536000 242.152000 571.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 242.116000 583.536000 249.208000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 250.816000 583.536000 254.620000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.216000 583.536000 260.044000 571.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 260.020000 583.536000 266.176000 571.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 266.224000 583.536000 273.952000 571.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 274.024000 583.536000 277.312000 571.536000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 277.324000 583.536000 282.136000 571.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 283.720000 583.536000 287.524000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.216000 583.536000 294.952000 571.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 294.916000 583.536000 302.008000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 302.020000 583.536000 309.172000 571.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 309.220000 583.536000 313.048000 571.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 314.620000 583.536000 318.424000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 320.020000 583.536000 326.176000 571.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 326.224000 583.536000 330.052000 571.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 330.028000 583.536000 333.856000 571.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 333.832000 583.536000 340.600000 571.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 340.636000 583.536000 347.728000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 347.740000 583.536000 353.476000 571.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 352.144000 583.536000 355.948000 571.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 357.640000 583.536000 361.444000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 363.136000 583.536000 370.816000 571.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 370.840000 583.536000 378.568000 571.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 378.544000 583.536000 383.356000 571.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 384.940000 583.536000 388.744000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 390.340000 583.536000 395.152000 571.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 395.236000 583.536000 399.064000 571.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 399.040000 583.536000 410.416000 571.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 410.440000 583.536000 417.532000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 417.544000 583.536000 421.372000 571.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 421.444000 583.536000 428.536000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 428.548000 583.536000 434.704000 571.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 434.644000 583.536000 440.800000 571.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 440.848000 583.536000 444.676000 571.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 444.652000 583.536000 451.420000 571.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 453.052000 583.536000 456.856000 571.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 458.548000 583.536000 465.640000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 465.652000 583.536000 469.480000 571.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 469.456000 583.536000 476.548000 571.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 476.560000 583.536000 484.240000 571.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 484.264000 583.536000 491.416000 571.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 491.368000 583.536000 499.096000 571.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 499.072000 583.536000 503.884000 571.536000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 583.536000 507.904000 571.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 569.636000 191.656000 557.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 569.636000 196.516000 557.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 196.504000 569.636000 203.656000 557.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 203.608000 569.636000 207.436000 557.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 207.508000 569.636000 215.236000 557.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 215.212000 569.636000 219.040000 557.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 219.016000 569.636000 226.108000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 226.120000 569.636000 232.276000 557.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 232.324000 569.636000 238.480000 557.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 238.720000 569.636000 242.524000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 242.824000 569.636000 248.980000 557.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 249.028000 569.636000 253.840000 557.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 253.828000 569.636000 260.920000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 260.932000 569.636000 268.024000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 268.036000 569.636000 271.864000 557.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 272.140000 569.636000 275.944000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 276.244000 569.636000 282.964000 557.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 282.940000 569.636000 290.668000 557.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 290.644000 569.636000 295.456000 557.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 295.540000 569.636000 299.368000 557.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 299.344000 569.636000 306.436000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 306.448000 569.636000 312.184000 557.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 312.148000 569.636000 318.916000 557.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 317.344000 569.636000 321.148000 557.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 321.448000 569.636000 325.252000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 325.552000 569.636000 334.576000 557.636000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 334.552000 569.636000 341.644000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 341.656000 569.636000 348.808000 557.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 348.856000 569.636000 352.684000 557.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 352.960000 569.636000 356.764000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.064000 569.636000 363.220000 557.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 363.268000 569.636000 367.096000 557.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 367.072000 569.636000 370.900000 557.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 370.876000 569.636000 377.644000 557.636000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 377.680000 569.636000 384.772000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 384.784000 569.636000 390.520000 557.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 390.784000 569.636000 394.588000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 394.888000 569.636000 406.264000 557.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 406.288000 569.636000 414.016000 557.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 413.992000 569.636000 420.148000 557.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 420.196000 569.636000 425.008000 557.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 425.296000 569.636000 429.100000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.400000 569.636000 437.080000 557.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 437.104000 569.636000 444.196000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 444.400000 569.636000 448.204000 557.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 448.504000 569.636000 454.240000 557.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 454.204000 569.636000 461.296000 557.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 461.308000 569.636000 468.988000 557.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 469.012000 569.636000 476.740000 557.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 476.716000 569.636000 480.544000 557.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 480.616000 569.636000 487.768000 557.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 487.720000 569.636000 493.456000 557.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 493.516000 569.636000 497.344000 557.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 497.320000 569.636000 504.088000 557.636000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 569.636000 507.904000 557.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 555.736000 193.180000 543.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 193.204000 555.736000 200.428000 543.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 200.404000 555.736000 204.232000 543.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 204.208000 555.736000 208.036000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 208.108000 555.736000 214.264000 543.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 214.204000 555.736000 221.932000 543.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 222.004000 555.736000 229.096000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 229.108000 555.736000 236.788000 543.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 236.812000 555.736000 240.616000 543.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 240.916000 555.736000 244.720000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.116000 555.736000 252.268000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 252.316000 555.736000 260.044000 543.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 260.020000 555.736000 267.700000 543.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 267.916000 555.736000 271.720000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 272.212000 555.736000 276.040000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 276.016000 555.736000 282.172000 543.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 282.520000 555.736000 286.324000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.720000 555.736000 294.448000 543.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 294.424000 555.736000 301.648000 543.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 301.720000 555.736000 306.532000 543.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 306.724000 555.736000 310.528000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 311.020000 555.736000 318.700000 543.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 318.616000 555.736000 325.768000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 325.816000 555.736000 331.552000 543.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 331.516000 555.736000 336.328000 543.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 336.412000 555.736000 340.240000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 340.216000 555.736000 346.936000 543.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 347.020000 555.736000 354.748000 543.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 354.616000 555.736000 358.444000 543.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 358.420000 555.736000 365.572000 543.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 365.620000 555.736000 371.356000 543.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 371.320000 555.736000 375.148000 543.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 375.220000 555.736000 381.988000 543.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 382.324000 555.736000 386.128000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 386.524000 555.736000 392.680000 543.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 392.728000 555.736000 400.456000 543.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 400.432000 555.736000 404.260000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 404.236000 555.736000 409.048000 543.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 409.036000 555.736000 416.128000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 416.140000 555.736000 423.820000 543.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 424.144000 555.736000 427.948000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 428.344000 555.736000 432.784000 543.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 432.748000 555.736000 439.972000 543.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 440.044000 555.736000 445.780000 543.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 446.044000 555.736000 449.848000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 450.340000 555.736000 455.152000 543.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 455.140000 555.736000 462.868000 543.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 462.940000 555.736000 470.032000 543.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.236000 555.736000 474.040000 543.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.436000 555.736000 482.116000 543.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 482.140000 555.736000 485.968000 543.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 485.944000 555.736000 492.100000 543.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 492.148000 555.736000 499.876000 543.736000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 555.736000 504.044000 543.736000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 541.836000 195.760000 529.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 195.796000 541.836000 202.948000 529.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 202.996000 541.836000 209.152000 529.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 209.200000 541.836000 216.928000 529.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 216.904000 541.836000 223.996000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 224.008000 541.836000 229.744000 529.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 229.708000 541.836000 233.512000 529.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 233.512000 541.836000 240.604000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 240.616000 541.836000 244.444000 529.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 244.420000 541.836000 249.232000 529.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 249.220000 541.836000 256.948000 529.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 256.924000 541.836000 264.016000 529.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 264.028000 541.836000 269.764000 529.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 268.432000 541.836000 272.236000 529.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 504.048000 83.620000 488.048000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 83.604000 504.048000 94.452000 488.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.500000 504.048000 103.972000 488.048000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 104.004000 504.048000 114.996000 488.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 115.012000 504.048000 126.388000 488.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 126.420000 504.048000 137.860000 488.048000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 137.924000 504.048000 143.492000 488.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 143.524000 504.048000 154.452000 488.048000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 154.420000 504.048000 159.892000 488.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 159.924000 504.048000 170.916000 488.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 170.932000 504.048000 181.924000 488.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 181.940000 504.048000 189.828000 488.048000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 479.536000 193.816000 467.536000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 193.804000 479.536000 199.540000 467.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 199.600000 479.536000 206.824000 467.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 206.800000 479.536000 218.176000 467.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 218.200000 479.536000 222.004000 467.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 222.100000 479.536000 226.912000 467.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.900000 479.536000 234.628000 467.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 234.604000 479.536000 241.696000 467.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 241.804000 479.536000 245.608000 467.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.800000 479.536000 253.528000 467.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 253.504000 479.536000 260.656000 467.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 260.608000 479.536000 264.436000 467.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 264.508000 479.536000 268.336000 467.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 268.312000 479.536000 278.572000 467.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 278.608000 479.536000 285.760000 467.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 285.712000 479.536000 292.480000 467.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 292.516000 479.536000 296.320000 467.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 296.416000 479.536000 303.640000 467.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 303.712000 479.536000 311.440000 467.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 311.416000 479.536000 315.220000 467.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 315.412000 479.536000 320.224000 467.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 320.212000 479.536000 327.940000 467.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 327.916000 479.536000 335.008000 467.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 335.020000 479.536000 338.824000 467.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.016000 479.536000 345.172000 467.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 345.220000 479.536000 352.312000 467.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 352.324000 479.536000 359.044000 467.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 358.924000 479.536000 366.148000 467.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 366.220000 479.536000 373.948000 467.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 373.924000 479.536000 381.604000 467.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 381.724000 479.536000 385.528000 467.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.720000 479.536000 393.712000 467.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 393.724000 479.536000 400.948000 467.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 400.828000 479.536000 408.052000 467.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 408.028000 479.536000 413.764000 467.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 413.824000 479.536000 417.628000 467.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 417.724000 479.536000 422.536000 467.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 422.524000 479.536000 430.252000 467.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 430.324000 479.536000 437.416000 467.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 437.428000 479.536000 443.164000 467.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 443.128000 479.536000 450.220000 467.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 450.328000 479.536000 454.132000 467.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.324000 479.536000 461.476000 467.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 461.428000 479.536000 467.164000 467.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 467.224000 479.536000 474.316000 467.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 474.328000 479.536000 478.132000 467.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.132000 479.536000 485.356000 467.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 485.332000 479.536000 493.060000 467.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 493.132000 479.536000 496.960000 467.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 496.936000 479.536000 503.704000 467.536000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 479.536000 507.904000 467.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 465.636000 190.312000 453.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 465.636000 200.560000 453.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 200.596000 465.636000 207.820000 453.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 208.492000 465.636000 212.296000 453.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 212.992000 465.636000 220.672000 453.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 220.696000 465.636000 227.920000 453.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 227.896000 465.636000 235.120000 453.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 235.096000 465.636000 240.832000 453.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 240.892000 465.636000 247.048000 453.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 246.988000 465.636000 250.792000 453.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 251.584000 465.636000 255.388000 453.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.084000 465.636000 263.308000 453.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 263.284000 465.636000 271.012000 453.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 271.084000 465.636000 278.176000 453.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 278.788000 465.636000 282.592000 453.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 283.384000 465.636000 287.212000 453.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 287.188000 465.636000 294.280000 453.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 294.292000 465.636000 301.444000 453.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 301.492000 465.636000 309.172000 453.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 309.088000 465.636000 312.916000 453.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 312.892000 465.636000 320.620000 453.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 320.692000 465.636000 328.372000 453.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 329.092000 465.636000 332.896000 453.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.592000 465.636000 338.404000 453.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 338.392000 465.636000 345.616000 453.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 346.288000 465.636000 350.092000 453.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 350.884000 465.636000 355.696000 453.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 355.684000 465.636000 363.412000 453.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 363.484000 465.636000 370.576000 453.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 371.188000 465.636000 374.992000 453.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 375.688000 465.636000 379.516000 453.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 379.492000 465.636000 386.584000 453.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 386.596000 465.636000 391.036000 453.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 391.096000 465.636000 395.908000 453.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 396.592000 465.636000 400.396000 453.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 401.092000 465.636000 408.244000 453.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 408.292000 465.636000 416.020000 453.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 415.996000 465.636000 423.676000 453.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 424.396000 465.636000 428.200000 453.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 428.896000 465.636000 433.708000 453.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 433.696000 465.636000 441.424000 453.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 441.496000 465.636000 448.588000 453.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 449.296000 465.636000 453.100000 453.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 453.796000 465.636000 461.020000 453.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 460.996000 465.636000 465.808000 453.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 465.796000 465.636000 473.524000 453.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 473.596000 465.636000 480.688000 453.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 480.700000 465.636000 486.436000 453.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 487.096000 465.636000 490.900000 453.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 491.596000 465.636000 496.408000 453.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 496.396000 465.636000 503.620000 453.636000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 465.636000 508.004000 453.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 451.736000 190.312000 439.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 451.736000 198.028000 439.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 451.736000 205.192000 439.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 205.504000 451.736000 209.308000 439.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 209.704000 451.736000 215.440000 439.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 215.404000 451.736000 219.232000 439.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 219.304000 451.736000 226.984000 439.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 227.008000 451.736000 234.736000 439.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 234.712000 451.736000 239.524000 439.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 239.512000 451.736000 243.316000 439.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 243.712000 451.736000 247.516000 439.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.912000 451.736000 256.576000 439.736000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 256.912000 451.736000 260.716000 439.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 261.112000 451.736000 271.372000 439.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 271.408000 451.736000 278.632000 439.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 278.608000 451.736000 285.832000 439.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 285.808000 451.736000 293.488000 439.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 293.512000 451.736000 300.604000 439.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 300.616000 451.736000 308.344000 439.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 308.716000 451.736000 312.520000 439.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 312.916000 451.736000 319.072000 439.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 319.120000 451.736000 326.800000 439.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 326.716000 451.736000 330.544000 439.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 330.616000 451.736000 336.352000 439.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 336.316000 451.736000 343.468000 439.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 343.516000 451.736000 347.344000 439.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 347.620000 451.736000 351.424000 439.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.916000 451.736000 358.072000 439.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 358.120000 451.736000 362.932000 439.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 362.824000 451.736000 369.976000 439.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 370.024000 451.736000 373.852000 439.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 373.828000 451.736000 379.564000 439.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 379.528000 451.736000 386.248000 439.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 386.224000 451.736000 393.376000 439.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 393.424000 451.736000 399.580000 439.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 399.628000 451.736000 406.720000 439.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 407.128000 451.736000 410.932000 439.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 411.328000 451.736000 415.156000 439.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 415.132000 451.736000 422.224000 439.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 422.236000 451.736000 429.388000 439.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 429.436000 451.736000 437.116000 439.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 437.140000 451.736000 443.296000 439.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 443.536000 451.736000 447.340000 439.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 447.832000 451.736000 455.560000 439.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 455.536000 451.736000 463.216000 439.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 463.636000 451.736000 467.440000 439.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 467.836000 451.736000 472.648000 439.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 472.636000 451.736000 479.860000 439.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 480.136000 451.736000 483.940000 439.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.336000 451.736000 489.148000 439.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.232000 451.736000 496.960000 439.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.936000 451.736000 504.028000 439.736000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 451.736000 507.904000 439.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 437.836000 192.652000 425.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 437.836000 197.512000 425.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 197.500000 437.836000 202.312000 425.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 202.300000 437.836000 206.128000 425.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 206.104000 437.836000 212.824000 425.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 212.800000 437.836000 216.604000 425.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 405.992000 82.180000 391.992000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 82.194000 405.992000 88.886000 391.992000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.900000 405.992000 98.854000 391.992000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 98.896000 405.992000 108.906000 391.992000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.892000 405.992000 118.006000 391.992000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 383.836000 193.492000 371.836000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 192.604000 383.836000 199.828000 371.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 200.200000 383.836000 204.004000 371.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 204.496000 383.836000 209.308000 371.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 209.296000 383.836000 217.024000 371.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 217.096000 383.836000 224.188000 371.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 224.596000 383.836000 228.400000 371.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 228.892000 383.836000 234.628000 371.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 234.592000 383.836000 238.420000 371.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 238.492000 383.836000 246.172000 371.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 246.196000 383.836000 253.924000 371.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 253.900000 383.836000 258.712000 371.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 258.700000 383.836000 262.504000 371.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 262.900000 383.836000 266.704000 371.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 267.196000 383.836000 274.348000 371.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 274.792000 383.836000 278.596000 371.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.088000 383.836000 286.816000 371.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 286.792000 383.836000 293.944000 371.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 293.992000 383.836000 297.820000 371.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 297.796000 383.836000 301.624000 371.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 301.696000 383.836000 311.956000 371.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 311.896000 383.836000 319.048000 371.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 319.096000 383.836000 325.864000 371.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 326.200000 383.836000 330.004000 371.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.604000 383.836000 334.432000 371.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 334.408000 383.836000 341.500000 371.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 341.512000 383.836000 348.664000 371.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 348.712000 383.836000 356.392000 371.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 356.308000 383.836000 362.464000 371.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 362.908000 383.836000 366.712000 371.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 367.204000 383.836000 372.016000 371.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 372.004000 383.836000 379.228000 371.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 379.708000 383.836000 383.512000 371.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 384.004000 383.836000 395.380000 371.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 395.308000 383.836000 402.076000 371.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 402.508000 383.836000 406.312000 371.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 406.804000 383.836000 412.960000 371.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 413.008000 383.836000 417.820000 371.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 417.808000 383.836000 425.536000 371.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 425.608000 383.836000 433.288000 371.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 433.204000 383.836000 439.972000 371.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 438.400000 383.836000 442.204000 371.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.600000 383.836000 446.404000 371.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.896000 383.836000 454.888000 371.836000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 454.996000 383.836000 462.724000 371.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 462.700000 383.836000 469.792000 371.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.200000 383.836000 474.004000 371.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.496000 383.836000 485.872000 371.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 485.896000 383.836000 493.120000 371.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 493.096000 383.836000 499.252000 371.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 499.300000 383.836000 504.112000 371.836000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 383.836000 508.004000 371.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 369.936000 189.328000 357.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 189.304000 369.936000 200.680000 357.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 200.704000 369.936000 208.384000 357.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 208.408000 369.936000 215.632000 357.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 215.608000 369.936000 221.344000 357.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 221.404000 369.936000 226.216000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.204000 369.936000 233.356000 357.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 233.308000 369.936000 241.036000 357.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 241.108000 369.936000 245.920000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 246.112000 369.936000 249.916000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 250.108000 369.936000 257.788000 357.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 257.812000 369.936000 261.640000 357.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 261.616000 369.936000 268.708000 357.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 268.720000 369.936000 275.440000 357.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 275.416000 369.936000 282.508000 357.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 282.712000 369.936000 286.516000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.816000 369.936000 294.040000 357.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 294.016000 369.936000 298.456000 357.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 298.612000 369.936000 302.416000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 302.608000 369.936000 307.048000 357.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 307.012000 369.936000 314.740000 357.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 314.812000 369.936000 320.548000 357.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.512000 369.936000 328.240000 357.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 328.216000 369.936000 332.044000 357.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 332.116000 369.936000 336.928000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 336.916000 369.936000 344.644000 357.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 344.716000 369.936000 350.452000 357.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 350.416000 369.936000 357.508000 357.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.712000 369.936000 361.516000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.708000 369.936000 365.536000 357.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 365.512000 369.936000 373.240000 357.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 373.516000 369.936000 377.320000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.512000 369.936000 382.324000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 382.312000 369.936000 390.040000 357.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 390.112000 369.936000 393.940000 357.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 393.916000 369.936000 400.072000 357.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 400.216000 369.936000 404.020000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.320000 369.936000 410.056000 357.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 410.020000 369.936000 417.244000 357.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 417.316000 369.936000 424.540000 357.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 424.420000 369.936000 435.796000 357.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 436.024000 369.936000 439.828000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.020000 369.936000 443.848000 357.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 443.824000 369.936000 449.980000 357.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 450.220000 369.936000 454.024000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.216000 369.936000 459.028000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 459.112000 369.936000 466.840000 357.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 466.816000 369.936000 473.908000 357.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 474.112000 369.936000 477.916000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.108000 369.936000 484.828000 357.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 484.804000 369.936000 492.028000 357.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 492.004000 369.936000 499.732000 357.936000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 369.936000 504.044000 357.936000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 356.036000 191.656000 344.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 356.036000 195.532000 344.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 195.508000 356.036000 203.188000 344.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 203.212000 356.036000 210.304000 344.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 210.316000 356.036000 216.052000 344.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 216.016000 356.036000 223.168000 344.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 223.216000 356.036000 230.896000 344.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 230.920000 356.036000 234.748000 344.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 234.724000 356.036000 241.492000 344.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 243.628000 356.036000 247.432000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 249.532000 356.036000 253.360000 344.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 253.336000 356.036000 260.488000 344.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 260.536000 356.036000 266.272000 344.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 266.236000 356.036000 273.916000 344.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 273.940000 356.036000 281.032000 344.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 283.144000 356.036000 286.948000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.144000 356.036000 296.824000 344.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 296.848000 356.036000 303.940000 344.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 303.952000 356.036000 310.108000 344.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 310.048000 356.036000 317.308000 344.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 317.344000 356.036000 321.148000 344.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 323.248000 356.036000 327.052000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.248000 356.036000 338.056000 344.036000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 338.044000 356.036000 341.872000 344.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 341.944000 356.036000 349.096000 344.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 349.048000 356.036000 355.768000 344.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 355.744000 356.036000 363.004000 344.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 365.140000 356.036000 368.944000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 371.140000 356.036000 378.292000 344.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 378.340000 356.036000 386.068000 344.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 386.044000 356.036000 393.724000 344.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 395.740000 356.036000 399.544000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 401.644000 356.036000 411.904000 344.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 411.940000 356.036000 419.668000 344.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 419.644000 356.036000 423.472000 344.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 423.448000 356.036000 428.260000 344.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 428.344000 356.036000 435.436000 344.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 437.548000 356.036000 441.352000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 443.548000 356.036000 451.228000 344.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 451.252000 356.036000 458.980000 344.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 458.956000 356.036000 466.180000 344.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 466.156000 356.036000 470.968000 344.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 471.052000 356.036000 478.276000 344.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 478.252000 356.036000 484.408000 344.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 486.556000 356.036000 490.360000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 492.460000 356.036000 499.684000 344.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 499.660000 356.036000 504.100000 344.036000 1.000000 0.000000 0.000000 1.000000 f
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 356.036000 507.904000 344.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 342.136000 196.000000 330.136000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 196.000000 342.136000 203.092000 330.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 203.104000 342.136000 213.364000 330.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 214.504000 342.136000 218.308000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 219.400000 342.136000 227.320000 330.136000 1.000000 0.000000 0.000000 1.000000 Y
+drawChar 226.300000 342.136000 233.524000 330.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 233.500000 342.136000 239.236000 330.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 239.200000 342.136000 246.460000 330.136000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 246.500000 342.136000 250.304000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 252.500000 342.136000 256.328000 330.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 256.304000 342.136000 264.032000 330.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 265.208000 342.136000 269.012000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.104000 342.136000 274.916000 330.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 274.904000 342.136000 282.632000 330.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 282.704000 342.136000 289.796000 330.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 290.804000 342.136000 294.608000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 295.808000 342.136000 303.440000 330.136000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 303.404000 342.136000 311.036000 330.136000 1.000000 0.000000 0.000000 1.000000 0
+drawChar 311.108000 342.136000 314.396000 330.136000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 314.408000 342.136000 320.564000 330.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 321.608000 342.136000 325.412000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.504000 342.136000 333.656000 330.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 333.704000 342.136000 341.432000 330.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 341.408000 342.136000 349.088000 330.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 350.204000 342.136000 354.008000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 355.100000 342.136000 362.732000 330.136000 1.000000 0.000000 0.000000 1.000000 3
+drawChar 362.696000 342.136000 370.328000 330.136000 1.000000 0.000000 0.000000 1.000000 0
+drawChar 370.400000 342.136000 373.688000 330.136000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 373.700000 342.136000 379.856000 330.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 380.900000 342.136000 384.704000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.796000 342.136000 393.524000 330.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 393.500000 342.136000 400.652000 330.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 400.700000 342.136000 408.428000 330.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 408.404000 342.136000 416.084000 330.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 417.200000 342.136000 421.004000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 422.096000 342.136000 429.320000 330.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 429.392000 342.136000 437.120000 330.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 438.188000 342.136000 441.992000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 443.084000 342.136000 447.896000 330.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 447.884000 342.136000 455.612000 330.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 455.684000 342.136000 462.776000 330.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 463.880000 342.136000 467.684000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 468.776000 342.136000 479.036000 330.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 479.072000 342.136000 486.224000 330.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 486.176000 342.136000 490.004000 330.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 490.076000 342.136000 493.904000 330.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 493.880000 342.136000 500.036000 330.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 500.084000 342.136000 503.888000 330.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 342.136000 507.904000 330.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 328.236000 193.492000 316.236000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 328.236000 201.232000 316.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 328.236000 208.300000 316.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 209.008000 328.236000 212.812000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 213.508000 328.236000 222.316000 316.236000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 222.412000 328.236000 229.564000 316.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 229.612000 328.236000 236.380000 316.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 237.016000 328.236000 240.820000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.612000 328.236000 248.332000 316.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 248.308000 328.236000 255.460000 316.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 255.508000 328.236000 263.236000 316.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 263.908000 328.236000 267.712000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.408000 328.236000 275.560000 316.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 275.608000 328.236000 279.436000 316.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 279.412000 328.236000 285.568000 316.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 285.616000 328.236000 292.840000 316.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 293.512000 328.236000 297.316000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 298.108000 328.236000 305.788000 316.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 305.812000 328.236000 312.904000 316.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 313.612000 328.236000 317.416000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.112000 328.236000 325.264000 316.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 325.312000 328.236000 332.992000 316.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 332.908000 328.236000 344.284000 316.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 344.308000 328.236000 348.136000 316.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 348.208000 328.236000 353.944000 316.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 353.908000 328.236000 361.000000 316.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 361.012000 328.236000 368.692000 316.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 369.412000 328.236000 373.216000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.008000 328.236000 378.448000 316.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 378.412000 328.236000 384.148000 316.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 384.208000 328.236000 391.432000 316.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 391.408000 328.236000 402.784000 316.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 403.504000 328.236000 407.308000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 408.004000 328.236000 412.816000 316.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 412.804000 328.236000 420.532000 316.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 420.604000 328.236000 427.696000 316.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 428.404000 328.236000 432.208000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 433.000000 328.236000 443.260000 316.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 443.296000 328.236000 447.124000 316.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 447.100000 328.236000 454.828000 316.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 454.804000 328.236000 462.484000 316.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 462.508000 328.236000 469.732000 316.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 469.708000 328.236000 479.968000 316.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 480.712000 328.236000 484.516000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 485.212000 328.236000 492.892000 316.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 492.916000 328.236000 500.008000 316.236000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.100000 328.236000 504.144000 316.236000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 314.336000 193.228000 302.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 193.204000 314.336000 197.032000 302.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 197.104000 314.336000 204.832000 302.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 204.808000 314.336000 212.488000 302.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 212.608000 314.336000 216.412000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 216.604000 314.336000 221.416000 302.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 221.404000 314.336000 229.132000 302.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 229.204000 314.336000 236.296000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.308000 314.336000 240.112000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 240.412000 314.336000 248.092000 302.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 248.116000 314.336000 255.208000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 255.220000 314.336000 261.376000 302.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 261.316000 314.336000 268.576000 302.336000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 268.612000 314.336000 272.416000 302.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.512000 314.336000 276.316000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 276.508000 314.336000 286.336000 302.336000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 286.312000 314.336000 294.040000 302.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 294.208000 314.336000 298.012000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 298.204000 314.336000 303.016000 302.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 303.004000 314.336000 310.732000 302.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 310.804000 314.336000 317.896000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 317.908000 314.336000 321.712000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.012000 314.336000 329.236000 302.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 329.212000 314.336000 336.940000 302.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 336.916000 314.336000 344.008000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 344.116000 314.336000 347.920000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 348.112000 314.336000 355.840000 302.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 355.816000 314.336000 362.968000 302.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 363.016000 314.336000 370.744000 302.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 370.720000 314.336000 378.400000 302.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 378.424000 314.336000 382.228000 302.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 382.324000 314.336000 386.128000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 386.320000 314.336000 391.132000 302.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 391.216000 314.336000 398.944000 302.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 398.920000 314.336000 402.748000 302.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.820000 314.336000 408.976000 302.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 409.024000 314.336000 412.828000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 413.020000 314.336000 419.740000 302.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 419.716000 314.336000 426.868000 302.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 426.916000 314.336000 434.644000 302.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 434.716000 314.336000 438.520000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.712000 314.336000 444.868000 302.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 444.916000 314.336000 452.140000 302.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 452.116000 314.336000 463.492000 302.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 463.516000 314.336000 470.608000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.620000 314.336000 475.432000 302.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 475.420000 314.336000 479.248000 302.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 314.336000 490.600000 302.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 490.624000 314.336000 497.716000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 497.728000 314.336000 503.884000 302.336000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 314.336000 507.904000 302.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 300.436000 193.180000 288.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 193.204000 300.436000 200.296000 288.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 200.908000 300.436000 204.712000 288.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 205.408000 300.436000 213.088000 288.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 213.112000 300.436000 216.940000 288.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 216.916000 300.436000 223.072000 288.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 223.120000 300.436000 227.932000 288.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 227.920000 300.436000 233.656000 288.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 233.620000 300.436000 240.772000 288.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 240.820000 300.436000 247.540000 288.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 247.516000 300.436000 252.328000 288.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 252.316000 300.436000 256.144000 288.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 256.216000 300.436000 263.944000 288.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 263.920000 300.436000 271.600000 288.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 272.320000 300.436000 276.124000 288.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 276.820000 300.436000 287.080000 288.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 287.116000 300.436000 294.844000 288.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 294.820000 300.436000 301.912000 288.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 301.924000 300.436000 309.652000 288.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 310.228000 300.436000 314.032000 288.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 314.728000 300.436000 319.468000 288.436000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 319.432000 300.436000 322.720000 288.436000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 322.732000 300.436000 334.108000 288.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 334.936000 300.436000 338.740000 288.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.436000 300.436000 344.248000 288.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 344.236000 300.436000 349.972000 288.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 350.032000 300.436000 356.800000 288.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 356.728000 300.436000 360.556000 288.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 360.532000 300.436000 368.260000 288.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 368.236000 300.436000 375.916000 288.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 376.636000 300.436000 380.440000 288.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 381.136000 300.436000 385.948000 288.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 385.936000 300.436000 393.160000 288.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 393.832000 300.436000 397.636000 288.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.332000 300.436000 408.592000 288.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 408.628000 300.436000 415.852000 288.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 415.828000 300.436000 421.564000 288.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 421.528000 300.436000 428.788000 288.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 428.824000 300.436000 432.628000 288.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.324000 300.436000 437.128000 288.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 437.824000 300.436000 446.632000 288.436000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 446.620000 300.436000 454.348000 288.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 454.324000 300.436000 459.136000 288.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 459.820000 300.436000 463.624000 288.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 464.320000 300.436000 471.544000 288.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 471.616000 300.436000 479.344000 288.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 479.920000 300.436000 483.724000 288.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.420000 300.436000 489.232000 288.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.220000 300.436000 496.948000 288.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 497.020000 300.436000 504.112000 288.436000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 300.436000 508.004000 288.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 286.536000 192.724000 274.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 192.700000 286.536000 197.512000 274.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 197.500000 286.536000 205.228000 274.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 205.300000 286.536000 212.392000 274.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 212.404000 286.536000 218.140000 274.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 219.808000 286.536000 223.612000 274.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 225.304000 286.536000 233.032000 274.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 233.008000 286.536000 240.160000 274.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 240.208000 286.536000 247.936000 274.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 247.912000 286.536000 255.592000 274.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 255.616000 286.536000 259.420000 274.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 261.112000 286.536000 264.916000 274.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.608000 286.536000 270.436000 274.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 270.412000 286.536000 275.224000 274.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 277.012000 286.536000 280.816000 274.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 282.508000 286.536000 289.228000 274.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 289.204000 286.536000 296.356000 274.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 296.404000 286.536000 304.132000 274.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 305.800000 286.536000 309.604000 274.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 311.296000 286.536000 318.976000 274.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 319.000000 286.536000 326.092000 274.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 327.796000 286.536000 331.600000 274.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.292000 286.536000 340.384000 274.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 340.396000 286.536000 347.152000 274.536000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 347.200000 286.536000 353.920000 274.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 353.896000 286.536000 360.988000 274.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 361.000000 286.536000 368.680000 274.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 368.704000 286.536000 373.516000 274.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 373.504000 286.536000 377.332000 274.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 377.308000 286.536000 384.532000 274.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 384.604000 286.536000 392.332000 274.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 392.308000 286.536000 399.460000 274.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 399.412000 286.536000 403.240000 274.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 403.312000 286.536000 407.140000 274.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 407.212000 286.536000 413.980000 274.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 415.612000 286.536000 419.416000 274.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 421.216000 286.536000 427.936000 274.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 427.912000 286.536000 435.064000 274.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 435.112000 286.536000 438.940000 274.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 438.916000 286.536000 450.292000 274.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 450.220000 286.536000 454.048000 274.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 454.024000 286.536000 461.752000 274.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 461.824000 286.536000 469.504000 274.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 471.220000 286.536000 475.024000 274.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 476.716000 286.536000 481.396000 274.536000 1.000000 0.000000 0.000000 1.000000 (
+drawChar 481.420000 286.536000 488.572000 274.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 488.524000 286.536000 496.252000 274.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 496.324000 286.536000 504.004000 274.536000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 286.536000 507.904000 274.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 272.636000 192.652000 260.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 272.636000 196.528000 260.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 196.504000 272.636000 202.660000 260.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 202.708000 272.636000 209.932000 260.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 210.712000 272.636000 214.516000 260.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 215.416000 272.636000 223.096000 260.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 223.120000 272.636000 228.856000 260.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 228.820000 272.636000 236.044000 260.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.020000 272.636000 247.396000 260.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 247.420000 272.636000 254.644000 260.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 254.620000 272.636000 259.432000 260.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 259.516000 272.636000 266.608000 260.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 266.620000 272.636000 272.776000 260.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 273.616000 272.636000 277.420000 260.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 278.320000 272.636000 286.000000 260.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 286.024000 272.636000 293.116000 260.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 293.128000 272.636000 297.940000 260.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 297.928000 272.636000 302.740000 260.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 302.728000 272.636000 309.820000 260.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 309.832000 272.636000 315.568000 260.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 316.432000 272.636000 320.236000 260.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 321.136000 272.636000 327.856000 260.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 327.832000 272.636000 335.056000 260.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 335.032000 272.636000 342.760000 260.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 342.832000 272.636000 349.552000 260.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 349.528000 272.636000 356.620000 260.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 356.632000 272.636000 364.360000 260.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 364.336000 272.636000 369.148000 260.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 369.136000 272.636000 374.872000 260.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 374.932000 272.636000 382.084000 260.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 382.036000 272.636000 386.848000 260.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 386.932000 272.636000 390.760000 260.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 390.736000 272.636000 397.960000 260.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 397.936000 272.636000 405.664000 260.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 405.736000 272.636000 410.416000 260.636000 1.000000 0.000000 0.000000 1.000000 )
+drawChar 411.232000 272.636000 415.036000 260.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 416.032000 272.636000 420.844000 260.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 420.832000 272.636000 428.056000 260.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 428.836000 272.636000 432.640000 260.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 433.540000 272.636000 438.352000 260.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 438.340000 272.636000 445.492000 260.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 445.540000 272.636000 452.800000 260.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 452.740000 272.636000 459.832000 260.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.840000 272.636000 464.644000 260.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 465.544000 272.636000 472.696000 260.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 472.744000 272.636000 480.472000 260.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 481.240000 272.636000 485.044000 260.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 485.944000 272.636000 493.168000 260.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 493.144000 272.636000 499.864000 260.636000 1.000000 0.000000 0.000000 1.000000 c
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 272.636000 504.044000 260.636000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 258.736000 192.220000 246.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 192.196000 258.736000 199.348000 246.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 199.396000 258.736000 205.552000 246.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 205.492000 258.736000 209.320000 246.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 209.392000 258.736000 216.616000 246.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 216.592000 258.736000 224.320000 246.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 224.296000 258.736000 231.448000 246.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 231.496000 258.736000 235.324000 246.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 236.500000 258.736000 240.304000 246.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.600000 258.736000 249.280000 246.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 249.304000 258.736000 255.040000 246.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 255.004000 258.736000 262.096000 246.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 262.204000 258.736000 269.356000 246.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 269.404000 258.736000 276.664000 246.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 277.804000 258.736000 281.608000 246.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 282.904000 258.736000 290.632000 246.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 290.608000 258.736000 297.832000 246.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 297.904000 258.736000 308.164000 246.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 309.304000 258.736000 313.108000 246.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 314.404000 258.736000 321.556000 246.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 321.604000 258.736000 329.332000 246.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 329.308000 258.736000 336.988000 246.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 338.212000 258.736000 342.016000 246.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 343.312000 258.736000 348.124000 246.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 348.112000 258.736000 355.840000 246.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 355.912000 258.736000 363.004000 246.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 363.016000 258.736000 370.744000 246.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.920000 258.736000 375.724000 246.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.020000 258.736000 381.832000 246.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 381.820000 258.736000 389.044000 246.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 390.316000 258.736000 394.120000 246.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 395.416000 258.736000 401.572000 246.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 401.620000 258.736000 405.448000 246.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 405.424000 258.736000 416.800000 246.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 416.824000 258.736000 424.504000 246.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 424.528000 258.736000 428.356000 246.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 428.332000 258.736000 435.100000 246.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 436.228000 258.736000 440.032000 246.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 441.424000 258.736000 451.684000 246.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 451.720000 258.736000 458.872000 246.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 458.824000 258.736000 463.636000 246.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 463.624000 258.736000 470.344000 246.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 470.428000 258.736000 478.156000 246.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 479.332000 258.736000 483.136000 246.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.432000 258.736000 489.244000 246.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.232000 258.736000 496.960000 246.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 497.032000 258.736000 504.124000 246.736000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 258.736000 507.904000 246.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 244.836000 191.656000 232.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 244.836000 199.432000 232.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 199.408000 244.836000 203.236000 232.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 203.212000 244.836000 210.892000 232.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 210.916000 244.836000 217.072000 232.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 219.820000 244.836000 223.624000 232.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 226.324000 244.836000 233.476000 232.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 233.524000 244.836000 241.252000 232.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 241.228000 244.836000 248.908000 232.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 251.524000 244.836000 255.328000 232.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.124000 244.836000 265.852000 232.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 265.828000 244.836000 273.556000 232.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 273.628000 244.836000 285.004000 232.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 284.932000 244.836000 292.024000 232.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 292.036000 244.836000 297.772000 232.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 297.832000 244.836000 305.056000 232.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 305.032000 244.836000 312.760000 232.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 312.736000 244.836000 318.892000 232.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 321.532000 244.836000 325.336000 232.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 328.132000 244.836000 334.288000 232.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 334.336000 244.836000 341.488000 232.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 341.440000 244.836000 345.268000 232.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 345.340000 244.836000 349.168000 232.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 349.036000 244.836000 356.716000 232.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 356.740000 244.836000 363.964000 232.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 364.036000 244.836000 371.188000 232.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 371.236000 244.836000 376.048000 232.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 375.940000 244.836000 382.096000 232.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 384.844000 244.836000 388.648000 232.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.348000 244.836000 398.068000 232.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 398.044000 244.836000 403.780000 232.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 403.840000 244.836000 407.668000 232.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 407.644000 244.836000 413.800000 232.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 413.848000 244.836000 420.004000 232.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 419.944000 244.836000 423.988000 232.836000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 424.048000 244.836000 430.768000 232.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 430.744000 244.836000 436.480000 232.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 436.444000 244.836000 443.668000 232.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 443.644000 244.836000 449.800000 232.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 449.848000 244.836000 456.004000 232.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 456.052000 244.836000 459.880000 232.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 459.856000 244.836000 467.584000 232.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 467.560000 244.836000 475.240000 232.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 477.964000 244.836000 481.768000 232.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.468000 244.836000 489.280000 232.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.364000 244.836000 497.092000 232.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 497.068000 244.836000 504.160000 232.836000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 244.836000 508.004000 232.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 230.936000 193.180000 218.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 193.204000 230.936000 200.356000 218.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 200.404000 230.936000 207.172000 218.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 205.600000 230.936000 209.404000 218.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 205.136000 85.336000 193.136000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 85.096000 205.136000 91.012000 193.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 91.000000 205.136000 95.104000 193.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 95.104000 205.136000 100.840000 193.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 100.804000 205.136000 104.908000 193.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.908000 205.136000 113.440000 193.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 113.404000 205.136000 121.984000 193.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 122.008000 205.136000 126.184000 193.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.208000 205.136000 136.168000 193.136000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 136.204000 205.136000 144.340000 193.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 144.304000 205.136000 151.444000 193.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 151.408000 205.136000 159.388000 193.136000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 188.136000 190.240000 176.136000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 190.996000 188.136000 194.800000 176.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 195.796000 188.136000 203.476000 176.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 203.392000 188.136000 210.484000 176.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 210.496000 188.136000 214.324000 176.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 214.300000 188.136000 218.128000 176.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 218.200000 188.136000 225.880000 176.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 225.904000 188.136000 232.996000 176.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 233.008000 188.136000 238.744000 176.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 238.708000 188.136000 245.860000 176.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 245.908000 188.136000 250.720000 176.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 250.708000 188.136000 257.800000 176.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 257.812000 188.136000 261.640000 176.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 261.616000 188.136000 268.384000 176.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 269.212000 188.136000 273.016000 176.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.916000 188.136000 281.596000 176.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 281.620000 188.136000 289.348000 176.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 289.420000 188.136000 295.156000 176.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 295.120000 188.136000 301.840000 176.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 301.924000 188.136000 309.652000 176.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 309.520000 188.136000 316.672000 176.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 316.720000 188.136000 322.876000 176.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 322.924000 188.136000 330.016000 176.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 330.028000 188.136000 337.708000 176.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 338.428000 188.136000 342.232000 176.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 343.132000 188.136000 350.284000 176.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 351.136000 188.136000 354.940000 176.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 355.840000 188.136000 362.608000 176.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 362.644000 188.136000 369.736000 176.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 369.748000 188.136000 375.484000 176.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 375.448000 188.136000 382.216000 176.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 383.044000 188.136000 386.848000 176.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 387.748000 188.136000 391.576000 176.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 391.552000 188.136000 398.704000 176.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 398.752000 188.136000 404.488000 176.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 404.452000 188.136000 412.132000 176.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 412.156000 188.136000 419.248000 176.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 420.052000 188.136000 423.856000 176.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 424.852000 188.136000 432.532000 176.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 432.448000 188.136000 439.540000 176.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 439.552000 188.136000 445.708000 176.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 445.756000 188.136000 453.016000 176.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 452.956000 188.136000 456.760000 176.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 457.660000 188.136000 461.464000 176.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 462.364000 188.136000 468.520000 176.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 468.568000 188.136000 472.396000 176.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 472.372000 188.136000 480.100000 176.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 480.076000 188.136000 486.796000 176.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 486.772000 188.136000 493.864000 176.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 494.668000 188.136000 498.472000 176.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 499.468000 188.136000 504.208000 176.136000 1.000000 0.000000 0.000000 1.000000 I
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 188.136000 507.904000 176.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 174.236000 192.652000 162.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 174.236000 204.076000 162.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 204.004000 174.236000 207.808000 162.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 208.108000 174.236000 215.260000 162.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 215.308000 174.236000 222.988000 162.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 222.904000 174.236000 234.280000 162.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 234.400000 174.236000 238.228000 162.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 238.204000 174.236000 243.016000 162.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 243.100000 174.236000 247.912000 162.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 247.804000 174.236000 254.896000 162.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 254.908000 174.236000 262.588000 162.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 262.612000 174.236000 266.440000 162.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 266.512000 174.236000 273.280000 162.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 273.412000 174.236000 277.216000 162.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.612000 174.236000 284.764000 162.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 284.608000 174.236000 292.336000 162.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 292.312000 174.236000 296.116000 162.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 296.512000 174.236000 303.604000 162.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 303.616000 174.236000 310.768000 162.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 310.720000 174.236000 316.876000 162.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 316.924000 174.236000 323.692000 162.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 323.728000 174.236000 331.408000 162.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 331.432000 174.236000 338.656000 162.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 338.632000 174.236000 342.460000 162.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 342.436000 174.236000 350.164000 162.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 350.236000 174.236000 357.916000 162.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 358.036000 174.236000 361.840000 162.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.032000 174.236000 369.712000 162.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 369.736000 174.236000 376.828000 162.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 376.840000 174.236000 382.576000 162.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 382.540000 174.236000 388.696000 162.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 388.744000 174.236000 395.968000 162.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 395.944000 174.236000 403.672000 162.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 403.648000 174.236000 407.452000 162.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 407.644000 174.236000 411.448000 162.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 411.640000 174.236000 419.320000 162.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 419.344000 174.236000 427.072000 162.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 427.048000 174.236000 431.860000 162.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 432.052000 174.236000 435.856000 162.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 436.048000 174.236000 443.776000 162.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 443.752000 174.236000 450.976000 162.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 451.048000 174.236000 455.860000 162.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 455.944000 174.236000 459.748000 162.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.940000 174.236000 467.092000 162.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 467.344000 174.236000 471.148000 162.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 471.340000 174.236000 478.060000 162.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 478.036000 174.236000 481.864000 162.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 481.936000 174.236000 489.028000 162.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 489.040000 174.236000 496.192000 162.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 496.144000 174.236000 503.872000 162.236000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 174.236000 507.904000 162.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 463.300000 86.136000 471.364000 74.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 470.800000 86.136000 477.952000 74.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 478.000000 86.136000 485.680000 74.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 485.704000 86.136000 492.796000 74.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 492.808000 86.136000 496.612000 74.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 496.600000 86.136000 504.232000 74.136000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 5134.000000 0 477.900000 5134.000000 0 477.900000 5443.800000 0 134.300000 5443.800000 0 134.300000 5134.000000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -434210.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 2145.000000 0 168.100000 2145.000000 0 168.100000 2150.000000 0 76.900000 2150.000000 0 76.900000 2145.000000 0
+eoFillPath subpath 1 163.100000 2149.900000 0 168.100000 2149.900000 0 168.100000 2280.500000 0 163.100000 2280.500000 0 163.100000 2149.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 2150.000000 0 163.100000 2150.000000 0 163.100000 2285.400000 0 72.000000 2285.400000 0 72.000000 2150.000000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 2281.080000 87.320000 2271.080000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 2281.080000 93.420000 2271.080000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 2281.080000 97.510000 2271.080000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 2281.080000 101.420000 2271.080000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 2281.080000 104.170000 2271.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 2281.080000 110.530000 2271.080000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 2281.080000 113.270000 2271.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 2281.080000 116.470000 2271.080000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 2281.080000 123.480000 2271.080000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 2281.080000 129.610000 2271.080000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 2281.080000 135.090000 2271.080000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 2281.080000 140.890000 2271.080000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 2281.080000 144.820000 2271.080000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 2281.080000 150.920000 2271.080000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 2281.080000 153.670000 2271.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 2281.080000 156.470000 2271.080000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 2154.200000 0 168.200000 2154.200000 0 168.200000 2269.400000 0 72.000000 2269.400000 0 72.000000 2154.200000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2222.352000 79.253000 2213.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 2222.352000 86.669000 2213.352000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 2222.352000 90.215000 2213.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 2222.352000 93.077000 2213.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 2222.352000 97.406000 2213.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 2222.352000 100.853000 2213.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 2222.352000 107.324000 2213.352000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 2222.352000 112.337000 2213.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 2222.352000 115.271000 2213.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 2222.352000 118.655000 2213.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 2222.352000 126.512000 2213.352000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 2222.352000 130.805000 2213.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 2222.352000 135.881000 2213.352000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 2222.352000 139.355000 2213.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 2222.352000 147.284000 2213.352000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 2222.352000 150.074000 2213.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 2222.352000 155.897000 2213.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 2222.352000 158.750000 2213.352000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 2222.352000 161.853000 2213.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2211.852000 82.124000 2202.852000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 2211.852000 87.137000 2202.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 2211.852000 90.071000 2202.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 2211.852000 93.356000 2202.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 2211.852000 100.403000 2202.852000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 2211.852000 104.921000 2202.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 2211.852000 109.205000 2202.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 2211.852000 117.737000 2202.852000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 2211.852000 123.119000 2202.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 2211.852000 128.996000 2202.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 2211.852000 132.605000 2202.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 2211.852000 138.392000 2202.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 2211.852000 141.749000 2202.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 2211.852000 149.507000 2202.852000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 2211.852000 153.800000 2202.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 2211.852000 158.876000 2202.852000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 2211.852000 161.853000 2202.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2201.352000 81.764000 2192.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 2201.352000 87.596000 2192.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 2201.352000 93.356000 2192.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 2201.352000 102.050000 2192.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 2201.352000 113.822000 2192.352000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 2201.352000 122.651000 2192.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 2201.352000 134.117000 2192.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 2201.352000 138.401000 2192.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 2201.352000 147.149000 2192.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 2201.352000 158.921000 2192.352000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 2201.352000 161.853000 2192.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2190.852000 79.271000 2181.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 2190.852000 84.338000 2181.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 2190.852000 89.621000 2181.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 2190.852000 94.643000 2181.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 2190.852000 100.502000 2181.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 2190.852000 106.262000 2181.852000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 2190.852000 111.518000 2181.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 2190.852000 116.216000 2181.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 2190.852000 119.249000 2181.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 2190.852000 122.363000 2181.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 2190.852000 128.186000 2181.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 2190.852000 131.345000 2181.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 2190.852000 137.060000 2181.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 2190.852000 140.147000 2181.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 2190.852000 145.007000 2181.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 2190.852000 148.598000 2181.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 2190.852000 151.460000 2181.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 2190.852000 155.789000 2181.852000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 2190.852000 158.933000 2181.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2180.352000 80.702000 2171.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 2180.352000 83.573000 2171.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 2180.352000 89.396000 2171.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 2180.352000 95.156000 2171.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 2180.352000 100.547000 2171.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 2180.352000 109.052000 2171.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 2180.352000 111.959000 2171.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 2180.352000 117.251000 2171.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 2180.352000 121.904000 2171.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 2180.352000 126.503000 2171.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 2180.352000 129.338000 2171.352000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 2180.352000 134.936000 2171.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 2180.352000 143.441000 2171.352000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 2180.352000 148.796000 2171.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 2180.352000 154.574000 2171.352000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 2180.352000 158.876000 2171.352000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 2180.352000 161.853000 2171.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2169.852000 79.271000 2160.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 2169.852000 85.094000 2160.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 2169.852000 88.703000 2160.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 2169.852000 94.112000 2160.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 2169.852000 97.244000 2160.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 2169.852000 103.058000 2160.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 2169.852000 108.890000 2160.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 2169.852000 111.950000 2160.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 2169.852000 115.271000 2160.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 2169.852000 120.338000 2160.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 2169.852000 125.621000 2160.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 2169.852000 131.363000 2160.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 2169.852000 134.558000 2160.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 2169.852000 140.048000 2160.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 2169.852000 145.430000 2160.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 2169.852000 150.551000 2160.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 2169.852000 155.960000 2160.852000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 2169.852000 158.933000 2160.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2159.352000 80.009000 2150.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 2159.352000 85.364000 2150.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 2159.352000 88.271000 2150.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 2159.352000 91.169000 2150.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 2159.352000 97.955000 2150.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 2159.352000 107.765000 2150.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 2159.352000 110.672000 2150.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 2159.352000 115.964000 2150.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 2159.352000 120.617000 2150.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 2159.352000 125.216000 2150.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 2159.352000 128.051000 2150.352000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 2159.352000 134.954000 2150.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 2159.352000 146.285000 2150.352000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 2159.352000 151.667000 2150.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 2159.352000 155.906000 2150.352000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 2159.352000 159.033000 2150.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 2149.900000 0 72.100000 2149.900000 0 72.100000 2285.400000 0 72.000000 2285.400000 0 72.000000 2149.900000 0
+eoFillPath subpath 1 163.100000 2149.900000 0 163.200000 2149.900000 0 163.200000 2285.400000 0 163.100000 2285.400000 0 163.100000 2149.900000 0
+eoFillPath subpath 1 72.000000 2285.300000 0 163.200000 2285.300000 0 163.200000 2285.400000 0 72.000000 2285.400000 0 72.000000 2285.300000 0
+eoFillPath subpath 1 72.000000 2149.900000 0 163.200000 2149.900000 0 163.200000 2150.000000 0 72.000000 2150.000000 0 72.000000 2149.900000 0
+saveState
+eoClipPath subpath 1 96.900000 2225.200000 0 138.300000 2225.200000 0 138.300000 2269.400000 0 96.900000 2269.400000 0 96.900000 2225.200000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -143330.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 1870.400000 0 165.500000 1870.400000 0 165.500000 1875.400000 0 76.900000 1875.400000 0 76.900000 1870.400000 0
+eoFillPath subpath 1 160.500000 1875.300000 0 165.500000 1875.300000 0 165.500000 2031.600000 0 160.500000 2031.600000 0 160.500000 1875.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1875.400000 0 121.400000 1875.400000 0 121.400000 2036.500000 0 72.000000 2036.500000 0 72.000000 1875.400000 0
+saveState
+eoClipPath subpath 1 72.000000 1875.300000 0 160.500000 1875.300000 0 160.500000 2036.400000 0 72.000000 2036.400000 0 72.000000 1875.300000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -106630.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 2032.180000 89.280000 2022.180000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 2032.180000 95.630000 2022.180000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 2032.180000 99.520000 2022.180000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 2032.180000 102.270000 2022.180000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 2032.180000 108.450000 2022.180000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 2032.180000 112.610000 2022.180000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 2032.180000 118.510000 2022.180000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 2032.180000 121.670000 2022.180000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 2032.180000 124.470000 2022.180000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 2032.180000 130.830000 2022.180000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 2032.180000 133.970000 2022.180000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 2032.180000 137.920000 2022.180000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 2032.180000 144.230000 2022.180000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 2032.180000 150.350000 2022.180000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 2032.180000 153.570000 2022.180000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 2020.480000 95.000000 2010.480000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 2020.480000 97.770000 2010.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 2020.480000 103.000000 2010.480000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 2020.480000 109.330000 2010.480000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 2020.480000 117.470000 2010.480000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 2020.480000 123.620000 2010.480000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 2020.480000 128.800000 2010.480000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 2020.480000 135.130000 2010.480000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 2020.480000 141.250000 2010.480000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 2020.480000 145.410000 2010.480000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2005.652000 82.961000 1996.652000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 2005.652000 87.614000 1996.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 2005.652000 93.356000 1996.652000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 2005.652000 98.612000 1996.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 2005.652000 103.733000 1996.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 2005.652000 106.568000 1996.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 2005.652000 111.959000 1996.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 2005.652000 114.866000 1996.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 2005.652000 117.665000 1996.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 2005.652000 122.768000 1996.652000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 2005.652000 125.747000 1996.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 2005.652000 131.651000 1996.652000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 2005.652000 136.907000 1996.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 2005.652000 142.307000 1996.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 2005.652000 148.049000 1996.652000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 2005.652000 150.956000 1996.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 2005.652000 156.302000 1996.652000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2005.652000 159.253000 1996.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1995.152000 84.095000 1986.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 1995.152000 89.900000 1986.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 1995.152000 95.318000 1986.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 1995.152000 100.349000 1986.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 1995.152000 110.789000 1986.152000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 1995.152000 111.464000 1986.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 1995.152000 114.362000 1986.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 1995.152000 119.348000 1986.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 1995.152000 126.962000 1986.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 1995.152000 132.047000 1986.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 1995.152000 139.958000 1986.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 1995.152000 142.865000 1986.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 1995.152000 147.410000 1986.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 1995.152000 153.287000 1986.152000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 1995.152000 156.333000 1986.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1984.652000 84.095000 1975.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 1984.652000 89.468000 1975.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 1984.652000 94.121000 1975.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 1984.652000 99.899000 1975.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 1984.652000 105.218000 1975.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 1984.652000 109.502000 1975.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 1984.652000 115.649000 1975.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 1984.652000 122.327000 1975.652000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 1984.652000 127.718000 1975.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 1984.652000 132.002000 1975.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 1984.652000 138.149000 1975.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 1984.652000 145.205000 1975.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 1984.652000 150.992000 1975.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 1984.652000 156.311000 1975.652000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1984.652000 159.253000 1975.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1974.152000 82.394000 1965.152000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 1974.152000 86.705000 1965.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 1974.152000 91.322000 1965.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 1974.152000 94.913000 1965.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 1974.152000 98.054000 1965.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 1974.152000 102.014000 1965.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 1974.152000 104.876000 1965.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 1974.152000 113.435000 1965.152000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 1974.152000 118.718000 1965.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 1974.152000 121.949000 1965.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 1974.152000 125.063000 1965.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 1974.152000 130.886000 1965.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 1974.152000 134.045000 1965.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 1974.152000 138.005000 1965.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 1974.152000 143.792000 1965.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 1974.152000 149.111000 1965.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 1974.152000 151.964000 1965.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 1974.152000 156.293000 1965.152000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 1974.152000 159.153000 1965.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1963.652000 79.271000 1954.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 1963.652000 82.169000 1954.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 1963.652000 85.526000 1954.652000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 1963.652000 90.818000 1954.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 1963.652000 94.454000 1954.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 1963.652000 99.008000 1954.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 1963.652000 104.318000 1954.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 1963.652000 110.096000 1954.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 1963.652000 115.856000 1954.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 1963.652000 119.546000 1954.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 1963.652000 124.001000 1954.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 1963.652000 129.509000 1954.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 1963.652000 133.145000 1954.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 1963.652000 139.751000 1954.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 1963.652000 145.205000 1954.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 1963.652000 148.841000 1954.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 1963.652000 152.657000 1954.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 1963.652000 156.293000 1954.652000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1963.652000 159.253000 1954.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1953.152000 84.095000 1944.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 1953.152000 88.406000 1944.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 1953.152000 93.824000 1944.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 1953.152000 99.602000 1944.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 1953.152000 105.362000 1944.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 1953.152000 108.422000 1944.152000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 1953.152000 116.747000 1944.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 1953.152000 129.275000 1944.152000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 1953.152000 135.089000 1944.152000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 1953.152000 138.698000 1944.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 1953.152000 141.560000 1944.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 1953.152000 146.906000 1944.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 1953.152000 151.190000 1944.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 1953.152000 156.266000 1944.152000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1953.152000 159.253000 1944.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1942.652000 82.196000 1933.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 1942.652000 87.560000 1933.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 1942.652000 92.213000 1933.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 1942.652000 96.551000 1933.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 1942.652000 101.708000 1933.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 1942.652000 107.216000 1933.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 1942.652000 111.653000 1933.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 1942.652000 118.961000 1933.652000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 1942.652000 124.316000 1933.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 1942.652000 128.654000 1933.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 1942.652000 133.172000 1933.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 1942.652000 138.995000 1933.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 1942.652000 143.612000 1933.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 1942.652000 148.913000 1933.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 1942.652000 153.197000 1933.652000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 1942.652000 156.333000 1933.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1932.152000 80.009000 1923.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 1932.152000 85.319000 1923.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 1932.152000 91.061000 1923.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 1932.152000 100.052000 1923.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 1932.152000 113.993000 1923.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 1932.152000 116.873000 1923.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 1932.152000 120.410000 1923.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 1932.152000 126.296000 1923.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 1932.152000 135.350000 1923.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 1932.152000 145.106000 1923.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 1932.152000 150.893000 1923.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 1932.152000 156.212000 1923.152000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1932.152000 159.253000 1923.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1921.652000 82.196000 1912.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 1921.652000 87.560000 1912.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 1921.652000 93.392000 1912.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 1921.652000 99.152000 1912.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 1921.652000 101.960000 1912.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 1921.652000 107.306000 1912.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 1921.652000 111.905000 1912.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 1921.652000 115.640000 1912.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 1921.652000 122.444000 1912.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 1921.652000 127.898000 1912.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 1921.652000 135.575000 1912.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 1921.652000 141.380000 1912.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 1921.652000 145.241000 1912.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 1921.652000 150.803000 1912.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 1921.652000 156.302000 1912.652000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1921.652000 159.253000 1912.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1911.152000 80.009000 1902.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 1911.152000 85.796000 1902.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 1911.152000 91.115000 1902.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 1911.152000 95.399000 1902.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 1911.152000 100.718000 1902.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 1911.152000 107.054000 1902.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 1911.152000 118.097000 1902.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 1911.152000 123.524000 1902.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 1911.152000 129.401000 1902.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 1911.152000 131.768000 1902.152000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 1911.152000 135.413000 1902.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 1911.152000 141.659000 1902.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 1911.152000 150.965000 1902.152000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 1911.152000 156.320000 1902.152000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1911.152000 159.253000 1902.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1900.652000 81.017000 1891.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 1900.652000 84.608000 1891.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 1900.652000 89.963000 1891.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 1900.652000 92.870000 1891.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 1900.652000 98.693000 1891.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 1900.652000 103.310000 1891.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 1900.652000 107.243000 1891.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 1900.652000 116.081000 1891.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 1900.652000 121.886000 1891.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 1900.652000 127.205000 1891.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 1900.652000 132.983000 1891.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 1900.652000 136.943000 1891.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 1900.652000 143.846000 1891.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 1900.652000 148.184000 1891.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 1900.652000 153.260000 1891.652000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 1900.652000 156.433000 1891.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1890.152000 79.271000 1881.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 1890.152000 85.094000 1881.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 1890.152000 90.854000 1881.152000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 1890.152000 93.653000 1881.152000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 1875.300000 0 72.100000 1875.300000 0 72.100000 2036.500000 0 72.000000 2036.500000 0 72.000000 1875.300000 0
+eoFillPath subpath 1 160.500000 1875.300000 0 160.600000 1875.300000 0 160.600000 2036.500000 0 160.500000 2036.500000 0 160.500000 1875.300000 0
+eoFillPath subpath 1 72.000000 2036.400000 0 160.600000 2036.400000 0 160.600000 2036.500000 0 72.000000 2036.500000 0 72.000000 2036.400000 0
+eoFillPath subpath 1 72.000000 1875.300000 0 160.600000 1875.300000 0 160.600000 1875.400000 0 72.000000 1875.400000 0 72.000000 1875.300000 0
+saveState
+eoClipPath subpath 1 108.000000 1387.900000 0 178.900000 1387.900000 0 178.900000 1444.600000 0 108.000000 1444.600000 0 108.000000 1387.900000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -59600.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -2670.500000 0 165.500000 -2670.500000 0 165.500000 -2665.500000 0 76.900000 -2665.500000 0 76.900000 -2670.500000 0
+eoFillPath subpath 1 160.500000 -2665.600000 0 165.500000 -2665.600000 0 165.500000 -2556.800000 0 160.500000 -2556.800000 0 160.500000 -2665.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -2665.500000 0 160.500000 -2665.500000 0 160.500000 -2551.900000 0 72.000000 -2551.900000 0 72.000000 -2665.500000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2556.248000 83.771000 -2565.248000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 -2556.248000 89.594000 -2565.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 -2556.248000 92.465000 -2565.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 -2556.248000 97.568000 -2565.248000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 -2556.248000 100.943000 -2565.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 -2556.248000 106.955000 -2565.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 -2556.248000 110.447000 -2565.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 -2556.248000 114.425000 -2565.248000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 -2556.248000 119.717000 -2565.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 -2556.248000 127.493000 -2565.248000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 -2556.248000 130.949000 -2565.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 -2556.248000 136.574000 -2565.248000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 -2556.248000 141.920000 -2565.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 -2556.248000 147.365000 -2565.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 -2556.248000 151.703000 -2565.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 -2556.248000 156.320000 -2565.248000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -2556.248000 159.153000 -2565.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2566.748000 81.764000 -2575.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -2566.748000 85.130000 -2575.748000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 -2566.748000 88.712000 -2575.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 -2566.748000 94.022000 -2575.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 -2566.748000 98.306000 -2575.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -2566.748000 102.455000 -2575.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 -2566.748000 106.676000 -2575.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 -2566.748000 110.312000 -2575.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 -2566.748000 114.920000 -2575.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 -2566.748000 119.060000 -2575.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 -2566.748000 125.450000 -2575.748000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 -2566.748000 130.832000 -2575.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 -2566.748000 139.445000 -2575.748000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 -2566.748000 145.169000 -2575.748000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 -2566.748000 148.076000 -2575.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 -2566.748000 153.323000 -2575.748000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -2566.748000 156.433000 -2575.748000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2577.248000 80.009000 -2586.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -2577.248000 82.871000 -2586.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 -2577.248000 88.316000 -2586.248000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 -2577.248000 94.094000 -2586.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 -2577.248000 96.947000 -2586.248000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 -2577.248000 104.948000 -2586.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 -2577.248000 113.705000 -2586.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 -2577.248000 119.492000 -2586.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 -2577.248000 124.811000 -2586.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 -2577.248000 132.848000 -2586.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 -2577.248000 141.605000 -2586.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 -2577.248000 144.467000 -2586.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 -2577.248000 148.103000 -2586.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 -2577.248000 150.965000 -2586.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 -2577.248000 156.311000 -2586.248000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2577.248000 159.253000 -2586.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2587.748000 80.999000 -2596.748000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 -2587.748000 90.539000 -2596.748000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 -2587.748000 95.318000 -2596.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 -2587.748000 99.602000 -2596.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -2587.748000 102.473000 -2596.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 -2587.748000 108.260000 -2596.748000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 -2587.748000 110.762000 -2596.748000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 -2587.748000 115.316000 -2596.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 -2587.748000 122.156000 -2596.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 -2587.748000 132.299000 -2596.748000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 -2587.748000 136.970000 -2596.748000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 -2587.748000 139.877000 -2596.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 -2587.748000 142.775000 -2596.748000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 -2587.748000 148.022000 -2596.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 -2587.748000 152.720000 -2596.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 -2587.748000 156.311000 -2596.748000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2587.748000 159.253000 -2596.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2598.248000 83.006000 -2607.248000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 -2598.248000 88.793000 -2607.248000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 -2598.248000 91.664000 -2607.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 -2598.248000 94.562000 -2607.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 -2598.248000 100.349000 -2607.248000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 -2598.248000 103.157000 -2607.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 -2598.248000 108.980000 -2607.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 -2598.248000 114.740000 -2607.248000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 -2598.248000 119.375000 -2607.248000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 -2598.248000 128.033000 -2607.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 -2598.248000 141.479000 -2607.248000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 -2598.248000 146.807000 -2607.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -2598.248000 152.684000 -2607.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 -2598.248000 156.293000 -2607.248000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2598.248000 159.253000 -2607.248000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2608.748000 79.730000 -2617.748000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 -2608.748000 84.005000 -2617.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 -2608.748000 89.423000 -2617.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 -2608.748000 98.036000 -2617.748000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 -2608.748000 121.157000 -2617.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 -2608.748000 145.115000 -2617.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 -2608.748000 151.001000 -2617.748000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 -2608.748000 156.320000 -2617.748000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -2608.748000 159.253000 -2617.748000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2619.248000 83.285000 -2628.248000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 -2619.248000 89.099000 -2628.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 -2619.248000 93.401000 -2628.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 -2619.248000 98.477000 -2628.248000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 -2619.248000 103.121000 -2628.248000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 -2619.248000 105.974000 -2628.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 -2619.248000 111.320000 -2628.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 -2619.248000 115.604000 -2628.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 -2619.248000 123.857000 -2628.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 -2619.248000 136.007000 -2628.248000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 -2619.248000 141.794000 -2628.248000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 -2619.248000 144.665000 -2628.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 -2619.248000 147.464000 -2628.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 -2619.248000 153.251000 -2628.248000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -2619.248000 156.433000 -2628.248000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2629.748000 79.271000 -2638.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -2629.748000 85.094000 -2638.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -2629.748000 90.854000 -2638.748000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 -2629.748000 96.146000 -2638.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 -2629.748000 102.302000 -2638.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 -2629.748000 107.711000 -2638.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 -2629.748000 113.048000 -2638.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 -2629.748000 119.204000 -2638.748000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 -2629.748000 124.991000 -2638.748000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 -2629.748000 130.310000 -2638.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 -2629.748000 135.647000 -2638.748000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 -2629.748000 144.755000 -2638.748000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 -2629.748000 153.323000 -2638.748000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -2629.748000 156.333000 -2638.748000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2640.248000 82.160000 -2649.248000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 -2640.248000 85.067000 -2649.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 -2640.248000 89.297000 -2649.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 -2640.248000 94.616000 -2649.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 -2640.248000 98.747000 -2649.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 -2640.248000 106.055000 -2649.248000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 -2640.248000 109.700000 -2649.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 -2640.248000 115.055000 -2649.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 -2640.248000 118.601000 -2649.248000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 -2640.248000 124.010000 -2649.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 -2640.248000 128.042000 -2649.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 -2640.248000 135.998000 -2649.248000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 -2640.248000 141.785000 -2649.248000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 -2640.248000 144.656000 -2649.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 -2640.248000 147.554000 -2649.248000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 -2640.248000 153.341000 -2649.248000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -2640.248000 156.433000 -2649.248000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -2650.748000 79.271000 -2659.748000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -2650.748000 85.094000 -2659.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -2650.748000 90.854000 -2659.748000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 -2650.748000 93.743000 -2659.748000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -2665.600000 0 72.100000 -2665.600000 0 72.100000 -2551.900000 0 72.000000 -2551.900000 0 72.000000 -2665.600000 0
+eoFillPath subpath 1 160.500000 -2665.600000 0 160.600000 -2665.600000 0 160.600000 -2551.900000 0 160.500000 -2551.900000 0 160.500000 -2665.600000 0
+eoFillPath subpath 1 72.000000 -2552.000000 0 160.600000 -2552.000000 0 160.600000 -2551.900000 0 72.000000 -2551.900000 0 72.000000 -2552.000000 0
+eoFillPath subpath 1 72.000000 -2665.600000 0 160.600000 -2665.600000 0 160.600000 -2665.500000 0 72.000000 -2665.500000 0 72.000000 -2665.600000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 3524.000000 0 169.600000 3524.000000 0 169.600000 3529.000000 0 76.900000 3529.000000 0 76.900000 3524.000000 0
+eoFillPath subpath 1 164.600000 3528.900000 0 169.600000 3528.900000 0 169.600000 3644.500000 0 164.600000 3644.500000 0 164.600000 3528.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 3529.000000 0 121.400000 3529.000000 0 121.400000 3649.400000 0 72.000000 3649.400000 0 72.000000 3529.000000 0
+saveState
+eoClipPath subpath 1 72.000000 3528.900000 0 164.600000 3528.900000 0 164.600000 3649.300000 0 72.000000 3649.300000 0 72.000000 3528.900000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -267870.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 3598.900000 0 93.700000 3598.900000 0 93.700000 3618.100000 0 72.000000 3618.100000 0 72.000000 3598.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 3598.900000 0 169.600000 3598.900000 0 169.600000 3618.100000 0 93.700000 3618.100000 0 93.700000 3598.900000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 3582.200000 0 93.700000 3582.200000 0 93.700000 3598.900000 0 72.000000 3598.900000 0 72.000000 3582.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 3582.200000 0 169.600000 3582.200000 0 169.600000 3598.900000 0 93.700000 3598.900000 0 93.700000 3582.200000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 3563.000000 0 93.700000 3563.000000 0 93.700000 3582.200000 0 72.000000 3582.200000 0 72.000000 3563.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 3563.000000 0 169.600000 3563.000000 0 169.600000 3582.200000 0 93.700000 3582.200000 0 93.700000 3563.000000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 3543.800000 0 93.700000 3543.800000 0 93.700000 3563.000000 0 72.000000 3563.000000 0 72.000000 3543.800000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 3543.800000 0 169.600000 3543.800000 0 169.600000 3563.000000 0 93.700000 3563.000000 0 93.700000 3543.800000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3645.052000 82.898000 3636.052000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 3645.052000 87.200000 3636.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 3645.052000 90.809000 3636.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 3645.052000 93.671000 3636.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 3645.052000 98.315000 3636.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 3645.052000 101.906000 3636.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 3645.052000 106.514000 3636.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 3645.052000 109.754000 3636.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 3645.052000 112.868000 3636.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 3645.052000 118.691000 3636.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 3645.052000 121.850000 3636.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 3645.052000 125.702000 3636.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 3645.052000 131.588000 3636.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 3645.052000 136.907000 3636.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 3645.052000 140.039000 3636.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 3645.052000 146.078000 3636.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 3645.052000 151.442000 3636.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 3645.052000 154.349000 3636.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 3645.052000 157.148000 3636.052000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 3645.052000 160.433000 3636.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3634.552000 84.095000 3625.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 3634.552000 89.468000 3625.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 3634.552000 94.580000 3625.552000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 3634.552000 97.631000 3625.552000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 3614.152000 104.443000 3605.152000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 3614.152000 109.060000 3605.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 3614.152000 113.398000 3605.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 3614.152000 119.194000 3605.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 3614.152000 124.612000 3605.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 3614.152000 127.465000 3605.152000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 3597.452000 101.176000 3588.452000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 3597.452000 104.074000 3588.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 3597.452000 109.420000 3588.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 3597.452000 114.442000 3588.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 3597.452000 120.202000 3588.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 3597.452000 123.811000 3588.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 3597.452000 129.121000 3588.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 3597.452000 134.899000 3588.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 3597.452000 139.516000 3588.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 3597.452000 143.107000 3588.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 3597.452000 148.417000 3588.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 3597.452000 151.270000 3588.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 3597.452000 157.093000 3588.452000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 3580.752000 103.048000 3571.752000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 3580.752000 108.421000 3571.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 3580.752000 113.443000 3571.752000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 3580.752000 118.852000 3571.752000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 3580.752000 124.702000 3571.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 3580.752000 130.021000 3571.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 3580.752000 135.079000 3571.752000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 3561.552000 104.407000 3552.552000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 3561.552000 109.816000 3552.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 3561.552000 115.594000 3552.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 3561.552000 121.354000 3552.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 3561.552000 125.692000 3552.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 3561.552000 128.563000 3552.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 3561.552000 133.954000 3552.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 3561.552000 139.786000 3552.552000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 3528.900000 0 72.100000 3528.900000 0 72.100000 3649.400000 0 72.000000 3649.400000 0 72.000000 3528.900000 0
+eoFillPath subpath 1 164.600000 3528.900000 0 164.700000 3528.900000 0 164.700000 3649.400000 0 164.600000 3649.400000 0 164.600000 3528.900000 0
+eoFillPath subpath 1 72.000000 3649.300000 0 164.700000 3649.300000 0 164.700000 3649.400000 0 72.000000 3649.400000 0 72.000000 3649.300000 0
+eoFillPath subpath 1 72.000000 3528.900000 0 164.700000 3528.900000 0 164.700000 3529.000000 0 72.000000 3529.000000 0 72.000000 3528.900000 0
+eoFillPath subpath 1 91.300000 3543.800000 0 93.700000 3543.800000 0 93.700000 3618.100000 0 91.300000 3618.100000 0 91.300000 3543.800000 0
+eoFillPath subpath 1 72.000000 3563.000000 0 169.600000 3563.000000 0 169.600000 3565.400000 0 72.000000 3565.400000 0 72.000000 3563.000000 0
+eoFillPath subpath 1 72.000000 3615.700000 0 169.600000 3615.700000 0 169.600000 3618.100000 0 72.000000 3618.100000 0 72.000000 3615.700000 0
+eoFillPath subpath 1 72.000000 3543.800000 0 169.600000 3543.800000 0 169.600000 3546.200000 0 72.000000 3546.200000 0 72.000000 3543.800000 0
+saveState
+eoClipPath subpath 1 108.000000 -4322.200000 0 150.800000 -4322.200000 0 150.800000 -4278.000000 0 108.000000 -4278.000000 0 108.000000 -4322.200000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 511420.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -5172.200000 0 499.600000 -5172.200000 0 499.600000 -5167.100000 0 186.800000 -5167.100000 0 186.800000 -5172.200000 0
+eoFillPath subpath 1 494.500000 -5167.200000 0 499.600000 -5167.200000 0 499.600000 -4978.800000 0 494.500000 -4978.800000 0 494.500000 -5167.200000 0
+saveState
+eoClipPath subpath 1 181.800000 -5167.100000 0 494.500000 -5167.100000 0 494.500000 -4973.800000 0 181.800000 -4973.800000 0 181.800000 -5167.100000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -4973.700000 0 494.500000 -4973.700000 0 494.500000 -4973.700000 0 181.700000 -4973.700000 0
+eoFillPath subpath 1 181.700000 -4973.700000 0 494.500000 -4973.700000 0 494.500000 -4974.500000 0 181.700000 -4974.500000 0 181.700000 -4973.700000 0
+eoFillPath subpath 1 181.700000 -4974.500000 0 494.500000 -4974.500000 0 494.500000 -4975.200000 0 181.700000 -4975.200000 0 181.700000 -4974.500000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -4975.200000 0 494.500000 -4975.200000 0 494.500000 -4976.000000 0 181.700000 -4976.000000 0 181.700000 -4975.200000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -4976.000000 0 494.500000 -4976.000000 0 494.500000 -4976.800000 0 181.700000 -4976.800000 0 181.700000 -4976.000000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -4976.800000 0 494.500000 -4976.800000 0 494.500000 -4977.500000 0 181.700000 -4977.500000 0 181.700000 -4976.800000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -4977.500000 0 494.500000 -4977.500000 0 494.500000 -4978.300000 0 181.700000 -4978.300000 0 181.700000 -4977.500000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -4978.300000 0 494.500000 -4978.300000 0 494.500000 -4979.000000 0 181.700000 -4979.000000 0 181.700000 -4978.300000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -4979.000000 0 494.500000 -4979.000000 0 494.500000 -4979.800000 0 181.700000 -4979.800000 0 181.700000 -4979.000000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -4979.800000 0 494.500000 -4979.800000 0 494.500000 -4980.500000 0 181.700000 -4980.500000 0 181.700000 -4979.800000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -4980.500000 0 494.500000 -4980.500000 0 494.500000 -4981.300000 0 181.700000 -4981.300000 0 181.700000 -4980.500000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -4981.300000 0 494.500000 -4981.300000 0 494.500000 -4982.100000 0 181.700000 -4982.100000 0 181.700000 -4981.300000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -4982.100000 0 494.500000 -4982.100000 0 494.500000 -4982.800000 0 181.700000 -4982.800000 0 181.700000 -4982.100000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -4982.800000 0 494.500000 -4982.800000 0 494.500000 -4983.600000 0 181.700000 -4983.600000 0 181.700000 -4982.800000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -4983.600000 0 494.500000 -4983.600000 0 494.500000 -4984.300000 0 181.700000 -4984.300000 0 181.700000 -4983.600000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -4984.300000 0 494.500000 -4984.300000 0 494.500000 -4985.100000 0 181.700000 -4985.100000 0 181.700000 -4984.300000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -4985.100000 0 494.500000 -4985.100000 0 494.500000 -4985.900000 0 181.700000 -4985.900000 0 181.700000 -4985.100000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -4985.900000 0 494.500000 -4985.900000 0 494.500000 -4986.600000 0 181.700000 -4986.600000 0 181.700000 -4985.900000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -4986.600000 0 494.500000 -4986.600000 0 494.500000 -4987.400000 0 181.700000 -4987.400000 0 181.700000 -4986.600000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -4987.400000 0 494.500000 -4987.400000 0 494.500000 -4988.100000 0 181.700000 -4988.100000 0 181.700000 -4987.400000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -4988.100000 0 494.500000 -4988.100000 0 494.500000 -4988.900000 0 181.700000 -4988.900000 0 181.700000 -4988.100000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -4988.900000 0 494.500000 -4988.900000 0 494.500000 -4989.700000 0 181.700000 -4989.700000 0 181.700000 -4988.900000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -4989.700000 0 494.500000 -4989.700000 0 494.500000 -4990.400000 0 181.700000 -4990.400000 0 181.700000 -4989.700000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -4990.400000 0 494.500000 -4990.400000 0 494.500000 -4991.200000 0 181.700000 -4991.200000 0 181.700000 -4990.400000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -4991.200000 0 494.500000 -4991.200000 0 494.500000 -4991.900000 0 181.700000 -4991.900000 0 181.700000 -4991.200000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -4991.900000 0 494.500000 -4991.900000 0 494.500000 -4992.700000 0 181.700000 -4992.700000 0 181.700000 -4991.900000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -4992.700000 0 494.500000 -4992.700000 0 494.500000 -4993.400000 0 181.700000 -4993.400000 0 181.700000 -4992.700000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -4993.400000 0 494.500000 -4993.400000 0 494.500000 -4994.200000 0 181.700000 -4994.200000 0 181.700000 -4993.400000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -4994.200000 0 494.500000 -4994.200000 0 494.500000 -4995.000000 0 181.700000 -4995.000000 0 181.700000 -4994.200000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -4995.000000 0 494.500000 -4995.000000 0 494.500000 -4995.700000 0 181.700000 -4995.700000 0 181.700000 -4995.000000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -4995.700000 0 494.500000 -4995.700000 0 494.500000 -4996.500000 0 181.700000 -4996.500000 0 181.700000 -4995.700000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -4996.500000 0 494.500000 -4996.500000 0 494.500000 -4997.200000 0 181.700000 -4997.200000 0 181.700000 -4996.500000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -4997.200000 0 494.500000 -4997.200000 0 494.500000 -4998.000000 0 181.700000 -4998.000000 0 181.700000 -4997.200000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -4998.000000 0 494.500000 -4998.000000 0 494.500000 -4998.800000 0 181.700000 -4998.800000 0 181.700000 -4998.000000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -4998.800000 0 494.500000 -4998.800000 0 494.500000 -4999.500000 0 181.700000 -4999.500000 0 181.700000 -4998.800000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -4999.500000 0 494.500000 -4999.500000 0 494.500000 -5000.300000 0 181.700000 -5000.300000 0 181.700000 -4999.500000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -5000.300000 0 494.500000 -5000.300000 0 494.500000 -5001.000000 0 181.700000 -5001.000000 0 181.700000 -5000.300000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -5001.000000 0 494.500000 -5001.000000 0 494.500000 -5001.800000 0 181.700000 -5001.800000 0 181.700000 -5001.000000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -5001.800000 0 494.500000 -5001.800000 0 494.500000 -5002.600000 0 181.700000 -5002.600000 0 181.700000 -5001.800000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -5002.600000 0 494.500000 -5002.600000 0 494.500000 -5003.300000 0 181.700000 -5003.300000 0 181.700000 -5002.600000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -5003.300000 0 494.500000 -5003.300000 0 494.500000 -5004.100000 0 181.700000 -5004.100000 0 181.700000 -5003.300000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -5004.100000 0 494.500000 -5004.100000 0 494.500000 -5004.800000 0 181.700000 -5004.800000 0 181.700000 -5004.100000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -5004.800000 0 494.500000 -5004.800000 0 494.500000 -5005.600000 0 181.700000 -5005.600000 0 181.700000 -5004.800000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -5005.600000 0 494.500000 -5005.600000 0 494.500000 -5006.300000 0 181.700000 -5006.300000 0 181.700000 -5005.600000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -5006.300000 0 494.500000 -5006.300000 0 494.500000 -5007.100000 0 181.700000 -5007.100000 0 181.700000 -5006.300000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -5007.100000 0 494.500000 -5007.100000 0 494.500000 -5007.900000 0 181.700000 -5007.900000 0 181.700000 -5007.100000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -5007.900000 0 494.500000 -5007.900000 0 494.500000 -5008.600000 0 181.700000 -5008.600000 0 181.700000 -5007.900000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -5008.600000 0 494.500000 -5008.600000 0 494.500000 -5009.400000 0 181.700000 -5009.400000 0 181.700000 -5008.600000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -5009.400000 0 494.500000 -5009.400000 0 494.500000 -5010.100000 0 181.700000 -5010.100000 0 181.700000 -5009.400000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -5010.100000 0 494.500000 -5010.100000 0 494.500000 -5010.900000 0 181.700000 -5010.900000 0 181.700000 -5010.100000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -5010.900000 0 494.500000 -5010.900000 0 494.500000 -5011.700000 0 181.700000 -5011.700000 0 181.700000 -5010.900000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -5011.700000 0 494.500000 -5011.700000 0 494.500000 -5012.400000 0 181.700000 -5012.400000 0 181.700000 -5011.700000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -5012.400000 0 494.500000 -5012.400000 0 494.500000 -5013.200000 0 181.700000 -5013.200000 0 181.700000 -5012.400000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -5013.200000 0 494.500000 -5013.200000 0 494.500000 -5013.900000 0 181.700000 -5013.900000 0 181.700000 -5013.200000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -5013.900000 0 494.500000 -5013.900000 0 494.500000 -5014.700000 0 181.700000 -5014.700000 0 181.700000 -5013.900000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -5014.700000 0 494.500000 -5014.700000 0 494.500000 -5015.500000 0 181.700000 -5015.500000 0 181.700000 -5014.700000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -5015.500000 0 494.500000 -5015.500000 0 494.500000 -5016.200000 0 181.700000 -5016.200000 0 181.700000 -5015.500000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -5016.200000 0 494.500000 -5016.200000 0 494.500000 -5017.000000 0 181.700000 -5017.000000 0 181.700000 -5016.200000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -5017.000000 0 494.500000 -5017.000000 0 494.500000 -5017.700000 0 181.700000 -5017.700000 0 181.700000 -5017.000000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -5017.700000 0 494.500000 -5017.700000 0 494.500000 -5018.500000 0 181.700000 -5018.500000 0 181.700000 -5017.700000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -5018.500000 0 494.500000 -5018.500000 0 494.500000 -5019.200000 0 181.700000 -5019.200000 0 181.700000 -5018.500000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -5019.200000 0 494.500000 -5019.200000 0 494.500000 -5020.000000 0 181.700000 -5020.000000 0 181.700000 -5019.200000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -5020.000000 0 494.500000 -5020.000000 0 494.500000 -5020.800000 0 181.700000 -5020.800000 0 181.700000 -5020.000000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -5020.800000 0 494.500000 -5020.800000 0 494.500000 -5021.500000 0 181.700000 -5021.500000 0 181.700000 -5020.800000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -5021.500000 0 494.500000 -5021.500000 0 494.500000 -5022.300000 0 181.700000 -5022.300000 0 181.700000 -5021.500000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -5022.300000 0 494.500000 -5022.300000 0 494.500000 -5023.000000 0 181.700000 -5023.000000 0 181.700000 -5022.300000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -5023.000000 0 494.500000 -5023.000000 0 494.500000 -5023.800000 0 181.700000 -5023.800000 0 181.700000 -5023.000000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -5023.800000 0 494.500000 -5023.800000 0 494.500000 -5024.600000 0 181.700000 -5024.600000 0 181.700000 -5023.800000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -5024.600000 0 494.500000 -5024.600000 0 494.500000 -5025.300000 0 181.700000 -5025.300000 0 181.700000 -5024.600000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -5025.300000 0 494.500000 -5025.300000 0 494.500000 -5026.100000 0 181.700000 -5026.100000 0 181.700000 -5025.300000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -5026.100000 0 494.500000 -5026.100000 0 494.500000 -5026.800000 0 181.700000 -5026.800000 0 181.700000 -5026.100000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -5026.800000 0 494.500000 -5026.800000 0 494.500000 -5027.600000 0 181.700000 -5027.600000 0 181.700000 -5026.800000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -5027.600000 0 494.500000 -5027.600000 0 494.500000 -5028.300000 0 181.700000 -5028.300000 0 181.700000 -5027.600000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -5028.300000 0 494.500000 -5028.300000 0 494.500000 -5029.100000 0 181.700000 -5029.100000 0 181.700000 -5028.300000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -5029.100000 0 494.500000 -5029.100000 0 494.500000 -5029.900000 0 181.700000 -5029.900000 0 181.700000 -5029.100000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -5029.900000 0 494.500000 -5029.900000 0 494.500000 -5030.600000 0 181.700000 -5030.600000 0 181.700000 -5029.900000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -5030.600000 0 494.500000 -5030.600000 0 494.500000 -5031.400000 0 181.700000 -5031.400000 0 181.700000 -5030.600000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -5031.400000 0 494.500000 -5031.400000 0 494.500000 -5032.100000 0 181.700000 -5032.100000 0 181.700000 -5031.400000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -5032.100000 0 494.500000 -5032.100000 0 494.500000 -5032.900000 0 181.700000 -5032.900000 0 181.700000 -5032.100000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -5032.900000 0 494.500000 -5032.900000 0 494.500000 -5033.700000 0 181.700000 -5033.700000 0 181.700000 -5032.900000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -5033.700000 0 494.500000 -5033.700000 0 494.500000 -5034.400000 0 181.700000 -5034.400000 0 181.700000 -5033.700000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -5034.400000 0 494.500000 -5034.400000 0 494.500000 -5035.200000 0 181.700000 -5035.200000 0 181.700000 -5034.400000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -5035.200000 0 494.500000 -5035.200000 0 494.500000 -5035.900000 0 181.700000 -5035.900000 0 181.700000 -5035.200000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -5035.900000 0 494.500000 -5035.900000 0 494.500000 -5036.700000 0 181.700000 -5036.700000 0 181.700000 -5035.900000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -5036.700000 0 494.500000 -5036.700000 0 494.500000 -5037.400000 0 181.700000 -5037.400000 0 181.700000 -5036.700000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -5037.400000 0 494.500000 -5037.400000 0 494.500000 -5038.200000 0 181.700000 -5038.200000 0 181.700000 -5037.400000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -5038.200000 0 494.500000 -5038.200000 0 494.500000 -5039.000000 0 181.700000 -5039.000000 0 181.700000 -5038.200000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -5039.000000 0 494.500000 -5039.000000 0 494.500000 -5039.700000 0 181.700000 -5039.700000 0 181.700000 -5039.000000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -5039.700000 0 494.500000 -5039.700000 0 494.500000 -5040.500000 0 181.700000 -5040.500000 0 181.700000 -5039.700000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -5040.500000 0 494.500000 -5040.500000 0 494.500000 -5041.200000 0 181.700000 -5041.200000 0 181.700000 -5040.500000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -5041.200000 0 494.500000 -5041.200000 0 494.500000 -5042.000000 0 181.700000 -5042.000000 0 181.700000 -5041.200000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -5042.000000 0 494.500000 -5042.000000 0 494.500000 -5042.700000 0 181.700000 -5042.700000 0 181.700000 -5042.000000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -5042.700000 0 494.500000 -5042.700000 0 494.500000 -5043.500000 0 181.700000 -5043.500000 0 181.700000 -5042.700000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -5043.500000 0 494.500000 -5043.500000 0 494.500000 -5044.300000 0 181.700000 -5044.300000 0 181.700000 -5043.500000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -5044.300000 0 494.500000 -5044.300000 0 494.500000 -5045.000000 0 181.700000 -5045.000000 0 181.700000 -5044.300000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -5045.000000 0 494.500000 -5045.000000 0 494.500000 -5045.800000 0 181.700000 -5045.800000 0 181.700000 -5045.000000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -5045.800000 0 494.500000 -5045.800000 0 494.500000 -5046.500000 0 181.700000 -5046.500000 0 181.700000 -5045.800000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -5046.500000 0 494.500000 -5046.500000 0 494.500000 -5047.300000 0 181.700000 -5047.300000 0 181.700000 -5046.500000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -5047.300000 0 494.500000 -5047.300000 0 494.500000 -5048.100000 0 181.700000 -5048.100000 0 181.700000 -5047.300000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -5048.100000 0 494.500000 -5048.100000 0 494.500000 -5048.800000 0 181.700000 -5048.800000 0 181.700000 -5048.100000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -5048.800000 0 494.500000 -5048.800000 0 494.500000 -5049.600000 0 181.700000 -5049.600000 0 181.700000 -5048.800000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -5049.600000 0 494.500000 -5049.600000 0 494.500000 -5050.300000 0 181.700000 -5050.300000 0 181.700000 -5049.600000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -5050.300000 0 494.500000 -5050.300000 0 494.500000 -5051.100000 0 181.700000 -5051.100000 0 181.700000 -5050.300000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -5051.100000 0 494.500000 -5051.100000 0 494.500000 -5051.800000 0 181.700000 -5051.800000 0 181.700000 -5051.100000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -5051.800000 0 494.500000 -5051.800000 0 494.500000 -5052.600000 0 181.700000 -5052.600000 0 181.700000 -5051.800000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -5052.600000 0 494.500000 -5052.600000 0 494.500000 -5053.400000 0 181.700000 -5053.400000 0 181.700000 -5052.600000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -5053.400000 0 494.500000 -5053.400000 0 494.500000 -5054.100000 0 181.700000 -5054.100000 0 181.700000 -5053.400000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -5054.100000 0 494.500000 -5054.100000 0 494.500000 -5054.900000 0 181.700000 -5054.900000 0 181.700000 -5054.100000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -5054.900000 0 494.500000 -5054.900000 0 494.500000 -5055.600000 0 181.700000 -5055.600000 0 181.700000 -5054.900000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -5055.600000 0 494.500000 -5055.600000 0 494.500000 -5056.400000 0 181.700000 -5056.400000 0 181.700000 -5055.600000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -5056.400000 0 494.500000 -5056.400000 0 494.500000 -5057.200000 0 181.700000 -5057.200000 0 181.700000 -5056.400000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -5057.200000 0 494.500000 -5057.200000 0 494.500000 -5057.900000 0 181.700000 -5057.900000 0 181.700000 -5057.200000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -5057.900000 0 494.500000 -5057.900000 0 494.500000 -5058.700000 0 181.700000 -5058.700000 0 181.700000 -5057.900000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -5058.700000 0 494.500000 -5058.700000 0 494.500000 -5059.400000 0 181.700000 -5059.400000 0 181.700000 -5058.700000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -5059.400000 0 494.500000 -5059.400000 0 494.500000 -5060.200000 0 181.700000 -5060.200000 0 181.700000 -5059.400000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -5060.200000 0 494.500000 -5060.200000 0 494.500000 -5060.900000 0 181.700000 -5060.900000 0 181.700000 -5060.200000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -5060.900000 0 494.500000 -5060.900000 0 494.500000 -5061.700000 0 181.700000 -5061.700000 0 181.700000 -5060.900000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -5061.700000 0 494.500000 -5061.700000 0 494.500000 -5062.500000 0 181.700000 -5062.500000 0 181.700000 -5061.700000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -5062.500000 0 494.500000 -5062.500000 0 494.500000 -5063.200000 0 181.700000 -5063.200000 0 181.700000 -5062.500000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -5063.200000 0 494.500000 -5063.200000 0 494.500000 -5064.000000 0 181.700000 -5064.000000 0 181.700000 -5063.200000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -5064.000000 0 494.500000 -5064.000000 0 494.500000 -5064.700000 0 181.700000 -5064.700000 0 181.700000 -5064.000000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -5064.700000 0 494.500000 -5064.700000 0 494.500000 -5065.500000 0 181.700000 -5065.500000 0 181.700000 -5064.700000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -5065.500000 0 494.500000 -5065.500000 0 494.500000 -5066.300000 0 181.700000 -5066.300000 0 181.700000 -5065.500000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -5066.300000 0 494.500000 -5066.300000 0 494.500000 -5067.000000 0 181.700000 -5067.000000 0 181.700000 -5066.300000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -5067.000000 0 494.500000 -5067.000000 0 494.500000 -5067.800000 0 181.700000 -5067.800000 0 181.700000 -5067.000000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -5067.800000 0 494.500000 -5067.800000 0 494.500000 -5068.500000 0 181.700000 -5068.500000 0 181.700000 -5067.800000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -5068.500000 0 494.500000 -5068.500000 0 494.500000 -5069.300000 0 181.700000 -5069.300000 0 181.700000 -5068.500000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -5069.300000 0 494.500000 -5069.300000 0 494.500000 -5070.100000 0 181.700000 -5070.100000 0 181.700000 -5069.300000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -5070.100000 0 494.500000 -5070.100000 0 494.500000 -5070.800000 0 181.700000 -5070.800000 0 181.700000 -5070.100000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -5070.800000 0 494.500000 -5070.800000 0 494.500000 -5071.600000 0 181.700000 -5071.600000 0 181.700000 -5070.800000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -5071.600000 0 494.500000 -5071.600000 0 494.500000 -5072.300000 0 181.700000 -5072.300000 0 181.700000 -5071.600000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -5072.300000 0 494.500000 -5072.300000 0 494.500000 -5073.100000 0 181.700000 -5073.100000 0 181.700000 -5072.300000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -5073.100000 0 494.500000 -5073.100000 0 494.500000 -5073.800000 0 181.700000 -5073.800000 0 181.700000 -5073.100000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -5073.800000 0 494.500000 -5073.800000 0 494.500000 -5074.600000 0 181.700000 -5074.600000 0 181.700000 -5073.800000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -5074.600000 0 494.500000 -5074.600000 0 494.500000 -5075.400000 0 181.700000 -5075.400000 0 181.700000 -5074.600000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -5075.400000 0 494.500000 -5075.400000 0 494.500000 -5076.100000 0 181.700000 -5076.100000 0 181.700000 -5075.400000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -5076.100000 0 494.500000 -5076.100000 0 494.500000 -5076.900000 0 181.700000 -5076.900000 0 181.700000 -5076.100000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -5076.900000 0 494.500000 -5076.900000 0 494.500000 -5077.600000 0 181.700000 -5077.600000 0 181.700000 -5076.900000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -5077.600000 0 494.500000 -5077.600000 0 494.500000 -5078.400000 0 181.700000 -5078.400000 0 181.700000 -5077.600000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -5078.400000 0 494.500000 -5078.400000 0 494.500000 -5079.200000 0 181.700000 -5079.200000 0 181.700000 -5078.400000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -5079.200000 0 494.500000 -5079.200000 0 494.500000 -5079.900000 0 181.700000 -5079.900000 0 181.700000 -5079.200000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -5079.900000 0 494.500000 -5079.900000 0 494.500000 -5080.700000 0 181.700000 -5080.700000 0 181.700000 -5079.900000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -5080.700000 0 494.500000 -5080.700000 0 494.500000 -5081.400000 0 181.700000 -5081.400000 0 181.700000 -5080.700000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -5081.400000 0 494.500000 -5081.400000 0 494.500000 -5082.200000 0 181.700000 -5082.200000 0 181.700000 -5081.400000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -5082.200000 0 494.500000 -5082.200000 0 494.500000 -5083.000000 0 181.700000 -5083.000000 0 181.700000 -5082.200000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -5083.000000 0 494.500000 -5083.000000 0 494.500000 -5083.700000 0 181.700000 -5083.700000 0 181.700000 -5083.000000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -5083.700000 0 494.500000 -5083.700000 0 494.500000 -5084.500000 0 181.700000 -5084.500000 0 181.700000 -5083.700000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -5084.500000 0 494.500000 -5084.500000 0 494.500000 -5085.200000 0 181.700000 -5085.200000 0 181.700000 -5084.500000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -5085.200000 0 494.500000 -5085.200000 0 494.500000 -5086.000000 0 181.700000 -5086.000000 0 181.700000 -5085.200000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -5086.000000 0 494.500000 -5086.000000 0 494.500000 -5086.700000 0 181.700000 -5086.700000 0 181.700000 -5086.000000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -5086.700000 0 494.500000 -5086.700000 0 494.500000 -5087.500000 0 181.700000 -5087.500000 0 181.700000 -5086.700000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -5087.500000 0 494.500000 -5087.500000 0 494.500000 -5088.300000 0 181.700000 -5088.300000 0 181.700000 -5087.500000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -5088.300000 0 494.500000 -5088.300000 0 494.500000 -5089.000000 0 181.700000 -5089.000000 0 181.700000 -5088.300000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -5089.000000 0 494.500000 -5089.000000 0 494.500000 -5089.800000 0 181.700000 -5089.800000 0 181.700000 -5089.000000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -5089.800000 0 494.500000 -5089.800000 0 494.500000 -5090.500000 0 181.700000 -5090.500000 0 181.700000 -5089.800000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -5090.500000 0 494.500000 -5090.500000 0 494.500000 -5091.300000 0 181.700000 -5091.300000 0 181.700000 -5090.500000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -5091.300000 0 494.500000 -5091.300000 0 494.500000 -5092.100000 0 181.700000 -5092.100000 0 181.700000 -5091.300000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -5092.100000 0 494.500000 -5092.100000 0 494.500000 -5092.800000 0 181.700000 -5092.800000 0 181.700000 -5092.100000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -5092.800000 0 494.500000 -5092.800000 0 494.500000 -5093.600000 0 181.700000 -5093.600000 0 181.700000 -5092.800000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -5093.600000 0 494.500000 -5093.600000 0 494.500000 -5094.300000 0 181.700000 -5094.300000 0 181.700000 -5093.600000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -5094.300000 0 494.500000 -5094.300000 0 494.500000 -5095.100000 0 181.700000 -5095.100000 0 181.700000 -5094.300000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -5095.100000 0 494.500000 -5095.100000 0 494.500000 -5095.900000 0 181.700000 -5095.900000 0 181.700000 -5095.100000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -5095.900000 0 494.500000 -5095.900000 0 494.500000 -5096.600000 0 181.700000 -5096.600000 0 181.700000 -5095.900000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -5096.600000 0 494.500000 -5096.600000 0 494.500000 -5097.400000 0 181.700000 -5097.400000 0 181.700000 -5096.600000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -5097.400000 0 494.500000 -5097.400000 0 494.500000 -5098.100000 0 181.700000 -5098.100000 0 181.700000 -5097.400000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -5098.100000 0 494.500000 -5098.100000 0 494.500000 -5098.900000 0 181.700000 -5098.900000 0 181.700000 -5098.100000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -5098.900000 0 494.500000 -5098.900000 0 494.500000 -5099.600000 0 181.700000 -5099.600000 0 181.700000 -5098.900000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -5099.600000 0 494.500000 -5099.600000 0 494.500000 -5100.400000 0 181.700000 -5100.400000 0 181.700000 -5099.600000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -5100.400000 0 494.500000 -5100.400000 0 494.500000 -5101.200000 0 181.700000 -5101.200000 0 181.700000 -5100.400000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -5101.200000 0 494.500000 -5101.200000 0 494.500000 -5101.900000 0 181.700000 -5101.900000 0 181.700000 -5101.200000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -5101.900000 0 494.500000 -5101.900000 0 494.500000 -5102.700000 0 181.700000 -5102.700000 0 181.700000 -5101.900000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -5102.700000 0 494.500000 -5102.700000 0 494.500000 -5103.400000 0 181.700000 -5103.400000 0 181.700000 -5102.700000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -5103.400000 0 494.500000 -5103.400000 0 494.500000 -5104.200000 0 181.700000 -5104.200000 0 181.700000 -5103.400000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -5104.200000 0 494.500000 -5104.200000 0 494.500000 -5105.000000 0 181.700000 -5105.000000 0 181.700000 -5104.200000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -5105.000000 0 494.500000 -5105.000000 0 494.500000 -5105.700000 0 181.700000 -5105.700000 0 181.700000 -5105.000000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -5105.700000 0 494.500000 -5105.700000 0 494.500000 -5106.500000 0 181.700000 -5106.500000 0 181.700000 -5105.700000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -5106.500000 0 494.500000 -5106.500000 0 494.500000 -5107.200000 0 181.700000 -5107.200000 0 181.700000 -5106.500000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -5107.200000 0 494.500000 -5107.200000 0 494.500000 -5108.000000 0 181.700000 -5108.000000 0 181.700000 -5107.200000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -5108.000000 0 494.500000 -5108.000000 0 494.500000 -5108.800000 0 181.700000 -5108.800000 0 181.700000 -5108.000000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -5108.800000 0 494.500000 -5108.800000 0 494.500000 -5109.500000 0 181.700000 -5109.500000 0 181.700000 -5108.800000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -5109.500000 0 494.500000 -5109.500000 0 494.500000 -5110.300000 0 181.700000 -5110.300000 0 181.700000 -5109.500000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -5110.300000 0 494.500000 -5110.300000 0 494.500000 -5111.000000 0 181.700000 -5111.000000 0 181.700000 -5110.300000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -5111.000000 0 494.500000 -5111.000000 0 494.500000 -5111.800000 0 181.700000 -5111.800000 0 181.700000 -5111.000000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -5111.800000 0 494.500000 -5111.800000 0 494.500000 -5112.500000 0 181.700000 -5112.500000 0 181.700000 -5111.800000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -5112.500000 0 494.500000 -5112.500000 0 494.500000 -5113.300000 0 181.700000 -5113.300000 0 181.700000 -5112.500000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -5113.300000 0 494.500000 -5113.300000 0 494.500000 -5114.100000 0 181.700000 -5114.100000 0 181.700000 -5113.300000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -5114.100000 0 494.500000 -5114.100000 0 494.500000 -5114.800000 0 181.700000 -5114.800000 0 181.700000 -5114.100000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -5114.800000 0 494.500000 -5114.800000 0 494.500000 -5115.600000 0 181.700000 -5115.600000 0 181.700000 -5114.800000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -5115.600000 0 494.500000 -5115.600000 0 494.500000 -5116.300000 0 181.700000 -5116.300000 0 181.700000 -5115.600000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -5116.300000 0 494.500000 -5116.300000 0 494.500000 -5117.100000 0 181.700000 -5117.100000 0 181.700000 -5116.300000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -5117.100000 0 494.500000 -5117.100000 0 494.500000 -5117.900000 0 181.700000 -5117.900000 0 181.700000 -5117.100000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -5117.900000 0 494.500000 -5117.900000 0 494.500000 -5118.600000 0 181.700000 -5118.600000 0 181.700000 -5117.900000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -5118.600000 0 494.500000 -5118.600000 0 494.500000 -5119.400000 0 181.700000 -5119.400000 0 181.700000 -5118.600000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -5119.400000 0 494.500000 -5119.400000 0 494.500000 -5120.100000 0 181.700000 -5120.100000 0 181.700000 -5119.400000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -5120.100000 0 494.500000 -5120.100000 0 494.500000 -5120.900000 0 181.700000 -5120.900000 0 181.700000 -5120.100000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -5120.900000 0 494.500000 -5120.900000 0 494.500000 -5121.700000 0 181.700000 -5121.700000 0 181.700000 -5120.900000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -5121.700000 0 494.500000 -5121.700000 0 494.500000 -5122.400000 0 181.700000 -5122.400000 0 181.700000 -5121.700000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -5122.400000 0 494.500000 -5122.400000 0 494.500000 -5123.200000 0 181.700000 -5123.200000 0 181.700000 -5122.400000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -5123.200000 0 494.500000 -5123.200000 0 494.500000 -5123.900000 0 181.700000 -5123.900000 0 181.700000 -5123.200000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -5123.900000 0 494.500000 -5123.900000 0 494.500000 -5124.700000 0 181.700000 -5124.700000 0 181.700000 -5123.900000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -5124.700000 0 494.500000 -5124.700000 0 494.500000 -5125.400000 0 181.700000 -5125.400000 0 181.700000 -5124.700000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -5125.400000 0 494.500000 -5125.400000 0 494.500000 -5126.200000 0 181.700000 -5126.200000 0 181.700000 -5125.400000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -5126.200000 0 494.500000 -5126.200000 0 494.500000 -5127.000000 0 181.700000 -5127.000000 0 181.700000 -5126.200000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -5127.000000 0 494.500000 -5127.000000 0 494.500000 -5127.700000 0 181.700000 -5127.700000 0 181.700000 -5127.000000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -5127.700000 0 494.500000 -5127.700000 0 494.500000 -5128.500000 0 181.700000 -5128.500000 0 181.700000 -5127.700000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -5128.500000 0 494.500000 -5128.500000 0 494.500000 -5129.200000 0 181.700000 -5129.200000 0 181.700000 -5128.500000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -5129.200000 0 494.500000 -5129.200000 0 494.500000 -5130.000000 0 181.700000 -5130.000000 0 181.700000 -5129.200000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -5130.000000 0 494.500000 -5130.000000 0 494.500000 -5130.800000 0 181.700000 -5130.800000 0 181.700000 -5130.000000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -5130.800000 0 494.500000 -5130.800000 0 494.500000 -5131.500000 0 181.700000 -5131.500000 0 181.700000 -5130.800000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -5131.500000 0 494.500000 -5131.500000 0 494.500000 -5132.300000 0 181.700000 -5132.300000 0 181.700000 -5131.500000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -5132.300000 0 494.500000 -5132.300000 0 494.500000 -5133.000000 0 181.700000 -5133.000000 0 181.700000 -5132.300000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -5133.000000 0 494.500000 -5133.000000 0 494.500000 -5133.800000 0 181.700000 -5133.800000 0 181.700000 -5133.000000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -5133.800000 0 494.500000 -5133.800000 0 494.500000 -5134.600000 0 181.700000 -5134.600000 0 181.700000 -5133.800000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -5134.600000 0 494.500000 -5134.600000 0 494.500000 -5135.300000 0 181.700000 -5135.300000 0 181.700000 -5134.600000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -5135.300000 0 494.500000 -5135.300000 0 494.500000 -5136.100000 0 181.700000 -5136.100000 0 181.700000 -5135.300000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -5136.100000 0 494.500000 -5136.100000 0 494.500000 -5136.800000 0 181.700000 -5136.800000 0 181.700000 -5136.100000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -5136.800000 0 494.500000 -5136.800000 0 494.500000 -5137.600000 0 181.700000 -5137.600000 0 181.700000 -5136.800000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -5137.600000 0 494.500000 -5137.600000 0 494.500000 -5138.300000 0 181.700000 -5138.300000 0 181.700000 -5137.600000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -5138.300000 0 494.500000 -5138.300000 0 494.500000 -5139.100000 0 181.700000 -5139.100000 0 181.700000 -5138.300000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -5139.100000 0 494.500000 -5139.100000 0 494.500000 -5139.900000 0 181.700000 -5139.900000 0 181.700000 -5139.100000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -5139.900000 0 494.500000 -5139.900000 0 494.500000 -5140.600000 0 181.700000 -5140.600000 0 181.700000 -5139.900000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -5140.600000 0 494.500000 -5140.600000 0 494.500000 -5141.400000 0 181.700000 -5141.400000 0 181.700000 -5140.600000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -5141.400000 0 494.500000 -5141.400000 0 494.500000 -5142.100000 0 181.700000 -5142.100000 0 181.700000 -5141.400000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -5142.100000 0 494.500000 -5142.100000 0 494.500000 -5142.900000 0 181.700000 -5142.900000 0 181.700000 -5142.100000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -5142.900000 0 494.500000 -5142.900000 0 494.500000 -5143.700000 0 181.700000 -5143.700000 0 181.700000 -5142.900000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -5143.700000 0 494.500000 -5143.700000 0 494.500000 -5144.400000 0 181.700000 -5144.400000 0 181.700000 -5143.700000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -5144.400000 0 494.500000 -5144.400000 0 494.500000 -5145.200000 0 181.700000 -5145.200000 0 181.700000 -5144.400000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -5145.200000 0 494.500000 -5145.200000 0 494.500000 -5145.900000 0 181.700000 -5145.900000 0 181.700000 -5145.200000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -5145.900000 0 494.500000 -5145.900000 0 494.500000 -5146.700000 0 181.700000 -5146.700000 0 181.700000 -5145.900000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -5146.700000 0 494.500000 -5146.700000 0 494.500000 -5147.500000 0 181.700000 -5147.500000 0 181.700000 -5146.700000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -5147.500000 0 494.500000 -5147.500000 0 494.500000 -5148.200000 0 181.700000 -5148.200000 0 181.700000 -5147.500000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -5148.200000 0 494.500000 -5148.200000 0 494.500000 -5149.000000 0 181.700000 -5149.000000 0 181.700000 -5148.200000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -5149.000000 0 494.500000 -5149.000000 0 494.500000 -5149.700000 0 181.700000 -5149.700000 0 181.700000 -5149.000000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -5149.700000 0 494.500000 -5149.700000 0 494.500000 -5150.500000 0 181.700000 -5150.500000 0 181.700000 -5149.700000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -5150.500000 0 494.500000 -5150.500000 0 494.500000 -5151.200000 0 181.700000 -5151.200000 0 181.700000 -5150.500000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -5151.200000 0 494.500000 -5151.200000 0 494.500000 -5152.000000 0 181.700000 -5152.000000 0 181.700000 -5151.200000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -5152.000000 0 494.500000 -5152.000000 0 494.500000 -5152.800000 0 181.700000 -5152.800000 0 181.700000 -5152.000000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -5152.800000 0 494.500000 -5152.800000 0 494.500000 -5153.500000 0 181.700000 -5153.500000 0 181.700000 -5152.800000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -5153.500000 0 494.500000 -5153.500000 0 494.500000 -5154.300000 0 181.700000 -5154.300000 0 181.700000 -5153.500000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -5154.300000 0 494.500000 -5154.300000 0 494.500000 -5155.000000 0 181.700000 -5155.000000 0 181.700000 -5154.300000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -5155.000000 0 494.500000 -5155.000000 0 494.500000 -5155.800000 0 181.700000 -5155.800000 0 181.700000 -5155.000000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -5155.800000 0 494.500000 -5155.800000 0 494.500000 -5156.600000 0 181.700000 -5156.600000 0 181.700000 -5155.800000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -5156.600000 0 494.500000 -5156.600000 0 494.500000 -5157.300000 0 181.700000 -5157.300000 0 181.700000 -5156.600000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -5157.300000 0 494.500000 -5157.300000 0 494.500000 -5158.100000 0 181.700000 -5158.100000 0 181.700000 -5157.300000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -5158.100000 0 494.500000 -5158.100000 0 494.500000 -5158.800000 0 181.700000 -5158.800000 0 181.700000 -5158.100000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -5158.800000 0 494.500000 -5158.800000 0 494.500000 -5159.600000 0 181.700000 -5159.600000 0 181.700000 -5158.800000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -5159.600000 0 494.500000 -5159.600000 0 494.500000 -5160.400000 0 181.700000 -5160.400000 0 181.700000 -5159.600000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -5160.400000 0 494.500000 -5160.400000 0 494.500000 -5161.100000 0 181.700000 -5161.100000 0 181.700000 -5160.400000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -5161.100000 0 494.500000 -5161.100000 0 494.500000 -5161.900000 0 181.700000 -5161.900000 0 181.700000 -5161.100000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -5161.900000 0 494.500000 -5161.900000 0 494.500000 -5162.600000 0 181.700000 -5162.600000 0 181.700000 -5161.900000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -5162.600000 0 494.500000 -5162.600000 0 494.500000 -5163.400000 0 181.700000 -5163.400000 0 181.700000 -5162.600000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -5163.400000 0 494.500000 -5163.400000 0 494.500000 -5164.100000 0 181.700000 -5164.100000 0 181.700000 -5163.400000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -5164.100000 0 494.500000 -5164.100000 0 494.500000 -5164.900000 0 181.700000 -5164.900000 0 181.700000 -5164.100000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -5164.900000 0 494.500000 -5164.900000 0 494.500000 -5165.700000 0 181.700000 -5165.700000 0 181.700000 -5164.900000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -5165.700000 0 494.500000 -5165.700000 0 494.500000 -5166.400000 0 181.700000 -5166.400000 0 181.700000 -5165.700000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -5166.400000 0 494.500000 -5166.400000 0 494.500000 -5167.200000 0 181.700000 -5167.200000 0 181.700000 -5166.400000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -5167.100000 0 181.800000 -5167.100000 0 181.800000 -4973.800000 0 494.400000 -4973.800000 0 494.400000 -5167.100000 0 338.100000 -5167.100000 0
+strokePath subpath 1 338.100000 -5167.100000 0 181.800000 -5167.100000 0 181.800000 -4973.800000 0 494.400000 -4973.800000 0 494.400000 -5167.100000 0 338.100000 -5167.100000 0
+saveState
+updateCtm 11420.000000 0.000000 0.000000 -8760.000000 20530.000000 588310.000000
+drawSoftMaskedImage 1143 877 1143 877 JPEG 71324 PPM 3007249
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -5128.076000 215.488000 -5136.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -5128.076000 220.592000 -5136.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -5128.076000 225.696000 -5136.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -5128.076000 230.800000 -5136.076000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -5135.676000 241.388000 -5143.676000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -5135.676000 246.492000 -5143.676000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -5135.676000 251.596000 -5143.676000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -5135.676000 256.700000 -5143.676000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -5143.276000 267.188000 -5151.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -5143.276000 272.292000 -5151.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -5143.276000 277.396000 -5151.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -5143.276000 282.500000 -5151.276000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -5150.876000 293.088000 -5158.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -5150.876000 298.192000 -5158.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -5150.876000 303.296000 -5158.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -5150.876000 308.400000 -5158.876000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -5113.076000 202.588000 -5121.076000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -5093.776000 201.688000 -5101.776000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -5074.476000 195.788000 -5082.476000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -5074.476000 200.892000 -5082.476000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -5055.076000 194.888000 -5063.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -5055.076000 199.992000 -5063.076000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -5035.776000 193.988000 -5043.776000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -5035.776000 199.092000 -5043.776000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -5016.476000 193.088000 -5024.476000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -5016.476000 198.192000 -5024.476000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -5144.376000 330.188000 -5152.376000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -5144.376000 332.716000 -5152.376000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -5144.376000 337.596000 -5152.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -5144.376000 341.396000 -5152.376000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -5144.376000 346.036000 -5152.376000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -5144.376000 350.900000 -5152.376000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -5144.376000 355.972000 -5152.376000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -5144.376000 359.196000 -5152.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -5144.376000 362.196000 -5152.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -5144.376000 367.404000 -5152.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -5144.376000 371.876000 -5152.376000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -5144.376000 375.052000 -5152.376000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -5124.876000 361.172000 -5132.876000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -5124.876000 364.340000 -5132.876000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -5124.876000 367.396000 -5132.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -5124.876000 372.604000 -5132.876000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -5124.876000 379.348000 -5132.876000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -5124.876000 384.484000 -5132.876000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -5124.876000 389.436000 -5132.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -5124.876000 392.108000 -5132.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -5124.876000 395.708000 -5132.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -5124.876000 397.540000 -5132.876000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -5124.876000 402.444000 -5132.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -5124.876000 406.788000 -5132.876000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -5105.276000 392.972000 -5113.276000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -5105.276000 398.076000 -5113.276000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -5105.276000 403.180000 -5113.276000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -5105.276000 405.428000 -5113.276000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -5105.276000 410.332000 -5113.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -5105.276000 414.476000 -5113.276000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -4977.708000 305.808000 -4991.708000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -4977.708000 314.138000 -4991.708000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -4977.708000 320.788000 -4991.708000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -4977.708000 328.698000 -4991.708000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -4977.708000 336.972000 -4991.708000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -4977.708000 344.182000 -4991.708000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -4977.708000 349.810000 -4991.708000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -4977.708000 354.234000 -4991.708000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -4977.708000 362.718000 -4991.708000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -4977.708000 367.870000 -4991.708000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -4977.708000 372.322000 -4991.708000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -4977.708000 382.080000 -4991.708000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -4977.708000 388.772000 -4991.708000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -4977.708000 397.802000 -4991.708000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -4977.708000 402.254000 -4991.708000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -4977.708000 407.896000 -4991.708000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -5100.600000 0 424.300000 -5100.600000 0 424.300000 -5039.900000 0 493.600000 -5039.900000 0 493.600000 -5100.600000 0 458.900000 -5100.600000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -5049.500000 0 428.900000 -5049.500000 0 428.900000 -5043.500000 0 434.800000 -5043.500000 0 434.800000 -5049.500000 0 431.900000 -5049.500000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -5060.600000 0 428.900000 -5060.600000 0 428.900000 -5054.600000 0 434.800000 -5054.600000 0 434.800000 -5060.600000 0 431.900000 -5060.600000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -5071.700000 0 428.900000 -5071.700000 0 428.900000 -5065.700000 0 434.800000 -5065.700000 0 434.800000 -5071.700000 0 431.900000 -5071.700000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -5082.800000 0 428.900000 -5082.800000 0 428.900000 -5076.800000 0 434.800000 -5076.800000 0 434.800000 -5082.800000 0 431.900000 -5082.800000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -5093.900000 0 428.900000 -5093.900000 0 428.900000 -5087.900000 0 434.800000 -5087.900000 0 434.800000 -5093.900000 0 431.900000 -5093.900000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -5042.376000 443.288000 -5050.376000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -5042.376000 445.816000 -5050.376000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -5042.376000 450.600000 -5050.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -5042.376000 454.496000 -5050.376000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -5042.376000 459.136000 -5050.376000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -5042.376000 464.000000 -5050.376000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -5042.376000 468.976000 -5050.376000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -5042.376000 472.304000 -5050.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -5042.376000 475.208000 -5050.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -5042.376000 480.520000 -5050.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -5042.376000 484.992000 -5050.376000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -5042.376000 488.168000 -5050.376000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -5053.476000 443.352000 -5061.476000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -5053.476000 447.920000 -5061.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -5053.476000 452.976000 -5061.476000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -5053.476000 457.400000 -5061.476000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -5053.476000 462.472000 -5061.476000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -5053.476000 465.800000 -5061.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -5053.476000 468.904000 -5061.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -5053.476000 473.816000 -5061.476000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -5053.476000 478.888000 -5061.476000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -5053.476000 482.064000 -5061.476000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -5064.576000 442.872000 -5072.576000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -5064.576000 446.040000 -5072.576000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -5064.576000 448.992000 -5072.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -5064.576000 454.304000 -5072.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -5064.576000 461.048000 -5072.576000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -5064.576000 466.184000 -5072.576000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -5064.576000 471.136000 -5072.576000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -5064.576000 473.808000 -5072.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -5064.576000 477.408000 -5072.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -5064.576000 479.240000 -5072.576000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -5064.576000 484.144000 -5072.576000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -5064.576000 488.488000 -5072.576000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -5075.676000 443.384000 -5083.676000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -5075.676000 448.464000 -5083.676000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -5075.676000 453.424000 -5083.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -5075.676000 456.696000 -5083.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -5075.676000 459.800000 -5083.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -5075.676000 462.032000 -5083.676000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -5075.676000 466.936000 -5083.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -5075.676000 471.080000 -5083.676000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -5086.776000 443.272000 -5094.776000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -5086.776000 448.376000 -5094.776000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -5086.776000 453.480000 -5094.776000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -5086.776000 455.728000 -5094.776000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -5086.776000 460.632000 -5094.776000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -5086.776000 464.776000 -5094.776000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -7731.800000 0 114.800000 -7731.800000 0 114.800000 -7689.000000 0 72.000000 -7689.000000 0 72.000000 -7731.800000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 852370.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 108.000000 546.200000 0 540.000000 546.200000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 546.200000 0
+eoFillPath subpath 1 108.000000 72.000000 0 540.000000 72.000000 0 540.000000 245.800000 0 108.000000 245.800000 0 108.000000 72.000000 0
+eoFillPath subpath 1 108.000000 245.800000 0 157.400000 245.800000 0 157.400000 546.200000 0 108.000000 546.200000 0 108.000000 245.800000 0
+eoFillPath subpath 1 490.500000 245.800000 0 540.000000 245.800000 0 540.000000 546.200000 0 490.500000 546.200000 0 490.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 15740.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 108.000000 701.300000 0 540.000000 701.300000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 701.300000 0
+eoFillPath subpath 1 108.000000 76.200000 0 540.000000 76.200000 0 540.000000 90.100000 0 108.000000 90.100000 0 108.000000 76.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 108.100000 719.948000 121.892000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 121.908000 719.948000 131.364000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 131.412000 719.948000 136.484000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 136.516000 719.948000 148.532000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 148.516000 719.948000 158.292000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 158.324000 719.948000 168.452000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 168.420000 719.948000 176.740000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 176.724000 719.948000 186.564000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 186.532000 719.948000 191.604000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 191.636000 719.948000 197.396000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 197.444000 719.948000 202.516000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 202.500000 719.948000 212.644000 703.948000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 212.708000 719.948000 222.548000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 222.516000 719.948000 231.300000 703.948000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 231.316000 719.948000 241.092000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 241.124000 719.948000 251.252000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 251.220000 719.948000 261.364000 703.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 261.428000 719.948000 266.500000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.532000 719.948000 275.732000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 275.732000 719.948000 280.164000 703.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 280.132000 719.948000 289.908000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 289.940000 719.948000 299.716000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 299.748000 719.948000 306.324000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 672.936000 225.940000 660.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 225.904000 672.936000 231.640000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 231.700000 672.936000 238.792000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 238.804000 672.936000 245.956000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 245.908000 672.936000 253.168000 660.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 253.204000 672.936000 257.008000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.308000 672.936000 261.112000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 261.412000 672.936000 266.152000 660.936000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 266.512000 672.936000 270.316000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.712000 672.936000 278.440000 660.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 278.416000 672.936000 285.508000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 285.520000 672.936000 292.612000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 292.624000 672.936000 300.304000 660.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 300.628000 672.936000 304.432000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 304.732000 672.936000 311.884000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 312.232000 672.936000 316.036000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.432000 672.936000 320.260000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 320.236000 672.936000 327.460000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 327.532000 672.936000 332.344000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 332.632000 672.936000 336.436000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 336.736000 672.936000 343.960000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 343.936000 672.936000 348.376000 660.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 348.736000 672.936000 352.540000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 352.936000 672.936000 359.092000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 359.140000 672.936000 366.820000 660.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 366.736000 672.936000 373.888000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 373.936000 672.936000 380.656000 660.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 380.632000 672.936000 387.724000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.036000 672.936000 391.840000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 392.140000 672.936000 396.952000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 396.940000 672.936000 404.164000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 404.440000 672.936000 408.244000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 408.736000 672.936000 414.892000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 414.940000 672.936000 422.620000 660.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 422.536000 672.936000 428.272000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 428.236000 672.936000 435.328000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 435.340000 672.936000 442.492000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 442.540000 672.936000 450.220000 660.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 450.544000 672.936000 454.348000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.648000 672.936000 461.872000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 461.848000 672.936000 469.576000 660.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.648000 672.936000 474.460000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 474.748000 672.936000 478.552000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.948000 672.936000 486.100000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 486.148000 672.936000 489.976000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 489.952000 672.936000 493.780000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 494.056000 672.936000 497.860000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 498.160000 672.936000 509.536000 660.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 509.560000 672.936000 516.328000 660.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 516.664000 672.936000 520.468000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 520.864000 672.936000 528.544000 660.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 528.568000 672.936000 535.720000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.100000 672.936000 540.144000 660.936000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 659.036000 229.180000 647.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 229.204000 659.036000 236.296000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.308000 659.036000 242.044000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 242.008000 659.036000 248.164000 647.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 248.212000 659.036000 252.016000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.808000 659.036000 256.612000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.404000 659.036000 265.396000 647.036000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 265.408000 659.036000 273.136000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 273.112000 659.036000 280.204000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 280.216000 659.036000 285.952000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 286.012000 659.036000 293.104000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 293.116000 659.036000 297.556000 647.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 297.520000 659.036000 304.744000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 304.720000 659.036000 310.456000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 310.516000 659.036000 317.608000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 317.620000 659.036000 321.424000 647.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 322.216000 659.036000 326.020000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.920000 659.036000 331.660000 647.036000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 332.524000 659.036000 336.328000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 337.120000 659.036000 344.800000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 344.716000 659.036000 351.940000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 352.012000 659.036000 359.740000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 359.716000 659.036000 363.004000 647.036000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 363.016000 659.036000 367.828000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 368.620000 659.036000 372.424000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 373.324000 659.036000 381.052000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 381.028000 659.036000 388.180000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 388.228000 659.036000 394.996000 647.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 395.032000 659.036000 402.124000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.928000 659.036000 406.732000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.524000 659.036000 411.244000 647.036000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 411.220000 659.036000 418.948000 647.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 418.924000 659.036000 425.080000 647.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 425.128000 659.036000 429.940000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 430.732000 659.036000 434.536000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 435.532000 659.036000 442.684000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 443.428000 659.036000 447.232000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 448.024000 659.036000 455.752000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 455.728000 659.036000 462.952000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 463.024000 659.036000 468.760000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.724000 659.036000 480.100000 647.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 480.124000 659.036000 487.276000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 487.324000 659.036000 491.152000 647.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 491.920000 659.036000 495.724000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 496.624000 659.036000 502.780000 647.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 502.828000 659.036000 510.556000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 510.532000 659.036000 517.684000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 517.636000 659.036000 525.316000 647.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 525.340000 659.036000 532.432000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 532.444000 659.036000 540.124000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 659.036000 543.904000 647.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 645.136000 229.180000 633.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 229.204000 645.136000 236.296000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.308000 645.136000 242.464000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 242.404000 645.136000 249.664000 633.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 249.700000 645.136000 253.732000 633.136000 1.000000 0.000000 0.000000 1.000000 ;
+drawChar 255.304000 645.136000 259.108000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 260.704000 645.136000 272.080000 633.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 272.008000 645.136000 278.776000 633.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 280.408000 645.136000 284.212000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.808000 645.136000 293.488000 633.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 293.512000 645.136000 300.604000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 300.616000 645.136000 306.772000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 306.712000 645.136000 313.972000 633.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 315.616000 645.136000 319.420000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 321.016000 645.136000 325.456000 633.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 325.420000 645.136000 332.644000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 332.716000 645.136000 338.452000 633.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 338.416000 645.136000 349.792000 633.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 349.816000 645.136000 355.972000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 357.520000 645.136000 361.324000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.920000 645.136000 370.072000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 371.620000 645.136000 375.424000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.020000 645.136000 382.528000 633.136000 1.000000 0.000000 0.000000 1.000000 "
+drawChar 382.516000 645.136000 392.620000 633.136000 1.000000 0.000000 0.000000 1.000000 U
+drawChar 392.620000 645.136000 398.128000 633.136000 1.000000 0.000000 0.000000 1.000000 "
+drawChar 399.724000 645.136000 403.528000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 405.220000 645.136000 411.376000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 411.424000 645.136000 419.152000 633.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 419.020000 645.136000 426.172000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 426.220000 645.136000 433.900000 633.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 433.816000 645.136000 440.908000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 442.516000 645.136000 446.320000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 447.916000 645.136000 455.068000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 455.116000 645.136000 460.852000 633.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 460.816000 645.136000 468.040000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 468.016000 645.136000 475.744000 633.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 475.720000 645.136000 483.448000 633.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 483.520000 645.136000 491.200000 633.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 492.820000 645.136000 496.624000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 498.220000 645.136000 509.596000 633.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 509.524000 645.136000 516.616000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 516.628000 645.136000 520.432000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.028000 645.136000 525.832000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 527.428000 645.136000 532.168000 633.136000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 532.132000 645.136000 539.860000 633.136000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 645.136000 543.904000 633.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 631.236000 225.940000 619.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 225.904000 631.236000 231.640000 619.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 231.700000 631.236000 238.924000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 238.900000 631.236000 246.628000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 246.604000 631.236000 251.416000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 252.808000 631.236000 256.612000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.004000 631.236000 265.228000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 265.204000 631.236000 269.644000 619.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 270.904000 631.236000 274.708000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 276.100000 631.236000 287.476000 619.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 287.500000 631.236000 294.592000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 295.900000 631.236000 299.704000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 301.096000 631.236000 304.924000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 304.900000 631.236000 311.056000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 312.400000 631.236000 316.204000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.704000 631.236000 325.384000 619.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 325.300000 631.236000 329.128000 619.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 329.104000 631.236000 336.196000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 336.208000 631.236000 343.936000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 344.008000 631.236000 348.820000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 348.808000 631.236000 355.576000 619.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 356.908000 631.236000 360.712000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.104000 631.236000 369.328000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 369.304000 631.236000 373.744000 619.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 375.100000 631.236000 378.904000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.296000 631.236000 386.032000 619.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 385.996000 631.236000 393.220000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 393.292000 631.236000 400.516000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 400.492000 631.236000 411.868000 619.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 413.188000 631.236000 416.992000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 418.384000 631.236000 423.196000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 423.184000 631.236000 430.408000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 431.680000 631.236000 435.484000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 436.876000 631.236000 447.136000 619.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 447.172000 631.236000 452.908000 619.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 452.872000 631.236000 456.700000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 456.676000 631.236000 461.488000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 461.572000 631.236000 468.664000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 469.972000 631.236000 473.776000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 475.168000 631.236000 482.320000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 482.368000 631.236000 490.096000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 490.072000 631.236000 497.752000 619.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 499.072000 631.236000 502.876000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 504.268000 631.236000 509.008000 619.236000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 510.268000 631.236000 514.072000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 515.572000 631.236000 522.724000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 522.772000 631.236000 526.600000 619.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 526.468000 631.236000 532.624000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 532.672000 631.236000 539.896000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 631.236000 543.904000 619.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 617.336000 229.228000 605.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 229.204000 617.336000 236.356000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 236.404000 617.336000 243.172000 605.336000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 243.208000 617.336000 250.300000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 250.312000 617.336000 254.116000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 254.116000 617.336000 258.556000 605.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 258.616000 617.336000 264.352000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 264.316000 617.336000 271.408000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 271.420000 617.336000 278.512000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 278.524000 617.336000 282.328000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 282.424000 617.336000 289.576000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 289.528000 617.336000 296.248000 605.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 296.332000 617.336000 303.052000 605.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 303.028000 617.336000 310.120000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 310.132000 617.336000 316.288000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 316.228000 617.336000 322.384000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 322.432000 617.336000 326.236000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.332000 617.336000 331.144000 605.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 331.036000 617.336000 338.260000 605.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 338.236000 617.336000 342.040000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 342.232000 617.336000 353.608000 605.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 353.536000 617.336000 360.304000 605.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 360.340000 617.336000 364.144000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.144000 617.336000 374.404000 605.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 374.440000 617.336000 380.176000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 380.236000 617.336000 384.064000 605.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 384.040000 617.336000 388.852000 605.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 388.840000 617.336000 392.668000 605.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 392.740000 617.336000 400.468000 605.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 400.444000 617.336000 408.124000 605.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 408.148000 617.336000 411.952000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 411.952000 617.336000 419.680000 605.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 419.752000 617.336000 424.564000 605.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 424.552000 617.336000 431.644000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 431.656000 617.336000 439.384000 605.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 439.360000 617.336000 445.516000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 445.564000 617.336000 449.392000 605.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 449.368000 617.336000 453.196000 605.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 453.172000 617.336000 459.328000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 459.376000 617.336000 463.180000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 463.276000 617.336000 470.428000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 470.380000 617.336000 478.108000 605.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.180000 617.336000 485.860000 605.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 485.776000 617.336000 489.580000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 489.676000 617.336000 494.488000 605.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 494.572000 617.336000 502.300000 605.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 502.276000 617.336000 509.368000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 509.380000 617.336000 513.184000 605.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 513.200000 617.336000 518.012000 605.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 518.000000 617.336000 525.092000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 525.104000 617.336000 528.932000 605.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 528.908000 617.336000 536.000000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.100000 617.336000 540.144000 605.336000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 603.436000 229.180000 591.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 229.204000 603.436000 236.932000 591.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 236.908000 603.436000 244.132000 591.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 244.108000 603.436000 251.836000 591.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 251.908000 603.436000 259.000000 591.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 259.012000 603.436000 262.816000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.808000 603.436000 268.612000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.712000 603.436000 278.704000 591.436000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 277.816000 603.436000 285.040000 591.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 287.020000 603.436000 290.824000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 292.924000 603.436000 297.736000 591.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 297.724000 603.436000 305.452000 591.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 305.524000 603.436000 312.616000 591.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 314.620000 603.436000 318.424000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 320.524000 603.436000 326.260000 591.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 326.224000 603.436000 330.052000 591.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 330.124000 603.436000 337.804000 591.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 337.828000 603.436000 345.556000 591.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 345.532000 603.436000 350.344000 591.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 350.332000 603.436000 354.136000 591.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 356.128000 603.436000 359.932000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.032000 603.436000 366.772000 591.436000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 368.728000 603.436000 372.532000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.728000 603.436000 382.456000 591.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 382.432000 603.436000 389.584000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 389.536000 603.436000 396.304000 591.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 396.340000 603.436000 403.432000 591.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 405.436000 603.436000 409.240000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 411.340000 603.436000 418.492000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 422.644000 603.436000 426.448000 591.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 426.600000 603.436000 434.664000 591.436000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 434.700000 603.436000 443.880000 591.436000 1.000000 0.000000 0.000000 1.000000 C
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 443.900000 603.436000 447.704000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 451.796000 603.436000 458.948000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 458.996000 603.436000 466.724000 591.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 466.700000 603.436000 474.380000 591.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 476.504000 603.436000 480.308000 591.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 482.300000 603.436000 489.452000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 489.404000 603.436000 497.132000 591.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 501.308000 603.436000 505.112000 591.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 505.100000 603.436000 513.764000 591.436000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 513.800000 603.436000 521.480000 591.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 521.504000 603.436000 529.184000 591.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 529.208000 603.436000 533.036000 591.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 533.012000 603.436000 540.104000 591.436000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 603.436000 543.904000 591.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 589.536000 233.776000 577.536000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 233.800000 589.536000 240.952000 577.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 241.000000 589.536000 247.720000 577.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 247.696000 589.536000 251.524000 577.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 251.500000 589.536000 259.228000 577.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 259.204000 589.536000 264.016000 577.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 264.004000 589.536000 271.228000 577.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 271.204000 589.536000 277.360000 577.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 277.408000 589.536000 285.136000 577.536000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 285.200000 589.536000 289.004000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 289.904000 589.536000 293.708000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 294.704000 589.536000 302.924000 577.536000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 302.900000 589.536000 306.728000 577.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 306.800000 589.536000 314.528000 577.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 314.504000 589.536000 321.224000 577.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 321.200000 589.536000 328.292000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 329.300000 589.536000 333.104000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 334.196000 589.536000 338.936000 577.536000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 339.800000 589.536000 343.604000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 344.600000 589.536000 352.328000 577.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 352.304000 589.536000 359.456000 577.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 359.504000 589.536000 366.272000 577.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 366.308000 589.536000 373.400000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 374.408000 589.536000 378.212000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.208000 589.536000 384.020000 577.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 384.008000 589.536000 391.736000 577.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 391.808000 589.536000 398.900000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 399.704000 589.536000 403.508000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.600000 589.536000 411.320000 577.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 411.296000 589.536000 418.520000 577.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 418.496000 589.536000 429.872000 577.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 429.896000 589.536000 437.576000 577.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 437.600000 589.536000 445.328000 577.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 445.304000 589.536000 450.116000 577.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 450.200000 589.536000 457.292000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 457.304000 589.536000 463.040000 577.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 462.908000 589.536000 469.064000 577.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 470.108000 589.536000 473.912000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.908000 589.536000 482.636000 577.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 482.612000 589.536000 489.704000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 489.716000 589.536000 494.528000 577.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 494.612000 589.536000 504.872000 577.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 504.812000 589.536000 512.036000 577.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 512.012000 589.536000 517.748000 577.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 517.808000 589.536000 525.068000 577.536000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 525.104000 589.536000 532.196000 577.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 532.208000 589.536000 539.888000 577.536000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 589.536000 543.904000 577.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 575.636000 226.312000 563.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 575.636000 233.524000 563.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 233.500000 575.636000 241.180000 563.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 241.204000 575.636000 248.296000 563.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 248.308000 575.636000 253.120000 563.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 253.204000 575.636000 260.932000 563.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 260.908000 575.636000 268.000000 563.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 268.012000 575.636000 273.748000 563.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 272.416000 575.636000 276.220000 563.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 277.216000 575.636000 281.020000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 282.112000 575.636000 289.264000 563.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 289.312000 575.636000 297.040000 563.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 297.016000 575.636000 304.696000 563.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 305.716000 575.636000 309.520000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.612000 575.636000 317.836000 563.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 317.812000 575.636000 322.252000 563.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 322.312000 575.636000 327.124000 563.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 327.112000 575.636000 334.204000 563.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 334.216000 575.636000 341.944000 563.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 342.916000 575.636000 346.720000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 347.812000 575.636000 359.188000 563.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 359.212000 575.636000 366.940000 563.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 366.916000 575.636000 373.072000 563.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 373.120000 575.636000 377.932000 563.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 378.916000 575.636000 382.720000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.812000 575.636000 388.624000 563.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 388.708000 575.636000 394.444000 563.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 394.408000 575.636000 401.560000 563.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 401.608000 575.636000 409.336000 563.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 409.312000 575.636000 415.468000 563.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 415.408000 575.636000 419.848000 563.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 419.812000 575.636000 426.904000 563.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 426.916000 575.636000 432.652000 563.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 433.720000 575.636000 437.524000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.616000 575.636000 446.296000 563.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 446.320000 575.636000 453.544000 563.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 453.520000 575.636000 460.240000 563.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 460.216000 575.636000 467.944000 563.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 468.016000 575.636000 479.392000 563.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 479.320000 575.636000 486.412000 563.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 486.424000 575.636000 494.152000 563.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 494.224000 575.636000 499.036000 563.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 499.024000 575.636000 505.180000 563.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 506.224000 575.636000 510.028000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 511.120000 575.636000 515.560000 563.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 515.524000 575.636000 521.260000 563.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 521.320000 575.636000 528.544000 563.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 528.520000 575.636000 539.896000 563.636000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 575.636000 543.904000 563.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 561.736000 228.724000 549.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 228.700000 561.736000 236.428000 549.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.500000 561.736000 243.592000 549.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 244.396000 561.736000 248.200000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 248.992000 561.736000 253.804000 549.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 253.792000 561.736000 261.016000 549.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 261.796000 561.736000 265.600000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.392000 561.736000 271.204000 549.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 271.288000 561.736000 279.016000 549.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 278.992000 561.736000 286.084000 549.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 286.888000 561.736000 290.692000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 291.484000 561.736000 298.708000 549.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 298.684000 561.736000 303.496000 549.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 303.484000 561.736000 311.212000 549.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 311.284000 561.736000 318.376000 549.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 318.388000 561.736000 324.124000 549.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 322.792000 561.736000 326.596000 549.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 327.388000 561.736000 331.192000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.984000 561.736000 336.796000 549.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 336.784000 561.736000 344.512000 549.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 344.584000 561.736000 351.676000 549.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 352.480000 561.736000 356.284000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.880000 561.736000 365.872000 549.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 365.080000 561.736000 370.816000 549.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 370.780000 561.736000 376.936000 549.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 376.984000 561.736000 381.796000 549.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 382.588000 561.736000 386.392000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 387.184000 561.736000 394.408000 549.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 394.384000 561.736000 406.708000 549.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 406.780000 561.736000 413.500000 549.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 413.476000 561.736000 420.568000 549.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 421.372000 561.736000 425.176000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 425.968000 561.736000 432.124000 549.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 432.172000 561.736000 439.900000 549.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 439.876000 561.736000 443.704000 549.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 443.680000 561.736000 448.492000 549.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 448.480000 561.736000 455.572000 549.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 456.484000 561.736000 460.288000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 461.080000 561.736000 465.892000 549.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 465.880000 561.736000 473.104000 549.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 473.884000 561.736000 477.688000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.480000 561.736000 485.200000 549.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 485.284000 561.736000 492.508000 549.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 492.484000 561.736000 503.860000 549.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 503.884000 561.736000 510.976000 549.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 511.780000 561.736000 515.584000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 516.376000 561.736000 520.204000 549.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 520.180000 561.736000 527.908000 549.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 527.980000 561.736000 532.792000 549.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 532.780000 561.736000 540.004000 549.736000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 561.736000 544.004000 549.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 547.836000 228.220000 535.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 228.196000 547.836000 235.420000 535.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 235.396000 547.836000 243.124000 535.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 243.100000 547.836000 249.256000 535.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 249.304000 547.836000 253.132000 535.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 253.108000 547.836000 260.788000 535.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 260.812000 547.836000 267.904000 535.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 267.916000 547.836000 273.652000 535.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 273.616000 547.836000 280.768000 535.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 280.816000 547.836000 285.628000 535.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 285.616000 547.836000 289.444000 535.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 289.420000 547.836000 296.644000 535.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 296.620000 547.836000 304.348000 535.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 304.324000 547.836000 308.128000 535.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.128000 547.836000 312.568000 535.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 312.532000 547.836000 319.756000 535.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 319.732000 547.836000 325.468000 535.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 325.432000 547.836000 329.236000 535.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.236000 547.836000 340.612000 535.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 340.636000 547.836000 347.728000 535.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 347.740000 547.836000 351.544000 535.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.544000 547.836000 361.804000 535.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 361.840000 547.836000 368.992000 535.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 369.040000 547.836000 375.196000 535.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 375.244000 547.836000 379.048000 535.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.048000 547.836000 383.860000 535.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 383.848000 547.836000 391.576000 535.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 391.552000 547.836000 395.380000 535.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 395.356000 547.836000 401.512000 535.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 401.560000 547.836000 405.364000 535.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 405.364000 547.836000 413.044000 535.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 413.068000 547.836000 418.804000 535.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 418.768000 547.836000 425.992000 535.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 425.968000 547.836000 433.648000 535.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 433.672000 547.836000 441.400000 535.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 441.376000 547.836000 448.096000 535.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 448.072000 547.836000 452.884000 535.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 452.872000 547.836000 456.676000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 527.936000 229.492000 515.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 527.936000 237.232000 515.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 527.936000 244.300000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 244.612000 527.936000 248.416000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 248.812000 527.936000 252.640000 515.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 252.616000 527.936000 259.708000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 259.720000 527.936000 264.160000 515.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 264.220000 527.936000 269.032000 515.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 269.524000 527.936000 273.328000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.724000 527.936000 280.876000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 280.924000 527.936000 286.660000 515.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 286.624000 527.936000 298.000000 515.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 298.228000 527.936000 302.032000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 302.524000 527.936000 309.748000 515.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 309.724000 527.936000 314.164000 515.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 314.524000 527.936000 318.328000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.724000 527.936000 330.100000 515.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 330.124000 527.936000 336.892000 515.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 337.228000 527.936000 341.032000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 341.428000 527.936000 349.108000 515.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 349.132000 527.936000 356.224000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 356.236000 527.936000 362.392000 515.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 362.332000 527.936000 369.592000 515.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 370.036000 527.936000 373.840000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.236000 527.936000 380.956000 515.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 381.040000 527.936000 388.192000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 388.240000 527.936000 395.968000 515.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 396.136000 527.936000 399.940000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 400.336000 527.936000 408.016000 515.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 408.040000 527.936000 415.132000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 415.540000 527.936000 419.344000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.740000 527.936000 427.468000 515.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 427.444000 527.936000 433.600000 515.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 433.648000 527.936000 440.740000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 440.752000 527.936000 448.432000 515.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 448.756000 527.936000 452.560000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 452.956000 527.936000 457.768000 515.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 457.852000 527.936000 465.076000 515.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 465.448000 527.936000 469.252000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 469.648000 527.936000 477.376000 515.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 477.352000 527.936000 484.444000 515.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.456000 527.936000 491.608000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 491.656000 527.936000 499.336000 515.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 499.360000 527.936000 503.164000 515.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 503.464000 527.936000 507.268000 515.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 507.664000 527.936000 513.820000 515.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 513.868000 527.936000 518.680000 515.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 518.668000 527.936000 525.820000 515.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 525.772000 527.936000 532.492000 515.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 532.576000 527.936000 539.836000 515.936000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 527.936000 543.904000 515.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 514.036000 228.652000 502.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.700000 514.036000 236.428000 502.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.404000 514.036000 244.084000 502.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 244.900000 514.036000 248.704000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 249.604000 514.036000 257.284000 502.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 257.308000 514.036000 261.136000 502.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 261.112000 514.036000 264.940000 502.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 265.012000 514.036000 272.104000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 272.812000 514.036000 276.616000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.612000 514.036000 285.292000 502.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 285.208000 514.036000 292.360000 502.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 292.408000 514.036000 300.088000 502.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 300.004000 514.036000 307.096000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 307.108000 514.036000 312.844000 502.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 312.904000 514.036000 319.060000 502.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 319.900000 514.036000 323.704000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 324.604000 514.036000 329.416000 502.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 329.404000 514.036000 336.628000 502.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 337.408000 514.036000 341.212000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 342.112000 514.036000 353.488000 502.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 353.512000 514.036000 360.280000 502.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 361.108000 514.036000 364.912000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.812000 514.036000 373.540000 502.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 373.516000 514.036000 380.608000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 380.620000 514.036000 387.772000 502.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 387.820000 514.036000 393.556000 502.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 393.520000 514.036000 398.332000 502.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 398.320000 514.036000 401.608000 502.036000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 401.620000 514.036000 407.776000 502.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 408.616000 514.036000 412.420000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 413.320000 514.036000 420.040000 502.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 420.016000 514.036000 427.240000 502.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 427.216000 514.036000 434.944000 502.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 435.016000 514.036000 439.828000 502.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 439.816000 514.036000 446.908000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 446.920000 514.036000 454.648000 502.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 454.624000 514.036000 459.436000 502.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 459.424000 514.036000 463.228000 502.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.128000 514.036000 467.932000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 469.624000 514.036000 473.428000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.328000 514.036000 482.320000 502.036000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 482.332000 514.036000 490.060000 502.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 490.036000 514.036000 497.128000 502.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 498.040000 514.036000 501.844000 502.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 502.744000 514.036000 509.896000 502.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 509.944000 514.036000 516.664000 502.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 516.640000 514.036000 521.452000 502.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 521.440000 514.036000 529.168000 502.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 529.144000 514.036000 536.296000 502.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 536.248000 514.036000 540.076000 502.036000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 514.036000 543.904000 502.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 500.136000 228.220000 488.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 228.196000 500.136000 235.420000 488.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 235.396000 500.136000 239.224000 488.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 239.296000 500.136000 246.520000 488.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 246.496000 500.136000 252.232000 488.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 252.400000 500.136000 256.204000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.600000 500.136000 263.824000 488.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 263.800000 500.136000 268.240000 488.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 268.396000 500.136000 272.200000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 272.500000 500.136000 277.312000 488.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 277.396000 500.136000 285.124000 488.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 285.100000 500.136000 292.192000 488.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 292.396000 500.136000 296.200000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 296.500000 500.136000 304.180000 488.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 304.204000 500.136000 311.296000 488.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 311.308000 500.136000 317.464000 488.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 317.404000 500.136000 324.664000 488.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 324.700000 500.136000 329.512000 488.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 329.500000 500.136000 336.724000 488.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 336.796000 500.136000 344.476000 488.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 344.596000 500.136000 348.400000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 348.796000 500.136000 355.516000 488.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 355.492000 500.136000 362.644000 488.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 362.692000 500.136000 370.420000 488.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 370.588000 500.136000 374.392000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.692000 500.136000 381.916000 488.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 381.892000 500.136000 389.620000 488.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 389.692000 500.136000 393.520000 488.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 393.496000 500.136000 400.264000 488.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 400.492000 500.136000 404.296000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.596000 500.136000 412.276000 488.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 412.192000 500.136000 419.284000 488.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 419.488000 500.136000 423.292000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.688000 500.136000 430.840000 488.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 430.888000 500.136000 437.044000 488.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 436.984000 500.136000 443.704000 488.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 443.680000 500.136000 450.772000 488.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 450.784000 500.136000 456.520000 488.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.580000 500.136000 461.392000 488.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 461.380000 500.136000 468.532000 488.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 468.484000 500.136000 472.312000 488.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 472.288000 500.136000 480.016000 488.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 479.992000 500.136000 487.084000 488.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 487.096000 500.136000 494.776000 488.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 495.100000 500.136000 498.904000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 499.204000 500.136000 506.356000 488.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 506.404000 500.136000 510.844000 488.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 510.808000 500.136000 515.620000 488.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 515.608000 500.136000 522.700000 488.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 522.712000 500.136000 528.448000 488.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 528.616000 500.136000 532.420000 488.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 532.720000 500.136000 539.872000 488.136000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 500.136000 543.904000 488.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 486.236000 226.312000 474.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 486.236000 234.028000 474.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 234.004000 486.236000 241.228000 474.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 241.204000 486.236000 246.940000 474.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 246.904000 486.236000 254.128000 474.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 254.104000 486.236000 261.832000 474.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 261.808000 486.236000 269.488000 474.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 269.512000 486.236000 277.240000 474.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 277.216000 486.236000 281.020000 474.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 281.020000 486.236000 288.112000 474.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 288.124000 486.236000 294.880000 474.236000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 294.928000 486.236000 301.648000 474.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 301.624000 486.236000 308.776000 474.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 308.824000 486.236000 315.592000 474.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 315.628000 486.236000 322.780000 474.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 322.828000 486.236000 327.640000 474.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 327.628000 486.236000 331.456000 474.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 331.432000 486.236000 338.656000 474.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 338.632000 486.236000 346.360000 474.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 346.336000 486.236000 350.140000 474.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 350.140000 486.236000 353.944000 474.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 454.492000 118.768000 440.492000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 118.796000 454.492000 128.288000 440.492000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 128.302000 454.492000 138.312000 440.492000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 138.298000 454.492000 145.200000 440.492000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 145.200000 454.492000 154.818000 440.492000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 154.804000 454.492000 164.422000 440.492000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 164.408000 454.492000 178.982000 440.492000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 432.236000 229.816000 420.236000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 229.804000 432.236000 237.532000 420.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 237.604000 432.236000 243.340000 420.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 243.304000 432.236000 248.116000 420.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 248.104000 432.236000 255.832000 420.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 255.808000 432.236000 262.900000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 262.912000 432.236000 268.648000 420.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 269.812000 432.236000 273.616000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 274.708000 432.236000 282.388000 420.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 282.412000 432.236000 289.636000 420.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 289.612000 432.236000 299.872000 420.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 299.908000 432.236000 307.636000 420.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 308.704000 432.236000 312.508000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 313.708000 432.236000 318.520000 420.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 318.508000 432.236000 326.236000 420.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 326.308000 432.236000 333.400000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 334.504000 432.236000 338.308000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.400000 432.236000 347.128000 420.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 347.104000 432.236000 354.256000 420.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 354.304000 432.236000 358.132000 420.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 358.108000 432.236000 361.936000 420.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 363.004000 432.236000 366.808000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.104000 432.236000 371.932000 420.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 371.908000 432.236000 378.064000 420.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 379.204000 432.236000 383.008000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 384.100000 432.236000 395.476000 420.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 395.404000 432.236000 402.172000 420.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 403.300000 432.236000 407.104000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 408.304000 432.236000 415.984000 420.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 416.008000 432.236000 423.100000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 423.112000 432.236000 430.792000 420.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 430.816000 432.236000 436.552000 420.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 436.516000 432.236000 443.740000 420.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 443.716000 432.236000 450.940000 420.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 451.012000 432.236000 462.388000 420.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 462.316000 432.236000 466.120000 420.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.320000 432.236000 471.124000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 472.216000 432.236000 480.208000 420.236000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 480.220000 432.236000 487.948000 420.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 487.924000 432.236000 491.752000 420.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 491.824000 432.236000 497.980000 420.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 499.024000 432.236000 502.828000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 504.028000 432.236000 507.856000 420.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 507.832000 432.236000 513.988000 420.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 515.128000 432.236000 518.932000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 520.024000 432.236000 524.836000 420.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 524.920000 432.236000 532.648000 420.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 532.624000 432.236000 539.716000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 432.236000 543.904000 420.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 418.336000 228.724000 406.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 228.700000 418.336000 236.428000 406.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.500000 418.336000 240.328000 406.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 240.304000 418.336000 247.072000 406.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 247.600000 418.336000 251.404000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 251.896000 418.336000 257.632000 406.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 257.596000 418.336000 264.820000 406.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 264.892000 418.336000 272.116000 406.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 272.092000 418.336000 283.468000 406.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 283.888000 418.336000 287.692000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.292000 418.336000 292.120000 406.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 292.096000 418.336000 299.824000 406.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 300.292000 418.336000 304.096000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 304.588000 418.336000 309.400000 406.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 309.484000 418.336000 317.212000 406.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 317.188000 418.336000 324.280000 406.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 324.784000 418.336000 328.588000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.080000 418.336000 336.808000 406.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 336.784000 418.336000 344.008000 406.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 344.080000 418.336000 351.808000 406.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 351.784000 418.336000 357.940000 406.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 357.880000 418.336000 364.972000 406.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.584000 418.336000 369.388000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 369.880000 418.336000 374.692000 406.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 374.680000 418.336000 382.408000 406.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 382.480000 418.336000 389.632000 406.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 389.584000 418.336000 394.396000 406.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 394.888000 418.336000 398.692000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 399.184000 418.336000 403.012000 406.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.988000 418.336000 409.144000 406.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 409.684000 418.336000 413.488000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 413.980000 418.336000 420.700000 406.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 420.676000 418.336000 427.828000 406.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 427.876000 418.336000 433.612000 406.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 433.576000 418.336000 441.256000 406.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 441.280000 418.336000 448.372000 406.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 448.384000 418.336000 453.196000 406.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 453.184000 418.336000 460.276000 406.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.288000 418.336000 467.968000 406.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 467.992000 418.336000 471.796000 406.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.288000 418.336000 476.092000 406.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 476.584000 418.336000 487.048000 406.336000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 487.084000 418.336000 494.236000 406.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 494.284000 418.336000 500.020000 406.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 499.984000 418.336000 507.664000 406.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 507.688000 418.336000 517.948000 406.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 517.984000 418.336000 525.208000 406.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 525.184000 418.336000 532.408000 406.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 532.384000 418.336000 540.064000 406.336000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 418.336000 543.904000 406.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 404.436000 229.492000 392.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 229.504000 404.436000 236.728000 392.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.704000 404.436000 243.928000 392.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 244.000000 404.436000 249.736000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 249.700000 404.436000 255.856000 392.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 255.796000 404.436000 259.600000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 259.792000 404.436000 266.944000 392.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 266.992000 404.436000 272.728000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 272.692000 404.436000 279.784000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 279.892000 404.436000 283.696000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 283.888000 404.436000 290.980000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 290.992000 404.436000 298.144000 392.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 297.988000 404.436000 304.144000 392.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 304.192000 404.436000 310.960000 392.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 310.888000 404.436000 314.692000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 314.884000 404.436000 319.696000 392.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 319.684000 404.436000 326.908000 392.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 326.884000 404.436000 330.688000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.880000 404.436000 337.600000 392.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 337.576000 404.436000 344.728000 392.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 344.776000 404.436000 350.512000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 350.476000 404.436000 357.568000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.676000 404.436000 361.480000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.672000 404.436000 366.112000 392.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 365.968000 404.436000 373.192000 392.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 373.168000 404.436000 378.904000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 379.072000 404.436000 382.876000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.068000 404.436000 390.220000 392.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 390.064000 404.436000 397.792000 392.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 397.768000 404.436000 405.448000 392.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 405.472000 404.436000 409.276000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 409.468000 404.436000 413.296000 392.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 413.272000 404.436000 420.496000 392.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 420.472000 404.436000 427.696000 392.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 427.768000 404.436000 435.028000 392.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 434.968000 404.436000 438.772000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.964000 404.436000 446.692000 392.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 446.764000 404.436000 450.592000 392.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 450.568000 404.436000 457.288000 392.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.372000 404.436000 464.464000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 464.476000 404.436000 468.280000 392.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 468.280000 404.436000 472.084000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 472.180000 404.436000 479.860000 392.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 479.776000 404.436000 487.504000 392.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 487.480000 404.436000 492.292000 392.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 492.484000 404.436000 496.288000 392.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 496.480000 404.436000 503.200000 392.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 503.080000 404.436000 510.232000 392.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 510.280000 404.436000 516.016000 392.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 515.980000 404.436000 523.660000 392.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 523.684000 404.436000 530.776000 392.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 530.788000 404.436000 535.600000 392.436000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.100000 404.436000 540.144000 392.436000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 390.536000 225.328000 378.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 225.304000 390.536000 233.032000 378.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 233.008000 390.536000 240.688000 378.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 240.712000 390.536000 244.516000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 244.516000 390.536000 248.344000 378.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 248.320000 390.536000 254.476000 378.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 254.524000 390.536000 258.328000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.328000 390.536000 269.704000 378.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 269.728000 390.536000 277.456000 378.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 277.432000 390.536000 284.152000 378.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 284.128000 390.536000 291.856000 378.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 291.832000 390.536000 295.636000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 295.636000 390.536000 307.012000 378.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 307.036000 390.536000 314.260000 378.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 314.236000 390.536000 319.972000 378.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 319.936000 390.536000 327.028000 378.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 327.040000 390.536000 330.844000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.844000 390.536000 338.524000 378.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 338.548000 390.536000 342.376000 378.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 342.352000 390.536000 349.444000 378.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.456000 390.536000 356.608000 378.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 356.656000 390.536000 362.812000 378.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 362.860000 390.536000 370.012000 378.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 370.060000 390.536000 377.788000 378.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 377.764000 390.536000 382.576000 378.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 382.564000 390.536000 386.368000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 386.368000 390.536000 390.808000 378.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 390.772000 390.536000 397.996000 378.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 397.972000 390.536000 403.708000 378.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 403.672000 390.536000 407.476000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.476000 390.536000 415.156000 378.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 415.180000 390.536000 422.332000 378.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 422.380000 390.536000 428.116000 378.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 428.080000 390.536000 435.172000 378.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 435.184000 390.536000 438.988000 378.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.988000 390.536000 443.428000 378.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 443.392000 390.536000 450.484000 378.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 450.496000 390.536000 457.588000 378.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 457.600000 390.536000 462.412000 378.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 462.400000 390.536000 466.204000 378.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 370.636000 226.240000 358.636000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 226.204000 370.636000 233.932000 358.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 235.000000 370.636000 238.804000 358.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.800000 370.636000 251.176000 358.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 251.200000 370.636000 257.968000 358.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 258.904000 370.636000 262.708000 358.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 263.908000 370.636000 271.588000 358.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 271.504000 370.636000 278.596000 358.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 278.608000 370.636000 286.288000 358.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 286.312000 370.636000 292.048000 358.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 292.108000 370.636000 299.332000 358.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 299.308000 370.636000 306.532000 358.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 306.508000 370.636000 317.884000 358.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 318.904000 370.636000 322.708000 358.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 323.704000 370.636000 327.532000 358.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 327.508000 370.636000 333.664000 358.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 334.708000 370.636000 338.512000 358.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.604000 370.636000 346.756000 358.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 348.808000 370.636000 352.612000 358.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 352.700000 370.636000 360.380000 358.636000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 360.404000 370.636000 368.132000 358.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 368.108000 370.636000 375.200000 358.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 375.212000 370.636000 382.304000 358.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 382.316000 370.636000 390.044000 358.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 390.020000 370.636000 394.064000 358.636000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 394.124000 370.636000 400.280000 358.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 400.328000 370.636000 404.156000 358.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 404.132000 370.636000 410.444000 358.636000 1.000000 0.000000 0.000000 1.000000 z
+drawChar 410.432000 370.636000 417.524000 358.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 418.532000 370.636000 422.336000 358.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.332000 370.636000 431.012000 358.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 431.036000 370.636000 438.128000 358.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 438.140000 370.636000 445.820000 358.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 446.840000 370.636000 450.644000 358.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 451.736000 370.636000 458.888000 358.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 458.936000 370.636000 466.664000 358.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 466.640000 370.636000 474.320000 358.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 475.340000 370.636000 479.144000 358.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 480.140000 370.636000 484.952000 358.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 484.940000 370.636000 495.200000 358.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 495.236000 370.636000 502.460000 358.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 503.432000 370.636000 507.236000 358.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 508.328000 370.636000 516.056000 358.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 516.032000 370.636000 519.860000 358.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 519.932000 370.636000 527.612000 358.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 527.528000 370.636000 535.256000 358.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 535.328000 370.636000 540.140000 358.636000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 370.636000 543.904000 358.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 356.736000 227.656000 344.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 356.736000 232.516000 344.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 232.504000 356.736000 239.656000 344.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 239.608000 356.736000 247.336000 344.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 247.408000 356.736000 255.088000 344.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 255.004000 356.736000 261.160000 344.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 261.208000 356.736000 265.012000 344.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 265.708000 356.736000 269.512000 344.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.304000 356.736000 280.564000 344.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 280.600000 356.736000 288.328000 344.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 288.304000 356.736000 292.132000 344.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 292.108000 356.736000 298.828000 344.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 298.912000 356.736000 306.640000 344.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 307.408000 356.736000 311.212000 344.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 312.004000 356.736000 316.816000 344.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 316.900000 356.736000 324.052000 344.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 324.100000 356.736000 331.360000 344.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 331.300000 356.736000 338.392000 344.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 338.404000 356.736000 344.560000 344.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 345.208000 356.736000 349.012000 344.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 349.912000 356.736000 357.640000 344.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 357.616000 356.736000 365.296000 344.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 366.112000 356.736000 369.916000 344.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.708000 356.736000 382.084000 344.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 382.108000 356.736000 389.332000 344.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 389.308000 356.736000 395.464000 344.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 395.512000 356.736000 400.324000 344.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 401.008000 356.736000 404.812000 344.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 405.604000 356.736000 412.828000 344.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 412.804000 356.736000 417.244000 344.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 418.000000 356.736000 421.804000 344.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 422.704000 356.736000 427.516000 344.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 427.504000 356.736000 435.232000 344.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 435.304000 356.736000 442.396000 344.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 443.008000 356.736000 446.812000 344.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 447.604000 356.736000 453.340000 344.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 453.304000 356.736000 460.528000 344.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 460.600000 356.736000 467.824000 344.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 467.800000 356.736000 479.176000 344.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 479.200000 356.736000 483.004000 344.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 483.796000 356.736000 487.600000 344.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.392000 356.736000 498.220000 344.736000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 498.196000 356.736000 505.924000 344.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 506.692000 356.736000 510.496000 344.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 511.288000 356.736000 518.380000 344.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 518.392000 356.736000 525.544000 344.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 525.592000 356.736000 532.312000 344.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 532.288000 356.736000 540.016000 344.736000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 356.736000 543.904000 344.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 342.836000 227.656000 330.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 342.836000 231.532000 330.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 231.508000 342.836000 239.188000 330.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 239.212000 342.836000 246.304000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 247.816000 342.836000 251.620000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 253.120000 342.836000 260.344000 330.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 260.320000 342.836000 264.760000 330.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 266.320000 342.836000 270.124000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 271.624000 342.836000 276.436000 330.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 276.424000 342.836000 284.152000 330.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 284.224000 342.836000 291.316000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 292.720000 342.836000 296.524000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 298.024000 342.836000 305.704000 330.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 305.728000 342.836000 312.820000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 312.832000 342.836000 320.512000 330.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 322.036000 342.836000 325.840000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 327.340000 342.836000 331.168000 330.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 331.144000 342.836000 337.300000 330.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 338.848000 342.836000 342.652000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 344.152000 342.836000 351.304000 330.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 352.852000 342.836000 356.656000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 358.156000 342.836000 365.836000 330.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 365.860000 342.836000 373.084000 330.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 373.060000 342.836000 380.284000 330.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 380.260000 342.836000 385.996000 330.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 384.664000 342.836000 388.468000 330.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 390.064000 342.836000 393.868000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 395.368000 342.836000 402.592000 330.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 402.568000 342.836000 410.296000 330.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 410.368000 342.836000 417.460000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 418.864000 342.836000 422.668000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 424.168000 342.836000 427.996000 330.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 427.972000 342.836000 435.064000 330.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 435.076000 342.836000 442.228000 330.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 442.276000 342.836000 449.956000 330.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 449.980000 342.836000 456.136000 330.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 457.684000 342.836000 461.488000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 462.988000 342.836000 467.800000 330.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 467.788000 342.836000 475.012000 330.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 476.488000 342.836000 480.292000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.888000 342.836000 489.040000 330.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 490.492000 342.836000 494.296000 330.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 495.796000 342.836000 506.056000 330.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 506.092000 342.836000 513.244000 330.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 513.196000 342.836000 517.024000 330.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 517.096000 342.836000 524.356000 330.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 524.092000 342.836000 528.136000 330.836000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 528.196000 342.836000 532.024000 330.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 532.000000 342.836000 539.728000 330.836000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 342.836000 543.904000 330.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 328.936000 228.220000 316.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 228.196000 328.936000 232.024000 316.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 232.096000 328.936000 239.320000 316.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 239.296000 328.936000 245.452000 316.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 245.392000 328.936000 252.484000 316.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 252.496000 328.936000 257.308000 316.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 257.392000 328.936000 261.196000 316.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 261.496000 328.936000 265.300000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.600000 328.936000 272.752000 316.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 272.800000 328.936000 280.528000 316.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 280.504000 328.936000 288.184000 316.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 288.508000 328.936000 292.312000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 292.612000 328.936000 297.424000 316.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 297.412000 328.936000 305.140000 316.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 305.212000 328.936000 312.304000 316.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 312.508000 328.936000 316.312000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.612000 328.936000 323.836000 316.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 323.908000 328.936000 328.720000 316.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 328.708000 328.936000 336.436000 316.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 336.508000 328.936000 343.600000 316.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 343.612000 328.936000 349.348000 316.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 349.612000 328.936000 353.416000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.716000 328.936000 358.528000 316.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 358.516000 328.936000 365.740000 316.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 366.016000 328.936000 369.820000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.120000 328.936000 374.932000 316.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 375.016000 328.936000 382.744000 316.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 382.720000 328.936000 389.812000 316.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 390.124000 328.936000 393.928000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 394.228000 328.936000 401.908000 316.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 401.932000 328.936000 409.084000 316.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 409.036000 328.936000 413.848000 316.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 413.932000 328.936000 421.660000 316.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 421.636000 328.936000 427.372000 316.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 427.336000 328.936000 434.560000 316.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 434.536000 328.936000 441.760000 316.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 441.832000 328.936000 453.208000 316.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 453.232000 328.936000 457.036000 316.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.336000 328.936000 461.140000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 461.440000 328.936000 466.180000 316.936000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 466.444000 328.936000 470.248000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.548000 328.936000 477.700000 316.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 477.748000 328.936000 481.576000 316.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 481.552000 328.936000 487.708000 316.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 487.756000 328.936000 494.980000 316.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 495.256000 328.936000 499.060000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 499.360000 328.936000 507.088000 316.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 507.064000 328.936000 514.216000 316.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 514.264000 328.936000 521.032000 316.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 521.068000 328.936000 528.160000 316.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 528.472000 328.936000 532.276000 316.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 532.576000 328.936000 539.728000 316.936000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 328.936000 544.004000 316.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 315.036000 226.312000 303.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 315.036000 233.392000 303.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 233.404000 315.036000 237.232000 303.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 237.304000 315.036000 244.396000 303.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 244.408000 315.036000 251.176000 303.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 251.104000 315.036000 254.932000 303.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 255.004000 315.036000 261.160000 303.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 261.100000 315.036000 264.928000 303.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 265.000000 315.036000 272.224000 303.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 272.200000 315.036000 279.928000 303.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 281.200000 315.036000 285.004000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.396000 315.036000 290.224000 303.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 290.200000 315.036000 297.928000 303.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 299.296000 315.036000 303.100000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 304.492000 315.036000 315.868000 303.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 315.892000 315.036000 322.660000 303.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 323.992000 315.036000 327.796000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.188000 315.036000 336.868000 303.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 336.892000 315.036000 343.984000 303.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 343.996000 315.036000 351.676000 303.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 351.700000 315.036000 357.436000 303.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 357.400000 315.036000 364.624000 303.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 364.600000 315.036000 371.824000 303.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 371.896000 315.036000 383.272000 303.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 383.200000 315.036000 387.004000 303.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 388.300000 315.036000 392.104000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.604000 315.036000 400.696000 303.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 400.708000 315.036000 406.864000 303.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 406.912000 315.036000 414.592000 303.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 414.508000 315.036000 421.600000 303.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 421.612000 315.036000 428.332000 303.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 428.416000 315.036000 432.244000 303.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 432.220000 315.036000 439.372000 303.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 439.420000 315.036000 443.248000 303.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 443.116000 315.036000 446.944000 303.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 446.920000 315.036000 453.688000 303.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 455.116000 315.036000 458.920000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 460.312000 315.036000 464.752000 303.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 464.716000 315.036000 471.940000 303.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 472.012000 315.036000 477.748000 303.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 479.008000 315.036000 482.812000 303.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.204000 315.036000 494.464000 303.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 494.500000 315.036000 501.652000 303.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 501.604000 315.036000 506.416000 303.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 506.404000 315.036000 513.124000 303.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 513.208000 315.036000 520.936000 303.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 520.912000 315.036000 524.740000 303.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 524.716000 315.036000 532.444000 303.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 532.516000 315.036000 540.196000 303.036000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 315.036000 543.904000 303.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 301.136000 226.312000 289.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 301.136000 234.028000 289.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 234.100000 301.136000 241.192000 289.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 241.900000 301.136000 245.704000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 246.496000 301.136000 250.324000 289.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 250.300000 301.136000 257.452000 289.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 257.500000 301.136000 262.312000 289.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 262.300000 301.136000 269.392000 289.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 269.404000 301.136000 273.448000 289.136000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 273.508000 301.136000 281.236000 289.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 281.212000 301.136000 285.040000 289.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 285.016000 301.136000 292.696000 289.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 292.720000 301.136000 300.448000 289.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 300.424000 301.136000 305.236000 289.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 306.028000 301.136000 309.832000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.732000 301.136000 322.108000 289.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 322.036000 301.136000 329.260000 289.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 329.332000 301.136000 336.100000 289.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 336.028000 301.136000 339.856000 289.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 339.832000 301.136000 346.924000 289.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 346.936000 301.136000 353.092000 289.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 353.140000 301.136000 356.944000 289.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.640000 301.136000 361.444000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.344000 301.136000 367.084000 289.136000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 367.048000 301.136000 371.860000 289.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 371.944000 301.136000 375.232000 289.136000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 375.244000 301.136000 381.400000 289.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 382.144000 301.136000 385.948000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 386.740000 301.136000 393.892000 289.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 393.940000 301.136000 397.768000 289.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 397.744000 301.136000 403.900000 289.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 403.948000 301.136000 411.172000 289.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 411.844000 301.136000 415.648000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 416.440000 301.136000 424.120000 289.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 424.144000 301.136000 431.368000 289.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 431.344000 301.136000 437.500000 289.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 437.548000 301.136000 443.704000 289.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 443.644000 301.136000 447.472000 289.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 447.544000 301.136000 455.224000 289.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 455.140000 301.136000 458.968000 289.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 459.040000 301.136000 466.132000 289.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.936000 301.136000 470.740000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 471.532000 301.136000 476.344000 289.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 476.332000 301.136000 483.556000 289.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 484.228000 301.136000 488.032000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.824000 301.136000 492.652000 289.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 492.628000 301.136000 496.456000 289.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 496.528000 301.136000 502.684000 289.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 502.624000 301.136000 507.436000 289.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 507.520000 301.136000 514.612000 289.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 514.624000 301.136000 522.352000 289.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 523.120000 301.136000 526.924000 289.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 527.716000 301.136000 532.528000 289.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 532.612000 301.136000 539.836000 289.136000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 301.136000 543.904000 289.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 287.236000 232.876000 275.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 232.900000 287.236000 240.628000 275.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 240.604000 287.236000 246.760000 275.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 246.808000 287.236000 250.636000 275.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 250.612000 287.236000 257.332000 275.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 257.416000 287.236000 261.220000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 261.412000 287.236000 265.240000 275.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 265.216000 287.236000 272.944000 275.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 273.220000 287.236000 277.024000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.216000 287.236000 288.592000 275.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 288.616000 287.236000 295.384000 275.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 295.516000 287.236000 299.320000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 299.512000 287.236000 307.192000 275.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 307.216000 287.236000 314.308000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 314.320000 287.236000 322.000000 275.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 322.024000 287.236000 327.760000 275.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 327.724000 287.236000 334.948000 275.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 334.924000 287.236000 342.148000 275.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 342.220000 287.236000 353.596000 275.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 353.524000 287.236000 357.328000 275.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 357.520000 287.236000 361.324000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.624000 287.236000 368.776000 275.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 368.824000 287.236000 374.980000 275.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 375.028000 287.236000 378.832000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.024000 287.236000 390.400000 275.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 390.424000 287.236000 397.192000 275.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 397.528000 287.236000 401.332000 275.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 401.700000 287.236000 407.856000 275.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 407.904000 287.236000 412.716000 275.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 412.704000 287.236000 419.796000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 419.808000 287.236000 425.544000 275.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 425.508000 287.236000 432.600000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 432.612000 287.236000 439.836000 275.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 440.016000 287.236000 443.820000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 444.120000 287.236000 450.276000 275.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 450.324000 287.236000 457.092000 275.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 457.020000 287.236000 463.176000 275.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 463.224000 287.236000 468.036000 275.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 468.024000 287.236000 475.116000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 475.128000 287.236000 486.504000 275.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 486.624000 287.236000 490.428000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 490.620000 287.236000 494.448000 275.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 494.424000 287.236000 500.580000 275.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 500.820000 287.236000 504.624000 275.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 504.816000 287.236000 508.644000 275.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 508.620000 287.236000 516.348000 275.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 516.420000 287.236000 521.232000 275.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 521.220000 287.236000 528.312000 275.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 528.324000 287.236000 536.004000 275.236000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 287.236000 540.044000 275.236000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 273.336000 227.236000 261.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 227.200000 273.336000 234.352000 261.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 234.400000 273.336000 239.212000 261.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 239.200000 273.336000 246.292000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 246.304000 273.336000 253.984000 261.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 254.308000 273.336000 258.112000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.508000 273.336000 268.768000 261.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 268.804000 273.336000 272.632000 261.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 272.608000 273.336000 277.420000 261.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 277.408000 273.336000 285.136000 261.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 285.604000 273.336000 289.408000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.804000 273.336000 294.616000 261.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 294.604000 273.336000 302.332000 261.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 302.404000 273.336000 309.496000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 309.700000 273.336000 313.504000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 313.996000 273.336000 318.808000 261.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 318.796000 273.336000 325.888000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 325.900000 273.336000 329.728000 261.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 329.800000 273.336000 336.892000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 336.904000 273.336000 343.672000 261.336000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 343.600000 273.336000 347.428000 261.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 347.404000 273.336000 353.560000 261.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 353.608000 273.336000 357.436000 261.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 357.412000 273.336000 364.636000 261.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 364.708000 273.336000 372.436000 261.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 372.412000 273.336000 376.216000 261.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.612000 273.336000 380.416000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.812000 273.336000 390.916000 261.336000 1.000000 0.000000 0.000000 1.000000 U
+drawChar 390.916000 273.336000 397.072000 261.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 397.120000 273.336000 400.948000 261.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 400.924000 273.336000 408.652000 261.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 408.628000 273.336000 416.308000 261.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 416.632000 273.336000 420.436000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 420.832000 273.336000 425.644000 261.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 425.728000 273.336000 433.456000 261.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 433.432000 273.336000 440.524000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 440.932000 273.336000 444.736000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.132000 273.336000 450.868000 261.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 450.832000 273.336000 457.924000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 457.936000 273.336000 469.312000 261.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 469.336000 273.336000 476.560000 261.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 476.536000 273.336000 481.348000 261.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 481.432000 273.336000 488.524000 261.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 488.836000 273.336000 492.640000 261.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 493.036000 273.336000 499.756000 261.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 499.732000 273.336000 506.956000 261.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 506.932000 273.336000 514.660000 261.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 514.732000 273.336000 519.544000 261.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 519.532000 273.336000 525.268000 261.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 525.232000 273.336000 532.456000 261.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 532.528000 273.336000 536.356000 261.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 536.332000 273.336000 540.136000 261.336000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 273.336000 544.004000 261.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 259.436000 226.240000 247.436000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 226.696000 259.436000 230.500000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 231.196000 259.436000 237.916000 247.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 237.892000 259.436000 245.044000 247.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 245.092000 259.436000 252.820000 247.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 253.396000 259.436000 257.200000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.800000 259.436000 265.024000 247.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 265.000000 259.436000 272.680000 247.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 272.704000 259.436000 279.796000 247.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 279.808000 259.436000 285.544000 247.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 285.508000 259.436000 292.660000 247.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 292.708000 259.436000 297.520000 247.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 297.508000 259.436000 304.600000 247.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 305.104000 259.436000 308.908000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 309.508000 259.436000 314.320000 247.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 314.308000 259.436000 322.036000 247.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 322.108000 259.436000 329.200000 247.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 329.812000 259.436000 333.616000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 334.216000 259.436000 340.372000 247.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 340.420000 259.436000 345.232000 247.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 345.220000 259.436000 352.312000 247.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 352.324000 259.436000 358.060000 247.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.024000 259.436000 365.116000 247.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.128000 259.436000 372.352000 247.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 372.832000 259.436000 376.636000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.236000 259.436000 383.392000 247.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 383.440000 259.436000 390.208000 247.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 390.136000 259.436000 396.292000 247.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 396.340000 259.436000 401.152000 247.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 401.236000 259.436000 408.328000 247.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 408.340000 259.436000 419.716000 247.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 420.244000 259.436000 424.048000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 424.648000 259.436000 428.476000 247.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 428.452000 259.436000 436.180000 247.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 436.756000 259.436000 440.560000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 441.160000 259.436000 445.972000 247.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 446.056000 259.436000 453.784000 247.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 453.760000 259.436000 460.852000 247.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 461.464000 259.436000 465.268000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 465.868000 259.436000 469.696000 247.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 469.672000 259.436000 473.500000 247.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 473.572000 259.436000 480.340000 247.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 480.376000 259.436000 484.204000 247.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 484.180000 259.436000 491.908000 247.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 491.884000 259.436000 499.564000 247.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 500.080000 259.436000 503.884000 247.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 504.484000 259.436000 510.220000 247.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 510.184000 259.436000 517.408000 247.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 517.480000 259.436000 524.704000 247.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 524.680000 259.436000 536.056000 247.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 536.080000 259.436000 539.884000 247.436000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 259.436000 543.904000 247.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 245.536000 228.652000 233.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.700000 245.536000 236.428000 233.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.404000 245.536000 244.084000 233.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 246.100000 245.536000 249.904000 233.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 251.896000 245.536000 256.708000 233.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 256.696000 245.536000 264.424000 233.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 264.496000 245.536000 271.588000 233.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 273.496000 245.536000 277.300000 233.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.400000 245.536000 284.212000 233.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 284.296000 245.536000 291.520000 233.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 291.496000 245.536000 299.224000 233.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 299.296000 245.536000 306.388000 233.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 308.296000 245.536000 312.100000 233.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 314.092000 245.536000 317.920000 233.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 317.896000 245.536000 324.052000 233.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 326.092000 245.536000 329.896000 233.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.996000 245.536000 339.676000 233.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 339.700000 245.536000 345.436000 233.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 345.496000 245.536000 352.720000 233.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 352.696000 245.536000 356.416000 233.536000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 356.392000 245.536000 363.484000 233.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 363.496000 245.536000 370.216000 233.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 370.300000 245.536000 375.112000 233.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 375.100000 245.536000 382.192000 233.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 382.204000 245.536000 389.884000 233.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 391.804000 245.536000 395.608000 233.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 397.708000 245.536000 402.520000 233.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 402.508000 245.536000 410.236000 233.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 410.308000 245.536000 416.044000 233.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 415.912000 245.536000 423.136000 233.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 423.208000 245.536000 430.936000 233.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 430.912000 245.536000 438.592000 233.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 438.616000 245.536000 446.344000 233.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.312000 245.536000 452.116000 233.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.216000 245.536000 459.028000 233.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 459.016000 245.536000 466.744000 233.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 466.816000 245.536000 473.908000 233.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 475.912000 245.536000 479.716000 233.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.708000 245.536000 486.520000 233.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 486.508000 245.536000 493.600000 233.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 493.612000 245.536000 497.440000 233.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 497.512000 245.536000 504.604000 233.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 504.616000 245.536000 511.384000 233.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 511.312000 245.536000 515.140000 233.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 515.212000 245.536000 521.368000 233.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 521.308000 245.536000 525.136000 233.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 525.208000 245.536000 532.432000 233.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 532.408000 245.536000 540.136000 233.536000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 245.536000 544.004000 233.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 231.636000 227.656000 219.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 231.636000 235.384000 219.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 235.300000 231.636000 242.392000 219.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 242.404000 231.636000 249.556000 219.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 249.604000 231.636000 256.864000 219.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 256.900000 231.636000 263.992000 219.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 264.004000 231.636000 269.740000 219.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 269.704000 231.636000 275.860000 219.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 275.908000 231.636000 279.712000 219.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.108000 231.636000 283.912000 219.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.704000 231.636000 288.508000 219.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.904000 231.636000 297.568000 219.636000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 298.000000 231.636000 301.804000 219.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 302.200000 231.636000 313.576000 219.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 313.600000 231.636000 320.752000 219.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 320.704000 231.636000 324.424000 219.636000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 324.508000 231.636000 331.732000 219.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 331.708000 231.636000 337.444000 219.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 337.804000 231.636000 341.608000 219.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 342.004000 231.636000 349.156000 219.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 349.204000 231.636000 356.884000 219.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 356.800000 231.636000 363.568000 219.636000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 363.604000 231.636000 370.756000 219.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 370.804000 231.636000 378.532000 219.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 378.508000 231.636000 383.320000 219.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 383.308000 231.636000 390.460000 219.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 390.508000 231.636000 398.188000 219.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 398.212000 231.636000 405.304000 219.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 405.712000 231.636000 409.516000 219.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 409.912000 231.636000 414.724000 219.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 414.712000 231.636000 421.936000 219.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 422.308000 231.636000 426.112000 219.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.604000 231.636000 431.416000 219.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 431.404000 231.636000 439.132000 219.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 439.204000 231.636000 443.032000 219.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 442.900000 231.636000 449.056000 219.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 449.500000 231.636000 453.304000 219.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 453.700000 231.636000 459.856000 219.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 459.904000 231.636000 466.672000 219.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 466.600000 231.636000 472.756000 219.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 472.804000 231.636000 477.616000 219.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 477.604000 231.636000 484.696000 219.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.708000 231.636000 496.084000 219.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 496.504000 231.636000 500.308000 219.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 500.704000 231.636000 504.532000 219.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 504.508000 231.636000 510.664000 219.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 511.108000 231.636000 514.912000 219.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 515.308000 231.636000 520.120000 219.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 520.204000 231.636000 527.932000 219.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 527.908000 231.636000 535.060000 219.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 535.012000 231.636000 539.824000 219.636000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 231.636000 543.904000 219.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 217.736000 228.652000 205.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.700000 217.736000 232.528000 205.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 232.504000 217.736000 236.332000 205.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 237.400000 217.736000 241.204000 205.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 242.296000 217.736000 253.672000 205.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 253.696000 217.736000 260.464000 205.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 261.592000 217.736000 265.396000 205.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.488000 217.736000 275.668000 205.736000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 275.692000 217.736000 285.304000 205.736000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 285.292000 217.736000 288.580000 205.736000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 288.592000 217.736000 294.748000 205.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 295.888000 217.736000 299.692000 205.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 300.784000 217.736000 306.520000 205.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 306.484000 217.736000 313.576000 205.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 313.588000 217.736000 324.964000 205.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 324.988000 217.736000 332.140000 205.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 332.188000 217.736000 336.016000 205.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 335.992000 217.736000 343.720000 205.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 344.788000 217.736000 348.592000 205.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 349.684000 217.736000 353.512000 205.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 353.488000 217.736000 361.216000 205.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 362.392000 217.736000 366.196000 205.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 367.288000 217.736000 374.512000 205.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 374.488000 217.736000 382.216000 205.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 382.288000 217.736000 389.380000 205.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 390.484000 217.736000 394.288000 205.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 395.380000 217.736000 403.060000 205.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.084000 217.736000 406.912000 205.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 406.888000 217.736000 414.040000 205.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 414.088000 217.736000 420.808000 205.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 420.784000 217.736000 427.876000 205.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 427.888000 217.736000 431.692000 205.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 432.784000 217.736000 436.588000 205.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 437.680000 217.736000 441.508000 205.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 441.484000 217.736000 449.212000 205.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 449.284000 217.736000 455.440000 205.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 455.380000 217.736000 460.192000 205.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 460.180000 217.736000 467.272000 205.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 467.284000 217.736000 474.436000 205.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 474.484000 217.736000 482.164000 205.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 483.280000 217.736000 487.084000 205.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.176000 217.736000 495.400000 205.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 495.376000 217.736000 499.816000 205.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 500.980000 217.736000 504.784000 205.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 505.876000 217.736000 513.556000 205.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 513.580000 217.736000 520.672000 205.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 520.684000 217.736000 524.512000 205.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 524.488000 217.736000 532.216000 205.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 532.192000 217.736000 539.872000 205.736000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 217.736000 543.904000 205.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 203.836000 227.656000 191.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 203.836000 234.424000 191.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 234.400000 203.836000 241.552000 191.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 241.600000 203.836000 246.412000 191.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 246.400000 203.836000 251.212000 191.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 251.200000 203.836000 258.292000 191.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 258.304000 203.836000 264.040000 191.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 264.004000 203.836000 271.096000 191.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 271.108000 203.836000 278.788000 191.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 278.812000 203.836000 282.616000 191.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 282.616000 203.836000 289.768000 191.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 289.816000 203.836000 293.644000 191.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 293.620000 203.836000 297.448000 191.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 297.424000 203.836000 301.228000 191.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 301.228000 203.836000 308.452000 191.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 308.428000 203.836000 315.196000 191.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 315.232000 203.836000 322.324000 191.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 322.336000 203.836000 328.072000 191.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 328.036000 203.836000 331.840000 191.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.840000 203.836000 336.652000 191.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 336.640000 203.836000 344.368000 191.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 344.344000 203.836000 351.436000 191.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 351.448000 203.836000 355.252000 191.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 355.252000 203.836000 362.980000 191.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 362.956000 203.836000 370.180000 191.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 370.156000 203.836000 377.884000 191.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 377.860000 203.836000 384.016000 191.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 384.064000 203.836000 391.156000 191.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 391.168000 203.836000 394.972000 191.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 108.100000 90.136000 116.164000 78.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 115.600000 90.136000 122.752000 78.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 122.800000 90.136000 130.480000 78.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 130.504000 90.136000 137.596000 78.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.608000 90.136000 141.412000 78.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 141.400000 90.136000 149.032000 78.136000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 5940.200000 0 477.900000 5940.200000 0 477.900000 6250.000000 0 134.300000 6250.000000 0 134.300000 5940.200000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -514830.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 2951.200000 0 168.100000 2951.200000 0 168.100000 2956.200000 0 76.900000 2956.200000 0 76.900000 2951.200000 0
+eoFillPath subpath 1 163.100000 2956.100000 0 168.100000 2956.100000 0 168.100000 3086.700000 0 163.100000 3086.700000 0 163.100000 2956.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 2956.200000 0 163.100000 2956.200000 0 163.100000 3091.600000 0 72.000000 3091.600000 0 72.000000 2956.200000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 3087.280000 87.320000 3077.280000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 3087.280000 93.420000 3077.280000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 3087.280000 97.510000 3077.280000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 3087.280000 101.420000 3077.280000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 3087.280000 104.170000 3077.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 3087.280000 110.530000 3077.280000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 3087.280000 113.270000 3077.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 3087.280000 116.470000 3077.280000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 3087.280000 123.480000 3077.280000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 3087.280000 129.610000 3077.280000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 3087.280000 135.090000 3077.280000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 3087.280000 140.890000 3077.280000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 3087.280000 144.820000 3077.280000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 3087.280000 150.920000 3077.280000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 3087.280000 153.670000 3077.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 3087.280000 156.470000 3077.280000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 2960.400000 0 168.200000 2960.400000 0 168.200000 3075.600000 0 72.000000 3075.600000 0 72.000000 2960.400000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3028.552000 79.253000 3019.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 3028.552000 86.669000 3019.552000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 3028.552000 90.215000 3019.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 3028.552000 93.077000 3019.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 3028.552000 97.406000 3019.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 3028.552000 100.853000 3019.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 3028.552000 107.324000 3019.552000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 3028.552000 112.337000 3019.552000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 3028.552000 115.271000 3019.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 3028.552000 118.655000 3019.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 3028.552000 126.512000 3019.552000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 3028.552000 130.805000 3019.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 3028.552000 135.881000 3019.552000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 3028.552000 139.355000 3019.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 3028.552000 147.284000 3019.552000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 3028.552000 150.074000 3019.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 3028.552000 155.897000 3019.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 3028.552000 158.750000 3019.552000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 3028.552000 161.853000 3019.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3018.052000 82.124000 3009.052000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 3018.052000 87.137000 3009.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 3018.052000 90.071000 3009.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 3018.052000 93.356000 3009.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 3018.052000 100.403000 3009.052000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 3018.052000 104.921000 3009.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 3018.052000 109.205000 3009.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 3018.052000 117.737000 3009.052000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 3018.052000 123.119000 3009.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 3018.052000 128.996000 3009.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 3018.052000 132.605000 3009.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 3018.052000 138.392000 3009.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 3018.052000 141.749000 3009.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 3018.052000 149.507000 3009.052000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 3018.052000 153.800000 3009.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 3018.052000 158.876000 3009.052000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 3018.052000 161.853000 3009.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3007.552000 81.764000 2998.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 3007.552000 87.596000 2998.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 3007.552000 93.356000 2998.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 3007.552000 102.050000 2998.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 3007.552000 113.822000 2998.552000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 3007.552000 122.651000 2998.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 3007.552000 134.117000 2998.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 3007.552000 138.401000 2998.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 3007.552000 147.149000 2998.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 3007.552000 158.921000 2998.552000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 3007.552000 161.853000 2998.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2997.052000 79.271000 2988.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 2997.052000 84.338000 2988.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 2997.052000 89.621000 2988.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 2997.052000 94.643000 2988.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 2997.052000 100.502000 2988.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 2997.052000 106.262000 2988.052000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 2997.052000 111.518000 2988.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 2997.052000 116.216000 2988.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 2997.052000 119.249000 2988.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 2997.052000 122.363000 2988.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 2997.052000 128.186000 2988.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 2997.052000 131.345000 2988.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 2997.052000 137.060000 2988.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 2997.052000 140.147000 2988.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 2997.052000 145.007000 2988.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 2997.052000 148.598000 2988.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 2997.052000 151.460000 2988.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 2997.052000 155.789000 2988.052000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 2997.052000 158.933000 2988.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2986.552000 80.702000 2977.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 2986.552000 83.573000 2977.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 2986.552000 89.396000 2977.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 2986.552000 95.156000 2977.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 2986.552000 100.547000 2977.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 2986.552000 109.052000 2977.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 2986.552000 111.959000 2977.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 2986.552000 117.251000 2977.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 2986.552000 121.904000 2977.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 2986.552000 126.503000 2977.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 2986.552000 129.338000 2977.552000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 2986.552000 134.936000 2977.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 2986.552000 143.441000 2977.552000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 2986.552000 148.796000 2977.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 2986.552000 154.574000 2977.552000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 2986.552000 158.876000 2977.552000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 2986.552000 161.853000 2977.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2976.052000 79.271000 2967.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 2976.052000 85.094000 2967.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 2976.052000 88.703000 2967.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 2976.052000 94.112000 2967.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 2976.052000 97.244000 2967.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 2976.052000 103.058000 2967.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 2976.052000 108.890000 2967.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 2976.052000 111.950000 2967.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 2976.052000 115.271000 2967.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 2976.052000 120.338000 2967.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 2976.052000 125.621000 2967.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 2976.052000 131.363000 2967.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 2976.052000 134.558000 2967.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 2976.052000 140.048000 2967.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 2976.052000 145.430000 2967.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 2976.052000 150.551000 2967.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 2976.052000 155.960000 2967.052000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 2976.052000 158.933000 2967.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2965.552000 80.009000 2956.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 2965.552000 85.364000 2956.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 2965.552000 88.271000 2956.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 2965.552000 91.169000 2956.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 2965.552000 97.955000 2956.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 2965.552000 107.765000 2956.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 2965.552000 110.672000 2956.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 2965.552000 115.964000 2956.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 2965.552000 120.617000 2956.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 2965.552000 125.216000 2956.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 2965.552000 128.051000 2956.552000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 2965.552000 134.954000 2956.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 2965.552000 146.285000 2956.552000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 2965.552000 151.667000 2956.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 2965.552000 155.906000 2956.552000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 2965.552000 159.033000 2956.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 2956.100000 0 72.100000 2956.100000 0 72.100000 3091.600000 0 72.000000 3091.600000 0 72.000000 2956.100000 0
+eoFillPath subpath 1 163.100000 2956.100000 0 163.200000 2956.100000 0 163.200000 3091.600000 0 163.100000 3091.600000 0 163.100000 2956.100000 0
+eoFillPath subpath 1 72.000000 3091.500000 0 163.200000 3091.500000 0 163.200000 3091.600000 0 72.000000 3091.600000 0 72.000000 3091.500000 0
+eoFillPath subpath 1 72.000000 2956.100000 0 163.200000 2956.100000 0 163.200000 2956.200000 0 72.000000 2956.200000 0 72.000000 2956.100000 0
+saveState
+eoClipPath subpath 1 96.900000 3031.400000 0 138.300000 3031.400000 0 138.300000 3075.600000 0 96.900000 3075.600000 0 96.900000 3031.400000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -223950.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 2676.600000 0 165.500000 2676.600000 0 165.500000 2681.600000 0 76.900000 2681.600000 0 76.900000 2676.600000 0
+eoFillPath subpath 1 160.500000 2681.500000 0 165.500000 2681.500000 0 165.500000 2837.800000 0 160.500000 2837.800000 0 160.500000 2681.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 2681.600000 0 121.400000 2681.600000 0 121.400000 2842.700000 0 72.000000 2842.700000 0 72.000000 2681.600000 0
+saveState
+eoClipPath subpath 1 72.000000 2681.500000 0 160.500000 2681.500000 0 160.500000 2842.600000 0 72.000000 2842.600000 0 72.000000 2681.500000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -187250.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 2838.380000 89.280000 2828.380000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 2838.380000 95.630000 2828.380000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 2838.380000 99.520000 2828.380000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 2838.380000 102.270000 2828.380000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 2838.380000 108.450000 2828.380000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 2838.380000 112.610000 2828.380000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 2838.380000 118.510000 2828.380000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 2838.380000 121.670000 2828.380000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 2838.380000 124.470000 2828.380000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 2838.380000 130.830000 2828.380000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 2838.380000 133.970000 2828.380000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 2838.380000 137.920000 2828.380000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 2838.380000 144.230000 2828.380000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 2838.380000 150.350000 2828.380000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 2838.380000 153.570000 2828.380000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 2826.680000 95.000000 2816.680000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 2826.680000 97.770000 2816.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 2826.680000 103.000000 2816.680000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 2826.680000 109.330000 2816.680000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 2826.680000 117.470000 2816.680000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 2826.680000 123.620000 2816.680000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 2826.680000 128.800000 2816.680000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 2826.680000 135.130000 2816.680000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 2826.680000 141.250000 2816.680000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 2826.680000 145.410000 2816.680000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2811.852000 82.961000 2802.852000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 2811.852000 87.614000 2802.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 2811.852000 93.356000 2802.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 2811.852000 98.612000 2802.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 2811.852000 103.733000 2802.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 2811.852000 106.568000 2802.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 2811.852000 111.959000 2802.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 2811.852000 114.866000 2802.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 2811.852000 117.665000 2802.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 2811.852000 122.768000 2802.852000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 2811.852000 125.747000 2802.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 2811.852000 131.651000 2802.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 2811.852000 136.907000 2802.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 2811.852000 142.307000 2802.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 2811.852000 148.049000 2802.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 2811.852000 150.956000 2802.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 2811.852000 156.302000 2802.852000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2811.852000 159.253000 2802.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2801.352000 84.095000 2792.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 2801.352000 89.900000 2792.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 2801.352000 95.318000 2792.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 2801.352000 100.349000 2792.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 2801.352000 110.789000 2792.352000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 2801.352000 111.464000 2792.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 2801.352000 114.362000 2792.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 2801.352000 119.348000 2792.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 2801.352000 126.962000 2792.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 2801.352000 132.047000 2792.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 2801.352000 139.958000 2792.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 2801.352000 142.865000 2792.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 2801.352000 147.410000 2792.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 2801.352000 153.287000 2792.352000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 2801.352000 156.333000 2792.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2790.852000 84.095000 2781.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 2790.852000 89.468000 2781.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 2790.852000 94.121000 2781.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 2790.852000 99.899000 2781.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 2790.852000 105.218000 2781.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 2790.852000 109.502000 2781.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 2790.852000 115.649000 2781.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 2790.852000 122.327000 2781.852000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 2790.852000 127.718000 2781.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 2790.852000 132.002000 2781.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 2790.852000 138.149000 2781.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 2790.852000 145.205000 2781.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 2790.852000 150.992000 2781.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 2790.852000 156.311000 2781.852000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2790.852000 159.253000 2781.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2780.352000 82.394000 2771.352000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 2780.352000 86.705000 2771.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 2780.352000 91.322000 2771.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 2780.352000 94.913000 2771.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 2780.352000 98.054000 2771.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 2780.352000 102.014000 2771.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 2780.352000 104.876000 2771.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 2780.352000 113.435000 2771.352000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 2780.352000 118.718000 2771.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 2780.352000 121.949000 2771.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 2780.352000 125.063000 2771.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 2780.352000 130.886000 2771.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 2780.352000 134.045000 2771.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 2780.352000 138.005000 2771.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 2780.352000 143.792000 2771.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 2780.352000 149.111000 2771.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 2780.352000 151.964000 2771.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 2780.352000 156.293000 2771.352000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 2780.352000 159.153000 2771.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2769.852000 79.271000 2760.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 2769.852000 82.169000 2760.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 2769.852000 85.526000 2760.852000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 2769.852000 90.818000 2760.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 2769.852000 94.454000 2760.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 2769.852000 99.008000 2760.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 2769.852000 104.318000 2760.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 2769.852000 110.096000 2760.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 2769.852000 115.856000 2760.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 2769.852000 119.546000 2760.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 2769.852000 124.001000 2760.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 2769.852000 129.509000 2760.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 2769.852000 133.145000 2760.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 2769.852000 139.751000 2760.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 2769.852000 145.205000 2760.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 2769.852000 148.841000 2760.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 2769.852000 152.657000 2760.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 2769.852000 156.293000 2760.852000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2769.852000 159.253000 2760.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2759.352000 84.095000 2750.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 2759.352000 88.406000 2750.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 2759.352000 93.824000 2750.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 2759.352000 99.602000 2750.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 2759.352000 105.362000 2750.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 2759.352000 108.422000 2750.352000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 2759.352000 116.747000 2750.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 2759.352000 129.275000 2750.352000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 2759.352000 135.089000 2750.352000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 2759.352000 138.698000 2750.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 2759.352000 141.560000 2750.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 2759.352000 146.906000 2750.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 2759.352000 151.190000 2750.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 2759.352000 156.266000 2750.352000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2759.352000 159.253000 2750.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2748.852000 82.196000 2739.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 2748.852000 87.560000 2739.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 2748.852000 92.213000 2739.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 2748.852000 96.551000 2739.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 2748.852000 101.708000 2739.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 2748.852000 107.216000 2739.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 2748.852000 111.653000 2739.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 2748.852000 118.961000 2739.852000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 2748.852000 124.316000 2739.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 2748.852000 128.654000 2739.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 2748.852000 133.172000 2739.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 2748.852000 138.995000 2739.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 2748.852000 143.612000 2739.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 2748.852000 148.913000 2739.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 2748.852000 153.197000 2739.852000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 2748.852000 156.333000 2739.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2738.352000 80.009000 2729.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 2738.352000 85.319000 2729.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 2738.352000 91.061000 2729.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 2738.352000 100.052000 2729.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 2738.352000 113.993000 2729.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 2738.352000 116.873000 2729.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 2738.352000 120.410000 2729.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 2738.352000 126.296000 2729.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 2738.352000 135.350000 2729.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 2738.352000 145.106000 2729.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 2738.352000 150.893000 2729.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 2738.352000 156.212000 2729.352000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2738.352000 159.253000 2729.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2727.852000 82.196000 2718.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 2727.852000 87.560000 2718.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 2727.852000 93.392000 2718.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 2727.852000 99.152000 2718.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 2727.852000 101.960000 2718.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 2727.852000 107.306000 2718.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 2727.852000 111.905000 2718.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 2727.852000 115.640000 2718.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 2727.852000 122.444000 2718.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 2727.852000 127.898000 2718.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 2727.852000 135.575000 2718.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 2727.852000 141.380000 2718.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 2727.852000 145.241000 2718.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 2727.852000 150.803000 2718.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 2727.852000 156.302000 2718.852000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2727.852000 159.253000 2718.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2717.352000 80.009000 2708.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 2717.352000 85.796000 2708.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 2717.352000 91.115000 2708.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 2717.352000 95.399000 2708.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 2717.352000 100.718000 2708.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 2717.352000 107.054000 2708.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 2717.352000 118.097000 2708.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 2717.352000 123.524000 2708.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 2717.352000 129.401000 2708.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 2717.352000 131.768000 2708.352000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 2717.352000 135.413000 2708.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 2717.352000 141.659000 2708.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 2717.352000 150.965000 2708.352000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 2717.352000 156.320000 2708.352000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2717.352000 159.253000 2708.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2706.852000 81.017000 2697.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 2706.852000 84.608000 2697.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 2706.852000 89.963000 2697.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 2706.852000 92.870000 2697.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 2706.852000 98.693000 2697.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 2706.852000 103.310000 2697.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 2706.852000 107.243000 2697.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 2706.852000 116.081000 2697.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 2706.852000 121.886000 2697.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 2706.852000 127.205000 2697.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 2706.852000 132.983000 2697.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 2706.852000 136.943000 2697.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 2706.852000 143.846000 2697.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 2706.852000 148.184000 2697.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 2706.852000 153.260000 2697.852000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 2706.852000 156.433000 2697.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2696.352000 79.271000 2687.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 2696.352000 85.094000 2687.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 2696.352000 90.854000 2687.352000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 2696.352000 93.653000 2687.352000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 2681.500000 0 72.100000 2681.500000 0 72.100000 2842.700000 0 72.000000 2842.700000 0 72.000000 2681.500000 0
+eoFillPath subpath 1 160.500000 2681.500000 0 160.600000 2681.500000 0 160.600000 2842.700000 0 160.500000 2842.700000 0 160.500000 2681.500000 0
+eoFillPath subpath 1 72.000000 2842.600000 0 160.600000 2842.600000 0 160.600000 2842.700000 0 72.000000 2842.700000 0 72.000000 2842.600000 0
+eoFillPath subpath 1 72.000000 2681.500000 0 160.600000 2681.500000 0 160.600000 2681.600000 0 72.000000 2681.600000 0 72.000000 2681.500000 0
+saveState
+eoClipPath subpath 1 108.000000 2194.100000 0 178.900000 2194.100000 0 178.900000 2250.800000 0 108.000000 2250.800000 0 108.000000 2194.100000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -140220.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -1864.300000 0 165.500000 -1864.300000 0 165.500000 -1859.300000 0 76.900000 -1859.300000 0 76.900000 -1864.300000 0
+eoFillPath subpath 1 160.500000 -1859.400000 0 165.500000 -1859.400000 0 165.500000 -1750.600000 0 160.500000 -1750.600000 0 160.500000 -1859.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -1859.300000 0 160.500000 -1859.300000 0 160.500000 -1745.700000 0 72.000000 -1745.700000 0 72.000000 -1859.300000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1750.048000 83.771000 -1759.048000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 -1750.048000 89.594000 -1759.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 -1750.048000 92.465000 -1759.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 -1750.048000 97.568000 -1759.048000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 -1750.048000 100.943000 -1759.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 -1750.048000 106.955000 -1759.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 -1750.048000 110.447000 -1759.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 -1750.048000 114.425000 -1759.048000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 -1750.048000 119.717000 -1759.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 -1750.048000 127.493000 -1759.048000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 -1750.048000 130.949000 -1759.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 -1750.048000 136.574000 -1759.048000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 -1750.048000 141.920000 -1759.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 -1750.048000 147.365000 -1759.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 -1750.048000 151.703000 -1759.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 -1750.048000 156.320000 -1759.048000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -1750.048000 159.153000 -1759.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1760.548000 81.764000 -1769.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -1760.548000 85.130000 -1769.548000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 -1760.548000 88.712000 -1769.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 -1760.548000 94.022000 -1769.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 -1760.548000 98.306000 -1769.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -1760.548000 102.455000 -1769.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 -1760.548000 106.676000 -1769.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 -1760.548000 110.312000 -1769.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 -1760.548000 114.920000 -1769.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 -1760.548000 119.060000 -1769.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 -1760.548000 125.450000 -1769.548000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 -1760.548000 130.832000 -1769.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 -1760.548000 139.445000 -1769.548000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 -1760.548000 145.169000 -1769.548000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 -1760.548000 148.076000 -1769.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 -1760.548000 153.323000 -1769.548000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -1760.548000 156.433000 -1769.548000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1771.048000 80.009000 -1780.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -1771.048000 82.871000 -1780.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 -1771.048000 88.316000 -1780.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 -1771.048000 94.094000 -1780.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 -1771.048000 96.947000 -1780.048000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 -1771.048000 104.948000 -1780.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 -1771.048000 113.705000 -1780.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 -1771.048000 119.492000 -1780.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 -1771.048000 124.811000 -1780.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 -1771.048000 132.848000 -1780.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 -1771.048000 141.605000 -1780.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 -1771.048000 144.467000 -1780.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 -1771.048000 148.103000 -1780.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 -1771.048000 150.965000 -1780.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 -1771.048000 156.311000 -1780.048000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1771.048000 159.253000 -1780.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1781.548000 80.999000 -1790.548000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 -1781.548000 90.539000 -1790.548000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 -1781.548000 95.318000 -1790.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 -1781.548000 99.602000 -1790.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -1781.548000 102.473000 -1790.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 -1781.548000 108.260000 -1790.548000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 -1781.548000 110.762000 -1790.548000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 -1781.548000 115.316000 -1790.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 -1781.548000 122.156000 -1790.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 -1781.548000 132.299000 -1790.548000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 -1781.548000 136.970000 -1790.548000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 -1781.548000 139.877000 -1790.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 -1781.548000 142.775000 -1790.548000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 -1781.548000 148.022000 -1790.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 -1781.548000 152.720000 -1790.548000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 -1781.548000 156.311000 -1790.548000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1781.548000 159.253000 -1790.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1792.048000 83.006000 -1801.048000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 -1792.048000 88.793000 -1801.048000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 -1792.048000 91.664000 -1801.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 -1792.048000 94.562000 -1801.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 -1792.048000 100.349000 -1801.048000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 -1792.048000 103.157000 -1801.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 -1792.048000 108.980000 -1801.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 -1792.048000 114.740000 -1801.048000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 -1792.048000 119.375000 -1801.048000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 -1792.048000 128.033000 -1801.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 -1792.048000 141.479000 -1801.048000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 -1792.048000 146.807000 -1801.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -1792.048000 152.684000 -1801.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 -1792.048000 156.293000 -1801.048000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1792.048000 159.253000 -1801.048000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1802.548000 79.730000 -1811.548000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 -1802.548000 84.005000 -1811.548000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 -1802.548000 89.423000 -1811.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 -1802.548000 98.036000 -1811.548000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 -1802.548000 121.157000 -1811.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 -1802.548000 145.115000 -1811.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 -1802.548000 151.001000 -1811.548000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 -1802.548000 156.320000 -1811.548000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -1802.548000 159.253000 -1811.548000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1813.048000 83.285000 -1822.048000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 -1813.048000 89.099000 -1822.048000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 -1813.048000 93.401000 -1822.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 -1813.048000 98.477000 -1822.048000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 -1813.048000 103.121000 -1822.048000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 -1813.048000 105.974000 -1822.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 -1813.048000 111.320000 -1822.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 -1813.048000 115.604000 -1822.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 -1813.048000 123.857000 -1822.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 -1813.048000 136.007000 -1822.048000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 -1813.048000 141.794000 -1822.048000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 -1813.048000 144.665000 -1822.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 -1813.048000 147.464000 -1822.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 -1813.048000 153.251000 -1822.048000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -1813.048000 156.433000 -1822.048000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1823.548000 79.271000 -1832.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -1823.548000 85.094000 -1832.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -1823.548000 90.854000 -1832.548000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 -1823.548000 96.146000 -1832.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 -1823.548000 102.302000 -1832.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 -1823.548000 107.711000 -1832.548000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 -1823.548000 113.048000 -1832.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 -1823.548000 119.204000 -1832.548000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 -1823.548000 124.991000 -1832.548000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 -1823.548000 130.310000 -1832.548000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 -1823.548000 135.647000 -1832.548000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 -1823.548000 144.755000 -1832.548000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 -1823.548000 153.323000 -1832.548000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -1823.548000 156.333000 -1832.548000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1834.048000 82.160000 -1843.048000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 -1834.048000 85.067000 -1843.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 -1834.048000 89.297000 -1843.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 -1834.048000 94.616000 -1843.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 -1834.048000 98.747000 -1843.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 -1834.048000 106.055000 -1843.048000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 -1834.048000 109.700000 -1843.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 -1834.048000 115.055000 -1843.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 -1834.048000 118.601000 -1843.048000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 -1834.048000 124.010000 -1843.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 -1834.048000 128.042000 -1843.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 -1834.048000 135.998000 -1843.048000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 -1834.048000 141.785000 -1843.048000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 -1834.048000 144.656000 -1843.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 -1834.048000 147.554000 -1843.048000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 -1834.048000 153.341000 -1843.048000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -1834.048000 156.433000 -1843.048000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1844.548000 79.271000 -1853.548000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -1844.548000 85.094000 -1853.548000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -1844.548000 90.854000 -1853.548000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 -1844.548000 93.743000 -1853.548000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -1859.400000 0 72.100000 -1859.400000 0 72.100000 -1745.700000 0 72.000000 -1745.700000 0 72.000000 -1859.400000 0
+eoFillPath subpath 1 160.500000 -1859.400000 0 160.600000 -1859.400000 0 160.600000 -1745.700000 0 160.500000 -1745.700000 0 160.500000 -1859.400000 0
+eoFillPath subpath 1 72.000000 -1745.800000 0 160.600000 -1745.800000 0 160.600000 -1745.700000 0 72.000000 -1745.700000 0 72.000000 -1745.800000 0
+eoFillPath subpath 1 72.000000 -1859.400000 0 160.600000 -1859.400000 0 160.600000 -1859.300000 0 72.000000 -1859.300000 0 72.000000 -1859.400000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 4330.200000 0 169.600000 4330.200000 0 169.600000 4335.200000 0 76.900000 4335.200000 0 76.900000 4330.200000 0
+eoFillPath subpath 1 164.600000 4335.100000 0 169.600000 4335.100000 0 169.600000 4450.700000 0 164.600000 4450.700000 0 164.600000 4335.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 4335.200000 0 121.400000 4335.200000 0 121.400000 4455.600000 0 72.000000 4455.600000 0 72.000000 4335.200000 0
+saveState
+eoClipPath subpath 1 72.000000 4335.100000 0 164.600000 4335.100000 0 164.600000 4455.500000 0 72.000000 4455.500000 0 72.000000 4335.100000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -348490.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 4405.100000 0 93.700000 4405.100000 0 93.700000 4424.300000 0 72.000000 4424.300000 0 72.000000 4405.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 4405.100000 0 169.600000 4405.100000 0 169.600000 4424.300000 0 93.700000 4424.300000 0 93.700000 4405.100000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 4388.400000 0 93.700000 4388.400000 0 93.700000 4405.100000 0 72.000000 4405.100000 0 72.000000 4388.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 4388.400000 0 169.600000 4388.400000 0 169.600000 4405.100000 0 93.700000 4405.100000 0 93.700000 4388.400000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 4369.200000 0 93.700000 4369.200000 0 93.700000 4388.400000 0 72.000000 4388.400000 0 72.000000 4369.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 4369.200000 0 169.600000 4369.200000 0 169.600000 4388.400000 0 93.700000 4388.400000 0 93.700000 4369.200000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 4350.000000 0 93.700000 4350.000000 0 93.700000 4369.200000 0 72.000000 4369.200000 0 72.000000 4350.000000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 4350.000000 0 169.600000 4350.000000 0 169.600000 4369.200000 0 93.700000 4369.200000 0 93.700000 4350.000000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4451.252000 82.898000 4442.252000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 4451.252000 87.200000 4442.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 4451.252000 90.809000 4442.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 4451.252000 93.671000 4442.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 4451.252000 98.315000 4442.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 4451.252000 101.906000 4442.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 4451.252000 106.514000 4442.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 4451.252000 109.754000 4442.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 4451.252000 112.868000 4442.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 4451.252000 118.691000 4442.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 4451.252000 121.850000 4442.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 4451.252000 125.702000 4442.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 4451.252000 131.588000 4442.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 4451.252000 136.907000 4442.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 4451.252000 140.039000 4442.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 4451.252000 146.078000 4442.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 4451.252000 151.442000 4442.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 4451.252000 154.349000 4442.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 4451.252000 157.148000 4442.252000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 4451.252000 160.433000 4442.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4440.752000 84.095000 4431.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 4440.752000 89.468000 4431.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 4440.752000 94.580000 4431.752000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 4440.752000 97.631000 4431.752000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 4420.352000 104.443000 4411.352000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 4420.352000 109.060000 4411.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 4420.352000 113.398000 4411.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 4420.352000 119.194000 4411.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 4420.352000 124.612000 4411.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 4420.352000 127.465000 4411.352000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 4403.652000 101.176000 4394.652000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 4403.652000 104.074000 4394.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 4403.652000 109.420000 4394.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 4403.652000 114.442000 4394.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 4403.652000 120.202000 4394.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 4403.652000 123.811000 4394.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 4403.652000 129.121000 4394.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 4403.652000 134.899000 4394.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 4403.652000 139.516000 4394.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 4403.652000 143.107000 4394.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 4403.652000 148.417000 4394.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 4403.652000 151.270000 4394.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 4403.652000 157.093000 4394.652000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 4386.952000 103.048000 4377.952000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 4386.952000 108.421000 4377.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 4386.952000 113.443000 4377.952000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 4386.952000 118.852000 4377.952000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 4386.952000 124.702000 4377.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 4386.952000 130.021000 4377.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 4386.952000 135.079000 4377.952000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 4367.752000 104.407000 4358.752000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 4367.752000 109.816000 4358.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 4367.752000 115.594000 4358.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 4367.752000 121.354000 4358.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 4367.752000 125.692000 4358.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 4367.752000 128.563000 4358.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 4367.752000 133.954000 4358.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 4367.752000 139.786000 4358.752000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 4335.100000 0 72.100000 4335.100000 0 72.100000 4455.600000 0 72.000000 4455.600000 0 72.000000 4335.100000 0
+eoFillPath subpath 1 164.600000 4335.100000 0 164.700000 4335.100000 0 164.700000 4455.600000 0 164.600000 4455.600000 0 164.600000 4335.100000 0
+eoFillPath subpath 1 72.000000 4455.500000 0 164.700000 4455.500000 0 164.700000 4455.600000 0 72.000000 4455.600000 0 72.000000 4455.500000 0
+eoFillPath subpath 1 72.000000 4335.100000 0 164.700000 4335.100000 0 164.700000 4335.200000 0 72.000000 4335.200000 0 72.000000 4335.100000 0
+eoFillPath subpath 1 91.300000 4350.000000 0 93.700000 4350.000000 0 93.700000 4424.300000 0 91.300000 4424.300000 0 91.300000 4350.000000 0
+eoFillPath subpath 1 72.000000 4369.200000 0 169.600000 4369.200000 0 169.600000 4371.600000 0 72.000000 4371.600000 0 72.000000 4369.200000 0
+eoFillPath subpath 1 72.000000 4421.900000 0 169.600000 4421.900000 0 169.600000 4424.300000 0 72.000000 4424.300000 0 72.000000 4421.900000 0
+eoFillPath subpath 1 72.000000 4350.000000 0 169.600000 4350.000000 0 169.600000 4352.400000 0 72.000000 4352.400000 0 72.000000 4350.000000 0
+saveState
+eoClipPath subpath 1 108.000000 -3516.000000 0 150.800000 -3516.000000 0 150.800000 -3471.800000 0 108.000000 -3471.800000 0 108.000000 -3516.000000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 430800.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -4366.000000 0 499.600000 -4366.000000 0 499.600000 -4360.900000 0 186.800000 -4360.900000 0 186.800000 -4366.000000 0
+eoFillPath subpath 1 494.500000 -4361.000000 0 499.600000 -4361.000000 0 499.600000 -4172.600000 0 494.500000 -4172.600000 0 494.500000 -4361.000000 0
+saveState
+eoClipPath subpath 1 181.800000 -4360.900000 0 494.500000 -4360.900000 0 494.500000 -4167.600000 0 181.800000 -4167.600000 0 181.800000 -4360.900000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -4167.500000 0 494.500000 -4167.500000 0 494.500000 -4167.500000 0 181.700000 -4167.500000 0
+eoFillPath subpath 1 181.700000 -4167.500000 0 494.500000 -4167.500000 0 494.500000 -4168.300000 0 181.700000 -4168.300000 0 181.700000 -4167.500000 0
+eoFillPath subpath 1 181.700000 -4168.300000 0 494.500000 -4168.300000 0 494.500000 -4169.000000 0 181.700000 -4169.000000 0 181.700000 -4168.300000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -4169.000000 0 494.500000 -4169.000000 0 494.500000 -4169.800000 0 181.700000 -4169.800000 0 181.700000 -4169.000000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -4169.800000 0 494.500000 -4169.800000 0 494.500000 -4170.600000 0 181.700000 -4170.600000 0 181.700000 -4169.800000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -4170.600000 0 494.500000 -4170.600000 0 494.500000 -4171.300000 0 181.700000 -4171.300000 0 181.700000 -4170.600000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -4171.300000 0 494.500000 -4171.300000 0 494.500000 -4172.100000 0 181.700000 -4172.100000 0 181.700000 -4171.300000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -4172.100000 0 494.500000 -4172.100000 0 494.500000 -4172.800000 0 181.700000 -4172.800000 0 181.700000 -4172.100000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -4172.800000 0 494.500000 -4172.800000 0 494.500000 -4173.600000 0 181.700000 -4173.600000 0 181.700000 -4172.800000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -4173.600000 0 494.500000 -4173.600000 0 494.500000 -4174.300000 0 181.700000 -4174.300000 0 181.700000 -4173.600000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -4174.300000 0 494.500000 -4174.300000 0 494.500000 -4175.100000 0 181.700000 -4175.100000 0 181.700000 -4174.300000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -4175.100000 0 494.500000 -4175.100000 0 494.500000 -4175.900000 0 181.700000 -4175.900000 0 181.700000 -4175.100000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -4175.900000 0 494.500000 -4175.900000 0 494.500000 -4176.600000 0 181.700000 -4176.600000 0 181.700000 -4175.900000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -4176.600000 0 494.500000 -4176.600000 0 494.500000 -4177.400000 0 181.700000 -4177.400000 0 181.700000 -4176.600000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -4177.400000 0 494.500000 -4177.400000 0 494.500000 -4178.100000 0 181.700000 -4178.100000 0 181.700000 -4177.400000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -4178.100000 0 494.500000 -4178.100000 0 494.500000 -4178.900000 0 181.700000 -4178.900000 0 181.700000 -4178.100000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -4178.900000 0 494.500000 -4178.900000 0 494.500000 -4179.700000 0 181.700000 -4179.700000 0 181.700000 -4178.900000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -4179.700000 0 494.500000 -4179.700000 0 494.500000 -4180.400000 0 181.700000 -4180.400000 0 181.700000 -4179.700000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -4180.400000 0 494.500000 -4180.400000 0 494.500000 -4181.200000 0 181.700000 -4181.200000 0 181.700000 -4180.400000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -4181.200000 0 494.500000 -4181.200000 0 494.500000 -4181.900000 0 181.700000 -4181.900000 0 181.700000 -4181.200000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -4181.900000 0 494.500000 -4181.900000 0 494.500000 -4182.700000 0 181.700000 -4182.700000 0 181.700000 -4181.900000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -4182.700000 0 494.500000 -4182.700000 0 494.500000 -4183.500000 0 181.700000 -4183.500000 0 181.700000 -4182.700000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -4183.500000 0 494.500000 -4183.500000 0 494.500000 -4184.200000 0 181.700000 -4184.200000 0 181.700000 -4183.500000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -4184.200000 0 494.500000 -4184.200000 0 494.500000 -4185.000000 0 181.700000 -4185.000000 0 181.700000 -4184.200000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -4185.000000 0 494.500000 -4185.000000 0 494.500000 -4185.700000 0 181.700000 -4185.700000 0 181.700000 -4185.000000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -4185.700000 0 494.500000 -4185.700000 0 494.500000 -4186.500000 0 181.700000 -4186.500000 0 181.700000 -4185.700000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -4186.500000 0 494.500000 -4186.500000 0 494.500000 -4187.200000 0 181.700000 -4187.200000 0 181.700000 -4186.500000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -4187.200000 0 494.500000 -4187.200000 0 494.500000 -4188.000000 0 181.700000 -4188.000000 0 181.700000 -4187.200000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -4188.000000 0 494.500000 -4188.000000 0 494.500000 -4188.800000 0 181.700000 -4188.800000 0 181.700000 -4188.000000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -4188.800000 0 494.500000 -4188.800000 0 494.500000 -4189.500000 0 181.700000 -4189.500000 0 181.700000 -4188.800000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -4189.500000 0 494.500000 -4189.500000 0 494.500000 -4190.300000 0 181.700000 -4190.300000 0 181.700000 -4189.500000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -4190.300000 0 494.500000 -4190.300000 0 494.500000 -4191.000000 0 181.700000 -4191.000000 0 181.700000 -4190.300000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -4191.000000 0 494.500000 -4191.000000 0 494.500000 -4191.800000 0 181.700000 -4191.800000 0 181.700000 -4191.000000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -4191.800000 0 494.500000 -4191.800000 0 494.500000 -4192.600000 0 181.700000 -4192.600000 0 181.700000 -4191.800000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -4192.600000 0 494.500000 -4192.600000 0 494.500000 -4193.300000 0 181.700000 -4193.300000 0 181.700000 -4192.600000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -4193.300000 0 494.500000 -4193.300000 0 494.500000 -4194.100000 0 181.700000 -4194.100000 0 181.700000 -4193.300000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -4194.100000 0 494.500000 -4194.100000 0 494.500000 -4194.800000 0 181.700000 -4194.800000 0 181.700000 -4194.100000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -4194.800000 0 494.500000 -4194.800000 0 494.500000 -4195.600000 0 181.700000 -4195.600000 0 181.700000 -4194.800000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -4195.600000 0 494.500000 -4195.600000 0 494.500000 -4196.400000 0 181.700000 -4196.400000 0 181.700000 -4195.600000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -4196.400000 0 494.500000 -4196.400000 0 494.500000 -4197.100000 0 181.700000 -4197.100000 0 181.700000 -4196.400000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -4197.100000 0 494.500000 -4197.100000 0 494.500000 -4197.900000 0 181.700000 -4197.900000 0 181.700000 -4197.100000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -4197.900000 0 494.500000 -4197.900000 0 494.500000 -4198.600000 0 181.700000 -4198.600000 0 181.700000 -4197.900000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -4198.600000 0 494.500000 -4198.600000 0 494.500000 -4199.400000 0 181.700000 -4199.400000 0 181.700000 -4198.600000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -4199.400000 0 494.500000 -4199.400000 0 494.500000 -4200.100000 0 181.700000 -4200.100000 0 181.700000 -4199.400000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -4200.100000 0 494.500000 -4200.100000 0 494.500000 -4200.900000 0 181.700000 -4200.900000 0 181.700000 -4200.100000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -4200.900000 0 494.500000 -4200.900000 0 494.500000 -4201.700000 0 181.700000 -4201.700000 0 181.700000 -4200.900000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -4201.700000 0 494.500000 -4201.700000 0 494.500000 -4202.400000 0 181.700000 -4202.400000 0 181.700000 -4201.700000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -4202.400000 0 494.500000 -4202.400000 0 494.500000 -4203.200000 0 181.700000 -4203.200000 0 181.700000 -4202.400000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -4203.200000 0 494.500000 -4203.200000 0 494.500000 -4203.900000 0 181.700000 -4203.900000 0 181.700000 -4203.200000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -4203.900000 0 494.500000 -4203.900000 0 494.500000 -4204.700000 0 181.700000 -4204.700000 0 181.700000 -4203.900000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -4204.700000 0 494.500000 -4204.700000 0 494.500000 -4205.500000 0 181.700000 -4205.500000 0 181.700000 -4204.700000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -4205.500000 0 494.500000 -4205.500000 0 494.500000 -4206.200000 0 181.700000 -4206.200000 0 181.700000 -4205.500000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -4206.200000 0 494.500000 -4206.200000 0 494.500000 -4207.000000 0 181.700000 -4207.000000 0 181.700000 -4206.200000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -4207.000000 0 494.500000 -4207.000000 0 494.500000 -4207.700000 0 181.700000 -4207.700000 0 181.700000 -4207.000000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -4207.700000 0 494.500000 -4207.700000 0 494.500000 -4208.500000 0 181.700000 -4208.500000 0 181.700000 -4207.700000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -4208.500000 0 494.500000 -4208.500000 0 494.500000 -4209.300000 0 181.700000 -4209.300000 0 181.700000 -4208.500000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -4209.300000 0 494.500000 -4209.300000 0 494.500000 -4210.000000 0 181.700000 -4210.000000 0 181.700000 -4209.300000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -4210.000000 0 494.500000 -4210.000000 0 494.500000 -4210.800000 0 181.700000 -4210.800000 0 181.700000 -4210.000000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -4210.800000 0 494.500000 -4210.800000 0 494.500000 -4211.500000 0 181.700000 -4211.500000 0 181.700000 -4210.800000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -4211.500000 0 494.500000 -4211.500000 0 494.500000 -4212.300000 0 181.700000 -4212.300000 0 181.700000 -4211.500000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -4212.300000 0 494.500000 -4212.300000 0 494.500000 -4213.000000 0 181.700000 -4213.000000 0 181.700000 -4212.300000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -4213.000000 0 494.500000 -4213.000000 0 494.500000 -4213.800000 0 181.700000 -4213.800000 0 181.700000 -4213.000000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -4213.800000 0 494.500000 -4213.800000 0 494.500000 -4214.600000 0 181.700000 -4214.600000 0 181.700000 -4213.800000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -4214.600000 0 494.500000 -4214.600000 0 494.500000 -4215.300000 0 181.700000 -4215.300000 0 181.700000 -4214.600000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -4215.300000 0 494.500000 -4215.300000 0 494.500000 -4216.100000 0 181.700000 -4216.100000 0 181.700000 -4215.300000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -4216.100000 0 494.500000 -4216.100000 0 494.500000 -4216.800000 0 181.700000 -4216.800000 0 181.700000 -4216.100000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -4216.800000 0 494.500000 -4216.800000 0 494.500000 -4217.600000 0 181.700000 -4217.600000 0 181.700000 -4216.800000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -4217.600000 0 494.500000 -4217.600000 0 494.500000 -4218.300000 0 181.700000 -4218.300000 0 181.700000 -4217.600000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -4218.300000 0 494.500000 -4218.300000 0 494.500000 -4219.100000 0 181.700000 -4219.100000 0 181.700000 -4218.300000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -4219.100000 0 494.500000 -4219.100000 0 494.500000 -4219.900000 0 181.700000 -4219.900000 0 181.700000 -4219.100000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -4219.900000 0 494.500000 -4219.900000 0 494.500000 -4220.600000 0 181.700000 -4220.600000 0 181.700000 -4219.900000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -4220.600000 0 494.500000 -4220.600000 0 494.500000 -4221.400000 0 181.700000 -4221.400000 0 181.700000 -4220.600000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -4221.400000 0 494.500000 -4221.400000 0 494.500000 -4222.100000 0 181.700000 -4222.100000 0 181.700000 -4221.400000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -4222.100000 0 494.500000 -4222.100000 0 494.500000 -4222.900000 0 181.700000 -4222.900000 0 181.700000 -4222.100000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -4222.900000 0 494.500000 -4222.900000 0 494.500000 -4223.700000 0 181.700000 -4223.700000 0 181.700000 -4222.900000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -4223.700000 0 494.500000 -4223.700000 0 494.500000 -4224.400000 0 181.700000 -4224.400000 0 181.700000 -4223.700000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -4224.400000 0 494.500000 -4224.400000 0 494.500000 -4225.200000 0 181.700000 -4225.200000 0 181.700000 -4224.400000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -4225.200000 0 494.500000 -4225.200000 0 494.500000 -4225.900000 0 181.700000 -4225.900000 0 181.700000 -4225.200000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -4225.900000 0 494.500000 -4225.900000 0 494.500000 -4226.700000 0 181.700000 -4226.700000 0 181.700000 -4225.900000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -4226.700000 0 494.500000 -4226.700000 0 494.500000 -4227.400000 0 181.700000 -4227.400000 0 181.700000 -4226.700000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -4227.400000 0 494.500000 -4227.400000 0 494.500000 -4228.200000 0 181.700000 -4228.200000 0 181.700000 -4227.400000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -4228.200000 0 494.500000 -4228.200000 0 494.500000 -4229.000000 0 181.700000 -4229.000000 0 181.700000 -4228.200000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -4229.000000 0 494.500000 -4229.000000 0 494.500000 -4229.700000 0 181.700000 -4229.700000 0 181.700000 -4229.000000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -4229.700000 0 494.500000 -4229.700000 0 494.500000 -4230.500000 0 181.700000 -4230.500000 0 181.700000 -4229.700000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -4230.500000 0 494.500000 -4230.500000 0 494.500000 -4231.200000 0 181.700000 -4231.200000 0 181.700000 -4230.500000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -4231.200000 0 494.500000 -4231.200000 0 494.500000 -4232.000000 0 181.700000 -4232.000000 0 181.700000 -4231.200000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -4232.000000 0 494.500000 -4232.000000 0 494.500000 -4232.700000 0 181.700000 -4232.700000 0 181.700000 -4232.000000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -4232.700000 0 494.500000 -4232.700000 0 494.500000 -4233.500000 0 181.700000 -4233.500000 0 181.700000 -4232.700000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -4233.500000 0 494.500000 -4233.500000 0 494.500000 -4234.300000 0 181.700000 -4234.300000 0 181.700000 -4233.500000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -4234.300000 0 494.500000 -4234.300000 0 494.500000 -4235.000000 0 181.700000 -4235.000000 0 181.700000 -4234.300000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -4235.000000 0 494.500000 -4235.000000 0 494.500000 -4235.800000 0 181.700000 -4235.800000 0 181.700000 -4235.000000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -4235.800000 0 494.500000 -4235.800000 0 494.500000 -4236.500000 0 181.700000 -4236.500000 0 181.700000 -4235.800000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -4236.500000 0 494.500000 -4236.500000 0 494.500000 -4237.300000 0 181.700000 -4237.300000 0 181.700000 -4236.500000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -4237.300000 0 494.500000 -4237.300000 0 494.500000 -4238.100000 0 181.700000 -4238.100000 0 181.700000 -4237.300000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -4238.100000 0 494.500000 -4238.100000 0 494.500000 -4238.800000 0 181.700000 -4238.800000 0 181.700000 -4238.100000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -4238.800000 0 494.500000 -4238.800000 0 494.500000 -4239.600000 0 181.700000 -4239.600000 0 181.700000 -4238.800000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -4239.600000 0 494.500000 -4239.600000 0 494.500000 -4240.300000 0 181.700000 -4240.300000 0 181.700000 -4239.600000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -4240.300000 0 494.500000 -4240.300000 0 494.500000 -4241.100000 0 181.700000 -4241.100000 0 181.700000 -4240.300000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -4241.100000 0 494.500000 -4241.100000 0 494.500000 -4241.800000 0 181.700000 -4241.800000 0 181.700000 -4241.100000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -4241.800000 0 494.500000 -4241.800000 0 494.500000 -4242.600000 0 181.700000 -4242.600000 0 181.700000 -4241.800000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -4242.600000 0 494.500000 -4242.600000 0 494.500000 -4243.400000 0 181.700000 -4243.400000 0 181.700000 -4242.600000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -4243.400000 0 494.500000 -4243.400000 0 494.500000 -4244.100000 0 181.700000 -4244.100000 0 181.700000 -4243.400000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -4244.100000 0 494.500000 -4244.100000 0 494.500000 -4244.900000 0 181.700000 -4244.900000 0 181.700000 -4244.100000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -4244.900000 0 494.500000 -4244.900000 0 494.500000 -4245.600000 0 181.700000 -4245.600000 0 181.700000 -4244.900000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -4245.600000 0 494.500000 -4245.600000 0 494.500000 -4246.400000 0 181.700000 -4246.400000 0 181.700000 -4245.600000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -4246.400000 0 494.500000 -4246.400000 0 494.500000 -4247.200000 0 181.700000 -4247.200000 0 181.700000 -4246.400000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -4247.200000 0 494.500000 -4247.200000 0 494.500000 -4247.900000 0 181.700000 -4247.900000 0 181.700000 -4247.200000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -4247.900000 0 494.500000 -4247.900000 0 494.500000 -4248.700000 0 181.700000 -4248.700000 0 181.700000 -4247.900000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -4248.700000 0 494.500000 -4248.700000 0 494.500000 -4249.400000 0 181.700000 -4249.400000 0 181.700000 -4248.700000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -4249.400000 0 494.500000 -4249.400000 0 494.500000 -4250.200000 0 181.700000 -4250.200000 0 181.700000 -4249.400000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -4250.200000 0 494.500000 -4250.200000 0 494.500000 -4251.000000 0 181.700000 -4251.000000 0 181.700000 -4250.200000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -4251.000000 0 494.500000 -4251.000000 0 494.500000 -4251.700000 0 181.700000 -4251.700000 0 181.700000 -4251.000000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -4251.700000 0 494.500000 -4251.700000 0 494.500000 -4252.500000 0 181.700000 -4252.500000 0 181.700000 -4251.700000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -4252.500000 0 494.500000 -4252.500000 0 494.500000 -4253.200000 0 181.700000 -4253.200000 0 181.700000 -4252.500000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -4253.200000 0 494.500000 -4253.200000 0 494.500000 -4254.000000 0 181.700000 -4254.000000 0 181.700000 -4253.200000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -4254.000000 0 494.500000 -4254.000000 0 494.500000 -4254.700000 0 181.700000 -4254.700000 0 181.700000 -4254.000000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -4254.700000 0 494.500000 -4254.700000 0 494.500000 -4255.500000 0 181.700000 -4255.500000 0 181.700000 -4254.700000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -4255.500000 0 494.500000 -4255.500000 0 494.500000 -4256.300000 0 181.700000 -4256.300000 0 181.700000 -4255.500000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -4256.300000 0 494.500000 -4256.300000 0 494.500000 -4257.000000 0 181.700000 -4257.000000 0 181.700000 -4256.300000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -4257.000000 0 494.500000 -4257.000000 0 494.500000 -4257.800000 0 181.700000 -4257.800000 0 181.700000 -4257.000000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -4257.800000 0 494.500000 -4257.800000 0 494.500000 -4258.500000 0 181.700000 -4258.500000 0 181.700000 -4257.800000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -4258.500000 0 494.500000 -4258.500000 0 494.500000 -4259.300000 0 181.700000 -4259.300000 0 181.700000 -4258.500000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -4259.300000 0 494.500000 -4259.300000 0 494.500000 -4260.100000 0 181.700000 -4260.100000 0 181.700000 -4259.300000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -4260.100000 0 494.500000 -4260.100000 0 494.500000 -4260.800000 0 181.700000 -4260.800000 0 181.700000 -4260.100000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -4260.800000 0 494.500000 -4260.800000 0 494.500000 -4261.600000 0 181.700000 -4261.600000 0 181.700000 -4260.800000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -4261.600000 0 494.500000 -4261.600000 0 494.500000 -4262.300000 0 181.700000 -4262.300000 0 181.700000 -4261.600000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -4262.300000 0 494.500000 -4262.300000 0 494.500000 -4263.100000 0 181.700000 -4263.100000 0 181.700000 -4262.300000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -4263.100000 0 494.500000 -4263.100000 0 494.500000 -4263.900000 0 181.700000 -4263.900000 0 181.700000 -4263.100000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -4263.900000 0 494.500000 -4263.900000 0 494.500000 -4264.600000 0 181.700000 -4264.600000 0 181.700000 -4263.900000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -4264.600000 0 494.500000 -4264.600000 0 494.500000 -4265.400000 0 181.700000 -4265.400000 0 181.700000 -4264.600000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -4265.400000 0 494.500000 -4265.400000 0 494.500000 -4266.100000 0 181.700000 -4266.100000 0 181.700000 -4265.400000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -4266.100000 0 494.500000 -4266.100000 0 494.500000 -4266.900000 0 181.700000 -4266.900000 0 181.700000 -4266.100000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -4266.900000 0 494.500000 -4266.900000 0 494.500000 -4267.600000 0 181.700000 -4267.600000 0 181.700000 -4266.900000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -4267.600000 0 494.500000 -4267.600000 0 494.500000 -4268.400000 0 181.700000 -4268.400000 0 181.700000 -4267.600000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -4268.400000 0 494.500000 -4268.400000 0 494.500000 -4269.200000 0 181.700000 -4269.200000 0 181.700000 -4268.400000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -4269.200000 0 494.500000 -4269.200000 0 494.500000 -4269.900000 0 181.700000 -4269.900000 0 181.700000 -4269.200000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -4269.900000 0 494.500000 -4269.900000 0 494.500000 -4270.700000 0 181.700000 -4270.700000 0 181.700000 -4269.900000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -4270.700000 0 494.500000 -4270.700000 0 494.500000 -4271.400000 0 181.700000 -4271.400000 0 181.700000 -4270.700000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -4271.400000 0 494.500000 -4271.400000 0 494.500000 -4272.200000 0 181.700000 -4272.200000 0 181.700000 -4271.400000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -4272.200000 0 494.500000 -4272.200000 0 494.500000 -4273.000000 0 181.700000 -4273.000000 0 181.700000 -4272.200000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -4273.000000 0 494.500000 -4273.000000 0 494.500000 -4273.700000 0 181.700000 -4273.700000 0 181.700000 -4273.000000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -4273.700000 0 494.500000 -4273.700000 0 494.500000 -4274.500000 0 181.700000 -4274.500000 0 181.700000 -4273.700000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -4274.500000 0 494.500000 -4274.500000 0 494.500000 -4275.200000 0 181.700000 -4275.200000 0 181.700000 -4274.500000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -4275.200000 0 494.500000 -4275.200000 0 494.500000 -4276.000000 0 181.700000 -4276.000000 0 181.700000 -4275.200000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -4276.000000 0 494.500000 -4276.000000 0 494.500000 -4276.800000 0 181.700000 -4276.800000 0 181.700000 -4276.000000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -4276.800000 0 494.500000 -4276.800000 0 494.500000 -4277.500000 0 181.700000 -4277.500000 0 181.700000 -4276.800000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -4277.500000 0 494.500000 -4277.500000 0 494.500000 -4278.300000 0 181.700000 -4278.300000 0 181.700000 -4277.500000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -4278.300000 0 494.500000 -4278.300000 0 494.500000 -4279.000000 0 181.700000 -4279.000000 0 181.700000 -4278.300000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -4279.000000 0 494.500000 -4279.000000 0 494.500000 -4279.800000 0 181.700000 -4279.800000 0 181.700000 -4279.000000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -4279.800000 0 494.500000 -4279.800000 0 494.500000 -4280.500000 0 181.700000 -4280.500000 0 181.700000 -4279.800000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -4280.500000 0 494.500000 -4280.500000 0 494.500000 -4281.300000 0 181.700000 -4281.300000 0 181.700000 -4280.500000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -4281.300000 0 494.500000 -4281.300000 0 494.500000 -4282.100000 0 181.700000 -4282.100000 0 181.700000 -4281.300000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -4282.100000 0 494.500000 -4282.100000 0 494.500000 -4282.800000 0 181.700000 -4282.800000 0 181.700000 -4282.100000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -4282.800000 0 494.500000 -4282.800000 0 494.500000 -4283.600000 0 181.700000 -4283.600000 0 181.700000 -4282.800000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -4283.600000 0 494.500000 -4283.600000 0 494.500000 -4284.300000 0 181.700000 -4284.300000 0 181.700000 -4283.600000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -4284.300000 0 494.500000 -4284.300000 0 494.500000 -4285.100000 0 181.700000 -4285.100000 0 181.700000 -4284.300000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -4285.100000 0 494.500000 -4285.100000 0 494.500000 -4285.900000 0 181.700000 -4285.900000 0 181.700000 -4285.100000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -4285.900000 0 494.500000 -4285.900000 0 494.500000 -4286.600000 0 181.700000 -4286.600000 0 181.700000 -4285.900000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -4286.600000 0 494.500000 -4286.600000 0 494.500000 -4287.400000 0 181.700000 -4287.400000 0 181.700000 -4286.600000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -4287.400000 0 494.500000 -4287.400000 0 494.500000 -4288.100000 0 181.700000 -4288.100000 0 181.700000 -4287.400000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -4288.100000 0 494.500000 -4288.100000 0 494.500000 -4288.900000 0 181.700000 -4288.900000 0 181.700000 -4288.100000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -4288.900000 0 494.500000 -4288.900000 0 494.500000 -4289.700000 0 181.700000 -4289.700000 0 181.700000 -4288.900000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -4289.700000 0 494.500000 -4289.700000 0 494.500000 -4290.400000 0 181.700000 -4290.400000 0 181.700000 -4289.700000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -4290.400000 0 494.500000 -4290.400000 0 494.500000 -4291.200000 0 181.700000 -4291.200000 0 181.700000 -4290.400000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -4291.200000 0 494.500000 -4291.200000 0 494.500000 -4291.900000 0 181.700000 -4291.900000 0 181.700000 -4291.200000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -4291.900000 0 494.500000 -4291.900000 0 494.500000 -4292.700000 0 181.700000 -4292.700000 0 181.700000 -4291.900000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -4292.700000 0 494.500000 -4292.700000 0 494.500000 -4293.400000 0 181.700000 -4293.400000 0 181.700000 -4292.700000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -4293.400000 0 494.500000 -4293.400000 0 494.500000 -4294.200000 0 181.700000 -4294.200000 0 181.700000 -4293.400000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -4294.200000 0 494.500000 -4294.200000 0 494.500000 -4295.000000 0 181.700000 -4295.000000 0 181.700000 -4294.200000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -4295.000000 0 494.500000 -4295.000000 0 494.500000 -4295.700000 0 181.700000 -4295.700000 0 181.700000 -4295.000000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -4295.700000 0 494.500000 -4295.700000 0 494.500000 -4296.500000 0 181.700000 -4296.500000 0 181.700000 -4295.700000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -4296.500000 0 494.500000 -4296.500000 0 494.500000 -4297.200000 0 181.700000 -4297.200000 0 181.700000 -4296.500000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -4297.200000 0 494.500000 -4297.200000 0 494.500000 -4298.000000 0 181.700000 -4298.000000 0 181.700000 -4297.200000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -4298.000000 0 494.500000 -4298.000000 0 494.500000 -4298.800000 0 181.700000 -4298.800000 0 181.700000 -4298.000000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -4298.800000 0 494.500000 -4298.800000 0 494.500000 -4299.500000 0 181.700000 -4299.500000 0 181.700000 -4298.800000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -4299.500000 0 494.500000 -4299.500000 0 494.500000 -4300.300000 0 181.700000 -4300.300000 0 181.700000 -4299.500000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -4300.300000 0 494.500000 -4300.300000 0 494.500000 -4301.000000 0 181.700000 -4301.000000 0 181.700000 -4300.300000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -4301.000000 0 494.500000 -4301.000000 0 494.500000 -4301.800000 0 181.700000 -4301.800000 0 181.700000 -4301.000000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -4301.800000 0 494.500000 -4301.800000 0 494.500000 -4302.600000 0 181.700000 -4302.600000 0 181.700000 -4301.800000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -4302.600000 0 494.500000 -4302.600000 0 494.500000 -4303.300000 0 181.700000 -4303.300000 0 181.700000 -4302.600000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -4303.300000 0 494.500000 -4303.300000 0 494.500000 -4304.100000 0 181.700000 -4304.100000 0 181.700000 -4303.300000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -4304.100000 0 494.500000 -4304.100000 0 494.500000 -4304.800000 0 181.700000 -4304.800000 0 181.700000 -4304.100000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -4304.800000 0 494.500000 -4304.800000 0 494.500000 -4305.600000 0 181.700000 -4305.600000 0 181.700000 -4304.800000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -4305.600000 0 494.500000 -4305.600000 0 494.500000 -4306.300000 0 181.700000 -4306.300000 0 181.700000 -4305.600000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -4306.300000 0 494.500000 -4306.300000 0 494.500000 -4307.100000 0 181.700000 -4307.100000 0 181.700000 -4306.300000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -4307.100000 0 494.500000 -4307.100000 0 494.500000 -4307.900000 0 181.700000 -4307.900000 0 181.700000 -4307.100000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -4307.900000 0 494.500000 -4307.900000 0 494.500000 -4308.600000 0 181.700000 -4308.600000 0 181.700000 -4307.900000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -4308.600000 0 494.500000 -4308.600000 0 494.500000 -4309.400000 0 181.700000 -4309.400000 0 181.700000 -4308.600000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -4309.400000 0 494.500000 -4309.400000 0 494.500000 -4310.100000 0 181.700000 -4310.100000 0 181.700000 -4309.400000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -4310.100000 0 494.500000 -4310.100000 0 494.500000 -4310.900000 0 181.700000 -4310.900000 0 181.700000 -4310.100000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -4310.900000 0 494.500000 -4310.900000 0 494.500000 -4311.700000 0 181.700000 -4311.700000 0 181.700000 -4310.900000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -4311.700000 0 494.500000 -4311.700000 0 494.500000 -4312.400000 0 181.700000 -4312.400000 0 181.700000 -4311.700000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -4312.400000 0 494.500000 -4312.400000 0 494.500000 -4313.200000 0 181.700000 -4313.200000 0 181.700000 -4312.400000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -4313.200000 0 494.500000 -4313.200000 0 494.500000 -4313.900000 0 181.700000 -4313.900000 0 181.700000 -4313.200000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -4313.900000 0 494.500000 -4313.900000 0 494.500000 -4314.700000 0 181.700000 -4314.700000 0 181.700000 -4313.900000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -4314.700000 0 494.500000 -4314.700000 0 494.500000 -4315.500000 0 181.700000 -4315.500000 0 181.700000 -4314.700000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -4315.500000 0 494.500000 -4315.500000 0 494.500000 -4316.200000 0 181.700000 -4316.200000 0 181.700000 -4315.500000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -4316.200000 0 494.500000 -4316.200000 0 494.500000 -4317.000000 0 181.700000 -4317.000000 0 181.700000 -4316.200000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -4317.000000 0 494.500000 -4317.000000 0 494.500000 -4317.700000 0 181.700000 -4317.700000 0 181.700000 -4317.000000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -4317.700000 0 494.500000 -4317.700000 0 494.500000 -4318.500000 0 181.700000 -4318.500000 0 181.700000 -4317.700000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -4318.500000 0 494.500000 -4318.500000 0 494.500000 -4319.200000 0 181.700000 -4319.200000 0 181.700000 -4318.500000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -4319.200000 0 494.500000 -4319.200000 0 494.500000 -4320.000000 0 181.700000 -4320.000000 0 181.700000 -4319.200000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -4320.000000 0 494.500000 -4320.000000 0 494.500000 -4320.800000 0 181.700000 -4320.800000 0 181.700000 -4320.000000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -4320.800000 0 494.500000 -4320.800000 0 494.500000 -4321.500000 0 181.700000 -4321.500000 0 181.700000 -4320.800000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -4321.500000 0 494.500000 -4321.500000 0 494.500000 -4322.300000 0 181.700000 -4322.300000 0 181.700000 -4321.500000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -4322.300000 0 494.500000 -4322.300000 0 494.500000 -4323.000000 0 181.700000 -4323.000000 0 181.700000 -4322.300000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -4323.000000 0 494.500000 -4323.000000 0 494.500000 -4323.800000 0 181.700000 -4323.800000 0 181.700000 -4323.000000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -4323.800000 0 494.500000 -4323.800000 0 494.500000 -4324.600000 0 181.700000 -4324.600000 0 181.700000 -4323.800000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -4324.600000 0 494.500000 -4324.600000 0 494.500000 -4325.300000 0 181.700000 -4325.300000 0 181.700000 -4324.600000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -4325.300000 0 494.500000 -4325.300000 0 494.500000 -4326.100000 0 181.700000 -4326.100000 0 181.700000 -4325.300000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -4326.100000 0 494.500000 -4326.100000 0 494.500000 -4326.800000 0 181.700000 -4326.800000 0 181.700000 -4326.100000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -4326.800000 0 494.500000 -4326.800000 0 494.500000 -4327.600000 0 181.700000 -4327.600000 0 181.700000 -4326.800000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -4327.600000 0 494.500000 -4327.600000 0 494.500000 -4328.400000 0 181.700000 -4328.400000 0 181.700000 -4327.600000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -4328.400000 0 494.500000 -4328.400000 0 494.500000 -4329.100000 0 181.700000 -4329.100000 0 181.700000 -4328.400000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -4329.100000 0 494.500000 -4329.100000 0 494.500000 -4329.900000 0 181.700000 -4329.900000 0 181.700000 -4329.100000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -4329.900000 0 494.500000 -4329.900000 0 494.500000 -4330.600000 0 181.700000 -4330.600000 0 181.700000 -4329.900000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -4330.600000 0 494.500000 -4330.600000 0 494.500000 -4331.400000 0 181.700000 -4331.400000 0 181.700000 -4330.600000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -4331.400000 0 494.500000 -4331.400000 0 494.500000 -4332.100000 0 181.700000 -4332.100000 0 181.700000 -4331.400000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -4332.100000 0 494.500000 -4332.100000 0 494.500000 -4332.900000 0 181.700000 -4332.900000 0 181.700000 -4332.100000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -4332.900000 0 494.500000 -4332.900000 0 494.500000 -4333.700000 0 181.700000 -4333.700000 0 181.700000 -4332.900000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -4333.700000 0 494.500000 -4333.700000 0 494.500000 -4334.400000 0 181.700000 -4334.400000 0 181.700000 -4333.700000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -4334.400000 0 494.500000 -4334.400000 0 494.500000 -4335.200000 0 181.700000 -4335.200000 0 181.700000 -4334.400000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -4335.200000 0 494.500000 -4335.200000 0 494.500000 -4335.900000 0 181.700000 -4335.900000 0 181.700000 -4335.200000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -4335.900000 0 494.500000 -4335.900000 0 494.500000 -4336.700000 0 181.700000 -4336.700000 0 181.700000 -4335.900000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -4336.700000 0 494.500000 -4336.700000 0 494.500000 -4337.500000 0 181.700000 -4337.500000 0 181.700000 -4336.700000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -4337.500000 0 494.500000 -4337.500000 0 494.500000 -4338.200000 0 181.700000 -4338.200000 0 181.700000 -4337.500000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -4338.200000 0 494.500000 -4338.200000 0 494.500000 -4339.000000 0 181.700000 -4339.000000 0 181.700000 -4338.200000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -4339.000000 0 494.500000 -4339.000000 0 494.500000 -4339.700000 0 181.700000 -4339.700000 0 181.700000 -4339.000000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -4339.700000 0 494.500000 -4339.700000 0 494.500000 -4340.500000 0 181.700000 -4340.500000 0 181.700000 -4339.700000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -4340.500000 0 494.500000 -4340.500000 0 494.500000 -4341.300000 0 181.700000 -4341.300000 0 181.700000 -4340.500000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -4341.300000 0 494.500000 -4341.300000 0 494.500000 -4342.000000 0 181.700000 -4342.000000 0 181.700000 -4341.300000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -4342.000000 0 494.500000 -4342.000000 0 494.500000 -4342.800000 0 181.700000 -4342.800000 0 181.700000 -4342.000000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -4342.800000 0 494.500000 -4342.800000 0 494.500000 -4343.500000 0 181.700000 -4343.500000 0 181.700000 -4342.800000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -4343.500000 0 494.500000 -4343.500000 0 494.500000 -4344.300000 0 181.700000 -4344.300000 0 181.700000 -4343.500000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -4344.300000 0 494.500000 -4344.300000 0 494.500000 -4345.000000 0 181.700000 -4345.000000 0 181.700000 -4344.300000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -4345.000000 0 494.500000 -4345.000000 0 494.500000 -4345.800000 0 181.700000 -4345.800000 0 181.700000 -4345.000000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -4345.800000 0 494.500000 -4345.800000 0 494.500000 -4346.600000 0 181.700000 -4346.600000 0 181.700000 -4345.800000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -4346.600000 0 494.500000 -4346.600000 0 494.500000 -4347.300000 0 181.700000 -4347.300000 0 181.700000 -4346.600000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -4347.300000 0 494.500000 -4347.300000 0 494.500000 -4348.100000 0 181.700000 -4348.100000 0 181.700000 -4347.300000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -4348.100000 0 494.500000 -4348.100000 0 494.500000 -4348.800000 0 181.700000 -4348.800000 0 181.700000 -4348.100000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -4348.800000 0 494.500000 -4348.800000 0 494.500000 -4349.600000 0 181.700000 -4349.600000 0 181.700000 -4348.800000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -4349.600000 0 494.500000 -4349.600000 0 494.500000 -4350.400000 0 181.700000 -4350.400000 0 181.700000 -4349.600000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -4350.400000 0 494.500000 -4350.400000 0 494.500000 -4351.100000 0 181.700000 -4351.100000 0 181.700000 -4350.400000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -4351.100000 0 494.500000 -4351.100000 0 494.500000 -4351.900000 0 181.700000 -4351.900000 0 181.700000 -4351.100000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -4351.900000 0 494.500000 -4351.900000 0 494.500000 -4352.600000 0 181.700000 -4352.600000 0 181.700000 -4351.900000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -4352.600000 0 494.500000 -4352.600000 0 494.500000 -4353.400000 0 181.700000 -4353.400000 0 181.700000 -4352.600000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -4353.400000 0 494.500000 -4353.400000 0 494.500000 -4354.200000 0 181.700000 -4354.200000 0 181.700000 -4353.400000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -4354.200000 0 494.500000 -4354.200000 0 494.500000 -4354.900000 0 181.700000 -4354.900000 0 181.700000 -4354.200000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -4354.900000 0 494.500000 -4354.900000 0 494.500000 -4355.700000 0 181.700000 -4355.700000 0 181.700000 -4354.900000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -4355.700000 0 494.500000 -4355.700000 0 494.500000 -4356.400000 0 181.700000 -4356.400000 0 181.700000 -4355.700000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -4356.400000 0 494.500000 -4356.400000 0 494.500000 -4357.200000 0 181.700000 -4357.200000 0 181.700000 -4356.400000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -4357.200000 0 494.500000 -4357.200000 0 494.500000 -4357.900000 0 181.700000 -4357.900000 0 181.700000 -4357.200000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -4357.900000 0 494.500000 -4357.900000 0 494.500000 -4358.700000 0 181.700000 -4358.700000 0 181.700000 -4357.900000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -4358.700000 0 494.500000 -4358.700000 0 494.500000 -4359.500000 0 181.700000 -4359.500000 0 181.700000 -4358.700000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -4359.500000 0 494.500000 -4359.500000 0 494.500000 -4360.200000 0 181.700000 -4360.200000 0 181.700000 -4359.500000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -4360.200000 0 494.500000 -4360.200000 0 494.500000 -4361.000000 0 181.700000 -4361.000000 0 181.700000 -4360.200000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -4360.900000 0 181.800000 -4360.900000 0 181.800000 -4167.600000 0 494.400000 -4167.600000 0 494.400000 -4360.900000 0 338.100000 -4360.900000 0
+strokePath subpath 1 338.100000 -4360.900000 0 181.800000 -4360.900000 0 181.800000 -4167.600000 0 494.400000 -4167.600000 0 494.400000 -4360.900000 0 338.100000 -4360.900000 0
+saveState
+updateCtm 11420.000000 0.000000 0.000000 -8760.000000 20530.000000 507690.000000
+drawSoftMaskedImage 1143 877 1143 877 JPEG 71324 PPM 3007249
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -4321.876000 215.488000 -4329.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -4321.876000 220.592000 -4329.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -4321.876000 225.696000 -4329.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -4321.876000 230.800000 -4329.876000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -4329.476000 241.388000 -4337.476000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -4329.476000 246.492000 -4337.476000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -4329.476000 251.596000 -4337.476000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -4329.476000 256.700000 -4337.476000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -4337.076000 267.188000 -4345.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -4337.076000 272.292000 -4345.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -4337.076000 277.396000 -4345.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -4337.076000 282.500000 -4345.076000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -4344.676000 293.088000 -4352.676000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -4344.676000 298.192000 -4352.676000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -4344.676000 303.296000 -4352.676000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -4344.676000 308.400000 -4352.676000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -4306.876000 202.588000 -4314.876000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -4287.576000 201.688000 -4295.576000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -4268.276000 195.788000 -4276.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -4268.276000 200.892000 -4276.276000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -4248.876000 194.888000 -4256.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -4248.876000 199.992000 -4256.876000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -4229.576000 193.988000 -4237.576000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -4229.576000 199.092000 -4237.576000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -4210.276000 193.088000 -4218.276000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -4210.276000 198.192000 -4218.276000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -4338.176000 330.188000 -4346.176000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -4338.176000 332.716000 -4346.176000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -4338.176000 337.596000 -4346.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -4338.176000 341.396000 -4346.176000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -4338.176000 346.036000 -4346.176000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -4338.176000 350.900000 -4346.176000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -4338.176000 355.972000 -4346.176000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -4338.176000 359.196000 -4346.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -4338.176000 362.196000 -4346.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -4338.176000 367.404000 -4346.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -4338.176000 371.876000 -4346.176000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -4338.176000 375.052000 -4346.176000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -4318.676000 361.172000 -4326.676000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -4318.676000 364.340000 -4326.676000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -4318.676000 367.396000 -4326.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -4318.676000 372.604000 -4326.676000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -4318.676000 379.348000 -4326.676000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -4318.676000 384.484000 -4326.676000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -4318.676000 389.436000 -4326.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -4318.676000 392.108000 -4326.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -4318.676000 395.708000 -4326.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -4318.676000 397.540000 -4326.676000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -4318.676000 402.444000 -4326.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -4318.676000 406.788000 -4326.676000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -4299.076000 392.972000 -4307.076000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -4299.076000 398.076000 -4307.076000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -4299.076000 403.180000 -4307.076000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -4299.076000 405.428000 -4307.076000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -4299.076000 410.332000 -4307.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -4299.076000 414.476000 -4307.076000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -4171.508000 305.808000 -4185.508000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -4171.508000 314.138000 -4185.508000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -4171.508000 320.788000 -4185.508000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -4171.508000 328.698000 -4185.508000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -4171.508000 336.972000 -4185.508000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -4171.508000 344.182000 -4185.508000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -4171.508000 349.810000 -4185.508000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -4171.508000 354.234000 -4185.508000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -4171.508000 362.718000 -4185.508000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -4171.508000 367.870000 -4185.508000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -4171.508000 372.322000 -4185.508000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -4171.508000 382.080000 -4185.508000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -4171.508000 388.772000 -4185.508000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -4171.508000 397.802000 -4185.508000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -4171.508000 402.254000 -4185.508000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -4171.508000 407.896000 -4185.508000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -4294.400000 0 424.300000 -4294.400000 0 424.300000 -4233.700000 0 493.600000 -4233.700000 0 493.600000 -4294.400000 0 458.900000 -4294.400000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -4243.300000 0 428.900000 -4243.300000 0 428.900000 -4237.300000 0 434.800000 -4237.300000 0 434.800000 -4243.300000 0 431.900000 -4243.300000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -4254.400000 0 428.900000 -4254.400000 0 428.900000 -4248.400000 0 434.800000 -4248.400000 0 434.800000 -4254.400000 0 431.900000 -4254.400000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -4265.500000 0 428.900000 -4265.500000 0 428.900000 -4259.500000 0 434.800000 -4259.500000 0 434.800000 -4265.500000 0 431.900000 -4265.500000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -4276.600000 0 428.900000 -4276.600000 0 428.900000 -4270.600000 0 434.800000 -4270.600000 0 434.800000 -4276.600000 0 431.900000 -4276.600000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -4287.700000 0 428.900000 -4287.700000 0 428.900000 -4281.700000 0 434.800000 -4281.700000 0 434.800000 -4287.700000 0 431.900000 -4287.700000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -4236.176000 443.288000 -4244.176000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -4236.176000 445.816000 -4244.176000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -4236.176000 450.600000 -4244.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -4236.176000 454.496000 -4244.176000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -4236.176000 459.136000 -4244.176000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -4236.176000 464.000000 -4244.176000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -4236.176000 468.976000 -4244.176000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -4236.176000 472.304000 -4244.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -4236.176000 475.208000 -4244.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -4236.176000 480.520000 -4244.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -4236.176000 484.992000 -4244.176000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -4236.176000 488.168000 -4244.176000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -4247.276000 443.352000 -4255.276000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -4247.276000 447.920000 -4255.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -4247.276000 452.976000 -4255.276000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -4247.276000 457.400000 -4255.276000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -4247.276000 462.472000 -4255.276000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -4247.276000 465.800000 -4255.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -4247.276000 468.904000 -4255.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -4247.276000 473.816000 -4255.276000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -4247.276000 478.888000 -4255.276000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -4247.276000 482.064000 -4255.276000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -4258.376000 442.872000 -4266.376000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -4258.376000 446.040000 -4266.376000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -4258.376000 448.992000 -4266.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -4258.376000 454.304000 -4266.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -4258.376000 461.048000 -4266.376000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -4258.376000 466.184000 -4266.376000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -4258.376000 471.136000 -4266.376000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -4258.376000 473.808000 -4266.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -4258.376000 477.408000 -4266.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -4258.376000 479.240000 -4266.376000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -4258.376000 484.144000 -4266.376000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -4258.376000 488.488000 -4266.376000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -4269.476000 443.384000 -4277.476000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -4269.476000 448.464000 -4277.476000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -4269.476000 453.424000 -4277.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -4269.476000 456.696000 -4277.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -4269.476000 459.800000 -4277.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -4269.476000 462.032000 -4277.476000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -4269.476000 466.936000 -4277.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -4269.476000 471.080000 -4277.476000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -4280.576000 443.272000 -4288.576000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -4280.576000 448.376000 -4288.576000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -4280.576000 453.480000 -4288.576000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -4280.576000 455.728000 -4288.576000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -4280.576000 460.632000 -4288.576000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -4280.576000 464.776000 -4288.576000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -6925.600000 0 114.800000 -6925.600000 0 114.800000 -6882.800000 0 72.000000 -6882.800000 0 72.000000 -6925.600000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 771750.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 546.200000 0 504.000000 546.200000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 546.200000 0
+eoFillPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 245.800000 0 72.000000 245.800000 0 72.000000 72.000000 0
+eoFillPath subpath 1 72.000000 245.800000 0 121.400000 245.800000 0 121.400000 546.200000 0 72.000000 546.200000 0 72.000000 245.800000 0
+eoFillPath subpath 1 454.500000 245.800000 0 504.000000 245.800000 0 504.000000 546.200000 0 454.500000 546.200000 0 454.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 701.300000 0 504.000000 701.300000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 701.300000 0
+eoFillPath subpath 1 72.000000 72.200000 0 504.000000 72.200000 0 504.000000 86.100000 0 72.000000 86.100000 0 72.000000 72.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 306.000000 719.948000 319.792000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 319.808000 719.948000 329.264000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 329.312000 719.948000 334.384000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 334.416000 719.948000 346.432000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 346.416000 719.948000 356.192000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 356.224000 719.948000 366.352000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 366.320000 719.948000 374.640000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 374.624000 719.948000 384.464000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 384.432000 719.948000 389.504000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 389.536000 719.948000 395.296000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 395.344000 719.948000 400.416000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 400.400000 719.948000 410.544000 703.948000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 410.608000 719.948000 420.448000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 420.416000 719.948000 429.200000 703.948000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 429.216000 719.948000 438.992000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 439.024000 719.948000 449.152000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 449.120000 719.948000 459.264000 703.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 459.328000 719.948000 464.400000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 464.432000 719.948000 473.632000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 473.632000 719.948000 478.064000 703.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 478.032000 719.948000 487.808000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 487.840000 719.948000 497.616000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 497.648000 719.948000 504.224000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 672.936000 81.244000 660.936000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 81.196000 672.936000 89.332000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.296000 672.936000 97.876000 660.936000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 655.936000 195.964000 643.936000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 196.000000 655.936000 203.152000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 203.104000 655.936000 209.872000 643.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 209.908000 655.936000 213.736000 643.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 213.712000 655.936000 221.440000 643.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 221.512000 655.936000 229.192000 643.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 230.512000 655.936000 234.316000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 235.816000 655.936000 242.968000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 245.812000 655.936000 249.616000 643.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 249.700000 655.936000 259.960000 643.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 259.996000 655.936000 267.148000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 267.100000 655.936000 271.912000 643.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 271.900000 655.936000 278.992000 643.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 279.004000 655.936000 284.740000 643.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 284.800000 655.936000 292.480000 643.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 292.504000 655.936000 299.596000 643.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 299.608000 655.936000 307.288000 643.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 308.704000 655.936000 312.508000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 314.008000 655.936000 324.268000 643.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 324.304000 655.936000 331.456000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 331.408000 655.936000 337.564000 643.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 338.908000 655.936000 342.712000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 344.212000 655.936000 351.364000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 351.412000 655.936000 355.240000 643.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 355.216000 655.936000 365.476000 643.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 365.512000 655.936000 372.664000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.616000 655.936000 379.384000 643.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 379.420000 655.936000 385.576000 643.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 386.920000 655.936000 390.724000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 392.224000 655.936000 399.376000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 400.828000 655.936000 404.632000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 406.024000 655.936000 413.704000 643.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 413.728000 655.936000 419.464000 643.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 419.428000 655.936000 426.520000 643.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 426.532000 655.936000 433.684000 643.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 433.732000 655.936000 445.108000 643.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 446.536000 655.936000 450.340000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 451.840000 655.936000 459.064000 643.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 459.040000 655.936000 463.480000 643.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 464.836000 655.936000 468.640000 643.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.140000 655.936000 481.516000 643.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 481.444000 655.936000 485.272000 643.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 485.248000 655.936000 492.976000 643.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 493.048000 655.936000 500.140000 643.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 500.152000 655.936000 503.956000 643.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 655.936000 507.904000 643.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 642.036000 195.964000 630.036000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 196.000000 642.036000 203.224000 630.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 203.200000 642.036000 213.460000 630.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 213.496000 642.036000 220.588000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 220.600000 642.036000 227.368000 630.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 227.296000 642.036000 234.388000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 234.400000 642.036000 240.136000 630.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 238.900000 642.036000 242.704000 630.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 243.196000 642.036000 247.000000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.492000 642.036000 255.172000 630.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 255.196000 642.036000 262.288000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 262.300000 642.036000 269.020000 630.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 268.996000 642.036000 276.148000 630.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 276.196000 642.036000 283.924000 630.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 283.900000 642.036000 290.056000 630.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 289.996000 642.036000 297.088000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.592000 642.036000 301.396000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 302.092000 642.036000 309.316000 630.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 309.292000 642.036000 313.732000 630.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 314.188000 642.036000 317.992000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.484000 642.036000 325.252000 630.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 325.288000 642.036000 332.440000 630.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 332.392000 642.036000 338.128000 630.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 338.188000 642.036000 342.016000 630.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 341.992000 642.036000 349.216000 630.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 349.192000 642.036000 356.920000 630.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 356.992000 642.036000 363.148000 630.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 363.688000 642.036000 367.492000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.092000 642.036000 373.828000 630.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 373.792000 642.036000 380.884000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 380.896000 642.036000 388.048000 630.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 388.096000 642.036000 394.252000 630.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 394.300000 642.036000 401.524000 630.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 401.500000 642.036000 409.228000 630.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 409.204000 642.036000 415.360000 630.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 415.804000 642.036000 419.608000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 420.100000 642.036000 427.252000 630.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 427.300000 642.036000 435.028000 630.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 435.004000 642.036000 442.684000 630.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 443.200000 642.036000 447.004000 630.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 447.604000 642.036000 454.324000 630.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.300000 642.036000 461.524000 630.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 461.500000 642.036000 469.228000 630.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 469.300000 642.036000 475.456000 630.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 475.396000 642.036000 479.224000 630.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.296000 642.036000 486.976000 630.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 487.000000 642.036000 494.092000 630.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 494.104000 642.036000 499.840000 630.036000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 642.036000 504.044000 630.036000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 628.136000 189.328000 616.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 189.304000 628.136000 197.032000 616.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 197.104000 628.136000 204.784000 616.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 204.700000 628.136000 208.504000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 208.696000 628.136000 215.788000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 215.800000 628.136000 221.956000 616.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 221.896000 628.136000 229.576000 616.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 229.600000 628.136000 236.692000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.704000 628.136000 243.424000 616.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 243.400000 628.136000 247.228000 616.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 247.300000 628.136000 254.452000 616.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 254.404000 628.136000 258.232000 616.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 258.304000 628.136000 262.132000 616.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 262.108000 628.136000 268.876000 616.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 268.912000 628.136000 272.716000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 272.812000 628.136000 277.624000 616.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 277.612000 628.136000 285.340000 616.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 285.316000 628.136000 292.408000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 292.516000 628.136000 296.320000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 296.416000 628.136000 303.508000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 303.520000 628.136000 311.248000 616.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 311.224000 628.136000 318.316000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 318.328000 628.136000 324.064000 616.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 324.028000 628.136000 331.708000 616.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 331.732000 628.136000 338.500000 616.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 338.536000 628.136000 342.340000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 342.436000 628.136000 350.164000 616.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 350.140000 628.136000 356.296000 616.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 356.344000 628.136000 363.436000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 363.448000 628.136000 367.252000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 367.348000 628.136000 372.160000 616.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 372.244000 628.136000 379.972000 616.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 379.948000 628.136000 387.100000 616.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 387.052000 628.136000 391.864000 616.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 391.948000 628.136000 395.752000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 395.752000 628.136000 403.432000 616.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 403.456000 628.136000 410.680000 616.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 410.656000 628.136000 417.748000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 417.856000 628.136000 424.012000 616.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 424.060000 628.136000 427.864000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 427.864000 628.136000 431.692000 616.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 431.668000 628.136000 439.396000 616.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 439.468000 628.136000 444.280000 616.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 444.268000 628.136000 451.492000 616.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 451.468000 628.136000 455.272000 616.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 455.368000 628.136000 462.628000 616.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 462.664000 628.136000 469.756000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 469.768000 628.136000 476.860000 616.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 476.872000 628.136000 484.552000 616.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 484.576000 628.136000 488.404000 616.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 488.380000 628.136000 496.108000 616.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 496.180000 628.136000 503.860000 616.136000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 628.136000 507.904000 616.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 614.236000 190.312000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 614.236000 198.028000 602.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 614.236000 205.192000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 206.200000 614.236000 210.004000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 211.000000 614.236000 221.260000 602.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 221.296000 614.236000 228.448000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.400000 614.236000 233.212000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 233.200000 614.236000 240.292000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 240.304000 614.236000 246.040000 602.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 247.108000 614.236000 250.912000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 252.004000 614.236000 259.732000 602.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 259.708000 614.236000 266.800000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 266.812000 614.236000 273.964000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 274.012000 614.236000 278.824000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 278.812000 614.236000 285.904000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 285.916000 614.236000 293.596000 602.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 294.616000 614.236000 298.420000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 299.416000 614.236000 306.568000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 306.616000 614.236000 311.428000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 312.316000 614.236000 316.120000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.320000 614.236000 324.472000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 325.420000 614.236000 329.224000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.220000 614.236000 336.940000 602.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 337.024000 614.236000 344.248000 602.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 344.224000 614.236000 351.952000 602.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 352.024000 614.236000 358.180000 602.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 358.120000 614.236000 362.932000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 362.920000 614.236000 370.072000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 370.024000 614.236000 377.752000 602.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 377.728000 614.236000 382.540000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 383.632000 614.236000 387.436000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 388.528000 614.236000 393.340000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 393.328000 614.236000 400.420000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 400.432000 614.236000 411.808000 602.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 411.832000 614.236000 419.512000 602.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 419.536000 614.236000 426.628000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 426.640000 614.236000 432.376000 602.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 432.340000 614.236000 439.492000 602.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 439.540000 614.236000 444.352000 602.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 444.340000 614.236000 452.068000 602.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 452.044000 614.236000 457.780000 602.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 457.840000 614.236000 464.932000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 464.944000 614.236000 468.748000 602.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 469.744000 614.236000 473.548000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.544000 614.236000 479.284000 602.236000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 480.244000 614.236000 484.048000 602.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 485.248000 614.236000 492.928000 602.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 492.844000 614.236000 499.936000 602.236000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 614.236000 504.044000 602.236000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 600.336000 192.220000 588.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 192.196000 600.336000 196.024000 588.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 196.000000 600.336000 203.680000 588.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 203.704000 600.336000 210.796000 588.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 210.808000 600.336000 218.488000 588.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 218.512000 600.336000 222.316000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 222.316000 600.336000 229.540000 588.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 229.516000 600.336000 237.244000 588.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 237.220000 600.336000 241.024000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.024000 600.336000 248.176000 588.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 248.224000 600.336000 252.028000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 252.028000 600.336000 259.756000 588.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 259.732000 600.336000 266.956000 588.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 266.932000 600.336000 272.668000 588.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 272.632000 600.336000 284.008000 588.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 284.032000 600.336000 291.184000 588.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 291.232000 600.336000 295.060000 588.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 295.036000 600.336000 298.840000 588.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 298.840000 600.336000 306.520000 588.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 306.544000 600.336000 313.636000 588.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 313.648000 600.336000 321.328000 588.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 321.352000 600.336000 325.156000 588.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 325.156000 600.336000 328.960000 588.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 580.436000 190.240000 568.436000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 190.204000 580.436000 197.932000 568.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 200.500000 580.436000 204.304000 568.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 206.896000 580.436000 213.052000 568.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 212.992000 580.436000 220.720000 568.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 220.792000 580.436000 232.168000 568.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 232.096000 580.436000 243.472000 568.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 243.496000 580.436000 250.588000 568.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 250.600000 580.436000 256.336000 568.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 256.396000 580.436000 261.208000 568.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 261.196000 580.436000 265.024000 568.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 265.000000 580.436000 276.376000 568.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 276.400000 580.436000 283.492000 568.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 288.604000 580.436000 292.408000 568.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 292.400000 580.436000 298.556000 568.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 298.604000 580.436000 305.756000 568.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 305.708000 580.436000 310.520000 568.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 310.508000 580.436000 314.336000 568.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 314.408000 580.436000 322.136000 568.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 324.608000 580.436000 328.412000 568.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.004000 580.436000 337.160000 568.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 337.208000 580.436000 344.936000 568.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 344.912000 580.436000 352.004000 568.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 352.016000 580.436000 359.108000 568.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 359.120000 580.436000 363.932000 568.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 363.920000 580.436000 370.076000 568.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 372.620000 580.436000 376.424000 568.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.016000 580.436000 386.168000 568.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 386.216000 580.436000 391.952000 568.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 391.916000 580.436000 399.008000 568.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 401.516000 580.436000 405.320000 568.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.912000 580.436000 415.592000 568.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 415.616000 580.436000 419.444000 568.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 419.420000 580.436000 426.512000 568.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 426.524000 580.436000 433.676000 568.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 433.724000 580.436000 439.880000 568.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 439.820000 580.436000 446.972000 568.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 447.020000 580.436000 454.748000 568.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 454.724000 580.436000 459.536000 568.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 459.524000 580.436000 463.352000 568.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 463.424000 580.436000 470.192000 568.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 472.724000 580.436000 476.528000 568.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 479.120000 580.436000 485.840000 568.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 485.816000 580.436000 493.040000 568.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 493.016000 580.436000 500.240000 568.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 500.312000 580.436000 504.140000 568.436000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 580.436000 507.904000 568.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 566.536000 192.652000 554.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 566.536000 200.380000 554.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 200.296000 566.536000 207.448000 554.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 207.496000 566.536000 211.324000 554.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 211.300000 566.536000 219.028000 554.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 219.100000 566.536000 225.256000 554.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 225.196000 566.536000 230.008000 554.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 229.996000 566.536000 233.800000 554.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 233.992000 566.536000 238.804000 554.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 238.792000 566.536000 246.520000 554.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 246.592000 566.536000 253.684000 554.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 253.696000 566.536000 257.500000 554.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.596000 566.536000 263.752000 554.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 263.800000 566.536000 271.060000 554.536000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 271.000000 566.536000 274.828000 554.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 274.900000 566.536000 282.628000 554.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 282.604000 566.536000 286.408000 554.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 286.408000 566.536000 290.212000 554.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 290.308000 566.536000 302.584000 554.536000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 302.608000 566.536000 309.376000 554.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 309.508000 566.536000 313.312000 554.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 313.504000 566.536000 319.660000 554.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 319.600000 566.536000 327.328000 554.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 327.304000 566.536000 334.396000 554.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 334.504000 566.536000 341.596000 554.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 341.608000 566.536000 346.420000 554.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 346.312000 566.536000 352.468000 554.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 352.516000 566.536000 356.320000 554.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 356.416000 566.536000 363.568000 554.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 363.616000 566.536000 369.352000 554.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 369.316000 566.536000 376.408000 554.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 376.516000 566.536000 380.320000 554.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.512000 566.536000 388.192000 554.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 388.108000 566.536000 395.260000 554.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 395.308000 566.536000 401.044000 554.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 401.008000 566.536000 408.268000 554.536000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 408.304000 566.536000 412.108000 554.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 412.300000 566.536000 419.980000 554.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 420.004000 566.536000 423.832000 554.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 423.700000 566.536000 431.428000 554.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 431.404000 566.536000 438.496000 554.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 438.508000 566.536000 442.312000 554.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 442.312000 566.536000 446.116000 554.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.416000 566.536000 457.792000 554.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 457.720000 566.536000 464.488000 554.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 464.524000 566.536000 468.328000 554.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 468.424000 566.536000 472.864000 554.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 472.924000 566.536000 480.076000 554.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 480.028000 566.536000 486.796000 554.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 486.832000 566.536000 494.056000 554.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 494.032000 566.536000 499.768000 554.536000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 566.536000 504.044000 554.536000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 552.636000 189.328000 540.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 189.304000 552.636000 194.116000 540.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 194.200000 552.636000 201.292000 540.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 202.000000 552.636000 205.804000 540.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 206.596000 552.636000 213.316000 540.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 213.292000 552.636000 220.516000 540.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 220.492000 552.636000 224.320000 540.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 224.392000 552.636000 231.616000 540.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 231.592000 552.636000 237.328000 540.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 235.996000 552.636000 239.800000 540.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.592000 552.636000 244.396000 540.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.188000 552.636000 249.928000 540.636000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 249.892000 552.636000 257.620000 540.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 258.388000 552.636000 262.192000 540.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.984000 552.636000 273.244000 540.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 273.280000 552.636000 277.108000 540.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 277.084000 552.636000 284.812000 540.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 284.788000 552.636000 289.600000 540.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 289.684000 552.636000 296.776000 540.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 296.788000 552.636000 302.524000 540.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 303.292000 552.636000 307.096000 540.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 307.888000 552.636000 312.628000 540.636000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 313.384000 552.636000 317.188000 540.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.980000 552.636000 325.708000 540.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 325.684000 552.636000 332.836000 540.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 332.884000 552.636000 339.652000 540.636000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 339.688000 552.636000 346.780000 540.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 347.488000 552.636000 351.292000 540.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 352.192000 552.636000 359.920000 540.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 359.896000 552.636000 367.120000 540.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 367.192000 552.636000 372.928000 540.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 372.796000 552.636000 384.172000 540.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 384.196000 552.636000 391.348000 540.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 391.300000 552.636000 395.128000 540.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 395.896000 552.636000 399.700000 540.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 400.492000 552.636000 407.212000 540.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 407.296000 552.636000 414.520000 540.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 414.496000 552.636000 419.308000 540.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 419.296000 552.636000 424.108000 540.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 424.192000 552.636000 431.416000 540.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 431.296000 552.636000 439.024000 540.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 439.900000 552.636000 443.704000 540.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 444.496000 552.636000 450.652000 540.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 450.700000 552.636000 458.428000 540.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 458.404000 552.636000 465.496000 540.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 465.508000 552.636000 472.600000 540.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 472.612000 552.636000 477.424000 540.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 477.412000 552.636000 483.568000 540.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 484.312000 552.636000 488.116000 540.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.908000 552.636000 496.132000 540.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 496.108000 552.636000 503.836000 540.636000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 552.636000 507.904000 540.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 538.736000 196.876000 526.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 196.900000 538.736000 203.668000 526.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 206.200000 538.736000 210.004000 526.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 212.500000 538.736000 220.180000 526.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 220.204000 538.736000 227.296000 526.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 227.308000 538.736000 234.988000 526.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 235.012000 538.736000 238.816000 526.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 241.312000 538.736000 245.116000 526.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.708000 538.736000 255.388000 526.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 255.304000 538.736000 263.032000 526.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 263.008000 538.736000 267.820000 526.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 270.412000 538.736000 274.216000 526.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 276.712000 538.736000 281.452000 526.736000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 284.008000 538.736000 287.812000 526.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 290.404000 538.736000 297.496000 526.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.508000 538.736000 303.664000 526.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 303.712000 538.736000 311.392000 526.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 311.308000 538.736000 318.400000 526.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 318.412000 538.736000 325.132000 526.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 325.216000 538.736000 329.044000 526.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 329.020000 538.736000 336.172000 526.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 336.220000 538.736000 340.048000 526.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 340.024000 538.736000 343.852000 526.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 343.828000 538.736000 350.596000 526.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 353.128000 538.736000 356.932000 526.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.428000 538.736000 363.256000 526.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 363.232000 538.736000 367.060000 526.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 367.132000 538.736000 374.392000 526.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 374.332000 538.736000 381.424000 526.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 383.932000 538.736000 387.736000 526.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 390.436000 538.736000 395.248000 526.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 395.236000 538.736000 402.964000 526.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 403.036000 538.736000 410.128000 526.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 412.540000 538.736000 416.344000 526.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 418.840000 538.736000 429.100000 526.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 429.136000 538.736000 436.288000 526.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 436.240000 538.736000 441.976000 526.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 442.036000 538.736000 453.412000 526.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 458.536000 538.736000 462.340000 526.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 462.500000 538.736000 470.492000 526.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 470.504000 538.736000 477.656000 526.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 477.704000 538.736000 485.432000 526.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.408000 538.736000 493.136000 526.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 493.112000 538.736000 500.204000 526.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 500.216000 538.736000 504.044000 526.736000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 538.736000 507.904000 526.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 524.836000 191.656000 512.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 524.836000 199.432000 512.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 199.408000 524.836000 206.500000 512.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 206.512000 524.836000 213.604000 512.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 213.616000 524.836000 218.428000 512.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 218.416000 524.836000 224.572000 512.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 224.620000 524.836000 228.424000 512.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 228.424000 524.836000 235.648000 512.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 235.624000 524.836000 243.352000 512.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 243.328000 524.836000 247.132000 512.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.132000 524.836000 253.900000 512.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 253.936000 524.836000 261.028000 512.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 261.040000 524.836000 266.776000 512.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 266.740000 524.836000 273.508000 512.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 273.544000 524.836000 277.348000 512.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.348000 524.836000 284.068000 512.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 284.044000 524.836000 291.268000 512.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 291.244000 524.836000 295.072000 512.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 295.048000 524.836000 302.728000 512.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 302.752000 524.836000 306.556000 512.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 306.556000 524.836000 314.284000 512.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 314.260000 524.836000 318.088000 512.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 318.064000 524.836000 325.744000 512.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 325.768000 524.836000 333.496000 512.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 333.472000 524.836000 338.284000 512.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 338.272000 524.836000 344.428000 512.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.476000 524.836000 348.280000 512.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.280000 524.836000 352.084000 512.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 499.036000 82.132000 487.036000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 82.096000 499.036000 86.200000 487.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 86.200000 499.036000 94.780000 487.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 94.804000 499.036000 103.336000 487.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 103.300000 499.036000 109.036000 487.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.000000 499.036000 113.176000 487.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.200000 499.036000 121.840000 487.036000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 121.804000 499.036000 127.540000 487.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 127.504000 499.036000 135.592000 487.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 135.604000 499.036000 144.136000 487.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 144.100000 499.036000 152.680000 487.036000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 482.036000 195.328000 470.036000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 195.304000 482.036000 203.032000 470.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 203.008000 482.036000 206.812000 470.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 206.812000 482.036000 218.188000 470.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 218.212000 482.036000 224.980000 470.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 225.016000 482.036000 228.820000 470.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 228.820000 482.036000 236.548000 470.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.524000 482.036000 240.352000 470.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 240.328000 482.036000 248.008000 470.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 248.032000 482.036000 255.760000 470.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 255.736000 482.036000 260.548000 470.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 260.536000 482.036000 264.580000 470.036000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 264.640000 482.036000 270.796000 470.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 270.844000 482.036000 275.656000 470.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 275.644000 482.036000 282.796000 470.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 282.844000 482.036000 290.572000 470.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 290.548000 482.036000 298.228000 470.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 298.252000 482.036000 302.056000 470.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 302.056000 482.036000 305.884000 470.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 305.860000 482.036000 312.016000 470.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 312.064000 482.036000 315.868000 470.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 315.868000 482.036000 319.588000 470.036000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 319.564000 482.036000 327.292000 470.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 327.268000 482.036000 333.424000 470.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 333.472000 482.036000 338.284000 470.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 338.272000 482.036000 342.076000 470.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 342.076000 482.036000 349.228000 470.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 349.276000 482.036000 353.080000 470.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.080000 482.036000 359.236000 470.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 359.284000 482.036000 363.112000 470.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 363.088000 482.036000 370.816000 470.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 370.792000 482.036000 378.472000 470.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 378.496000 482.036000 382.324000 470.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 382.300000 482.036000 389.392000 470.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 389.404000 482.036000 393.208000 470.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.208000 482.036000 397.036000 470.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 397.012000 482.036000 404.164000 470.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 404.212000 482.036000 415.588000 470.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 415.612000 482.036000 423.292000 470.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 423.316000 482.036000 427.120000 470.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 427.120000 482.036000 430.924000 470.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 430.924000 482.036000 438.076000 470.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 438.124000 482.036000 445.852000 470.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 445.828000 482.036000 453.508000 470.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.532000 482.036000 457.336000 470.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 457.336000 482.036000 465.064000 470.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 465.040000 482.036000 472.264000 470.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 472.240000 482.036000 477.052000 470.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 477.040000 482.036000 484.768000 470.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 484.744000 482.036000 488.572000 470.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 488.548000 482.036000 496.276000 470.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 496.252000 482.036000 503.932000 470.036000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 482.036000 507.904000 470.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 468.136000 192.592000 456.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 192.604000 468.136000 196.432000 456.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 196.408000 468.136000 202.564000 456.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 202.612000 468.136000 209.704000 456.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 209.716000 468.136000 213.520000 456.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 216.016000 468.136000 219.820000 456.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 222.412000 468.136000 231.076000 456.136000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 231.112000 468.136000 234.940000 456.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 234.916000 468.136000 238.744000 456.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 241.420000 468.136000 245.224000 456.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.816000 468.136000 252.628000 456.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 252.616000 468.136000 260.344000 456.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 260.416000 468.136000 267.508000 456.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 269.920000 468.136000 273.724000 456.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 276.424000 468.136000 280.252000 456.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 280.228000 468.136000 287.956000 456.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 288.028000 468.136000 292.840000 456.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 292.732000 468.136000 299.824000 456.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 299.836000 468.136000 305.572000 456.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 305.536000 468.136000 312.628000 456.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 312.640000 468.136000 318.796000 456.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 318.844000 468.136000 323.656000 456.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 323.740000 468.136000 327.568000 456.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 327.544000 468.136000 335.272000 456.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 335.344000 468.136000 343.024000 456.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 345.544000 468.136000 349.348000 456.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.940000 468.136000 356.752000 456.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 356.740000 468.136000 364.468000 456.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 364.540000 468.136000 368.368000 456.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 368.344000 468.136000 376.072000 456.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 376.048000 468.136000 383.728000 456.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 383.752000 468.136000 389.908000 456.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 392.452000 468.136000 396.256000 456.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.848000 468.136000 406.000000 456.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 406.048000 468.136000 411.784000 456.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 411.748000 468.136000 418.840000 456.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 421.444000 468.136000 425.248000 456.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 427.840000 468.136000 435.100000 456.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 435.136000 468.136000 442.228000 456.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 442.240000 468.136000 449.920000 456.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 449.944000 468.136000 454.756000 456.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 457.240000 468.136000 461.044000 456.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 463.636000 468.136000 467.464000 456.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 467.440000 468.136000 475.168000 456.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 477.844000 468.136000 481.648000 456.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.240000 468.136000 489.052000 456.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.040000 468.136000 496.768000 456.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.840000 468.136000 503.932000 456.136000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 468.136000 507.904000 456.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 454.236000 193.180000 442.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 193.204000 454.236000 198.940000 442.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.904000 454.236000 206.056000 442.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 206.104000 454.236000 216.364000 442.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 216.304000 454.236000 223.396000 442.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 223.408000 454.236000 229.144000 442.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 229.204000 454.236000 235.360000 442.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 235.300000 454.236000 239.104000 442.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.604000 454.236000 244.408000 442.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.908000 454.236000 250.648000 442.236000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 250.612000 454.236000 258.340000 442.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 259.816000 454.236000 263.620000 442.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.216000 454.236000 270.028000 442.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 270.016000 454.236000 277.744000 442.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 277.816000 454.236000 284.908000 442.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 286.216000 454.236000 290.020000 442.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 291.520000 454.236000 296.332000 442.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 296.320000 454.236000 303.544000 442.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 303.520000 454.236000 311.200000 442.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 312.724000 454.236000 316.528000 442.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.124000 454.236000 325.804000 442.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 325.720000 454.236000 331.456000 442.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 331.420000 454.236000 338.572000 442.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 338.620000 454.236000 348.880000 442.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 348.916000 454.236000 356.008000 442.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 356.020000 454.236000 361.756000 442.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 363.124000 454.236000 366.928000 442.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.524000 454.236000 375.676000 442.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 375.724000 454.236000 381.460000 442.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 381.328000 454.236000 388.420000 442.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 390.028000 454.236000 393.832000 442.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 395.332000 454.236000 403.060000 442.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 403.036000 454.236000 410.260000 442.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 410.332000 454.236000 416.068000 442.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 416.032000 454.236000 427.408000 442.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 427.432000 454.236000 434.584000 442.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 434.536000 454.236000 438.364000 442.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 438.436000 454.236000 442.240000 442.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 443.536000 454.236000 447.340000 442.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 448.936000 454.236000 456.028000 442.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 456.040000 454.236000 462.808000 442.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 462.736000 454.236000 469.828000 442.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 469.840000 454.236000 475.576000 442.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.540000 454.236000 482.308000 442.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 482.440000 454.236000 490.120000 442.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 490.036000 454.236000 497.188000 442.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 497.236000 454.236000 504.004000 442.236000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 454.236000 507.904000 442.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 440.336000 190.312000 428.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 440.336000 198.028000 428.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 440.336000 201.928000 428.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 201.904000 440.336000 209.632000 428.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 209.608000 440.336000 217.288000 428.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 217.312000 440.336000 223.468000 428.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 225.112000 440.336000 228.916000 428.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 230.512000 440.336000 236.668000 428.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 236.716000 440.336000 244.444000 428.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 244.420000 440.336000 251.140000 428.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 251.116000 440.336000 258.844000 428.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 260.416000 440.336000 264.220000 428.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.816000 440.336000 272.968000 428.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 273.016000 440.336000 279.172000 428.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 282.316000 440.336000 286.120000 428.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 286.200000 440.336000 293.352000 428.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 293.400000 440.336000 299.556000 428.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 299.496000 440.336000 307.176000 428.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 307.200000 440.336000 311.028000 428.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 311.004000 440.336000 316.740000 428.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 316.800000 440.336000 320.628000 428.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 320.604000 440.336000 328.332000 428.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 329.904000 440.336000 333.708000 428.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 335.304000 440.336000 342.528000 428.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 342.600000 440.336000 348.336000 428.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 351.504000 440.336000 355.308000 428.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 355.300000 440.336000 364.264000 428.336000 1.000000 0.000000 0.000000 1.000000 K
+drawChar 364.300000 440.336000 368.128000 428.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 368.104000 440.336000 375.196000 428.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 375.208000 440.336000 382.300000 428.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 382.312000 440.336000 390.040000 428.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 390.016000 440.336000 397.108000 428.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 397.120000 440.336000 403.876000 428.336000 1.000000 0.000000 0.000000 1.000000 x
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 403.900000 440.336000 407.704000 428.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.300000 440.336000 413.104000 428.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 414.700000 440.336000 419.440000 428.336000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 419.404000 440.336000 427.132000 428.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 428.800000 440.336000 432.604000 428.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 434.200000 440.336000 439.012000 428.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 439.000000 440.336000 446.728000 428.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 446.800000 440.336000 453.892000 428.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 455.500000 440.336000 459.304000 428.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 460.900000 440.336000 468.580000 428.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 468.604000 440.336000 475.828000 428.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 475.804000 440.336000 480.616000 428.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 480.604000 440.336000 485.416000 428.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 485.500000 440.336000 492.724000 428.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 492.700000 440.336000 504.076000 428.336000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 440.336000 507.904000 428.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 426.436000 193.180000 414.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 193.204000 426.436000 198.940000 414.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.904000 426.436000 206.056000 414.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 206.104000 426.436000 216.364000 414.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 216.304000 426.436000 223.396000 414.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 223.408000 426.436000 229.144000 414.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 230.908000 426.436000 234.712000 414.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 236.404000 426.436000 241.144000 414.436000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 242.800000 426.436000 246.604000 414.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 248.404000 426.436000 255.664000 414.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 255.700000 426.436000 262.792000 414.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 262.804000 426.436000 269.896000 414.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 269.908000 426.436000 277.588000 414.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 279.208000 426.436000 283.012000 414.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.704000 426.436000 291.472000 414.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 291.508000 426.436000 298.660000 414.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 298.612000 426.436000 304.348000 414.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 304.408000 426.436000 308.236000 414.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 308.212000 426.436000 315.436000 414.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 315.412000 426.436000 323.140000 414.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 323.212000 426.436000 329.368000 414.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 331.012000 426.436000 334.816000 414.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 336.616000 426.436000 342.352000 414.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 342.316000 426.436000 349.408000 414.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.420000 426.436000 356.572000 414.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 356.524000 426.436000 364.204000 414.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 364.228000 426.436000 368.056000 414.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 368.128000 426.436000 375.856000 414.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 375.832000 426.436000 383.512000 414.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 385.228000 426.436000 389.032000 414.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 390.724000 426.436000 402.100000 414.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 402.124000 426.436000 409.276000 414.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 409.228000 426.436000 414.040000 414.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 414.124000 426.436000 421.216000 414.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 421.228000 426.436000 426.964000 414.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 426.928000 426.436000 430.756000 414.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 430.732000 426.436000 437.884000 414.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 437.932000 426.436000 441.760000 414.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 441.736000 426.436000 447.892000 414.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 449.632000 426.436000 453.436000 414.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 455.128000 426.436000 461.284000 414.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 461.332000 426.436000 469.060000 414.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.036000 426.436000 475.756000 414.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 475.732000 426.436000 483.460000 414.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 485.128000 426.436000 488.932000 414.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 490.624000 426.436000 497.776000 414.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 497.824000 426.436000 503.980000 414.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 426.436000 507.904000 414.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 412.536000 193.180000 400.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 193.204000 412.536000 200.428000 400.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 200.404000 412.536000 206.140000 400.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 206.104000 412.536000 209.932000 400.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 209.908000 412.536000 217.636000 400.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 217.612000 412.536000 225.292000 400.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 225.316000 412.536000 229.120000 400.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 229.200000 412.536000 234.012000 400.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 234.000000 412.536000 239.736000 400.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 239.700000 412.536000 246.852000 400.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 246.900000 412.536000 254.580000 400.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 254.604000 412.536000 261.696000 400.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 261.708000 412.536000 265.512000 400.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.512000 412.536000 269.232000 400.536000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 269.208000 412.536000 276.432000 400.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 276.408000 412.536000 284.136000 400.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 284.112000 412.536000 289.848000 400.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 289.812000 412.536000 297.540000 400.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 297.516000 412.536000 304.668000 400.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 304.716000 412.536000 308.544000 400.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 308.520000 412.536000 314.676000 400.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 314.724000 412.536000 318.528000 400.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 318.528000 412.536000 322.332000 400.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.332000 412.536000 327.144000 400.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 327.132000 412.536000 334.356000 400.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 334.332000 412.536000 338.136000 400.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 338.136000 412.536000 345.816000 400.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 345.840000 412.536000 353.568000 400.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 353.544000 412.536000 358.356000 400.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 358.344000 412.536000 362.148000 400.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.148000 412.536000 373.524000 400.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 373.548000 412.536000 380.640000 400.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 380.652000 412.536000 384.456000 400.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 384.456000 412.536000 389.268000 400.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 389.256000 412.536000 396.480000 400.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 396.456000 412.536000 400.260000 400.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 400.260000 412.536000 406.416000 400.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 406.464000 412.536000 410.292000 400.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 410.268000 412.536000 417.360000 400.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 417.372000 412.536000 424.464000 400.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 424.476000 412.536000 432.156000 400.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 432.180000 412.536000 435.984000 400.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 435.984000 412.536000 443.136000 400.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 443.184000 412.536000 447.996000 400.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 447.984000 412.536000 451.788000 400.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 451.788000 412.536000 459.516000 400.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 459.492000 412.536000 463.320000 400.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 463.296000 412.536000 470.976000 400.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 471.000000 412.536000 478.728000 400.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 478.704000 412.536000 483.516000 400.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 483.504000 412.536000 487.308000 400.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 386.736000 85.336000 374.736000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 84.904000 386.736000 92.992000 374.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.004000 386.736000 97.108000 374.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 97.108000 386.736000 105.088000 374.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 105.112000 386.736000 110.092000 374.736000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 110.116000 386.736000 114.220000 374.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 114.220000 386.736000 122.752000 374.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 122.716000 386.736000 126.892000 374.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.916000 386.736000 135.712000 374.736000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 135.712000 386.736000 139.816000 374.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.816000 386.736000 148.060000 374.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.012000 386.736000 155.152000 374.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 155.116000 386.736000 163.252000 374.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 163.216000 386.736000 168.952000 374.736000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 369.736000 193.492000 357.736000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 369.736000 201.232000 357.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 369.736000 208.300000 357.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 209.812000 369.736000 213.616000 357.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 215.116000 369.736000 225.376000 357.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 225.412000 369.736000 232.564000 357.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 232.516000 369.736000 236.344000 357.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 236.416000 369.736000 243.676000 357.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 243.520000 369.736000 247.564000 357.736000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 247.624000 369.736000 251.452000 357.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 251.428000 369.736000 259.156000 357.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 260.632000 369.736000 264.436000 357.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.032000 369.736000 272.752000 357.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 272.728000 369.736000 276.556000 357.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 276.628000 369.736000 283.852000 357.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 283.828000 369.736000 289.984000 357.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 289.924000 369.736000 297.016000 357.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.028000 369.736000 301.840000 357.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 303.424000 369.736000 307.228000 357.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.728000 369.736000 312.556000 357.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 312.532000 369.736000 318.688000 357.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 320.236000 369.736000 324.040000 357.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 325.636000 369.736000 331.792000 357.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 331.840000 369.736000 339.520000 357.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 339.436000 369.736000 346.588000 357.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 346.636000 369.736000 353.356000 357.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 353.332000 369.736000 357.160000 357.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 357.232000 369.736000 364.456000 357.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 364.432000 369.736000 372.160000 357.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 372.136000 369.736000 378.292000 357.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 379.840000 369.736000 383.644000 357.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.144000 369.736000 392.236000 357.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 392.248000 369.736000 399.976000 357.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 399.952000 369.736000 407.176000 357.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 407.248000 369.736000 414.976000 357.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 414.952000 369.736000 422.632000 357.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 422.656000 369.736000 430.384000 357.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 431.860000 369.736000 435.664000 357.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 437.260000 369.736000 442.072000 357.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 442.060000 369.736000 449.284000 357.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 450.760000 369.736000 454.564000 357.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.064000 369.736000 463.216000 357.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 463.264000 369.736000 469.984000 357.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 469.960000 369.736000 474.772000 357.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 474.760000 369.736000 482.488000 357.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 482.464000 369.736000 489.616000 357.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 489.664000 369.736000 493.492000 357.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 493.564000 369.736000 497.392000 357.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 497.368000 369.736000 504.136000 357.736000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 369.736000 508.004000 357.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 355.836000 195.760000 343.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 195.796000 355.836000 202.948000 343.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 202.900000 355.836000 206.728000 343.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 206.800000 355.836000 214.060000 343.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 215.404000 355.836000 219.208000 343.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 220.600000 355.836000 227.752000 343.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 227.800000 355.836000 233.536000 343.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 233.500000 355.836000 240.724000 343.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 240.796000 355.836000 248.524000 343.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 248.500000 355.836000 256.228000 343.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 256.300000 355.836000 263.980000 343.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 265.300000 355.836000 269.104000 343.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.604000 355.836000 274.432000 343.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 274.408000 355.836000 282.136000 343.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 282.208000 355.836000 286.012000 343.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 287.404000 355.836000 291.208000 343.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 292.600000 355.836000 299.752000 343.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 299.800000 355.836000 307.528000 343.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 307.504000 355.836000 315.184000 343.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 316.600000 355.836000 320.404000 343.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 321.904000 355.836000 328.996000 343.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 329.008000 355.836000 335.776000 343.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 335.812000 355.836000 342.904000 343.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 342.916000 355.836000 350.644000 343.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 352.012000 355.836000 355.816000 343.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.208000 355.836000 364.936000 343.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 364.912000 355.836000 372.064000 343.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.112000 355.836000 378.268000 343.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 379.708000 355.836000 383.512000 343.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.012000 355.836000 392.164000 343.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 393.508000 355.836000 397.312000 343.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.704000 355.836000 408.964000 343.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 409.000000 355.836000 412.828000 343.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 412.900000 355.836000 420.628000 343.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 420.604000 355.836000 428.284000 343.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 428.308000 355.836000 435.532000 343.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 435.508000 355.836000 445.768000 343.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 444.304000 355.836000 448.108000 343.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 449.500000 355.836000 453.304000 343.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.900000 355.836000 462.052000 343.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 462.100000 355.836000 468.256000 343.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 469.600000 355.836000 473.404000 343.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.796000 355.836000 485.056000 343.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 485.092000 355.836000 492.184000 343.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 492.196000 355.836000 496.024000 343.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 496.000000 355.836000 499.828000 343.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 499.804000 355.836000 503.608000 343.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 355.836000 507.904000 343.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 341.936000 193.492000 329.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 341.936000 201.232000 329.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 341.936000 208.300000 329.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 208.312000 341.936000 212.116000 329.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 212.116000 341.936000 218.836000 329.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 218.812000 341.936000 222.640000 329.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 222.616000 341.936000 229.840000 329.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 229.816000 341.936000 235.972000 329.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 236.020000 341.936000 243.112000 329.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 243.124000 341.936000 247.936000 329.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 247.924000 341.936000 251.728000 329.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 251.728000 341.936000 255.556000 329.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 255.532000 341.936000 261.688000 329.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 261.736000 341.936000 265.540000 329.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.540000 341.936000 272.692000 329.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 272.740000 341.936000 280.420000 329.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 280.444000 341.936000 287.668000 329.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 287.644000 341.936000 295.372000 329.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 295.348000 341.936000 300.160000 329.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 300.148000 341.936000 303.952000 329.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 303.952000 341.936000 311.584000 329.936000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 311.548000 341.936000 315.352000 329.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 315.352000 341.936000 319.792000 329.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 319.756000 341.936000 324.568000 329.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 324.556000 341.936000 328.360000 329.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 328.360000 341.936000 332.164000 329.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 332.164000 341.936000 342.424000 329.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 342.460000 341.936000 346.288000 329.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 346.264000 341.936000 353.944000 329.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 353.968000 341.936000 361.060000 329.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 361.072000 341.936000 364.876000 329.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.876000 341.936000 372.028000 329.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.076000 341.936000 379.804000 329.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 379.780000 341.936000 387.460000 329.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 387.484000 341.936000 391.288000 329.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.288000 341.936000 398.920000 329.936000 1.000000 0.000000 0.000000 1.000000 8
+drawChar 398.884000 341.936000 402.688000 329.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.688000 341.936000 407.128000 329.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 407.092000 341.936000 411.904000 329.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 411.892000 341.936000 415.696000 329.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.696000 341.936000 419.500000 329.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.500000 341.936000 423.328000 329.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 423.304000 341.936000 430.528000 329.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 430.504000 341.936000 438.232000 329.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 438.208000 341.936000 445.888000 329.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 445.912000 341.936000 449.716000 329.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 322.036000 195.328000 310.036000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 195.304000 322.036000 203.032000 310.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 204.004000 322.036000 207.808000 310.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 208.804000 322.036000 213.616000 310.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 213.604000 322.036000 221.332000 310.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 221.404000 322.036000 228.496000 310.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 229.408000 322.036000 233.212000 310.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 234.208000 322.036000 239.944000 310.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 239.908000 322.036000 243.736000 310.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 243.808000 322.036000 251.488000 310.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 251.512000 322.036000 259.240000 310.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 259.216000 322.036000 264.028000 310.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 265.012000 322.036000 268.816000 310.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 269.812000 322.036000 280.072000 310.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 280.108000 322.036000 287.260000 310.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 287.212000 322.036000 291.040000 310.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 291.112000 322.036000 294.940000 310.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 295.912000 322.036000 299.716000 310.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 300.712000 322.036000 307.864000 310.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 307.912000 322.036000 313.648000 310.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 313.612000 322.036000 320.704000 310.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 321.616000 322.036000 325.420000 310.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.416000 322.036000 331.228000 310.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 331.216000 322.036000 341.476000 310.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 341.512000 322.036000 348.736000 310.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 349.708000 322.036000 353.512000 310.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.508000 322.036000 361.228000 310.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 361.204000 322.036000 365.032000 310.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 365.104000 322.036000 372.328000 310.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 372.304000 322.036000 377.116000 310.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 377.104000 322.036000 384.832000 310.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 384.808000 322.036000 391.900000 310.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 391.912000 322.036000 398.068000 310.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 399.016000 322.036000 402.820000 310.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 403.816000 322.036000 409.552000 310.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 409.516000 322.036000 416.740000 310.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 416.812000 322.036000 424.492000 310.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 424.408000 322.036000 430.564000 310.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 430.612000 322.036000 434.416000 310.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 435.412000 322.036000 439.216000 310.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.308000 322.036000 447.532000 310.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 447.508000 322.036000 455.236000 310.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 455.308000 322.036000 462.400000 310.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 463.204000 322.036000 467.008000 310.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 468.004000 322.036000 475.156000 310.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 475.204000 322.036000 482.884000 310.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 482.800000 322.036000 490.024000 310.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 490.096000 322.036000 496.864000 310.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 496.792000 322.036000 503.884000 310.036000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 322.036000 507.904000 310.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 308.136000 190.312000 296.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 308.136000 198.028000 296.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 308.136000 205.192000 296.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 205.996000 308.136000 209.800000 296.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 210.592000 308.136000 217.816000 296.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 217.792000 308.136000 222.604000 296.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 222.592000 308.136000 230.320000 296.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 230.296000 308.136000 237.388000 296.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 237.400000 308.136000 243.136000 296.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 241.900000 308.136000 245.704000 296.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.496000 308.136000 250.300000 296.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 251.092000 308.136000 260.920000 296.136000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 260.896000 308.136000 268.624000 296.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 269.500000 308.136000 273.304000 296.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 274.096000 308.136000 278.908000 296.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 278.896000 308.136000 286.624000 296.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 286.696000 308.136000 293.788000 296.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 294.496000 308.136000 298.300000 296.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 299.092000 308.136000 302.920000 296.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 302.896000 308.136000 309.988000 296.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 310.000000 308.136000 314.440000 296.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 314.500000 308.136000 319.312000 296.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 320.104000 308.136000 323.908000 296.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 324.808000 308.136000 330.964000 296.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 331.012000 308.136000 334.840000 296.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 334.816000 308.136000 342.496000 296.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 342.412000 308.136000 349.504000 296.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.516000 308.136000 353.320000 296.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 354.112000 308.136000 357.916000 296.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 358.816000 308.136000 366.040000 296.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 366.016000 308.136000 373.744000 296.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 373.816000 308.136000 380.908000 296.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 381.616000 308.136000 385.420000 296.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 386.212000 308.136000 391.948000 296.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 391.912000 308.136000 399.136000 296.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 399.208000 308.136000 406.888000 296.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 407.704000 308.136000 411.508000 296.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 412.300000 308.136000 418.036000 296.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 418.000000 308.136000 425.728000 296.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 425.800000 308.136000 433.528000 296.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 433.504000 308.136000 439.660000 296.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 440.404000 308.136000 444.208000 296.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.108000 308.136000 452.260000 296.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 452.308000 308.136000 456.136000 296.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 456.004000 308.136000 463.228000 296.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 463.300000 308.136000 471.028000 296.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 471.004000 308.136000 478.684000 296.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 479.500000 308.136000 483.304000 296.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.096000 308.136000 488.908000 296.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 488.896000 308.136000 496.624000 296.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.696000 308.136000 503.788000 296.136000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 308.136000 508.004000 296.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 294.236000 192.592000 282.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 192.604000 294.236000 200.332000 282.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 200.308000 294.236000 205.120000 282.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 205.204000 294.236000 209.032000 282.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 209.008000 294.236000 214.744000 282.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 214.708000 294.236000 221.800000 282.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 221.812000 294.236000 225.616000 282.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 225.808000 294.236000 229.636000 282.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 229.708000 294.236000 236.800000 282.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.812000 294.236000 244.540000 282.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 244.516000 294.236000 252.196000 282.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 252.220000 294.236000 257.032000 282.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 257.020000 294.236000 264.748000 282.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 264.724000 294.236000 268.528000 282.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.828000 294.236000 276.052000 282.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 276.028000 294.236000 280.468000 282.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 280.432000 294.236000 284.236000 282.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.536000 294.236000 289.348000 282.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 289.336000 294.236000 297.064000 282.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 297.040000 294.236000 304.132000 282.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 304.240000 294.236000 308.044000 282.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.140000 294.236000 318.400000 282.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 318.436000 294.236000 325.588000 282.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 325.540000 294.236000 329.368000 282.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 329.440000 294.236000 333.268000 282.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 333.244000 294.236000 337.048000 282.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 337.144000 294.236000 340.948000 282.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 341.044000 294.236000 351.148000 282.236000 1.000000 0.000000 0.000000 1.000000 U
+drawChar 351.148000 294.236000 358.876000 282.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 358.852000 294.236000 366.532000 282.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 366.652000 294.236000 373.744000 282.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 373.756000 294.236000 379.492000 282.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 379.456000 294.236000 387.184000 282.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 387.256000 294.236000 394.348000 282.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 394.360000 294.236000 401.512000 282.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 401.464000 294.236000 406.276000 282.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 406.264000 294.236000 413.992000 282.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 414.064000 294.236000 417.868000 282.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 417.964000 294.236000 421.792000 282.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 421.768000 294.236000 427.924000 282.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 428.068000 294.236000 431.872000 282.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 432.064000 294.236000 439.216000 282.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 439.264000 294.236000 443.068000 282.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 443.164000 294.236000 449.884000 282.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 449.860000 294.236000 457.012000 282.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 457.060000 294.236000 464.740000 282.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 464.764000 294.236000 468.592000 282.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 468.568000 294.236000 476.296000 282.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 476.272000 294.236000 483.364000 282.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 483.472000 294.236000 488.284000 282.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 488.368000 294.236000 492.172000 282.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 492.268000 294.236000 499.492000 282.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 499.468000 294.236000 503.908000 282.236000 1.000000 0.000000 0.000000 1.000000 f
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 294.236000 507.904000 282.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 280.336000 189.328000 268.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 189.304000 280.336000 196.456000 268.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 196.504000 280.336000 202.240000 268.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 202.204000 280.336000 209.884000 268.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 209.908000 280.336000 217.000000 268.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 217.012000 280.336000 220.816000 268.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 220.816000 280.336000 228.496000 268.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 228.520000 280.336000 234.256000 268.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 234.220000 280.336000 241.372000 268.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 241.420000 280.336000 251.680000 268.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 251.716000 280.336000 258.808000 268.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 258.820000 280.336000 264.556000 268.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 264.520000 280.336000 270.676000 268.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 270.724000 280.336000 274.528000 268.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 274.528000 280.336000 278.968000 268.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 278.932000 280.336000 286.156000 268.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 286.132000 280.336000 291.868000 268.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 291.832000 280.336000 295.636000 268.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 295.636000 280.336000 301.792000 268.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 301.840000 280.336000 306.652000 268.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 306.640000 280.336000 313.864000 268.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 313.840000 280.336000 319.576000 268.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 319.540000 280.336000 323.368000 268.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 323.344000 280.336000 331.072000 268.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 331.048000 280.336000 338.728000 268.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 338.752000 280.336000 342.556000 268.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 342.900000 280.336000 349.056000 268.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 349.104000 280.336000 359.364000 268.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 359.400000 280.336000 366.492000 268.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 366.504000 280.336000 373.656000 268.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 373.704000 280.336000 378.516000 268.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 378.504000 280.336000 385.596000 268.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 385.608000 280.336000 391.344000 268.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 391.308000 280.336000 397.464000 268.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 397.512000 280.336000 401.316000 268.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 401.316000 280.336000 405.120000 268.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 405.000000 280.336000 411.156000 268.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 411.204000 280.336000 418.932000 268.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 418.908000 280.336000 426.132000 268.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 426.108000 280.336000 433.200000 268.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 433.212000 280.336000 439.368000 268.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 439.416000 280.336000 443.220000 268.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 443.220000 280.336000 447.024000 268.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 447.000000 280.336000 454.152000 268.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.200000 280.336000 460.920000 268.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 460.896000 280.336000 467.616000 268.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 467.592000 280.336000 474.684000 268.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 474.696000 280.336000 480.852000 268.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 480.900000 280.336000 487.056000 268.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 487.104000 280.336000 494.328000 268.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 494.304000 280.336000 500.040000 268.336000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 280.336000 504.044000 268.336000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 266.436000 189.328000 254.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 189.304000 266.436000 196.396000 254.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 196.408000 266.436000 202.564000 254.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 203.008000 266.436000 206.812000 254.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 207.208000 266.436000 214.432000 254.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 214.408000 266.436000 220.144000 254.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 220.612000 266.436000 224.416000 254.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 224.812000 266.436000 235.072000 254.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 235.108000 266.436000 242.836000 254.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 242.812000 266.436000 249.964000 254.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 250.012000 266.436000 254.824000 254.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 254.812000 266.436000 261.904000 254.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 261.916000 266.436000 268.684000 254.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 268.720000 266.436000 275.812000 254.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 275.824000 266.436000 281.560000 254.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 280.228000 266.436000 284.032000 254.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 284.428000 266.436000 288.232000 254.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.628000 266.436000 299.128000 254.436000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 299.128000 266.436000 306.220000 254.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 306.232000 266.436000 312.988000 254.436000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 313.036000 266.436000 317.848000 254.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 318.232000 266.436000 322.036000 254.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.432000 266.436000 327.244000 254.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 327.232000 266.436000 334.456000 254.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 334.828000 266.436000 338.632000 254.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.124000 266.436000 343.936000 254.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 343.924000 266.436000 351.652000 254.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 351.724000 266.436000 358.816000 254.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 359.128000 266.436000 362.932000 254.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 363.328000 266.436000 373.588000 254.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 373.624000 266.436000 377.452000 254.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 377.428000 266.436000 385.156000 254.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 385.132000 266.436000 392.812000 254.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 392.836000 266.436000 400.060000 254.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 400.036000 266.436000 410.296000 254.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 410.740000 266.436000 414.544000 254.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 415.036000 266.436000 418.864000 254.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 418.840000 266.436000 424.996000 254.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 425.440000 266.436000 429.244000 254.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.640000 266.436000 436.792000 254.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 437.140000 266.436000 440.944000 254.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 441.340000 266.436000 445.780000 254.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 445.744000 266.436000 453.472000 254.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 453.544000 266.436000 457.372000 254.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 457.348000 266.436000 461.176000 254.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 461.152000 266.436000 465.196000 254.436000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 465.256000 266.436000 469.084000 254.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 469.060000 266.436000 476.152000 254.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 476.164000 266.436000 483.892000 254.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 483.964000 266.436000 491.644000 254.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 491.668000 266.436000 496.480000 254.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 496.468000 266.436000 504.196000 254.436000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 266.436000 507.904000 254.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 252.536000 191.656000 240.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 252.536000 201.964000 240.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 201.904000 252.536000 205.732000 240.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 205.804000 252.536000 212.572000 240.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 212.500000 252.536000 219.592000 240.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 219.604000 252.536000 223.432000 240.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 225.100000 252.536000 228.904000 240.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 230.596000 252.536000 241.972000 240.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 241.996000 252.536000 245.824000 240.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 245.800000 252.536000 251.536000 240.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 251.596000 252.536000 257.332000 240.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 257.296000 252.536000 264.520000 240.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 264.496000 252.536000 270.232000 240.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 271.996000 252.536000 275.800000 240.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.492000 252.536000 284.644000 240.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 284.692000 252.536000 292.420000 240.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 292.288000 252.536000 299.968000 240.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 301.588000 252.536000 305.392000 240.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 307.084000 252.536000 310.912000 240.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 310.888000 252.536000 318.616000 240.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 320.392000 252.536000 324.196000 240.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 325.888000 252.536000 330.700000 240.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 330.688000 252.536000 338.416000 240.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 338.488000 252.536000 345.580000 240.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 347.188000 252.536000 350.992000 240.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 352.684000 252.536000 359.404000 240.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 359.380000 252.536000 366.604000 240.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 366.580000 252.536000 372.316000 240.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 372.376000 252.536000 380.104000 240.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 380.080000 252.536000 387.172000 240.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 387.184000 252.536000 392.920000 240.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 394.588000 252.536000 398.392000 240.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 400.192000 252.536000 404.020000 240.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 403.996000 252.536000 410.152000 240.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 411.796000 252.536000 415.600000 240.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 417.292000 252.536000 424.444000 240.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 426.088000 252.536000 429.892000 240.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 431.584000 252.536000 439.312000 240.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 439.288000 252.536000 446.440000 240.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 446.488000 252.536000 451.300000 240.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 452.884000 252.536000 456.688000 240.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 458.488000 252.536000 465.640000 240.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 465.688000 252.536000 473.416000 240.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 473.284000 252.536000 480.964000 240.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 482.680000 252.536000 486.484000 240.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.176000 252.536000 492.988000 240.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 493.072000 252.536000 496.900000 240.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 496.876000 252.536000 503.968000 240.536000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 252.536000 508.004000 240.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 238.636000 191.236000 226.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 191.200000 238.636000 198.352000 226.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 198.400000 238.636000 205.120000 226.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 205.096000 238.636000 212.356000 226.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 212.392000 238.636000 216.196000 226.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 216.196000 238.636000 220.000000 226.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 463.300000 86.136000 471.364000 74.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 470.800000 86.136000 477.952000 74.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 478.000000 86.136000 485.680000 74.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 485.704000 86.136000 492.796000 74.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 492.808000 86.136000 496.612000 74.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 496.600000 86.136000 504.232000 74.136000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 6746.400000 0 477.900000 6746.400000 0 477.900000 7056.200000 0 134.300000 7056.200000 0 134.300000 6746.400000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -595450.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 3757.400000 0 168.100000 3757.400000 0 168.100000 3762.400000 0 76.900000 3762.400000 0 76.900000 3757.400000 0
+eoFillPath subpath 1 163.100000 3762.300000 0 168.100000 3762.300000 0 168.100000 3892.900000 0 163.100000 3892.900000 0 163.100000 3762.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 3762.400000 0 163.100000 3762.400000 0 163.100000 3897.800000 0 72.000000 3897.800000 0 72.000000 3762.400000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 3893.480000 87.320000 3883.480000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 3893.480000 93.420000 3883.480000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 3893.480000 97.510000 3883.480000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 3893.480000 101.420000 3883.480000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 3893.480000 104.170000 3883.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 3893.480000 110.530000 3883.480000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 3893.480000 113.270000 3883.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 3893.480000 116.470000 3883.480000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 3893.480000 123.480000 3883.480000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 3893.480000 129.610000 3883.480000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 3893.480000 135.090000 3883.480000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 3893.480000 140.890000 3883.480000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 3893.480000 144.820000 3883.480000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 3893.480000 150.920000 3883.480000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 3893.480000 153.670000 3883.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 3893.480000 156.470000 3883.480000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 3766.600000 0 168.200000 3766.600000 0 168.200000 3881.800000 0 72.000000 3881.800000 0 72.000000 3766.600000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3834.752000 79.253000 3825.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 3834.752000 86.669000 3825.752000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 3834.752000 90.215000 3825.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 3834.752000 93.077000 3825.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 3834.752000 97.406000 3825.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 3834.752000 100.853000 3825.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 3834.752000 107.324000 3825.752000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 3834.752000 112.337000 3825.752000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 3834.752000 115.271000 3825.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 3834.752000 118.655000 3825.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 3834.752000 126.512000 3825.752000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 3834.752000 130.805000 3825.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 3834.752000 135.881000 3825.752000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 3834.752000 139.355000 3825.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 3834.752000 147.284000 3825.752000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 3834.752000 150.074000 3825.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 3834.752000 155.897000 3825.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 3834.752000 158.750000 3825.752000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 3834.752000 161.853000 3825.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3824.252000 82.124000 3815.252000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 3824.252000 87.137000 3815.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 3824.252000 90.071000 3815.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 3824.252000 93.356000 3815.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 3824.252000 100.403000 3815.252000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 3824.252000 104.921000 3815.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 3824.252000 109.205000 3815.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 3824.252000 117.737000 3815.252000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 3824.252000 123.119000 3815.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 3824.252000 128.996000 3815.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 3824.252000 132.605000 3815.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 3824.252000 138.392000 3815.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 3824.252000 141.749000 3815.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 3824.252000 149.507000 3815.252000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 3824.252000 153.800000 3815.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 3824.252000 158.876000 3815.252000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 3824.252000 161.853000 3815.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3813.752000 81.764000 3804.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 3813.752000 87.596000 3804.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 3813.752000 93.356000 3804.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 3813.752000 102.050000 3804.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 3813.752000 113.822000 3804.752000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 3813.752000 122.651000 3804.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 3813.752000 134.117000 3804.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 3813.752000 138.401000 3804.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 3813.752000 147.149000 3804.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 3813.752000 158.921000 3804.752000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 3813.752000 161.853000 3804.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3803.252000 79.271000 3794.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 3803.252000 84.338000 3794.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 3803.252000 89.621000 3794.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 3803.252000 94.643000 3794.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 3803.252000 100.502000 3794.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 3803.252000 106.262000 3794.252000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 3803.252000 111.518000 3794.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 3803.252000 116.216000 3794.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 3803.252000 119.249000 3794.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 3803.252000 122.363000 3794.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 3803.252000 128.186000 3794.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 3803.252000 131.345000 3794.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 3803.252000 137.060000 3794.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 3803.252000 140.147000 3794.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 3803.252000 145.007000 3794.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 3803.252000 148.598000 3794.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 3803.252000 151.460000 3794.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 3803.252000 155.789000 3794.252000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 3803.252000 158.933000 3794.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3792.752000 80.702000 3783.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 3792.752000 83.573000 3783.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 3792.752000 89.396000 3783.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 3792.752000 95.156000 3783.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 3792.752000 100.547000 3783.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 3792.752000 109.052000 3783.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 3792.752000 111.959000 3783.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 3792.752000 117.251000 3783.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 3792.752000 121.904000 3783.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 3792.752000 126.503000 3783.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 3792.752000 129.338000 3783.752000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 3792.752000 134.936000 3783.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 3792.752000 143.441000 3783.752000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 3792.752000 148.796000 3783.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 3792.752000 154.574000 3783.752000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 3792.752000 158.876000 3783.752000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 3792.752000 161.853000 3783.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3782.252000 79.271000 3773.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 3782.252000 85.094000 3773.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 3782.252000 88.703000 3773.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 3782.252000 94.112000 3773.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 3782.252000 97.244000 3773.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 3782.252000 103.058000 3773.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 3782.252000 108.890000 3773.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 3782.252000 111.950000 3773.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 3782.252000 115.271000 3773.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 3782.252000 120.338000 3773.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 3782.252000 125.621000 3773.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 3782.252000 131.363000 3773.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 3782.252000 134.558000 3773.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 3782.252000 140.048000 3773.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 3782.252000 145.430000 3773.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 3782.252000 150.551000 3773.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 3782.252000 155.960000 3773.252000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 3782.252000 158.933000 3773.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3771.752000 80.009000 3762.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 3771.752000 85.364000 3762.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 3771.752000 88.271000 3762.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 3771.752000 91.169000 3762.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 3771.752000 97.955000 3762.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 3771.752000 107.765000 3762.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 3771.752000 110.672000 3762.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 3771.752000 115.964000 3762.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 3771.752000 120.617000 3762.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 3771.752000 125.216000 3762.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 3771.752000 128.051000 3762.752000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 3771.752000 134.954000 3762.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 3771.752000 146.285000 3762.752000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 3771.752000 151.667000 3762.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 3771.752000 155.906000 3762.752000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 3771.752000 159.033000 3762.752000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 3762.300000 0 72.100000 3762.300000 0 72.100000 3897.800000 0 72.000000 3897.800000 0 72.000000 3762.300000 0
+eoFillPath subpath 1 163.100000 3762.300000 0 163.200000 3762.300000 0 163.200000 3897.800000 0 163.100000 3897.800000 0 163.100000 3762.300000 0
+eoFillPath subpath 1 72.000000 3897.700000 0 163.200000 3897.700000 0 163.200000 3897.800000 0 72.000000 3897.800000 0 72.000000 3897.700000 0
+eoFillPath subpath 1 72.000000 3762.300000 0 163.200000 3762.300000 0 163.200000 3762.400000 0 72.000000 3762.400000 0 72.000000 3762.300000 0
+saveState
+eoClipPath subpath 1 96.900000 3837.600000 0 138.300000 3837.600000 0 138.300000 3881.800000 0 96.900000 3881.800000 0 96.900000 3837.600000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -304570.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 3482.800000 0 165.500000 3482.800000 0 165.500000 3487.800000 0 76.900000 3487.800000 0 76.900000 3482.800000 0
+eoFillPath subpath 1 160.500000 3487.700000 0 165.500000 3487.700000 0 165.500000 3644.000000 0 160.500000 3644.000000 0 160.500000 3487.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 3487.800000 0 121.400000 3487.800000 0 121.400000 3648.900000 0 72.000000 3648.900000 0 72.000000 3487.800000 0
+saveState
+eoClipPath subpath 1 72.000000 3487.700000 0 160.500000 3487.700000 0 160.500000 3648.800000 0 72.000000 3648.800000 0 72.000000 3487.700000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -267870.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 3644.580000 89.280000 3634.580000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 3644.580000 95.630000 3634.580000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 3644.580000 99.520000 3634.580000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 3644.580000 102.270000 3634.580000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 3644.580000 108.450000 3634.580000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 3644.580000 112.610000 3634.580000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 3644.580000 118.510000 3634.580000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 3644.580000 121.670000 3634.580000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 3644.580000 124.470000 3634.580000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 3644.580000 130.830000 3634.580000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 3644.580000 133.970000 3634.580000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 3644.580000 137.920000 3634.580000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 3644.580000 144.230000 3634.580000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 3644.580000 150.350000 3634.580000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 3644.580000 153.570000 3634.580000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 3632.880000 95.000000 3622.880000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 3632.880000 97.770000 3622.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 3632.880000 103.000000 3622.880000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 3632.880000 109.330000 3622.880000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 3632.880000 117.470000 3622.880000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 3632.880000 123.620000 3622.880000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 3632.880000 128.800000 3622.880000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 3632.880000 135.130000 3622.880000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 3632.880000 141.250000 3622.880000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 3632.880000 145.410000 3622.880000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3618.052000 82.961000 3609.052000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 3618.052000 87.614000 3609.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 3618.052000 93.356000 3609.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 3618.052000 98.612000 3609.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 3618.052000 103.733000 3609.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 3618.052000 106.568000 3609.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 3618.052000 111.959000 3609.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 3618.052000 114.866000 3609.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 3618.052000 117.665000 3609.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 3618.052000 122.768000 3609.052000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 3618.052000 125.747000 3609.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 3618.052000 131.651000 3609.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 3618.052000 136.907000 3609.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 3618.052000 142.307000 3609.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 3618.052000 148.049000 3609.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 3618.052000 150.956000 3609.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 3618.052000 156.302000 3609.052000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3618.052000 159.253000 3609.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3607.552000 84.095000 3598.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 3607.552000 89.900000 3598.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 3607.552000 95.318000 3598.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 3607.552000 100.349000 3598.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 3607.552000 110.789000 3598.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 3607.552000 111.464000 3598.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 3607.552000 114.362000 3598.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 3607.552000 119.348000 3598.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 3607.552000 126.962000 3598.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 3607.552000 132.047000 3598.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 3607.552000 139.958000 3598.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 3607.552000 142.865000 3598.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 3607.552000 147.410000 3598.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 3607.552000 153.287000 3598.552000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 3607.552000 156.333000 3598.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3597.052000 84.095000 3588.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 3597.052000 89.468000 3588.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 3597.052000 94.121000 3588.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 3597.052000 99.899000 3588.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 3597.052000 105.218000 3588.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 3597.052000 109.502000 3588.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 3597.052000 115.649000 3588.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 3597.052000 122.327000 3588.052000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 3597.052000 127.718000 3588.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 3597.052000 132.002000 3588.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 3597.052000 138.149000 3588.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 3597.052000 145.205000 3588.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 3597.052000 150.992000 3588.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 3597.052000 156.311000 3588.052000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3597.052000 159.253000 3588.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3586.552000 82.394000 3577.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 3586.552000 86.705000 3577.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 3586.552000 91.322000 3577.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 3586.552000 94.913000 3577.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 3586.552000 98.054000 3577.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 3586.552000 102.014000 3577.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 3586.552000 104.876000 3577.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 3586.552000 113.435000 3577.552000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 3586.552000 118.718000 3577.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 3586.552000 121.949000 3577.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 3586.552000 125.063000 3577.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 3586.552000 130.886000 3577.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 3586.552000 134.045000 3577.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 3586.552000 138.005000 3577.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 3586.552000 143.792000 3577.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 3586.552000 149.111000 3577.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 3586.552000 151.964000 3577.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 3586.552000 156.293000 3577.552000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 3586.552000 159.153000 3577.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3576.052000 79.271000 3567.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 3576.052000 82.169000 3567.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 3576.052000 85.526000 3567.052000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 3576.052000 90.818000 3567.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 3576.052000 94.454000 3567.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 3576.052000 99.008000 3567.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 3576.052000 104.318000 3567.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 3576.052000 110.096000 3567.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 3576.052000 115.856000 3567.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 3576.052000 119.546000 3567.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 3576.052000 124.001000 3567.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 3576.052000 129.509000 3567.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 3576.052000 133.145000 3567.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 3576.052000 139.751000 3567.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 3576.052000 145.205000 3567.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 3576.052000 148.841000 3567.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 3576.052000 152.657000 3567.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 3576.052000 156.293000 3567.052000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3576.052000 159.253000 3567.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3565.552000 84.095000 3556.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 3565.552000 88.406000 3556.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 3565.552000 93.824000 3556.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 3565.552000 99.602000 3556.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 3565.552000 105.362000 3556.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 3565.552000 108.422000 3556.552000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 3565.552000 116.747000 3556.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 3565.552000 129.275000 3556.552000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 3565.552000 135.089000 3556.552000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 3565.552000 138.698000 3556.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 3565.552000 141.560000 3556.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 3565.552000 146.906000 3556.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 3565.552000 151.190000 3556.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 3565.552000 156.266000 3556.552000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3565.552000 159.253000 3556.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3555.052000 82.196000 3546.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 3555.052000 87.560000 3546.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 3555.052000 92.213000 3546.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 3555.052000 96.551000 3546.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 3555.052000 101.708000 3546.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 3555.052000 107.216000 3546.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 3555.052000 111.653000 3546.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 3555.052000 118.961000 3546.052000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 3555.052000 124.316000 3546.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 3555.052000 128.654000 3546.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 3555.052000 133.172000 3546.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 3555.052000 138.995000 3546.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 3555.052000 143.612000 3546.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 3555.052000 148.913000 3546.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 3555.052000 153.197000 3546.052000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 3555.052000 156.333000 3546.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3544.552000 80.009000 3535.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 3544.552000 85.319000 3535.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 3544.552000 91.061000 3535.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 3544.552000 100.052000 3535.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 3544.552000 113.993000 3535.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 3544.552000 116.873000 3535.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 3544.552000 120.410000 3535.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 3544.552000 126.296000 3535.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 3544.552000 135.350000 3535.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 3544.552000 145.106000 3535.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 3544.552000 150.893000 3535.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 3544.552000 156.212000 3535.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3544.552000 159.253000 3535.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3534.052000 82.196000 3525.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 3534.052000 87.560000 3525.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 3534.052000 93.392000 3525.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 3534.052000 99.152000 3525.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 3534.052000 101.960000 3525.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 3534.052000 107.306000 3525.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 3534.052000 111.905000 3525.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 3534.052000 115.640000 3525.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 3534.052000 122.444000 3525.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 3534.052000 127.898000 3525.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 3534.052000 135.575000 3525.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 3534.052000 141.380000 3525.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 3534.052000 145.241000 3525.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 3534.052000 150.803000 3525.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 3534.052000 156.302000 3525.052000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3534.052000 159.253000 3525.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3523.552000 80.009000 3514.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 3523.552000 85.796000 3514.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 3523.552000 91.115000 3514.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 3523.552000 95.399000 3514.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 3523.552000 100.718000 3514.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 3523.552000 107.054000 3514.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 3523.552000 118.097000 3514.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 3523.552000 123.524000 3514.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 3523.552000 129.401000 3514.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 3523.552000 131.768000 3514.552000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 3523.552000 135.413000 3514.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 3523.552000 141.659000 3514.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 3523.552000 150.965000 3514.552000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 3523.552000 156.320000 3514.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3523.552000 159.253000 3514.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3513.052000 81.017000 3504.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 3513.052000 84.608000 3504.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 3513.052000 89.963000 3504.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 3513.052000 92.870000 3504.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 3513.052000 98.693000 3504.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 3513.052000 103.310000 3504.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 3513.052000 107.243000 3504.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 3513.052000 116.081000 3504.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 3513.052000 121.886000 3504.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 3513.052000 127.205000 3504.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 3513.052000 132.983000 3504.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 3513.052000 136.943000 3504.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 3513.052000 143.846000 3504.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 3513.052000 148.184000 3504.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 3513.052000 153.260000 3504.052000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 3513.052000 156.433000 3504.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3502.552000 79.271000 3493.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 3502.552000 85.094000 3493.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 3502.552000 90.854000 3493.552000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 3502.552000 93.653000 3493.552000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 3487.700000 0 72.100000 3487.700000 0 72.100000 3648.900000 0 72.000000 3648.900000 0 72.000000 3487.700000 0
+eoFillPath subpath 1 160.500000 3487.700000 0 160.600000 3487.700000 0 160.600000 3648.900000 0 160.500000 3648.900000 0 160.500000 3487.700000 0
+eoFillPath subpath 1 72.000000 3648.800000 0 160.600000 3648.800000 0 160.600000 3648.900000 0 72.000000 3648.900000 0 72.000000 3648.800000 0
+eoFillPath subpath 1 72.000000 3487.700000 0 160.600000 3487.700000 0 160.600000 3487.800000 0 72.000000 3487.800000 0 72.000000 3487.700000 0
+saveState
+eoClipPath subpath 1 108.000000 3000.300000 0 178.900000 3000.300000 0 178.900000 3057.000000 0 108.000000 3057.000000 0 108.000000 3000.300000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -220840.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -1058.100000 0 165.500000 -1058.100000 0 165.500000 -1053.100000 0 76.900000 -1053.100000 0 76.900000 -1058.100000 0
+eoFillPath subpath 1 160.500000 -1053.200000 0 165.500000 -1053.200000 0 165.500000 -944.400000 0 160.500000 -944.400000 0 160.500000 -1053.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -1053.100000 0 160.500000 -1053.100000 0 160.500000 -939.500000 0 72.000000 -939.500000 0 72.000000 -1053.100000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -943.848000 83.771000 -952.848000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 -943.848000 89.594000 -952.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 -943.848000 92.465000 -952.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 -943.848000 97.568000 -952.848000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 -943.848000 100.943000 -952.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 -943.848000 106.955000 -952.848000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 -943.848000 110.447000 -952.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 -943.848000 114.425000 -952.848000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 -943.848000 119.717000 -952.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 -943.848000 127.493000 -952.848000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 -943.848000 130.949000 -952.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 -943.848000 136.574000 -952.848000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 -943.848000 141.920000 -952.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 -943.848000 147.365000 -952.848000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 -943.848000 151.703000 -952.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 -943.848000 156.320000 -952.848000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -943.848000 159.153000 -952.848000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -954.348000 81.764000 -963.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -954.348000 85.130000 -963.348000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 -954.348000 88.712000 -963.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 -954.348000 94.022000 -963.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 -954.348000 98.306000 -963.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -954.348000 102.455000 -963.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 -954.348000 106.676000 -963.348000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 -954.348000 110.312000 -963.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 -954.348000 114.920000 -963.348000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 -954.348000 119.060000 -963.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 -954.348000 125.450000 -963.348000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 -954.348000 130.832000 -963.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 -954.348000 139.445000 -963.348000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 -954.348000 145.169000 -963.348000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 -954.348000 148.076000 -963.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 -954.348000 153.323000 -963.348000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -954.348000 156.433000 -963.348000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -964.848000 80.009000 -973.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -964.848000 82.871000 -973.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 -964.848000 88.316000 -973.848000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 -964.848000 94.094000 -973.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 -964.848000 96.947000 -973.848000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 -964.848000 104.948000 -973.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 -964.848000 113.705000 -973.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 -964.848000 119.492000 -973.848000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 -964.848000 124.811000 -973.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 -964.848000 132.848000 -973.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 -964.848000 141.605000 -973.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 -964.848000 144.467000 -973.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 -964.848000 148.103000 -973.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 -964.848000 150.965000 -973.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 -964.848000 156.311000 -973.848000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -964.848000 159.253000 -973.848000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -975.348000 80.999000 -984.348000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 -975.348000 90.539000 -984.348000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 -975.348000 95.318000 -984.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 -975.348000 99.602000 -984.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -975.348000 102.473000 -984.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 -975.348000 108.260000 -984.348000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 -975.348000 110.762000 -984.348000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 -975.348000 115.316000 -984.348000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 -975.348000 122.156000 -984.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 -975.348000 132.299000 -984.348000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 -975.348000 136.970000 -984.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 -975.348000 139.877000 -984.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 -975.348000 142.775000 -984.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 -975.348000 148.022000 -984.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 -975.348000 152.720000 -984.348000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 -975.348000 156.311000 -984.348000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -975.348000 159.253000 -984.348000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -985.848000 83.006000 -994.848000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 -985.848000 88.793000 -994.848000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 -985.848000 91.664000 -994.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 -985.848000 94.562000 -994.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 -985.848000 100.349000 -994.848000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 -985.848000 103.157000 -994.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 -985.848000 108.980000 -994.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 -985.848000 114.740000 -994.848000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 -985.848000 119.375000 -994.848000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 -985.848000 128.033000 -994.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 -985.848000 141.479000 -994.848000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 -985.848000 146.807000 -994.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -985.848000 152.684000 -994.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 -985.848000 156.293000 -994.848000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -985.848000 159.253000 -994.848000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -996.348000 79.730000 -1005.348000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 -996.348000 84.005000 -1005.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 -996.348000 89.423000 -1005.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 -996.348000 98.036000 -1005.348000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 -996.348000 121.157000 -1005.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 -996.348000 145.115000 -1005.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 -996.348000 151.001000 -1005.348000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 -996.348000 156.320000 -1005.348000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -996.348000 159.253000 -1005.348000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1006.848000 83.285000 -1015.848000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 -1006.848000 89.099000 -1015.848000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 -1006.848000 93.401000 -1015.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 -1006.848000 98.477000 -1015.848000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 -1006.848000 103.121000 -1015.848000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 -1006.848000 105.974000 -1015.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 -1006.848000 111.320000 -1015.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 -1006.848000 115.604000 -1015.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 -1006.848000 123.857000 -1015.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 -1006.848000 136.007000 -1015.848000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 -1006.848000 141.794000 -1015.848000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 -1006.848000 144.665000 -1015.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 -1006.848000 147.464000 -1015.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 -1006.848000 153.251000 -1015.848000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -1006.848000 156.433000 -1015.848000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1017.348000 79.271000 -1026.348000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -1017.348000 85.094000 -1026.348000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -1017.348000 90.854000 -1026.348000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 -1017.348000 96.146000 -1026.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 -1017.348000 102.302000 -1026.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 -1017.348000 107.711000 -1026.348000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 -1017.348000 113.048000 -1026.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 -1017.348000 119.204000 -1026.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 -1017.348000 124.991000 -1026.348000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 -1017.348000 130.310000 -1026.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 -1017.348000 135.647000 -1026.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 -1017.348000 144.755000 -1026.348000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 -1017.348000 153.323000 -1026.348000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -1017.348000 156.333000 -1026.348000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1027.848000 82.160000 -1036.848000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 -1027.848000 85.067000 -1036.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 -1027.848000 89.297000 -1036.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 -1027.848000 94.616000 -1036.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 -1027.848000 98.747000 -1036.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 -1027.848000 106.055000 -1036.848000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 -1027.848000 109.700000 -1036.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 -1027.848000 115.055000 -1036.848000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 -1027.848000 118.601000 -1036.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 -1027.848000 124.010000 -1036.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 -1027.848000 128.042000 -1036.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 -1027.848000 135.998000 -1036.848000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 -1027.848000 141.785000 -1036.848000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 -1027.848000 144.656000 -1036.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 -1027.848000 147.554000 -1036.848000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 -1027.848000 153.341000 -1036.848000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -1027.848000 156.433000 -1036.848000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -1038.348000 79.271000 -1047.348000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -1038.348000 85.094000 -1047.348000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -1038.348000 90.854000 -1047.348000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 -1038.348000 93.743000 -1047.348000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -1053.200000 0 72.100000 -1053.200000 0 72.100000 -939.500000 0 72.000000 -939.500000 0 72.000000 -1053.200000 0
+eoFillPath subpath 1 160.500000 -1053.200000 0 160.600000 -1053.200000 0 160.600000 -939.500000 0 160.500000 -939.500000 0 160.500000 -1053.200000 0
+eoFillPath subpath 1 72.000000 -939.600000 0 160.600000 -939.600000 0 160.600000 -939.500000 0 72.000000 -939.500000 0 72.000000 -939.600000 0
+eoFillPath subpath 1 72.000000 -1053.200000 0 160.600000 -1053.200000 0 160.600000 -1053.100000 0 72.000000 -1053.100000 0 72.000000 -1053.200000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 5136.400000 0 169.600000 5136.400000 0 169.600000 5141.400000 0 76.900000 5141.400000 0 76.900000 5136.400000 0
+eoFillPath subpath 1 164.600000 5141.300000 0 169.600000 5141.300000 0 169.600000 5256.900000 0 164.600000 5256.900000 0 164.600000 5141.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 5141.400000 0 121.400000 5141.400000 0 121.400000 5261.800000 0 72.000000 5261.800000 0 72.000000 5141.400000 0
+saveState
+eoClipPath subpath 1 72.000000 5141.300000 0 164.600000 5141.300000 0 164.600000 5261.700000 0 72.000000 5261.700000 0 72.000000 5141.300000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -429110.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 5211.300000 0 93.700000 5211.300000 0 93.700000 5230.500000 0 72.000000 5230.500000 0 72.000000 5211.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 5211.300000 0 169.600000 5211.300000 0 169.600000 5230.500000 0 93.700000 5230.500000 0 93.700000 5211.300000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 5194.600000 0 93.700000 5194.600000 0 93.700000 5211.300000 0 72.000000 5211.300000 0 72.000000 5194.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 5194.600000 0 169.600000 5194.600000 0 169.600000 5211.300000 0 93.700000 5211.300000 0 93.700000 5194.600000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 5175.400000 0 93.700000 5175.400000 0 93.700000 5194.600000 0 72.000000 5194.600000 0 72.000000 5175.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 5175.400000 0 169.600000 5175.400000 0 169.600000 5194.600000 0 93.700000 5194.600000 0 93.700000 5175.400000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 5156.200000 0 93.700000 5156.200000 0 93.700000 5175.400000 0 72.000000 5175.400000 0 72.000000 5156.200000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 5156.200000 0 169.600000 5156.200000 0 169.600000 5175.400000 0 93.700000 5175.400000 0 93.700000 5156.200000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5257.452000 82.898000 5248.452000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 5257.452000 87.200000 5248.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 5257.452000 90.809000 5248.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 5257.452000 93.671000 5248.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 5257.452000 98.315000 5248.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 5257.452000 101.906000 5248.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 5257.452000 106.514000 5248.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 5257.452000 109.754000 5248.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 5257.452000 112.868000 5248.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 5257.452000 118.691000 5248.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 5257.452000 121.850000 5248.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 5257.452000 125.702000 5248.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 5257.452000 131.588000 5248.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 5257.452000 136.907000 5248.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 5257.452000 140.039000 5248.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 5257.452000 146.078000 5248.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 5257.452000 151.442000 5248.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 5257.452000 154.349000 5248.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 5257.452000 157.148000 5248.452000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 5257.452000 160.433000 5248.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5246.952000 84.095000 5237.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 5246.952000 89.468000 5237.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 5246.952000 94.580000 5237.952000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 5246.952000 97.631000 5237.952000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 5226.552000 104.443000 5217.552000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 5226.552000 109.060000 5217.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 5226.552000 113.398000 5217.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 5226.552000 119.194000 5217.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 5226.552000 124.612000 5217.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 5226.552000 127.465000 5217.552000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 5209.852000 101.176000 5200.852000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 5209.852000 104.074000 5200.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 5209.852000 109.420000 5200.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 5209.852000 114.442000 5200.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 5209.852000 120.202000 5200.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 5209.852000 123.811000 5200.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 5209.852000 129.121000 5200.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 5209.852000 134.899000 5200.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 5209.852000 139.516000 5200.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 5209.852000 143.107000 5200.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 5209.852000 148.417000 5200.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 5209.852000 151.270000 5200.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 5209.852000 157.093000 5200.852000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 5193.152000 103.048000 5184.152000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 5193.152000 108.421000 5184.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 5193.152000 113.443000 5184.152000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 5193.152000 118.852000 5184.152000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 5193.152000 124.702000 5184.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 5193.152000 130.021000 5184.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 5193.152000 135.079000 5184.152000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 5173.952000 104.407000 5164.952000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 5173.952000 109.816000 5164.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 5173.952000 115.594000 5164.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 5173.952000 121.354000 5164.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 5173.952000 125.692000 5164.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 5173.952000 128.563000 5164.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 5173.952000 133.954000 5164.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 5173.952000 139.786000 5164.952000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 5141.300000 0 72.100000 5141.300000 0 72.100000 5261.800000 0 72.000000 5261.800000 0 72.000000 5141.300000 0
+eoFillPath subpath 1 164.600000 5141.300000 0 164.700000 5141.300000 0 164.700000 5261.800000 0 164.600000 5261.800000 0 164.600000 5141.300000 0
+eoFillPath subpath 1 72.000000 5261.700000 0 164.700000 5261.700000 0 164.700000 5261.800000 0 72.000000 5261.800000 0 72.000000 5261.700000 0
+eoFillPath subpath 1 72.000000 5141.300000 0 164.700000 5141.300000 0 164.700000 5141.400000 0 72.000000 5141.400000 0 72.000000 5141.300000 0
+eoFillPath subpath 1 91.300000 5156.200000 0 93.700000 5156.200000 0 93.700000 5230.500000 0 91.300000 5230.500000 0 91.300000 5156.200000 0
+eoFillPath subpath 1 72.000000 5175.400000 0 169.600000 5175.400000 0 169.600000 5177.800000 0 72.000000 5177.800000 0 72.000000 5175.400000 0
+eoFillPath subpath 1 72.000000 5228.100000 0 169.600000 5228.100000 0 169.600000 5230.500000 0 72.000000 5230.500000 0 72.000000 5228.100000 0
+eoFillPath subpath 1 72.000000 5156.200000 0 169.600000 5156.200000 0 169.600000 5158.600000 0 72.000000 5158.600000 0 72.000000 5156.200000 0
+saveState
+eoClipPath subpath 1 108.000000 -2709.800000 0 150.800000 -2709.800000 0 150.800000 -2665.600000 0 108.000000 -2665.600000 0 108.000000 -2709.800000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 350180.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -3559.800000 0 499.600000 -3559.800000 0 499.600000 -3554.700000 0 186.800000 -3554.700000 0 186.800000 -3559.800000 0
+eoFillPath subpath 1 494.500000 -3554.800000 0 499.600000 -3554.800000 0 499.600000 -3366.400000 0 494.500000 -3366.400000 0 494.500000 -3554.800000 0
+saveState
+eoClipPath subpath 1 181.800000 -3554.700000 0 494.500000 -3554.700000 0 494.500000 -3361.400000 0 181.800000 -3361.400000 0 181.800000 -3554.700000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -3361.400000 0 494.500000 -3361.400000 0 494.500000 -3361.400000 0 181.700000 -3361.400000 0
+eoFillPath subpath 1 181.700000 -3361.400000 0 494.500000 -3361.400000 0 494.500000 -3362.100000 0 181.700000 -3362.100000 0 181.700000 -3361.400000 0
+eoFillPath subpath 1 181.700000 -3362.100000 0 494.500000 -3362.100000 0 494.500000 -3362.900000 0 181.700000 -3362.900000 0 181.700000 -3362.100000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -3362.900000 0 494.500000 -3362.900000 0 494.500000 -3363.600000 0 181.700000 -3363.600000 0 181.700000 -3362.900000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -3363.600000 0 494.500000 -3363.600000 0 494.500000 -3364.400000 0 181.700000 -3364.400000 0 181.700000 -3363.600000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -3364.400000 0 494.500000 -3364.400000 0 494.500000 -3365.100000 0 181.700000 -3365.100000 0 181.700000 -3364.400000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -3365.100000 0 494.500000 -3365.100000 0 494.500000 -3365.900000 0 181.700000 -3365.900000 0 181.700000 -3365.100000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -3365.900000 0 494.500000 -3365.900000 0 494.500000 -3366.700000 0 181.700000 -3366.700000 0 181.700000 -3365.900000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -3366.700000 0 494.500000 -3366.700000 0 494.500000 -3367.400000 0 181.700000 -3367.400000 0 181.700000 -3366.700000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -3367.400000 0 494.500000 -3367.400000 0 494.500000 -3368.200000 0 181.700000 -3368.200000 0 181.700000 -3367.400000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -3368.200000 0 494.500000 -3368.200000 0 494.500000 -3368.900000 0 181.700000 -3368.900000 0 181.700000 -3368.200000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -3368.900000 0 494.500000 -3368.900000 0 494.500000 -3369.700000 0 181.700000 -3369.700000 0 181.700000 -3368.900000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -3369.700000 0 494.500000 -3369.700000 0 494.500000 -3370.500000 0 181.700000 -3370.500000 0 181.700000 -3369.700000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -3370.500000 0 494.500000 -3370.500000 0 494.500000 -3371.200000 0 181.700000 -3371.200000 0 181.700000 -3370.500000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -3371.200000 0 494.500000 -3371.200000 0 494.500000 -3372.000000 0 181.700000 -3372.000000 0 181.700000 -3371.200000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -3372.000000 0 494.500000 -3372.000000 0 494.500000 -3372.700000 0 181.700000 -3372.700000 0 181.700000 -3372.000000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -3372.700000 0 494.500000 -3372.700000 0 494.500000 -3373.500000 0 181.700000 -3373.500000 0 181.700000 -3372.700000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -3373.500000 0 494.500000 -3373.500000 0 494.500000 -3374.200000 0 181.700000 -3374.200000 0 181.700000 -3373.500000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -3374.200000 0 494.500000 -3374.200000 0 494.500000 -3375.000000 0 181.700000 -3375.000000 0 181.700000 -3374.200000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -3375.000000 0 494.500000 -3375.000000 0 494.500000 -3375.800000 0 181.700000 -3375.800000 0 181.700000 -3375.000000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -3375.800000 0 494.500000 -3375.800000 0 494.500000 -3376.500000 0 181.700000 -3376.500000 0 181.700000 -3375.800000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -3376.500000 0 494.500000 -3376.500000 0 494.500000 -3377.300000 0 181.700000 -3377.300000 0 181.700000 -3376.500000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -3377.300000 0 494.500000 -3377.300000 0 494.500000 -3378.000000 0 181.700000 -3378.000000 0 181.700000 -3377.300000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -3378.000000 0 494.500000 -3378.000000 0 494.500000 -3378.800000 0 181.700000 -3378.800000 0 181.700000 -3378.000000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -3378.800000 0 494.500000 -3378.800000 0 494.500000 -3379.500000 0 181.700000 -3379.500000 0 181.700000 -3378.800000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -3379.500000 0 494.500000 -3379.500000 0 494.500000 -3380.300000 0 181.700000 -3380.300000 0 181.700000 -3379.500000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -3380.300000 0 494.500000 -3380.300000 0 494.500000 -3381.100000 0 181.700000 -3381.100000 0 181.700000 -3380.300000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -3381.100000 0 494.500000 -3381.100000 0 494.500000 -3381.800000 0 181.700000 -3381.800000 0 181.700000 -3381.100000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -3381.800000 0 494.500000 -3381.800000 0 494.500000 -3382.600000 0 181.700000 -3382.600000 0 181.700000 -3381.800000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -3382.600000 0 494.500000 -3382.600000 0 494.500000 -3383.300000 0 181.700000 -3383.300000 0 181.700000 -3382.600000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -3383.300000 0 494.500000 -3383.300000 0 494.500000 -3384.100000 0 181.700000 -3384.100000 0 181.700000 -3383.300000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -3384.100000 0 494.500000 -3384.100000 0 494.500000 -3384.900000 0 181.700000 -3384.900000 0 181.700000 -3384.100000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -3384.900000 0 494.500000 -3384.900000 0 494.500000 -3385.600000 0 181.700000 -3385.600000 0 181.700000 -3384.900000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -3385.600000 0 494.500000 -3385.600000 0 494.500000 -3386.400000 0 181.700000 -3386.400000 0 181.700000 -3385.600000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -3386.400000 0 494.500000 -3386.400000 0 494.500000 -3387.100000 0 181.700000 -3387.100000 0 181.700000 -3386.400000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -3387.100000 0 494.500000 -3387.100000 0 494.500000 -3387.900000 0 181.700000 -3387.900000 0 181.700000 -3387.100000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -3387.900000 0 494.500000 -3387.900000 0 494.500000 -3388.600000 0 181.700000 -3388.600000 0 181.700000 -3387.900000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -3388.600000 0 494.500000 -3388.600000 0 494.500000 -3389.400000 0 181.700000 -3389.400000 0 181.700000 -3388.600000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -3389.400000 0 494.500000 -3389.400000 0 494.500000 -3390.200000 0 181.700000 -3390.200000 0 181.700000 -3389.400000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -3390.200000 0 494.500000 -3390.200000 0 494.500000 -3390.900000 0 181.700000 -3390.900000 0 181.700000 -3390.200000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -3390.900000 0 494.500000 -3390.900000 0 494.500000 -3391.700000 0 181.700000 -3391.700000 0 181.700000 -3390.900000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -3391.700000 0 494.500000 -3391.700000 0 494.500000 -3392.400000 0 181.700000 -3392.400000 0 181.700000 -3391.700000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -3392.400000 0 494.500000 -3392.400000 0 494.500000 -3393.200000 0 181.700000 -3393.200000 0 181.700000 -3392.400000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -3393.200000 0 494.500000 -3393.200000 0 494.500000 -3393.900000 0 181.700000 -3393.900000 0 181.700000 -3393.200000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -3393.900000 0 494.500000 -3393.900000 0 494.500000 -3394.700000 0 181.700000 -3394.700000 0 181.700000 -3393.900000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -3394.700000 0 494.500000 -3394.700000 0 494.500000 -3395.500000 0 181.700000 -3395.500000 0 181.700000 -3394.700000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -3395.500000 0 494.500000 -3395.500000 0 494.500000 -3396.200000 0 181.700000 -3396.200000 0 181.700000 -3395.500000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -3396.200000 0 494.500000 -3396.200000 0 494.500000 -3397.000000 0 181.700000 -3397.000000 0 181.700000 -3396.200000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -3397.000000 0 494.500000 -3397.000000 0 494.500000 -3397.700000 0 181.700000 -3397.700000 0 181.700000 -3397.000000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -3397.700000 0 494.500000 -3397.700000 0 494.500000 -3398.500000 0 181.700000 -3398.500000 0 181.700000 -3397.700000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -3398.500000 0 494.500000 -3398.500000 0 494.500000 -3399.300000 0 181.700000 -3399.300000 0 181.700000 -3398.500000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -3399.300000 0 494.500000 -3399.300000 0 494.500000 -3400.000000 0 181.700000 -3400.000000 0 181.700000 -3399.300000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -3400.000000 0 494.500000 -3400.000000 0 494.500000 -3400.800000 0 181.700000 -3400.800000 0 181.700000 -3400.000000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -3400.800000 0 494.500000 -3400.800000 0 494.500000 -3401.500000 0 181.700000 -3401.500000 0 181.700000 -3400.800000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -3401.500000 0 494.500000 -3401.500000 0 494.500000 -3402.300000 0 181.700000 -3402.300000 0 181.700000 -3401.500000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -3402.300000 0 494.500000 -3402.300000 0 494.500000 -3403.100000 0 181.700000 -3403.100000 0 181.700000 -3402.300000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -3403.100000 0 494.500000 -3403.100000 0 494.500000 -3403.800000 0 181.700000 -3403.800000 0 181.700000 -3403.100000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -3403.800000 0 494.500000 -3403.800000 0 494.500000 -3404.600000 0 181.700000 -3404.600000 0 181.700000 -3403.800000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -3404.600000 0 494.500000 -3404.600000 0 494.500000 -3405.300000 0 181.700000 -3405.300000 0 181.700000 -3404.600000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -3405.300000 0 494.500000 -3405.300000 0 494.500000 -3406.100000 0 181.700000 -3406.100000 0 181.700000 -3405.300000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -3406.100000 0 494.500000 -3406.100000 0 494.500000 -3406.800000 0 181.700000 -3406.800000 0 181.700000 -3406.100000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -3406.800000 0 494.500000 -3406.800000 0 494.500000 -3407.600000 0 181.700000 -3407.600000 0 181.700000 -3406.800000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -3407.600000 0 494.500000 -3407.600000 0 494.500000 -3408.400000 0 181.700000 -3408.400000 0 181.700000 -3407.600000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -3408.400000 0 494.500000 -3408.400000 0 494.500000 -3409.100000 0 181.700000 -3409.100000 0 181.700000 -3408.400000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -3409.100000 0 494.500000 -3409.100000 0 494.500000 -3409.900000 0 181.700000 -3409.900000 0 181.700000 -3409.100000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -3409.900000 0 494.500000 -3409.900000 0 494.500000 -3410.600000 0 181.700000 -3410.600000 0 181.700000 -3409.900000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -3410.600000 0 494.500000 -3410.600000 0 494.500000 -3411.400000 0 181.700000 -3411.400000 0 181.700000 -3410.600000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -3411.400000 0 494.500000 -3411.400000 0 494.500000 -3412.200000 0 181.700000 -3412.200000 0 181.700000 -3411.400000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -3412.200000 0 494.500000 -3412.200000 0 494.500000 -3412.900000 0 181.700000 -3412.900000 0 181.700000 -3412.200000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -3412.900000 0 494.500000 -3412.900000 0 494.500000 -3413.700000 0 181.700000 -3413.700000 0 181.700000 -3412.900000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -3413.700000 0 494.500000 -3413.700000 0 494.500000 -3414.400000 0 181.700000 -3414.400000 0 181.700000 -3413.700000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -3414.400000 0 494.500000 -3414.400000 0 494.500000 -3415.200000 0 181.700000 -3415.200000 0 181.700000 -3414.400000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -3415.200000 0 494.500000 -3415.200000 0 494.500000 -3416.000000 0 181.700000 -3416.000000 0 181.700000 -3415.200000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -3416.000000 0 494.500000 -3416.000000 0 494.500000 -3416.700000 0 181.700000 -3416.700000 0 181.700000 -3416.000000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -3416.700000 0 494.500000 -3416.700000 0 494.500000 -3417.500000 0 181.700000 -3417.500000 0 181.700000 -3416.700000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -3417.500000 0 494.500000 -3417.500000 0 494.500000 -3418.200000 0 181.700000 -3418.200000 0 181.700000 -3417.500000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -3418.200000 0 494.500000 -3418.200000 0 494.500000 -3419.000000 0 181.700000 -3419.000000 0 181.700000 -3418.200000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -3419.000000 0 494.500000 -3419.000000 0 494.500000 -3419.700000 0 181.700000 -3419.700000 0 181.700000 -3419.000000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -3419.700000 0 494.500000 -3419.700000 0 494.500000 -3420.500000 0 181.700000 -3420.500000 0 181.700000 -3419.700000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -3420.500000 0 494.500000 -3420.500000 0 494.500000 -3421.300000 0 181.700000 -3421.300000 0 181.700000 -3420.500000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -3421.300000 0 494.500000 -3421.300000 0 494.500000 -3422.000000 0 181.700000 -3422.000000 0 181.700000 -3421.300000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -3422.000000 0 494.500000 -3422.000000 0 494.500000 -3422.800000 0 181.700000 -3422.800000 0 181.700000 -3422.000000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -3422.800000 0 494.500000 -3422.800000 0 494.500000 -3423.500000 0 181.700000 -3423.500000 0 181.700000 -3422.800000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -3423.500000 0 494.500000 -3423.500000 0 494.500000 -3424.300000 0 181.700000 -3424.300000 0 181.700000 -3423.500000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -3424.300000 0 494.500000 -3424.300000 0 494.500000 -3425.100000 0 181.700000 -3425.100000 0 181.700000 -3424.300000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -3425.100000 0 494.500000 -3425.100000 0 494.500000 -3425.800000 0 181.700000 -3425.800000 0 181.700000 -3425.100000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -3425.800000 0 494.500000 -3425.800000 0 494.500000 -3426.600000 0 181.700000 -3426.600000 0 181.700000 -3425.800000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -3426.600000 0 494.500000 -3426.600000 0 494.500000 -3427.300000 0 181.700000 -3427.300000 0 181.700000 -3426.600000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -3427.300000 0 494.500000 -3427.300000 0 494.500000 -3428.100000 0 181.700000 -3428.100000 0 181.700000 -3427.300000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -3428.100000 0 494.500000 -3428.100000 0 494.500000 -3428.900000 0 181.700000 -3428.900000 0 181.700000 -3428.100000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -3428.900000 0 494.500000 -3428.900000 0 494.500000 -3429.600000 0 181.700000 -3429.600000 0 181.700000 -3428.900000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -3429.600000 0 494.500000 -3429.600000 0 494.500000 -3430.400000 0 181.700000 -3430.400000 0 181.700000 -3429.600000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -3430.400000 0 494.500000 -3430.400000 0 494.500000 -3431.100000 0 181.700000 -3431.100000 0 181.700000 -3430.400000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -3431.100000 0 494.500000 -3431.100000 0 494.500000 -3431.900000 0 181.700000 -3431.900000 0 181.700000 -3431.100000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -3431.900000 0 494.500000 -3431.900000 0 494.500000 -3432.600000 0 181.700000 -3432.600000 0 181.700000 -3431.900000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -3432.600000 0 494.500000 -3432.600000 0 494.500000 -3433.400000 0 181.700000 -3433.400000 0 181.700000 -3432.600000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -3433.400000 0 494.500000 -3433.400000 0 494.500000 -3434.200000 0 181.700000 -3434.200000 0 181.700000 -3433.400000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -3434.200000 0 494.500000 -3434.200000 0 494.500000 -3434.900000 0 181.700000 -3434.900000 0 181.700000 -3434.200000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -3434.900000 0 494.500000 -3434.900000 0 494.500000 -3435.700000 0 181.700000 -3435.700000 0 181.700000 -3434.900000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -3435.700000 0 494.500000 -3435.700000 0 494.500000 -3436.400000 0 181.700000 -3436.400000 0 181.700000 -3435.700000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -3436.400000 0 494.500000 -3436.400000 0 494.500000 -3437.200000 0 181.700000 -3437.200000 0 181.700000 -3436.400000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -3437.200000 0 494.500000 -3437.200000 0 494.500000 -3438.000000 0 181.700000 -3438.000000 0 181.700000 -3437.200000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -3438.000000 0 494.500000 -3438.000000 0 494.500000 -3438.700000 0 181.700000 -3438.700000 0 181.700000 -3438.000000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -3438.700000 0 494.500000 -3438.700000 0 494.500000 -3439.500000 0 181.700000 -3439.500000 0 181.700000 -3438.700000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -3439.500000 0 494.500000 -3439.500000 0 494.500000 -3440.200000 0 181.700000 -3440.200000 0 181.700000 -3439.500000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -3440.200000 0 494.500000 -3440.200000 0 494.500000 -3441.000000 0 181.700000 -3441.000000 0 181.700000 -3440.200000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -3441.000000 0 494.500000 -3441.000000 0 494.500000 -3441.800000 0 181.700000 -3441.800000 0 181.700000 -3441.000000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -3441.800000 0 494.500000 -3441.800000 0 494.500000 -3442.500000 0 181.700000 -3442.500000 0 181.700000 -3441.800000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -3442.500000 0 494.500000 -3442.500000 0 494.500000 -3443.300000 0 181.700000 -3443.300000 0 181.700000 -3442.500000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -3443.300000 0 494.500000 -3443.300000 0 494.500000 -3444.000000 0 181.700000 -3444.000000 0 181.700000 -3443.300000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -3444.000000 0 494.500000 -3444.000000 0 494.500000 -3444.800000 0 181.700000 -3444.800000 0 181.700000 -3444.000000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -3444.800000 0 494.500000 -3444.800000 0 494.500000 -3445.500000 0 181.700000 -3445.500000 0 181.700000 -3444.800000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -3445.500000 0 494.500000 -3445.500000 0 494.500000 -3446.300000 0 181.700000 -3446.300000 0 181.700000 -3445.500000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -3446.300000 0 494.500000 -3446.300000 0 494.500000 -3447.100000 0 181.700000 -3447.100000 0 181.700000 -3446.300000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -3447.100000 0 494.500000 -3447.100000 0 494.500000 -3447.800000 0 181.700000 -3447.800000 0 181.700000 -3447.100000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -3447.800000 0 494.500000 -3447.800000 0 494.500000 -3448.600000 0 181.700000 -3448.600000 0 181.700000 -3447.800000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -3448.600000 0 494.500000 -3448.600000 0 494.500000 -3449.300000 0 181.700000 -3449.300000 0 181.700000 -3448.600000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -3449.300000 0 494.500000 -3449.300000 0 494.500000 -3450.100000 0 181.700000 -3450.100000 0 181.700000 -3449.300000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -3450.100000 0 494.500000 -3450.100000 0 494.500000 -3450.900000 0 181.700000 -3450.900000 0 181.700000 -3450.100000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -3450.900000 0 494.500000 -3450.900000 0 494.500000 -3451.600000 0 181.700000 -3451.600000 0 181.700000 -3450.900000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -3451.600000 0 494.500000 -3451.600000 0 494.500000 -3452.400000 0 181.700000 -3452.400000 0 181.700000 -3451.600000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -3452.400000 0 494.500000 -3452.400000 0 494.500000 -3453.100000 0 181.700000 -3453.100000 0 181.700000 -3452.400000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -3453.100000 0 494.500000 -3453.100000 0 494.500000 -3453.900000 0 181.700000 -3453.900000 0 181.700000 -3453.100000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -3453.900000 0 494.500000 -3453.900000 0 494.500000 -3454.700000 0 181.700000 -3454.700000 0 181.700000 -3453.900000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -3454.700000 0 494.500000 -3454.700000 0 494.500000 -3455.400000 0 181.700000 -3455.400000 0 181.700000 -3454.700000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -3455.400000 0 494.500000 -3455.400000 0 494.500000 -3456.200000 0 181.700000 -3456.200000 0 181.700000 -3455.400000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -3456.200000 0 494.500000 -3456.200000 0 494.500000 -3456.900000 0 181.700000 -3456.900000 0 181.700000 -3456.200000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -3456.900000 0 494.500000 -3456.900000 0 494.500000 -3457.700000 0 181.700000 -3457.700000 0 181.700000 -3456.900000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -3457.700000 0 494.500000 -3457.700000 0 494.500000 -3458.400000 0 181.700000 -3458.400000 0 181.700000 -3457.700000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -3458.400000 0 494.500000 -3458.400000 0 494.500000 -3459.200000 0 181.700000 -3459.200000 0 181.700000 -3458.400000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -3459.200000 0 494.500000 -3459.200000 0 494.500000 -3460.000000 0 181.700000 -3460.000000 0 181.700000 -3459.200000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -3460.000000 0 494.500000 -3460.000000 0 494.500000 -3460.700000 0 181.700000 -3460.700000 0 181.700000 -3460.000000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -3460.700000 0 494.500000 -3460.700000 0 494.500000 -3461.500000 0 181.700000 -3461.500000 0 181.700000 -3460.700000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -3461.500000 0 494.500000 -3461.500000 0 494.500000 -3462.200000 0 181.700000 -3462.200000 0 181.700000 -3461.500000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -3462.200000 0 494.500000 -3462.200000 0 494.500000 -3463.000000 0 181.700000 -3463.000000 0 181.700000 -3462.200000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -3463.000000 0 494.500000 -3463.000000 0 494.500000 -3463.800000 0 181.700000 -3463.800000 0 181.700000 -3463.000000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -3463.800000 0 494.500000 -3463.800000 0 494.500000 -3464.500000 0 181.700000 -3464.500000 0 181.700000 -3463.800000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -3464.500000 0 494.500000 -3464.500000 0 494.500000 -3465.300000 0 181.700000 -3465.300000 0 181.700000 -3464.500000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -3465.300000 0 494.500000 -3465.300000 0 494.500000 -3466.000000 0 181.700000 -3466.000000 0 181.700000 -3465.300000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -3466.000000 0 494.500000 -3466.000000 0 494.500000 -3466.800000 0 181.700000 -3466.800000 0 181.700000 -3466.000000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -3466.800000 0 494.500000 -3466.800000 0 494.500000 -3467.600000 0 181.700000 -3467.600000 0 181.700000 -3466.800000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -3467.600000 0 494.500000 -3467.600000 0 494.500000 -3468.300000 0 181.700000 -3468.300000 0 181.700000 -3467.600000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -3468.300000 0 494.500000 -3468.300000 0 494.500000 -3469.100000 0 181.700000 -3469.100000 0 181.700000 -3468.300000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -3469.100000 0 494.500000 -3469.100000 0 494.500000 -3469.800000 0 181.700000 -3469.800000 0 181.700000 -3469.100000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -3469.800000 0 494.500000 -3469.800000 0 494.500000 -3470.600000 0 181.700000 -3470.600000 0 181.700000 -3469.800000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -3470.600000 0 494.500000 -3470.600000 0 494.500000 -3471.300000 0 181.700000 -3471.300000 0 181.700000 -3470.600000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -3471.300000 0 494.500000 -3471.300000 0 494.500000 -3472.100000 0 181.700000 -3472.100000 0 181.700000 -3471.300000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -3472.100000 0 494.500000 -3472.100000 0 494.500000 -3472.900000 0 181.700000 -3472.900000 0 181.700000 -3472.100000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -3472.900000 0 494.500000 -3472.900000 0 494.500000 -3473.600000 0 181.700000 -3473.600000 0 181.700000 -3472.900000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -3473.600000 0 494.500000 -3473.600000 0 494.500000 -3474.400000 0 181.700000 -3474.400000 0 181.700000 -3473.600000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -3474.400000 0 494.500000 -3474.400000 0 494.500000 -3475.100000 0 181.700000 -3475.100000 0 181.700000 -3474.400000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -3475.100000 0 494.500000 -3475.100000 0 494.500000 -3475.900000 0 181.700000 -3475.900000 0 181.700000 -3475.100000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -3475.900000 0 494.500000 -3475.900000 0 494.500000 -3476.700000 0 181.700000 -3476.700000 0 181.700000 -3475.900000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -3476.700000 0 494.500000 -3476.700000 0 494.500000 -3477.400000 0 181.700000 -3477.400000 0 181.700000 -3476.700000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -3477.400000 0 494.500000 -3477.400000 0 494.500000 -3478.200000 0 181.700000 -3478.200000 0 181.700000 -3477.400000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -3478.200000 0 494.500000 -3478.200000 0 494.500000 -3478.900000 0 181.700000 -3478.900000 0 181.700000 -3478.200000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -3478.900000 0 494.500000 -3478.900000 0 494.500000 -3479.700000 0 181.700000 -3479.700000 0 181.700000 -3478.900000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -3479.700000 0 494.500000 -3479.700000 0 494.500000 -3480.500000 0 181.700000 -3480.500000 0 181.700000 -3479.700000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -3480.500000 0 494.500000 -3480.500000 0 494.500000 -3481.200000 0 181.700000 -3481.200000 0 181.700000 -3480.500000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -3481.200000 0 494.500000 -3481.200000 0 494.500000 -3482.000000 0 181.700000 -3482.000000 0 181.700000 -3481.200000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -3482.000000 0 494.500000 -3482.000000 0 494.500000 -3482.700000 0 181.700000 -3482.700000 0 181.700000 -3482.000000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -3482.700000 0 494.500000 -3482.700000 0 494.500000 -3483.500000 0 181.700000 -3483.500000 0 181.700000 -3482.700000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -3483.500000 0 494.500000 -3483.500000 0 494.500000 -3484.200000 0 181.700000 -3484.200000 0 181.700000 -3483.500000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -3484.200000 0 494.500000 -3484.200000 0 494.500000 -3485.000000 0 181.700000 -3485.000000 0 181.700000 -3484.200000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -3485.000000 0 494.500000 -3485.000000 0 494.500000 -3485.800000 0 181.700000 -3485.800000 0 181.700000 -3485.000000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -3485.800000 0 494.500000 -3485.800000 0 494.500000 -3486.500000 0 181.700000 -3486.500000 0 181.700000 -3485.800000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -3486.500000 0 494.500000 -3486.500000 0 494.500000 -3487.300000 0 181.700000 -3487.300000 0 181.700000 -3486.500000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -3487.300000 0 494.500000 -3487.300000 0 494.500000 -3488.000000 0 181.700000 -3488.000000 0 181.700000 -3487.300000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -3488.000000 0 494.500000 -3488.000000 0 494.500000 -3488.800000 0 181.700000 -3488.800000 0 181.700000 -3488.000000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -3488.800000 0 494.500000 -3488.800000 0 494.500000 -3489.600000 0 181.700000 -3489.600000 0 181.700000 -3488.800000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -3489.600000 0 494.500000 -3489.600000 0 494.500000 -3490.300000 0 181.700000 -3490.300000 0 181.700000 -3489.600000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -3490.300000 0 494.500000 -3490.300000 0 494.500000 -3491.100000 0 181.700000 -3491.100000 0 181.700000 -3490.300000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -3491.100000 0 494.500000 -3491.100000 0 494.500000 -3491.800000 0 181.700000 -3491.800000 0 181.700000 -3491.100000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -3491.800000 0 494.500000 -3491.800000 0 494.500000 -3492.600000 0 181.700000 -3492.600000 0 181.700000 -3491.800000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -3492.600000 0 494.500000 -3492.600000 0 494.500000 -3493.400000 0 181.700000 -3493.400000 0 181.700000 -3492.600000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -3493.400000 0 494.500000 -3493.400000 0 494.500000 -3494.100000 0 181.700000 -3494.100000 0 181.700000 -3493.400000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -3494.100000 0 494.500000 -3494.100000 0 494.500000 -3494.900000 0 181.700000 -3494.900000 0 181.700000 -3494.100000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -3494.900000 0 494.500000 -3494.900000 0 494.500000 -3495.600000 0 181.700000 -3495.600000 0 181.700000 -3494.900000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -3495.600000 0 494.500000 -3495.600000 0 494.500000 -3496.400000 0 181.700000 -3496.400000 0 181.700000 -3495.600000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -3496.400000 0 494.500000 -3496.400000 0 494.500000 -3497.100000 0 181.700000 -3497.100000 0 181.700000 -3496.400000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -3497.100000 0 494.500000 -3497.100000 0 494.500000 -3497.900000 0 181.700000 -3497.900000 0 181.700000 -3497.100000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -3497.900000 0 494.500000 -3497.900000 0 494.500000 -3498.700000 0 181.700000 -3498.700000 0 181.700000 -3497.900000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -3498.700000 0 494.500000 -3498.700000 0 494.500000 -3499.400000 0 181.700000 -3499.400000 0 181.700000 -3498.700000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -3499.400000 0 494.500000 -3499.400000 0 494.500000 -3500.200000 0 181.700000 -3500.200000 0 181.700000 -3499.400000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -3500.200000 0 494.500000 -3500.200000 0 494.500000 -3500.900000 0 181.700000 -3500.900000 0 181.700000 -3500.200000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -3500.900000 0 494.500000 -3500.900000 0 494.500000 -3501.700000 0 181.700000 -3501.700000 0 181.700000 -3500.900000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -3501.700000 0 494.500000 -3501.700000 0 494.500000 -3502.500000 0 181.700000 -3502.500000 0 181.700000 -3501.700000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -3502.500000 0 494.500000 -3502.500000 0 494.500000 -3503.200000 0 181.700000 -3503.200000 0 181.700000 -3502.500000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -3503.200000 0 494.500000 -3503.200000 0 494.500000 -3504.000000 0 181.700000 -3504.000000 0 181.700000 -3503.200000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -3504.000000 0 494.500000 -3504.000000 0 494.500000 -3504.700000 0 181.700000 -3504.700000 0 181.700000 -3504.000000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -3504.700000 0 494.500000 -3504.700000 0 494.500000 -3505.500000 0 181.700000 -3505.500000 0 181.700000 -3504.700000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -3505.500000 0 494.500000 -3505.500000 0 494.500000 -3506.300000 0 181.700000 -3506.300000 0 181.700000 -3505.500000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -3506.300000 0 494.500000 -3506.300000 0 494.500000 -3507.000000 0 181.700000 -3507.000000 0 181.700000 -3506.300000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -3507.000000 0 494.500000 -3507.000000 0 494.500000 -3507.800000 0 181.700000 -3507.800000 0 181.700000 -3507.000000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -3507.800000 0 494.500000 -3507.800000 0 494.500000 -3508.500000 0 181.700000 -3508.500000 0 181.700000 -3507.800000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -3508.500000 0 494.500000 -3508.500000 0 494.500000 -3509.300000 0 181.700000 -3509.300000 0 181.700000 -3508.500000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -3509.300000 0 494.500000 -3509.300000 0 494.500000 -3510.000000 0 181.700000 -3510.000000 0 181.700000 -3509.300000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -3510.000000 0 494.500000 -3510.000000 0 494.500000 -3510.800000 0 181.700000 -3510.800000 0 181.700000 -3510.000000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -3510.800000 0 494.500000 -3510.800000 0 494.500000 -3511.600000 0 181.700000 -3511.600000 0 181.700000 -3510.800000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -3511.600000 0 494.500000 -3511.600000 0 494.500000 -3512.300000 0 181.700000 -3512.300000 0 181.700000 -3511.600000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -3512.300000 0 494.500000 -3512.300000 0 494.500000 -3513.100000 0 181.700000 -3513.100000 0 181.700000 -3512.300000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -3513.100000 0 494.500000 -3513.100000 0 494.500000 -3513.800000 0 181.700000 -3513.800000 0 181.700000 -3513.100000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -3513.800000 0 494.500000 -3513.800000 0 494.500000 -3514.600000 0 181.700000 -3514.600000 0 181.700000 -3513.800000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -3514.600000 0 494.500000 -3514.600000 0 494.500000 -3515.400000 0 181.700000 -3515.400000 0 181.700000 -3514.600000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -3515.400000 0 494.500000 -3515.400000 0 494.500000 -3516.100000 0 181.700000 -3516.100000 0 181.700000 -3515.400000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -3516.100000 0 494.500000 -3516.100000 0 494.500000 -3516.900000 0 181.700000 -3516.900000 0 181.700000 -3516.100000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -3516.900000 0 494.500000 -3516.900000 0 494.500000 -3517.600000 0 181.700000 -3517.600000 0 181.700000 -3516.900000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -3517.600000 0 494.500000 -3517.600000 0 494.500000 -3518.400000 0 181.700000 -3518.400000 0 181.700000 -3517.600000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -3518.400000 0 494.500000 -3518.400000 0 494.500000 -3519.200000 0 181.700000 -3519.200000 0 181.700000 -3518.400000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -3519.200000 0 494.500000 -3519.200000 0 494.500000 -3519.900000 0 181.700000 -3519.900000 0 181.700000 -3519.200000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -3519.900000 0 494.500000 -3519.900000 0 494.500000 -3520.700000 0 181.700000 -3520.700000 0 181.700000 -3519.900000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -3520.700000 0 494.500000 -3520.700000 0 494.500000 -3521.400000 0 181.700000 -3521.400000 0 181.700000 -3520.700000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -3521.400000 0 494.500000 -3521.400000 0 494.500000 -3522.200000 0 181.700000 -3522.200000 0 181.700000 -3521.400000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -3522.200000 0 494.500000 -3522.200000 0 494.500000 -3522.900000 0 181.700000 -3522.900000 0 181.700000 -3522.200000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -3522.900000 0 494.500000 -3522.900000 0 494.500000 -3523.700000 0 181.700000 -3523.700000 0 181.700000 -3522.900000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -3523.700000 0 494.500000 -3523.700000 0 494.500000 -3524.500000 0 181.700000 -3524.500000 0 181.700000 -3523.700000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -3524.500000 0 494.500000 -3524.500000 0 494.500000 -3525.200000 0 181.700000 -3525.200000 0 181.700000 -3524.500000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -3525.200000 0 494.500000 -3525.200000 0 494.500000 -3526.000000 0 181.700000 -3526.000000 0 181.700000 -3525.200000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -3526.000000 0 494.500000 -3526.000000 0 494.500000 -3526.700000 0 181.700000 -3526.700000 0 181.700000 -3526.000000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -3526.700000 0 494.500000 -3526.700000 0 494.500000 -3527.500000 0 181.700000 -3527.500000 0 181.700000 -3526.700000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -3527.500000 0 494.500000 -3527.500000 0 494.500000 -3528.300000 0 181.700000 -3528.300000 0 181.700000 -3527.500000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -3528.300000 0 494.500000 -3528.300000 0 494.500000 -3529.000000 0 181.700000 -3529.000000 0 181.700000 -3528.300000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -3529.000000 0 494.500000 -3529.000000 0 494.500000 -3529.800000 0 181.700000 -3529.800000 0 181.700000 -3529.000000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -3529.800000 0 494.500000 -3529.800000 0 494.500000 -3530.500000 0 181.700000 -3530.500000 0 181.700000 -3529.800000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -3530.500000 0 494.500000 -3530.500000 0 494.500000 -3531.300000 0 181.700000 -3531.300000 0 181.700000 -3530.500000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -3531.300000 0 494.500000 -3531.300000 0 494.500000 -3532.100000 0 181.700000 -3532.100000 0 181.700000 -3531.300000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -3532.100000 0 494.500000 -3532.100000 0 494.500000 -3532.800000 0 181.700000 -3532.800000 0 181.700000 -3532.100000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -3532.800000 0 494.500000 -3532.800000 0 494.500000 -3533.600000 0 181.700000 -3533.600000 0 181.700000 -3532.800000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -3533.600000 0 494.500000 -3533.600000 0 494.500000 -3534.300000 0 181.700000 -3534.300000 0 181.700000 -3533.600000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -3534.300000 0 494.500000 -3534.300000 0 494.500000 -3535.100000 0 181.700000 -3535.100000 0 181.700000 -3534.300000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -3535.100000 0 494.500000 -3535.100000 0 494.500000 -3535.800000 0 181.700000 -3535.800000 0 181.700000 -3535.100000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -3535.800000 0 494.500000 -3535.800000 0 494.500000 -3536.600000 0 181.700000 -3536.600000 0 181.700000 -3535.800000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -3536.600000 0 494.500000 -3536.600000 0 494.500000 -3537.400000 0 181.700000 -3537.400000 0 181.700000 -3536.600000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -3537.400000 0 494.500000 -3537.400000 0 494.500000 -3538.100000 0 181.700000 -3538.100000 0 181.700000 -3537.400000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -3538.100000 0 494.500000 -3538.100000 0 494.500000 -3538.900000 0 181.700000 -3538.900000 0 181.700000 -3538.100000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -3538.900000 0 494.500000 -3538.900000 0 494.500000 -3539.600000 0 181.700000 -3539.600000 0 181.700000 -3538.900000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -3539.600000 0 494.500000 -3539.600000 0 494.500000 -3540.400000 0 181.700000 -3540.400000 0 181.700000 -3539.600000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -3540.400000 0 494.500000 -3540.400000 0 494.500000 -3541.200000 0 181.700000 -3541.200000 0 181.700000 -3540.400000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -3541.200000 0 494.500000 -3541.200000 0 494.500000 -3541.900000 0 181.700000 -3541.900000 0 181.700000 -3541.200000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -3541.900000 0 494.500000 -3541.900000 0 494.500000 -3542.700000 0 181.700000 -3542.700000 0 181.700000 -3541.900000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -3542.700000 0 494.500000 -3542.700000 0 494.500000 -3543.400000 0 181.700000 -3543.400000 0 181.700000 -3542.700000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -3543.400000 0 494.500000 -3543.400000 0 494.500000 -3544.200000 0 181.700000 -3544.200000 0 181.700000 -3543.400000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -3544.200000 0 494.500000 -3544.200000 0 494.500000 -3545.000000 0 181.700000 -3545.000000 0 181.700000 -3544.200000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -3545.000000 0 494.500000 -3545.000000 0 494.500000 -3545.700000 0 181.700000 -3545.700000 0 181.700000 -3545.000000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -3545.700000 0 494.500000 -3545.700000 0 494.500000 -3546.500000 0 181.700000 -3546.500000 0 181.700000 -3545.700000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -3546.500000 0 494.500000 -3546.500000 0 494.500000 -3547.200000 0 181.700000 -3547.200000 0 181.700000 -3546.500000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -3547.200000 0 494.500000 -3547.200000 0 494.500000 -3548.000000 0 181.700000 -3548.000000 0 181.700000 -3547.200000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -3548.000000 0 494.500000 -3548.000000 0 494.500000 -3548.700000 0 181.700000 -3548.700000 0 181.700000 -3548.000000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -3548.700000 0 494.500000 -3548.700000 0 494.500000 -3549.500000 0 181.700000 -3549.500000 0 181.700000 -3548.700000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -3549.500000 0 494.500000 -3549.500000 0 494.500000 -3550.300000 0 181.700000 -3550.300000 0 181.700000 -3549.500000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -3550.300000 0 494.500000 -3550.300000 0 494.500000 -3551.000000 0 181.700000 -3551.000000 0 181.700000 -3550.300000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -3551.000000 0 494.500000 -3551.000000 0 494.500000 -3551.800000 0 181.700000 -3551.800000 0 181.700000 -3551.000000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -3551.800000 0 494.500000 -3551.800000 0 494.500000 -3552.500000 0 181.700000 -3552.500000 0 181.700000 -3551.800000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -3552.500000 0 494.500000 -3552.500000 0 494.500000 -3553.300000 0 181.700000 -3553.300000 0 181.700000 -3552.500000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -3553.300000 0 494.500000 -3553.300000 0 494.500000 -3554.100000 0 181.700000 -3554.100000 0 181.700000 -3553.300000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -3554.100000 0 494.500000 -3554.100000 0 494.500000 -3554.800000 0 181.700000 -3554.800000 0 181.700000 -3554.100000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -3554.700000 0 181.800000 -3554.700000 0 181.800000 -3361.400000 0 494.400000 -3361.400000 0 494.400000 -3554.700000 0 338.100000 -3554.700000 0
+strokePath subpath 1 338.100000 -3554.700000 0 181.800000 -3554.700000 0 181.800000 -3361.400000 0 494.400000 -3361.400000 0 494.400000 -3554.700000 0 338.100000 -3554.700000 0
+saveState
+updateCtm 11420.000000 0.000000 0.000000 -8760.000000 20530.000000 427080.000000
+drawSoftMaskedImage 1143 877 1143 877 JPEG 71324 PPM 3007249
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -3515.776000 215.488000 -3523.776000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -3515.776000 220.592000 -3523.776000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -3515.776000 225.696000 -3523.776000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -3515.776000 230.800000 -3523.776000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -3523.276000 241.388000 -3531.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -3523.276000 246.492000 -3531.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -3523.276000 251.596000 -3531.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -3523.276000 256.700000 -3531.276000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -3530.976000 267.188000 -3538.976000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -3530.976000 272.292000 -3538.976000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -3530.976000 277.396000 -3538.976000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -3530.976000 282.500000 -3538.976000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -3538.576000 293.088000 -3546.576000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -3538.576000 298.192000 -3546.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -3538.576000 303.296000 -3546.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -3538.576000 308.400000 -3546.576000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -3500.776000 202.588000 -3508.776000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -3481.376000 201.688000 -3489.376000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -3462.076000 195.788000 -3470.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -3462.076000 200.892000 -3470.076000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -3442.776000 194.888000 -3450.776000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -3442.776000 199.992000 -3450.776000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -3423.476000 193.988000 -3431.476000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -3423.476000 199.092000 -3431.476000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -3404.076000 193.088000 -3412.076000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -3404.076000 198.192000 -3412.076000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -3531.976000 330.188000 -3539.976000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -3531.976000 332.716000 -3539.976000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -3531.976000 337.596000 -3539.976000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -3531.976000 341.396000 -3539.976000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -3531.976000 346.036000 -3539.976000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -3531.976000 350.900000 -3539.976000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -3531.976000 355.972000 -3539.976000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -3531.976000 359.196000 -3539.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -3531.976000 362.196000 -3539.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -3531.976000 367.404000 -3539.976000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -3531.976000 371.876000 -3539.976000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -3531.976000 375.052000 -3539.976000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -3512.476000 361.172000 -3520.476000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -3512.476000 364.340000 -3520.476000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -3512.476000 367.396000 -3520.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -3512.476000 372.604000 -3520.476000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -3512.476000 379.348000 -3520.476000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -3512.476000 384.484000 -3520.476000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -3512.476000 389.436000 -3520.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -3512.476000 392.108000 -3520.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -3512.476000 395.708000 -3520.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -3512.476000 397.540000 -3520.476000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -3512.476000 402.444000 -3520.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -3512.476000 406.788000 -3520.476000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -3492.976000 392.972000 -3500.976000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -3492.976000 398.076000 -3500.976000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -3492.976000 403.180000 -3500.976000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -3492.976000 405.428000 -3500.976000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -3492.976000 410.332000 -3500.976000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -3492.976000 414.476000 -3500.976000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -3365.408000 305.808000 -3379.408000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -3365.408000 314.138000 -3379.408000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -3365.408000 320.788000 -3379.408000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -3365.408000 328.698000 -3379.408000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -3365.408000 336.972000 -3379.408000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -3365.408000 344.182000 -3379.408000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -3365.408000 349.810000 -3379.408000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -3365.408000 354.234000 -3379.408000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -3365.408000 362.718000 -3379.408000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -3365.408000 367.870000 -3379.408000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -3365.408000 372.322000 -3379.408000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -3365.408000 382.080000 -3379.408000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -3365.408000 388.772000 -3379.408000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -3365.408000 397.802000 -3379.408000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -3365.408000 402.254000 -3379.408000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -3365.408000 407.896000 -3379.408000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -3488.300000 0 424.300000 -3488.300000 0 424.300000 -3427.500000 0 493.600000 -3427.500000 0 493.600000 -3488.300000 0 458.900000 -3488.300000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -3437.100000 0 428.900000 -3437.100000 0 428.900000 -3431.200000 0 434.800000 -3431.200000 0 434.800000 -3437.100000 0 431.900000 -3437.100000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -3448.200000 0 428.900000 -3448.200000 0 428.900000 -3442.300000 0 434.800000 -3442.300000 0 434.800000 -3448.200000 0 431.900000 -3448.200000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -3459.300000 0 428.900000 -3459.300000 0 428.900000 -3453.300000 0 434.800000 -3453.300000 0 434.800000 -3459.300000 0 431.900000 -3459.300000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -3470.400000 0 428.900000 -3470.400000 0 428.900000 -3464.400000 0 434.800000 -3464.400000 0 434.800000 -3470.400000 0 431.900000 -3470.400000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -3481.500000 0 428.900000 -3481.500000 0 428.900000 -3475.500000 0 434.800000 -3475.500000 0 434.800000 -3481.500000 0 431.900000 -3481.500000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -3430.076000 443.288000 -3438.076000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -3430.076000 445.816000 -3438.076000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -3430.076000 450.600000 -3438.076000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -3430.076000 454.496000 -3438.076000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -3430.076000 459.136000 -3438.076000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -3430.076000 464.000000 -3438.076000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -3430.076000 468.976000 -3438.076000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -3430.076000 472.304000 -3438.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -3430.076000 475.208000 -3438.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -3430.076000 480.520000 -3438.076000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -3430.076000 484.992000 -3438.076000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -3430.076000 488.168000 -3438.076000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -3441.076000 443.352000 -3449.076000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -3441.076000 447.920000 -3449.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -3441.076000 452.976000 -3449.076000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -3441.076000 457.400000 -3449.076000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -3441.076000 462.472000 -3449.076000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -3441.076000 465.800000 -3449.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -3441.076000 468.904000 -3449.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -3441.076000 473.816000 -3449.076000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -3441.076000 478.888000 -3449.076000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -3441.076000 482.064000 -3449.076000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -3452.176000 442.872000 -3460.176000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -3452.176000 446.040000 -3460.176000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -3452.176000 448.992000 -3460.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -3452.176000 454.304000 -3460.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -3452.176000 461.048000 -3460.176000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -3452.176000 466.184000 -3460.176000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -3452.176000 471.136000 -3460.176000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -3452.176000 473.808000 -3460.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -3452.176000 477.408000 -3460.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -3452.176000 479.240000 -3460.176000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -3452.176000 484.144000 -3460.176000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -3452.176000 488.488000 -3460.176000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -3463.276000 443.384000 -3471.276000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -3463.276000 448.464000 -3471.276000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -3463.276000 453.424000 -3471.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -3463.276000 456.696000 -3471.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -3463.276000 459.800000 -3471.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -3463.276000 462.032000 -3471.276000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -3463.276000 466.936000 -3471.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -3463.276000 471.080000 -3471.276000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -3474.376000 443.272000 -3482.376000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -3474.376000 448.376000 -3482.376000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -3474.376000 453.480000 -3482.376000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -3474.376000 455.728000 -3482.376000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -3474.376000 460.632000 -3482.376000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -3474.376000 464.776000 -3482.376000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -6119.400000 0 114.800000 -6119.400000 0 114.800000 -6076.600000 0 72.000000 -6076.600000 0 72.000000 -6119.400000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 691130.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 108.000000 546.200000 0 540.000000 546.200000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 546.200000 0
+eoFillPath subpath 1 108.000000 72.000000 0 540.000000 72.000000 0 540.000000 245.800000 0 108.000000 245.800000 0 108.000000 72.000000 0
+eoFillPath subpath 1 108.000000 245.800000 0 157.400000 245.800000 0 157.400000 546.200000 0 108.000000 546.200000 0 108.000000 245.800000 0
+eoFillPath subpath 1 490.500000 245.800000 0 540.000000 245.800000 0 540.000000 546.200000 0 490.500000 546.200000 0 490.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 15740.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 108.000000 701.300000 0 540.000000 701.300000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 701.300000 0
+eoFillPath subpath 1 108.000000 76.200000 0 540.000000 76.200000 0 540.000000 90.100000 0 108.000000 90.100000 0 108.000000 76.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 108.100000 719.948000 121.892000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 121.908000 719.948000 131.364000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 131.412000 719.948000 136.484000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 136.516000 719.948000 148.532000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 148.516000 719.948000 158.292000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 158.324000 719.948000 168.452000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 168.420000 719.948000 176.740000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 176.724000 719.948000 186.564000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 186.532000 719.948000 191.604000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 191.636000 719.948000 197.396000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 197.444000 719.948000 202.516000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 202.500000 719.948000 212.644000 703.948000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 212.708000 719.948000 222.548000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 222.516000 719.948000 231.300000 703.948000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 231.316000 719.948000 241.092000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 241.124000 719.948000 251.252000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 251.220000 719.948000 261.364000 703.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 261.428000 719.948000 266.500000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.532000 719.948000 275.732000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 275.732000 719.948000 280.164000 703.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 280.132000 719.948000 289.908000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 289.940000 719.948000 299.716000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 299.748000 719.948000 306.324000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 672.892000 122.030000 658.892000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 122.002000 672.892000 131.438000 658.892000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 131.396000 672.892000 139.726000 658.892000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.698000 672.892000 146.390000 658.892000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 146.404000 672.892000 155.896000 658.892000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 155.910000 672.892000 162.812000 658.892000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 162.812000 672.892000 167.684000 658.892000 1.000000 0.000000 0.000000 1.000000
+drawChar 167.712000 672.892000 178.380000 658.892000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 178.408000 672.892000 187.844000 658.892000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 187.802000 672.892000 194.494000 658.892000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 194.508000 672.892000 204.462000 658.892000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 650.736000 229.492000 638.736000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 650.736000 237.232000 638.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 650.736000 244.300000 638.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 246.304000 650.736000 250.108000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 252.208000 650.736000 259.432000 638.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 259.504000 650.736000 267.232000 638.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 267.208000 650.736000 271.036000 638.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 271.108000 650.736000 277.876000 638.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 279.808000 650.736000 283.612000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.712000 650.736000 295.972000 638.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 296.008000 650.736000 303.160000 638.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 303.112000 650.736000 309.880000 638.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 311.908000 650.736000 315.712000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.908000 650.736000 322.720000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 322.708000 650.736000 329.932000 638.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 331.912000 650.736000 335.716000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 337.816000 650.736000 345.496000 638.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 345.520000 650.736000 352.612000 638.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 352.624000 650.736000 357.436000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 359.428000 650.736000 363.232000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.332000 650.736000 370.144000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 370.228000 650.736000 377.452000 638.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 379.432000 650.736000 383.236000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.336000 650.736000 390.148000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 390.136000 650.736000 397.864000 638.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 397.936000 650.736000 405.028000 638.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 406.936000 650.736000 410.740000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 412.936000 650.736000 424.312000 638.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 424.240000 650.736000 431.392000 638.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 431.440000 650.736000 437.596000 638.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 437.644000 650.736000 442.456000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 442.444000 650.736000 449.536000 638.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 449.548000 650.736000 455.284000 638.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 457.252000 650.736000 461.056000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 463.156000 650.736000 470.836000 638.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 470.860000 650.736000 478.012000 638.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 477.964000 650.736000 482.776000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 482.860000 650.736000 490.588000 638.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 490.564000 650.736000 496.300000 638.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 496.360000 650.736000 503.584000 638.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 503.560000 650.736000 510.784000 638.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 510.760000 650.736000 522.136000 638.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 524.164000 650.736000 527.968000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 530.068000 650.736000 533.896000 638.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 533.872000 650.736000 540.028000 638.736000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 650.736000 543.904000 638.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 636.836000 226.312000 624.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 636.836000 234.028000 624.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 234.100000 636.836000 239.836000 624.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 239.800000 636.836000 247.024000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 247.000000 636.836000 254.728000 624.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 254.704000 636.836000 262.384000 624.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 262.408000 636.836000 270.136000 624.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 270.808000 636.836000 274.612000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 275.308000 636.836000 280.120000 624.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 280.108000 636.836000 287.836000 624.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 287.908000 636.836000 295.000000 624.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 295.612000 636.836000 299.416000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 300.112000 636.836000 307.792000 624.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 307.816000 636.836000 314.908000 624.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 314.920000 636.836000 322.600000 624.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 322.624000 636.836000 328.360000 624.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 328.324000 636.836000 335.548000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 335.524000 636.836000 342.748000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 342.820000 636.836000 354.196000 624.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 354.124000 636.836000 357.928000 624.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.624000 636.836000 362.428000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 363.124000 636.836000 371.116000 624.836000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 371.128000 636.836000 378.856000 624.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 378.832000 636.836000 385.924000 624.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 385.936000 636.836000 391.672000 624.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 391.732000 636.836000 398.824000 624.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 398.836000 636.836000 403.276000 624.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 403.240000 636.836000 410.464000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 410.440000 636.836000 416.176000 624.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 416.236000 636.836000 423.328000 624.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 423.340000 636.836000 427.144000 624.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 427.840000 636.836000 431.644000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 432.340000 636.836000 436.168000 624.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 436.144000 636.836000 440.956000 624.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 441.640000 636.836000 445.444000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.140000 636.836000 449.968000 624.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 449.944000 636.836000 456.100000 624.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 456.844000 636.836000 460.648000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 461.344000 636.836000 468.496000 624.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 469.048000 636.836000 472.852000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 473.548000 636.836000 480.268000 624.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 480.352000 636.836000 487.576000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 487.552000 636.836000 498.928000 624.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 498.952000 636.836000 506.632000 624.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 506.656000 636.836000 510.484000 624.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 510.460000 636.836000 517.552000 624.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 517.564000 636.836000 522.376000 624.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 522.364000 636.836000 529.456000 624.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 529.468000 636.836000 533.296000 624.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 533.368000 636.836000 540.136000 624.836000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 636.836000 543.904000 624.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 622.936000 229.180000 610.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 229.204000 622.936000 234.940000 610.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 234.904000 622.936000 238.732000 610.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 238.708000 622.936000 245.476000 610.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 245.512000 622.936000 252.664000 610.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 252.712000 622.936000 257.524000 610.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 257.512000 622.936000 264.604000 610.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 264.616000 622.936000 268.420000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.420000 622.936000 274.156000 610.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 274.120000 622.936000 281.344000 610.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 281.320000 622.936000 288.544000 610.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 288.520000 622.936000 299.896000 610.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 299.920000 622.936000 303.724000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 303.724000 622.936000 313.984000 610.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 314.020000 622.936000 321.748000 610.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 321.724000 622.936000 325.552000 610.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 325.528000 622.936000 332.248000 610.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 332.224000 622.936000 339.952000 610.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 339.928000 622.936000 343.732000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 343.732000 622.936000 347.560000 610.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 347.536000 622.936000 353.692000 610.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 353.740000 622.936000 357.544000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.544000 622.936000 365.224000 610.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 365.248000 622.936000 372.340000 610.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 372.352000 622.936000 380.080000 610.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 380.056000 622.936000 387.148000 610.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 387.160000 622.936000 392.896000 610.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.860000 622.936000 400.012000 610.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 400.060000 622.936000 403.888000 610.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 403.864000 622.936000 407.692000 610.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 407.668000 622.936000 414.436000 610.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 414.472000 622.936000 418.276000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 418.276000 622.936000 426.004000 610.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 425.980000 622.936000 433.204000 610.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 433.180000 622.936000 437.992000 610.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 437.980000 622.936000 441.784000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 441.784000 622.936000 449.512000 610.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 449.488000 622.936000 455.644000 610.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 455.692000 622.936000 462.784000 610.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 462.796000 622.936000 470.476000 610.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 470.500000 622.936000 474.304000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.304000 622.936000 481.984000 610.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 482.008000 622.936000 488.776000 610.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 488.812000 622.936000 492.616000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 492.616000 622.936000 500.296000 610.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 500.320000 622.936000 508.048000 610.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 508.024000 622.936000 515.116000 610.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 515.128000 622.936000 521.284000 610.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 521.332000 622.936000 526.144000 610.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 526.132000 622.936000 532.288000 610.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 532.336000 622.936000 536.140000 610.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 603.036000 233.776000 591.036000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 233.800000 603.036000 240.952000 591.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 240.904000 603.036000 246.640000 591.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 246.700000 603.036000 254.380000 591.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 254.404000 603.036000 258.232000 591.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 258.208000 603.036000 265.300000 591.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 265.504000 603.036000 269.308000 591.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 269.608000 603.036000 274.420000 591.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 274.408000 603.036000 278.236000 591.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 278.308000 603.036000 282.136000 591.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 282.112000 603.036000 289.204000 591.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 289.216000 603.036000 295.372000 591.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 295.612000 603.036000 299.416000 591.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 299.716000 603.036000 303.544000 591.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 303.520000 603.036000 311.248000 591.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 311.524000 603.036000 315.328000 591.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 315.628000 603.036000 320.440000 591.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 320.428000 603.036000 328.156000 591.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 328.228000 603.036000 335.320000 591.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 335.428000 603.036000 339.232000 591.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.532000 603.036000 347.212000 591.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 347.236000 603.036000 354.388000 591.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 354.340000 603.036000 359.152000 591.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 359.236000 603.036000 366.964000 591.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 366.940000 603.036000 372.676000 591.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 372.736000 603.036000 379.960000 591.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 379.936000 603.036000 387.160000 591.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 387.136000 603.036000 398.512000 591.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 398.740000 603.036000 402.544000 591.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.844000 603.036000 409.564000 591.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 409.540000 603.036000 416.632000 591.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 416.644000 603.036000 422.380000 591.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 422.440000 603.036000 427.252000 591.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 427.240000 603.036000 434.392000 591.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 434.344000 603.036000 438.172000 591.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 438.244000 603.036000 445.972000 591.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 445.948000 603.036000 449.776000 591.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 449.752000 603.036000 456.520000 591.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 456.748000 603.036000 460.552000 591.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 460.852000 603.036000 464.680000 591.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 464.656000 603.036000 471.880000 591.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 471.952000 603.036000 479.176000 591.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 479.152000 603.036000 486.412000 591.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 486.652000 603.036000 490.456000 591.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 490.756000 603.036000 497.848000 591.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 497.860000 603.036000 501.688000 591.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 501.664000 603.036000 508.756000 591.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 508.768000 603.036000 516.448000 591.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 516.472000 603.036000 523.624000 591.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 523.672000 603.036000 531.400000 591.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 531.376000 603.036000 536.188000 591.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 536.176000 603.036000 539.980000 591.036000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 603.036000 543.904000 591.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 589.136000 229.180000 577.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 229.204000 589.136000 236.932000 577.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 236.908000 589.136000 241.720000 577.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 243.712000 589.136000 247.516000 577.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 249.508000 589.136000 256.660000 577.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 256.708000 589.136000 262.444000 577.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 262.408000 589.136000 269.500000 577.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 271.504000 589.136000 275.308000 577.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.408000 589.136000 283.144000 577.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 283.108000 589.136000 290.260000 577.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 290.212000 589.136000 295.024000 577.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 295.108000 589.136000 302.836000 577.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 302.812000 589.136000 309.904000 577.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 309.916000 589.136000 315.652000 577.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 317.620000 589.136000 321.424000 577.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 323.416000 589.136000 331.096000 577.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 331.120000 589.136000 334.948000 577.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 334.924000 589.136000 347.248000 577.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 347.320000 589.136000 354.040000 577.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 354.124000 589.136000 361.852000 577.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 361.828000 589.136000 365.656000 577.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 365.632000 589.136000 370.444000 577.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 372.436000 589.136000 376.240000 577.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 378.232000 589.136000 383.044000 577.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 383.032000 589.136000 390.256000 577.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 392.332000 589.136000 396.136000 577.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.128000 589.136000 409.504000 577.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 409.528000 589.136000 416.680000 577.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 416.632000 589.136000 420.460000 577.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 420.532000 589.136000 428.260000 577.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 428.236000 589.136000 433.048000 577.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 433.036000 589.136000 440.188000 577.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 440.236000 589.136000 444.064000 577.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 444.040000 589.136000 451.768000 577.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 451.744000 589.136000 455.548000 577.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.540000 589.136000 461.344000 577.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 463.444000 589.136000 471.436000 577.136000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 471.448000 589.136000 479.176000 577.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 479.152000 589.136000 486.244000 577.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 486.256000 589.136000 491.992000 577.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 492.052000 589.136000 499.144000 577.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 499.156000 589.136000 503.596000 577.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 503.560000 589.136000 510.784000 577.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 510.760000 589.136000 516.496000 577.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 516.556000 589.136000 523.648000 577.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 523.552000 589.136000 527.356000 577.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 529.348000 589.136000 533.152000 577.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 535.252000 589.136000 539.992000 577.136000 1.000000 0.000000 0.000000 1.000000 I
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 589.136000 543.904000 577.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 575.236000 228.220000 563.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 228.196000 575.236000 235.924000 563.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 235.900000 575.236000 243.124000 563.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 243.196000 575.236000 249.352000 563.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 249.292000 575.236000 256.384000 563.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 257.296000 575.236000 261.100000 563.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.096000 575.236000 266.908000 563.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 266.992000 575.236000 274.216000 563.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 275.092000 575.236000 278.896000 563.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.892000 575.236000 284.704000 563.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 284.692000 575.236000 288.520000 563.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 288.592000 575.236000 292.420000 563.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 292.396000 575.236000 299.488000 563.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 300.400000 575.236000 304.204000 563.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 305.200000 575.236000 310.012000 563.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 310.000000 575.236000 317.728000 563.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 317.800000 575.236000 324.892000 563.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 325.804000 575.236000 329.608000 563.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.504000 575.236000 339.496000 563.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 338.608000 575.236000 345.832000 563.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 345.808000 575.236000 353.032000 563.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 353.104000 575.236000 358.840000 563.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 359.704000 575.236000 363.508000 563.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.504000 575.236000 371.656000 563.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 371.704000 575.236000 379.432000 563.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 379.408000 575.236000 387.088000 563.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 388.012000 575.236000 391.816000 563.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 392.812000 575.236000 403.072000 563.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 403.108000 575.236000 410.260000 563.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 410.212000 575.236000 414.040000 563.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 414.112000 575.236000 417.940000 563.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 417.916000 575.236000 424.072000 563.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 424.912000 575.236000 428.716000 563.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.712000 575.236000 439.972000 563.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 440.008000 575.236000 443.836000 563.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 443.908000 575.236000 448.720000 563.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 448.708000 575.236000 456.436000 563.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 457.312000 575.236000 461.116000 563.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 462.112000 575.236000 468.832000 563.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 468.808000 575.236000 476.032000 563.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 476.008000 575.236000 483.736000 563.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 483.808000 575.236000 490.576000 563.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 490.612000 575.236000 497.704000 563.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 497.716000 575.236000 505.444000 563.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 505.420000 575.236000 510.232000 563.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 510.220000 575.236000 514.048000 563.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 514.024000 575.236000 521.248000 563.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 521.320000 575.236000 529.048000 563.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 529.024000 575.236000 536.176000 563.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 536.224000 575.236000 540.052000 563.236000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 575.236000 543.904000 563.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 561.336000 228.220000 549.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 228.196000 561.336000 235.288000 549.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 235.300000 561.336000 241.036000 549.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 241.000000 561.336000 248.152000 549.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 248.200000 561.336000 259.576000 549.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 259.600000 561.336000 263.428000 549.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 263.404000 561.336000 270.124000 549.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 270.100000 561.336000 273.904000 549.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.904000 561.336000 278.716000 549.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 278.704000 561.336000 282.532000 549.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 282.508000 561.336000 286.336000 549.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 286.312000 561.336000 293.404000 549.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 293.416000 561.336000 299.572000 549.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 299.620000 561.336000 303.424000 549.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 541.436000 229.492000 529.436000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 541.436000 237.232000 529.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 541.436000 244.300000 529.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 246.604000 541.436000 250.408000 529.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.600000 541.436000 264.592000 529.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 260.896000 541.436000 268.120000 529.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 268.096000 541.436000 275.320000 529.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 275.296000 541.436000 281.032000 529.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 283.396000 541.436000 287.200000 529.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.696000 541.436000 293.524000 529.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 293.500000 541.436000 299.656000 529.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 304.300000 541.436000 308.104000 529.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 308.300000 541.436000 313.112000 529.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 313.100000 541.436000 320.192000 529.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 320.204000 541.436000 325.940000 529.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 325.904000 541.436000 331.640000 529.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 331.604000 541.436000 338.756000 529.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 338.804000 541.436000 342.848000 529.436000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 342.908000 541.436000 349.628000 529.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 349.604000 541.436000 356.828000 529.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 356.804000 541.436000 361.616000 529.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 361.604000 541.436000 366.416000 529.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 366.404000 541.436000 373.556000 529.436000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 373.600000 541.436000 377.404000 529.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 382.204000 541.436000 389.356000 529.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 389.308000 541.436000 397.036000 529.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 397.108000 541.436000 404.788000 529.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 407.104000 541.436000 410.908000 529.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 413.308000 541.436000 418.120000 529.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 418.108000 541.436000 425.836000 529.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 425.908000 541.436000 433.000000 529.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 435.304000 541.436000 439.108000 529.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 441.604000 541.436000 451.864000 529.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 451.900000 541.436000 459.052000 529.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 459.004000 541.436000 462.832000 529.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 462.904000 541.436000 466.732000 529.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 466.708000 541.436000 472.864000 529.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 475.108000 541.436000 478.912000 529.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.312000 541.436000 488.464000 529.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 488.512000 541.436000 494.248000 529.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 494.212000 541.436000 501.304000 529.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 503.716000 541.436000 507.520000 529.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 509.920000 541.436000 517.600000 529.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 517.624000 541.436000 521.452000 529.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 521.524000 541.436000 528.676000 529.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 528.724000 541.436000 532.552000 529.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 532.528000 541.436000 540.256000 529.436000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 541.436000 543.904000 529.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 527.536000 231.760000 515.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 231.796000 527.536000 239.524000 515.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 239.500000 527.536000 243.328000 515.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 243.304000 527.536000 248.116000 515.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 248.200000 527.536000 255.292000 515.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 255.304000 527.536000 259.108000 515.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.308000 527.536000 264.112000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.408000 527.536000 274.072000 515.536000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 273.904000 527.536000 278.716000 515.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 280.000000 527.536000 283.804000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.100000 527.536000 292.252000 515.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 292.300000 527.536000 299.980000 515.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 299.896000 527.536000 307.120000 515.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 307.192000 527.536000 314.920000 515.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 314.896000 527.536000 319.708000 515.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 320.896000 527.536000 324.700000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 325.996000 527.536000 333.148000 515.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 334.492000 527.536000 338.296000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.592000 527.536000 347.320000 515.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 347.296000 527.536000 354.388000 515.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 354.400000 527.536000 358.228000 515.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 358.300000 527.536000 365.980000 515.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 365.896000 527.536000 373.624000 515.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 373.696000 527.536000 378.508000 515.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 379.696000 527.536000 383.500000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 384.796000 527.536000 392.020000 515.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 391.996000 527.536000 396.436000 515.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 397.792000 527.536000 401.596000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.892000 527.536000 410.524000 515.536000 1.000000 0.000000 0.000000 1.000000 4
+drawChar 411.688000 527.536000 415.492000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 416.788000 527.536000 421.228000 515.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 421.192000 527.536000 426.004000 515.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 426.088000 527.536000 429.892000 515.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.188000 527.536000 434.992000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 436.288000 527.536000 441.100000 515.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 441.088000 527.536000 448.816000 515.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.888000 527.536000 455.980000 515.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 455.992000 527.536000 461.728000 515.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 461.692000 527.536000 468.784000 515.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 469.996000 527.536000 473.800000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 475.096000 527.536000 478.924000 515.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 478.900000 527.536000 485.056000 515.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 486.400000 527.536000 490.204000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 491.500000 527.536000 498.652000 515.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 499.900000 527.536000 503.704000 515.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 505.000000 527.536000 509.812000 515.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 509.800000 527.536000 516.892000 515.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 516.904000 527.536000 522.640000 515.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 522.700000 527.536000 528.436000 515.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 528.400000 527.536000 535.552000 515.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 535.600000 527.536000 539.644000 515.536000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 513.636000 228.220000 501.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 228.196000 513.636000 235.420000 501.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 235.396000 513.636000 240.208000 501.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 240.292000 513.636000 245.104000 501.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 245.092000 513.636000 252.244000 501.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 252.196000 513.636000 256.240000 501.636000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 256.300000 513.636000 263.020000 501.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 262.996000 513.636000 270.220000 501.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 270.196000 513.636000 274.024000 501.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 274.096000 513.636000 281.320000 501.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 281.296000 513.636000 287.032000 501.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 286.996000 513.636000 294.088000 501.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 294.100000 513.636000 301.780000 501.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 302.896000 513.636000 306.700000 501.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 307.900000 513.636000 315.580000 501.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 315.604000 513.636000 322.828000 501.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 322.804000 513.636000 328.540000 501.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 328.504000 513.636000 336.184000 501.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 336.304000 513.636000 343.396000 501.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 343.408000 513.636000 349.144000 501.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 350.308000 513.636000 354.112000 501.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 355.312000 513.636000 362.464000 501.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 362.512000 513.636000 366.340000 501.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 366.316000 513.636000 373.540000 501.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 373.516000 513.636000 381.244000 501.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 381.220000 513.636000 388.900000 501.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 390.016000 513.636000 393.820000 501.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 395.116000 513.636000 399.928000 501.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 399.916000 513.636000 407.644000 501.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 407.716000 513.636000 414.808000 501.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 415.912000 513.636000 419.716000 501.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 420.916000 513.636000 431.176000 501.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 431.212000 513.636000 438.364000 501.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 438.316000 513.636000 442.144000 501.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 442.216000 513.636000 446.044000 501.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 446.020000 513.636000 452.176000 501.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 453.316000 513.636000 457.120000 501.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 458.320000 513.636000 463.132000 501.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 463.120000 513.636000 470.344000 501.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 471.520000 513.636000 475.324000 501.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 476.620000 513.636000 487.996000 501.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 487.924000 513.636000 495.076000 501.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 495.124000 513.636000 499.936000 501.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 499.924000 513.636000 506.644000 501.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 506.620000 513.636000 514.348000 501.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 515.524000 513.636000 519.328000 501.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 520.528000 513.636000 525.340000 501.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 525.328000 513.636000 533.056000 501.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 533.128000 513.636000 540.220000 501.636000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 513.636000 544.004000 501.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 499.736000 229.492000 487.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 229.504000 499.736000 236.728000 487.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.704000 499.736000 243.928000 487.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 243.904000 499.736000 249.640000 487.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 248.308000 499.736000 252.112000 487.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.112000 499.736000 255.916000 487.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 255.916000 499.736000 265.744000 487.736000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 265.720000 499.736000 270.160000 487.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 270.124000 499.736000 273.928000 487.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.928000 499.736000 280.648000 487.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 280.624000 499.736000 287.848000 487.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 287.824000 499.736000 295.552000 487.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 295.528000 499.736000 301.264000 487.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 301.228000 499.736000 307.384000 487.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 307.432000 499.736000 314.524000 487.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 314.536000 499.736000 318.340000 487.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 318.340000 499.736000 322.144000 487.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.144000 499.736000 326.956000 487.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 326.944000 499.736000 334.672000 487.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 334.648000 499.736000 341.740000 487.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 341.752000 499.736000 347.488000 487.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 347.452000 499.736000 354.544000 487.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 354.556000 499.736000 358.360000 487.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 358.360000 499.736000 365.512000 487.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 365.560000 499.736000 371.296000 487.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 371.260000 499.736000 378.352000 487.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 378.364000 499.736000 382.168000 487.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 382.168000 499.736000 389.320000 487.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 389.368000 499.736000 393.196000 487.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 393.172000 499.736000 399.328000 487.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 399.376000 499.736000 406.600000 487.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 406.576000 499.736000 410.380000 487.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 410.380000 499.736000 415.192000 487.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 415.180000 499.736000 425.440000 487.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 425.476000 499.736000 432.700000 487.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 432.676000 499.736000 436.480000 487.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 436.480000 499.736000 444.160000 487.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 444.184000 499.736000 451.336000 487.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 451.384000 499.736000 456.196000 487.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 456.184000 499.736000 463.912000 487.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 463.888000 499.736000 467.692000 487.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 467.692000 499.736000 479.068000 487.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 479.092000 499.736000 486.244000 487.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 486.292000 499.736000 491.104000 487.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 491.092000 499.736000 497.248000 487.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 497.296000 499.736000 501.100000 487.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 501.100000 499.736000 508.324000 487.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 508.300000 499.736000 516.028000 487.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 516.004000 499.736000 519.808000 487.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 519.808000 499.736000 524.620000 487.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 524.608000 499.736000 532.336000 487.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 532.312000 499.736000 539.404000 487.736000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 499.736000 544.004000 487.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 485.836000 229.492000 473.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 229.504000 485.836000 236.728000 473.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.704000 485.836000 243.928000 473.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 244.000000 485.836000 249.736000 473.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 250.996000 485.836000 254.800000 473.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.192000 485.836000 261.004000 473.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 260.992000 485.836000 268.216000 473.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 269.596000 485.836000 273.400000 473.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 274.792000 485.836000 282.052000 473.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 282.088000 485.836000 289.180000 473.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 289.192000 485.836000 296.284000 473.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 296.296000 485.836000 303.976000 473.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 305.200000 485.836000 309.004000 473.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.396000 485.836000 315.208000 473.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 315.292000 485.836000 323.020000 473.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 322.996000 485.836000 330.220000 473.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 330.292000 485.836000 336.448000 473.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 336.388000 485.836000 343.480000 473.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 344.788000 485.836000 348.592000 473.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 349.984000 485.836000 357.664000 473.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 357.688000 485.836000 364.840000 473.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 364.792000 485.836000 370.528000 473.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 370.588000 485.836000 377.680000 473.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 378.988000 485.836000 382.792000 473.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 384.184000 485.836000 388.624000 473.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 388.588000 485.836000 395.680000 473.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 395.692000 485.836000 402.784000 473.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.796000 485.836000 407.608000 473.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 408.892000 485.836000 412.696000 473.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 414.196000 485.836000 424.456000 473.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 424.492000 485.836000 431.644000 473.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 431.596000 485.836000 437.332000 473.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 437.392000 485.836000 448.768000 473.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 448.696000 485.836000 452.500000 473.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.796000 485.836000 457.600000 473.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 458.992000 485.836000 466.984000 473.836000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 466.996000 485.836000 474.724000 473.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 474.700000 485.836000 481.792000 473.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 483.196000 485.836000 487.000000 473.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.392000 485.836000 496.072000 473.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 496.096000 485.836000 503.248000 473.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 503.200000 485.836000 508.012000 473.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 508.096000 485.836000 515.824000 473.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 515.800000 485.836000 520.612000 473.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 520.600000 485.836000 528.328000 473.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 528.304000 485.836000 535.984000 473.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 536.008000 485.836000 539.812000 473.836000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 485.836000 543.904000 473.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 471.936000 227.656000 459.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 471.936000 235.432000 459.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 235.408000 471.936000 242.632000 459.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 242.608000 471.936000 252.868000 459.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 252.904000 471.936000 259.996000 459.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 260.008000 471.936000 265.744000 459.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 264.604000 471.936000 268.408000 459.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 269.608000 471.936000 273.412000 459.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 273.400000 471.936000 278.212000 459.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 278.200000 471.936000 285.424000 459.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 285.400000 471.936000 289.228000 459.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 289.300000 471.936000 293.128000 459.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 293.104000 471.936000 300.196000 459.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 300.208000 471.936000 305.020000 459.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 305.704000 471.936000 309.508000 459.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.300000 471.936000 317.452000 459.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 317.500000 471.936000 325.228000 459.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 325.096000 471.936000 332.776000 459.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 334.192000 471.936000 337.996000 459.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 338.000000 471.936000 348.260000 459.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 348.296000 471.936000 355.448000 459.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 355.400000 471.936000 361.556000 459.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 361.604000 471.936000 369.332000 459.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 369.308000 471.936000 376.988000 459.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 377.012000 471.936000 384.164000 459.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 384.116000 471.936000 390.272000 459.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 390.320000 471.936000 394.148000 459.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 394.124000 471.936000 401.852000 459.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 402.620000 471.936000 406.424000 459.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.120000 471.936000 414.272000 459.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 414.320000 471.936000 420.056000 459.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 420.020000 471.936000 427.112000 459.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 427.820000 471.936000 431.624000 459.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 432.320000 471.936000 439.472000 459.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 439.520000 471.936000 443.348000 459.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 443.324000 471.936000 447.152000 459.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 447.824000 471.936000 451.628000 459.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 452.324000 471.936000 462.584000 459.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 462.620000 471.936000 470.348000 459.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 470.324000 471.936000 474.152000 459.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 474.128000 471.936000 478.940000 459.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 479.024000 471.936000 486.116000 459.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 486.128000 471.936000 489.932000 459.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.628000 471.936000 494.432000 459.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 495.128000 471.936000 503.120000 459.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 503.132000 471.936000 510.860000 459.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 510.836000 471.936000 517.928000 459.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 518.732000 471.936000 522.536000 459.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 523.928000 471.936000 531.920000 459.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 531.224000 471.936000 536.036000 459.936000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 471.936000 540.044000 459.936000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 458.036000 226.312000 446.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 458.036000 230.128000 446.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 230.104000 458.036000 237.832000 446.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 237.808000 458.036000 245.488000 446.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 245.512000 458.036000 251.668000 446.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 251.716000 458.036000 255.520000 446.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 255.520000 458.036000 262.672000 446.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 262.720000 458.036000 268.456000 446.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 268.420000 458.036000 275.512000 446.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 275.524000 458.036000 279.328000 446.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.328000 458.036000 287.008000 446.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 287.032000 458.036000 290.860000 446.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 290.836000 458.036000 297.988000 446.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 298.036000 458.036000 304.756000 446.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 304.732000 458.036000 311.992000 446.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 312.028000 458.036000 315.832000 446.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 315.832000 458.036000 319.636000 446.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 319.636000 458.036000 326.788000 446.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 326.836000 458.036000 334.516000 446.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 334.540000 458.036000 341.764000 446.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 341.740000 458.036000 347.476000 446.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 347.440000 458.036000 355.168000 446.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 355.144000 458.036000 362.236000 446.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 362.248000 458.036000 369.928000 446.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 369.952000 458.036000 373.756000 446.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 373.756000 458.036000 384.016000 446.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 384.052000 458.036000 387.880000 446.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 387.856000 458.036000 392.668000 446.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 392.656000 458.036000 400.384000 446.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 400.360000 458.036000 404.164000 446.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.164000 458.036000 411.316000 446.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 411.364000 458.036000 415.168000 446.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 415.168000 458.036000 419.980000 446.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 419.968000 458.036000 427.120000 446.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 427.168000 458.036000 433.324000 446.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 433.372000 458.036000 438.184000 446.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 438.172000 458.036000 445.264000 446.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 445.276000 458.036000 449.716000 446.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 449.680000 458.036000 457.408000 446.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 457.384000 458.036000 461.212000 446.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 461.188000 458.036000 464.992000 446.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 464.992000 458.036000 472.672000 446.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 472.696000 458.036000 479.920000 446.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 479.896000 458.036000 483.724000 446.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 483.700000 458.036000 491.380000 446.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 491.404000 458.036000 495.208000 446.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 495.208000 458.036000 501.364000 446.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 501.412000 458.036000 506.224000 446.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 506.212000 458.036000 511.948000 446.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 511.912000 458.036000 519.004000 446.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 519.016000 458.036000 526.168000 446.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 526.216000 458.036000 533.476000 446.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 533.512000 458.036000 537.316000 446.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 432.236000 117.244000 420.236000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 117.196000 432.236000 125.284000 420.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 125.296000 432.236000 131.032000 420.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 130.996000 432.236000 139.528000 420.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 139.492000 432.236000 145.228000 420.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.192000 432.236000 153.724000 420.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 153.688000 432.236000 162.268000 420.236000 1.000000 0.000000 0.000000 1.000000 b
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 415.236000 229.492000 403.236000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 415.236000 237.232000 403.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 415.236000 241.036000 403.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 241.108000 415.236000 247.264000 403.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 248.512000 415.236000 252.316000 403.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 253.708000 415.236000 257.536000 403.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 257.512000 415.236000 263.668000 403.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 265.108000 415.236000 268.912000 403.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.412000 415.236000 278.140000 403.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 278.116000 415.236000 285.340000 403.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 286.612000 415.236000 290.416000 403.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 291.808000 415.236000 299.032000 403.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 299.008000 415.236000 304.744000 403.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 304.804000 415.236000 312.484000 403.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 312.400000 415.236000 316.228000 403.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 316.300000 415.236000 324.028000 403.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 324.004000 415.236000 331.156000 403.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 331.204000 415.236000 336.940000 403.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 336.904000 415.236000 343.672000 403.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 342.100000 415.236000 345.904000 403.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 347.296000 415.236000 351.100000 403.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 352.492000 415.236000 358.228000 403.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.192000 415.236000 365.920000 403.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 365.992000 415.236000 373.720000 403.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 374.992000 415.236000 378.796000 403.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.188000 415.236000 387.412000 403.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 387.484000 415.236000 391.924000 403.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 393.280000 415.236000 397.084000 403.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.476000 415.236000 403.288000 403.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 403.276000 415.236000 411.004000 403.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 411.076000 415.236000 418.168000 403.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 419.476000 415.236000 423.280000 403.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 424.672000 415.236000 436.048000 403.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 436.072000 415.236000 439.900000 403.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 439.876000 415.236000 443.704000 403.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 443.776000 415.236000 447.604000 403.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 448.972000 415.236000 452.776000 403.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.168000 415.236000 461.848000 403.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 461.872000 415.236000 469.024000 403.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 468.976000 415.236000 473.788000 403.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 473.872000 415.236000 481.600000 403.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 481.576000 415.236000 486.388000 403.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 486.376000 415.236000 494.104000 403.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 494.080000 415.236000 501.760000 403.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 503.080000 415.236000 506.884000 403.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 508.276000 415.236000 516.004000 403.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 515.980000 415.236000 523.072000 403.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 523.084000 415.236000 528.820000 403.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 528.880000 415.236000 535.972000 403.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 535.984000 415.236000 539.788000 403.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 415.236000 543.904000 403.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 401.336000 229.492000 389.336000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 401.336000 237.232000 389.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 401.336000 244.300000 389.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 245.212000 401.336000 249.016000 389.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 250.012000 401.336000 257.740000 389.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 257.716000 401.336000 265.444000 389.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 265.516000 401.336000 273.196000 389.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 273.112000 401.336000 280.204000 389.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 281.308000 401.336000 285.112000 389.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.108000 401.336000 292.828000 389.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 292.804000 401.336000 300.028000 389.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 300.004000 401.336000 305.740000 389.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 305.800000 401.336000 313.528000 389.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 313.504000 401.336000 320.596000 389.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 320.608000 401.336000 326.344000 389.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 327.304000 401.336000 331.108000 389.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 332.104000 401.336000 336.916000 389.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 336.904000 401.336000 344.632000 389.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 344.704000 401.336000 352.384000 389.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 353.308000 401.336000 357.112000 389.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 358.108000 401.336000 361.936000 389.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 361.912000 401.336000 368.068000 389.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 369.016000 401.336000 372.820000 389.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 373.816000 401.336000 380.968000 389.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 381.016000 401.336000 384.844000 389.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 384.820000 401.336000 390.976000 389.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 391.024000 401.336000 398.248000 389.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 399.220000 401.336000 403.024000 389.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.020000 401.336000 411.172000 389.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 413.116000 401.336000 416.920000 389.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 417.300000 401.336000 427.560000 389.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 427.596000 401.336000 435.324000 389.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 435.300000 401.336000 439.128000 389.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 439.104000 401.336000 444.840000 389.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 444.900000 401.336000 448.728000 389.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 448.704000 401.336000 456.384000 389.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 456.408000 401.336000 463.632000 389.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 463.608000 401.336000 470.832000 389.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 470.808000 401.336000 474.636000 389.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 474.708000 401.336000 478.512000 389.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 479.508000 401.336000 483.312000 389.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.308000 401.336000 491.028000 389.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 491.004000 401.336000 498.228000 389.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 498.204000 401.336000 509.580000 389.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 509.604000 401.336000 517.284000 389.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 517.308000 401.336000 521.136000 389.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 521.112000 401.336000 528.204000 389.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 528.216000 401.336000 533.028000 389.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 533.112000 401.336000 540.204000 389.336000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 401.336000 543.904000 389.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 387.436000 231.760000 375.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 231.796000 387.436000 235.624000 375.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 235.600000 387.436000 240.412000 375.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 240.400000 387.436000 248.128000 375.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 251.200000 387.436000 255.004000 375.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 255.000000 387.436000 265.260000 375.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 265.296000 387.436000 272.448000 375.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 272.400000 387.436000 277.212000 375.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 277.200000 387.436000 284.292000 375.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 284.304000 387.436000 290.040000 375.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 291.600000 387.436000 295.404000 375.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 296.904000 387.436000 300.624000 375.436000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 300.600000 387.436000 307.692000 375.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 307.704000 387.436000 312.516000 375.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 312.504000 387.436000 318.660000 375.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 318.708000 387.436000 322.512000 375.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 324.012000 387.436000 327.816000 375.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.316000 387.436000 337.308000 375.436000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 337.320000 387.436000 345.048000 375.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 345.024000 387.436000 352.116000 375.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 353.724000 387.436000 357.528000 375.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.028000 387.436000 366.708000 375.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 366.732000 387.436000 373.824000 375.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 373.836000 387.436000 379.572000 375.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 379.536000 387.436000 383.976000 375.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 384.036000 387.436000 391.128000 375.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 391.140000 387.436000 397.860000 375.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 397.836000 387.436000 402.648000 375.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 404.136000 387.436000 407.940000 375.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 409.440000 387.436000 419.700000 375.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 419.736000 387.436000 426.888000 375.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 426.840000 387.436000 433.608000 375.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 435.144000 387.436000 438.948000 375.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.448000 387.436000 445.260000 375.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.248000 387.436000 452.472000 375.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 454.044000 387.436000 457.848000 375.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.348000 387.436000 465.084000 375.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.048000 387.436000 472.140000 375.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 472.152000 387.436000 475.980000 375.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 476.052000 387.436000 483.204000 375.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 483.156000 387.436000 489.912000 375.436000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 491.460000 387.436000 495.264000 375.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 496.764000 387.436000 503.916000 375.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 503.964000 387.436000 508.404000 375.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 508.368000 387.436000 513.180000 375.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 513.168000 387.436000 520.260000 375.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 520.272000 387.436000 526.008000 375.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 527.472000 387.436000 531.276000 375.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 532.872000 387.436000 540.024000 375.436000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 387.436000 543.904000 375.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 373.536000 225.328000 361.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 225.304000 373.536000 232.528000 361.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 232.504000 373.536000 240.232000 361.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 240.208000 373.536000 247.888000 361.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 247.912000 373.536000 251.716000 361.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 251.716000 373.536000 259.396000 361.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 259.420000 373.536000 266.572000 361.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 266.620000 373.536000 273.388000 361.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 273.424000 373.536000 277.228000 361.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.228000 373.536000 284.380000 361.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 284.428000 373.536000 289.240000 361.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 289.228000 373.536000 293.032000 361.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 293.032000 373.536000 303.292000 361.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 303.328000 373.536000 310.552000 361.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 310.528000 373.536000 316.264000 361.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 316.228000 373.536000 323.488000 361.536000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 323.524000 373.536000 327.328000 361.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 327.328000 373.536000 331.156000 361.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 331.132000 373.536000 338.860000 361.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 338.836000 373.536000 342.640000 361.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 342.640000 373.536000 347.080000 361.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 347.044000 373.536000 352.780000 361.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 352.744000 373.536000 359.968000 361.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 359.944000 373.536000 367.672000 361.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 367.648000 373.536000 372.460000 361.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 372.448000 373.536000 376.252000 361.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 376.252000 373.536000 383.476000 361.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 383.452000 373.536000 387.892000 361.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 387.856000 373.536000 391.660000 361.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.660000 373.536000 396.472000 361.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 396.460000 373.536000 404.188000 361.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 404.164000 373.536000 411.256000 361.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 411.268000 373.536000 415.072000 361.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 415.072000 373.536000 421.792000 361.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 421.768000 373.536000 428.992000 361.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 428.968000 373.536000 440.344000 361.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 440.368000 373.536000 448.048000 361.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.072000 373.536000 455.800000 361.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 455.776000 373.536000 460.588000 361.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 460.576000 373.536000 467.668000 361.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 467.680000 373.536000 473.416000 361.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 472.084000 373.536000 475.888000 361.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 353.636000 231.328000 341.636000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 231.304000 353.636000 239.032000 341.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 239.308000 353.636000 243.112000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 243.412000 353.636000 248.224000 341.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 248.212000 353.636000 255.940000 341.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 256.012000 353.636000 263.104000 341.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 263.308000 353.636000 267.112000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 267.412000 353.636000 274.504000 341.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 274.516000 353.636000 282.196000 341.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 282.220000 353.636000 289.900000 341.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 289.924000 353.636000 297.016000 341.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.220000 353.636000 301.024000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 301.324000 353.636000 308.548000 341.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 308.620000 353.636000 313.060000 341.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 313.324000 353.636000 317.128000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.428000 353.636000 322.240000 341.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 322.228000 353.636000 329.956000 341.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 330.028000 353.636000 337.120000 341.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.324000 353.636000 341.128000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 341.428000 353.636000 346.240000 341.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 346.228000 353.636000 353.956000 341.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 354.028000 353.636000 361.708000 341.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 361.924000 353.636000 365.728000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 366.028000 353.636000 373.180000 341.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 373.228000 353.636000 378.964000 341.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 378.928000 353.636000 386.020000 341.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 386.224000 353.636000 390.028000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 390.328000 353.636000 395.140000 341.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 395.224000 353.636000 402.952000 341.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 402.928000 353.636000 410.020000 341.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.332000 353.636000 414.136000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 414.436000 353.636000 422.164000 341.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 422.140000 353.636000 428.296000 341.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 428.344000 353.636000 436.072000 341.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 436.048000 353.636000 443.200000 341.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 443.248000 353.636000 447.076000 341.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 447.244000 353.636000 451.048000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 451.348000 353.636000 456.160000 341.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 456.148000 353.636000 463.876000 341.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 463.948000 353.636000 467.776000 341.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 467.752000 353.636000 475.480000 341.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 475.456000 353.636000 483.136000 341.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 483.160000 353.636000 489.316000 341.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 489.664000 353.636000 493.468000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 493.768000 353.636000 499.924000 341.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 499.972000 353.636000 507.700000 341.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 507.676000 353.636000 514.396000 341.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 514.372000 353.636000 522.100000 341.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 522.268000 353.636000 526.072000 341.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 526.372000 353.636000 533.524000 341.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 533.572000 353.636000 539.728000 341.636000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 353.636000 543.904000 341.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 339.736000 227.656000 327.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 339.736000 234.928000 327.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 234.904000 339.736000 242.056000 327.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 242.008000 339.736000 249.688000 327.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 249.904000 339.736000 253.708000 327.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 254.500000 339.736000 258.304000 327.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 258.400000 339.736000 264.556000 327.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 264.604000 339.736000 272.332000 327.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 272.308000 339.736000 279.460000 327.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 279.412000 339.736000 290.788000 327.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 290.812000 339.736000 298.492000 327.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 298.516000 339.736000 305.740000 327.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 305.716000 339.736000 312.940000 327.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 313.120000 339.736000 316.924000 327.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 317.920000 339.736000 321.724000 327.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 321.600000 339.736000 327.756000 327.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 327.804000 339.736000 335.532000 327.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 335.508000 339.736000 342.732000 327.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 342.708000 339.736000 352.968000 327.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 353.004000 339.736000 360.096000 327.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.108000 339.736000 365.844000 327.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 366.312000 339.736000 370.116000 327.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.608000 339.736000 378.288000 327.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 378.312000 339.736000 385.404000 327.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 385.416000 339.736000 389.244000 327.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 389.820000 339.736000 393.624000 327.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 394.224000 339.736000 401.376000 327.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 401.424000 339.736000 409.152000 327.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 409.128000 339.736000 416.808000 327.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 417.732000 339.736000 421.536000 327.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 421.700000 339.736000 429.380000 327.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 429.404000 339.736000 436.556000 327.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 436.508000 339.736000 441.320000 327.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 441.404000 339.736000 449.132000 327.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 449.600000 339.736000 453.404000 327.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.004000 339.736000 460.160000 327.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 460.208000 339.736000 467.360000 327.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 467.312000 339.736000 471.140000 327.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 471.212000 339.736000 476.024000 327.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 476.012000 339.736000 482.168000 327.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 482.108000 339.736000 485.912000 327.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.404000 339.736000 490.208000 327.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 490.808000 339.736000 503.084000 327.736000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 503.012000 339.736000 509.780000 327.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 510.308000 339.736000 514.112000 327.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 514.712000 339.736000 520.448000 327.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 520.412000 339.736000 528.140000 327.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 528.212000 339.736000 535.892000 327.736000 1.000000 0.000000 0.000000 1.000000 b
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 535.900000 339.736000 539.944000 327.736000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 325.836000 229.180000 313.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 229.204000 325.836000 236.296000 313.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.308000 325.836000 242.044000 313.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 242.212000 325.836000 246.016000 313.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 246.208000 325.836000 253.888000 313.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 253.912000 325.836000 261.640000 313.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 261.616000 325.836000 268.336000 313.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 268.312000 325.836000 275.572000 313.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 275.608000 325.836000 282.376000 313.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 282.604000 325.836000 286.408000 313.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.708000 325.836000 293.968000 313.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 294.004000 325.836000 301.096000 313.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 301.108000 325.836000 308.200000 313.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 308.212000 325.836000 315.892000 313.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 315.916000 325.836000 322.072000 313.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 322.216000 325.836000 326.020000 313.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.320000 325.836000 333.472000 313.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 333.520000 325.836000 341.248000 313.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 341.320000 325.836000 345.124000 313.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 345.616000 325.836000 352.708000 313.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 352.720000 325.836000 359.488000 313.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 359.320000 325.836000 366.412000 313.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 366.616000 325.836000 370.420000 313.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.720000 325.836000 377.944000 313.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 377.920000 325.836000 385.648000 313.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 385.816000 325.836000 389.620000 313.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 389.920000 325.836000 397.012000 313.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 397.024000 325.836000 403.792000 313.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 403.828000 325.836000 410.920000 313.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.932000 325.836000 416.668000 313.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 416.632000 325.836000 423.400000 313.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 423.436000 325.836000 428.248000 313.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 428.236000 325.836000 435.964000 313.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 435.940000 325.836000 439.768000 313.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 439.840000 325.836000 447.568000 313.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 447.544000 325.836000 455.224000 313.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 455.440000 325.836000 459.244000 313.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.436000 325.836000 469.696000 313.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 469.732000 325.836000 477.460000 313.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 477.436000 325.836000 484.528000 313.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.540000 325.836000 492.268000 313.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 492.544000 325.836000 496.348000 313.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 496.648000 325.836000 501.388000 313.836000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 501.352000 325.836000 504.640000 313.836000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 504.652000 325.836000 516.028000 313.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 516.256000 325.836000 520.060000 313.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 520.252000 325.836000 527.980000 313.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 527.956000 325.836000 535.180000 313.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 535.252000 325.836000 540.064000 313.836000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 325.836000 543.904000 313.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 311.936000 226.312000 299.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 226.300000 311.936000 234.028000 299.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 234.004000 311.936000 241.096000 299.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 241.108000 311.936000 246.844000 299.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 246.808000 311.936000 253.900000 299.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 253.912000 311.936000 257.716000 299.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 103 1 0 0 0 1200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 286.136000 120.040000 274.136000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 120.004000 286.136000 124.108000 274.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.108000 286.136000 130.024000 274.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.012000 286.136000 135.928000 274.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.916000 286.136000 144.160000 274.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 144.112000 286.136000 150.028000 274.136000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 269.136000 230.164000 257.136000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 230.200000 269.136000 237.880000 257.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 237.796000 269.136000 245.020000 257.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 245.092000 269.136000 251.860000 257.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 251.896000 269.136000 258.988000 257.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 260.800000 269.136000 264.604000 257.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.404000 269.136000 271.216000 257.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 271.204000 269.136000 278.932000 257.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 279.004000 269.136000 286.096000 257.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 287.800000 269.136000 291.604000 257.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 293.500000 269.136000 303.760000 257.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 303.796000 269.136000 310.948000 257.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 310.900000 269.136000 317.056000 257.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 317.104000 269.136000 324.832000 257.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 324.808000 269.136000 332.488000 257.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 332.512000 269.136000 339.664000 257.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 339.616000 269.136000 345.772000 257.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 345.820000 269.136000 349.648000 257.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 349.624000 269.136000 357.352000 257.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 359.224000 269.136000 363.028000 257.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.828000 269.136000 369.568000 257.136000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 371.428000 269.136000 375.232000 257.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.128000 269.136000 384.856000 257.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 384.832000 269.136000 391.984000 257.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 392.032000 269.136000 398.800000 257.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 398.836000 269.136000 405.928000 257.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 407.632000 269.136000 411.436000 257.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 413.332000 269.136000 420.484000 257.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 422.236000 269.136000 426.040000 257.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 427.936000 269.136000 435.664000 257.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 435.640000 269.136000 443.368000 257.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 443.440000 269.136000 451.120000 257.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 451.036000 269.136000 458.128000 257.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.036000 269.136000 463.840000 257.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 465.640000 269.136000 477.016000 257.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 477.040000 269.136000 480.868000 257.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 480.844000 269.136000 486.580000 257.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 486.640000 269.136000 492.376000 257.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 492.340000 269.136000 499.564000 257.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 499.540000 269.136000 505.276000 257.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 503.944000 269.136000 507.748000 257.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 509.548000 269.136000 513.352000 257.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 515.248000 269.136000 522.880000 257.136000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 523.200000 269.136000 527.004000 257.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 527.000000 269.136000 531.440000 257.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 531.404000 269.136000 536.216000 257.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 536.204000 269.136000 540.008000 257.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 269.136000 543.904000 257.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 255.236000 231.760000 243.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 231.796000 255.236000 235.624000 243.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 235.600000 255.236000 243.280000 243.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 243.304000 255.236000 250.396000 243.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 252.100000 255.236000 255.904000 243.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.704000 255.236000 264.856000 243.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 264.904000 255.236000 272.632000 243.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 272.608000 255.236000 280.288000 243.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 282.112000 255.236000 285.916000 243.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 287.716000 255.236000 295.348000 243.236000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 295.400000 255.236000 299.204000 243.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 299.200000 255.236000 303.640000 243.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 303.604000 255.236000 308.416000 243.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 308.500000 255.236000 312.304000 243.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 314.104000 255.236000 317.908000 243.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 319.708000 255.236000 324.520000 243.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 324.508000 255.236000 331.660000 243.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 331.708000 255.236000 335.536000 243.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 335.512000 255.236000 339.340000 243.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 339.412000 255.236000 343.216000 243.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 344.908000 255.236000 348.712000 243.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 350.512000 255.236000 360.340000 243.236000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 360.316000 255.236000 368.044000 243.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 369.820000 255.236000 373.624000 243.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 375.520000 255.236000 379.348000 243.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 379.324000 255.236000 384.136000 243.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 384.220000 255.236000 387.508000 243.236000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 387.520000 255.236000 393.676000 243.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 395.320000 255.236000 399.124000 243.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 400.924000 255.236000 404.752000 243.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 404.728000 255.236000 411.820000 243.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 411.832000 255.236000 416.272000 243.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 416.332000 255.236000 421.144000 243.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 422.932000 255.236000 426.736000 243.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 428.536000 255.236000 434.692000 243.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 434.740000 255.236000 438.568000 243.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 438.544000 255.236000 446.224000 243.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 446.248000 255.236000 453.340000 243.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 455.044000 255.236000 458.848000 243.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 460.648000 255.236000 465.460000 243.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 465.448000 255.236000 473.176000 243.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 473.248000 255.236000 480.340000 243.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 483.952000 255.236000 487.756000 243.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 487.800000 255.236000 496.980000 243.236000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 497.004000 255.236000 504.732000 243.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 504.708000 255.236000 510.444000 243.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 510.408000 255.236000 517.176000 243.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 517.212000 255.236000 523.368000 243.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 523.416000 255.236000 527.244000 243.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 527.220000 255.236000 534.312000 243.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 534.324000 255.236000 540.060000 243.236000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 255.236000 543.904000 243.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 241.336000 230.308000 229.336000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 230.296000 241.336000 238.024000 229.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 238.000000 241.336000 241.828000 229.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 241.900000 241.336000 245.728000 229.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 245.704000 241.336000 253.384000 229.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 253.408000 241.336000 257.236000 229.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 257.212000 241.336000 264.940000 229.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 265.012000 241.336000 272.692000 229.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 273.208000 241.336000 277.012000 229.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.612000 241.336000 282.052000 229.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 282.016000 241.336000 287.752000 229.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 287.716000 241.336000 294.940000 229.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 295.012000 241.336000 306.388000 229.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 307.408000 241.336000 311.212000 229.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 311.400000 241.336000 321.900000 229.336000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 321.900000 241.336000 328.992000 229.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 329.004000 241.336000 339.264000 229.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 339.900000 241.336000 343.704000 229.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 344.196000 241.336000 352.116000 229.336000 1.000000 0.000000 0.000000 1.000000 Y
+drawChar 351.096000 241.336000 358.320000 229.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 358.296000 241.336000 364.032000 229.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 363.996000 241.336000 371.256000 229.336000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 371.300000 241.336000 375.104000 229.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 376.196000 241.336000 380.024000 229.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 380.096000 241.336000 386.252000 229.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 386.792000 241.336000 390.596000 229.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.088000 241.336000 398.240000 229.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 398.288000 241.336000 405.968000 229.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 405.884000 241.336000 413.564000 229.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 413.588000 241.336000 417.416000 229.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 417.488000 241.336000 421.316000 229.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 421.292000 241.336000 428.384000 229.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 428.396000 241.336000 436.076000 229.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 436.700000 241.336000 440.504000 229.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.996000 241.336000 448.148000 229.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 448.196000 241.336000 454.352000 229.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 454.892000 241.336000 458.696000 229.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.188000 241.336000 466.340000 229.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 466.388000 241.336000 474.116000 229.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 474.692000 241.336000 478.496000 229.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.988000 241.336000 486.140000 229.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 486.188000 241.336000 493.868000 229.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 493.784000 241.336000 501.464000 229.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 501.584000 241.336000 505.412000 229.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 505.388000 241.336000 510.200000 229.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 510.284000 241.336000 514.112000 229.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 514.088000 241.336000 521.312000 229.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 521.288000 241.336000 529.016000 229.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 529.088000 241.336000 536.240000 229.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 536.192000 241.336000 540.020000 229.336000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 241.336000 543.904000 229.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 227.436000 232.876000 215.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 232.900000 227.436000 236.728000 215.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 236.704000 227.436000 242.440000 215.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 242.500000 227.436000 248.236000 215.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 248.200000 227.436000 255.424000 215.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 255.400000 227.436000 261.136000 215.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 262.204000 227.436000 266.008000 215.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 267.100000 227.436000 278.476000 215.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 278.404000 227.436000 285.556000 215.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 285.604000 227.436000 293.284000 215.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 293.200000 227.436000 300.292000 215.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 301.504000 227.436000 305.308000 215.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 306.400000 227.436000 310.840000 215.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 310.804000 227.436000 316.540000 215.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 316.600000 227.436000 323.824000 215.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 323.800000 227.436000 335.176000 215.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 336.196000 227.436000 340.000000 215.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 341.092000 227.436000 345.904000 215.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 345.892000 227.436000 349.720000 215.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 349.792000 227.436000 357.520000 215.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 357.496000 227.436000 362.308000 215.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 362.296000 227.436000 369.388000 215.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 369.400000 227.436000 377.080000 215.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 378.196000 227.436000 382.000000 215.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.092000 227.436000 390.772000 215.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 390.796000 227.436000 394.624000 215.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 394.600000 227.436000 401.752000 215.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 401.800000 227.436000 407.956000 215.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 407.896000 227.436000 414.052000 215.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 415.096000 227.436000 418.900000 215.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.992000 227.436000 426.712000 215.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 426.688000 227.436000 434.416000 215.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 434.392000 227.436000 439.204000 215.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 440.392000 227.436000 444.196000 215.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.288000 227.436000 449.116000 215.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 449.092000 227.436000 456.820000 215.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 456.892000 227.436000 461.704000 215.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 461.692000 227.436000 468.916000 215.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 469.888000 227.436000 473.692000 215.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.784000 227.436000 479.596000 215.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 479.584000 227.436000 487.312000 215.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 487.384000 227.436000 494.476000 215.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 495.580000 227.436000 499.384000 215.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 500.476000 227.436000 507.628000 215.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 507.676000 227.436000 515.356000 215.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 515.272000 227.436000 522.952000 215.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 522.976000 227.436000 528.712000 215.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 528.772000 227.436000 535.996000 215.436000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 227.436000 540.044000 215.436000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 213.536000 229.180000 201.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 229.204000 213.536000 234.940000 201.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 234.904000 213.536000 238.732000 201.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 238.708000 213.536000 245.860000 201.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 245.908000 213.536000 250.720000 201.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 250.708000 213.536000 257.800000 201.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 257.812000 213.536000 261.616000 201.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 261.616000 213.536000 267.772000 201.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 267.820000 213.536000 275.548000 201.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 275.524000 213.536000 282.676000 201.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 282.724000 213.536000 290.404000 201.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 290.428000 213.536000 297.520000 201.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.532000 213.536000 301.336000 201.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 301.336000 213.536000 308.488000 201.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 308.536000 213.536000 316.264000 201.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 316.240000 213.536000 323.920000 201.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 323.944000 213.536000 327.748000 201.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 327.748000 213.536000 335.428000 201.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 335.452000 213.536000 339.280000 201.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 339.256000 213.536000 346.984000 201.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 346.960000 213.536000 354.052000 201.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 354.064000 213.536000 361.744000 201.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 361.768000 213.536000 365.572000 201.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.572000 213.536000 372.796000 201.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 372.772000 213.536000 380.500000 201.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 380.476000 213.536000 385.288000 201.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 385.276000 213.536000 392.500000 201.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 392.476000 213.536000 396.280000 201.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 396.280000 213.536000 401.092000 201.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 401.080000 213.536000 408.808000 201.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 408.784000 213.536000 415.876000 201.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 415.888000 213.536000 419.692000 201.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.692000 213.536000 431.068000 201.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 431.092000 213.536000 438.244000 201.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 438.292000 213.536000 442.120000 201.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 442.096000 213.536000 449.824000 201.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 449.800000 213.536000 453.604000 201.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 453.604000 213.536000 464.980000 201.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 465.004000 213.536000 468.832000 201.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 468.808000 213.536000 474.544000 201.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.508000 213.536000 480.244000 201.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 480.208000 213.536000 487.432000 201.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 487.408000 213.536000 493.144000 201.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 491.812000 213.536000 495.616000 201.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 108.100000 90.136000 116.164000 78.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 115.600000 90.136000 122.752000 78.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 122.800000 90.136000 130.480000 78.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 130.504000 90.136000 137.596000 78.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.608000 90.136000 141.412000 78.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 141.400000 90.136000 149.032000 78.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 148.996000 90.136000 156.628000 78.136000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 7552.600000 0 477.900000 7552.600000 0 477.900000 7862.400000 0 134.300000 7862.400000 0 134.300000 7552.600000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -676070.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 4563.600000 0 168.100000 4563.600000 0 168.100000 4568.600000 0 76.900000 4568.600000 0 76.900000 4563.600000 0
+eoFillPath subpath 1 163.100000 4568.500000 0 168.100000 4568.500000 0 168.100000 4699.100000 0 163.100000 4699.100000 0 163.100000 4568.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 4568.600000 0 163.100000 4568.600000 0 163.100000 4704.000000 0 72.000000 4704.000000 0 72.000000 4568.600000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 4699.680000 87.320000 4689.680000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 4699.680000 93.420000 4689.680000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 4699.680000 97.510000 4689.680000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 4699.680000 101.420000 4689.680000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 4699.680000 104.170000 4689.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 4699.680000 110.530000 4689.680000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 4699.680000 113.270000 4689.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 4699.680000 116.470000 4689.680000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 4699.680000 123.480000 4689.680000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 4699.680000 129.610000 4689.680000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 4699.680000 135.090000 4689.680000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 4699.680000 140.890000 4689.680000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 4699.680000 144.820000 4689.680000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 4699.680000 150.920000 4689.680000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 4699.680000 153.670000 4689.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 4699.680000 156.470000 4689.680000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 4572.800000 0 168.200000 4572.800000 0 168.200000 4688.000000 0 72.000000 4688.000000 0 72.000000 4572.800000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4640.952000 79.253000 4631.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 4640.952000 86.669000 4631.952000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 4640.952000 90.215000 4631.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 4640.952000 93.077000 4631.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 4640.952000 97.406000 4631.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 4640.952000 100.853000 4631.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 4640.952000 107.324000 4631.952000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 4640.952000 112.337000 4631.952000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 4640.952000 115.271000 4631.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 4640.952000 118.655000 4631.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 4640.952000 126.512000 4631.952000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 4640.952000 130.805000 4631.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 4640.952000 135.881000 4631.952000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 4640.952000 139.355000 4631.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 4640.952000 147.284000 4631.952000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 4640.952000 150.074000 4631.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 4640.952000 155.897000 4631.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 4640.952000 158.750000 4631.952000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 4640.952000 161.853000 4631.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4630.452000 82.124000 4621.452000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 4630.452000 87.137000 4621.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 4630.452000 90.071000 4621.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 4630.452000 93.356000 4621.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 4630.452000 100.403000 4621.452000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 4630.452000 104.921000 4621.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 4630.452000 109.205000 4621.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 4630.452000 117.737000 4621.452000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 4630.452000 123.119000 4621.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 4630.452000 128.996000 4621.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 4630.452000 132.605000 4621.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 4630.452000 138.392000 4621.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 4630.452000 141.749000 4621.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 4630.452000 149.507000 4621.452000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 4630.452000 153.800000 4621.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 4630.452000 158.876000 4621.452000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 4630.452000 161.853000 4621.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4619.952000 81.764000 4610.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 4619.952000 87.596000 4610.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 4619.952000 93.356000 4610.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 4619.952000 102.050000 4610.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 4619.952000 113.822000 4610.952000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 4619.952000 122.651000 4610.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 4619.952000 134.117000 4610.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 4619.952000 138.401000 4610.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 4619.952000 147.149000 4610.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 4619.952000 158.921000 4610.952000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 4619.952000 161.853000 4610.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4609.452000 79.271000 4600.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 4609.452000 84.338000 4600.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 4609.452000 89.621000 4600.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 4609.452000 94.643000 4600.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 4609.452000 100.502000 4600.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 4609.452000 106.262000 4600.452000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 4609.452000 111.518000 4600.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 4609.452000 116.216000 4600.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 4609.452000 119.249000 4600.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 4609.452000 122.363000 4600.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 4609.452000 128.186000 4600.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 4609.452000 131.345000 4600.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 4609.452000 137.060000 4600.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 4609.452000 140.147000 4600.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 4609.452000 145.007000 4600.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 4609.452000 148.598000 4600.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 4609.452000 151.460000 4600.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 4609.452000 155.789000 4600.452000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 4609.452000 158.933000 4600.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4598.952000 80.702000 4589.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 4598.952000 83.573000 4589.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 4598.952000 89.396000 4589.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 4598.952000 95.156000 4589.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 4598.952000 100.547000 4589.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 4598.952000 109.052000 4589.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 4598.952000 111.959000 4589.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 4598.952000 117.251000 4589.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 4598.952000 121.904000 4589.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 4598.952000 126.503000 4589.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 4598.952000 129.338000 4589.952000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 4598.952000 134.936000 4589.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 4598.952000 143.441000 4589.952000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 4598.952000 148.796000 4589.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 4598.952000 154.574000 4589.952000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 4598.952000 158.876000 4589.952000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 4598.952000 161.853000 4589.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4588.452000 79.271000 4579.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 4588.452000 85.094000 4579.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 4588.452000 88.703000 4579.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 4588.452000 94.112000 4579.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 4588.452000 97.244000 4579.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 4588.452000 103.058000 4579.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 4588.452000 108.890000 4579.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 4588.452000 111.950000 4579.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 4588.452000 115.271000 4579.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 4588.452000 120.338000 4579.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 4588.452000 125.621000 4579.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 4588.452000 131.363000 4579.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 4588.452000 134.558000 4579.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 4588.452000 140.048000 4579.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 4588.452000 145.430000 4579.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 4588.452000 150.551000 4579.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 4588.452000 155.960000 4579.452000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 4588.452000 158.933000 4579.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4577.952000 80.009000 4568.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 4577.952000 85.364000 4568.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 4577.952000 88.271000 4568.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 4577.952000 91.169000 4568.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 4577.952000 97.955000 4568.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 4577.952000 107.765000 4568.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 4577.952000 110.672000 4568.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 4577.952000 115.964000 4568.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 4577.952000 120.617000 4568.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 4577.952000 125.216000 4568.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 4577.952000 128.051000 4568.952000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 4577.952000 134.954000 4568.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 4577.952000 146.285000 4568.952000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 4577.952000 151.667000 4568.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 4577.952000 155.906000 4568.952000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 4577.952000 159.033000 4568.952000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 4568.500000 0 72.100000 4568.500000 0 72.100000 4704.000000 0 72.000000 4704.000000 0 72.000000 4568.500000 0
+eoFillPath subpath 1 163.100000 4568.500000 0 163.200000 4568.500000 0 163.200000 4704.000000 0 163.100000 4704.000000 0 163.100000 4568.500000 0
+eoFillPath subpath 1 72.000000 4703.900000 0 163.200000 4703.900000 0 163.200000 4704.000000 0 72.000000 4704.000000 0 72.000000 4703.900000 0
+eoFillPath subpath 1 72.000000 4568.500000 0 163.200000 4568.500000 0 163.200000 4568.600000 0 72.000000 4568.600000 0 72.000000 4568.500000 0
+saveState
+eoClipPath subpath 1 96.900000 4643.800000 0 138.300000 4643.800000 0 138.300000 4688.000000 0 96.900000 4688.000000 0 96.900000 4643.800000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -385190.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 4289.000000 0 165.500000 4289.000000 0 165.500000 4294.000000 0 76.900000 4294.000000 0 76.900000 4289.000000 0
+eoFillPath subpath 1 160.500000 4293.900000 0 165.500000 4293.900000 0 165.500000 4450.200000 0 160.500000 4450.200000 0 160.500000 4293.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 4294.000000 0 121.400000 4294.000000 0 121.400000 4455.100000 0 72.000000 4455.100000 0 72.000000 4294.000000 0
+saveState
+eoClipPath subpath 1 72.000000 4293.900000 0 160.500000 4293.900000 0 160.500000 4455.000000 0 72.000000 4455.000000 0 72.000000 4293.900000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -348490.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 4450.780000 89.280000 4440.780000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 4450.780000 95.630000 4440.780000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 4450.780000 99.520000 4440.780000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 4450.780000 102.270000 4440.780000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 4450.780000 108.450000 4440.780000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 4450.780000 112.610000 4440.780000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 4450.780000 118.510000 4440.780000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 4450.780000 121.670000 4440.780000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 4450.780000 124.470000 4440.780000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 4450.780000 130.830000 4440.780000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 4450.780000 133.970000 4440.780000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 4450.780000 137.920000 4440.780000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 4450.780000 144.230000 4440.780000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 4450.780000 150.350000 4440.780000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 4450.780000 153.570000 4440.780000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 4439.080000 95.000000 4429.080000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 4439.080000 97.770000 4429.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 4439.080000 103.000000 4429.080000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 4439.080000 109.330000 4429.080000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 4439.080000 117.470000 4429.080000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 4439.080000 123.620000 4429.080000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 4439.080000 128.800000 4429.080000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 4439.080000 135.130000 4429.080000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 4439.080000 141.250000 4429.080000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 4439.080000 145.410000 4429.080000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4424.252000 82.961000 4415.252000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 4424.252000 87.614000 4415.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 4424.252000 93.356000 4415.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 4424.252000 98.612000 4415.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 4424.252000 103.733000 4415.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 4424.252000 106.568000 4415.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 4424.252000 111.959000 4415.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 4424.252000 114.866000 4415.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 4424.252000 117.665000 4415.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 4424.252000 122.768000 4415.252000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 4424.252000 125.747000 4415.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 4424.252000 131.651000 4415.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 4424.252000 136.907000 4415.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 4424.252000 142.307000 4415.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 4424.252000 148.049000 4415.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 4424.252000 150.956000 4415.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 4424.252000 156.302000 4415.252000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4424.252000 159.253000 4415.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4413.752000 84.095000 4404.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 4413.752000 89.900000 4404.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 4413.752000 95.318000 4404.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 4413.752000 100.349000 4404.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 4413.752000 110.789000 4404.752000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 4413.752000 111.464000 4404.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 4413.752000 114.362000 4404.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 4413.752000 119.348000 4404.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 4413.752000 126.962000 4404.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 4413.752000 132.047000 4404.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 4413.752000 139.958000 4404.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 4413.752000 142.865000 4404.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 4413.752000 147.410000 4404.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 4413.752000 153.287000 4404.752000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 4413.752000 156.333000 4404.752000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4403.252000 84.095000 4394.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 4403.252000 89.468000 4394.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 4403.252000 94.121000 4394.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 4403.252000 99.899000 4394.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 4403.252000 105.218000 4394.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 4403.252000 109.502000 4394.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 4403.252000 115.649000 4394.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 4403.252000 122.327000 4394.252000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 4403.252000 127.718000 4394.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 4403.252000 132.002000 4394.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 4403.252000 138.149000 4394.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 4403.252000 145.205000 4394.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 4403.252000 150.992000 4394.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 4403.252000 156.311000 4394.252000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4403.252000 159.253000 4394.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4392.752000 82.394000 4383.752000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 4392.752000 86.705000 4383.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 4392.752000 91.322000 4383.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 4392.752000 94.913000 4383.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 4392.752000 98.054000 4383.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 4392.752000 102.014000 4383.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 4392.752000 104.876000 4383.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 4392.752000 113.435000 4383.752000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 4392.752000 118.718000 4383.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 4392.752000 121.949000 4383.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 4392.752000 125.063000 4383.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 4392.752000 130.886000 4383.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 4392.752000 134.045000 4383.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 4392.752000 138.005000 4383.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 4392.752000 143.792000 4383.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 4392.752000 149.111000 4383.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 4392.752000 151.964000 4383.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 4392.752000 156.293000 4383.752000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 4392.752000 159.153000 4383.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4382.252000 79.271000 4373.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 4382.252000 82.169000 4373.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 4382.252000 85.526000 4373.252000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 4382.252000 90.818000 4373.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 4382.252000 94.454000 4373.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 4382.252000 99.008000 4373.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 4382.252000 104.318000 4373.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 4382.252000 110.096000 4373.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 4382.252000 115.856000 4373.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 4382.252000 119.546000 4373.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 4382.252000 124.001000 4373.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 4382.252000 129.509000 4373.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 4382.252000 133.145000 4373.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 4382.252000 139.751000 4373.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 4382.252000 145.205000 4373.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 4382.252000 148.841000 4373.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 4382.252000 152.657000 4373.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 4382.252000 156.293000 4373.252000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4382.252000 159.253000 4373.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4371.752000 84.095000 4362.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 4371.752000 88.406000 4362.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 4371.752000 93.824000 4362.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 4371.752000 99.602000 4362.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 4371.752000 105.362000 4362.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 4371.752000 108.422000 4362.752000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 4371.752000 116.747000 4362.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 4371.752000 129.275000 4362.752000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 4371.752000 135.089000 4362.752000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 4371.752000 138.698000 4362.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 4371.752000 141.560000 4362.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 4371.752000 146.906000 4362.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 4371.752000 151.190000 4362.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 4371.752000 156.266000 4362.752000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4371.752000 159.253000 4362.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4361.252000 82.196000 4352.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 4361.252000 87.560000 4352.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 4361.252000 92.213000 4352.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 4361.252000 96.551000 4352.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 4361.252000 101.708000 4352.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 4361.252000 107.216000 4352.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 4361.252000 111.653000 4352.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 4361.252000 118.961000 4352.252000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 4361.252000 124.316000 4352.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 4361.252000 128.654000 4352.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 4361.252000 133.172000 4352.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 4361.252000 138.995000 4352.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 4361.252000 143.612000 4352.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 4361.252000 148.913000 4352.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 4361.252000 153.197000 4352.252000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 4361.252000 156.333000 4352.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4350.752000 80.009000 4341.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 4350.752000 85.319000 4341.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 4350.752000 91.061000 4341.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 4350.752000 100.052000 4341.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 4350.752000 113.993000 4341.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 4350.752000 116.873000 4341.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 4350.752000 120.410000 4341.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 4350.752000 126.296000 4341.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 4350.752000 135.350000 4341.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 4350.752000 145.106000 4341.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 4350.752000 150.893000 4341.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 4350.752000 156.212000 4341.752000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4350.752000 159.253000 4341.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4340.252000 82.196000 4331.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 4340.252000 87.560000 4331.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 4340.252000 93.392000 4331.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 4340.252000 99.152000 4331.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 4340.252000 101.960000 4331.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 4340.252000 107.306000 4331.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 4340.252000 111.905000 4331.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 4340.252000 115.640000 4331.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 4340.252000 122.444000 4331.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 4340.252000 127.898000 4331.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 4340.252000 135.575000 4331.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 4340.252000 141.380000 4331.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 4340.252000 145.241000 4331.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 4340.252000 150.803000 4331.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 4340.252000 156.302000 4331.252000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4340.252000 159.253000 4331.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4329.752000 80.009000 4320.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 4329.752000 85.796000 4320.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 4329.752000 91.115000 4320.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 4329.752000 95.399000 4320.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 4329.752000 100.718000 4320.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 4329.752000 107.054000 4320.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 4329.752000 118.097000 4320.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 4329.752000 123.524000 4320.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 4329.752000 129.401000 4320.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 4329.752000 131.768000 4320.752000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 4329.752000 135.413000 4320.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 4329.752000 141.659000 4320.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 4329.752000 150.965000 4320.752000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 4329.752000 156.320000 4320.752000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4329.752000 159.253000 4320.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4319.252000 81.017000 4310.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 4319.252000 84.608000 4310.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 4319.252000 89.963000 4310.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 4319.252000 92.870000 4310.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 4319.252000 98.693000 4310.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 4319.252000 103.310000 4310.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 4319.252000 107.243000 4310.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 4319.252000 116.081000 4310.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 4319.252000 121.886000 4310.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 4319.252000 127.205000 4310.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 4319.252000 132.983000 4310.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 4319.252000 136.943000 4310.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 4319.252000 143.846000 4310.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 4319.252000 148.184000 4310.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 4319.252000 153.260000 4310.252000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 4319.252000 156.433000 4310.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4308.752000 79.271000 4299.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 4308.752000 85.094000 4299.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 4308.752000 90.854000 4299.752000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 4308.752000 93.653000 4299.752000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 4293.900000 0 72.100000 4293.900000 0 72.100000 4455.100000 0 72.000000 4455.100000 0 72.000000 4293.900000 0
+eoFillPath subpath 1 160.500000 4293.900000 0 160.600000 4293.900000 0 160.600000 4455.100000 0 160.500000 4455.100000 0 160.500000 4293.900000 0
+eoFillPath subpath 1 72.000000 4455.000000 0 160.600000 4455.000000 0 160.600000 4455.100000 0 72.000000 4455.100000 0 72.000000 4455.000000 0
+eoFillPath subpath 1 72.000000 4293.900000 0 160.600000 4293.900000 0 160.600000 4294.000000 0 72.000000 4294.000000 0 72.000000 4293.900000 0
+saveState
+eoClipPath subpath 1 108.000000 3806.500000 0 178.900000 3806.500000 0 178.900000 3863.200000 0 108.000000 3863.200000 0 108.000000 3806.500000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -301460.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 -251.900000 0 165.500000 -251.900000 0 165.500000 -246.900000 0 76.900000 -246.900000 0 76.900000 -251.900000 0
+eoFillPath subpath 1 160.500000 -247.000000 0 165.500000 -247.000000 0 165.500000 -138.200000 0 160.500000 -138.200000 0 160.500000 -247.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 -246.900000 0 160.500000 -246.900000 0 160.500000 -133.300000 0 72.000000 -133.300000 0 72.000000 -246.900000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -137.648000 83.771000 -146.648000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 -137.648000 89.594000 -146.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 -137.648000 92.465000 -146.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 -137.648000 97.568000 -146.648000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 -137.648000 100.943000 -146.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 -137.648000 106.955000 -146.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 -137.648000 110.447000 -146.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 -137.648000 114.425000 -146.648000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 -137.648000 119.717000 -146.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 -137.648000 127.493000 -146.648000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 -137.648000 130.949000 -146.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 -137.648000 136.574000 -146.648000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 -137.648000 141.920000 -146.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 -137.648000 147.365000 -146.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 -137.648000 151.703000 -146.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 -137.648000 156.320000 -146.648000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 -137.648000 159.153000 -146.648000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -148.148000 81.764000 -157.148000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 -148.148000 85.130000 -157.148000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 -148.148000 88.712000 -157.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 -148.148000 94.022000 -157.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 -148.148000 98.306000 -157.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -148.148000 102.455000 -157.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 -148.148000 106.676000 -157.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 -148.148000 110.312000 -157.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 -148.148000 114.920000 -157.148000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 -148.148000 119.060000 -157.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 -148.148000 125.450000 -157.148000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 -148.148000 130.832000 -157.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 -148.148000 139.445000 -157.148000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 -148.148000 145.169000 -157.148000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 -148.148000 148.076000 -157.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 -148.148000 153.323000 -157.148000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -148.148000 156.433000 -157.148000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -158.648000 80.009000 -167.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 -158.648000 82.871000 -167.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 -158.648000 88.316000 -167.648000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 -158.648000 94.094000 -167.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 -158.648000 96.947000 -167.648000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 -158.648000 104.948000 -167.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 -158.648000 113.705000 -167.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 -158.648000 119.492000 -167.648000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 -158.648000 124.811000 -167.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 -158.648000 132.848000 -167.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 -158.648000 141.605000 -167.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 -158.648000 144.467000 -167.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 -158.648000 148.103000 -167.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 -158.648000 150.965000 -167.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 -158.648000 156.311000 -167.648000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -158.648000 159.253000 -167.648000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -169.148000 80.999000 -178.148000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 -169.148000 90.539000 -178.148000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 -169.148000 95.318000 -178.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 -169.148000 99.602000 -178.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 -169.148000 102.473000 -178.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 -169.148000 108.260000 -178.148000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 -169.148000 110.762000 -178.148000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 -169.148000 115.316000 -178.148000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 -169.148000 122.156000 -178.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 -169.148000 132.299000 -178.148000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 -169.148000 136.970000 -178.148000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 -169.148000 139.877000 -178.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 -169.148000 142.775000 -178.148000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 -169.148000 148.022000 -178.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 -169.148000 152.720000 -178.148000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 -169.148000 156.311000 -178.148000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -169.148000 159.253000 -178.148000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -179.648000 83.006000 -188.648000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 -179.648000 88.793000 -188.648000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 -179.648000 91.664000 -188.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 -179.648000 94.562000 -188.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 -179.648000 100.349000 -188.648000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 -179.648000 103.157000 -188.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 -179.648000 108.980000 -188.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 -179.648000 114.740000 -188.648000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 -179.648000 119.375000 -188.648000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 -179.648000 128.033000 -188.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 -179.648000 141.479000 -188.648000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 -179.648000 146.807000 -188.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 -179.648000 152.684000 -188.648000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 -179.648000 156.293000 -188.648000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -179.648000 159.253000 -188.648000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -190.148000 79.730000 -199.148000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 -190.148000 84.005000 -199.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 -190.148000 89.423000 -199.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 -190.148000 98.036000 -199.148000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 -190.148000 121.157000 -199.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 -190.148000 145.115000 -199.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 -190.148000 151.001000 -199.148000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 -190.148000 156.320000 -199.148000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 -190.148000 159.253000 -199.148000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -200.648000 83.285000 -209.648000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 -200.648000 89.099000 -209.648000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 -200.648000 93.401000 -209.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 -200.648000 98.477000 -209.648000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 -200.648000 103.121000 -209.648000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 -200.648000 105.974000 -209.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 -200.648000 111.320000 -209.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 -200.648000 115.604000 -209.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 -200.648000 123.857000 -209.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 -200.648000 136.007000 -209.648000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 -200.648000 141.794000 -209.648000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 -200.648000 144.665000 -209.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 -200.648000 147.464000 -209.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 -200.648000 153.251000 -209.648000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -200.648000 156.433000 -209.648000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -211.148000 79.271000 -220.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -211.148000 85.094000 -220.148000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -211.148000 90.854000 -220.148000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 -211.148000 96.146000 -220.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 -211.148000 102.302000 -220.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 -211.148000 107.711000 -220.148000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 -211.148000 113.048000 -220.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 -211.148000 119.204000 -220.148000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 -211.148000 124.991000 -220.148000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 -211.148000 130.310000 -220.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 -211.148000 135.647000 -220.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 -211.148000 144.755000 -220.148000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 -211.148000 153.323000 -220.148000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 -211.148000 156.333000 -220.148000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -221.648000 82.160000 -230.648000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 -221.648000 85.067000 -230.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 -221.648000 89.297000 -230.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 -221.648000 94.616000 -230.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 -221.648000 98.747000 -230.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 -221.648000 106.055000 -230.648000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 -221.648000 109.700000 -230.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 -221.648000 115.055000 -230.648000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 -221.648000 118.601000 -230.648000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 -221.648000 124.010000 -230.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 -221.648000 128.042000 -230.648000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 -221.648000 135.998000 -230.648000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 -221.648000 141.785000 -230.648000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 -221.648000 144.656000 -230.648000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 -221.648000 147.554000 -230.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 -221.648000 153.341000 -230.648000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 -221.648000 156.433000 -230.648000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 -232.148000 79.271000 -241.148000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 -232.148000 85.094000 -241.148000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 -232.148000 90.854000 -241.148000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 -232.148000 93.743000 -241.148000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 -247.000000 0 72.100000 -247.000000 0 72.100000 -133.300000 0 72.000000 -133.300000 0 72.000000 -247.000000 0
+eoFillPath subpath 1 160.500000 -247.000000 0 160.600000 -247.000000 0 160.600000 -133.300000 0 160.500000 -133.300000 0 160.500000 -247.000000 0
+eoFillPath subpath 1 72.000000 -133.400000 0 160.600000 -133.400000 0 160.600000 -133.300000 0 72.000000 -133.300000 0 72.000000 -133.400000 0
+eoFillPath subpath 1 72.000000 -247.000000 0 160.600000 -247.000000 0 160.600000 -246.900000 0 72.000000 -246.900000 0 72.000000 -247.000000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 5942.600000 0 169.600000 5942.600000 0 169.600000 5947.600000 0 76.900000 5947.600000 0 76.900000 5942.600000 0
+eoFillPath subpath 1 164.600000 5947.500000 0 169.600000 5947.500000 0 169.600000 6063.100000 0 164.600000 6063.100000 0 164.600000 5947.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 5947.600000 0 121.400000 5947.600000 0 121.400000 6068.000000 0 72.000000 6068.000000 0 72.000000 5947.600000 0
+saveState
+eoClipPath subpath 1 72.000000 5947.500000 0 164.600000 5947.500000 0 164.600000 6067.900000 0 72.000000 6067.900000 0 72.000000 5947.500000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -509730.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 6017.500000 0 93.700000 6017.500000 0 93.700000 6036.700000 0 72.000000 6036.700000 0 72.000000 6017.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 6017.500000 0 169.600000 6017.500000 0 169.600000 6036.700000 0 93.700000 6036.700000 0 93.700000 6017.500000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 6000.800000 0 93.700000 6000.800000 0 93.700000 6017.500000 0 72.000000 6017.500000 0 72.000000 6000.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 6000.800000 0 169.600000 6000.800000 0 169.600000 6017.500000 0 93.700000 6017.500000 0 93.700000 6000.800000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 5981.600000 0 93.700000 5981.600000 0 93.700000 6000.800000 0 72.000000 6000.800000 0 72.000000 5981.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 5981.600000 0 169.600000 5981.600000 0 169.600000 6000.800000 0 93.700000 6000.800000 0 93.700000 5981.600000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 5962.400000 0 93.700000 5962.400000 0 93.700000 5981.600000 0 72.000000 5981.600000 0 72.000000 5962.400000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 5962.400000 0 169.600000 5962.400000 0 169.600000 5981.600000 0 93.700000 5981.600000 0 93.700000 5962.400000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6063.652000 82.898000 6054.652000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 6063.652000 87.200000 6054.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 6063.652000 90.809000 6054.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 6063.652000 93.671000 6054.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 6063.652000 98.315000 6054.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 6063.652000 101.906000 6054.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 6063.652000 106.514000 6054.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 6063.652000 109.754000 6054.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 6063.652000 112.868000 6054.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 6063.652000 118.691000 6054.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 6063.652000 121.850000 6054.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 6063.652000 125.702000 6054.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 6063.652000 131.588000 6054.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 6063.652000 136.907000 6054.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 6063.652000 140.039000 6054.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 6063.652000 146.078000 6054.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 6063.652000 151.442000 6054.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 6063.652000 154.349000 6054.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 6063.652000 157.148000 6054.652000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 6063.652000 160.433000 6054.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6053.152000 84.095000 6044.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 6053.152000 89.468000 6044.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 6053.152000 94.580000 6044.152000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 6053.152000 97.631000 6044.152000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 6032.752000 104.443000 6023.752000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 6032.752000 109.060000 6023.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 6032.752000 113.398000 6023.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 6032.752000 119.194000 6023.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 6032.752000 124.612000 6023.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 6032.752000 127.465000 6023.752000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 6016.052000 101.176000 6007.052000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 6016.052000 104.074000 6007.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 6016.052000 109.420000 6007.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 6016.052000 114.442000 6007.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 6016.052000 120.202000 6007.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 6016.052000 123.811000 6007.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 6016.052000 129.121000 6007.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 6016.052000 134.899000 6007.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 6016.052000 139.516000 6007.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 6016.052000 143.107000 6007.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 6016.052000 148.417000 6007.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 6016.052000 151.270000 6007.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 6016.052000 157.093000 6007.052000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 5999.352000 103.048000 5990.352000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 5999.352000 108.421000 5990.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 5999.352000 113.443000 5990.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 5999.352000 118.852000 5990.352000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 5999.352000 124.702000 5990.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 5999.352000 130.021000 5990.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 5999.352000 135.079000 5990.352000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 5980.152000 104.407000 5971.152000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 5980.152000 109.816000 5971.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 5980.152000 115.594000 5971.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 5980.152000 121.354000 5971.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 5980.152000 125.692000 5971.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 5980.152000 128.563000 5971.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 5980.152000 133.954000 5971.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 5980.152000 139.786000 5971.152000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 5947.500000 0 72.100000 5947.500000 0 72.100000 6068.000000 0 72.000000 6068.000000 0 72.000000 5947.500000 0
+eoFillPath subpath 1 164.600000 5947.500000 0 164.700000 5947.500000 0 164.700000 6068.000000 0 164.600000 6068.000000 0 164.600000 5947.500000 0
+eoFillPath subpath 1 72.000000 6067.900000 0 164.700000 6067.900000 0 164.700000 6068.000000 0 72.000000 6068.000000 0 72.000000 6067.900000 0
+eoFillPath subpath 1 72.000000 5947.500000 0 164.700000 5947.500000 0 164.700000 5947.600000 0 72.000000 5947.600000 0 72.000000 5947.500000 0
+eoFillPath subpath 1 91.300000 5962.400000 0 93.700000 5962.400000 0 93.700000 6036.700000 0 91.300000 6036.700000 0 91.300000 5962.400000 0
+eoFillPath subpath 1 72.000000 5981.600000 0 169.600000 5981.600000 0 169.600000 5984.000000 0 72.000000 5984.000000 0 72.000000 5981.600000 0
+eoFillPath subpath 1 72.000000 6034.300000 0 169.600000 6034.300000 0 169.600000 6036.700000 0 72.000000 6036.700000 0 72.000000 6034.300000 0
+eoFillPath subpath 1 72.000000 5962.400000 0 169.600000 5962.400000 0 169.600000 5964.800000 0 72.000000 5964.800000 0 72.000000 5962.400000 0
+saveState
+eoClipPath subpath 1 108.000000 -1903.600000 0 150.800000 -1903.600000 0 150.800000 -1859.400000 0 108.000000 -1859.400000 0 108.000000 -1903.600000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 269560.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -2753.600000 0 499.600000 -2753.600000 0 499.600000 -2748.500000 0 186.800000 -2748.500000 0 186.800000 -2753.600000 0
+eoFillPath subpath 1 494.500000 -2748.600000 0 499.600000 -2748.600000 0 499.600000 -2560.200000 0 494.500000 -2560.200000 0 494.500000 -2748.600000 0
+saveState
+eoClipPath subpath 1 181.800000 -2748.500000 0 494.500000 -2748.500000 0 494.500000 -2555.200000 0 181.800000 -2555.200000 0 181.800000 -2748.500000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -2555.100000 0 494.500000 -2555.100000 0 494.500000 -2555.100000 0 181.700000 -2555.100000 0
+eoFillPath subpath 1 181.700000 -2555.100000 0 494.500000 -2555.100000 0 494.500000 -2555.900000 0 181.700000 -2555.900000 0 181.700000 -2555.100000 0
+eoFillPath subpath 1 181.700000 -2555.900000 0 494.500000 -2555.900000 0 494.500000 -2556.700000 0 181.700000 -2556.700000 0 181.700000 -2555.900000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -2556.700000 0 494.500000 -2556.700000 0 494.500000 -2557.400000 0 181.700000 -2557.400000 0 181.700000 -2556.700000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -2557.400000 0 494.500000 -2557.400000 0 494.500000 -2558.200000 0 181.700000 -2558.200000 0 181.700000 -2557.400000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -2558.200000 0 494.500000 -2558.200000 0 494.500000 -2558.900000 0 181.700000 -2558.900000 0 181.700000 -2558.200000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -2558.900000 0 494.500000 -2558.900000 0 494.500000 -2559.700000 0 181.700000 -2559.700000 0 181.700000 -2558.900000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -2559.700000 0 494.500000 -2559.700000 0 494.500000 -2560.500000 0 181.700000 -2560.500000 0 181.700000 -2559.700000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -2560.500000 0 494.500000 -2560.500000 0 494.500000 -2561.200000 0 181.700000 -2561.200000 0 181.700000 -2560.500000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -2561.200000 0 494.500000 -2561.200000 0 494.500000 -2562.000000 0 181.700000 -2562.000000 0 181.700000 -2561.200000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -2562.000000 0 494.500000 -2562.000000 0 494.500000 -2562.700000 0 181.700000 -2562.700000 0 181.700000 -2562.000000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -2562.700000 0 494.500000 -2562.700000 0 494.500000 -2563.500000 0 181.700000 -2563.500000 0 181.700000 -2562.700000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -2563.500000 0 494.500000 -2563.500000 0 494.500000 -2564.200000 0 181.700000 -2564.200000 0 181.700000 -2563.500000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -2564.200000 0 494.500000 -2564.200000 0 494.500000 -2565.000000 0 181.700000 -2565.000000 0 181.700000 -2564.200000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -2565.000000 0 494.500000 -2565.000000 0 494.500000 -2565.800000 0 181.700000 -2565.800000 0 181.700000 -2565.000000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -2565.800000 0 494.500000 -2565.800000 0 494.500000 -2566.500000 0 181.700000 -2566.500000 0 181.700000 -2565.800000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -2566.500000 0 494.500000 -2566.500000 0 494.500000 -2567.300000 0 181.700000 -2567.300000 0 181.700000 -2566.500000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -2567.300000 0 494.500000 -2567.300000 0 494.500000 -2568.000000 0 181.700000 -2568.000000 0 181.700000 -2567.300000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -2568.000000 0 494.500000 -2568.000000 0 494.500000 -2568.800000 0 181.700000 -2568.800000 0 181.700000 -2568.000000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -2568.800000 0 494.500000 -2568.800000 0 494.500000 -2569.500000 0 181.700000 -2569.500000 0 181.700000 -2568.800000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -2569.500000 0 494.500000 -2569.500000 0 494.500000 -2570.300000 0 181.700000 -2570.300000 0 181.700000 -2569.500000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -2570.300000 0 494.500000 -2570.300000 0 494.500000 -2571.100000 0 181.700000 -2571.100000 0 181.700000 -2570.300000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -2571.100000 0 494.500000 -2571.100000 0 494.500000 -2571.800000 0 181.700000 -2571.800000 0 181.700000 -2571.100000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -2571.800000 0 494.500000 -2571.800000 0 494.500000 -2572.600000 0 181.700000 -2572.600000 0 181.700000 -2571.800000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -2572.600000 0 494.500000 -2572.600000 0 494.500000 -2573.300000 0 181.700000 -2573.300000 0 181.700000 -2572.600000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -2573.300000 0 494.500000 -2573.300000 0 494.500000 -2574.100000 0 181.700000 -2574.100000 0 181.700000 -2573.300000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -2574.100000 0 494.500000 -2574.100000 0 494.500000 -2574.900000 0 181.700000 -2574.900000 0 181.700000 -2574.100000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -2574.900000 0 494.500000 -2574.900000 0 494.500000 -2575.600000 0 181.700000 -2575.600000 0 181.700000 -2574.900000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -2575.600000 0 494.500000 -2575.600000 0 494.500000 -2576.400000 0 181.700000 -2576.400000 0 181.700000 -2575.600000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -2576.400000 0 494.500000 -2576.400000 0 494.500000 -2577.100000 0 181.700000 -2577.100000 0 181.700000 -2576.400000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -2577.100000 0 494.500000 -2577.100000 0 494.500000 -2577.900000 0 181.700000 -2577.900000 0 181.700000 -2577.100000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -2577.900000 0 494.500000 -2577.900000 0 494.500000 -2578.600000 0 181.700000 -2578.600000 0 181.700000 -2577.900000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -2578.600000 0 494.500000 -2578.600000 0 494.500000 -2579.400000 0 181.700000 -2579.400000 0 181.700000 -2578.600000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -2579.400000 0 494.500000 -2579.400000 0 494.500000 -2580.200000 0 181.700000 -2580.200000 0 181.700000 -2579.400000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -2580.200000 0 494.500000 -2580.200000 0 494.500000 -2580.900000 0 181.700000 -2580.900000 0 181.700000 -2580.200000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -2580.900000 0 494.500000 -2580.900000 0 494.500000 -2581.700000 0 181.700000 -2581.700000 0 181.700000 -2580.900000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -2581.700000 0 494.500000 -2581.700000 0 494.500000 -2582.400000 0 181.700000 -2582.400000 0 181.700000 -2581.700000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -2582.400000 0 494.500000 -2582.400000 0 494.500000 -2583.200000 0 181.700000 -2583.200000 0 181.700000 -2582.400000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -2583.200000 0 494.500000 -2583.200000 0 494.500000 -2584.000000 0 181.700000 -2584.000000 0 181.700000 -2583.200000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -2584.000000 0 494.500000 -2584.000000 0 494.500000 -2584.700000 0 181.700000 -2584.700000 0 181.700000 -2584.000000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -2584.700000 0 494.500000 -2584.700000 0 494.500000 -2585.500000 0 181.700000 -2585.500000 0 181.700000 -2584.700000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -2585.500000 0 494.500000 -2585.500000 0 494.500000 -2586.200000 0 181.700000 -2586.200000 0 181.700000 -2585.500000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -2586.200000 0 494.500000 -2586.200000 0 494.500000 -2587.000000 0 181.700000 -2587.000000 0 181.700000 -2586.200000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -2587.000000 0 494.500000 -2587.000000 0 494.500000 -2587.700000 0 181.700000 -2587.700000 0 181.700000 -2587.000000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -2587.700000 0 494.500000 -2587.700000 0 494.500000 -2588.500000 0 181.700000 -2588.500000 0 181.700000 -2587.700000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -2588.500000 0 494.500000 -2588.500000 0 494.500000 -2589.300000 0 181.700000 -2589.300000 0 181.700000 -2588.500000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -2589.300000 0 494.500000 -2589.300000 0 494.500000 -2590.000000 0 181.700000 -2590.000000 0 181.700000 -2589.300000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -2590.000000 0 494.500000 -2590.000000 0 494.500000 -2590.800000 0 181.700000 -2590.800000 0 181.700000 -2590.000000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -2590.800000 0 494.500000 -2590.800000 0 494.500000 -2591.500000 0 181.700000 -2591.500000 0 181.700000 -2590.800000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -2591.500000 0 494.500000 -2591.500000 0 494.500000 -2592.300000 0 181.700000 -2592.300000 0 181.700000 -2591.500000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -2592.300000 0 494.500000 -2592.300000 0 494.500000 -2593.100000 0 181.700000 -2593.100000 0 181.700000 -2592.300000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -2593.100000 0 494.500000 -2593.100000 0 494.500000 -2593.800000 0 181.700000 -2593.800000 0 181.700000 -2593.100000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -2593.800000 0 494.500000 -2593.800000 0 494.500000 -2594.600000 0 181.700000 -2594.600000 0 181.700000 -2593.800000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -2594.600000 0 494.500000 -2594.600000 0 494.500000 -2595.300000 0 181.700000 -2595.300000 0 181.700000 -2594.600000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -2595.300000 0 494.500000 -2595.300000 0 494.500000 -2596.100000 0 181.700000 -2596.100000 0 181.700000 -2595.300000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -2596.100000 0 494.500000 -2596.100000 0 494.500000 -2596.900000 0 181.700000 -2596.900000 0 181.700000 -2596.100000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -2596.900000 0 494.500000 -2596.900000 0 494.500000 -2597.600000 0 181.700000 -2597.600000 0 181.700000 -2596.900000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -2597.600000 0 494.500000 -2597.600000 0 494.500000 -2598.400000 0 181.700000 -2598.400000 0 181.700000 -2597.600000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -2598.400000 0 494.500000 -2598.400000 0 494.500000 -2599.100000 0 181.700000 -2599.100000 0 181.700000 -2598.400000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -2599.100000 0 494.500000 -2599.100000 0 494.500000 -2599.900000 0 181.700000 -2599.900000 0 181.700000 -2599.100000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -2599.900000 0 494.500000 -2599.900000 0 494.500000 -2600.600000 0 181.700000 -2600.600000 0 181.700000 -2599.900000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -2600.600000 0 494.500000 -2600.600000 0 494.500000 -2601.400000 0 181.700000 -2601.400000 0 181.700000 -2600.600000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -2601.400000 0 494.500000 -2601.400000 0 494.500000 -2602.200000 0 181.700000 -2602.200000 0 181.700000 -2601.400000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -2602.200000 0 494.500000 -2602.200000 0 494.500000 -2602.900000 0 181.700000 -2602.900000 0 181.700000 -2602.200000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -2602.900000 0 494.500000 -2602.900000 0 494.500000 -2603.700000 0 181.700000 -2603.700000 0 181.700000 -2602.900000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -2603.700000 0 494.500000 -2603.700000 0 494.500000 -2604.400000 0 181.700000 -2604.400000 0 181.700000 -2603.700000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -2604.400000 0 494.500000 -2604.400000 0 494.500000 -2605.200000 0 181.700000 -2605.200000 0 181.700000 -2604.400000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -2605.200000 0 494.500000 -2605.200000 0 494.500000 -2606.000000 0 181.700000 -2606.000000 0 181.700000 -2605.200000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -2606.000000 0 494.500000 -2606.000000 0 494.500000 -2606.700000 0 181.700000 -2606.700000 0 181.700000 -2606.000000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -2606.700000 0 494.500000 -2606.700000 0 494.500000 -2607.500000 0 181.700000 -2607.500000 0 181.700000 -2606.700000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -2607.500000 0 494.500000 -2607.500000 0 494.500000 -2608.200000 0 181.700000 -2608.200000 0 181.700000 -2607.500000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -2608.200000 0 494.500000 -2608.200000 0 494.500000 -2609.000000 0 181.700000 -2609.000000 0 181.700000 -2608.200000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -2609.000000 0 494.500000 -2609.000000 0 494.500000 -2609.800000 0 181.700000 -2609.800000 0 181.700000 -2609.000000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -2609.800000 0 494.500000 -2609.800000 0 494.500000 -2610.500000 0 181.700000 -2610.500000 0 181.700000 -2609.800000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -2610.500000 0 494.500000 -2610.500000 0 494.500000 -2611.300000 0 181.700000 -2611.300000 0 181.700000 -2610.500000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -2611.300000 0 494.500000 -2611.300000 0 494.500000 -2612.000000 0 181.700000 -2612.000000 0 181.700000 -2611.300000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -2612.000000 0 494.500000 -2612.000000 0 494.500000 -2612.800000 0 181.700000 -2612.800000 0 181.700000 -2612.000000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -2612.800000 0 494.500000 -2612.800000 0 494.500000 -2613.500000 0 181.700000 -2613.500000 0 181.700000 -2612.800000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -2613.500000 0 494.500000 -2613.500000 0 494.500000 -2614.300000 0 181.700000 -2614.300000 0 181.700000 -2613.500000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -2614.300000 0 494.500000 -2614.300000 0 494.500000 -2615.100000 0 181.700000 -2615.100000 0 181.700000 -2614.300000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -2615.100000 0 494.500000 -2615.100000 0 494.500000 -2615.800000 0 181.700000 -2615.800000 0 181.700000 -2615.100000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -2615.800000 0 494.500000 -2615.800000 0 494.500000 -2616.600000 0 181.700000 -2616.600000 0 181.700000 -2615.800000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -2616.600000 0 494.500000 -2616.600000 0 494.500000 -2617.300000 0 181.700000 -2617.300000 0 181.700000 -2616.600000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -2617.300000 0 494.500000 -2617.300000 0 494.500000 -2618.100000 0 181.700000 -2618.100000 0 181.700000 -2617.300000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -2618.100000 0 494.500000 -2618.100000 0 494.500000 -2618.900000 0 181.700000 -2618.900000 0 181.700000 -2618.100000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -2618.900000 0 494.500000 -2618.900000 0 494.500000 -2619.600000 0 181.700000 -2619.600000 0 181.700000 -2618.900000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -2619.600000 0 494.500000 -2619.600000 0 494.500000 -2620.400000 0 181.700000 -2620.400000 0 181.700000 -2619.600000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -2620.400000 0 494.500000 -2620.400000 0 494.500000 -2621.100000 0 181.700000 -2621.100000 0 181.700000 -2620.400000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -2621.100000 0 494.500000 -2621.100000 0 494.500000 -2621.900000 0 181.700000 -2621.900000 0 181.700000 -2621.100000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -2621.900000 0 494.500000 -2621.900000 0 494.500000 -2622.700000 0 181.700000 -2622.700000 0 181.700000 -2621.900000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -2622.700000 0 494.500000 -2622.700000 0 494.500000 -2623.400000 0 181.700000 -2623.400000 0 181.700000 -2622.700000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -2623.400000 0 494.500000 -2623.400000 0 494.500000 -2624.200000 0 181.700000 -2624.200000 0 181.700000 -2623.400000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -2624.200000 0 494.500000 -2624.200000 0 494.500000 -2624.900000 0 181.700000 -2624.900000 0 181.700000 -2624.200000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -2624.900000 0 494.500000 -2624.900000 0 494.500000 -2625.700000 0 181.700000 -2625.700000 0 181.700000 -2624.900000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -2625.700000 0 494.500000 -2625.700000 0 494.500000 -2626.400000 0 181.700000 -2626.400000 0 181.700000 -2625.700000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -2626.400000 0 494.500000 -2626.400000 0 494.500000 -2627.200000 0 181.700000 -2627.200000 0 181.700000 -2626.400000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -2627.200000 0 494.500000 -2627.200000 0 494.500000 -2628.000000 0 181.700000 -2628.000000 0 181.700000 -2627.200000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -2628.000000 0 494.500000 -2628.000000 0 494.500000 -2628.700000 0 181.700000 -2628.700000 0 181.700000 -2628.000000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -2628.700000 0 494.500000 -2628.700000 0 494.500000 -2629.500000 0 181.700000 -2629.500000 0 181.700000 -2628.700000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -2629.500000 0 494.500000 -2629.500000 0 494.500000 -2630.200000 0 181.700000 -2630.200000 0 181.700000 -2629.500000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -2630.200000 0 494.500000 -2630.200000 0 494.500000 -2631.000000 0 181.700000 -2631.000000 0 181.700000 -2630.200000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -2631.000000 0 494.500000 -2631.000000 0 494.500000 -2631.800000 0 181.700000 -2631.800000 0 181.700000 -2631.000000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -2631.800000 0 494.500000 -2631.800000 0 494.500000 -2632.500000 0 181.700000 -2632.500000 0 181.700000 -2631.800000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -2632.500000 0 494.500000 -2632.500000 0 494.500000 -2633.300000 0 181.700000 -2633.300000 0 181.700000 -2632.500000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -2633.300000 0 494.500000 -2633.300000 0 494.500000 -2634.000000 0 181.700000 -2634.000000 0 181.700000 -2633.300000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -2634.000000 0 494.500000 -2634.000000 0 494.500000 -2634.800000 0 181.700000 -2634.800000 0 181.700000 -2634.000000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -2634.800000 0 494.500000 -2634.800000 0 494.500000 -2635.600000 0 181.700000 -2635.600000 0 181.700000 -2634.800000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -2635.600000 0 494.500000 -2635.600000 0 494.500000 -2636.300000 0 181.700000 -2636.300000 0 181.700000 -2635.600000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -2636.300000 0 494.500000 -2636.300000 0 494.500000 -2637.100000 0 181.700000 -2637.100000 0 181.700000 -2636.300000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -2637.100000 0 494.500000 -2637.100000 0 494.500000 -2637.800000 0 181.700000 -2637.800000 0 181.700000 -2637.100000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -2637.800000 0 494.500000 -2637.800000 0 494.500000 -2638.600000 0 181.700000 -2638.600000 0 181.700000 -2637.800000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -2638.600000 0 494.500000 -2638.600000 0 494.500000 -2639.300000 0 181.700000 -2639.300000 0 181.700000 -2638.600000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -2639.300000 0 494.500000 -2639.300000 0 494.500000 -2640.100000 0 181.700000 -2640.100000 0 181.700000 -2639.300000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -2640.100000 0 494.500000 -2640.100000 0 494.500000 -2640.900000 0 181.700000 -2640.900000 0 181.700000 -2640.100000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -2640.900000 0 494.500000 -2640.900000 0 494.500000 -2641.600000 0 181.700000 -2641.600000 0 181.700000 -2640.900000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -2641.600000 0 494.500000 -2641.600000 0 494.500000 -2642.400000 0 181.700000 -2642.400000 0 181.700000 -2641.600000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -2642.400000 0 494.500000 -2642.400000 0 494.500000 -2643.100000 0 181.700000 -2643.100000 0 181.700000 -2642.400000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -2643.100000 0 494.500000 -2643.100000 0 494.500000 -2643.900000 0 181.700000 -2643.900000 0 181.700000 -2643.100000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -2643.900000 0 494.500000 -2643.900000 0 494.500000 -2644.700000 0 181.700000 -2644.700000 0 181.700000 -2643.900000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -2644.700000 0 494.500000 -2644.700000 0 494.500000 -2645.400000 0 181.700000 -2645.400000 0 181.700000 -2644.700000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -2645.400000 0 494.500000 -2645.400000 0 494.500000 -2646.200000 0 181.700000 -2646.200000 0 181.700000 -2645.400000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -2646.200000 0 494.500000 -2646.200000 0 494.500000 -2646.900000 0 181.700000 -2646.900000 0 181.700000 -2646.200000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -2646.900000 0 494.500000 -2646.900000 0 494.500000 -2647.700000 0 181.700000 -2647.700000 0 181.700000 -2646.900000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -2647.700000 0 494.500000 -2647.700000 0 494.500000 -2648.500000 0 181.700000 -2648.500000 0 181.700000 -2647.700000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -2648.500000 0 494.500000 -2648.500000 0 494.500000 -2649.200000 0 181.700000 -2649.200000 0 181.700000 -2648.500000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -2649.200000 0 494.500000 -2649.200000 0 494.500000 -2650.000000 0 181.700000 -2650.000000 0 181.700000 -2649.200000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -2650.000000 0 494.500000 -2650.000000 0 494.500000 -2650.700000 0 181.700000 -2650.700000 0 181.700000 -2650.000000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -2650.700000 0 494.500000 -2650.700000 0 494.500000 -2651.500000 0 181.700000 -2651.500000 0 181.700000 -2650.700000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -2651.500000 0 494.500000 -2651.500000 0 494.500000 -2652.200000 0 181.700000 -2652.200000 0 181.700000 -2651.500000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -2652.200000 0 494.500000 -2652.200000 0 494.500000 -2653.000000 0 181.700000 -2653.000000 0 181.700000 -2652.200000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -2653.000000 0 494.500000 -2653.000000 0 494.500000 -2653.800000 0 181.700000 -2653.800000 0 181.700000 -2653.000000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -2653.800000 0 494.500000 -2653.800000 0 494.500000 -2654.500000 0 181.700000 -2654.500000 0 181.700000 -2653.800000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -2654.500000 0 494.500000 -2654.500000 0 494.500000 -2655.300000 0 181.700000 -2655.300000 0 181.700000 -2654.500000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -2655.300000 0 494.500000 -2655.300000 0 494.500000 -2656.000000 0 181.700000 -2656.000000 0 181.700000 -2655.300000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -2656.000000 0 494.500000 -2656.000000 0 494.500000 -2656.800000 0 181.700000 -2656.800000 0 181.700000 -2656.000000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -2656.800000 0 494.500000 -2656.800000 0 494.500000 -2657.600000 0 181.700000 -2657.600000 0 181.700000 -2656.800000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -2657.600000 0 494.500000 -2657.600000 0 494.500000 -2658.300000 0 181.700000 -2658.300000 0 181.700000 -2657.600000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -2658.300000 0 494.500000 -2658.300000 0 494.500000 -2659.100000 0 181.700000 -2659.100000 0 181.700000 -2658.300000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -2659.100000 0 494.500000 -2659.100000 0 494.500000 -2659.800000 0 181.700000 -2659.800000 0 181.700000 -2659.100000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -2659.800000 0 494.500000 -2659.800000 0 494.500000 -2660.600000 0 181.700000 -2660.600000 0 181.700000 -2659.800000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -2660.600000 0 494.500000 -2660.600000 0 494.500000 -2661.400000 0 181.700000 -2661.400000 0 181.700000 -2660.600000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -2661.400000 0 494.500000 -2661.400000 0 494.500000 -2662.100000 0 181.700000 -2662.100000 0 181.700000 -2661.400000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -2662.100000 0 494.500000 -2662.100000 0 494.500000 -2662.900000 0 181.700000 -2662.900000 0 181.700000 -2662.100000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -2662.900000 0 494.500000 -2662.900000 0 494.500000 -2663.600000 0 181.700000 -2663.600000 0 181.700000 -2662.900000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -2663.600000 0 494.500000 -2663.600000 0 494.500000 -2664.400000 0 181.700000 -2664.400000 0 181.700000 -2663.600000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -2664.400000 0 494.500000 -2664.400000 0 494.500000 -2665.100000 0 181.700000 -2665.100000 0 181.700000 -2664.400000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -2665.100000 0 494.500000 -2665.100000 0 494.500000 -2665.900000 0 181.700000 -2665.900000 0 181.700000 -2665.100000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -2665.900000 0 494.500000 -2665.900000 0 494.500000 -2666.700000 0 181.700000 -2666.700000 0 181.700000 -2665.900000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -2666.700000 0 494.500000 -2666.700000 0 494.500000 -2667.400000 0 181.700000 -2667.400000 0 181.700000 -2666.700000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -2667.400000 0 494.500000 -2667.400000 0 494.500000 -2668.200000 0 181.700000 -2668.200000 0 181.700000 -2667.400000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -2668.200000 0 494.500000 -2668.200000 0 494.500000 -2668.900000 0 181.700000 -2668.900000 0 181.700000 -2668.200000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -2668.900000 0 494.500000 -2668.900000 0 494.500000 -2669.700000 0 181.700000 -2669.700000 0 181.700000 -2668.900000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -2669.700000 0 494.500000 -2669.700000 0 494.500000 -2670.500000 0 181.700000 -2670.500000 0 181.700000 -2669.700000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -2670.500000 0 494.500000 -2670.500000 0 494.500000 -2671.200000 0 181.700000 -2671.200000 0 181.700000 -2670.500000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -2671.200000 0 494.500000 -2671.200000 0 494.500000 -2672.000000 0 181.700000 -2672.000000 0 181.700000 -2671.200000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -2672.000000 0 494.500000 -2672.000000 0 494.500000 -2672.700000 0 181.700000 -2672.700000 0 181.700000 -2672.000000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -2672.700000 0 494.500000 -2672.700000 0 494.500000 -2673.500000 0 181.700000 -2673.500000 0 181.700000 -2672.700000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -2673.500000 0 494.500000 -2673.500000 0 494.500000 -2674.300000 0 181.700000 -2674.300000 0 181.700000 -2673.500000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -2674.300000 0 494.500000 -2674.300000 0 494.500000 -2675.000000 0 181.700000 -2675.000000 0 181.700000 -2674.300000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -2675.000000 0 494.500000 -2675.000000 0 494.500000 -2675.800000 0 181.700000 -2675.800000 0 181.700000 -2675.000000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -2675.800000 0 494.500000 -2675.800000 0 494.500000 -2676.500000 0 181.700000 -2676.500000 0 181.700000 -2675.800000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -2676.500000 0 494.500000 -2676.500000 0 494.500000 -2677.300000 0 181.700000 -2677.300000 0 181.700000 -2676.500000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -2677.300000 0 494.500000 -2677.300000 0 494.500000 -2678.000000 0 181.700000 -2678.000000 0 181.700000 -2677.300000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -2678.000000 0 494.500000 -2678.000000 0 494.500000 -2678.800000 0 181.700000 -2678.800000 0 181.700000 -2678.000000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -2678.800000 0 494.500000 -2678.800000 0 494.500000 -2679.600000 0 181.700000 -2679.600000 0 181.700000 -2678.800000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -2679.600000 0 494.500000 -2679.600000 0 494.500000 -2680.300000 0 181.700000 -2680.300000 0 181.700000 -2679.600000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -2680.300000 0 494.500000 -2680.300000 0 494.500000 -2681.100000 0 181.700000 -2681.100000 0 181.700000 -2680.300000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -2681.100000 0 494.500000 -2681.100000 0 494.500000 -2681.800000 0 181.700000 -2681.800000 0 181.700000 -2681.100000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -2681.800000 0 494.500000 -2681.800000 0 494.500000 -2682.600000 0 181.700000 -2682.600000 0 181.700000 -2681.800000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -2682.600000 0 494.500000 -2682.600000 0 494.500000 -2683.400000 0 181.700000 -2683.400000 0 181.700000 -2682.600000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -2683.400000 0 494.500000 -2683.400000 0 494.500000 -2684.100000 0 181.700000 -2684.100000 0 181.700000 -2683.400000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -2684.100000 0 494.500000 -2684.100000 0 494.500000 -2684.900000 0 181.700000 -2684.900000 0 181.700000 -2684.100000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -2684.900000 0 494.500000 -2684.900000 0 494.500000 -2685.600000 0 181.700000 -2685.600000 0 181.700000 -2684.900000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -2685.600000 0 494.500000 -2685.600000 0 494.500000 -2686.400000 0 181.700000 -2686.400000 0 181.700000 -2685.600000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -2686.400000 0 494.500000 -2686.400000 0 494.500000 -2687.200000 0 181.700000 -2687.200000 0 181.700000 -2686.400000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -2687.200000 0 494.500000 -2687.200000 0 494.500000 -2687.900000 0 181.700000 -2687.900000 0 181.700000 -2687.200000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -2687.900000 0 494.500000 -2687.900000 0 494.500000 -2688.700000 0 181.700000 -2688.700000 0 181.700000 -2687.900000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -2688.700000 0 494.500000 -2688.700000 0 494.500000 -2689.400000 0 181.700000 -2689.400000 0 181.700000 -2688.700000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -2689.400000 0 494.500000 -2689.400000 0 494.500000 -2690.200000 0 181.700000 -2690.200000 0 181.700000 -2689.400000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -2690.200000 0 494.500000 -2690.200000 0 494.500000 -2690.900000 0 181.700000 -2690.900000 0 181.700000 -2690.200000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -2690.900000 0 494.500000 -2690.900000 0 494.500000 -2691.700000 0 181.700000 -2691.700000 0 181.700000 -2690.900000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -2691.700000 0 494.500000 -2691.700000 0 494.500000 -2692.500000 0 181.700000 -2692.500000 0 181.700000 -2691.700000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -2692.500000 0 494.500000 -2692.500000 0 494.500000 -2693.200000 0 181.700000 -2693.200000 0 181.700000 -2692.500000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -2693.200000 0 494.500000 -2693.200000 0 494.500000 -2694.000000 0 181.700000 -2694.000000 0 181.700000 -2693.200000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -2694.000000 0 494.500000 -2694.000000 0 494.500000 -2694.700000 0 181.700000 -2694.700000 0 181.700000 -2694.000000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -2694.700000 0 494.500000 -2694.700000 0 494.500000 -2695.500000 0 181.700000 -2695.500000 0 181.700000 -2694.700000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -2695.500000 0 494.500000 -2695.500000 0 494.500000 -2696.300000 0 181.700000 -2696.300000 0 181.700000 -2695.500000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -2696.300000 0 494.500000 -2696.300000 0 494.500000 -2697.000000 0 181.700000 -2697.000000 0 181.700000 -2696.300000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -2697.000000 0 494.500000 -2697.000000 0 494.500000 -2697.800000 0 181.700000 -2697.800000 0 181.700000 -2697.000000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -2697.800000 0 494.500000 -2697.800000 0 494.500000 -2698.500000 0 181.700000 -2698.500000 0 181.700000 -2697.800000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -2698.500000 0 494.500000 -2698.500000 0 494.500000 -2699.300000 0 181.700000 -2699.300000 0 181.700000 -2698.500000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -2699.300000 0 494.500000 -2699.300000 0 494.500000 -2700.100000 0 181.700000 -2700.100000 0 181.700000 -2699.300000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -2700.100000 0 494.500000 -2700.100000 0 494.500000 -2700.800000 0 181.700000 -2700.800000 0 181.700000 -2700.100000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -2700.800000 0 494.500000 -2700.800000 0 494.500000 -2701.600000 0 181.700000 -2701.600000 0 181.700000 -2700.800000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -2701.600000 0 494.500000 -2701.600000 0 494.500000 -2702.300000 0 181.700000 -2702.300000 0 181.700000 -2701.600000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -2702.300000 0 494.500000 -2702.300000 0 494.500000 -2703.100000 0 181.700000 -2703.100000 0 181.700000 -2702.300000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -2703.100000 0 494.500000 -2703.100000 0 494.500000 -2703.800000 0 181.700000 -2703.800000 0 181.700000 -2703.100000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -2703.800000 0 494.500000 -2703.800000 0 494.500000 -2704.600000 0 181.700000 -2704.600000 0 181.700000 -2703.800000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -2704.600000 0 494.500000 -2704.600000 0 494.500000 -2705.400000 0 181.700000 -2705.400000 0 181.700000 -2704.600000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -2705.400000 0 494.500000 -2705.400000 0 494.500000 -2706.100000 0 181.700000 -2706.100000 0 181.700000 -2705.400000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -2706.100000 0 494.500000 -2706.100000 0 494.500000 -2706.900000 0 181.700000 -2706.900000 0 181.700000 -2706.100000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -2706.900000 0 494.500000 -2706.900000 0 494.500000 -2707.600000 0 181.700000 -2707.600000 0 181.700000 -2706.900000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -2707.600000 0 494.500000 -2707.600000 0 494.500000 -2708.400000 0 181.700000 -2708.400000 0 181.700000 -2707.600000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -2708.400000 0 494.500000 -2708.400000 0 494.500000 -2709.200000 0 181.700000 -2709.200000 0 181.700000 -2708.400000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -2709.200000 0 494.500000 -2709.200000 0 494.500000 -2709.900000 0 181.700000 -2709.900000 0 181.700000 -2709.200000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -2709.900000 0 494.500000 -2709.900000 0 494.500000 -2710.700000 0 181.700000 -2710.700000 0 181.700000 -2709.900000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -2710.700000 0 494.500000 -2710.700000 0 494.500000 -2711.400000 0 181.700000 -2711.400000 0 181.700000 -2710.700000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -2711.400000 0 494.500000 -2711.400000 0 494.500000 -2712.200000 0 181.700000 -2712.200000 0 181.700000 -2711.400000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -2712.200000 0 494.500000 -2712.200000 0 494.500000 -2713.000000 0 181.700000 -2713.000000 0 181.700000 -2712.200000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -2713.000000 0 494.500000 -2713.000000 0 494.500000 -2713.700000 0 181.700000 -2713.700000 0 181.700000 -2713.000000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -2713.700000 0 494.500000 -2713.700000 0 494.500000 -2714.500000 0 181.700000 -2714.500000 0 181.700000 -2713.700000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -2714.500000 0 494.500000 -2714.500000 0 494.500000 -2715.200000 0 181.700000 -2715.200000 0 181.700000 -2714.500000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -2715.200000 0 494.500000 -2715.200000 0 494.500000 -2716.000000 0 181.700000 -2716.000000 0 181.700000 -2715.200000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -2716.000000 0 494.500000 -2716.000000 0 494.500000 -2716.700000 0 181.700000 -2716.700000 0 181.700000 -2716.000000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -2716.700000 0 494.500000 -2716.700000 0 494.500000 -2717.500000 0 181.700000 -2717.500000 0 181.700000 -2716.700000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -2717.500000 0 494.500000 -2717.500000 0 494.500000 -2718.300000 0 181.700000 -2718.300000 0 181.700000 -2717.500000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -2718.300000 0 494.500000 -2718.300000 0 494.500000 -2719.000000 0 181.700000 -2719.000000 0 181.700000 -2718.300000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -2719.000000 0 494.500000 -2719.000000 0 494.500000 -2719.800000 0 181.700000 -2719.800000 0 181.700000 -2719.000000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -2719.800000 0 494.500000 -2719.800000 0 494.500000 -2720.500000 0 181.700000 -2720.500000 0 181.700000 -2719.800000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -2720.500000 0 494.500000 -2720.500000 0 494.500000 -2721.300000 0 181.700000 -2721.300000 0 181.700000 -2720.500000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -2721.300000 0 494.500000 -2721.300000 0 494.500000 -2722.100000 0 181.700000 -2722.100000 0 181.700000 -2721.300000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -2722.100000 0 494.500000 -2722.100000 0 494.500000 -2722.800000 0 181.700000 -2722.800000 0 181.700000 -2722.100000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -2722.800000 0 494.500000 -2722.800000 0 494.500000 -2723.600000 0 181.700000 -2723.600000 0 181.700000 -2722.800000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -2723.600000 0 494.500000 -2723.600000 0 494.500000 -2724.300000 0 181.700000 -2724.300000 0 181.700000 -2723.600000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -2724.300000 0 494.500000 -2724.300000 0 494.500000 -2725.100000 0 181.700000 -2725.100000 0 181.700000 -2724.300000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -2725.100000 0 494.500000 -2725.100000 0 494.500000 -2725.900000 0 181.700000 -2725.900000 0 181.700000 -2725.100000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -2725.900000 0 494.500000 -2725.900000 0 494.500000 -2726.600000 0 181.700000 -2726.600000 0 181.700000 -2725.900000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -2726.600000 0 494.500000 -2726.600000 0 494.500000 -2727.400000 0 181.700000 -2727.400000 0 181.700000 -2726.600000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -2727.400000 0 494.500000 -2727.400000 0 494.500000 -2728.100000 0 181.700000 -2728.100000 0 181.700000 -2727.400000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -2728.100000 0 494.500000 -2728.100000 0 494.500000 -2728.900000 0 181.700000 -2728.900000 0 181.700000 -2728.100000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -2728.900000 0 494.500000 -2728.900000 0 494.500000 -2729.600000 0 181.700000 -2729.600000 0 181.700000 -2728.900000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -2729.600000 0 494.500000 -2729.600000 0 494.500000 -2730.400000 0 181.700000 -2730.400000 0 181.700000 -2729.600000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -2730.400000 0 494.500000 -2730.400000 0 494.500000 -2731.200000 0 181.700000 -2731.200000 0 181.700000 -2730.400000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -2731.200000 0 494.500000 -2731.200000 0 494.500000 -2731.900000 0 181.700000 -2731.900000 0 181.700000 -2731.200000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -2731.900000 0 494.500000 -2731.900000 0 494.500000 -2732.700000 0 181.700000 -2732.700000 0 181.700000 -2731.900000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -2732.700000 0 494.500000 -2732.700000 0 494.500000 -2733.400000 0 181.700000 -2733.400000 0 181.700000 -2732.700000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -2733.400000 0 494.500000 -2733.400000 0 494.500000 -2734.200000 0 181.700000 -2734.200000 0 181.700000 -2733.400000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -2734.200000 0 494.500000 -2734.200000 0 494.500000 -2735.000000 0 181.700000 -2735.000000 0 181.700000 -2734.200000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -2735.000000 0 494.500000 -2735.000000 0 494.500000 -2735.700000 0 181.700000 -2735.700000 0 181.700000 -2735.000000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -2735.700000 0 494.500000 -2735.700000 0 494.500000 -2736.500000 0 181.700000 -2736.500000 0 181.700000 -2735.700000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -2736.500000 0 494.500000 -2736.500000 0 494.500000 -2737.200000 0 181.700000 -2737.200000 0 181.700000 -2736.500000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -2737.200000 0 494.500000 -2737.200000 0 494.500000 -2738.000000 0 181.700000 -2738.000000 0 181.700000 -2737.200000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -2738.000000 0 494.500000 -2738.000000 0 494.500000 -2738.700000 0 181.700000 -2738.700000 0 181.700000 -2738.000000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -2738.700000 0 494.500000 -2738.700000 0 494.500000 -2739.500000 0 181.700000 -2739.500000 0 181.700000 -2738.700000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -2739.500000 0 494.500000 -2739.500000 0 494.500000 -2740.300000 0 181.700000 -2740.300000 0 181.700000 -2739.500000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -2740.300000 0 494.500000 -2740.300000 0 494.500000 -2741.000000 0 181.700000 -2741.000000 0 181.700000 -2740.300000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -2741.000000 0 494.500000 -2741.000000 0 494.500000 -2741.800000 0 181.700000 -2741.800000 0 181.700000 -2741.000000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -2741.800000 0 494.500000 -2741.800000 0 494.500000 -2742.500000 0 181.700000 -2742.500000 0 181.700000 -2741.800000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -2742.500000 0 494.500000 -2742.500000 0 494.500000 -2743.300000 0 181.700000 -2743.300000 0 181.700000 -2742.500000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -2743.300000 0 494.500000 -2743.300000 0 494.500000 -2744.100000 0 181.700000 -2744.100000 0 181.700000 -2743.300000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -2744.100000 0 494.500000 -2744.100000 0 494.500000 -2744.800000 0 181.700000 -2744.800000 0 181.700000 -2744.100000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -2744.800000 0 494.500000 -2744.800000 0 494.500000 -2745.600000 0 181.700000 -2745.600000 0 181.700000 -2744.800000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -2745.600000 0 494.500000 -2745.600000 0 494.500000 -2746.300000 0 181.700000 -2746.300000 0 181.700000 -2745.600000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -2746.300000 0 494.500000 -2746.300000 0 494.500000 -2747.100000 0 181.700000 -2747.100000 0 181.700000 -2746.300000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -2747.100000 0 494.500000 -2747.100000 0 494.500000 -2747.800000 0 181.700000 -2747.800000 0 181.700000 -2747.100000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -2747.800000 0 494.500000 -2747.800000 0 494.500000 -2748.600000 0 181.700000 -2748.600000 0 181.700000 -2747.800000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -2748.500000 0 181.800000 -2748.500000 0 181.800000 -2555.200000 0 494.400000 -2555.200000 0 494.400000 -2748.500000 0 338.100000 -2748.500000 0
+strokePath subpath 1 338.100000 -2748.500000 0 181.800000 -2748.500000 0 181.800000 -2555.200000 0 494.400000 -2555.200000 0 494.400000 -2748.500000 0 338.100000 -2748.500000 0
+saveState
+updateCtm 11410.000000 0.000000 0.000000 -8760.000000 20530.000000 346450.000000
+drawSoftMaskedImage 1142 877 1142 877 JPEG 70955 PPM 3004618
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -2709.576000 215.488000 -2717.576000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -2709.576000 220.592000 -2717.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -2709.576000 225.696000 -2717.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -2709.576000 230.800000 -2717.576000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -2717.076000 241.388000 -2725.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -2717.076000 246.492000 -2725.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -2717.076000 251.596000 -2725.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -2717.076000 256.700000 -2725.076000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -2724.776000 267.188000 -2732.776000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -2724.776000 272.292000 -2732.776000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -2724.776000 277.396000 -2732.776000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -2724.776000 282.500000 -2732.776000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -2732.376000 293.088000 -2740.376000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -2732.376000 298.192000 -2740.376000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -2732.376000 303.296000 -2740.376000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -2732.376000 308.400000 -2740.376000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -2694.576000 202.588000 -2702.576000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -2675.176000 201.688000 -2683.176000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -2655.876000 195.788000 -2663.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -2655.876000 200.892000 -2663.876000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -2636.576000 194.888000 -2644.576000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -2636.576000 199.992000 -2644.576000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -2617.276000 193.988000 -2625.276000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -2617.276000 199.092000 -2625.276000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -2597.876000 193.088000 -2605.876000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -2597.876000 198.192000 -2605.876000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -2725.776000 330.188000 -2733.776000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -2725.776000 332.716000 -2733.776000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -2725.776000 337.596000 -2733.776000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -2725.776000 341.396000 -2733.776000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -2725.776000 346.036000 -2733.776000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -2725.776000 350.900000 -2733.776000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -2725.776000 355.972000 -2733.776000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -2725.776000 359.196000 -2733.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -2725.776000 362.196000 -2733.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -2725.776000 367.404000 -2733.776000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -2725.776000 371.876000 -2733.776000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -2725.776000 375.052000 -2733.776000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -2706.276000 361.172000 -2714.276000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -2706.276000 364.340000 -2714.276000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -2706.276000 367.396000 -2714.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -2706.276000 372.604000 -2714.276000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -2706.276000 379.348000 -2714.276000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -2706.276000 384.484000 -2714.276000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -2706.276000 389.436000 -2714.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -2706.276000 392.108000 -2714.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -2706.276000 395.708000 -2714.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -2706.276000 397.540000 -2714.276000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -2706.276000 402.444000 -2714.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -2706.276000 406.788000 -2714.276000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -2686.776000 392.972000 -2694.776000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -2686.776000 398.076000 -2694.776000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -2686.776000 403.180000 -2694.776000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -2686.776000 405.428000 -2694.776000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -2686.776000 410.332000 -2694.776000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -2686.776000 414.476000 -2694.776000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -2559.208000 305.808000 -2573.208000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -2559.208000 314.138000 -2573.208000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -2559.208000 320.788000 -2573.208000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -2559.208000 328.698000 -2573.208000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -2559.208000 336.972000 -2573.208000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -2559.208000 344.182000 -2573.208000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -2559.208000 349.810000 -2573.208000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -2559.208000 354.234000 -2573.208000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -2559.208000 362.718000 -2573.208000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -2559.208000 367.870000 -2573.208000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -2559.208000 372.322000 -2573.208000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -2559.208000 382.080000 -2573.208000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -2559.208000 388.772000 -2573.208000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -2559.208000 397.802000 -2573.208000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -2559.208000 402.254000 -2573.208000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -2559.208000 407.896000 -2573.208000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -2682.100000 0 424.300000 -2682.100000 0 424.300000 -2621.300000 0 493.600000 -2621.300000 0 493.600000 -2682.100000 0 458.900000 -2682.100000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -2630.900000 0 428.900000 -2630.900000 0 428.900000 -2625.000000 0 434.800000 -2625.000000 0 434.800000 -2630.900000 0 431.900000 -2630.900000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -2642.000000 0 428.900000 -2642.000000 0 428.900000 -2636.100000 0 434.800000 -2636.100000 0 434.800000 -2642.000000 0 431.900000 -2642.000000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -2653.100000 0 428.900000 -2653.100000 0 428.900000 -2647.100000 0 434.800000 -2647.100000 0 434.800000 -2653.100000 0 431.900000 -2653.100000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -2664.200000 0 428.900000 -2664.200000 0 428.900000 -2658.200000 0 434.800000 -2658.200000 0 434.800000 -2664.200000 0 431.900000 -2664.200000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -2675.300000 0 428.900000 -2675.300000 0 428.900000 -2669.300000 0 434.800000 -2669.300000 0 434.800000 -2675.300000 0 431.900000 -2675.300000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -2623.876000 443.288000 -2631.876000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -2623.876000 445.816000 -2631.876000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -2623.876000 450.600000 -2631.876000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -2623.876000 454.496000 -2631.876000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -2623.876000 459.136000 -2631.876000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -2623.876000 464.000000 -2631.876000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -2623.876000 468.976000 -2631.876000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -2623.876000 472.304000 -2631.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -2623.876000 475.208000 -2631.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -2623.876000 480.520000 -2631.876000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -2623.876000 484.992000 -2631.876000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -2623.876000 488.168000 -2631.876000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -2634.876000 443.352000 -2642.876000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -2634.876000 447.920000 -2642.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -2634.876000 452.976000 -2642.876000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -2634.876000 457.400000 -2642.876000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -2634.876000 462.472000 -2642.876000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -2634.876000 465.800000 -2642.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -2634.876000 468.904000 -2642.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -2634.876000 473.816000 -2642.876000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -2634.876000 478.888000 -2642.876000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -2634.876000 482.064000 -2642.876000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -2645.976000 442.872000 -2653.976000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -2645.976000 446.040000 -2653.976000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -2645.976000 448.992000 -2653.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -2645.976000 454.304000 -2653.976000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -2645.976000 461.048000 -2653.976000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -2645.976000 466.184000 -2653.976000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -2645.976000 471.136000 -2653.976000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -2645.976000 473.808000 -2653.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -2645.976000 477.408000 -2653.976000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -2645.976000 479.240000 -2653.976000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -2645.976000 484.144000 -2653.976000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -2645.976000 488.488000 -2653.976000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -2657.076000 443.384000 -2665.076000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -2657.076000 448.464000 -2665.076000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -2657.076000 453.424000 -2665.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -2657.076000 456.696000 -2665.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -2657.076000 459.800000 -2665.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -2657.076000 462.032000 -2665.076000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -2657.076000 466.936000 -2665.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -2657.076000 471.080000 -2665.076000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -2668.176000 443.272000 -2676.176000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -2668.176000 448.376000 -2676.176000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -2668.176000 453.480000 -2676.176000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -2668.176000 455.728000 -2676.176000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -2668.176000 460.632000 -2676.176000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -2668.176000 464.776000 -2676.176000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -5313.200000 0 114.800000 -5313.200000 0 114.800000 -5270.400000 0 72.000000 -5270.400000 0 72.000000 -5313.200000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 610510.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 668.600000 0 504.000000 668.600000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 668.600000 0
+eoFillPath subpath 1 72.000000 546.200000 0 504.000000 546.200000 0 504.000000 563.600000 0 72.000000 563.600000 0 72.000000 546.200000 0
+eoFillPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 245.800000 0 72.000000 245.800000 0 72.000000 72.000000 0
+eoFillPath subpath 1 72.000000 245.800000 0 121.400000 245.800000 0 121.400000 546.200000 0 72.000000 546.200000 0 72.000000 245.800000 0
+eoFillPath subpath 1 454.500000 245.800000 0 504.000000 245.800000 0 504.000000 546.200000 0 454.500000 546.200000 0 454.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 563.600000 0 76.300000 563.600000 0 76.300000 668.600000 0 72.000000 668.600000 0 72.000000 563.600000 0
+eoFillPath subpath 1 156.200000 563.600000 0 504.000000 563.600000 0 504.000000 668.600000 0 156.200000 668.600000 0 156.200000 563.600000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 701.300000 0 504.000000 701.300000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 701.300000 0
+eoFillPath subpath 1 72.000000 72.200000 0 504.000000 72.200000 0 504.000000 86.100000 0 72.000000 86.100000 0 72.000000 72.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 306.000000 719.948000 319.792000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 319.808000 719.948000 329.264000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 329.312000 719.948000 334.384000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 334.416000 719.948000 346.432000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 346.416000 719.948000 356.192000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 356.224000 719.948000 366.352000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 366.320000 719.948000 374.640000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 374.624000 719.948000 384.464000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 384.432000 719.948000 389.504000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 389.536000 719.948000 395.296000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 395.344000 719.948000 400.416000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 400.400000 719.948000 410.544000 703.948000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 410.608000 719.948000 420.448000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 420.416000 719.948000 429.200000 703.948000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 429.216000 719.948000 438.992000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 439.024000 719.948000 449.152000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 449.120000 719.948000 459.264000 703.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 459.328000 719.948000 464.400000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 464.432000 719.948000 473.632000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 473.632000 719.948000 478.064000 703.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 478.032000 719.948000 487.808000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 487.840000 719.948000 497.616000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 497.648000 719.948000 504.224000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 672.936000 190.240000 660.936000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 190.996000 672.936000 194.800000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 195.700000 672.936000 200.512000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 200.500000 672.936000 208.228000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 208.300000 672.936000 215.524000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 215.404000 672.936000 223.132000 660.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 223.108000 672.936000 230.788000 660.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 230.812000 672.936000 238.540000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 238.516000 672.936000 243.328000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 244.216000 672.936000 248.020000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 248.920000 672.936000 256.072000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 256.120000 672.936000 263.800000 660.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 263.716000 672.936000 270.940000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 271.012000 672.936000 278.740000 660.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 278.716000 672.936000 283.528000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 284.320000 672.936000 288.124000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.916000 672.936000 296.644000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 296.620000 672.936000 303.772000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 303.820000 672.936000 310.588000 660.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 310.624000 672.936000 314.452000 660.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 314.428000 672.936000 322.156000 660.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 322.132000 672.936000 329.812000 660.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 330.628000 672.936000 334.432000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 335.428000 672.936000 340.240000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 340.228000 672.936000 347.956000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 348.028000 672.936000 355.120000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 355.828000 672.936000 359.632000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 360.424000 672.936000 366.580000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 366.628000 672.936000 374.356000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 374.332000 672.936000 381.424000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 381.436000 672.936000 385.264000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 385.240000 672.936000 389.680000 660.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 390.544000 672.936000 394.348000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 395.248000 672.936000 402.400000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 402.448000 672.936000 407.260000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 408.052000 672.936000 411.856000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 412.648000 672.936000 417.460000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 417.448000 672.936000 425.176000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 425.248000 672.936000 432.340000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 433.048000 672.936000 436.852000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 437.848000 672.936000 442.288000 660.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 442.252000 672.936000 449.476000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 449.548000 672.936000 456.772000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 456.748000 672.936000 461.560000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 462.352000 672.936000 466.156000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 466.948000 672.936000 474.172000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 474.148000 672.936000 478.588000 660.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 479.452000 672.936000 483.256000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.156000 672.936000 488.968000 660.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 488.956000 672.936000 496.684000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.756000 672.936000 503.848000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 672.936000 508.004000 660.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 659.036000 196.876000 647.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 196.900000 659.036000 200.728000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 200.704000 659.036000 206.440000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 206.500000 659.036000 212.236000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 212.200000 659.036000 219.424000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 219.400000 659.036000 225.136000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 226.000000 659.036000 229.804000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 230.596000 659.036000 236.752000 647.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 236.800000 659.036000 244.528000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 244.504000 659.036000 251.656000 647.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 251.608000 659.036000 259.288000 647.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 259.312000 659.036000 266.404000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 266.416000 659.036000 274.096000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 274.912000 659.036000 278.716000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.508000 659.036000 283.336000 647.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 283.312000 659.036000 287.140000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 287.212000 659.036000 294.472000 647.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 294.412000 659.036000 301.504000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 303.112000 659.036000 306.916000 647.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 307.000000 659.036000 315.808000 647.036000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 315.796000 659.036000 321.532000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 321.592000 659.036000 328.816000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 328.792000 659.036000 336.016000 647.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 335.992000 659.036000 343.252000 647.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 343.288000 659.036000 347.116000 647.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 347.092000 659.036000 353.860000 647.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 353.896000 659.036000 361.624000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 362.392000 659.036000 366.196000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 366.988000 659.036000 375.796000 647.036000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 375.892000 659.036000 381.628000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 381.592000 659.036000 385.420000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 385.492000 659.036000 393.172000 647.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 393.196000 659.036000 400.876000 647.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 400.792000 659.036000 407.884000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 407.900000 659.036000 411.704000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 413.300000 659.036000 420.980000 647.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 421.004000 659.036000 428.732000 647.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 428.708000 659.036000 433.520000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 434.312000 659.036000 438.116000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.016000 659.036000 449.276000 647.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 449.312000 659.036000 453.140000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 453.116000 659.036000 457.928000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 457.916000 659.036000 465.644000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 466.412000 659.036000 470.216000 647.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 471.008000 659.036000 481.268000 647.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 481.304000 659.036000 485.132000 647.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 485.108000 659.036000 490.844000 647.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 490.808000 659.036000 497.900000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 497.912000 659.036000 504.068000 647.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 659.036000 507.904000 647.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 645.136000 189.328000 633.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 189.304000 645.136000 194.116000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 194.200000 645.136000 197.488000 633.136000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 197.500000 645.136000 203.656000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 203.596000 645.136000 207.400000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 207.496000 645.136000 215.176000 633.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 215.200000 645.136000 219.028000 633.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 219.004000 645.136000 231.328000 633.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 231.400000 645.136000 238.120000 633.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 238.096000 645.136000 245.824000 633.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 245.800000 645.136000 249.628000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 249.700000 645.136000 254.512000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 254.500000 645.136000 258.304000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.400000 645.136000 263.212000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 263.200000 645.136000 270.424000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 270.400000 645.136000 274.204000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 274.396000 645.136000 281.548000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 281.500000 645.136000 288.220000 633.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 288.196000 645.136000 294.916000 633.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 295.000000 645.136000 302.092000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 302.104000 645.136000 308.260000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 308.200000 645.136000 314.356000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 314.404000 645.136000 318.208000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.304000 645.136000 322.132000 633.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 322.108000 645.136000 326.920000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 326.908000 645.136000 334.000000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 334.012000 645.136000 345.388000 633.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 345.412000 645.136000 351.568000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 351.616000 645.136000 355.420000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 355.516000 645.136000 362.740000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.716000 645.136000 370.444000 633.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 370.420000 645.136000 374.224000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.416000 645.136000 379.228000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 379.216000 645.136000 386.944000 633.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 386.920000 645.136000 394.012000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 394.024000 645.136000 397.828000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 397.924000 645.136000 404.080000 633.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 404.128000 645.136000 411.856000 633.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 411.832000 645.136000 418.924000 633.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 418.936000 645.136000 422.764000 633.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 422.740000 645.136000 427.180000 633.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 427.240000 645.136000 431.044000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 431.140000 645.136000 438.292000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 438.244000 645.136000 445.972000 633.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 446.044000 645.136000 453.724000 633.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.748000 645.136000 457.552000 633.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 457.648000 645.136000 467.908000 633.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 467.848000 645.136000 471.676000 633.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 471.748000 645.136000 476.560000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 476.548000 645.136000 484.276000 633.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 484.348000 645.136000 491.572000 633.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 491.548000 645.136000 499.276000 633.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 499.348000 645.136000 504.160000 633.136000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 645.136000 507.904000 633.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 631.236000 195.760000 619.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 195.796000 631.236000 199.624000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 199.600000 631.236000 205.336000 619.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 205.300000 631.236000 212.392000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 212.404000 631.236000 218.560000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 218.704000 631.236000 222.508000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 222.700000 631.236000 227.512000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 227.500000 631.236000 235.228000 619.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 235.300000 631.236000 242.392000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 242.500000 631.236000 246.304000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 246.496000 631.236000 254.176000 619.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 254.200000 631.236000 259.936000 619.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 259.900000 631.236000 263.728000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 263.800000 631.236000 271.480000 619.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 271.396000 631.236000 279.076000 619.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 279.100000 631.236000 286.192000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 286.300000 631.236000 290.104000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 290.296000 631.236000 294.124000 619.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 294.100000 631.236000 301.324000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 301.396000 631.236000 308.620000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 308.596000 631.236000 315.856000 619.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 315.892000 631.236000 322.048000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 322.096000 631.236000 325.900000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.200000 631.236000 333.460000 619.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 333.400000 631.236000 337.228000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 337.204000 631.236000 344.932000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 345.004000 631.236000 352.684000 619.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 352.804000 631.236000 356.608000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 356.800000 631.236000 364.024000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 364.000000 631.236000 368.440000 619.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 368.596000 631.236000 372.400000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.592000 631.236000 380.320000 619.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 380.296000 631.236000 387.448000 619.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 387.496000 631.236000 394.756000 619.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 394.792000 631.236000 401.884000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 401.896000 631.236000 409.576000 619.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 409.492000 631.236000 413.296000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.392000 631.236000 417.196000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 417.496000 631.236000 425.716000 619.236000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 425.692000 631.236000 432.916000 619.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 432.988000 631.236000 436.792000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 436.984000 631.236000 441.796000 619.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 441.784000 631.236000 449.512000 619.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 449.584000 631.236000 456.676000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 456.688000 631.236000 460.492000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 460.792000 631.236000 466.948000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 466.888000 631.236000 474.616000 619.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 474.592000 631.236000 481.684000 619.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 481.792000 631.236000 485.620000 619.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 485.596000 631.236000 490.036000 619.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 490.000000 631.236000 493.804000 619.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 494.104000 631.236000 497.932000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 498.004000 631.236000 504.160000 619.236000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 631.236000 508.004000 619.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 617.336000 196.876000 605.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 196.900000 617.336000 204.052000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 204.100000 617.336000 211.780000 605.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 211.804000 617.336000 218.896000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 218.908000 617.336000 222.712000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 222.712000 617.336000 229.936000 605.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 229.912000 617.336000 234.352000 605.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 234.316000 617.336000 238.120000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 238.120000 617.336000 245.800000 605.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 245.824000 617.336000 249.652000 605.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 249.628000 617.336000 256.780000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 256.828000 617.336000 260.656000 605.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 260.632000 617.336000 268.360000 605.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 268.336000 617.336000 272.140000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 272.140000 617.336000 279.820000 605.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 279.844000 617.336000 285.580000 605.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 285.544000 617.336000 292.696000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 292.744000 617.336000 299.512000 605.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 299.548000 617.336000 303.352000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 303.352000 617.336000 311.032000 605.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 311.056000 617.336000 314.884000 605.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 314.860000 617.336000 322.012000 605.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 322.060000 617.336000 328.216000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 328.264000 617.336000 334.420000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 585.592000 83.580000 571.592000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 83.594000 585.592000 93.030000 571.592000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 92.988000 585.592000 97.776000 571.592000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 97.790000 585.592000 102.578000 571.592000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.592000 585.592000 112.084000 571.592000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 112.098000 585.592000 119.000000 571.592000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 119.000000 585.592000 128.114000 571.592000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 563.336000 194.164000 551.336000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 194.596000 563.336000 198.400000 551.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 198.892000 563.336000 209.152000 551.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 209.188000 563.336000 216.412000 551.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 216.388000 563.336000 223.612000 551.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 223.588000 563.336000 231.268000 551.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 231.292000 563.336000 238.384000 551.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 238.396000 563.336000 246.124000 551.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 246.496000 563.336000 250.300000 551.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 250.792000 563.336000 256.948000 551.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 256.996000 563.336000 264.676000 551.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 264.592000 563.336000 268.420000 551.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 268.492000 563.336000 274.228000 551.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 274.192000 563.336000 281.344000 551.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 281.392000 563.336000 285.220000 551.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 285.592000 563.336000 289.396000 551.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.888000 563.336000 296.044000 551.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 296.092000 563.336000 300.904000 551.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 300.892000 563.336000 308.044000 551.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 307.996000 563.336000 311.824000 551.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 311.896000 563.336000 317.632000 551.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 317.692000 563.336000 324.412000 551.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 324.388000 563.336000 331.540000 551.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 331.588000 563.336000 337.744000 551.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 337.684000 563.336000 344.776000 551.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 345.184000 563.336000 348.988000 551.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 349.480000 563.336000 353.308000 551.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 353.284000 563.336000 360.376000 551.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.388000 563.336000 367.540000 551.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 367.588000 563.336000 375.268000 551.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 375.292000 563.336000 381.448000 551.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 381.796000 563.336000 385.600000 551.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 386.200000 563.336000 393.928000 551.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 393.904000 563.336000 401.584000 551.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 401.608000 563.336000 407.764000 551.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 407.812000 563.336000 412.624000 551.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 412.516000 563.336000 419.668000 551.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 419.716000 563.336000 423.544000 551.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 423.520000 563.336000 429.256000 551.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 429.220000 563.336000 435.376000 551.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 435.820000 563.336000 439.624000 551.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.116000 563.336000 444.928000 551.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.012000 563.336000 452.236000 551.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 452.608000 563.336000 456.412000 551.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.904000 563.336000 461.716000 551.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 461.704000 563.336000 469.432000 551.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 469.504000 563.336000 476.596000 551.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 477.004000 563.336000 480.808000 551.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.300000 563.336000 488.980000 551.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 489.004000 563.336000 496.156000 551.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 496.108000 563.336000 499.936000 551.336000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 563.336000 504.044000 551.336000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 549.436000 189.328000 537.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 189.304000 549.436000 196.396000 537.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 196.408000 549.436000 202.144000 537.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 202.204000 549.436000 208.972000 537.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 207.400000 549.436000 211.204000 537.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 212.200000 549.436000 216.004000 537.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 217.000000 549.436000 226.828000 537.436000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 226.804000 549.436000 234.532000 537.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 235.600000 549.436000 239.404000 537.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 240.496000 549.436000 245.308000 537.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 245.296000 549.436000 253.024000 537.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 253.096000 549.436000 260.188000 537.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 261.100000 549.436000 264.904000 537.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.900000 549.436000 272.056000 537.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 272.104000 549.436000 279.196000 537.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 279.208000 549.436000 285.928000 537.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 285.904000 549.436000 293.128000 537.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 293.104000 549.436000 300.832000 537.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 300.808000 549.436000 308.488000 537.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 309.604000 549.436000 313.408000 537.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 315.508000 549.436000 323.500000 537.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 322.504000 549.436000 329.728000 537.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 329.704000 549.436000 336.928000 537.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 337.000000 549.436000 342.736000 537.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 341.404000 549.436000 345.208000 537.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 346.204000 549.436000 350.008000 537.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.004000 549.436000 355.816000 537.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 355.804000 549.436000 363.532000 537.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 363.604000 549.436000 370.696000 537.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 371.608000 549.436000 375.412000 537.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 376.504000 549.436000 384.232000 537.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 384.208000 549.436000 391.360000 537.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 391.408000 549.436000 395.236000 537.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 395.308000 549.436000 399.136000 537.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 399.112000 549.436000 409.372000 537.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 409.408000 549.436000 416.560000 537.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 416.608000 549.436000 423.376000 537.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 424.312000 549.436000 428.116000 537.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.112000 549.436000 436.792000 537.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 436.816000 549.436000 444.040000 537.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 444.016000 549.436000 451.108000 537.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 451.120000 549.436000 457.276000 537.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 458.320000 549.436000 462.124000 537.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 463.216000 549.436000 470.944000 537.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 470.920000 549.436000 478.144000 537.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 478.216000 549.436000 483.028000 537.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 484.012000 549.436000 487.816000 537.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.812000 549.436000 496.492000 537.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 496.516000 549.436000 503.740000 537.436000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 549.436000 507.904000 537.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 535.536000 190.312000 523.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 535.536000 198.028000 523.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 535.536000 205.192000 523.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 205.600000 535.536000 209.404000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 209.896000 535.536000 220.156000 523.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 220.192000 535.536000 227.920000 523.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 227.896000 535.536000 235.120000 523.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 235.096000 535.536000 238.924000 523.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 238.996000 535.536000 246.088000 523.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 246.496000 535.536000 250.300000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 250.792000 535.536000 254.620000 523.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 254.596000 535.536000 261.688000 523.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 261.700000 535.536000 269.428000 523.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 269.500000 535.536000 277.180000 523.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 277.096000 535.536000 281.908000 523.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 281.992000 535.536000 289.720000 523.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 290.092000 535.536000 293.896000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 294.496000 535.536000 301.720000 523.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 301.696000 535.536000 306.136000 523.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 306.592000 535.536000 310.396000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.888000 535.536000 315.700000 523.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 315.784000 535.536000 323.512000 523.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 323.488000 535.536000 330.580000 523.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 330.988000 535.536000 334.792000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 335.284000 535.536000 343.012000 523.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 342.988000 535.536000 350.212000 523.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 350.284000 535.536000 358.012000 523.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 357.988000 535.536000 364.144000 523.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 364.084000 535.536000 371.176000 523.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 371.680000 535.536000 375.484000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 376.084000 535.536000 383.236000 523.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 383.284000 535.536000 389.440000 523.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 389.788000 535.536000 393.592000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 394.084000 535.536000 397.912000 523.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.888000 535.536000 402.700000 523.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 403.288000 535.536000 407.092000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.584000 535.536000 415.264000 523.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 415.180000 535.536000 422.404000 523.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 422.476000 535.536000 429.568000 523.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 429.580000 535.536000 435.736000 523.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 436.084000 535.536000 439.888000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.380000 535.536000 448.060000 523.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 448.084000 535.536000 455.176000 523.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 455.188000 535.536000 459.016000 523.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 459.088000 535.536000 466.312000 523.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 466.288000 535.536000 476.548000 523.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 475.192000 535.536000 478.996000 523.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 479.488000 535.536000 483.292000 523.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 483.784000 535.536000 491.464000 523.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 491.380000 535.536000 499.108000 523.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 499.084000 535.536000 503.896000 523.536000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 535.536000 508.004000 523.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 521.636000 189.328000 509.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 189.304000 521.636000 197.032000 509.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 197.104000 521.636000 203.260000 509.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 203.200000 521.636000 208.012000 509.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 208.000000 521.636000 215.092000 509.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 215.104000 521.636000 222.256000 509.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 222.304000 521.636000 229.984000 509.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 231.808000 521.636000 235.612000 509.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 237.412000 521.636000 244.132000 509.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 244.108000 521.636000 251.332000 509.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 251.308000 521.636000 258.076000 509.636000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 258.112000 521.636000 265.204000 509.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 265.216000 521.636000 270.952000 509.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 271.012000 521.636000 277.168000 509.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 278.908000 521.636000 282.712000 509.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.512000 521.636000 291.736000 509.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 291.808000 521.636000 299.536000 509.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 299.512000 521.636000 303.340000 509.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 303.412000 521.636000 310.180000 509.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 311.908000 521.636000 315.712000 509.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.512000 521.636000 322.324000 509.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 322.312000 521.636000 330.040000 509.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 330.112000 521.636000 337.204000 509.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 339.016000 521.636000 342.820000 509.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 344.620000 521.636000 352.300000 509.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 352.324000 521.636000 359.476000 509.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 359.428000 521.636000 366.148000 509.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 366.232000 521.636000 373.492000 509.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 375.232000 521.636000 379.036000 509.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.836000 521.636000 385.648000 509.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 385.732000 521.636000 393.460000 509.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 393.436000 521.636000 397.264000 509.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.336000 521.636000 403.072000 509.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 403.036000 521.636000 410.716000 509.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 412.432000 521.636000 416.236000 509.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 418.036000 521.636000 425.260000 509.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 425.332000 521.636000 429.772000 509.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 431.536000 521.636000 435.340000 509.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 437.140000 521.636000 441.952000 509.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 442.036000 521.636000 449.764000 509.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 449.740000 521.636000 456.832000 509.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 458.644000 521.636000 462.448000 509.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 464.248000 521.636000 471.976000 509.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 471.952000 521.636000 479.176000 509.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 479.248000 521.636000 486.976000 509.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 486.952000 521.636000 493.108000 509.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 493.048000 521.636000 500.140000 509.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 500.152000 521.636000 503.956000 509.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 521.636000 507.904000 509.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 507.736000 193.492000 495.736000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 507.736000 201.232000 495.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 507.736000 205.036000 495.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 205.108000 507.736000 211.264000 495.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 212.404000 507.736000 216.208000 495.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 217.408000 507.736000 224.560000 495.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 224.608000 507.736000 228.436000 495.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 228.412000 507.736000 232.240000 495.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 232.216000 507.736000 239.440000 495.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 239.512000 507.736000 249.772000 495.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 249.712000 507.736000 255.868000 495.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 257.116000 507.736000 260.920000 495.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.216000 507.736000 268.984000 495.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 269.020000 507.736000 276.244000 495.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 276.220000 507.736000 283.948000 495.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 285.220000 507.736000 289.024000 495.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 290.224000 507.736000 295.036000 495.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 295.024000 507.736000 302.248000 495.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 303.424000 507.736000 307.228000 495.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.620000 507.736000 316.300000 495.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 316.216000 507.736000 323.308000 495.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 324.520000 507.736000 328.324000 495.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.524000 507.736000 336.676000 495.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 336.724000 507.736000 344.404000 495.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 344.320000 507.736000 348.148000 495.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 348.220000 507.736000 355.312000 495.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 356.524000 507.736000 360.328000 495.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.624000 507.736000 366.436000 495.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 366.520000 507.736000 373.744000 495.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 374.920000 507.736000 378.724000 495.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.924000 507.736000 383.752000 495.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 383.728000 507.736000 390.952000 495.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 391.024000 507.736000 398.248000 495.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 398.224000 507.736000 405.484000 495.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 406.720000 507.736000 410.524000 495.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 411.820000 507.736000 419.500000 495.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 419.524000 507.736000 426.748000 495.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 426.724000 507.736000 436.984000 495.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 436.924000 507.736000 444.652000 495.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 445.924000 507.736000 449.728000 495.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 450.928000 507.736000 458.152000 495.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 458.128000 507.736000 465.856000 495.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 465.928000 507.736000 470.740000 495.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 470.728000 507.736000 477.952000 495.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 479.128000 507.736000 482.932000 495.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.228000 507.736000 489.040000 495.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.028000 507.736000 496.756000 495.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.828000 507.736000 503.920000 495.736000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 507.736000 508.004000 495.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 493.836000 193.180000 481.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 193.204000 493.836000 198.940000 481.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.904000 493.836000 206.128000 481.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 206.104000 493.836000 213.832000 481.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 213.808000 493.836000 221.536000 481.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 221.512000 493.836000 229.192000 481.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 229.216000 493.836000 233.020000 481.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 233.020000 493.836000 241.012000 481.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 241.024000 493.836000 248.248000 481.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 248.224000 493.836000 255.448000 481.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 255.424000 493.836000 261.160000 481.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 259.828000 493.836000 263.632000 481.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 473.936000 194.164000 461.936000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 194.200000 473.936000 201.928000 461.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 201.904000 473.936000 205.708000 461.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 205.708000 473.936000 212.860000 461.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 212.908000 473.936000 218.644000 461.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 218.608000 473.936000 223.420000 461.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 223.408000 473.936000 227.236000 461.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 227.212000 473.936000 233.368000 461.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 233.416000 473.936000 238.228000 461.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 238.216000 473.936000 242.044000 461.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 242.020000 473.936000 248.740000 461.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 248.716000 473.936000 252.520000 461.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 252.700000 473.936000 258.856000 461.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 258.904000 473.936000 266.584000 461.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 266.500000 473.936000 270.328000 461.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 270.400000 473.936000 276.136000 461.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 276.100000 473.936000 283.252000 461.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 283.300000 473.936000 287.128000 461.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 287.104000 473.936000 290.908000 461.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 291.004000 473.936000 298.684000 461.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 298.600000 473.936000 305.752000 461.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 305.800000 473.936000 313.528000 461.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 313.504000 473.936000 317.332000 461.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 317.404000 473.936000 323.560000 461.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 323.500000 473.936000 328.312000 461.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 328.300000 473.936000 335.392000 461.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 335.404000 473.936000 341.140000 461.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 341.104000 473.936000 344.908000 461.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 345.100000 473.936000 349.540000 461.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 349.504000 473.936000 356.728000 461.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 356.800000 473.936000 362.536000 461.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.500000 473.936000 373.876000 461.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 373.804000 473.936000 379.960000 461.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 380.008000 473.936000 383.812000 461.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.812000 473.936000 388.624000 461.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 388.612000 473.936000 396.340000 461.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 396.412000 473.936000 403.504000 461.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 403.516000 473.936000 407.320000 461.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.416000 473.936000 414.508000 461.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 414.520000 473.936000 422.200000 461.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 422.224000 473.936000 429.904000 461.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 429.928000 473.936000 437.020000 461.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 437.032000 473.936000 440.836000 461.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.836000 473.936000 448.060000 461.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 448.036000 473.936000 452.476000 461.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 452.440000 473.936000 456.244000 461.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.340000 473.936000 461.152000 461.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 461.236000 473.936000 468.964000 461.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 468.940000 473.936000 476.032000 461.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 476.044000 473.936000 479.848000 461.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 479.848000 473.936000 483.676000 461.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 483.652000 473.936000 490.876000 461.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 490.948000 473.936000 495.388000 461.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 495.352000 473.936000 500.164000 461.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 500.152000 473.936000 503.956000 461.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 473.936000 507.904000 461.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 460.036000 193.492000 448.036000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 460.036000 201.232000 448.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 460.036000 208.300000 448.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 208.312000 460.036000 214.048000 448.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 214.108000 460.036000 221.200000 448.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 222.904000 460.036000 226.708000 448.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 228.400000 460.036000 232.228000 448.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 232.204000 460.036000 238.360000 448.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 240.100000 460.036000 243.904000 448.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.704000 460.036000 252.856000 448.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 256.300000 460.036000 260.104000 448.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 260.300000 460.036000 267.980000 448.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 268.004000 460.036000 275.228000 448.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 275.204000 460.036000 282.428000 448.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 282.404000 460.036000 286.232000 448.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 288.008000 460.036000 291.812000 448.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 293.612000 460.036000 298.424000 448.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 298.412000 460.036000 305.564000 448.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 305.612000 460.036000 313.292000 448.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 313.316000 460.036000 317.144000 448.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 317.120000 460.036000 324.212000 448.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 325.916000 460.036000 329.720000 448.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.412000 460.036000 339.140000 448.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 339.116000 460.036000 346.208000 448.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 346.220000 460.036000 351.956000 448.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 352.016000 460.036000 359.108000 448.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.812000 460.036000 364.616000 448.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 366.416000 460.036000 373.568000 448.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 373.616000 460.036000 381.344000 448.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 381.320000 460.036000 389.000000 448.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 390.620000 460.036000 394.424000 448.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 396.224000 460.036000 403.376000 448.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 405.020000 460.036000 408.824000 448.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 410.624000 460.036000 415.064000 448.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 415.028000 460.036000 422.756000 448.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 422.828000 460.036000 426.656000 448.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 426.632000 460.036000 430.460000 448.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 430.436000 460.036000 434.480000 448.036000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 434.540000 460.036000 438.980000 448.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 438.944000 460.036000 446.672000 448.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 446.744000 460.036000 454.472000 448.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 454.448000 460.036000 461.168000 448.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 461.144000 460.036000 465.956000 448.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 465.944000 460.036000 469.772000 448.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 469.844000 460.036000 477.068000 448.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 477.044000 460.036000 484.772000 448.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 484.748000 460.036000 488.576000 448.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 488.648000 460.036000 496.376000 448.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 496.352000 460.036000 504.032000 448.036000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 460.036000 507.904000 448.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 446.136000 189.220000 434.136000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 189.196000 446.136000 196.924000 434.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 196.900000 446.136000 204.160000 434.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 204.196000 446.136000 211.288000 434.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 211.300000 446.136000 218.980000 434.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 219.004000 446.136000 226.228000 434.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 226.204000 446.136000 232.960000 434.136000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 233.704000 446.136000 237.508000 434.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 238.300000 446.136000 248.560000 434.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 248.596000 446.136000 256.324000 434.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 256.300000 446.136000 260.128000 434.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 260.104000 446.136000 266.824000 434.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 266.908000 446.136000 274.636000 434.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 275.404000 446.136000 279.208000 434.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 280.000000 446.136000 291.376000 434.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 291.400000 446.136000 298.552000 434.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 298.504000 446.136000 305.764000 434.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 305.800000 446.136000 312.892000 434.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 312.904000 446.136000 319.060000 434.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 319.804000 446.136000 323.608000 434.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 324.400000 446.136000 328.840000 434.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 328.804000 446.136000 336.028000 434.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 336.100000 446.136000 341.836000 434.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 342.604000 446.136000 346.408000 434.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 347.200000 446.136000 354.352000 434.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 355.096000 446.136000 358.900000 434.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.692000 446.136000 363.520000 434.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 363.496000 446.136000 370.720000 434.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 370.792000 446.136000 375.604000 434.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 376.396000 446.136000 380.200000 434.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.992000 446.136000 388.216000 434.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 388.192000 446.136000 392.632000 434.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 393.292000 446.136000 397.096000 434.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 397.996000 446.136000 402.436000 434.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 402.400000 446.136000 410.128000 434.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 410.200000 446.136000 417.928000 434.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 418.696000 446.136000 422.500000 434.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.292000 446.136000 433.552000 434.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 433.588000 446.136000 441.316000 434.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 441.292000 446.136000 448.384000 434.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 448.396000 446.136000 456.124000 434.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 456.796000 446.136000 460.600000 434.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 461.392000 446.136000 465.832000 434.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 465.796000 446.136000 471.532000 434.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.592000 446.136000 475.420000 434.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 475.396000 446.136000 482.488000 434.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 482.500000 446.136000 490.228000 434.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 490.204000 446.136000 497.884000 434.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 497.908000 446.136000 504.064000 434.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 446.136000 508.004000 434.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 432.236000 192.220000 420.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 192.196000 432.236000 199.420000 420.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 199.396000 432.236000 210.772000 420.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 210.796000 432.236000 217.888000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 217.900000 432.236000 221.704000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 221.704000 432.236000 228.928000 420.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 228.904000 432.236000 235.672000 420.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 235.708000 432.236000 242.800000 420.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 242.812000 432.236000 248.548000 420.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 248.512000 432.236000 252.316000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 252.316000 432.236000 257.128000 420.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 257.116000 432.236000 264.340000 420.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 264.316000 432.236000 268.120000 420.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.120000 432.236000 274.888000 420.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 274.924000 432.236000 278.752000 420.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 278.728000 432.236000 284.884000 420.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 284.932000 432.236000 288.760000 420.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 288.736000 432.236000 293.548000 420.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 293.536000 432.236000 297.340000 420.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 394.448000 84.468000 378.448000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 84.500000 394.448000 92.148000 378.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 92.100000 394.448000 99.748000 378.448000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.700000 394.448000 105.172000 378.448000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 105.204000 394.448000 114.676000 378.448000 1.000000 0.000000 0.000000 1.000000 c
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 369.936000 193.492000 357.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 369.936000 201.232000 357.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 369.936000 208.300000 357.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 209.812000 369.936000 213.616000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 215.212000 369.936000 222.364000 357.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 222.412000 369.936000 227.224000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 227.212000 369.936000 232.024000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 232.012000 369.936000 235.840000 357.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 235.816000 369.936000 242.536000 357.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 244.120000 369.936000 247.924000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 249.520000 369.936000 257.248000 357.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 257.224000 369.936000 264.376000 357.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 264.424000 369.936000 270.580000 357.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 272.128000 369.936000 275.932000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.528000 369.936000 285.256000 357.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 285.232000 369.936000 292.456000 357.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 292.528000 369.936000 297.340000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 298.828000 369.936000 302.632000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 304.228000 369.936000 310.996000 357.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 310.924000 369.936000 318.016000 357.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 318.028000 369.936000 322.840000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 324.424000 369.936000 328.228000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.824000 369.936000 337.504000 357.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 337.528000 369.936000 344.620000 357.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 344.632000 369.936000 351.724000 357.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 351.736000 369.936000 359.464000 357.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 360.940000 369.936000 364.744000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 366.340000 369.936000 372.076000 357.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 372.040000 369.936000 379.132000 357.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 379.144000 369.936000 386.872000 357.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 386.944000 369.936000 394.168000 357.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 394.144000 369.936000 400.912000 357.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 400.948000 369.936000 408.100000 357.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 408.052000 369.936000 412.864000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 412.852000 369.936000 419.944000 357.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 419.956000 369.936000 427.636000 357.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 427.660000 369.936000 431.464000 357.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 433.060000 369.936000 436.864000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.460000 369.936000 445.612000 357.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 445.660000 369.936000 449.488000 357.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 449.464000 369.936000 454.276000 357.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 454.264000 369.936000 461.992000 357.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 461.968000 369.936000 469.192000 357.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 469.264000 369.936000 476.992000 357.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 476.968000 369.936000 484.648000 357.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 484.564000 369.936000 492.292000 357.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 493.864000 369.936000 497.668000 357.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 499.264000 369.936000 504.004000 357.936000 1.000000 0.000000 0.000000 1.000000 I
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 369.936000 507.904000 357.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 356.036000 195.760000 344.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 195.796000 356.036000 203.020000 344.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 202.996000 356.036000 210.724000 344.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 210.700000 356.036000 214.528000 344.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 214.600000 356.036000 222.280000 344.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 222.700000 356.036000 226.504000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 227.104000 356.036000 230.932000 344.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 230.908000 356.036000 234.736000 344.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 234.712000 356.036000 241.972000 344.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 242.008000 356.036000 249.100000 344.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 249.604000 356.036000 253.408000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 254.008000 356.036000 258.820000 344.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 258.808000 356.036000 266.032000 344.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 266.608000 356.036000 270.412000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 270.904000 356.036000 277.996000 344.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 278.008000 356.036000 284.764000 344.036000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 284.812000 356.036000 292.492000 344.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 292.516000 356.036000 299.668000 344.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 299.620000 356.036000 307.348000 344.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 307.324000 356.036000 315.004000 344.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 315.520000 356.036000 319.324000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 319.924000 356.036000 323.752000 344.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 323.728000 356.036000 328.540000 344.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 329.128000 356.036000 332.932000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.424000 356.036000 339.580000 344.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 339.628000 356.036000 346.852000 344.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 346.828000 356.036000 358.204000 344.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 358.228000 356.036000 365.320000 344.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.332000 356.036000 373.012000 344.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 372.928000 356.036000 380.080000 344.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 380.128000 356.036000 386.896000 344.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 387.424000 356.036000 391.228000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.828000 356.036000 396.640000 344.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 396.628000 356.036000 403.852000 344.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 404.332000 356.036000 408.136000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 408.628000 356.036000 412.456000 344.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 412.432000 356.036000 420.160000 344.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 420.232000 356.036000 426.952000 344.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 426.928000 356.036000 430.756000 344.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 430.732000 356.036000 438.460000 344.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 438.532000 356.036000 446.212000 344.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 446.128000 356.036000 453.220000 344.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.832000 356.036000 457.636000 344.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 458.236000 356.036000 465.388000 344.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 466.336000 356.036000 470.140000 344.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 470.600000 356.036000 478.280000 344.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 478.304000 356.036000 486.032000 344.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 486.008000 356.036000 493.100000 344.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 493.112000 356.036000 499.268000 344.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 499.316000 356.036000 504.128000 344.036000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 356.036000 507.904000 344.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 342.136000 191.236000 330.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 191.200000 342.136000 198.424000 330.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 198.496000 342.136000 205.720000 330.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 205.696000 342.136000 217.072000 330.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 217.096000 342.136000 220.900000 330.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.992000 342.136000 225.796000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 226.996000 342.136000 231.736000 330.136000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 231.700000 342.136000 236.512000 330.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 237.700000 342.136000 241.504000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 242.704000 342.136000 252.964000 330.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 253.000000 342.136000 260.224000 330.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 260.200000 342.136000 267.928000 330.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 267.904000 342.136000 271.732000 330.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 271.804000 342.136000 279.484000 330.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 280.504000 342.136000 284.308000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.508000 342.136000 292.660000 330.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 292.708000 342.136000 296.536000 330.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 296.512000 342.136000 302.668000 330.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 302.716000 342.136000 309.940000 330.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 311.020000 342.136000 314.824000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.024000 342.136000 323.704000 330.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 323.728000 342.136000 330.820000 330.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 331.924000 342.136000 335.728000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 336.928000 342.136000 344.656000 330.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 344.632000 342.136000 348.460000 330.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 348.532000 342.136000 355.252000 330.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 355.228000 342.136000 362.320000 330.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 363.424000 342.136000 367.228000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.428000 342.136000 373.240000 330.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 373.228000 342.136000 380.452000 330.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 381.628000 342.136000 385.432000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 386.632000 342.136000 393.784000 330.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 393.832000 342.136000 401.512000 330.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 401.428000 342.136000 409.108000 330.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 410.224000 342.136000 414.028000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 415.228000 342.136000 422.452000 330.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 422.428000 342.136000 430.156000 330.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 431.332000 342.136000 435.136000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 436.336000 342.136000 443.488000 330.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 444.532000 342.136000 448.336000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 449.536000 342.136000 455.272000 330.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 455.236000 342.136000 462.460000 330.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 462.532000 342.136000 469.756000 330.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 469.732000 342.136000 474.172000 330.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 475.336000 342.136000 479.140000 330.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 480.340000 342.136000 487.108000 330.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 487.144000 342.136000 494.236000 330.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 494.248000 342.136000 499.984000 330.136000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 342.136000 504.044000 330.136000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 328.236000 192.652000 316.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 328.236000 200.428000 316.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 200.404000 328.236000 208.084000 316.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 208.108000 328.236000 215.260000 316.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 215.212000 328.236000 222.940000 316.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 224.008000 328.236000 227.812000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 229.108000 328.236000 236.332000 316.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.308000 328.236000 243.076000 316.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 243.112000 328.236000 250.204000 316.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 250.216000 328.236000 255.952000 316.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 255.916000 328.236000 259.744000 316.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 259.720000 328.236000 266.944000 316.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 267.016000 328.236000 274.240000 316.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 274.216000 328.236000 281.476000 316.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 281.512000 328.236000 285.340000 316.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 285.316000 328.236000 293.044000 316.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 293.116000 328.236000 300.796000 316.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 301.912000 328.236000 305.716000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 306.916000 328.236000 311.728000 316.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 311.716000 328.236000 319.444000 316.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 319.516000 328.236000 326.608000 316.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 327.712000 328.236000 331.516000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 332.716000 328.236000 340.936000 316.236000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 340.912000 328.236000 348.064000 316.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 348.112000 328.236000 355.840000 316.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 357.016000 328.236000 360.820000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.020000 328.236000 370.336000 316.236000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 370.324000 328.236000 376.060000 316.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 376.120000 328.236000 383.272000 316.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 383.224000 328.236000 390.952000 316.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 390.928000 328.236000 397.648000 316.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 397.732000 328.236000 401.560000 316.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 401.536000 328.236000 407.692000 316.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 407.740000 328.236000 414.460000 316.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 414.436000 328.236000 421.660000 316.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 422.740000 328.236000 426.544000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 427.744000 328.236000 436.552000 316.236000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 436.540000 328.236000 443.692000 316.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 443.740000 328.236000 450.508000 316.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 448.936000 328.236000 452.740000 316.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.940000 328.236000 457.744000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 458.944000 328.236000 467.752000 316.236000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 467.740000 328.236000 475.468000 316.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 475.444000 328.236000 480.256000 316.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 481.444000 328.236000 485.248000 316.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 486.448000 328.236000 490.888000 316.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 490.852000 328.236000 498.076000 316.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 498.148000 328.236000 503.884000 316.236000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 328.236000 507.904000 316.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 314.336000 190.312000 302.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 314.336000 198.028000 302.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 314.336000 205.192000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 206.200000 314.336000 210.004000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 211.096000 314.336000 215.908000 302.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 215.896000 314.336000 219.724000 302.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 219.796000 314.336000 231.172000 302.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 231.100000 314.336000 238.192000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 239.296000 314.336000 243.100000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 244.192000 314.336000 251.872000 302.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 251.896000 314.336000 258.988000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 259.000000 314.336000 262.828000 302.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 262.804000 314.336000 270.532000 302.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 270.508000 314.336000 278.188000 302.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 278.212000 314.336000 282.016000 302.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 283.108000 314.336000 286.912000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.004000 314.336000 291.832000 302.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 291.808000 314.336000 296.620000 302.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 297.712000 314.336000 301.516000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 302.716000 314.336000 306.544000 302.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 306.520000 314.336000 312.676000 302.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 313.720000 314.336000 317.524000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.616000 314.336000 329.992000 302.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 329.920000 314.336000 337.072000 302.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.120000 314.336000 340.948000 302.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 340.924000 314.336000 348.652000 302.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 348.724000 314.336000 352.552000 302.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 352.528000 314.336000 359.296000 302.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 360.424000 314.336000 364.228000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.320000 314.336000 373.048000 302.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 373.024000 314.336000 379.180000 302.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 379.228000 314.336000 386.320000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 386.332000 314.336000 394.012000 302.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 395.032000 314.336000 398.836000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 399.928000 314.336000 404.740000 302.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 404.728000 314.336000 411.952000 302.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 413.032000 314.336000 416.836000 302.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 417.928000 314.336000 424.084000 302.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 424.132000 314.336000 428.944000 302.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 428.932000 314.336000 436.156000 302.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 436.132000 314.336000 441.868000 302.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 441.832000 314.336000 448.924000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 451.132000 314.336000 454.936000 302.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 455.200000 314.336000 459.028000 302.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 459.004000 314.336000 466.732000 302.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 466.708000 314.336000 474.388000 302.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 474.412000 314.336000 482.092000 302.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 482.116000 314.336000 489.268000 302.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 489.316000 314.336000 496.996000 302.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 497.020000 314.336000 504.112000 302.336000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 314.336000 507.904000 302.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 300.436000 192.652000 288.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 300.436000 200.428000 288.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 200.404000 300.436000 208.084000 288.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 208.108000 300.436000 211.912000 288.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 211.900000 300.436000 221.080000 288.436000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 221.104000 300.436000 228.832000 288.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 228.808000 300.436000 234.544000 288.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 234.508000 300.436000 238.336000 288.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 238.312000 300.436000 244.468000 288.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 244.516000 300.436000 249.328000 288.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 249.316000 300.436000 260.692000 288.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 260.716000 300.436000 267.868000 288.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 267.916000 300.436000 274.072000 288.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 274.120000 300.436000 277.924000 288.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.924000 300.436000 285.604000 288.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 285.628000 300.436000 292.720000 288.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 292.732000 300.436000 299.452000 288.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 299.428000 300.436000 306.652000 288.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 306.628000 300.436000 312.364000 288.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 312.328000 300.436000 319.480000 288.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 319.528000 300.436000 324.340000 288.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 324.328000 300.436000 328.156000 288.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 328.132000 300.436000 335.356000 288.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 335.332000 300.436000 343.060000 288.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 343.036000 300.436000 349.192000 288.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 349.300000 300.436000 353.104000 288.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 455.600000 86.136000 463.664000 74.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 463.100000 86.136000 470.252000 74.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 470.300000 86.136000 477.980000 74.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 478.004000 86.136000 485.096000 74.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 485.108000 86.136000 488.912000 74.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 488.900000 86.136000 496.532000 74.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 496.496000 86.136000 504.128000 74.136000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 8358.800000 0 477.900000 8358.800000 0 477.900000 8668.600000 0 134.300000 8668.600000 0 134.300000 8358.800000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -756690.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 5369.800000 0 168.100000 5369.800000 0 168.100000 5374.800000 0 76.900000 5374.800000 0 76.900000 5369.800000 0
+eoFillPath subpath 1 163.100000 5374.700000 0 168.100000 5374.700000 0 168.100000 5505.300000 0 163.100000 5505.300000 0 163.100000 5374.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 5374.800000 0 163.100000 5374.800000 0 163.100000 5510.200000 0 72.000000 5510.200000 0 72.000000 5374.800000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 5505.880000 87.320000 5495.880000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 5505.880000 93.420000 5495.880000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 5505.880000 97.510000 5495.880000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 5505.880000 101.420000 5495.880000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 5505.880000 104.170000 5495.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 5505.880000 110.530000 5495.880000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 5505.880000 113.270000 5495.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 5505.880000 116.470000 5495.880000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 5505.880000 123.480000 5495.880000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 5505.880000 129.610000 5495.880000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 5505.880000 135.090000 5495.880000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 5505.880000 140.890000 5495.880000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 5505.880000 144.820000 5495.880000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 5505.880000 150.920000 5495.880000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 5505.880000 153.670000 5495.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 5505.880000 156.470000 5495.880000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 5379.000000 0 168.200000 5379.000000 0 168.200000 5494.200000 0 72.000000 5494.200000 0 72.000000 5379.000000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5447.152000 79.253000 5438.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 5447.152000 86.669000 5438.152000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 5447.152000 90.215000 5438.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 5447.152000 93.077000 5438.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 5447.152000 97.406000 5438.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 5447.152000 100.853000 5438.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 5447.152000 107.324000 5438.152000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 5447.152000 112.337000 5438.152000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 5447.152000 115.271000 5438.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 5447.152000 118.655000 5438.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 5447.152000 126.512000 5438.152000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 5447.152000 130.805000 5438.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 5447.152000 135.881000 5438.152000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 5447.152000 139.355000 5438.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 5447.152000 147.284000 5438.152000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 5447.152000 150.074000 5438.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 5447.152000 155.897000 5438.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 5447.152000 158.750000 5438.152000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 5447.152000 161.853000 5438.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5436.652000 82.124000 5427.652000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 5436.652000 87.137000 5427.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 5436.652000 90.071000 5427.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 5436.652000 93.356000 5427.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 5436.652000 100.403000 5427.652000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 5436.652000 104.921000 5427.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 5436.652000 109.205000 5427.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 5436.652000 117.737000 5427.652000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 5436.652000 123.119000 5427.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 5436.652000 128.996000 5427.652000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 5436.652000 132.605000 5427.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 5436.652000 138.392000 5427.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 5436.652000 141.749000 5427.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 5436.652000 149.507000 5427.652000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 5436.652000 153.800000 5427.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 5436.652000 158.876000 5427.652000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 5436.652000 161.853000 5427.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5426.152000 81.764000 5417.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 5426.152000 87.596000 5417.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 5426.152000 93.356000 5417.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 5426.152000 102.050000 5417.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 5426.152000 113.822000 5417.152000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 5426.152000 122.651000 5417.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 5426.152000 134.117000 5417.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 5426.152000 138.401000 5417.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 5426.152000 147.149000 5417.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 5426.152000 158.921000 5417.152000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 5426.152000 161.853000 5417.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5415.652000 79.271000 5406.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 5415.652000 84.338000 5406.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 5415.652000 89.621000 5406.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 5415.652000 94.643000 5406.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 5415.652000 100.502000 5406.652000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 5415.652000 106.262000 5406.652000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 5415.652000 111.518000 5406.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 5415.652000 116.216000 5406.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 5415.652000 119.249000 5406.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 5415.652000 122.363000 5406.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 5415.652000 128.186000 5406.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 5415.652000 131.345000 5406.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 5415.652000 137.060000 5406.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 5415.652000 140.147000 5406.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 5415.652000 145.007000 5406.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 5415.652000 148.598000 5406.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 5415.652000 151.460000 5406.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 5415.652000 155.789000 5406.652000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 5415.652000 158.933000 5406.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5405.152000 80.702000 5396.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 5405.152000 83.573000 5396.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 5405.152000 89.396000 5396.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 5405.152000 95.156000 5396.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 5405.152000 100.547000 5396.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 5405.152000 109.052000 5396.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 5405.152000 111.959000 5396.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 5405.152000 117.251000 5396.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 5405.152000 121.904000 5396.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 5405.152000 126.503000 5396.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 5405.152000 129.338000 5396.152000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 5405.152000 134.936000 5396.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 5405.152000 143.441000 5396.152000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 5405.152000 148.796000 5396.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 5405.152000 154.574000 5396.152000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 5405.152000 158.876000 5396.152000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 5405.152000 161.853000 5396.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5394.652000 79.271000 5385.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 5394.652000 85.094000 5385.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 5394.652000 88.703000 5385.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 5394.652000 94.112000 5385.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 5394.652000 97.244000 5385.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 5394.652000 103.058000 5385.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 5394.652000 108.890000 5385.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 5394.652000 111.950000 5385.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 5394.652000 115.271000 5385.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 5394.652000 120.338000 5385.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 5394.652000 125.621000 5385.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 5394.652000 131.363000 5385.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 5394.652000 134.558000 5385.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 5394.652000 140.048000 5385.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 5394.652000 145.430000 5385.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 5394.652000 150.551000 5385.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 5394.652000 155.960000 5385.652000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 5394.652000 158.933000 5385.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5384.152000 80.009000 5375.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 5384.152000 85.364000 5375.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 5384.152000 88.271000 5375.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 5384.152000 91.169000 5375.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 5384.152000 97.955000 5375.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 5384.152000 107.765000 5375.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 5384.152000 110.672000 5375.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 5384.152000 115.964000 5375.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 5384.152000 120.617000 5375.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 5384.152000 125.216000 5375.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 5384.152000 128.051000 5375.152000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 5384.152000 134.954000 5375.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 5384.152000 146.285000 5375.152000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 5384.152000 151.667000 5375.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 5384.152000 155.906000 5375.152000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 5384.152000 159.033000 5375.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 5374.700000 0 72.100000 5374.700000 0 72.100000 5510.200000 0 72.000000 5510.200000 0 72.000000 5374.700000 0
+eoFillPath subpath 1 163.100000 5374.700000 0 163.200000 5374.700000 0 163.200000 5510.200000 0 163.100000 5510.200000 0 163.100000 5374.700000 0
+eoFillPath subpath 1 72.000000 5510.100000 0 163.200000 5510.100000 0 163.200000 5510.200000 0 72.000000 5510.200000 0 72.000000 5510.100000 0
+eoFillPath subpath 1 72.000000 5374.700000 0 163.200000 5374.700000 0 163.200000 5374.800000 0 72.000000 5374.800000 0 72.000000 5374.700000 0
+saveState
+eoClipPath subpath 1 96.900000 5450.000000 0 138.300000 5450.000000 0 138.300000 5494.200000 0 96.900000 5494.200000 0 96.900000 5450.000000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -465810.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 5095.200000 0 165.500000 5095.200000 0 165.500000 5100.200000 0 76.900000 5100.200000 0 76.900000 5095.200000 0
+eoFillPath subpath 1 160.500000 5100.100000 0 165.500000 5100.100000 0 165.500000 5256.400000 0 160.500000 5256.400000 0 160.500000 5100.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 5100.200000 0 121.400000 5100.200000 0 121.400000 5261.300000 0 72.000000 5261.300000 0 72.000000 5100.200000 0
+saveState
+eoClipPath subpath 1 72.000000 5100.100000 0 160.500000 5100.100000 0 160.500000 5261.200000 0 72.000000 5261.200000 0 72.000000 5100.100000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -429110.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 5256.980000 89.280000 5246.980000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 5256.980000 95.630000 5246.980000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 5256.980000 99.520000 5246.980000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 5256.980000 102.270000 5246.980000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 5256.980000 108.450000 5246.980000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 5256.980000 112.610000 5246.980000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 5256.980000 118.510000 5246.980000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 5256.980000 121.670000 5246.980000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 5256.980000 124.470000 5246.980000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 5256.980000 130.830000 5246.980000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 5256.980000 133.970000 5246.980000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 5256.980000 137.920000 5246.980000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 5256.980000 144.230000 5246.980000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 5256.980000 150.350000 5246.980000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 5256.980000 153.570000 5246.980000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 5245.280000 95.000000 5235.280000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 5245.280000 97.770000 5235.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 5245.280000 103.000000 5235.280000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 5245.280000 109.330000 5235.280000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 5245.280000 117.470000 5235.280000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 5245.280000 123.620000 5235.280000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 5245.280000 128.800000 5235.280000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 5245.280000 135.130000 5235.280000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 5245.280000 141.250000 5235.280000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 5245.280000 145.410000 5235.280000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5230.452000 82.961000 5221.452000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 5230.452000 87.614000 5221.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 5230.452000 93.356000 5221.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 5230.452000 98.612000 5221.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 5230.452000 103.733000 5221.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 5230.452000 106.568000 5221.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 5230.452000 111.959000 5221.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 5230.452000 114.866000 5221.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 5230.452000 117.665000 5221.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 5230.452000 122.768000 5221.452000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 5230.452000 125.747000 5221.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 5230.452000 131.651000 5221.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 5230.452000 136.907000 5221.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 5230.452000 142.307000 5221.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 5230.452000 148.049000 5221.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 5230.452000 150.956000 5221.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 5230.452000 156.302000 5221.452000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5230.452000 159.253000 5221.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5219.952000 84.095000 5210.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 5219.952000 89.900000 5210.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 5219.952000 95.318000 5210.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 5219.952000 100.349000 5210.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 5219.952000 110.789000 5210.952000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 5219.952000 111.464000 5210.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 5219.952000 114.362000 5210.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 5219.952000 119.348000 5210.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 5219.952000 126.962000 5210.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 5219.952000 132.047000 5210.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 5219.952000 139.958000 5210.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 5219.952000 142.865000 5210.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 5219.952000 147.410000 5210.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 5219.952000 153.287000 5210.952000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 5219.952000 156.333000 5210.952000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5209.452000 84.095000 5200.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 5209.452000 89.468000 5200.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 5209.452000 94.121000 5200.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 5209.452000 99.899000 5200.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 5209.452000 105.218000 5200.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 5209.452000 109.502000 5200.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 5209.452000 115.649000 5200.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 5209.452000 122.327000 5200.452000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 5209.452000 127.718000 5200.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 5209.452000 132.002000 5200.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 5209.452000 138.149000 5200.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 5209.452000 145.205000 5200.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 5209.452000 150.992000 5200.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 5209.452000 156.311000 5200.452000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5209.452000 159.253000 5200.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5198.952000 82.394000 5189.952000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 5198.952000 86.705000 5189.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 5198.952000 91.322000 5189.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 5198.952000 94.913000 5189.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 5198.952000 98.054000 5189.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 5198.952000 102.014000 5189.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 5198.952000 104.876000 5189.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 5198.952000 113.435000 5189.952000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 5198.952000 118.718000 5189.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 5198.952000 121.949000 5189.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 5198.952000 125.063000 5189.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 5198.952000 130.886000 5189.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 5198.952000 134.045000 5189.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 5198.952000 138.005000 5189.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 5198.952000 143.792000 5189.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 5198.952000 149.111000 5189.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 5198.952000 151.964000 5189.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 5198.952000 156.293000 5189.952000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 5198.952000 159.153000 5189.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5188.452000 79.271000 5179.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 5188.452000 82.169000 5179.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 5188.452000 85.526000 5179.452000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 5188.452000 90.818000 5179.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 5188.452000 94.454000 5179.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 5188.452000 99.008000 5179.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 5188.452000 104.318000 5179.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 5188.452000 110.096000 5179.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 5188.452000 115.856000 5179.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 5188.452000 119.546000 5179.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 5188.452000 124.001000 5179.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 5188.452000 129.509000 5179.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 5188.452000 133.145000 5179.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 5188.452000 139.751000 5179.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 5188.452000 145.205000 5179.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 5188.452000 148.841000 5179.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 5188.452000 152.657000 5179.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 5188.452000 156.293000 5179.452000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5188.452000 159.253000 5179.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5177.952000 84.095000 5168.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 5177.952000 88.406000 5168.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 5177.952000 93.824000 5168.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 5177.952000 99.602000 5168.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 5177.952000 105.362000 5168.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 5177.952000 108.422000 5168.952000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 5177.952000 116.747000 5168.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 5177.952000 129.275000 5168.952000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 5177.952000 135.089000 5168.952000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 5177.952000 138.698000 5168.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 5177.952000 141.560000 5168.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 5177.952000 146.906000 5168.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 5177.952000 151.190000 5168.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 5177.952000 156.266000 5168.952000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5177.952000 159.253000 5168.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5167.452000 82.196000 5158.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 5167.452000 87.560000 5158.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 5167.452000 92.213000 5158.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 5167.452000 96.551000 5158.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 5167.452000 101.708000 5158.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 5167.452000 107.216000 5158.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 5167.452000 111.653000 5158.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 5167.452000 118.961000 5158.452000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 5167.452000 124.316000 5158.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 5167.452000 128.654000 5158.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 5167.452000 133.172000 5158.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 5167.452000 138.995000 5158.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 5167.452000 143.612000 5158.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 5167.452000 148.913000 5158.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 5167.452000 153.197000 5158.452000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 5167.452000 156.333000 5158.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5156.952000 80.009000 5147.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 5156.952000 85.319000 5147.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 5156.952000 91.061000 5147.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 5156.952000 100.052000 5147.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 5156.952000 113.993000 5147.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 5156.952000 116.873000 5147.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 5156.952000 120.410000 5147.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 5156.952000 126.296000 5147.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 5156.952000 135.350000 5147.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 5156.952000 145.106000 5147.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 5156.952000 150.893000 5147.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 5156.952000 156.212000 5147.952000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5156.952000 159.253000 5147.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5146.452000 82.196000 5137.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 5146.452000 87.560000 5137.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 5146.452000 93.392000 5137.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 5146.452000 99.152000 5137.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 5146.452000 101.960000 5137.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 5146.452000 107.306000 5137.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 5146.452000 111.905000 5137.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 5146.452000 115.640000 5137.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 5146.452000 122.444000 5137.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 5146.452000 127.898000 5137.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 5146.452000 135.575000 5137.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 5146.452000 141.380000 5137.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 5146.452000 145.241000 5137.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 5146.452000 150.803000 5137.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 5146.452000 156.302000 5137.452000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5146.452000 159.253000 5137.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5135.952000 80.009000 5126.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 5135.952000 85.796000 5126.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 5135.952000 91.115000 5126.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 5135.952000 95.399000 5126.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 5135.952000 100.718000 5126.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 5135.952000 107.054000 5126.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 5135.952000 118.097000 5126.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 5135.952000 123.524000 5126.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 5135.952000 129.401000 5126.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 5135.952000 131.768000 5126.952000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 5135.952000 135.413000 5126.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 5135.952000 141.659000 5126.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 5135.952000 150.965000 5126.952000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 5135.952000 156.320000 5126.952000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5135.952000 159.253000 5126.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5125.452000 81.017000 5116.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 5125.452000 84.608000 5116.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 5125.452000 89.963000 5116.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 5125.452000 92.870000 5116.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 5125.452000 98.693000 5116.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 5125.452000 103.310000 5116.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 5125.452000 107.243000 5116.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 5125.452000 116.081000 5116.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 5125.452000 121.886000 5116.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 5125.452000 127.205000 5116.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 5125.452000 132.983000 5116.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 5125.452000 136.943000 5116.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 5125.452000 143.846000 5116.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 5125.452000 148.184000 5116.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 5125.452000 153.260000 5116.452000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 5125.452000 156.433000 5116.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5114.952000 79.271000 5105.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 5114.952000 85.094000 5105.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 5114.952000 90.854000 5105.952000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 5114.952000 93.653000 5105.952000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 5100.100000 0 72.100000 5100.100000 0 72.100000 5261.300000 0 72.000000 5261.300000 0 72.000000 5100.100000 0
+eoFillPath subpath 1 160.500000 5100.100000 0 160.600000 5100.100000 0 160.600000 5261.300000 0 160.500000 5261.300000 0 160.500000 5100.100000 0
+eoFillPath subpath 1 72.000000 5261.200000 0 160.600000 5261.200000 0 160.600000 5261.300000 0 72.000000 5261.300000 0 72.000000 5261.200000 0
+eoFillPath subpath 1 72.000000 5100.100000 0 160.600000 5100.100000 0 160.600000 5100.200000 0 72.000000 5100.200000 0 72.000000 5100.100000 0
+saveState
+eoClipPath subpath 1 108.000000 4612.700000 0 178.900000 4612.700000 0 178.900000 4669.400000 0 108.000000 4669.400000 0 108.000000 4612.700000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -382080.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 554.300000 0 165.500000 554.300000 0 165.500000 559.300000 0 76.900000 559.300000 0 76.900000 554.300000 0
+eoFillPath subpath 1 160.500000 559.200000 0 165.500000 559.200000 0 165.500000 668.000000 0 160.500000 668.000000 0 160.500000 559.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 559.300000 0 160.500000 559.300000 0 160.500000 672.900000 0 72.000000 672.900000 0 72.000000 559.300000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 668.552000 83.771000 659.552000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 668.552000 89.594000 659.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 668.552000 92.465000 659.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 668.552000 97.568000 659.552000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 668.552000 100.943000 659.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 668.552000 106.955000 659.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 668.552000 110.447000 659.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 668.552000 114.425000 659.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 668.552000 119.717000 659.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 668.552000 127.493000 659.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 668.552000 130.949000 659.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 668.552000 136.574000 659.552000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 668.552000 141.920000 659.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 668.552000 147.365000 659.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 668.552000 151.703000 659.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 668.552000 156.320000 659.552000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 668.552000 159.153000 659.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 658.052000 81.764000 649.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 658.052000 85.130000 649.052000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 658.052000 88.712000 649.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 658.052000 94.022000 649.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 658.052000 98.306000 649.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 658.052000 102.455000 649.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 658.052000 106.676000 649.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 658.052000 110.312000 649.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 658.052000 114.920000 649.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 658.052000 119.060000 649.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 658.052000 125.450000 649.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 658.052000 130.832000 649.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 658.052000 139.445000 649.052000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 658.052000 145.169000 649.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 658.052000 148.076000 649.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 658.052000 153.323000 649.052000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 658.052000 156.433000 649.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 647.552000 80.009000 638.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 647.552000 82.871000 638.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 647.552000 88.316000 638.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 647.552000 94.094000 638.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 647.552000 96.947000 638.552000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 647.552000 104.948000 638.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 647.552000 113.705000 638.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 647.552000 119.492000 638.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 647.552000 124.811000 638.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 647.552000 132.848000 638.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 647.552000 141.605000 638.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 647.552000 144.467000 638.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 647.552000 148.103000 638.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 647.552000 150.965000 638.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 647.552000 156.311000 638.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 647.552000 159.253000 638.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 637.052000 80.999000 628.052000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 637.052000 90.539000 628.052000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 637.052000 95.318000 628.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 637.052000 99.602000 628.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 637.052000 102.473000 628.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 637.052000 108.260000 628.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 637.052000 110.762000 628.052000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 637.052000 115.316000 628.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 637.052000 122.156000 628.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 637.052000 132.299000 628.052000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 637.052000 136.970000 628.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 637.052000 139.877000 628.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 637.052000 142.775000 628.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 637.052000 148.022000 628.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 637.052000 152.720000 628.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 637.052000 156.311000 628.052000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 637.052000 159.253000 628.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 626.552000 83.006000 617.552000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 626.552000 88.793000 617.552000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 626.552000 91.664000 617.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 626.552000 94.562000 617.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 626.552000 100.349000 617.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 626.552000 103.157000 617.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 626.552000 108.980000 617.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 626.552000 114.740000 617.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 626.552000 119.375000 617.552000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 626.552000 128.033000 617.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 626.552000 141.479000 617.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 626.552000 146.807000 617.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 626.552000 152.684000 617.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 626.552000 156.293000 617.552000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 626.552000 159.253000 617.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 616.052000 79.730000 607.052000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 616.052000 84.005000 607.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 616.052000 89.423000 607.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 616.052000 98.036000 607.052000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 616.052000 121.157000 607.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 616.052000 145.115000 607.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 616.052000 151.001000 607.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 616.052000 156.320000 607.052000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 616.052000 159.253000 607.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 605.552000 83.285000 596.552000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 605.552000 89.099000 596.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 605.552000 93.401000 596.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 605.552000 98.477000 596.552000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 605.552000 103.121000 596.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 605.552000 105.974000 596.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 605.552000 111.320000 596.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 605.552000 115.604000 596.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 605.552000 123.857000 596.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 605.552000 136.007000 596.552000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 605.552000 141.794000 596.552000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 605.552000 144.665000 596.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 605.552000 147.464000 596.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 605.552000 153.251000 596.552000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 605.552000 156.433000 596.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 595.052000 79.271000 586.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 595.052000 85.094000 586.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 595.052000 90.854000 586.052000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 595.052000 96.146000 586.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 595.052000 102.302000 586.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 595.052000 107.711000 586.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 595.052000 113.048000 586.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 595.052000 119.204000 586.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 595.052000 124.991000 586.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 595.052000 130.310000 586.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 595.052000 135.647000 586.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 595.052000 144.755000 586.052000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 595.052000 153.323000 586.052000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 595.052000 156.333000 586.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 584.552000 82.160000 575.552000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 584.552000 85.067000 575.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 584.552000 89.297000 575.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 584.552000 94.616000 575.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 584.552000 98.747000 575.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 584.552000 106.055000 575.552000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 584.552000 109.700000 575.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 584.552000 115.055000 575.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 584.552000 118.601000 575.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 584.552000 124.010000 575.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 584.552000 128.042000 575.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 584.552000 135.998000 575.552000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 584.552000 141.785000 575.552000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 584.552000 144.656000 575.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 584.552000 147.554000 575.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 584.552000 153.341000 575.552000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 584.552000 156.433000 575.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 574.052000 79.271000 565.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 574.052000 85.094000 565.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 574.052000 90.854000 565.052000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 574.052000 93.743000 565.052000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 559.200000 0 72.100000 559.200000 0 72.100000 672.900000 0 72.000000 672.900000 0 72.000000 559.200000 0
+eoFillPath subpath 1 160.500000 559.200000 0 160.600000 559.200000 0 160.600000 672.900000 0 160.500000 672.900000 0 160.500000 559.200000 0
+eoFillPath subpath 1 72.000000 672.800000 0 160.600000 672.800000 0 160.600000 672.900000 0 72.000000 672.900000 0 72.000000 672.800000 0
+eoFillPath subpath 1 72.000000 559.200000 0 160.600000 559.200000 0 160.600000 559.300000 0 72.000000 559.300000 0 72.000000 559.200000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 6748.800000 0 169.600000 6748.800000 0 169.600000 6753.800000 0 76.900000 6753.800000 0 76.900000 6748.800000 0
+eoFillPath subpath 1 164.600000 6753.700000 0 169.600000 6753.700000 0 169.600000 6869.300000 0 164.600000 6869.300000 0 164.600000 6753.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 6753.800000 0 121.400000 6753.800000 0 121.400000 6874.200000 0 72.000000 6874.200000 0 72.000000 6753.800000 0
+saveState
+eoClipPath subpath 1 72.000000 6753.700000 0 164.600000 6753.700000 0 164.600000 6874.100000 0 72.000000 6874.100000 0 72.000000 6753.700000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -590350.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 6823.700000 0 93.700000 6823.700000 0 93.700000 6842.900000 0 72.000000 6842.900000 0 72.000000 6823.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 6823.700000 0 169.600000 6823.700000 0 169.600000 6842.900000 0 93.700000 6842.900000 0 93.700000 6823.700000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 6807.000000 0 93.700000 6807.000000 0 93.700000 6823.700000 0 72.000000 6823.700000 0 72.000000 6807.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 6807.000000 0 169.600000 6807.000000 0 169.600000 6823.700000 0 93.700000 6823.700000 0 93.700000 6807.000000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 6787.800000 0 93.700000 6787.800000 0 93.700000 6807.000000 0 72.000000 6807.000000 0 72.000000 6787.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 6787.800000 0 169.600000 6787.800000 0 169.600000 6807.000000 0 93.700000 6807.000000 0 93.700000 6787.800000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 6768.600000 0 93.700000 6768.600000 0 93.700000 6787.800000 0 72.000000 6787.800000 0 72.000000 6768.600000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 6768.600000 0 169.600000 6768.600000 0 169.600000 6787.800000 0 93.700000 6787.800000 0 93.700000 6768.600000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6869.852000 82.898000 6860.852000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 6869.852000 87.200000 6860.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 6869.852000 90.809000 6860.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 6869.852000 93.671000 6860.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 6869.852000 98.315000 6860.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 6869.852000 101.906000 6860.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 6869.852000 106.514000 6860.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 6869.852000 109.754000 6860.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 6869.852000 112.868000 6860.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 6869.852000 118.691000 6860.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 6869.852000 121.850000 6860.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 6869.852000 125.702000 6860.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 6869.852000 131.588000 6860.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 6869.852000 136.907000 6860.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 6869.852000 140.039000 6860.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 6869.852000 146.078000 6860.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 6869.852000 151.442000 6860.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 6869.852000 154.349000 6860.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 6869.852000 157.148000 6860.852000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 6869.852000 160.433000 6860.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6859.352000 84.095000 6850.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 6859.352000 89.468000 6850.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 6859.352000 94.580000 6850.352000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 6859.352000 97.631000 6850.352000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 6838.952000 104.443000 6829.952000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 6838.952000 109.060000 6829.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 6838.952000 113.398000 6829.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 6838.952000 119.194000 6829.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 6838.952000 124.612000 6829.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 6838.952000 127.465000 6829.952000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 6822.252000 101.176000 6813.252000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 6822.252000 104.074000 6813.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 6822.252000 109.420000 6813.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 6822.252000 114.442000 6813.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 6822.252000 120.202000 6813.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 6822.252000 123.811000 6813.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 6822.252000 129.121000 6813.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 6822.252000 134.899000 6813.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 6822.252000 139.516000 6813.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 6822.252000 143.107000 6813.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 6822.252000 148.417000 6813.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 6822.252000 151.270000 6813.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 6822.252000 157.093000 6813.252000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 6805.552000 103.048000 6796.552000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 6805.552000 108.421000 6796.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 6805.552000 113.443000 6796.552000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 6805.552000 118.852000 6796.552000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 6805.552000 124.702000 6796.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 6805.552000 130.021000 6796.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 6805.552000 135.079000 6796.552000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 6786.352000 104.407000 6777.352000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 6786.352000 109.816000 6777.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 6786.352000 115.594000 6777.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 6786.352000 121.354000 6777.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 6786.352000 125.692000 6777.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 6786.352000 128.563000 6777.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 6786.352000 133.954000 6777.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 6786.352000 139.786000 6777.352000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 6753.700000 0 72.100000 6753.700000 0 72.100000 6874.200000 0 72.000000 6874.200000 0 72.000000 6753.700000 0
+eoFillPath subpath 1 164.600000 6753.700000 0 164.700000 6753.700000 0 164.700000 6874.200000 0 164.600000 6874.200000 0 164.600000 6753.700000 0
+eoFillPath subpath 1 72.000000 6874.100000 0 164.700000 6874.100000 0 164.700000 6874.200000 0 72.000000 6874.200000 0 72.000000 6874.100000 0
+eoFillPath subpath 1 72.000000 6753.700000 0 164.700000 6753.700000 0 164.700000 6753.800000 0 72.000000 6753.800000 0 72.000000 6753.700000 0
+eoFillPath subpath 1 91.300000 6768.600000 0 93.700000 6768.600000 0 93.700000 6842.900000 0 91.300000 6842.900000 0 91.300000 6768.600000 0
+eoFillPath subpath 1 72.000000 6787.800000 0 169.600000 6787.800000 0 169.600000 6790.200000 0 72.000000 6790.200000 0 72.000000 6787.800000 0
+eoFillPath subpath 1 72.000000 6840.500000 0 169.600000 6840.500000 0 169.600000 6842.900000 0 72.000000 6842.900000 0 72.000000 6840.500000 0
+eoFillPath subpath 1 72.000000 6768.600000 0 169.600000 6768.600000 0 169.600000 6771.000000 0 72.000000 6771.000000 0 72.000000 6768.600000 0
+saveState
+eoClipPath subpath 1 108.000000 -1097.400000 0 150.800000 -1097.400000 0 150.800000 -1053.200000 0 108.000000 -1053.200000 0 108.000000 -1097.400000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 188940.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -1947.400000 0 499.600000 -1947.400000 0 499.600000 -1942.300000 0 186.800000 -1942.300000 0 186.800000 -1947.400000 0
+eoFillPath subpath 1 494.500000 -1942.400000 0 499.600000 -1942.400000 0 499.600000 -1754.000000 0 494.500000 -1754.000000 0 494.500000 -1942.400000 0
+saveState
+eoClipPath subpath 1 181.800000 -1942.300000 0 494.500000 -1942.300000 0 494.500000 -1749.000000 0 181.800000 -1749.000000 0 181.800000 -1942.300000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -1748.900000 0 494.500000 -1748.900000 0 494.500000 -1748.900000 0 181.700000 -1748.900000 0
+eoFillPath subpath 1 181.700000 -1748.900000 0 494.500000 -1748.900000 0 494.500000 -1749.700000 0 181.700000 -1749.700000 0 181.700000 -1748.900000 0
+eoFillPath subpath 1 181.700000 -1749.700000 0 494.500000 -1749.700000 0 494.500000 -1750.500000 0 181.700000 -1750.500000 0 181.700000 -1749.700000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -1750.500000 0 494.500000 -1750.500000 0 494.500000 -1751.200000 0 181.700000 -1751.200000 0 181.700000 -1750.500000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -1751.200000 0 494.500000 -1751.200000 0 494.500000 -1752.000000 0 181.700000 -1752.000000 0 181.700000 -1751.200000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -1752.000000 0 494.500000 -1752.000000 0 494.500000 -1752.700000 0 181.700000 -1752.700000 0 181.700000 -1752.000000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -1752.700000 0 494.500000 -1752.700000 0 494.500000 -1753.500000 0 181.700000 -1753.500000 0 181.700000 -1752.700000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -1753.500000 0 494.500000 -1753.500000 0 494.500000 -1754.200000 0 181.700000 -1754.200000 0 181.700000 -1753.500000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -1754.200000 0 494.500000 -1754.200000 0 494.500000 -1755.000000 0 181.700000 -1755.000000 0 181.700000 -1754.200000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -1755.000000 0 494.500000 -1755.000000 0 494.500000 -1755.800000 0 181.700000 -1755.800000 0 181.700000 -1755.000000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -1755.800000 0 494.500000 -1755.800000 0 494.500000 -1756.500000 0 181.700000 -1756.500000 0 181.700000 -1755.800000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -1756.500000 0 494.500000 -1756.500000 0 494.500000 -1757.300000 0 181.700000 -1757.300000 0 181.700000 -1756.500000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -1757.300000 0 494.500000 -1757.300000 0 494.500000 -1758.000000 0 181.700000 -1758.000000 0 181.700000 -1757.300000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -1758.000000 0 494.500000 -1758.000000 0 494.500000 -1758.800000 0 181.700000 -1758.800000 0 181.700000 -1758.000000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -1758.800000 0 494.500000 -1758.800000 0 494.500000 -1759.500000 0 181.700000 -1759.500000 0 181.700000 -1758.800000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -1759.500000 0 494.500000 -1759.500000 0 494.500000 -1760.300000 0 181.700000 -1760.300000 0 181.700000 -1759.500000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -1760.300000 0 494.500000 -1760.300000 0 494.500000 -1761.100000 0 181.700000 -1761.100000 0 181.700000 -1760.300000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -1761.100000 0 494.500000 -1761.100000 0 494.500000 -1761.800000 0 181.700000 -1761.800000 0 181.700000 -1761.100000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -1761.800000 0 494.500000 -1761.800000 0 494.500000 -1762.600000 0 181.700000 -1762.600000 0 181.700000 -1761.800000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -1762.600000 0 494.500000 -1762.600000 0 494.500000 -1763.300000 0 181.700000 -1763.300000 0 181.700000 -1762.600000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -1763.300000 0 494.500000 -1763.300000 0 494.500000 -1764.100000 0 181.700000 -1764.100000 0 181.700000 -1763.300000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -1764.100000 0 494.500000 -1764.100000 0 494.500000 -1764.900000 0 181.700000 -1764.900000 0 181.700000 -1764.100000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -1764.900000 0 494.500000 -1764.900000 0 494.500000 -1765.600000 0 181.700000 -1765.600000 0 181.700000 -1764.900000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -1765.600000 0 494.500000 -1765.600000 0 494.500000 -1766.400000 0 181.700000 -1766.400000 0 181.700000 -1765.600000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -1766.400000 0 494.500000 -1766.400000 0 494.500000 -1767.100000 0 181.700000 -1767.100000 0 181.700000 -1766.400000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -1767.100000 0 494.500000 -1767.100000 0 494.500000 -1767.900000 0 181.700000 -1767.900000 0 181.700000 -1767.100000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -1767.900000 0 494.500000 -1767.900000 0 494.500000 -1768.600000 0 181.700000 -1768.600000 0 181.700000 -1767.900000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -1768.600000 0 494.500000 -1768.600000 0 494.500000 -1769.400000 0 181.700000 -1769.400000 0 181.700000 -1768.600000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -1769.400000 0 494.500000 -1769.400000 0 494.500000 -1770.200000 0 181.700000 -1770.200000 0 181.700000 -1769.400000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -1770.200000 0 494.500000 -1770.200000 0 494.500000 -1770.900000 0 181.700000 -1770.900000 0 181.700000 -1770.200000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -1770.900000 0 494.500000 -1770.900000 0 494.500000 -1771.700000 0 181.700000 -1771.700000 0 181.700000 -1770.900000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -1771.700000 0 494.500000 -1771.700000 0 494.500000 -1772.400000 0 181.700000 -1772.400000 0 181.700000 -1771.700000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -1772.400000 0 494.500000 -1772.400000 0 494.500000 -1773.200000 0 181.700000 -1773.200000 0 181.700000 -1772.400000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -1773.200000 0 494.500000 -1773.200000 0 494.500000 -1774.000000 0 181.700000 -1774.000000 0 181.700000 -1773.200000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -1774.000000 0 494.500000 -1774.000000 0 494.500000 -1774.700000 0 181.700000 -1774.700000 0 181.700000 -1774.000000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -1774.700000 0 494.500000 -1774.700000 0 494.500000 -1775.500000 0 181.700000 -1775.500000 0 181.700000 -1774.700000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -1775.500000 0 494.500000 -1775.500000 0 494.500000 -1776.200000 0 181.700000 -1776.200000 0 181.700000 -1775.500000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -1776.200000 0 494.500000 -1776.200000 0 494.500000 -1777.000000 0 181.700000 -1777.000000 0 181.700000 -1776.200000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -1777.000000 0 494.500000 -1777.000000 0 494.500000 -1777.800000 0 181.700000 -1777.800000 0 181.700000 -1777.000000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -1777.800000 0 494.500000 -1777.800000 0 494.500000 -1778.500000 0 181.700000 -1778.500000 0 181.700000 -1777.800000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -1778.500000 0 494.500000 -1778.500000 0 494.500000 -1779.300000 0 181.700000 -1779.300000 0 181.700000 -1778.500000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -1779.300000 0 494.500000 -1779.300000 0 494.500000 -1780.000000 0 181.700000 -1780.000000 0 181.700000 -1779.300000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -1780.000000 0 494.500000 -1780.000000 0 494.500000 -1780.800000 0 181.700000 -1780.800000 0 181.700000 -1780.000000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -1780.800000 0 494.500000 -1780.800000 0 494.500000 -1781.500000 0 181.700000 -1781.500000 0 181.700000 -1780.800000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -1781.500000 0 494.500000 -1781.500000 0 494.500000 -1782.300000 0 181.700000 -1782.300000 0 181.700000 -1781.500000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -1782.300000 0 494.500000 -1782.300000 0 494.500000 -1783.100000 0 181.700000 -1783.100000 0 181.700000 -1782.300000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -1783.100000 0 494.500000 -1783.100000 0 494.500000 -1783.800000 0 181.700000 -1783.800000 0 181.700000 -1783.100000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -1783.800000 0 494.500000 -1783.800000 0 494.500000 -1784.600000 0 181.700000 -1784.600000 0 181.700000 -1783.800000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -1784.600000 0 494.500000 -1784.600000 0 494.500000 -1785.300000 0 181.700000 -1785.300000 0 181.700000 -1784.600000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -1785.300000 0 494.500000 -1785.300000 0 494.500000 -1786.100000 0 181.700000 -1786.100000 0 181.700000 -1785.300000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -1786.100000 0 494.500000 -1786.100000 0 494.500000 -1786.900000 0 181.700000 -1786.900000 0 181.700000 -1786.100000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -1786.900000 0 494.500000 -1786.900000 0 494.500000 -1787.600000 0 181.700000 -1787.600000 0 181.700000 -1786.900000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -1787.600000 0 494.500000 -1787.600000 0 494.500000 -1788.400000 0 181.700000 -1788.400000 0 181.700000 -1787.600000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -1788.400000 0 494.500000 -1788.400000 0 494.500000 -1789.100000 0 181.700000 -1789.100000 0 181.700000 -1788.400000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -1789.100000 0 494.500000 -1789.100000 0 494.500000 -1789.900000 0 181.700000 -1789.900000 0 181.700000 -1789.100000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -1789.900000 0 494.500000 -1789.900000 0 494.500000 -1790.700000 0 181.700000 -1790.700000 0 181.700000 -1789.900000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -1790.700000 0 494.500000 -1790.700000 0 494.500000 -1791.400000 0 181.700000 -1791.400000 0 181.700000 -1790.700000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -1791.400000 0 494.500000 -1791.400000 0 494.500000 -1792.200000 0 181.700000 -1792.200000 0 181.700000 -1791.400000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -1792.200000 0 494.500000 -1792.200000 0 494.500000 -1792.900000 0 181.700000 -1792.900000 0 181.700000 -1792.200000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -1792.900000 0 494.500000 -1792.900000 0 494.500000 -1793.700000 0 181.700000 -1793.700000 0 181.700000 -1792.900000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -1793.700000 0 494.500000 -1793.700000 0 494.500000 -1794.400000 0 181.700000 -1794.400000 0 181.700000 -1793.700000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -1794.400000 0 494.500000 -1794.400000 0 494.500000 -1795.200000 0 181.700000 -1795.200000 0 181.700000 -1794.400000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -1795.200000 0 494.500000 -1795.200000 0 494.500000 -1796.000000 0 181.700000 -1796.000000 0 181.700000 -1795.200000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -1796.000000 0 494.500000 -1796.000000 0 494.500000 -1796.700000 0 181.700000 -1796.700000 0 181.700000 -1796.000000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -1796.700000 0 494.500000 -1796.700000 0 494.500000 -1797.500000 0 181.700000 -1797.500000 0 181.700000 -1796.700000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -1797.500000 0 494.500000 -1797.500000 0 494.500000 -1798.200000 0 181.700000 -1798.200000 0 181.700000 -1797.500000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -1798.200000 0 494.500000 -1798.200000 0 494.500000 -1799.000000 0 181.700000 -1799.000000 0 181.700000 -1798.200000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -1799.000000 0 494.500000 -1799.000000 0 494.500000 -1799.800000 0 181.700000 -1799.800000 0 181.700000 -1799.000000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -1799.800000 0 494.500000 -1799.800000 0 494.500000 -1800.500000 0 181.700000 -1800.500000 0 181.700000 -1799.800000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -1800.500000 0 494.500000 -1800.500000 0 494.500000 -1801.300000 0 181.700000 -1801.300000 0 181.700000 -1800.500000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -1801.300000 0 494.500000 -1801.300000 0 494.500000 -1802.000000 0 181.700000 -1802.000000 0 181.700000 -1801.300000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -1802.000000 0 494.500000 -1802.000000 0 494.500000 -1802.800000 0 181.700000 -1802.800000 0 181.700000 -1802.000000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -1802.800000 0 494.500000 -1802.800000 0 494.500000 -1803.600000 0 181.700000 -1803.600000 0 181.700000 -1802.800000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -1803.600000 0 494.500000 -1803.600000 0 494.500000 -1804.300000 0 181.700000 -1804.300000 0 181.700000 -1803.600000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -1804.300000 0 494.500000 -1804.300000 0 494.500000 -1805.100000 0 181.700000 -1805.100000 0 181.700000 -1804.300000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -1805.100000 0 494.500000 -1805.100000 0 494.500000 -1805.800000 0 181.700000 -1805.800000 0 181.700000 -1805.100000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -1805.800000 0 494.500000 -1805.800000 0 494.500000 -1806.600000 0 181.700000 -1806.600000 0 181.700000 -1805.800000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -1806.600000 0 494.500000 -1806.600000 0 494.500000 -1807.300000 0 181.700000 -1807.300000 0 181.700000 -1806.600000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -1807.300000 0 494.500000 -1807.300000 0 494.500000 -1808.100000 0 181.700000 -1808.100000 0 181.700000 -1807.300000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -1808.100000 0 494.500000 -1808.100000 0 494.500000 -1808.900000 0 181.700000 -1808.900000 0 181.700000 -1808.100000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -1808.900000 0 494.500000 -1808.900000 0 494.500000 -1809.600000 0 181.700000 -1809.600000 0 181.700000 -1808.900000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -1809.600000 0 494.500000 -1809.600000 0 494.500000 -1810.400000 0 181.700000 -1810.400000 0 181.700000 -1809.600000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -1810.400000 0 494.500000 -1810.400000 0 494.500000 -1811.100000 0 181.700000 -1811.100000 0 181.700000 -1810.400000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -1811.100000 0 494.500000 -1811.100000 0 494.500000 -1811.900000 0 181.700000 -1811.900000 0 181.700000 -1811.100000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -1811.900000 0 494.500000 -1811.900000 0 494.500000 -1812.700000 0 181.700000 -1812.700000 0 181.700000 -1811.900000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -1812.700000 0 494.500000 -1812.700000 0 494.500000 -1813.400000 0 181.700000 -1813.400000 0 181.700000 -1812.700000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -1813.400000 0 494.500000 -1813.400000 0 494.500000 -1814.200000 0 181.700000 -1814.200000 0 181.700000 -1813.400000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -1814.200000 0 494.500000 -1814.200000 0 494.500000 -1814.900000 0 181.700000 -1814.900000 0 181.700000 -1814.200000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -1814.900000 0 494.500000 -1814.900000 0 494.500000 -1815.700000 0 181.700000 -1815.700000 0 181.700000 -1814.900000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -1815.700000 0 494.500000 -1815.700000 0 494.500000 -1816.500000 0 181.700000 -1816.500000 0 181.700000 -1815.700000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -1816.500000 0 494.500000 -1816.500000 0 494.500000 -1817.200000 0 181.700000 -1817.200000 0 181.700000 -1816.500000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -1817.200000 0 494.500000 -1817.200000 0 494.500000 -1818.000000 0 181.700000 -1818.000000 0 181.700000 -1817.200000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -1818.000000 0 494.500000 -1818.000000 0 494.500000 -1818.700000 0 181.700000 -1818.700000 0 181.700000 -1818.000000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -1818.700000 0 494.500000 -1818.700000 0 494.500000 -1819.500000 0 181.700000 -1819.500000 0 181.700000 -1818.700000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -1819.500000 0 494.500000 -1819.500000 0 494.500000 -1820.200000 0 181.700000 -1820.200000 0 181.700000 -1819.500000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -1820.200000 0 494.500000 -1820.200000 0 494.500000 -1821.000000 0 181.700000 -1821.000000 0 181.700000 -1820.200000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -1821.000000 0 494.500000 -1821.000000 0 494.500000 -1821.800000 0 181.700000 -1821.800000 0 181.700000 -1821.000000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -1821.800000 0 494.500000 -1821.800000 0 494.500000 -1822.500000 0 181.700000 -1822.500000 0 181.700000 -1821.800000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -1822.500000 0 494.500000 -1822.500000 0 494.500000 -1823.300000 0 181.700000 -1823.300000 0 181.700000 -1822.500000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -1823.300000 0 494.500000 -1823.300000 0 494.500000 -1824.000000 0 181.700000 -1824.000000 0 181.700000 -1823.300000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -1824.000000 0 494.500000 -1824.000000 0 494.500000 -1824.800000 0 181.700000 -1824.800000 0 181.700000 -1824.000000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -1824.800000 0 494.500000 -1824.800000 0 494.500000 -1825.600000 0 181.700000 -1825.600000 0 181.700000 -1824.800000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -1825.600000 0 494.500000 -1825.600000 0 494.500000 -1826.300000 0 181.700000 -1826.300000 0 181.700000 -1825.600000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -1826.300000 0 494.500000 -1826.300000 0 494.500000 -1827.100000 0 181.700000 -1827.100000 0 181.700000 -1826.300000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -1827.100000 0 494.500000 -1827.100000 0 494.500000 -1827.800000 0 181.700000 -1827.800000 0 181.700000 -1827.100000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -1827.800000 0 494.500000 -1827.800000 0 494.500000 -1828.600000 0 181.700000 -1828.600000 0 181.700000 -1827.800000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -1828.600000 0 494.500000 -1828.600000 0 494.500000 -1829.400000 0 181.700000 -1829.400000 0 181.700000 -1828.600000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -1829.400000 0 494.500000 -1829.400000 0 494.500000 -1830.100000 0 181.700000 -1830.100000 0 181.700000 -1829.400000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -1830.100000 0 494.500000 -1830.100000 0 494.500000 -1830.900000 0 181.700000 -1830.900000 0 181.700000 -1830.100000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -1830.900000 0 494.500000 -1830.900000 0 494.500000 -1831.600000 0 181.700000 -1831.600000 0 181.700000 -1830.900000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -1831.600000 0 494.500000 -1831.600000 0 494.500000 -1832.400000 0 181.700000 -1832.400000 0 181.700000 -1831.600000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -1832.400000 0 494.500000 -1832.400000 0 494.500000 -1833.100000 0 181.700000 -1833.100000 0 181.700000 -1832.400000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -1833.100000 0 494.500000 -1833.100000 0 494.500000 -1833.900000 0 181.700000 -1833.900000 0 181.700000 -1833.100000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -1833.900000 0 494.500000 -1833.900000 0 494.500000 -1834.700000 0 181.700000 -1834.700000 0 181.700000 -1833.900000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -1834.700000 0 494.500000 -1834.700000 0 494.500000 -1835.400000 0 181.700000 -1835.400000 0 181.700000 -1834.700000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -1835.400000 0 494.500000 -1835.400000 0 494.500000 -1836.200000 0 181.700000 -1836.200000 0 181.700000 -1835.400000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -1836.200000 0 494.500000 -1836.200000 0 494.500000 -1836.900000 0 181.700000 -1836.900000 0 181.700000 -1836.200000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -1836.900000 0 494.500000 -1836.900000 0 494.500000 -1837.700000 0 181.700000 -1837.700000 0 181.700000 -1836.900000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -1837.700000 0 494.500000 -1837.700000 0 494.500000 -1838.500000 0 181.700000 -1838.500000 0 181.700000 -1837.700000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -1838.500000 0 494.500000 -1838.500000 0 494.500000 -1839.200000 0 181.700000 -1839.200000 0 181.700000 -1838.500000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -1839.200000 0 494.500000 -1839.200000 0 494.500000 -1840.000000 0 181.700000 -1840.000000 0 181.700000 -1839.200000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -1840.000000 0 494.500000 -1840.000000 0 494.500000 -1840.700000 0 181.700000 -1840.700000 0 181.700000 -1840.000000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -1840.700000 0 494.500000 -1840.700000 0 494.500000 -1841.500000 0 181.700000 -1841.500000 0 181.700000 -1840.700000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -1841.500000 0 494.500000 -1841.500000 0 494.500000 -1842.300000 0 181.700000 -1842.300000 0 181.700000 -1841.500000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -1842.300000 0 494.500000 -1842.300000 0 494.500000 -1843.000000 0 181.700000 -1843.000000 0 181.700000 -1842.300000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -1843.000000 0 494.500000 -1843.000000 0 494.500000 -1843.800000 0 181.700000 -1843.800000 0 181.700000 -1843.000000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -1843.800000 0 494.500000 -1843.800000 0 494.500000 -1844.500000 0 181.700000 -1844.500000 0 181.700000 -1843.800000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -1844.500000 0 494.500000 -1844.500000 0 494.500000 -1845.300000 0 181.700000 -1845.300000 0 181.700000 -1844.500000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -1845.300000 0 494.500000 -1845.300000 0 494.500000 -1846.000000 0 181.700000 -1846.000000 0 181.700000 -1845.300000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -1846.000000 0 494.500000 -1846.000000 0 494.500000 -1846.800000 0 181.700000 -1846.800000 0 181.700000 -1846.000000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -1846.800000 0 494.500000 -1846.800000 0 494.500000 -1847.600000 0 181.700000 -1847.600000 0 181.700000 -1846.800000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -1847.600000 0 494.500000 -1847.600000 0 494.500000 -1848.300000 0 181.700000 -1848.300000 0 181.700000 -1847.600000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -1848.300000 0 494.500000 -1848.300000 0 494.500000 -1849.100000 0 181.700000 -1849.100000 0 181.700000 -1848.300000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -1849.100000 0 494.500000 -1849.100000 0 494.500000 -1849.800000 0 181.700000 -1849.800000 0 181.700000 -1849.100000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -1849.800000 0 494.500000 -1849.800000 0 494.500000 -1850.600000 0 181.700000 -1850.600000 0 181.700000 -1849.800000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -1850.600000 0 494.500000 -1850.600000 0 494.500000 -1851.400000 0 181.700000 -1851.400000 0 181.700000 -1850.600000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -1851.400000 0 494.500000 -1851.400000 0 494.500000 -1852.100000 0 181.700000 -1852.100000 0 181.700000 -1851.400000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -1852.100000 0 494.500000 -1852.100000 0 494.500000 -1852.900000 0 181.700000 -1852.900000 0 181.700000 -1852.100000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -1852.900000 0 494.500000 -1852.900000 0 494.500000 -1853.600000 0 181.700000 -1853.600000 0 181.700000 -1852.900000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -1853.600000 0 494.500000 -1853.600000 0 494.500000 -1854.400000 0 181.700000 -1854.400000 0 181.700000 -1853.600000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -1854.400000 0 494.500000 -1854.400000 0 494.500000 -1855.200000 0 181.700000 -1855.200000 0 181.700000 -1854.400000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -1855.200000 0 494.500000 -1855.200000 0 494.500000 -1855.900000 0 181.700000 -1855.900000 0 181.700000 -1855.200000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -1855.900000 0 494.500000 -1855.900000 0 494.500000 -1856.700000 0 181.700000 -1856.700000 0 181.700000 -1855.900000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -1856.700000 0 494.500000 -1856.700000 0 494.500000 -1857.400000 0 181.700000 -1857.400000 0 181.700000 -1856.700000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -1857.400000 0 494.500000 -1857.400000 0 494.500000 -1858.200000 0 181.700000 -1858.200000 0 181.700000 -1857.400000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -1858.200000 0 494.500000 -1858.200000 0 494.500000 -1858.900000 0 181.700000 -1858.900000 0 181.700000 -1858.200000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -1858.900000 0 494.500000 -1858.900000 0 494.500000 -1859.700000 0 181.700000 -1859.700000 0 181.700000 -1858.900000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -1859.700000 0 494.500000 -1859.700000 0 494.500000 -1860.500000 0 181.700000 -1860.500000 0 181.700000 -1859.700000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -1860.500000 0 494.500000 -1860.500000 0 494.500000 -1861.200000 0 181.700000 -1861.200000 0 181.700000 -1860.500000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -1861.200000 0 494.500000 -1861.200000 0 494.500000 -1862.000000 0 181.700000 -1862.000000 0 181.700000 -1861.200000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -1862.000000 0 494.500000 -1862.000000 0 494.500000 -1862.700000 0 181.700000 -1862.700000 0 181.700000 -1862.000000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -1862.700000 0 494.500000 -1862.700000 0 494.500000 -1863.500000 0 181.700000 -1863.500000 0 181.700000 -1862.700000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -1863.500000 0 494.500000 -1863.500000 0 494.500000 -1864.300000 0 181.700000 -1864.300000 0 181.700000 -1863.500000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -1864.300000 0 494.500000 -1864.300000 0 494.500000 -1865.000000 0 181.700000 -1865.000000 0 181.700000 -1864.300000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -1865.000000 0 494.500000 -1865.000000 0 494.500000 -1865.800000 0 181.700000 -1865.800000 0 181.700000 -1865.000000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -1865.800000 0 494.500000 -1865.800000 0 494.500000 -1866.500000 0 181.700000 -1866.500000 0 181.700000 -1865.800000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -1866.500000 0 494.500000 -1866.500000 0 494.500000 -1867.300000 0 181.700000 -1867.300000 0 181.700000 -1866.500000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -1867.300000 0 494.500000 -1867.300000 0 494.500000 -1868.100000 0 181.700000 -1868.100000 0 181.700000 -1867.300000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -1868.100000 0 494.500000 -1868.100000 0 494.500000 -1868.800000 0 181.700000 -1868.800000 0 181.700000 -1868.100000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -1868.800000 0 494.500000 -1868.800000 0 494.500000 -1869.600000 0 181.700000 -1869.600000 0 181.700000 -1868.800000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -1869.600000 0 494.500000 -1869.600000 0 494.500000 -1870.300000 0 181.700000 -1870.300000 0 181.700000 -1869.600000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -1870.300000 0 494.500000 -1870.300000 0 494.500000 -1871.100000 0 181.700000 -1871.100000 0 181.700000 -1870.300000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -1871.100000 0 494.500000 -1871.100000 0 494.500000 -1871.800000 0 181.700000 -1871.800000 0 181.700000 -1871.100000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -1871.800000 0 494.500000 -1871.800000 0 494.500000 -1872.600000 0 181.700000 -1872.600000 0 181.700000 -1871.800000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -1872.600000 0 494.500000 -1872.600000 0 494.500000 -1873.400000 0 181.700000 -1873.400000 0 181.700000 -1872.600000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -1873.400000 0 494.500000 -1873.400000 0 494.500000 -1874.100000 0 181.700000 -1874.100000 0 181.700000 -1873.400000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -1874.100000 0 494.500000 -1874.100000 0 494.500000 -1874.900000 0 181.700000 -1874.900000 0 181.700000 -1874.100000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -1874.900000 0 494.500000 -1874.900000 0 494.500000 -1875.600000 0 181.700000 -1875.600000 0 181.700000 -1874.900000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -1875.600000 0 494.500000 -1875.600000 0 494.500000 -1876.400000 0 181.700000 -1876.400000 0 181.700000 -1875.600000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -1876.400000 0 494.500000 -1876.400000 0 494.500000 -1877.200000 0 181.700000 -1877.200000 0 181.700000 -1876.400000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -1877.200000 0 494.500000 -1877.200000 0 494.500000 -1877.900000 0 181.700000 -1877.900000 0 181.700000 -1877.200000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -1877.900000 0 494.500000 -1877.900000 0 494.500000 -1878.700000 0 181.700000 -1878.700000 0 181.700000 -1877.900000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -1878.700000 0 494.500000 -1878.700000 0 494.500000 -1879.400000 0 181.700000 -1879.400000 0 181.700000 -1878.700000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -1879.400000 0 494.500000 -1879.400000 0 494.500000 -1880.200000 0 181.700000 -1880.200000 0 181.700000 -1879.400000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -1880.200000 0 494.500000 -1880.200000 0 494.500000 -1881.000000 0 181.700000 -1881.000000 0 181.700000 -1880.200000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -1881.000000 0 494.500000 -1881.000000 0 494.500000 -1881.700000 0 181.700000 -1881.700000 0 181.700000 -1881.000000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -1881.700000 0 494.500000 -1881.700000 0 494.500000 -1882.500000 0 181.700000 -1882.500000 0 181.700000 -1881.700000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -1882.500000 0 494.500000 -1882.500000 0 494.500000 -1883.200000 0 181.700000 -1883.200000 0 181.700000 -1882.500000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -1883.200000 0 494.500000 -1883.200000 0 494.500000 -1884.000000 0 181.700000 -1884.000000 0 181.700000 -1883.200000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -1884.000000 0 494.500000 -1884.000000 0 494.500000 -1884.700000 0 181.700000 -1884.700000 0 181.700000 -1884.000000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -1884.700000 0 494.500000 -1884.700000 0 494.500000 -1885.500000 0 181.700000 -1885.500000 0 181.700000 -1884.700000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -1885.500000 0 494.500000 -1885.500000 0 494.500000 -1886.300000 0 181.700000 -1886.300000 0 181.700000 -1885.500000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -1886.300000 0 494.500000 -1886.300000 0 494.500000 -1887.000000 0 181.700000 -1887.000000 0 181.700000 -1886.300000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -1887.000000 0 494.500000 -1887.000000 0 494.500000 -1887.800000 0 181.700000 -1887.800000 0 181.700000 -1887.000000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -1887.800000 0 494.500000 -1887.800000 0 494.500000 -1888.500000 0 181.700000 -1888.500000 0 181.700000 -1887.800000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -1888.500000 0 494.500000 -1888.500000 0 494.500000 -1889.300000 0 181.700000 -1889.300000 0 181.700000 -1888.500000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -1889.300000 0 494.500000 -1889.300000 0 494.500000 -1890.100000 0 181.700000 -1890.100000 0 181.700000 -1889.300000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -1890.100000 0 494.500000 -1890.100000 0 494.500000 -1890.800000 0 181.700000 -1890.800000 0 181.700000 -1890.100000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -1890.800000 0 494.500000 -1890.800000 0 494.500000 -1891.600000 0 181.700000 -1891.600000 0 181.700000 -1890.800000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -1891.600000 0 494.500000 -1891.600000 0 494.500000 -1892.300000 0 181.700000 -1892.300000 0 181.700000 -1891.600000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -1892.300000 0 494.500000 -1892.300000 0 494.500000 -1893.100000 0 181.700000 -1893.100000 0 181.700000 -1892.300000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -1893.100000 0 494.500000 -1893.100000 0 494.500000 -1893.900000 0 181.700000 -1893.900000 0 181.700000 -1893.100000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -1893.900000 0 494.500000 -1893.900000 0 494.500000 -1894.600000 0 181.700000 -1894.600000 0 181.700000 -1893.900000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -1894.600000 0 494.500000 -1894.600000 0 494.500000 -1895.400000 0 181.700000 -1895.400000 0 181.700000 -1894.600000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -1895.400000 0 494.500000 -1895.400000 0 494.500000 -1896.100000 0 181.700000 -1896.100000 0 181.700000 -1895.400000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -1896.100000 0 494.500000 -1896.100000 0 494.500000 -1896.900000 0 181.700000 -1896.900000 0 181.700000 -1896.100000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -1896.900000 0 494.500000 -1896.900000 0 494.500000 -1897.600000 0 181.700000 -1897.600000 0 181.700000 -1896.900000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -1897.600000 0 494.500000 -1897.600000 0 494.500000 -1898.400000 0 181.700000 -1898.400000 0 181.700000 -1897.600000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -1898.400000 0 494.500000 -1898.400000 0 494.500000 -1899.200000 0 181.700000 -1899.200000 0 181.700000 -1898.400000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -1899.200000 0 494.500000 -1899.200000 0 494.500000 -1899.900000 0 181.700000 -1899.900000 0 181.700000 -1899.200000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -1899.900000 0 494.500000 -1899.900000 0 494.500000 -1900.700000 0 181.700000 -1900.700000 0 181.700000 -1899.900000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -1900.700000 0 494.500000 -1900.700000 0 494.500000 -1901.400000 0 181.700000 -1901.400000 0 181.700000 -1900.700000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -1901.400000 0 494.500000 -1901.400000 0 494.500000 -1902.200000 0 181.700000 -1902.200000 0 181.700000 -1901.400000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -1902.200000 0 494.500000 -1902.200000 0 494.500000 -1903.000000 0 181.700000 -1903.000000 0 181.700000 -1902.200000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -1903.000000 0 494.500000 -1903.000000 0 494.500000 -1903.700000 0 181.700000 -1903.700000 0 181.700000 -1903.000000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -1903.700000 0 494.500000 -1903.700000 0 494.500000 -1904.500000 0 181.700000 -1904.500000 0 181.700000 -1903.700000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -1904.500000 0 494.500000 -1904.500000 0 494.500000 -1905.200000 0 181.700000 -1905.200000 0 181.700000 -1904.500000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -1905.200000 0 494.500000 -1905.200000 0 494.500000 -1906.000000 0 181.700000 -1906.000000 0 181.700000 -1905.200000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -1906.000000 0 494.500000 -1906.000000 0 494.500000 -1906.800000 0 181.700000 -1906.800000 0 181.700000 -1906.000000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -1906.800000 0 494.500000 -1906.800000 0 494.500000 -1907.500000 0 181.700000 -1907.500000 0 181.700000 -1906.800000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -1907.500000 0 494.500000 -1907.500000 0 494.500000 -1908.300000 0 181.700000 -1908.300000 0 181.700000 -1907.500000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -1908.300000 0 494.500000 -1908.300000 0 494.500000 -1909.000000 0 181.700000 -1909.000000 0 181.700000 -1908.300000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -1909.000000 0 494.500000 -1909.000000 0 494.500000 -1909.800000 0 181.700000 -1909.800000 0 181.700000 -1909.000000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -1909.800000 0 494.500000 -1909.800000 0 494.500000 -1910.500000 0 181.700000 -1910.500000 0 181.700000 -1909.800000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -1910.500000 0 494.500000 -1910.500000 0 494.500000 -1911.300000 0 181.700000 -1911.300000 0 181.700000 -1910.500000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -1911.300000 0 494.500000 -1911.300000 0 494.500000 -1912.100000 0 181.700000 -1912.100000 0 181.700000 -1911.300000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -1912.100000 0 494.500000 -1912.100000 0 494.500000 -1912.800000 0 181.700000 -1912.800000 0 181.700000 -1912.100000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -1912.800000 0 494.500000 -1912.800000 0 494.500000 -1913.600000 0 181.700000 -1913.600000 0 181.700000 -1912.800000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -1913.600000 0 494.500000 -1913.600000 0 494.500000 -1914.300000 0 181.700000 -1914.300000 0 181.700000 -1913.600000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -1914.300000 0 494.500000 -1914.300000 0 494.500000 -1915.100000 0 181.700000 -1915.100000 0 181.700000 -1914.300000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -1915.100000 0 494.500000 -1915.100000 0 494.500000 -1915.900000 0 181.700000 -1915.900000 0 181.700000 -1915.100000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -1915.900000 0 494.500000 -1915.900000 0 494.500000 -1916.600000 0 181.700000 -1916.600000 0 181.700000 -1915.900000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -1916.600000 0 494.500000 -1916.600000 0 494.500000 -1917.400000 0 181.700000 -1917.400000 0 181.700000 -1916.600000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -1917.400000 0 494.500000 -1917.400000 0 494.500000 -1918.100000 0 181.700000 -1918.100000 0 181.700000 -1917.400000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -1918.100000 0 494.500000 -1918.100000 0 494.500000 -1918.900000 0 181.700000 -1918.900000 0 181.700000 -1918.100000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -1918.900000 0 494.500000 -1918.900000 0 494.500000 -1919.700000 0 181.700000 -1919.700000 0 181.700000 -1918.900000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -1919.700000 0 494.500000 -1919.700000 0 494.500000 -1920.400000 0 181.700000 -1920.400000 0 181.700000 -1919.700000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -1920.400000 0 494.500000 -1920.400000 0 494.500000 -1921.200000 0 181.700000 -1921.200000 0 181.700000 -1920.400000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -1921.200000 0 494.500000 -1921.200000 0 494.500000 -1921.900000 0 181.700000 -1921.900000 0 181.700000 -1921.200000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -1921.900000 0 494.500000 -1921.900000 0 494.500000 -1922.700000 0 181.700000 -1922.700000 0 181.700000 -1921.900000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -1922.700000 0 494.500000 -1922.700000 0 494.500000 -1923.400000 0 181.700000 -1923.400000 0 181.700000 -1922.700000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -1923.400000 0 494.500000 -1923.400000 0 494.500000 -1924.200000 0 181.700000 -1924.200000 0 181.700000 -1923.400000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -1924.200000 0 494.500000 -1924.200000 0 494.500000 -1925.000000 0 181.700000 -1925.000000 0 181.700000 -1924.200000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -1925.000000 0 494.500000 -1925.000000 0 494.500000 -1925.700000 0 181.700000 -1925.700000 0 181.700000 -1925.000000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -1925.700000 0 494.500000 -1925.700000 0 494.500000 -1926.500000 0 181.700000 -1926.500000 0 181.700000 -1925.700000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -1926.500000 0 494.500000 -1926.500000 0 494.500000 -1927.200000 0 181.700000 -1927.200000 0 181.700000 -1926.500000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -1927.200000 0 494.500000 -1927.200000 0 494.500000 -1928.000000 0 181.700000 -1928.000000 0 181.700000 -1927.200000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -1928.000000 0 494.500000 -1928.000000 0 494.500000 -1928.700000 0 181.700000 -1928.700000 0 181.700000 -1928.000000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -1928.700000 0 494.500000 -1928.700000 0 494.500000 -1929.500000 0 181.700000 -1929.500000 0 181.700000 -1928.700000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -1929.500000 0 494.500000 -1929.500000 0 494.500000 -1930.300000 0 181.700000 -1930.300000 0 181.700000 -1929.500000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -1930.300000 0 494.500000 -1930.300000 0 494.500000 -1931.000000 0 181.700000 -1931.000000 0 181.700000 -1930.300000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -1931.000000 0 494.500000 -1931.000000 0 494.500000 -1931.800000 0 181.700000 -1931.800000 0 181.700000 -1931.000000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -1931.800000 0 494.500000 -1931.800000 0 494.500000 -1932.500000 0 181.700000 -1932.500000 0 181.700000 -1931.800000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -1932.500000 0 494.500000 -1932.500000 0 494.500000 -1933.300000 0 181.700000 -1933.300000 0 181.700000 -1932.500000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -1933.300000 0 494.500000 -1933.300000 0 494.500000 -1934.100000 0 181.700000 -1934.100000 0 181.700000 -1933.300000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -1934.100000 0 494.500000 -1934.100000 0 494.500000 -1934.800000 0 181.700000 -1934.800000 0 181.700000 -1934.100000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -1934.800000 0 494.500000 -1934.800000 0 494.500000 -1935.600000 0 181.700000 -1935.600000 0 181.700000 -1934.800000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -1935.600000 0 494.500000 -1935.600000 0 494.500000 -1936.300000 0 181.700000 -1936.300000 0 181.700000 -1935.600000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -1936.300000 0 494.500000 -1936.300000 0 494.500000 -1937.100000 0 181.700000 -1937.100000 0 181.700000 -1936.300000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -1937.100000 0 494.500000 -1937.100000 0 494.500000 -1937.800000 0 181.700000 -1937.800000 0 181.700000 -1937.100000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -1937.800000 0 494.500000 -1937.800000 0 494.500000 -1938.600000 0 181.700000 -1938.600000 0 181.700000 -1937.800000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -1938.600000 0 494.500000 -1938.600000 0 494.500000 -1939.400000 0 181.700000 -1939.400000 0 181.700000 -1938.600000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -1939.400000 0 494.500000 -1939.400000 0 494.500000 -1940.100000 0 181.700000 -1940.100000 0 181.700000 -1939.400000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -1940.100000 0 494.500000 -1940.100000 0 494.500000 -1940.900000 0 181.700000 -1940.900000 0 181.700000 -1940.100000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -1940.900000 0 494.500000 -1940.900000 0 494.500000 -1941.600000 0 181.700000 -1941.600000 0 181.700000 -1940.900000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -1941.600000 0 494.500000 -1941.600000 0 494.500000 -1942.400000 0 181.700000 -1942.400000 0 181.700000 -1941.600000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -1942.300000 0 181.800000 -1942.300000 0 181.800000 -1749.000000 0 494.400000 -1749.000000 0 494.400000 -1942.300000 0 338.100000 -1942.300000 0
+strokePath subpath 1 338.100000 -1942.300000 0 181.800000 -1942.300000 0 181.800000 -1749.000000 0 494.400000 -1749.000000 0 494.400000 -1942.300000 0 338.100000 -1942.300000 0
+saveState
+updateCtm 11410.000000 0.000000 0.000000 -8760.000000 20530.000000 265830.000000
+drawSoftMaskedImage 1142 877 1142 877 JPEG 70955 PPM 3004618
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -1903.276000 215.488000 -1911.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -1903.276000 220.592000 -1911.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -1903.276000 225.696000 -1911.276000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -1903.276000 230.800000 -1911.276000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -1910.876000 241.388000 -1918.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -1910.876000 246.492000 -1918.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -1910.876000 251.596000 -1918.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -1910.876000 256.700000 -1918.876000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -1918.576000 267.188000 -1926.576000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -1918.576000 272.292000 -1926.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -1918.576000 277.396000 -1926.576000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -1918.576000 282.500000 -1926.576000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -1926.176000 293.088000 -1934.176000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -1926.176000 298.192000 -1934.176000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -1926.176000 303.296000 -1934.176000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -1926.176000 308.400000 -1934.176000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -1888.376000 202.588000 -1896.376000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -1868.976000 201.688000 -1876.976000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -1849.676000 195.788000 -1857.676000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -1849.676000 200.892000 -1857.676000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -1830.376000 194.888000 -1838.376000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -1830.376000 199.992000 -1838.376000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -1811.076000 193.988000 -1819.076000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -1811.076000 199.092000 -1819.076000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -1791.676000 193.088000 -1799.676000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -1791.676000 198.192000 -1799.676000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -1919.576000 330.188000 -1927.576000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -1919.576000 332.716000 -1927.576000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -1919.576000 337.596000 -1927.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -1919.576000 341.396000 -1927.576000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -1919.576000 346.036000 -1927.576000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -1919.576000 350.900000 -1927.576000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -1919.576000 355.972000 -1927.576000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -1919.576000 359.196000 -1927.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -1919.576000 362.196000 -1927.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -1919.576000 367.404000 -1927.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -1919.576000 371.876000 -1927.576000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -1919.576000 375.052000 -1927.576000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -1900.076000 361.172000 -1908.076000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -1900.076000 364.340000 -1908.076000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -1900.076000 367.396000 -1908.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -1900.076000 372.604000 -1908.076000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -1900.076000 379.348000 -1908.076000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -1900.076000 384.484000 -1908.076000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -1900.076000 389.436000 -1908.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -1900.076000 392.108000 -1908.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -1900.076000 395.708000 -1908.076000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -1900.076000 397.540000 -1908.076000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -1900.076000 402.444000 -1908.076000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -1900.076000 406.788000 -1908.076000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -1880.576000 392.972000 -1888.576000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -1880.576000 398.076000 -1888.576000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -1880.576000 403.180000 -1888.576000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -1880.576000 405.428000 -1888.576000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -1880.576000 410.332000 -1888.576000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -1880.576000 414.476000 -1888.576000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -1753.008000 305.808000 -1767.008000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -1753.008000 314.138000 -1767.008000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -1753.008000 320.788000 -1767.008000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -1753.008000 328.698000 -1767.008000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -1753.008000 336.972000 -1767.008000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -1753.008000 344.182000 -1767.008000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -1753.008000 349.810000 -1767.008000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -1753.008000 354.234000 -1767.008000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -1753.008000 362.718000 -1767.008000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -1753.008000 367.870000 -1767.008000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -1753.008000 372.322000 -1767.008000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -1753.008000 382.080000 -1767.008000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -1753.008000 388.772000 -1767.008000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -1753.008000 397.802000 -1767.008000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -1753.008000 402.254000 -1767.008000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -1753.008000 407.896000 -1767.008000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -1875.900000 0 424.300000 -1875.900000 0 424.300000 -1815.100000 0 493.600000 -1815.100000 0 493.600000 -1875.900000 0 458.900000 -1875.900000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -1824.700000 0 428.900000 -1824.700000 0 428.900000 -1818.800000 0 434.800000 -1818.800000 0 434.800000 -1824.700000 0 431.900000 -1824.700000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -1835.800000 0 428.900000 -1835.800000 0 428.900000 -1829.800000 0 434.800000 -1829.800000 0 434.800000 -1835.800000 0 431.900000 -1835.800000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -1846.900000 0 428.900000 -1846.900000 0 428.900000 -1840.900000 0 434.800000 -1840.900000 0 434.800000 -1846.900000 0 431.900000 -1846.900000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -1858.000000 0 428.900000 -1858.000000 0 428.900000 -1852.000000 0 434.800000 -1852.000000 0 434.800000 -1858.000000 0 431.900000 -1858.000000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -1869.100000 0 428.900000 -1869.100000 0 428.900000 -1863.100000 0 434.800000 -1863.100000 0 434.800000 -1869.100000 0 431.900000 -1869.100000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -1817.676000 443.288000 -1825.676000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -1817.676000 445.816000 -1825.676000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -1817.676000 450.600000 -1825.676000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -1817.676000 454.496000 -1825.676000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -1817.676000 459.136000 -1825.676000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -1817.676000 464.000000 -1825.676000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -1817.676000 468.976000 -1825.676000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -1817.676000 472.304000 -1825.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -1817.676000 475.208000 -1825.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -1817.676000 480.520000 -1825.676000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -1817.676000 484.992000 -1825.676000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -1817.676000 488.168000 -1825.676000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -1828.676000 443.352000 -1836.676000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -1828.676000 447.920000 -1836.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -1828.676000 452.976000 -1836.676000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -1828.676000 457.400000 -1836.676000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -1828.676000 462.472000 -1836.676000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -1828.676000 465.800000 -1836.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -1828.676000 468.904000 -1836.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -1828.676000 473.816000 -1836.676000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -1828.676000 478.888000 -1836.676000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -1828.676000 482.064000 -1836.676000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -1839.776000 442.872000 -1847.776000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -1839.776000 446.040000 -1847.776000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -1839.776000 448.992000 -1847.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -1839.776000 454.304000 -1847.776000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -1839.776000 461.048000 -1847.776000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -1839.776000 466.184000 -1847.776000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -1839.776000 471.136000 -1847.776000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -1839.776000 473.808000 -1847.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -1839.776000 477.408000 -1847.776000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -1839.776000 479.240000 -1847.776000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -1839.776000 484.144000 -1847.776000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -1839.776000 488.488000 -1847.776000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -1850.876000 443.384000 -1858.876000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -1850.876000 448.464000 -1858.876000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -1850.876000 453.424000 -1858.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -1850.876000 456.696000 -1858.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -1850.876000 459.800000 -1858.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -1850.876000 462.032000 -1858.876000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -1850.876000 466.936000 -1858.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -1850.876000 471.080000 -1858.876000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -1861.976000 443.272000 -1869.976000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -1861.976000 448.376000 -1869.976000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -1861.976000 453.480000 -1869.976000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -1861.976000 455.728000 -1869.976000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -1861.976000 460.632000 -1869.976000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -1861.976000 464.776000 -1869.976000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -4507.000000 0 114.800000 -4507.000000 0 114.800000 -4464.200000 0 72.000000 -4464.200000 0 72.000000 -4507.000000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 529890.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 546.200000 0 504.000000 546.200000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 546.200000 0
+eoFillPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 245.800000 0 72.000000 245.800000 0 72.000000 72.000000 0
+eoFillPath subpath 1 72.000000 245.800000 0 121.400000 245.800000 0 121.400000 546.200000 0 72.000000 546.200000 0 72.000000 245.800000 0
+eoFillPath subpath 1 454.500000 245.800000 0 504.000000 245.800000 0 504.000000 546.200000 0 454.500000 546.200000 0 454.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 701.300000 0 504.000000 701.300000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 701.300000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 72.000000 654.200000 0 291.400000 654.200000 0 291.400000 672.900000 0 72.000000 672.900000 0 72.000000 654.200000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 72.200000 0 504.000000 72.200000 0 504.000000 86.100000 0 72.000000 86.100000 0 72.000000 72.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 322.800000 719.948000 336.592000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 336.608000 719.948000 346.064000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 346.112000 719.948000 351.184000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.216000 719.948000 363.232000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 363.216000 719.948000 372.992000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 373.024000 719.948000 383.152000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 383.120000 719.948000 391.440000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 391.424000 719.948000 401.264000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 401.232000 719.948000 406.304000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 406.336000 719.948000 412.096000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 412.144000 719.948000 417.216000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 417.200000 719.948000 430.992000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 431.008000 719.948000 440.464000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 440.512000 719.948000 445.584000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.616000 719.948000 458.000000 703.948000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 458.016000 719.948000 467.808000 703.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 467.824000 719.948000 474.400000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.128000 719.948000 484.272000 703.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 484.336000 719.948000 494.176000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 494.144000 719.948000 504.272000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 672.848000 88.020000 656.848000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 88.004000 672.848000 98.420000 656.848000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.404000 672.848000 103.972000 656.848000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.004000 672.848000 117.124000 656.848000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 117.108000 672.848000 127.892000 656.848000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 127.908000 672.848000 135.796000 656.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.812000 672.848000 147.252000 656.848000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 147.316000 672.848000 158.164000 656.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 158.212000 672.848000 169.588000 656.848000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 648.336000 193.492000 636.336000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 648.336000 201.232000 636.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 648.336000 208.300000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 208.312000 648.336000 212.116000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 212.416000 648.336000 220.096000 636.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 220.120000 648.336000 227.272000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 227.224000 648.336000 232.960000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 233.020000 648.336000 240.700000 636.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 240.724000 648.336000 247.816000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 247.828000 648.336000 255.556000 636.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 255.724000 648.336000 259.528000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 259.720000 648.336000 267.400000 636.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 267.424000 648.336000 274.648000 636.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 274.720000 648.336000 281.812000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 281.824000 648.336000 287.980000 636.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 288.028000 648.336000 291.832000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 292.024000 648.336000 299.752000 636.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 299.728000 648.336000 306.952000 636.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 307.024000 648.336000 311.836000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 312.028000 648.336000 315.832000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.024000 648.336000 323.176000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 323.224000 648.336000 330.904000 636.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 330.820000 648.336000 338.500000 636.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 338.524000 648.336000 345.616000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 345.628000 648.336000 352.780000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 352.828000 648.336000 358.564000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.624000 648.336000 362.428000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.620000 648.336000 369.772000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 369.820000 648.336000 374.632000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 374.824000 648.336000 378.628000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.024000 648.336000 387.016000 636.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 386.824000 648.336000 392.560000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.524000 648.336000 398.680000 636.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 398.728000 648.336000 403.540000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 403.732000 648.336000 407.536000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 407.728000 648.336000 413.884000 636.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 413.932000 648.336000 417.760000 636.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 417.736000 648.336000 425.416000 636.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 425.332000 648.336000 433.060000 636.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 433.036000 648.336000 437.848000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 438.136000 648.336000 441.940000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 442.132000 648.336000 446.944000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 446.932000 648.336000 454.156000 636.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 454.336000 648.336000 458.140000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 458.332000 648.336000 466.012000 636.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.036000 648.336000 473.128000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 473.332000 648.336000 477.136000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 477.328000 648.336000 484.096000 636.336000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 484.024000 648.336000 491.116000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 491.224000 648.336000 496.960000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 496.924000 648.336000 503.692000 636.336000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 648.336000 508.004000 636.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 634.436000 193.180000 622.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 193.204000 634.436000 197.032000 622.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 197.008000 634.436000 204.688000 622.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 204.712000 634.436000 208.516000 622.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.208000 634.436000 214.012000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 215.704000 634.436000 224.512000 622.436000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 224.500000 634.436000 232.228000 622.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 232.204000 634.436000 237.016000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 238.804000 634.436000 242.608000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 244.408000 634.436000 251.560000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 251.608000 634.436000 255.436000 622.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 255.412000 634.436000 260.224000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 260.212000 634.436000 267.940000 622.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 267.916000 634.436000 275.140000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 275.212000 634.436000 282.940000 622.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 282.916000 634.436000 290.596000 622.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 290.620000 634.436000 298.348000 622.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 300.016000 634.436000 303.820000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 305.512000 634.436000 310.324000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 310.408000 634.436000 318.136000 622.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 318.112000 634.436000 325.204000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 326.908000 634.436000 330.712000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 332.512000 634.436000 339.664000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 339.712000 634.436000 346.432000 622.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 346.408000 634.436000 351.220000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 351.208000 634.436000 358.936000 622.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 358.912000 634.436000 366.064000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.112000 634.436000 369.940000 622.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 371.608000 634.436000 375.412000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.104000 634.436000 383.872000 622.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 383.908000 634.436000 391.000000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 391.012000 634.436000 398.692000 622.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 398.716000 634.436000 405.808000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 405.820000 634.436000 410.632000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 410.620000 634.436000 417.772000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 417.724000 634.436000 425.404000 622.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 425.524000 634.436000 429.352000 622.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 429.328000 634.436000 436.420000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 438.124000 634.436000 441.928000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 443.728000 634.436000 451.408000 622.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 451.432000 634.436000 458.584000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 458.536000 634.436000 464.272000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 464.332000 634.436000 472.012000 622.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 472.036000 634.436000 479.128000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 479.140000 634.436000 486.868000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 488.536000 634.436000 492.340000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 494.032000 634.436000 497.860000 622.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 497.836000 634.436000 503.992000 622.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 634.436000 507.904000 622.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 620.536000 193.180000 608.536000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 193.204000 620.536000 200.932000 608.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 200.908000 620.536000 204.736000 608.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 204.712000 620.536000 209.524000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 209.608000 620.536000 216.700000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 217.012000 620.536000 220.816000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 221.212000 620.536000 227.368000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.416000 620.536000 238.792000 608.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 238.720000 620.536000 245.872000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 245.920000 620.536000 249.748000 608.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 249.724000 620.536000 253.552000 608.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 253.624000 620.536000 257.428000 608.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 257.824000 620.536000 261.628000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.024000 620.536000 265.852000 608.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 265.828000 620.536000 270.640000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 270.724000 620.536000 274.012000 608.536000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 274.024000 620.536000 280.180000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 280.420000 620.536000 284.224000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.620000 620.536000 291.772000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 291.820000 620.536000 303.196000 608.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 303.124000 620.536000 310.276000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 310.324000 620.536000 316.636000 608.536000 1.000000 0.000000 0.000000 1.000000 z
+drawChar 316.624000 620.536000 320.452000 608.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 320.428000 620.536000 328.156000 608.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 328.228000 620.536000 335.908000 608.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 336.328000 620.536000 340.132000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 340.528000 620.536000 348.256000 608.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 348.232000 620.536000 355.456000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 355.528000 620.536000 365.788000 608.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 366.028000 620.536000 369.832000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.228000 620.536000 381.604000 608.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 381.628000 620.536000 389.356000 608.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 389.332000 620.536000 396.052000 608.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 396.028000 620.536000 403.756000 608.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 404.224000 620.536000 408.028000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 408.424000 620.536000 413.164000 608.536000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 413.128000 620.536000 416.416000 608.536000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 416.428000 620.536000 427.804000 608.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 428.128000 620.536000 431.932000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 432.328000 620.536000 439.480000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 439.528000 620.536000 447.208000 608.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 447.124000 620.536000 450.952000 608.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 451.024000 620.536000 458.116000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 458.524000 620.536000 462.328000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 462.724000 620.536000 467.536000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 467.524000 620.536000 474.748000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 475.120000 620.536000 478.924000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 479.320000 620.536000 487.000000 608.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 487.024000 620.536000 492.760000 608.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 492.724000 620.536000 499.948000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 620.536000 504.044000 608.536000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 606.636000 193.180000 594.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 193.204000 606.636000 200.932000 594.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 200.908000 606.636000 207.628000 594.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 207.604000 606.636000 214.696000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 215.008000 606.636000 218.812000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 219.208000 606.636000 223.648000 594.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 223.612000 606.636000 229.348000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 229.408000 606.636000 236.632000 594.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.608000 606.636000 247.984000 594.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 248.308000 606.636000 252.112000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 252.508000 606.636000 256.336000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 256.312000 606.636000 261.124000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 261.208000 606.636000 265.012000 594.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.312000 606.636000 269.116000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 269.512000 606.636000 277.828000 594.636000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 277.816000 606.636000 285.544000 594.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 285.616000 606.636000 291.352000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 291.316000 606.636000 296.128000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 296.116000 606.636000 303.844000 594.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 303.820000 606.636000 310.912000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 310.924000 606.636000 316.660000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 316.720000 606.636000 328.096000 594.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 328.120000 606.636000 335.344000 594.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 335.320000 606.636000 341.056000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 341.116000 606.636000 348.208000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 348.220000 606.636000 352.024000 594.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 352.324000 606.636000 356.128000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 356.524000 606.636000 361.336000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 361.324000 606.636000 369.052000 594.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 369.124000 606.636000 376.216000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 376.228000 606.636000 381.964000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 381.928000 606.636000 389.020000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 389.332000 606.636000 393.136000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.532000 606.636000 400.684000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 400.732000 606.636000 406.468000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 406.432000 606.636000 413.524000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 413.836000 606.636000 417.640000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 418.036000 606.636000 422.476000 594.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 422.440000 606.636000 428.176000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 428.236000 606.636000 435.964000 594.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 435.940000 606.636000 439.768000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 439.744000 606.636000 444.556000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 444.940000 606.636000 448.744000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 449.140000 606.636000 453.952000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 453.940000 606.636000 459.676000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.736000 606.636000 466.828000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.840000 606.636000 473.932000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 473.944000 606.636000 480.100000 594.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 480.340000 606.636000 484.144000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.540000 606.636000 488.368000 594.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 488.344000 606.636000 492.172000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 492.244000 606.636000 499.972000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 606.636000 504.044000 594.636000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 592.736000 189.328000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 189.304000 592.736000 197.032000 580.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 197.104000 592.736000 204.784000 580.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 204.700000 592.736000 208.504000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 208.600000 592.736000 213.412000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 213.400000 592.736000 221.128000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 221.200000 592.736000 228.292000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 228.304000 592.736000 232.108000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 232.108000 592.736000 239.200000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 239.212000 592.736000 246.892000 580.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 246.916000 592.736000 254.596000 580.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 254.620000 592.736000 261.712000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 261.724000 592.736000 265.528000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.624000 592.736000 272.848000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 272.728000 592.736000 277.168000 580.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 277.132000 592.736000 280.936000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 281.128000 592.736000 285.940000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 285.928000 592.736000 293.656000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 293.728000 592.736000 300.820000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 300.832000 592.736000 304.636000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 304.636000 592.736000 312.316000 580.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 312.232000 592.736000 319.384000 580.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 319.432000 592.736000 326.152000 580.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 326.128000 592.736000 333.388000 580.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 333.328000 592.736000 340.096000 580.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 340.132000 592.736000 347.284000 580.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 347.332000 592.736000 353.068000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 353.128000 592.736000 360.808000 580.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 360.724000 592.736000 364.528000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.720000 592.736000 374.980000 580.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 375.016000 592.736000 382.744000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 382.720000 592.736000 386.548000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 386.524000 592.736000 393.244000 580.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 393.328000 592.736000 401.056000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 400.924000 592.736000 404.728000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.824000 592.736000 412.504000 580.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 412.420000 592.736000 418.156000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 418.216000 592.736000 425.440000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 425.416000 592.736000 432.184000 580.736000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 432.220000 592.736000 436.048000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 436.024000 592.736000 443.704000 580.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 443.728000 592.736000 450.820000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 450.832000 592.736000 454.636000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.732000 592.736000 466.108000 580.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 466.036000 592.736000 473.128000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 473.140000 592.736000 476.944000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 477.040000 592.736000 487.300000 580.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 487.336000 592.736000 491.164000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 491.140000 592.736000 495.952000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 495.940000 592.736000 503.668000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 592.736000 507.904000 580.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 578.836000 189.940000 566.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 189.904000 578.836000 195.640000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 195.604000 578.836000 202.696000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 202.708000 578.836000 208.864000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 208.912000 578.836000 216.640000 566.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 216.616000 578.836000 220.420000 566.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 220.500000 578.836000 227.652000 566.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 227.700000 578.836000 235.380000 566.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 235.404000 578.836000 243.084000 566.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 243.108000 578.836000 246.936000 566.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 246.912000 578.836000 254.004000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 254.016000 578.836000 260.172000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 260.100000 578.836000 263.904000 566.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 263.904000 578.836000 267.708000 566.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 267.700000 578.836000 275.380000 566.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 275.404000 578.836000 282.496000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 282.508000 578.836000 289.660000 566.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 289.708000 578.836000 295.444000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 295.408000 578.836000 301.564000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 301.500000 578.836000 305.304000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 305.304000 578.836000 312.456000 566.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 312.504000 578.836000 320.232000 566.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 320.208000 578.836000 327.888000 566.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 327.912000 578.836000 331.716000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.716000 578.836000 338.808000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 338.820000 578.836000 345.588000 566.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 345.624000 578.836000 352.716000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 352.728000 578.836000 360.456000 566.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 360.432000 578.836000 364.236000 566.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 364.200000 578.836000 370.920000 566.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 370.896000 578.836000 378.624000 566.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 378.600000 578.836000 385.692000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 385.704000 578.836000 391.440000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 391.404000 578.836000 397.140000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 397.104000 578.836000 400.932000 566.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 400.908000 578.836000 408.000000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 408.012000 578.836000 414.168000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 414.300000 578.836000 418.104000 566.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 541.048000 85.476000 525.048000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 85.508000 541.048000 96.356000 525.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 96.404000 541.048000 104.292000 525.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 104.308000 541.048000 115.748000 525.048000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 115.812000 541.048000 121.380000 525.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.412000 541.048000 132.852000 525.048000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 132.916000 541.048000 143.700000 525.048000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 143.716000 541.048000 151.604000 525.048000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.620000 541.048000 163.060000 525.048000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 163.124000 541.048000 173.972000 525.048000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 174.020000 541.048000 185.396000 525.048000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 516.436000 193.492000 504.436000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 192.604000 516.436000 199.696000 504.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 199.708000 516.436000 207.436000 504.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 207.412000 516.436000 215.092000 504.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 215.116000 516.436000 218.944000 504.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 218.920000 516.436000 226.648000 504.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 226.720000 516.436000 234.400000 504.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 235.624000 516.436000 239.428000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 240.724000 516.436000 245.536000 504.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 245.620000 516.436000 252.844000 504.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 254.116000 516.436000 257.920000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 259.216000 516.436000 264.028000 504.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 264.016000 516.436000 271.744000 504.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 271.816000 516.436000 278.908000 504.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 280.216000 516.436000 284.020000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.316000 516.436000 293.044000 504.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 293.020000 516.436000 300.112000 504.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 300.124000 516.436000 305.860000 504.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 305.920000 516.436000 313.600000 504.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 314.824000 516.436000 318.628000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 319.924000 516.436000 327.604000 504.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 327.628000 516.436000 334.780000 504.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 334.732000 516.436000 340.468000 504.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 340.528000 516.436000 348.208000 504.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 348.232000 516.436000 355.324000 504.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 355.336000 516.436000 363.064000 504.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 364.336000 516.436000 368.140000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 369.436000 516.436000 373.264000 504.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 373.240000 516.436000 379.396000 504.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 380.740000 516.436000 384.544000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 385.840000 516.436000 393.064000 504.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 393.136000 516.436000 400.864000 504.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 400.840000 516.436000 407.932000 504.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 409.240000 516.436000 413.044000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 414.340000 516.436000 421.564000 504.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 421.540000 516.436000 425.980000 504.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 427.336000 516.436000 431.140000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 432.436000 516.436000 443.812000 504.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 443.836000 516.436000 450.604000 504.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 451.936000 516.436000 455.740000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 457.036000 516.436000 461.476000 504.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 461.440000 516.436000 468.592000 504.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 468.640000 516.436000 475.408000 504.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 475.444000 516.436000 482.668000 504.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 482.644000 516.436000 488.380000 504.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 488.344000 516.436000 492.172000 504.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 492.244000 516.436000 497.056000 504.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 497.044000 516.436000 504.136000 504.436000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 516.436000 507.904000 504.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 502.536000 193.228000 490.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 193.204000 502.536000 200.428000 490.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 200.500000 502.536000 208.180000 490.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 208.096000 502.536000 215.776000 490.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 215.800000 502.536000 219.628000 490.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 219.700000 502.536000 226.792000 490.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 226.804000 502.536000 232.960000 490.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 232.900000 502.536000 236.704000 490.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 236.704000 502.536000 240.508000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 240.808000 502.536000 245.548000 490.536000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 245.608000 502.536000 250.420000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 250.504000 502.536000 254.308000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 254.500000 502.536000 258.328000 490.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 258.304000 502.536000 264.460000 490.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 264.604000 502.536000 268.408000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.600000 502.536000 274.756000 490.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 274.804000 502.536000 278.632000 490.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 278.608000 502.536000 283.420000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 283.408000 502.536000 291.136000 490.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 291.112000 502.536000 298.264000 490.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 298.312000 502.536000 303.124000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 303.208000 502.536000 310.300000 490.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 310.312000 502.536000 317.992000 490.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 318.016000 502.536000 321.820000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.120000 502.536000 329.848000 490.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 329.824000 502.536000 336.916000 490.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 336.928000 502.536000 344.080000 490.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 344.032000 502.536000 349.768000 490.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 349.936000 502.536000 353.740000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.932000 502.536000 358.744000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 358.732000 502.536000 366.460000 490.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 366.532000 502.536000 373.624000 490.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 373.636000 502.536000 377.440000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.740000 502.536000 382.552000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 382.540000 502.536000 389.632000 490.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 389.644000 502.536000 395.380000 490.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.344000 502.536000 401.080000 490.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 401.140000 502.536000 408.292000 490.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 408.244000 502.536000 414.964000 490.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 414.940000 502.536000 422.032000 490.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 422.044000 502.536000 425.848000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.244000 502.536000 430.072000 490.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 430.048000 502.536000 437.140000 490.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 437.152000 502.536000 444.304000 490.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 444.352000 502.536000 452.032000 490.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 451.948000 502.536000 455.776000 490.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 455.848000 502.536000 463.576000 490.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 463.552000 502.536000 471.232000 490.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 471.352000 502.536000 475.156000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 475.348000 502.536000 479.788000 490.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 479.752000 502.536000 485.488000 490.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 485.548000 502.536000 492.772000 490.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 492.748000 502.536000 504.124000 490.536000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 502.536000 507.904000 490.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 488.636000 190.312000 476.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 488.636000 198.028000 476.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 488.636000 205.192000 476.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 207.496000 488.636000 211.300000 476.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 213.700000 488.636000 220.960000 476.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 220.900000 488.636000 224.728000 476.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 224.800000 488.636000 229.612000 476.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 229.600000 488.636000 236.320000 476.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 236.296000 488.636000 244.024000 476.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 244.000000 488.636000 251.092000 476.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 251.200000 488.636000 258.928000 476.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 259.000000 488.636000 262.804000 476.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.096000 488.636000 268.900000 476.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 271.300000 488.636000 276.040000 476.636000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 278.296000 488.636000 282.100000 476.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.596000 488.636000 292.324000 476.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 292.300000 488.636000 299.452000 476.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 299.404000 488.636000 306.172000 476.636000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 306.304000 488.636000 313.396000 476.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 318.100000 488.636000 321.904000 476.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 321.900000 488.636000 329.580000 476.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 329.604000 488.636000 336.756000 476.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 336.708000 488.636000 342.864000 476.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 342.912000 488.636000 346.740000 476.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 346.716000 488.636000 350.544000 476.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 351.516000 488.636000 355.320000 476.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 359.112000 488.636000 362.916000 476.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 363.000000 488.636000 368.736000 476.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 368.700000 488.636000 375.924000 476.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 375.996000 488.636000 382.152000 476.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 382.092000 488.636000 389.184000 476.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 389.196000 488.636000 400.572000 476.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 400.596000 488.636000 407.748000 476.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 407.796000 488.636000 413.532000 476.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 413.496000 488.636000 420.264000 476.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 419.292000 488.636000 423.096000 476.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 427.296000 488.636000 431.100000 476.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 431.000000 488.636000 435.812000 476.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 435.800000 488.636000 443.528000 476.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 443.600000 488.636000 450.368000 476.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 450.296000 488.636000 461.672000 476.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 461.696000 488.636000 468.788000 476.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 469.700000 488.636000 473.504000 476.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 477.296000 488.636000 481.100000 476.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 481.200000 488.636000 488.880000 476.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 488.904000 488.636000 492.732000 476.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 492.708000 488.636000 496.536000 476.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 496.512000 488.636000 500.340000 476.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 500.316000 488.636000 504.120000 476.636000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 488.636000 508.004000 476.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 474.736000 192.724000 462.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 192.700000 474.736000 198.436000 462.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.496000 474.736000 205.588000 462.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 205.600000 474.736000 213.280000 462.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 213.196000 474.736000 220.348000 462.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 220.396000 474.736000 228.124000 462.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 228.100000 474.736000 235.324000 462.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.500000 474.736000 240.304000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.396000 474.736000 248.548000 462.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 248.596000 474.736000 256.324000 462.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 256.192000 474.736000 263.872000 462.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 264.988000 474.736000 268.792000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 269.884000 474.736000 281.260000 462.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 281.284000 474.736000 288.436000 462.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 288.388000 474.736000 296.116000 462.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 296.188000 474.736000 302.956000 462.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 304.084000 474.736000 307.888000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.980000 474.736000 320.356000 462.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 320.380000 474.736000 327.604000 462.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 327.580000 474.736000 333.316000 462.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 333.280000 474.736000 340.372000 462.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 341.476000 474.736000 345.280000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 346.480000 474.736000 356.740000 462.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 356.776000 474.736000 364.000000 462.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 363.976000 474.736000 371.704000 462.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.680000 474.736000 379.360000 462.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 379.384000 474.736000 386.476000 462.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 386.488000 474.736000 392.224000 462.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.188000 474.736000 396.628000 462.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 396.592000 474.736000 404.320000 462.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 404.296000 474.736000 408.124000 462.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 410.392000 474.736000 414.196000 462.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 414.200000 474.736000 420.356000 462.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 420.404000 474.736000 428.084000 462.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 428.000000 474.736000 431.828000 462.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 431.900000 474.736000 438.620000 462.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 438.596000 474.736000 445.688000 462.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 445.700000 474.736000 451.856000 462.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 452.996000 474.736000 456.800000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 457.892000 474.736000 465.620000 462.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 465.596000 474.736000 471.752000 462.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 471.800000 474.736000 478.892000 462.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 478.904000 474.736000 486.584000 462.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 487.604000 474.736000 491.408000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 492.608000 474.736000 496.436000 462.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 496.412000 474.736000 504.140000 462.736000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 474.736000 507.904000 462.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 460.836000 192.220000 448.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 192.196000 460.836000 199.420000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 199.396000 460.836000 206.620000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 206.692000 460.836000 213.952000 448.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 213.892000 460.836000 217.720000 448.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 217.792000 460.836000 225.520000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 225.496000 460.836000 233.176000 448.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 234.496000 460.836000 238.300000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.692000 460.836000 246.844000 448.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 246.892000 460.836000 254.620000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 254.596000 460.836000 262.276000 448.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 263.692000 460.836000 267.496000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.888000 460.836000 276.568000 448.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 276.592000 460.836000 283.744000 448.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 283.696000 460.836000 290.956000 448.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 290.992000 460.836000 294.820000 448.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 294.796000 460.836000 302.524000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 302.596000 460.836000 310.276000 448.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 310.300000 460.836000 314.104000 448.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 315.400000 460.836000 319.204000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 320.596000 460.836000 325.336000 448.836000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 326.692000 460.836000 330.496000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 331.888000 460.836000 339.040000 448.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 339.088000 460.836000 342.916000 448.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 342.892000 460.836000 346.720000 448.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 346.696000 460.836000 353.920000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 353.992000 460.836000 364.252000 448.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 365.488000 460.836000 369.292000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.792000 460.836000 375.604000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 375.592000 460.836000 383.320000 448.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 383.392000 460.836000 390.484000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 390.496000 460.836000 396.652000 448.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 396.592000 460.836000 403.684000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 405.088000 460.836000 408.892000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 410.284000 460.836000 417.964000 448.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 417.988000 460.836000 421.816000 448.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 421.792000 460.836000 428.944000 448.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 428.992000 460.836000 436.720000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 436.696000 460.836000 441.508000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 441.496000 460.836000 447.652000 448.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 448.996000 460.836000 452.800000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.192000 460.836000 459.004000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 458.992000 460.836000 466.216000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 467.596000 460.836000 471.400000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 472.792000 460.836000 480.472000 448.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 480.496000 460.836000 486.232000 448.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 486.292000 460.836000 493.516000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 493.492000 460.836000 503.752000 448.836000 1.000000 0.000000 0.000000 1.000000 w
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 460.836000 507.904000 448.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 446.936000 195.760000 434.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 195.796000 446.936000 199.624000 434.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 199.600000 446.936000 203.428000 434.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 203.404000 446.936000 211.084000 434.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 213.208000 446.936000 217.012000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 219.112000 446.936000 226.264000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 226.312000 446.936000 234.040000 434.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 234.016000 446.936000 241.696000 434.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 243.820000 446.936000 247.624000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 249.724000 446.936000 254.464000 434.936000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 256.624000 446.936000 260.428000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.528000 446.936000 269.620000 434.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 269.632000 446.936000 275.788000 434.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 275.836000 446.936000 283.516000 434.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 283.432000 446.936000 290.524000 434.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 290.536000 446.936000 297.256000 434.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 297.340000 446.936000 301.168000 434.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 301.144000 446.936000 308.296000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 308.344000 446.936000 312.172000 434.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 312.148000 446.936000 315.976000 434.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 315.952000 446.936000 322.720000 434.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 324.856000 446.936000 328.660000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.760000 446.936000 334.588000 434.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 334.564000 446.936000 338.392000 434.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 338.464000 446.936000 345.724000 434.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 345.664000 446.936000 352.756000 434.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 354.964000 446.936000 358.768000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 360.868000 446.936000 365.680000 434.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 365.668000 446.936000 373.396000 434.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 373.468000 446.936000 380.560000 434.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 382.564000 446.936000 386.368000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 388.468000 446.936000 392.296000 434.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 392.272000 446.936000 399.496000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 399.568000 446.936000 406.792000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 406.768000 446.936000 414.028000 434.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 416.164000 446.936000 419.968000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 422.068000 446.936000 429.292000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 429.268000 446.936000 433.708000 434.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 435.868000 446.936000 439.672000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 441.772000 446.936000 446.584000 434.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 446.572000 446.936000 454.300000 434.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 454.372000 446.936000 461.464000 434.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 463.468000 446.936000 467.272000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 469.468000 446.936000 477.196000 434.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 477.172000 446.936000 484.264000 434.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.276000 446.936000 490.012000 434.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 490.072000 446.936000 497.752000 434.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 497.668000 446.936000 503.824000 434.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 446.936000 507.904000 434.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 433.036000 191.656000 421.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 433.036000 199.384000 421.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 199.300000 433.036000 205.036000 421.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 205.096000 433.036000 212.320000 421.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 212.296000 433.036000 220.024000 421.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 220.000000 433.036000 224.812000 421.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 224.896000 433.036000 228.724000 421.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 228.700000 433.036000 236.428000 421.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.404000 433.036000 244.084000 421.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 247.108000 433.036000 250.912000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 253.912000 433.036000 261.640000 421.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 261.616000 433.036000 269.296000 421.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 272.320000 433.036000 276.124000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.124000 433.036000 286.804000 421.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 286.828000 433.036000 293.920000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 293.932000 433.036000 298.744000 421.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 298.732000 433.036000 308.992000 421.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 309.028000 433.036000 316.120000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 316.132000 433.036000 323.224000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 323.236000 433.036000 330.964000 421.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 333.940000 433.036000 337.744000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 340.840000 433.036000 346.576000 421.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 346.540000 433.036000 353.764000 421.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 353.740000 433.036000 360.460000 421.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 360.436000 433.036000 367.696000 421.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 367.732000 433.036000 373.888000 421.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 376.936000 433.036000 380.740000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.740000 433.036000 390.892000 421.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 390.844000 433.036000 398.572000 421.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 398.644000 433.036000 406.324000 421.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 409.348000 433.036000 413.152000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 416.152000 433.036000 423.880000 421.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 423.856000 433.036000 430.948000 421.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 430.960000 433.036000 437.716000 421.036000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 437.764000 433.036000 442.576000 421.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.564000 433.036000 449.368000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 452.368000 433.036000 457.180000 421.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 457.168000 433.036000 464.392000 421.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 470.368000 433.036000 474.172000 421.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 474.400000 433.036000 484.660000 421.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 484.696000 433.036000 488.524000 421.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 488.500000 433.036000 492.328000 421.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 492.304000 433.036000 499.984000 421.036000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 433.036000 504.044000 421.036000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 419.136000 193.492000 407.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 193.504000 419.136000 200.728000 407.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 200.704000 419.136000 210.964000 407.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 211.000000 419.136000 218.092000 407.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 218.104000 419.136000 223.840000 407.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 223.804000 419.136000 229.960000 407.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 230.008000 419.136000 233.812000 407.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 381.348000 84.468000 365.348000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 83.604000 381.348000 94.452000 365.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.500000 381.348000 105.940000 365.348000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 106.004000 381.348000 116.852000 365.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 116.900000 381.348000 124.548000 365.348000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.500000 381.348000 135.284000 365.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 135.300000 381.348000 146.740000 365.348000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 146.804000 381.348000 152.276000 365.348000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 152.308000 381.348000 163.156000 365.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 163.204000 381.348000 168.772000 365.348000 1.000000 0.000000 0.000000 1.000000
+drawChar 168.804000 381.348000 181.924000 365.348000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 181.908000 381.348000 192.692000 365.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.708000 381.348000 200.596000 365.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 200.612000 381.348000 212.052000 365.348000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 212.116000 381.348000 222.964000 365.348000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 223.012000 381.348000 234.388000 365.348000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 356.836000 193.492000 344.836000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 356.836000 201.232000 344.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 356.836000 208.300000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 208.312000 356.836000 212.116000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 212.116000 356.836000 218.884000 344.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 218.920000 356.836000 226.012000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 226.024000 356.836000 233.704000 344.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 233.728000 356.836000 240.820000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 240.832000 356.836000 245.644000 344.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 245.632000 356.836000 252.784000 344.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 252.736000 356.836000 260.416000 344.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 260.536000 356.836000 264.364000 344.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 264.340000 356.836000 271.432000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 271.444000 356.836000 275.248000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 275.344000 356.836000 283.024000 344.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 283.048000 356.836000 290.200000 344.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 290.152000 356.836000 295.888000 344.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 295.948000 356.836000 303.628000 344.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 303.652000 356.836000 310.744000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 310.756000 356.836000 318.484000 344.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 318.460000 356.836000 322.264000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.360000 356.836000 326.188000 344.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 326.164000 356.836000 332.320000 344.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 332.368000 356.836000 336.172000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 336.172000 356.836000 343.900000 344.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 343.876000 356.836000 351.100000 344.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 351.172000 356.836000 355.984000 344.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 355.972000 356.836000 359.776000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.872000 356.836000 367.024000 344.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.976000 356.836000 371.788000 344.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 371.776000 356.836000 375.580000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 375.676000 356.836000 383.356000 344.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 383.380000 356.836000 389.116000 344.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 389.080000 356.836000 396.304000 344.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 396.280000 356.836000 404.008000 344.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 404.080000 356.836000 411.808000 344.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 411.784000 356.836000 419.464000 344.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 419.488000 356.836000 423.292000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.388000 356.836000 427.216000 344.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 427.084000 356.836000 434.176000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 434.188000 356.836000 440.956000 344.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 440.992000 356.836000 448.084000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 448.096000 356.836000 451.924000 344.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 451.996000 356.836000 455.800000 344.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 455.800000 356.836000 459.604000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.700000 356.836000 463.528000 344.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 463.504000 356.836000 471.232000 344.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 471.208000 356.836000 477.364000 344.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 477.412000 356.836000 482.224000 344.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 482.212000 356.836000 489.304000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 489.316000 356.836000 496.468000 344.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 496.516000 356.836000 504.196000 344.836000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 356.836000 507.904000 344.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 342.936000 190.240000 330.936000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 190.504000 342.936000 194.308000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 194.704000 342.936000 202.432000 330.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 202.408000 342.936000 209.560000 330.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 209.512000 342.936000 216.280000 330.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 216.316000 342.936000 223.408000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 223.720000 342.936000 227.524000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 227.824000 342.936000 233.560000 330.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 233.524000 342.936000 240.676000 330.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 240.724000 342.936000 244.552000 330.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 244.528000 342.936000 250.684000 330.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 250.732000 342.936000 257.824000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 257.836000 342.936000 265.516000 330.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 265.840000 342.936000 269.644000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 269.944000 342.936000 274.756000 330.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 274.744000 342.936000 282.472000 330.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 282.544000 342.936000 289.636000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 289.948000 342.936000 293.752000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 294.052000 342.936000 301.732000 330.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 301.756000 342.936000 308.908000 330.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 308.860000 342.936000 314.596000 330.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 314.656000 342.936000 322.336000 330.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 322.360000 342.936000 329.452000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 329.464000 342.936000 337.192000 330.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 337.468000 342.936000 341.272000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 341.572000 342.936000 349.252000 330.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 349.276000 342.936000 356.368000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 356.380000 342.936000 364.060000 330.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 364.084000 342.936000 370.240000 330.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 370.480000 342.936000 374.284000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.584000 342.936000 379.396000 330.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 379.384000 342.936000 386.608000 330.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 386.980000 342.936000 390.784000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.084000 342.936000 402.460000 330.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 402.484000 342.936000 409.636000 330.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 409.588000 342.936000 416.848000 330.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 416.884000 342.936000 423.976000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 424.288000 342.936000 428.092000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 428.392000 342.936000 433.204000 330.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 433.192000 342.936000 440.920000 330.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 440.992000 342.936000 448.084000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 448.396000 342.936000 452.200000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 452.500000 342.936000 462.760000 330.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 462.796000 342.936000 469.888000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 469.900000 342.936000 476.992000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 477.004000 342.936000 484.684000 330.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 484.708000 342.936000 488.536000 330.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 488.512000 342.936000 496.240000 330.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 496.216000 342.936000 503.896000 330.936000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 342.936000 507.904000 330.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 329.036000 192.652000 317.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 329.036000 200.428000 317.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 200.404000 329.036000 208.084000 317.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 209.608000 329.036000 213.412000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 214.912000 329.036000 222.640000 317.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 222.616000 329.036000 229.768000 317.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 229.816000 329.036000 235.552000 317.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 235.516000 329.036000 242.284000 317.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 242.320000 329.036000 249.412000 317.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 249.424000 329.036000 255.580000 317.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 255.628000 329.036000 260.440000 317.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 260.428000 329.036000 264.256000 317.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 264.232000 329.036000 271.960000 317.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 271.936000 329.036000 279.616000 317.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 281.140000 329.036000 284.944000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.540000 329.036000 293.632000 317.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 293.644000 329.036000 300.796000 317.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 300.844000 329.036000 307.000000 317.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 306.940000 329.036000 310.768000 317.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 310.840000 329.036000 317.932000 317.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 317.944000 329.036000 323.680000 317.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 322.348000 329.036000 326.152000 317.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 327.652000 329.036000 331.456000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 332.956000 329.036000 337.696000 317.036000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 337.660000 329.036000 345.388000 317.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 346.960000 329.036000 350.764000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 352.360000 329.036000 363.736000 317.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 363.760000 329.036000 370.528000 317.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 372.064000 329.036000 375.868000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.368000 329.036000 385.048000 317.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 385.072000 329.036000 392.224000 317.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 392.176000 329.036000 397.912000 317.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 397.972000 329.036000 405.652000 317.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 405.676000 329.036000 412.768000 317.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 412.780000 329.036000 420.508000 317.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 420.484000 329.036000 424.288000 317.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 425.788000 329.036000 429.592000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 431.188000 329.036000 435.928000 317.036000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 437.392000 329.036000 441.196000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 442.696000 329.036000 450.424000 317.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 450.400000 329.036000 457.552000 317.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 457.600000 329.036000 464.368000 317.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 464.404000 329.036000 471.496000 317.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 473.008000 329.036000 476.812000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.408000 329.036000 485.632000 317.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 485.608000 329.036000 493.336000 317.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 493.408000 329.036000 497.236000 317.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 497.212000 329.036000 503.980000 317.036000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 329.036000 507.904000 317.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 315.136000 193.180000 303.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 193.204000 315.136000 197.032000 303.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 197.008000 315.136000 204.160000 303.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 204.208000 315.136000 211.936000 303.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 211.912000 315.136000 216.724000 303.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 216.712000 315.136000 223.804000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 223.816000 315.136000 231.496000 303.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 233.812000 315.136000 237.616000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.908000 315.136000 246.676000 303.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 246.712000 315.136000 253.804000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 253.816000 315.136000 261.496000 303.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 261.520000 315.136000 268.612000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 268.624000 315.136000 273.436000 303.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 273.424000 315.136000 280.576000 303.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 280.528000 315.136000 288.208000 303.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 288.232000 315.136000 292.060000 303.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 292.132000 315.136000 299.224000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 299.236000 315.136000 305.392000 303.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 307.636000 315.136000 311.440000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 313.936000 315.136000 324.196000 303.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 324.232000 315.136000 331.960000 303.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 331.936000 315.136000 335.764000 303.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 335.740000 315.136000 342.460000 303.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 342.544000 315.136000 350.272000 303.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 352.444000 315.136000 356.248000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 358.648000 315.136000 365.800000 303.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 365.848000 315.136000 371.584000 303.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 371.452000 315.136000 378.544000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 380.956000 315.136000 384.760000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 387.160000 315.136000 394.888000 303.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 394.864000 315.136000 402.088000 303.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 402.160000 315.136000 406.972000 303.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 409.156000 315.136000 412.960000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 415.360000 315.136000 423.088000 303.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 423.064000 315.136000 429.220000 303.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 429.160000 315.136000 436.252000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 436.264000 315.136000 443.944000 303.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 446.260000 315.136000 450.064000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 452.464000 315.136000 456.292000 303.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 456.268000 315.136000 463.996000 303.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 466.372000 315.136000 470.176000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 472.468000 315.136000 476.296000 303.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 476.272000 315.136000 483.424000 303.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 483.472000 315.136000 489.208000 303.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 489.172000 315.136000 496.852000 303.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 496.876000 315.136000 503.968000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 315.136000 507.904000 303.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 301.236000 193.180000 289.236000 1.000000 0.000000 0.000000 1.000000 q
+drawChar 193.204000 301.236000 200.932000 289.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 200.908000 301.236000 208.060000 289.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 208.108000 301.236000 215.836000 289.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 215.812000 301.236000 220.624000 289.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 220.612000 301.236000 224.440000 289.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 224.512000 301.236000 229.324000 289.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 229.312000 301.236000 233.140000 289.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 233.116000 301.236000 240.208000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 240.220000 301.236000 246.376000 289.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 246.424000 301.236000 250.228000 289.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 251.224000 301.236000 255.028000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.024000 301.236000 260.836000 289.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 260.824000 301.236000 268.552000 289.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 268.624000 301.236000 275.716000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 275.728000 301.236000 281.464000 289.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 281.428000 301.236000 288.520000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 288.532000 301.236000 296.212000 289.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 296.236000 301.236000 303.004000 289.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 304.036000 301.236000 307.840000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.932000 301.236000 313.672000 289.236000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 313.636000 301.236000 316.924000 289.236000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 316.936000 301.236000 328.312000 289.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 329.332000 301.236000 333.136000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 334.132000 301.236000 341.284000 289.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 341.332000 301.236000 349.012000 289.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 348.928000 301.236000 352.756000 289.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 352.828000 301.236000 359.920000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.928000 301.236000 364.732000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.824000 301.236000 370.636000 289.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 370.624000 301.236000 377.848000 289.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 378.820000 301.236000 382.624000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.716000 301.236000 391.396000 289.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 391.312000 301.236000 397.048000 289.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 397.012000 301.236000 404.236000 289.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 404.308000 301.236000 411.988000 289.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 411.904000 301.236000 419.632000 289.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 419.704000 301.236000 426.424000 289.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 426.400000 301.236000 433.492000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 434.500000 301.236000 438.304000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.396000 301.236000 450.772000 289.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 450.796000 301.236000 458.020000 289.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 457.996000 301.236000 463.732000 289.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 463.696000 301.236000 470.788000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 471.892000 301.236000 475.696000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 476.692000 301.236000 481.504000 289.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 481.492000 301.236000 489.220000 289.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 489.292000 301.236000 496.444000 289.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 496.396000 301.236000 504.124000 289.236000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 301.236000 508.004000 289.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 287.336000 192.592000 275.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 192.604000 287.336000 200.332000 275.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 200.308000 287.336000 207.532000 275.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 207.508000 287.336000 215.236000 275.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 215.212000 287.336000 222.892000 275.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 222.916000 287.336000 230.644000 275.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 230.620000 287.336000 234.424000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 234.424000 287.336000 238.864000 275.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 238.828000 287.336000 246.052000 275.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 246.028000 287.336000 251.764000 275.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 251.728000 287.336000 255.532000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 255.532000 287.336000 266.908000 275.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 266.932000 287.336000 273.700000 275.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 273.736000 287.336000 277.540000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.540000 287.336000 285.268000 275.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 285.244000 287.336000 292.336000 275.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 292.348000 287.336000 299.440000 275.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 299.452000 287.336000 307.132000 275.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 307.156000 287.336000 313.312000 275.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 313.360000 287.336000 317.164000 275.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 317.164000 287.336000 320.968000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 320.968000 287.336000 329.284000 275.336000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 328.672000 287.336000 335.896000 275.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 335.872000 287.336000 341.608000 275.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 341.572000 287.336000 345.376000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 345.376000 287.336000 352.468000 275.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 352.480000 287.336000 359.236000 275.336000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 359.284000 287.336000 366.436000 275.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.484000 287.336000 377.860000 275.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 377.884000 287.336000 385.564000 275.336000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 385.588000 287.336000 389.416000 275.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 389.392000 287.336000 396.484000 275.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 396.496000 287.336000 400.528000 275.336000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 93 1 0 0 0 900.000000 1928 FAAAAA+OpenSymbol
+drawChar 186.100000 264.544000 194.119000 255.544000 1.000000 0.000000 0.000000 1.000000 ☑
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 200.300000 267.436000 209.324000 255.436000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 209.600000 267.436000 216.752000 255.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 216.800000 267.436000 224.480000 255.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 224.504000 267.436000 228.332000 255.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 228.308000 267.436000 234.464000 255.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 234.512000 267.436000 242.240000 255.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 242.216000 267.436000 249.308000 255.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 249.320000 267.436000 255.476000 255.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 93 1 0 0 0 900.000000 0 FAAAAA+OpenSymbol
+drawChar 186.100000 244.644000 194.119000 235.644000 1.000000 0.000000 0.000000 1.000000 ☑
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 200.300000 247.536000 208.628000 235.536000 1.000000 0.000000 0.000000 1.000000 Z
+drawChar 208.604000 247.536000 216.332000 235.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 216.308000 247.536000 223.028000 235.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 223.004000 247.536000 229.724000 235.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 229.700000 247.536000 237.428000 235.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.404000 247.536000 241.232000 235.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 241.208000 247.536000 248.936000 235.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 248.912000 247.536000 252.740000 235.536000 1.000000 0.000000 0.000000 1.000000 i
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 93 1 0 0 0 900.000000 0 FAAAAA+OpenSymbol
+drawChar 186.100000 224.744000 194.119000 215.744000 1.000000 0.000000 0.000000 1.000000 ☑
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 200.300000 227.636000 210.128000 215.636000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 210.104000 227.636000 217.832000 215.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 217.808000 227.636000 221.636000 215.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 221.612000 227.636000 228.836000 215.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 228.812000 227.636000 236.540000 215.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.516000 227.636000 242.672000 215.636000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 93 1 0 0 0 900.000000 0 FAAAAA+OpenSymbol
+drawChar 186.100000 204.844000 194.119000 195.844000 1.000000 0.000000 0.000000 1.000000 ☑
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 200.300000 207.736000 209.324000 195.736000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 209.300000 207.736000 217.028000 195.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 217.004000 207.736000 224.732000 195.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 224.708000 207.736000 232.388000 195.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 232.412000 207.736000 239.564000 195.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 239.612000 207.736000 245.348000 195.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 245.312000 207.736000 252.992000 195.736000 1.000000 0.000000 0.000000 1.000000 b
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 455.600000 86.136000 463.664000 74.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 463.100000 86.136000 470.252000 74.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 470.300000 86.136000 477.980000 74.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 478.004000 86.136000 485.096000 74.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 485.108000 86.136000 488.912000 74.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 488.900000 86.136000 496.532000 74.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 496.496000 86.136000 504.128000 74.136000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 9165.000000 0 477.900000 9165.000000 0 477.900000 9474.800000 0 134.300000 9474.800000 0 134.300000 9165.000000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -837310.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 6176.000000 0 168.100000 6176.000000 0 168.100000 6181.000000 0 76.900000 6181.000000 0 76.900000 6176.000000 0
+eoFillPath subpath 1 163.100000 6180.900000 0 168.100000 6180.900000 0 168.100000 6311.500000 0 163.100000 6311.500000 0 163.100000 6180.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 6181.000000 0 163.100000 6181.000000 0 163.100000 6316.400000 0 72.000000 6316.400000 0 72.000000 6181.000000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 6312.080000 87.320000 6302.080000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 6312.080000 93.420000 6302.080000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 6312.080000 97.510000 6302.080000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 6312.080000 101.420000 6302.080000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 6312.080000 104.170000 6302.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 6312.080000 110.530000 6302.080000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 6312.080000 113.270000 6302.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 6312.080000 116.470000 6302.080000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 6312.080000 123.480000 6302.080000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 6312.080000 129.610000 6302.080000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 6312.080000 135.090000 6302.080000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 6312.080000 140.890000 6302.080000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 6312.080000 144.820000 6302.080000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 6312.080000 150.920000 6302.080000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 6312.080000 153.670000 6302.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 6312.080000 156.470000 6302.080000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 6185.200000 0 168.200000 6185.200000 0 168.200000 6300.400000 0 72.000000 6300.400000 0 72.000000 6185.200000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6253.352000 79.253000 6244.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 6253.352000 86.669000 6244.352000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 6253.352000 90.215000 6244.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 6253.352000 93.077000 6244.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 6253.352000 97.406000 6244.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 6253.352000 100.853000 6244.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 6253.352000 107.324000 6244.352000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 6253.352000 112.337000 6244.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 6253.352000 115.271000 6244.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 6253.352000 118.655000 6244.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 6253.352000 126.512000 6244.352000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 6253.352000 130.805000 6244.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 6253.352000 135.881000 6244.352000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 6253.352000 139.355000 6244.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 6253.352000 147.284000 6244.352000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 6253.352000 150.074000 6244.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 6253.352000 155.897000 6244.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 6253.352000 158.750000 6244.352000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 6253.352000 161.853000 6244.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6242.852000 82.124000 6233.852000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 6242.852000 87.137000 6233.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 6242.852000 90.071000 6233.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 6242.852000 93.356000 6233.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 6242.852000 100.403000 6233.852000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 6242.852000 104.921000 6233.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 6242.852000 109.205000 6233.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 6242.852000 117.737000 6233.852000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 6242.852000 123.119000 6233.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 6242.852000 128.996000 6233.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 6242.852000 132.605000 6233.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 6242.852000 138.392000 6233.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 6242.852000 141.749000 6233.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 6242.852000 149.507000 6233.852000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 6242.852000 153.800000 6233.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 6242.852000 158.876000 6233.852000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 6242.852000 161.853000 6233.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6232.352000 81.764000 6223.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 6232.352000 87.596000 6223.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 6232.352000 93.356000 6223.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 6232.352000 102.050000 6223.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 6232.352000 113.822000 6223.352000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 6232.352000 122.651000 6223.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 6232.352000 134.117000 6223.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 6232.352000 138.401000 6223.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 6232.352000 147.149000 6223.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 6232.352000 158.921000 6223.352000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 6232.352000 161.853000 6223.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6221.852000 79.271000 6212.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 6221.852000 84.338000 6212.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 6221.852000 89.621000 6212.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 6221.852000 94.643000 6212.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 6221.852000 100.502000 6212.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 6221.852000 106.262000 6212.852000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 6221.852000 111.518000 6212.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 6221.852000 116.216000 6212.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 6221.852000 119.249000 6212.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 6221.852000 122.363000 6212.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 6221.852000 128.186000 6212.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 6221.852000 131.345000 6212.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 6221.852000 137.060000 6212.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 6221.852000 140.147000 6212.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 6221.852000 145.007000 6212.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 6221.852000 148.598000 6212.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 6221.852000 151.460000 6212.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 6221.852000 155.789000 6212.852000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 6221.852000 158.933000 6212.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6211.352000 80.702000 6202.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 6211.352000 83.573000 6202.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 6211.352000 89.396000 6202.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 6211.352000 95.156000 6202.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 6211.352000 100.547000 6202.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 6211.352000 109.052000 6202.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 6211.352000 111.959000 6202.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 6211.352000 117.251000 6202.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 6211.352000 121.904000 6202.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 6211.352000 126.503000 6202.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 6211.352000 129.338000 6202.352000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 6211.352000 134.936000 6202.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 6211.352000 143.441000 6202.352000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 6211.352000 148.796000 6202.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 6211.352000 154.574000 6202.352000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 6211.352000 158.876000 6202.352000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 6211.352000 161.853000 6202.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6200.852000 79.271000 6191.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 6200.852000 85.094000 6191.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 6200.852000 88.703000 6191.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 6200.852000 94.112000 6191.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 6200.852000 97.244000 6191.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 6200.852000 103.058000 6191.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 6200.852000 108.890000 6191.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 6200.852000 111.950000 6191.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 6200.852000 115.271000 6191.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 6200.852000 120.338000 6191.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 6200.852000 125.621000 6191.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 6200.852000 131.363000 6191.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 6200.852000 134.558000 6191.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 6200.852000 140.048000 6191.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 6200.852000 145.430000 6191.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 6200.852000 150.551000 6191.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 6200.852000 155.960000 6191.852000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 6200.852000 158.933000 6191.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6190.352000 80.009000 6181.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 6190.352000 85.364000 6181.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 6190.352000 88.271000 6181.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 6190.352000 91.169000 6181.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 6190.352000 97.955000 6181.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 6190.352000 107.765000 6181.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 6190.352000 110.672000 6181.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 6190.352000 115.964000 6181.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 6190.352000 120.617000 6181.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 6190.352000 125.216000 6181.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 6190.352000 128.051000 6181.352000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 6190.352000 134.954000 6181.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 6190.352000 146.285000 6181.352000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 6190.352000 151.667000 6181.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 6190.352000 155.906000 6181.352000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 6190.352000 159.033000 6181.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 6180.900000 0 72.100000 6180.900000 0 72.100000 6316.400000 0 72.000000 6316.400000 0 72.000000 6180.900000 0
+eoFillPath subpath 1 163.100000 6180.900000 0 163.200000 6180.900000 0 163.200000 6316.400000 0 163.100000 6316.400000 0 163.100000 6180.900000 0
+eoFillPath subpath 1 72.000000 6316.300000 0 163.200000 6316.300000 0 163.200000 6316.400000 0 72.000000 6316.400000 0 72.000000 6316.300000 0
+eoFillPath subpath 1 72.000000 6180.900000 0 163.200000 6180.900000 0 163.200000 6181.000000 0 72.000000 6181.000000 0 72.000000 6180.900000 0
+saveState
+eoClipPath subpath 1 96.900000 6256.200000 0 138.300000 6256.200000 0 138.300000 6300.400000 0 96.900000 6300.400000 0 96.900000 6256.200000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -546430.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 5901.400000 0 165.500000 5901.400000 0 165.500000 5906.400000 0 76.900000 5906.400000 0 76.900000 5901.400000 0
+eoFillPath subpath 1 160.500000 5906.300000 0 165.500000 5906.300000 0 165.500000 6062.600000 0 160.500000 6062.600000 0 160.500000 5906.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 5906.400000 0 121.400000 5906.400000 0 121.400000 6067.500000 0 72.000000 6067.500000 0 72.000000 5906.400000 0
+saveState
+eoClipPath subpath 1 72.000000 5906.300000 0 160.500000 5906.300000 0 160.500000 6067.400000 0 72.000000 6067.400000 0 72.000000 5906.300000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -509730.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 6063.180000 89.280000 6053.180000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 6063.180000 95.630000 6053.180000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 6063.180000 99.520000 6053.180000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 6063.180000 102.270000 6053.180000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 6063.180000 108.450000 6053.180000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 6063.180000 112.610000 6053.180000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 6063.180000 118.510000 6053.180000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 6063.180000 121.670000 6053.180000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 6063.180000 124.470000 6053.180000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 6063.180000 130.830000 6053.180000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 6063.180000 133.970000 6053.180000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 6063.180000 137.920000 6053.180000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 6063.180000 144.230000 6053.180000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 6063.180000 150.350000 6053.180000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 6063.180000 153.570000 6053.180000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 6051.480000 95.000000 6041.480000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 6051.480000 97.770000 6041.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 6051.480000 103.000000 6041.480000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 6051.480000 109.330000 6041.480000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 6051.480000 117.470000 6041.480000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 6051.480000 123.620000 6041.480000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 6051.480000 128.800000 6041.480000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 6051.480000 135.130000 6041.480000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 6051.480000 141.250000 6041.480000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 6051.480000 145.410000 6041.480000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6036.652000 82.961000 6027.652000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 6036.652000 87.614000 6027.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 6036.652000 93.356000 6027.652000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 6036.652000 98.612000 6027.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 6036.652000 103.733000 6027.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 6036.652000 106.568000 6027.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 6036.652000 111.959000 6027.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 6036.652000 114.866000 6027.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 6036.652000 117.665000 6027.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 6036.652000 122.768000 6027.652000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 6036.652000 125.747000 6027.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 6036.652000 131.651000 6027.652000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 6036.652000 136.907000 6027.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 6036.652000 142.307000 6027.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 6036.652000 148.049000 6027.652000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 6036.652000 150.956000 6027.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 6036.652000 156.302000 6027.652000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6036.652000 159.253000 6027.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6026.152000 84.095000 6017.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 6026.152000 89.900000 6017.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 6026.152000 95.318000 6017.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 6026.152000 100.349000 6017.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 6026.152000 110.789000 6017.152000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 6026.152000 111.464000 6017.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 6026.152000 114.362000 6017.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 6026.152000 119.348000 6017.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 6026.152000 126.962000 6017.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 6026.152000 132.047000 6017.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 6026.152000 139.958000 6017.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 6026.152000 142.865000 6017.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 6026.152000 147.410000 6017.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 6026.152000 153.287000 6017.152000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 6026.152000 156.333000 6017.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6015.652000 84.095000 6006.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 6015.652000 89.468000 6006.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 6015.652000 94.121000 6006.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 6015.652000 99.899000 6006.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 6015.652000 105.218000 6006.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 6015.652000 109.502000 6006.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 6015.652000 115.649000 6006.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 6015.652000 122.327000 6006.652000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 6015.652000 127.718000 6006.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 6015.652000 132.002000 6006.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 6015.652000 138.149000 6006.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 6015.652000 145.205000 6006.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 6015.652000 150.992000 6006.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 6015.652000 156.311000 6006.652000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6015.652000 159.253000 6006.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6005.152000 82.394000 5996.152000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 6005.152000 86.705000 5996.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 6005.152000 91.322000 5996.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 6005.152000 94.913000 5996.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 6005.152000 98.054000 5996.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 6005.152000 102.014000 5996.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 6005.152000 104.876000 5996.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 6005.152000 113.435000 5996.152000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 6005.152000 118.718000 5996.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 6005.152000 121.949000 5996.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 6005.152000 125.063000 5996.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 6005.152000 130.886000 5996.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 6005.152000 134.045000 5996.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 6005.152000 138.005000 5996.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 6005.152000 143.792000 5996.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 6005.152000 149.111000 5996.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 6005.152000 151.964000 5996.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 6005.152000 156.293000 5996.152000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 6005.152000 159.153000 5996.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5994.652000 79.271000 5985.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 5994.652000 82.169000 5985.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 5994.652000 85.526000 5985.652000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 5994.652000 90.818000 5985.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 5994.652000 94.454000 5985.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 5994.652000 99.008000 5985.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 5994.652000 104.318000 5985.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 5994.652000 110.096000 5985.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 5994.652000 115.856000 5985.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 5994.652000 119.546000 5985.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 5994.652000 124.001000 5985.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 5994.652000 129.509000 5985.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 5994.652000 133.145000 5985.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 5994.652000 139.751000 5985.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 5994.652000 145.205000 5985.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 5994.652000 148.841000 5985.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 5994.652000 152.657000 5985.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 5994.652000 156.293000 5985.652000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5994.652000 159.253000 5985.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5984.152000 84.095000 5975.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 5984.152000 88.406000 5975.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 5984.152000 93.824000 5975.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 5984.152000 99.602000 5975.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 5984.152000 105.362000 5975.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 5984.152000 108.422000 5975.152000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 5984.152000 116.747000 5975.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 5984.152000 129.275000 5975.152000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 5984.152000 135.089000 5975.152000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 5984.152000 138.698000 5975.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 5984.152000 141.560000 5975.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 5984.152000 146.906000 5975.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 5984.152000 151.190000 5975.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 5984.152000 156.266000 5975.152000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5984.152000 159.253000 5975.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5973.652000 82.196000 5964.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 5973.652000 87.560000 5964.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 5973.652000 92.213000 5964.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 5973.652000 96.551000 5964.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 5973.652000 101.708000 5964.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 5973.652000 107.216000 5964.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 5973.652000 111.653000 5964.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 5973.652000 118.961000 5964.652000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 5973.652000 124.316000 5964.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 5973.652000 128.654000 5964.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 5973.652000 133.172000 5964.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 5973.652000 138.995000 5964.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 5973.652000 143.612000 5964.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 5973.652000 148.913000 5964.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 5973.652000 153.197000 5964.652000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 5973.652000 156.333000 5964.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5963.152000 80.009000 5954.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 5963.152000 85.319000 5954.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 5963.152000 91.061000 5954.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 5963.152000 100.052000 5954.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 5963.152000 113.993000 5954.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 5963.152000 116.873000 5954.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 5963.152000 120.410000 5954.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 5963.152000 126.296000 5954.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 5963.152000 135.350000 5954.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 5963.152000 145.106000 5954.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 5963.152000 150.893000 5954.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 5963.152000 156.212000 5954.152000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5963.152000 159.253000 5954.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5952.652000 82.196000 5943.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 5952.652000 87.560000 5943.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 5952.652000 93.392000 5943.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 5952.652000 99.152000 5943.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 5952.652000 101.960000 5943.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 5952.652000 107.306000 5943.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 5952.652000 111.905000 5943.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 5952.652000 115.640000 5943.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 5952.652000 122.444000 5943.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 5952.652000 127.898000 5943.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 5952.652000 135.575000 5943.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 5952.652000 141.380000 5943.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 5952.652000 145.241000 5943.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 5952.652000 150.803000 5943.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 5952.652000 156.302000 5943.652000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5952.652000 159.253000 5943.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5942.152000 80.009000 5933.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 5942.152000 85.796000 5933.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 5942.152000 91.115000 5933.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 5942.152000 95.399000 5933.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 5942.152000 100.718000 5933.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 5942.152000 107.054000 5933.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 5942.152000 118.097000 5933.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 5942.152000 123.524000 5933.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 5942.152000 129.401000 5933.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 5942.152000 131.768000 5933.152000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 5942.152000 135.413000 5933.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 5942.152000 141.659000 5933.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 5942.152000 150.965000 5933.152000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 5942.152000 156.320000 5933.152000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5942.152000 159.253000 5933.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5931.652000 81.017000 5922.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 5931.652000 84.608000 5922.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 5931.652000 89.963000 5922.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 5931.652000 92.870000 5922.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 5931.652000 98.693000 5922.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 5931.652000 103.310000 5922.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 5931.652000 107.243000 5922.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 5931.652000 116.081000 5922.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 5931.652000 121.886000 5922.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 5931.652000 127.205000 5922.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 5931.652000 132.983000 5922.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 5931.652000 136.943000 5922.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 5931.652000 143.846000 5922.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 5931.652000 148.184000 5922.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 5931.652000 153.260000 5922.652000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 5931.652000 156.433000 5922.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5921.152000 79.271000 5912.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 5921.152000 85.094000 5912.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 5921.152000 90.854000 5912.152000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 5921.152000 93.653000 5912.152000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 5906.300000 0 72.100000 5906.300000 0 72.100000 6067.500000 0 72.000000 6067.500000 0 72.000000 5906.300000 0
+eoFillPath subpath 1 160.500000 5906.300000 0 160.600000 5906.300000 0 160.600000 6067.500000 0 160.500000 6067.500000 0 160.500000 5906.300000 0
+eoFillPath subpath 1 72.000000 6067.400000 0 160.600000 6067.400000 0 160.600000 6067.500000 0 72.000000 6067.500000 0 72.000000 6067.400000 0
+eoFillPath subpath 1 72.000000 5906.300000 0 160.600000 5906.300000 0 160.600000 5906.400000 0 72.000000 5906.400000 0 72.000000 5906.300000 0
+saveState
+eoClipPath subpath 1 108.000000 5418.900000 0 178.900000 5418.900000 0 178.900000 5475.600000 0 108.000000 5475.600000 0 108.000000 5418.900000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -462700.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 1360.600000 0 165.500000 1360.600000 0 165.500000 1365.600000 0 76.900000 1365.600000 0 76.900000 1360.600000 0
+eoFillPath subpath 1 160.500000 1365.500000 0 165.500000 1365.500000 0 165.500000 1474.300000 0 160.500000 1474.300000 0 160.500000 1365.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 1365.600000 0 160.500000 1365.600000 0 160.500000 1479.200000 0 72.000000 1479.200000 0 72.000000 1365.600000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1474.852000 83.771000 1465.852000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 1474.852000 89.594000 1465.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 1474.852000 92.465000 1465.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 1474.852000 97.568000 1465.852000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 1474.852000 100.943000 1465.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 1474.852000 106.955000 1465.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 1474.852000 110.447000 1465.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 1474.852000 114.425000 1465.852000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 1474.852000 119.717000 1465.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 1474.852000 127.493000 1465.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 1474.852000 130.949000 1465.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 1474.852000 136.574000 1465.852000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 1474.852000 141.920000 1465.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 1474.852000 147.365000 1465.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 1474.852000 151.703000 1465.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 1474.852000 156.320000 1465.852000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 1474.852000 159.153000 1465.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1464.352000 81.764000 1455.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 1464.352000 85.130000 1455.352000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 1464.352000 88.712000 1455.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 1464.352000 94.022000 1455.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 1464.352000 98.306000 1455.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 1464.352000 102.455000 1455.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 1464.352000 106.676000 1455.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 1464.352000 110.312000 1455.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 1464.352000 114.920000 1455.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 1464.352000 119.060000 1455.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 1464.352000 125.450000 1455.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 1464.352000 130.832000 1455.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 1464.352000 139.445000 1455.352000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 1464.352000 145.169000 1455.352000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 1464.352000 148.076000 1455.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 1464.352000 153.323000 1455.352000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 1464.352000 156.433000 1455.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1453.852000 80.009000 1444.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 1453.852000 82.871000 1444.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 1453.852000 88.316000 1444.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 1453.852000 94.094000 1444.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 1453.852000 96.947000 1444.852000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 1453.852000 104.948000 1444.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 1453.852000 113.705000 1444.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 1453.852000 119.492000 1444.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 1453.852000 124.811000 1444.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 1453.852000 132.848000 1444.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 1453.852000 141.605000 1444.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 1453.852000 144.467000 1444.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 1453.852000 148.103000 1444.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 1453.852000 150.965000 1444.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 1453.852000 156.311000 1444.852000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1453.852000 159.253000 1444.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1443.352000 80.999000 1434.352000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 1443.352000 90.539000 1434.352000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 1443.352000 95.318000 1434.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 1443.352000 99.602000 1434.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 1443.352000 102.473000 1434.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 1443.352000 108.260000 1434.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 1443.352000 110.762000 1434.352000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 1443.352000 115.316000 1434.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 1443.352000 122.156000 1434.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 1443.352000 132.299000 1434.352000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 1443.352000 136.970000 1434.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 1443.352000 139.877000 1434.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 1443.352000 142.775000 1434.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 1443.352000 148.022000 1434.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 1443.352000 152.720000 1434.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 1443.352000 156.311000 1434.352000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1443.352000 159.253000 1434.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1432.852000 83.006000 1423.852000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 1432.852000 88.793000 1423.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 1432.852000 91.664000 1423.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 1432.852000 94.562000 1423.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 1432.852000 100.349000 1423.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 1432.852000 103.157000 1423.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 1432.852000 108.980000 1423.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 1432.852000 114.740000 1423.852000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 1432.852000 119.375000 1423.852000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 1432.852000 128.033000 1423.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 1432.852000 141.479000 1423.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 1432.852000 146.807000 1423.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 1432.852000 152.684000 1423.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 1432.852000 156.293000 1423.852000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1432.852000 159.253000 1423.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1422.352000 79.730000 1413.352000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 1422.352000 84.005000 1413.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 1422.352000 89.423000 1413.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 1422.352000 98.036000 1413.352000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 1422.352000 121.157000 1413.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 1422.352000 145.115000 1413.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 1422.352000 151.001000 1413.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 1422.352000 156.320000 1413.352000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 1422.352000 159.253000 1413.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1411.852000 83.285000 1402.852000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 1411.852000 89.099000 1402.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 1411.852000 93.401000 1402.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 1411.852000 98.477000 1402.852000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 1411.852000 103.121000 1402.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 1411.852000 105.974000 1402.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 1411.852000 111.320000 1402.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 1411.852000 115.604000 1402.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 1411.852000 123.857000 1402.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 1411.852000 136.007000 1402.852000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 1411.852000 141.794000 1402.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 1411.852000 144.665000 1402.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 1411.852000 147.464000 1402.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 1411.852000 153.251000 1402.852000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 1411.852000 156.433000 1402.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1401.352000 79.271000 1392.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 1401.352000 85.094000 1392.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 1401.352000 90.854000 1392.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 1401.352000 96.146000 1392.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 1401.352000 102.302000 1392.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 1401.352000 107.711000 1392.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 1401.352000 113.048000 1392.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 1401.352000 119.204000 1392.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 1401.352000 124.991000 1392.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 1401.352000 130.310000 1392.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 1401.352000 135.647000 1392.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 1401.352000 144.755000 1392.352000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 1401.352000 153.323000 1392.352000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 1401.352000 156.333000 1392.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1390.852000 82.160000 1381.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 1390.852000 85.067000 1381.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 1390.852000 89.297000 1381.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 1390.852000 94.616000 1381.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 1390.852000 98.747000 1381.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 1390.852000 106.055000 1381.852000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 1390.852000 109.700000 1381.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 1390.852000 115.055000 1381.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 1390.852000 118.601000 1381.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 1390.852000 124.010000 1381.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 1390.852000 128.042000 1381.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 1390.852000 135.998000 1381.852000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 1390.852000 141.785000 1381.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 1390.852000 144.656000 1381.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 1390.852000 147.554000 1381.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 1390.852000 153.341000 1381.852000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 1390.852000 156.433000 1381.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 1380.352000 79.271000 1371.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 1380.352000 85.094000 1371.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 1380.352000 90.854000 1371.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 1380.352000 93.743000 1371.352000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 1365.500000 0 72.100000 1365.500000 0 72.100000 1479.200000 0 72.000000 1479.200000 0 72.000000 1365.500000 0
+eoFillPath subpath 1 160.500000 1365.500000 0 160.600000 1365.500000 0 160.600000 1479.200000 0 160.500000 1479.200000 0 160.500000 1365.500000 0
+eoFillPath subpath 1 72.000000 1479.100000 0 160.600000 1479.100000 0 160.600000 1479.200000 0 72.000000 1479.200000 0 72.000000 1479.100000 0
+eoFillPath subpath 1 72.000000 1365.500000 0 160.600000 1365.500000 0 160.600000 1365.600000 0 72.000000 1365.600000 0 72.000000 1365.500000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 7555.000000 0 169.600000 7555.000000 0 169.600000 7560.000000 0 76.900000 7560.000000 0 76.900000 7555.000000 0
+eoFillPath subpath 1 164.600000 7559.900000 0 169.600000 7559.900000 0 169.600000 7675.500000 0 164.600000 7675.500000 0 164.600000 7559.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 7560.000000 0 121.400000 7560.000000 0 121.400000 7680.400000 0 72.000000 7680.400000 0 72.000000 7560.000000 0
+saveState
+eoClipPath subpath 1 72.000000 7559.900000 0 164.600000 7559.900000 0 164.600000 7680.300000 0 72.000000 7680.300000 0 72.000000 7559.900000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -670970.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 7629.900000 0 93.700000 7629.900000 0 93.700000 7649.100000 0 72.000000 7649.100000 0 72.000000 7629.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 7629.900000 0 169.600000 7629.900000 0 169.600000 7649.100000 0 93.700000 7649.100000 0 93.700000 7629.900000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 7613.200000 0 93.700000 7613.200000 0 93.700000 7629.900000 0 72.000000 7629.900000 0 72.000000 7613.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 7613.200000 0 169.600000 7613.200000 0 169.600000 7629.900000 0 93.700000 7629.900000 0 93.700000 7613.200000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 7594.000000 0 93.700000 7594.000000 0 93.700000 7613.200000 0 72.000000 7613.200000 0 72.000000 7594.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 7594.000000 0 169.600000 7594.000000 0 169.600000 7613.200000 0 93.700000 7613.200000 0 93.700000 7594.000000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 7574.800000 0 93.700000 7574.800000 0 93.700000 7594.000000 0 72.000000 7594.000000 0 72.000000 7574.800000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 7574.800000 0 169.600000 7574.800000 0 169.600000 7594.000000 0 93.700000 7594.000000 0 93.700000 7574.800000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7676.052000 82.898000 7667.052000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 7676.052000 87.200000 7667.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 7676.052000 90.809000 7667.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 7676.052000 93.671000 7667.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 7676.052000 98.315000 7667.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 7676.052000 101.906000 7667.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 7676.052000 106.514000 7667.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 7676.052000 109.754000 7667.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 7676.052000 112.868000 7667.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 7676.052000 118.691000 7667.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 7676.052000 121.850000 7667.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 7676.052000 125.702000 7667.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 7676.052000 131.588000 7667.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 7676.052000 136.907000 7667.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 7676.052000 140.039000 7667.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 7676.052000 146.078000 7667.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 7676.052000 151.442000 7667.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 7676.052000 154.349000 7667.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 7676.052000 157.148000 7667.052000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 7676.052000 160.433000 7667.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7665.552000 84.095000 7656.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 7665.552000 89.468000 7656.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 7665.552000 94.580000 7656.552000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 7665.552000 97.631000 7656.552000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 7645.152000 104.443000 7636.152000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 7645.152000 109.060000 7636.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 7645.152000 113.398000 7636.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 7645.152000 119.194000 7636.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 7645.152000 124.612000 7636.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 7645.152000 127.465000 7636.152000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 7628.452000 101.176000 7619.452000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 7628.452000 104.074000 7619.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 7628.452000 109.420000 7619.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 7628.452000 114.442000 7619.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 7628.452000 120.202000 7619.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 7628.452000 123.811000 7619.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 7628.452000 129.121000 7619.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 7628.452000 134.899000 7619.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 7628.452000 139.516000 7619.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 7628.452000 143.107000 7619.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 7628.452000 148.417000 7619.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 7628.452000 151.270000 7619.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 7628.452000 157.093000 7619.452000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 7611.752000 103.048000 7602.752000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 7611.752000 108.421000 7602.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 7611.752000 113.443000 7602.752000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 7611.752000 118.852000 7602.752000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 7611.752000 124.702000 7602.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 7611.752000 130.021000 7602.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 7611.752000 135.079000 7602.752000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 7592.552000 104.407000 7583.552000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 7592.552000 109.816000 7583.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 7592.552000 115.594000 7583.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 7592.552000 121.354000 7583.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 7592.552000 125.692000 7583.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 7592.552000 128.563000 7583.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 7592.552000 133.954000 7583.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 7592.552000 139.786000 7583.552000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 7559.900000 0 72.100000 7559.900000 0 72.100000 7680.400000 0 72.000000 7680.400000 0 72.000000 7559.900000 0
+eoFillPath subpath 1 164.600000 7559.900000 0 164.700000 7559.900000 0 164.700000 7680.400000 0 164.600000 7680.400000 0 164.600000 7559.900000 0
+eoFillPath subpath 1 72.000000 7680.300000 0 164.700000 7680.300000 0 164.700000 7680.400000 0 72.000000 7680.400000 0 72.000000 7680.300000 0
+eoFillPath subpath 1 72.000000 7559.900000 0 164.700000 7559.900000 0 164.700000 7560.000000 0 72.000000 7560.000000 0 72.000000 7559.900000 0
+eoFillPath subpath 1 91.300000 7574.800000 0 93.700000 7574.800000 0 93.700000 7649.100000 0 91.300000 7649.100000 0 91.300000 7574.800000 0
+eoFillPath subpath 1 72.000000 7594.000000 0 169.600000 7594.000000 0 169.600000 7596.400000 0 72.000000 7596.400000 0 72.000000 7594.000000 0
+eoFillPath subpath 1 72.000000 7646.700000 0 169.600000 7646.700000 0 169.600000 7649.100000 0 72.000000 7649.100000 0 72.000000 7646.700000 0
+eoFillPath subpath 1 72.000000 7574.800000 0 169.600000 7574.800000 0 169.600000 7577.200000 0 72.000000 7577.200000 0 72.000000 7574.800000 0
+saveState
+eoClipPath subpath 1 108.000000 -291.200000 0 150.800000 -291.200000 0 150.800000 -247.000000 0 108.000000 -247.000000 0 108.000000 -291.200000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 108320.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -1141.200000 0 499.600000 -1141.200000 0 499.600000 -1136.100000 0 186.800000 -1136.100000 0 186.800000 -1141.200000 0
+eoFillPath subpath 1 494.500000 -1136.200000 0 499.600000 -1136.200000 0 499.600000 -947.800000 0 494.500000 -947.800000 0 494.500000 -1136.200000 0
+saveState
+eoClipPath subpath 1 181.800000 -1136.100000 0 494.500000 -1136.100000 0 494.500000 -942.800000 0 181.800000 -942.800000 0 181.800000 -1136.100000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -942.700000 0 494.500000 -942.700000 0 494.500000 -942.700000 0 181.700000 -942.700000 0
+eoFillPath subpath 1 181.700000 -942.700000 0 494.500000 -942.700000 0 494.500000 -943.500000 0 181.700000 -943.500000 0 181.700000 -942.700000 0
+eoFillPath subpath 1 181.700000 -943.500000 0 494.500000 -943.500000 0 494.500000 -944.200000 0 181.700000 -944.200000 0 181.700000 -943.500000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -944.200000 0 494.500000 -944.200000 0 494.500000 -945.000000 0 181.700000 -945.000000 0 181.700000 -944.200000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -945.000000 0 494.500000 -945.000000 0 494.500000 -945.800000 0 181.700000 -945.800000 0 181.700000 -945.000000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -945.800000 0 494.500000 -945.800000 0 494.500000 -946.500000 0 181.700000 -946.500000 0 181.700000 -945.800000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -946.500000 0 494.500000 -946.500000 0 494.500000 -947.300000 0 181.700000 -947.300000 0 181.700000 -946.500000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -947.300000 0 494.500000 -947.300000 0 494.500000 -948.000000 0 181.700000 -948.000000 0 181.700000 -947.300000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -948.000000 0 494.500000 -948.000000 0 494.500000 -948.800000 0 181.700000 -948.800000 0 181.700000 -948.000000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -948.800000 0 494.500000 -948.800000 0 494.500000 -949.500000 0 181.700000 -949.500000 0 181.700000 -948.800000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -949.500000 0 494.500000 -949.500000 0 494.500000 -950.300000 0 181.700000 -950.300000 0 181.700000 -949.500000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -950.300000 0 494.500000 -950.300000 0 494.500000 -951.100000 0 181.700000 -951.100000 0 181.700000 -950.300000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -951.100000 0 494.500000 -951.100000 0 494.500000 -951.800000 0 181.700000 -951.800000 0 181.700000 -951.100000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -951.800000 0 494.500000 -951.800000 0 494.500000 -952.600000 0 181.700000 -952.600000 0 181.700000 -951.800000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -952.600000 0 494.500000 -952.600000 0 494.500000 -953.300000 0 181.700000 -953.300000 0 181.700000 -952.600000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -953.300000 0 494.500000 -953.300000 0 494.500000 -954.100000 0 181.700000 -954.100000 0 181.700000 -953.300000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -954.100000 0 494.500000 -954.100000 0 494.500000 -954.900000 0 181.700000 -954.900000 0 181.700000 -954.100000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -954.900000 0 494.500000 -954.900000 0 494.500000 -955.600000 0 181.700000 -955.600000 0 181.700000 -954.900000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -955.600000 0 494.500000 -955.600000 0 494.500000 -956.400000 0 181.700000 -956.400000 0 181.700000 -955.600000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -956.400000 0 494.500000 -956.400000 0 494.500000 -957.100000 0 181.700000 -957.100000 0 181.700000 -956.400000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -957.100000 0 494.500000 -957.100000 0 494.500000 -957.900000 0 181.700000 -957.900000 0 181.700000 -957.100000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -957.900000 0 494.500000 -957.900000 0 494.500000 -958.700000 0 181.700000 -958.700000 0 181.700000 -957.900000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -958.700000 0 494.500000 -958.700000 0 494.500000 -959.400000 0 181.700000 -959.400000 0 181.700000 -958.700000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -959.400000 0 494.500000 -959.400000 0 494.500000 -960.200000 0 181.700000 -960.200000 0 181.700000 -959.400000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -960.200000 0 494.500000 -960.200000 0 494.500000 -960.900000 0 181.700000 -960.900000 0 181.700000 -960.200000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -960.900000 0 494.500000 -960.900000 0 494.500000 -961.700000 0 181.700000 -961.700000 0 181.700000 -960.900000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -961.700000 0 494.500000 -961.700000 0 494.500000 -962.400000 0 181.700000 -962.400000 0 181.700000 -961.700000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -962.400000 0 494.500000 -962.400000 0 494.500000 -963.200000 0 181.700000 -963.200000 0 181.700000 -962.400000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -963.200000 0 494.500000 -963.200000 0 494.500000 -964.000000 0 181.700000 -964.000000 0 181.700000 -963.200000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -964.000000 0 494.500000 -964.000000 0 494.500000 -964.700000 0 181.700000 -964.700000 0 181.700000 -964.000000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -964.700000 0 494.500000 -964.700000 0 494.500000 -965.500000 0 181.700000 -965.500000 0 181.700000 -964.700000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -965.500000 0 494.500000 -965.500000 0 494.500000 -966.200000 0 181.700000 -966.200000 0 181.700000 -965.500000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -966.200000 0 494.500000 -966.200000 0 494.500000 -967.000000 0 181.700000 -967.000000 0 181.700000 -966.200000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -967.000000 0 494.500000 -967.000000 0 494.500000 -967.800000 0 181.700000 -967.800000 0 181.700000 -967.000000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -967.800000 0 494.500000 -967.800000 0 494.500000 -968.500000 0 181.700000 -968.500000 0 181.700000 -967.800000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -968.500000 0 494.500000 -968.500000 0 494.500000 -969.300000 0 181.700000 -969.300000 0 181.700000 -968.500000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -969.300000 0 494.500000 -969.300000 0 494.500000 -970.000000 0 181.700000 -970.000000 0 181.700000 -969.300000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -970.000000 0 494.500000 -970.000000 0 494.500000 -970.800000 0 181.700000 -970.800000 0 181.700000 -970.000000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -970.800000 0 494.500000 -970.800000 0 494.500000 -971.600000 0 181.700000 -971.600000 0 181.700000 -970.800000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -971.600000 0 494.500000 -971.600000 0 494.500000 -972.300000 0 181.700000 -972.300000 0 181.700000 -971.600000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -972.300000 0 494.500000 -972.300000 0 494.500000 -973.100000 0 181.700000 -973.100000 0 181.700000 -972.300000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -973.100000 0 494.500000 -973.100000 0 494.500000 -973.800000 0 181.700000 -973.800000 0 181.700000 -973.100000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -973.800000 0 494.500000 -973.800000 0 494.500000 -974.600000 0 181.700000 -974.600000 0 181.700000 -973.800000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -974.600000 0 494.500000 -974.600000 0 494.500000 -975.300000 0 181.700000 -975.300000 0 181.700000 -974.600000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -975.300000 0 494.500000 -975.300000 0 494.500000 -976.100000 0 181.700000 -976.100000 0 181.700000 -975.300000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -976.100000 0 494.500000 -976.100000 0 494.500000 -976.900000 0 181.700000 -976.900000 0 181.700000 -976.100000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -976.900000 0 494.500000 -976.900000 0 494.500000 -977.600000 0 181.700000 -977.600000 0 181.700000 -976.900000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -977.600000 0 494.500000 -977.600000 0 494.500000 -978.400000 0 181.700000 -978.400000 0 181.700000 -977.600000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -978.400000 0 494.500000 -978.400000 0 494.500000 -979.100000 0 181.700000 -979.100000 0 181.700000 -978.400000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -979.100000 0 494.500000 -979.100000 0 494.500000 -979.900000 0 181.700000 -979.900000 0 181.700000 -979.100000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -979.900000 0 494.500000 -979.900000 0 494.500000 -980.700000 0 181.700000 -980.700000 0 181.700000 -979.900000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -980.700000 0 494.500000 -980.700000 0 494.500000 -981.400000 0 181.700000 -981.400000 0 181.700000 -980.700000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -981.400000 0 494.500000 -981.400000 0 494.500000 -982.200000 0 181.700000 -982.200000 0 181.700000 -981.400000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -982.200000 0 494.500000 -982.200000 0 494.500000 -982.900000 0 181.700000 -982.900000 0 181.700000 -982.200000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -982.900000 0 494.500000 -982.900000 0 494.500000 -983.700000 0 181.700000 -983.700000 0 181.700000 -982.900000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -983.700000 0 494.500000 -983.700000 0 494.500000 -984.500000 0 181.700000 -984.500000 0 181.700000 -983.700000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -984.500000 0 494.500000 -984.500000 0 494.500000 -985.200000 0 181.700000 -985.200000 0 181.700000 -984.500000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -985.200000 0 494.500000 -985.200000 0 494.500000 -986.000000 0 181.700000 -986.000000 0 181.700000 -985.200000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -986.000000 0 494.500000 -986.000000 0 494.500000 -986.700000 0 181.700000 -986.700000 0 181.700000 -986.000000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -986.700000 0 494.500000 -986.700000 0 494.500000 -987.500000 0 181.700000 -987.500000 0 181.700000 -986.700000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -987.500000 0 494.500000 -987.500000 0 494.500000 -988.200000 0 181.700000 -988.200000 0 181.700000 -987.500000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -988.200000 0 494.500000 -988.200000 0 494.500000 -989.000000 0 181.700000 -989.000000 0 181.700000 -988.200000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -989.000000 0 494.500000 -989.000000 0 494.500000 -989.800000 0 181.700000 -989.800000 0 181.700000 -989.000000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -989.800000 0 494.500000 -989.800000 0 494.500000 -990.500000 0 181.700000 -990.500000 0 181.700000 -989.800000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -990.500000 0 494.500000 -990.500000 0 494.500000 -991.300000 0 181.700000 -991.300000 0 181.700000 -990.500000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -991.300000 0 494.500000 -991.300000 0 494.500000 -992.000000 0 181.700000 -992.000000 0 181.700000 -991.300000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -992.000000 0 494.500000 -992.000000 0 494.500000 -992.800000 0 181.700000 -992.800000 0 181.700000 -992.000000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -992.800000 0 494.500000 -992.800000 0 494.500000 -993.600000 0 181.700000 -993.600000 0 181.700000 -992.800000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -993.600000 0 494.500000 -993.600000 0 494.500000 -994.300000 0 181.700000 -994.300000 0 181.700000 -993.600000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -994.300000 0 494.500000 -994.300000 0 494.500000 -995.100000 0 181.700000 -995.100000 0 181.700000 -994.300000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -995.100000 0 494.500000 -995.100000 0 494.500000 -995.800000 0 181.700000 -995.800000 0 181.700000 -995.100000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -995.800000 0 494.500000 -995.800000 0 494.500000 -996.600000 0 181.700000 -996.600000 0 181.700000 -995.800000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -996.600000 0 494.500000 -996.600000 0 494.500000 -997.400000 0 181.700000 -997.400000 0 181.700000 -996.600000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -997.400000 0 494.500000 -997.400000 0 494.500000 -998.100000 0 181.700000 -998.100000 0 181.700000 -997.400000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -998.100000 0 494.500000 -998.100000 0 494.500000 -998.900000 0 181.700000 -998.900000 0 181.700000 -998.100000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -998.900000 0 494.500000 -998.900000 0 494.500000 -999.600000 0 181.700000 -999.600000 0 181.700000 -998.900000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -999.600000 0 494.500000 -999.600000 0 494.500000 -1000.400000 0 181.700000 -1000.400000 0 181.700000 -999.600000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -1000.400000 0 494.500000 -1000.400000 0 494.500000 -1001.100000 0 181.700000 -1001.100000 0 181.700000 -1000.400000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -1001.100000 0 494.500000 -1001.100000 0 494.500000 -1001.900000 0 181.700000 -1001.900000 0 181.700000 -1001.100000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -1001.900000 0 494.500000 -1001.900000 0 494.500000 -1002.700000 0 181.700000 -1002.700000 0 181.700000 -1001.900000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -1002.700000 0 494.500000 -1002.700000 0 494.500000 -1003.400000 0 181.700000 -1003.400000 0 181.700000 -1002.700000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -1003.400000 0 494.500000 -1003.400000 0 494.500000 -1004.200000 0 181.700000 -1004.200000 0 181.700000 -1003.400000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -1004.200000 0 494.500000 -1004.200000 0 494.500000 -1004.900000 0 181.700000 -1004.900000 0 181.700000 -1004.200000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -1004.900000 0 494.500000 -1004.900000 0 494.500000 -1005.700000 0 181.700000 -1005.700000 0 181.700000 -1004.900000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -1005.700000 0 494.500000 -1005.700000 0 494.500000 -1006.500000 0 181.700000 -1006.500000 0 181.700000 -1005.700000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -1006.500000 0 494.500000 -1006.500000 0 494.500000 -1007.200000 0 181.700000 -1007.200000 0 181.700000 -1006.500000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -1007.200000 0 494.500000 -1007.200000 0 494.500000 -1008.000000 0 181.700000 -1008.000000 0 181.700000 -1007.200000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -1008.000000 0 494.500000 -1008.000000 0 494.500000 -1008.700000 0 181.700000 -1008.700000 0 181.700000 -1008.000000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -1008.700000 0 494.500000 -1008.700000 0 494.500000 -1009.500000 0 181.700000 -1009.500000 0 181.700000 -1008.700000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -1009.500000 0 494.500000 -1009.500000 0 494.500000 -1010.300000 0 181.700000 -1010.300000 0 181.700000 -1009.500000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -1010.300000 0 494.500000 -1010.300000 0 494.500000 -1011.000000 0 181.700000 -1011.000000 0 181.700000 -1010.300000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -1011.000000 0 494.500000 -1011.000000 0 494.500000 -1011.800000 0 181.700000 -1011.800000 0 181.700000 -1011.000000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -1011.800000 0 494.500000 -1011.800000 0 494.500000 -1012.500000 0 181.700000 -1012.500000 0 181.700000 -1011.800000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -1012.500000 0 494.500000 -1012.500000 0 494.500000 -1013.300000 0 181.700000 -1013.300000 0 181.700000 -1012.500000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -1013.300000 0 494.500000 -1013.300000 0 494.500000 -1014.000000 0 181.700000 -1014.000000 0 181.700000 -1013.300000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -1014.000000 0 494.500000 -1014.000000 0 494.500000 -1014.800000 0 181.700000 -1014.800000 0 181.700000 -1014.000000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -1014.800000 0 494.500000 -1014.800000 0 494.500000 -1015.600000 0 181.700000 -1015.600000 0 181.700000 -1014.800000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -1015.600000 0 494.500000 -1015.600000 0 494.500000 -1016.300000 0 181.700000 -1016.300000 0 181.700000 -1015.600000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -1016.300000 0 494.500000 -1016.300000 0 494.500000 -1017.100000 0 181.700000 -1017.100000 0 181.700000 -1016.300000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -1017.100000 0 494.500000 -1017.100000 0 494.500000 -1017.800000 0 181.700000 -1017.800000 0 181.700000 -1017.100000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -1017.800000 0 494.500000 -1017.800000 0 494.500000 -1018.600000 0 181.700000 -1018.600000 0 181.700000 -1017.800000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -1018.600000 0 494.500000 -1018.600000 0 494.500000 -1019.400000 0 181.700000 -1019.400000 0 181.700000 -1018.600000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -1019.400000 0 494.500000 -1019.400000 0 494.500000 -1020.100000 0 181.700000 -1020.100000 0 181.700000 -1019.400000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -1020.100000 0 494.500000 -1020.100000 0 494.500000 -1020.900000 0 181.700000 -1020.900000 0 181.700000 -1020.100000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -1020.900000 0 494.500000 -1020.900000 0 494.500000 -1021.600000 0 181.700000 -1021.600000 0 181.700000 -1020.900000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -1021.600000 0 494.500000 -1021.600000 0 494.500000 -1022.400000 0 181.700000 -1022.400000 0 181.700000 -1021.600000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -1022.400000 0 494.500000 -1022.400000 0 494.500000 -1023.200000 0 181.700000 -1023.200000 0 181.700000 -1022.400000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -1023.200000 0 494.500000 -1023.200000 0 494.500000 -1023.900000 0 181.700000 -1023.900000 0 181.700000 -1023.200000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -1023.900000 0 494.500000 -1023.900000 0 494.500000 -1024.700000 0 181.700000 -1024.700000 0 181.700000 -1023.900000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -1024.700000 0 494.500000 -1024.700000 0 494.500000 -1025.400000 0 181.700000 -1025.400000 0 181.700000 -1024.700000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -1025.400000 0 494.500000 -1025.400000 0 494.500000 -1026.200000 0 181.700000 -1026.200000 0 181.700000 -1025.400000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -1026.200000 0 494.500000 -1026.200000 0 494.500000 -1026.900000 0 181.700000 -1026.900000 0 181.700000 -1026.200000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -1026.900000 0 494.500000 -1026.900000 0 494.500000 -1027.700000 0 181.700000 -1027.700000 0 181.700000 -1026.900000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -1027.700000 0 494.500000 -1027.700000 0 494.500000 -1028.500000 0 181.700000 -1028.500000 0 181.700000 -1027.700000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -1028.500000 0 494.500000 -1028.500000 0 494.500000 -1029.200000 0 181.700000 -1029.200000 0 181.700000 -1028.500000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -1029.200000 0 494.500000 -1029.200000 0 494.500000 -1030.000000 0 181.700000 -1030.000000 0 181.700000 -1029.200000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -1030.000000 0 494.500000 -1030.000000 0 494.500000 -1030.700000 0 181.700000 -1030.700000 0 181.700000 -1030.000000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -1030.700000 0 494.500000 -1030.700000 0 494.500000 -1031.500000 0 181.700000 -1031.500000 0 181.700000 -1030.700000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -1031.500000 0 494.500000 -1031.500000 0 494.500000 -1032.300000 0 181.700000 -1032.300000 0 181.700000 -1031.500000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -1032.300000 0 494.500000 -1032.300000 0 494.500000 -1033.000000 0 181.700000 -1033.000000 0 181.700000 -1032.300000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -1033.000000 0 494.500000 -1033.000000 0 494.500000 -1033.800000 0 181.700000 -1033.800000 0 181.700000 -1033.000000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -1033.800000 0 494.500000 -1033.800000 0 494.500000 -1034.500000 0 181.700000 -1034.500000 0 181.700000 -1033.800000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -1034.500000 0 494.500000 -1034.500000 0 494.500000 -1035.300000 0 181.700000 -1035.300000 0 181.700000 -1034.500000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -1035.300000 0 494.500000 -1035.300000 0 494.500000 -1036.100000 0 181.700000 -1036.100000 0 181.700000 -1035.300000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -1036.100000 0 494.500000 -1036.100000 0 494.500000 -1036.800000 0 181.700000 -1036.800000 0 181.700000 -1036.100000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -1036.800000 0 494.500000 -1036.800000 0 494.500000 -1037.600000 0 181.700000 -1037.600000 0 181.700000 -1036.800000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -1037.600000 0 494.500000 -1037.600000 0 494.500000 -1038.300000 0 181.700000 -1038.300000 0 181.700000 -1037.600000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -1038.300000 0 494.500000 -1038.300000 0 494.500000 -1039.100000 0 181.700000 -1039.100000 0 181.700000 -1038.300000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -1039.100000 0 494.500000 -1039.100000 0 494.500000 -1039.800000 0 181.700000 -1039.800000 0 181.700000 -1039.100000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -1039.800000 0 494.500000 -1039.800000 0 494.500000 -1040.600000 0 181.700000 -1040.600000 0 181.700000 -1039.800000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -1040.600000 0 494.500000 -1040.600000 0 494.500000 -1041.400000 0 181.700000 -1041.400000 0 181.700000 -1040.600000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -1041.400000 0 494.500000 -1041.400000 0 494.500000 -1042.100000 0 181.700000 -1042.100000 0 181.700000 -1041.400000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -1042.100000 0 494.500000 -1042.100000 0 494.500000 -1042.900000 0 181.700000 -1042.900000 0 181.700000 -1042.100000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -1042.900000 0 494.500000 -1042.900000 0 494.500000 -1043.600000 0 181.700000 -1043.600000 0 181.700000 -1042.900000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -1043.600000 0 494.500000 -1043.600000 0 494.500000 -1044.400000 0 181.700000 -1044.400000 0 181.700000 -1043.600000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -1044.400000 0 494.500000 -1044.400000 0 494.500000 -1045.200000 0 181.700000 -1045.200000 0 181.700000 -1044.400000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -1045.200000 0 494.500000 -1045.200000 0 494.500000 -1045.900000 0 181.700000 -1045.900000 0 181.700000 -1045.200000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -1045.900000 0 494.500000 -1045.900000 0 494.500000 -1046.700000 0 181.700000 -1046.700000 0 181.700000 -1045.900000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -1046.700000 0 494.500000 -1046.700000 0 494.500000 -1047.400000 0 181.700000 -1047.400000 0 181.700000 -1046.700000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -1047.400000 0 494.500000 -1047.400000 0 494.500000 -1048.200000 0 181.700000 -1048.200000 0 181.700000 -1047.400000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -1048.200000 0 494.500000 -1048.200000 0 494.500000 -1049.000000 0 181.700000 -1049.000000 0 181.700000 -1048.200000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -1049.000000 0 494.500000 -1049.000000 0 494.500000 -1049.700000 0 181.700000 -1049.700000 0 181.700000 -1049.000000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -1049.700000 0 494.500000 -1049.700000 0 494.500000 -1050.500000 0 181.700000 -1050.500000 0 181.700000 -1049.700000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -1050.500000 0 494.500000 -1050.500000 0 494.500000 -1051.200000 0 181.700000 -1051.200000 0 181.700000 -1050.500000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -1051.200000 0 494.500000 -1051.200000 0 494.500000 -1052.000000 0 181.700000 -1052.000000 0 181.700000 -1051.200000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -1052.000000 0 494.500000 -1052.000000 0 494.500000 -1052.700000 0 181.700000 -1052.700000 0 181.700000 -1052.000000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -1052.700000 0 494.500000 -1052.700000 0 494.500000 -1053.500000 0 181.700000 -1053.500000 0 181.700000 -1052.700000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -1053.500000 0 494.500000 -1053.500000 0 494.500000 -1054.300000 0 181.700000 -1054.300000 0 181.700000 -1053.500000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -1054.300000 0 494.500000 -1054.300000 0 494.500000 -1055.000000 0 181.700000 -1055.000000 0 181.700000 -1054.300000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -1055.000000 0 494.500000 -1055.000000 0 494.500000 -1055.800000 0 181.700000 -1055.800000 0 181.700000 -1055.000000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -1055.800000 0 494.500000 -1055.800000 0 494.500000 -1056.500000 0 181.700000 -1056.500000 0 181.700000 -1055.800000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -1056.500000 0 494.500000 -1056.500000 0 494.500000 -1057.300000 0 181.700000 -1057.300000 0 181.700000 -1056.500000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -1057.300000 0 494.500000 -1057.300000 0 494.500000 -1058.100000 0 181.700000 -1058.100000 0 181.700000 -1057.300000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -1058.100000 0 494.500000 -1058.100000 0 494.500000 -1058.800000 0 181.700000 -1058.800000 0 181.700000 -1058.100000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -1058.800000 0 494.500000 -1058.800000 0 494.500000 -1059.600000 0 181.700000 -1059.600000 0 181.700000 -1058.800000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -1059.600000 0 494.500000 -1059.600000 0 494.500000 -1060.300000 0 181.700000 -1060.300000 0 181.700000 -1059.600000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -1060.300000 0 494.500000 -1060.300000 0 494.500000 -1061.100000 0 181.700000 -1061.100000 0 181.700000 -1060.300000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -1061.100000 0 494.500000 -1061.100000 0 494.500000 -1061.900000 0 181.700000 -1061.900000 0 181.700000 -1061.100000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -1061.900000 0 494.500000 -1061.900000 0 494.500000 -1062.600000 0 181.700000 -1062.600000 0 181.700000 -1061.900000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -1062.600000 0 494.500000 -1062.600000 0 494.500000 -1063.400000 0 181.700000 -1063.400000 0 181.700000 -1062.600000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -1063.400000 0 494.500000 -1063.400000 0 494.500000 -1064.100000 0 181.700000 -1064.100000 0 181.700000 -1063.400000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -1064.100000 0 494.500000 -1064.100000 0 494.500000 -1064.900000 0 181.700000 -1064.900000 0 181.700000 -1064.100000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -1064.900000 0 494.500000 -1064.900000 0 494.500000 -1065.600000 0 181.700000 -1065.600000 0 181.700000 -1064.900000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -1065.600000 0 494.500000 -1065.600000 0 494.500000 -1066.400000 0 181.700000 -1066.400000 0 181.700000 -1065.600000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -1066.400000 0 494.500000 -1066.400000 0 494.500000 -1067.200000 0 181.700000 -1067.200000 0 181.700000 -1066.400000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -1067.200000 0 494.500000 -1067.200000 0 494.500000 -1067.900000 0 181.700000 -1067.900000 0 181.700000 -1067.200000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -1067.900000 0 494.500000 -1067.900000 0 494.500000 -1068.700000 0 181.700000 -1068.700000 0 181.700000 -1067.900000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -1068.700000 0 494.500000 -1068.700000 0 494.500000 -1069.400000 0 181.700000 -1069.400000 0 181.700000 -1068.700000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -1069.400000 0 494.500000 -1069.400000 0 494.500000 -1070.200000 0 181.700000 -1070.200000 0 181.700000 -1069.400000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -1070.200000 0 494.500000 -1070.200000 0 494.500000 -1071.000000 0 181.700000 -1071.000000 0 181.700000 -1070.200000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -1071.000000 0 494.500000 -1071.000000 0 494.500000 -1071.700000 0 181.700000 -1071.700000 0 181.700000 -1071.000000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -1071.700000 0 494.500000 -1071.700000 0 494.500000 -1072.500000 0 181.700000 -1072.500000 0 181.700000 -1071.700000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -1072.500000 0 494.500000 -1072.500000 0 494.500000 -1073.200000 0 181.700000 -1073.200000 0 181.700000 -1072.500000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -1073.200000 0 494.500000 -1073.200000 0 494.500000 -1074.000000 0 181.700000 -1074.000000 0 181.700000 -1073.200000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -1074.000000 0 494.500000 -1074.000000 0 494.500000 -1074.800000 0 181.700000 -1074.800000 0 181.700000 -1074.000000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -1074.800000 0 494.500000 -1074.800000 0 494.500000 -1075.500000 0 181.700000 -1075.500000 0 181.700000 -1074.800000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -1075.500000 0 494.500000 -1075.500000 0 494.500000 -1076.300000 0 181.700000 -1076.300000 0 181.700000 -1075.500000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -1076.300000 0 494.500000 -1076.300000 0 494.500000 -1077.000000 0 181.700000 -1077.000000 0 181.700000 -1076.300000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -1077.000000 0 494.500000 -1077.000000 0 494.500000 -1077.800000 0 181.700000 -1077.800000 0 181.700000 -1077.000000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -1077.800000 0 494.500000 -1077.800000 0 494.500000 -1078.500000 0 181.700000 -1078.500000 0 181.700000 -1077.800000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -1078.500000 0 494.500000 -1078.500000 0 494.500000 -1079.300000 0 181.700000 -1079.300000 0 181.700000 -1078.500000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -1079.300000 0 494.500000 -1079.300000 0 494.500000 -1080.100000 0 181.700000 -1080.100000 0 181.700000 -1079.300000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -1080.100000 0 494.500000 -1080.100000 0 494.500000 -1080.800000 0 181.700000 -1080.800000 0 181.700000 -1080.100000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -1080.800000 0 494.500000 -1080.800000 0 494.500000 -1081.600000 0 181.700000 -1081.600000 0 181.700000 -1080.800000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -1081.600000 0 494.500000 -1081.600000 0 494.500000 -1082.300000 0 181.700000 -1082.300000 0 181.700000 -1081.600000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -1082.300000 0 494.500000 -1082.300000 0 494.500000 -1083.100000 0 181.700000 -1083.100000 0 181.700000 -1082.300000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -1083.100000 0 494.500000 -1083.100000 0 494.500000 -1083.900000 0 181.700000 -1083.900000 0 181.700000 -1083.100000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -1083.900000 0 494.500000 -1083.900000 0 494.500000 -1084.600000 0 181.700000 -1084.600000 0 181.700000 -1083.900000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -1084.600000 0 494.500000 -1084.600000 0 494.500000 -1085.400000 0 181.700000 -1085.400000 0 181.700000 -1084.600000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -1085.400000 0 494.500000 -1085.400000 0 494.500000 -1086.100000 0 181.700000 -1086.100000 0 181.700000 -1085.400000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -1086.100000 0 494.500000 -1086.100000 0 494.500000 -1086.900000 0 181.700000 -1086.900000 0 181.700000 -1086.100000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -1086.900000 0 494.500000 -1086.900000 0 494.500000 -1087.700000 0 181.700000 -1087.700000 0 181.700000 -1086.900000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -1087.700000 0 494.500000 -1087.700000 0 494.500000 -1088.400000 0 181.700000 -1088.400000 0 181.700000 -1087.700000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -1088.400000 0 494.500000 -1088.400000 0 494.500000 -1089.200000 0 181.700000 -1089.200000 0 181.700000 -1088.400000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -1089.200000 0 494.500000 -1089.200000 0 494.500000 -1089.900000 0 181.700000 -1089.900000 0 181.700000 -1089.200000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -1089.900000 0 494.500000 -1089.900000 0 494.500000 -1090.700000 0 181.700000 -1090.700000 0 181.700000 -1089.900000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -1090.700000 0 494.500000 -1090.700000 0 494.500000 -1091.400000 0 181.700000 -1091.400000 0 181.700000 -1090.700000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -1091.400000 0 494.500000 -1091.400000 0 494.500000 -1092.200000 0 181.700000 -1092.200000 0 181.700000 -1091.400000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -1092.200000 0 494.500000 -1092.200000 0 494.500000 -1093.000000 0 181.700000 -1093.000000 0 181.700000 -1092.200000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -1093.000000 0 494.500000 -1093.000000 0 494.500000 -1093.700000 0 181.700000 -1093.700000 0 181.700000 -1093.000000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -1093.700000 0 494.500000 -1093.700000 0 494.500000 -1094.500000 0 181.700000 -1094.500000 0 181.700000 -1093.700000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -1094.500000 0 494.500000 -1094.500000 0 494.500000 -1095.200000 0 181.700000 -1095.200000 0 181.700000 -1094.500000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -1095.200000 0 494.500000 -1095.200000 0 494.500000 -1096.000000 0 181.700000 -1096.000000 0 181.700000 -1095.200000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -1096.000000 0 494.500000 -1096.000000 0 494.500000 -1096.800000 0 181.700000 -1096.800000 0 181.700000 -1096.000000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -1096.800000 0 494.500000 -1096.800000 0 494.500000 -1097.500000 0 181.700000 -1097.500000 0 181.700000 -1096.800000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -1097.500000 0 494.500000 -1097.500000 0 494.500000 -1098.300000 0 181.700000 -1098.300000 0 181.700000 -1097.500000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -1098.300000 0 494.500000 -1098.300000 0 494.500000 -1099.000000 0 181.700000 -1099.000000 0 181.700000 -1098.300000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -1099.000000 0 494.500000 -1099.000000 0 494.500000 -1099.800000 0 181.700000 -1099.800000 0 181.700000 -1099.000000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -1099.800000 0 494.500000 -1099.800000 0 494.500000 -1100.600000 0 181.700000 -1100.600000 0 181.700000 -1099.800000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -1100.600000 0 494.500000 -1100.600000 0 494.500000 -1101.300000 0 181.700000 -1101.300000 0 181.700000 -1100.600000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -1101.300000 0 494.500000 -1101.300000 0 494.500000 -1102.100000 0 181.700000 -1102.100000 0 181.700000 -1101.300000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -1102.100000 0 494.500000 -1102.100000 0 494.500000 -1102.800000 0 181.700000 -1102.800000 0 181.700000 -1102.100000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -1102.800000 0 494.500000 -1102.800000 0 494.500000 -1103.600000 0 181.700000 -1103.600000 0 181.700000 -1102.800000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -1103.600000 0 494.500000 -1103.600000 0 494.500000 -1104.300000 0 181.700000 -1104.300000 0 181.700000 -1103.600000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -1104.300000 0 494.500000 -1104.300000 0 494.500000 -1105.100000 0 181.700000 -1105.100000 0 181.700000 -1104.300000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -1105.100000 0 494.500000 -1105.100000 0 494.500000 -1105.900000 0 181.700000 -1105.900000 0 181.700000 -1105.100000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -1105.900000 0 494.500000 -1105.900000 0 494.500000 -1106.600000 0 181.700000 -1106.600000 0 181.700000 -1105.900000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -1106.600000 0 494.500000 -1106.600000 0 494.500000 -1107.400000 0 181.700000 -1107.400000 0 181.700000 -1106.600000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -1107.400000 0 494.500000 -1107.400000 0 494.500000 -1108.100000 0 181.700000 -1108.100000 0 181.700000 -1107.400000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -1108.100000 0 494.500000 -1108.100000 0 494.500000 -1108.900000 0 181.700000 -1108.900000 0 181.700000 -1108.100000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -1108.900000 0 494.500000 -1108.900000 0 494.500000 -1109.700000 0 181.700000 -1109.700000 0 181.700000 -1108.900000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -1109.700000 0 494.500000 -1109.700000 0 494.500000 -1110.400000 0 181.700000 -1110.400000 0 181.700000 -1109.700000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -1110.400000 0 494.500000 -1110.400000 0 494.500000 -1111.200000 0 181.700000 -1111.200000 0 181.700000 -1110.400000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -1111.200000 0 494.500000 -1111.200000 0 494.500000 -1111.900000 0 181.700000 -1111.900000 0 181.700000 -1111.200000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -1111.900000 0 494.500000 -1111.900000 0 494.500000 -1112.700000 0 181.700000 -1112.700000 0 181.700000 -1111.900000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -1112.700000 0 494.500000 -1112.700000 0 494.500000 -1113.400000 0 181.700000 -1113.400000 0 181.700000 -1112.700000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -1113.400000 0 494.500000 -1113.400000 0 494.500000 -1114.200000 0 181.700000 -1114.200000 0 181.700000 -1113.400000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -1114.200000 0 494.500000 -1114.200000 0 494.500000 -1115.000000 0 181.700000 -1115.000000 0 181.700000 -1114.200000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -1115.000000 0 494.500000 -1115.000000 0 494.500000 -1115.700000 0 181.700000 -1115.700000 0 181.700000 -1115.000000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -1115.700000 0 494.500000 -1115.700000 0 494.500000 -1116.500000 0 181.700000 -1116.500000 0 181.700000 -1115.700000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -1116.500000 0 494.500000 -1116.500000 0 494.500000 -1117.200000 0 181.700000 -1117.200000 0 181.700000 -1116.500000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -1117.200000 0 494.500000 -1117.200000 0 494.500000 -1118.000000 0 181.700000 -1118.000000 0 181.700000 -1117.200000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -1118.000000 0 494.500000 -1118.000000 0 494.500000 -1118.700000 0 181.700000 -1118.700000 0 181.700000 -1118.000000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -1118.700000 0 494.500000 -1118.700000 0 494.500000 -1119.500000 0 181.700000 -1119.500000 0 181.700000 -1118.700000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -1119.500000 0 494.500000 -1119.500000 0 494.500000 -1120.300000 0 181.700000 -1120.300000 0 181.700000 -1119.500000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -1120.300000 0 494.500000 -1120.300000 0 494.500000 -1121.000000 0 181.700000 -1121.000000 0 181.700000 -1120.300000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -1121.000000 0 494.500000 -1121.000000 0 494.500000 -1121.800000 0 181.700000 -1121.800000 0 181.700000 -1121.000000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -1121.800000 0 494.500000 -1121.800000 0 494.500000 -1122.500000 0 181.700000 -1122.500000 0 181.700000 -1121.800000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -1122.500000 0 494.500000 -1122.500000 0 494.500000 -1123.300000 0 181.700000 -1123.300000 0 181.700000 -1122.500000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -1123.300000 0 494.500000 -1123.300000 0 494.500000 -1124.100000 0 181.700000 -1124.100000 0 181.700000 -1123.300000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -1124.100000 0 494.500000 -1124.100000 0 494.500000 -1124.800000 0 181.700000 -1124.800000 0 181.700000 -1124.100000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -1124.800000 0 494.500000 -1124.800000 0 494.500000 -1125.600000 0 181.700000 -1125.600000 0 181.700000 -1124.800000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -1125.600000 0 494.500000 -1125.600000 0 494.500000 -1126.300000 0 181.700000 -1126.300000 0 181.700000 -1125.600000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -1126.300000 0 494.500000 -1126.300000 0 494.500000 -1127.100000 0 181.700000 -1127.100000 0 181.700000 -1126.300000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -1127.100000 0 494.500000 -1127.100000 0 494.500000 -1127.800000 0 181.700000 -1127.800000 0 181.700000 -1127.100000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -1127.800000 0 494.500000 -1127.800000 0 494.500000 -1128.600000 0 181.700000 -1128.600000 0 181.700000 -1127.800000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -1128.600000 0 494.500000 -1128.600000 0 494.500000 -1129.400000 0 181.700000 -1129.400000 0 181.700000 -1128.600000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -1129.400000 0 494.500000 -1129.400000 0 494.500000 -1130.100000 0 181.700000 -1130.100000 0 181.700000 -1129.400000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -1130.100000 0 494.500000 -1130.100000 0 494.500000 -1130.900000 0 181.700000 -1130.900000 0 181.700000 -1130.100000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -1130.900000 0 494.500000 -1130.900000 0 494.500000 -1131.600000 0 181.700000 -1131.600000 0 181.700000 -1130.900000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -1131.600000 0 494.500000 -1131.600000 0 494.500000 -1132.400000 0 181.700000 -1132.400000 0 181.700000 -1131.600000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -1132.400000 0 494.500000 -1132.400000 0 494.500000 -1133.100000 0 181.700000 -1133.100000 0 181.700000 -1132.400000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -1133.100000 0 494.500000 -1133.100000 0 494.500000 -1133.900000 0 181.700000 -1133.900000 0 181.700000 -1133.100000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -1133.900000 0 494.500000 -1133.900000 0 494.500000 -1134.700000 0 181.700000 -1134.700000 0 181.700000 -1133.900000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -1134.700000 0 494.500000 -1134.700000 0 494.500000 -1135.400000 0 181.700000 -1135.400000 0 181.700000 -1134.700000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -1135.400000 0 494.500000 -1135.400000 0 494.500000 -1136.200000 0 181.700000 -1136.200000 0 181.700000 -1135.400000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -1136.100000 0 181.800000 -1136.100000 0 181.800000 -942.800000 0 494.400000 -942.800000 0 494.400000 -1136.100000 0 338.100000 -1136.100000 0
+strokePath subpath 1 338.100000 -1136.100000 0 181.800000 -1136.100000 0 181.800000 -942.800000 0 494.400000 -942.800000 0 494.400000 -1136.100000 0 338.100000 -1136.100000 0
+saveState
+updateCtm 11410.000000 0.000000 0.000000 -8760.000000 20530.000000 185210.000000
+drawSoftMaskedImage 1142 877 1142 877 JPEG 70955 PPM 3004618
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -1097.076000 215.488000 -1105.076000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -1097.076000 220.592000 -1105.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -1097.076000 225.696000 -1105.076000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -1097.076000 230.800000 -1105.076000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -1104.676000 241.388000 -1112.676000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -1104.676000 246.492000 -1112.676000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -1104.676000 251.596000 -1112.676000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -1104.676000 256.700000 -1112.676000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -1112.376000 267.188000 -1120.376000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -1112.376000 272.292000 -1120.376000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -1112.376000 277.396000 -1120.376000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -1112.376000 282.500000 -1120.376000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -1119.976000 293.088000 -1127.976000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -1119.976000 298.192000 -1127.976000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -1119.976000 303.296000 -1127.976000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -1119.976000 308.400000 -1127.976000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -1082.176000 202.588000 -1090.176000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -1062.776000 201.688000 -1070.776000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -1043.476000 195.788000 -1051.476000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -1043.476000 200.892000 -1051.476000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -1024.176000 194.888000 -1032.176000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -1024.176000 199.992000 -1032.176000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -1004.876000 193.988000 -1012.876000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -1004.876000 199.092000 -1012.876000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -985.476000 193.088000 -993.476000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -985.476000 198.192000 -993.476000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -1113.376000 330.188000 -1121.376000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -1113.376000 332.716000 -1121.376000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -1113.376000 337.596000 -1121.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -1113.376000 341.396000 -1121.376000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -1113.376000 346.036000 -1121.376000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -1113.376000 350.900000 -1121.376000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -1113.376000 355.972000 -1121.376000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -1113.376000 359.196000 -1121.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -1113.376000 362.196000 -1121.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -1113.376000 367.404000 -1121.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -1113.376000 371.876000 -1121.376000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -1113.376000 375.052000 -1121.376000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -1093.876000 361.172000 -1101.876000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -1093.876000 364.340000 -1101.876000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -1093.876000 367.396000 -1101.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -1093.876000 372.604000 -1101.876000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -1093.876000 379.348000 -1101.876000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -1093.876000 384.484000 -1101.876000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -1093.876000 389.436000 -1101.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -1093.876000 392.108000 -1101.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -1093.876000 395.708000 -1101.876000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -1093.876000 397.540000 -1101.876000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -1093.876000 402.444000 -1101.876000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -1093.876000 406.788000 -1101.876000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -1074.376000 392.972000 -1082.376000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -1074.376000 398.076000 -1082.376000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -1074.376000 403.180000 -1082.376000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -1074.376000 405.428000 -1082.376000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -1074.376000 410.332000 -1082.376000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -1074.376000 414.476000 -1082.376000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -946.808000 305.808000 -960.808000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -946.808000 314.138000 -960.808000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -946.808000 320.788000 -960.808000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -946.808000 328.698000 -960.808000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -946.808000 336.972000 -960.808000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -946.808000 344.182000 -960.808000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -946.808000 349.810000 -960.808000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -946.808000 354.234000 -960.808000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -946.808000 362.718000 -960.808000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -946.808000 367.870000 -960.808000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -946.808000 372.322000 -960.808000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -946.808000 382.080000 -960.808000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -946.808000 388.772000 -960.808000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -946.808000 397.802000 -960.808000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -946.808000 402.254000 -960.808000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -946.808000 407.896000 -960.808000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -1069.700000 0 424.300000 -1069.700000 0 424.300000 -1008.900000 0 493.600000 -1008.900000 0 493.600000 -1069.700000 0 458.900000 -1069.700000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -1018.500000 0 428.900000 -1018.500000 0 428.900000 -1012.600000 0 434.800000 -1012.600000 0 434.800000 -1018.500000 0 431.900000 -1018.500000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -1029.600000 0 428.900000 -1029.600000 0 428.900000 -1023.600000 0 434.800000 -1023.600000 0 434.800000 -1029.600000 0 431.900000 -1029.600000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -1040.700000 0 428.900000 -1040.700000 0 428.900000 -1034.700000 0 434.800000 -1034.700000 0 434.800000 -1040.700000 0 431.900000 -1040.700000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -1051.800000 0 428.900000 -1051.800000 0 428.900000 -1045.800000 0 434.800000 -1045.800000 0 434.800000 -1051.800000 0 431.900000 -1051.800000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -1062.900000 0 428.900000 -1062.900000 0 428.900000 -1056.900000 0 434.800000 -1056.900000 0 434.800000 -1062.900000 0 431.900000 -1062.900000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -1011.476000 443.288000 -1019.476000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -1011.476000 445.816000 -1019.476000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -1011.476000 450.600000 -1019.476000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -1011.476000 454.496000 -1019.476000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -1011.476000 459.136000 -1019.476000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -1011.476000 464.000000 -1019.476000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -1011.476000 468.976000 -1019.476000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -1011.476000 472.304000 -1019.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -1011.476000 475.208000 -1019.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -1011.476000 480.520000 -1019.476000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -1011.476000 484.992000 -1019.476000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -1011.476000 488.168000 -1019.476000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -1022.476000 443.352000 -1030.476000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -1022.476000 447.920000 -1030.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -1022.476000 452.976000 -1030.476000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -1022.476000 457.400000 -1030.476000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -1022.476000 462.472000 -1030.476000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -1022.476000 465.800000 -1030.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -1022.476000 468.904000 -1030.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -1022.476000 473.816000 -1030.476000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -1022.476000 478.888000 -1030.476000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -1022.476000 482.064000 -1030.476000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -1033.576000 442.872000 -1041.576000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -1033.576000 446.040000 -1041.576000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -1033.576000 448.992000 -1041.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -1033.576000 454.304000 -1041.576000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -1033.576000 461.048000 -1041.576000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -1033.576000 466.184000 -1041.576000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -1033.576000 471.136000 -1041.576000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -1033.576000 473.808000 -1041.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -1033.576000 477.408000 -1041.576000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -1033.576000 479.240000 -1041.576000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -1033.576000 484.144000 -1041.576000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -1033.576000 488.488000 -1041.576000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -1044.676000 443.384000 -1052.676000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -1044.676000 448.464000 -1052.676000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -1044.676000 453.424000 -1052.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -1044.676000 456.696000 -1052.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -1044.676000 459.800000 -1052.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -1044.676000 462.032000 -1052.676000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -1044.676000 466.936000 -1052.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -1044.676000 471.080000 -1052.676000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -1055.776000 443.272000 -1063.776000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -1055.776000 448.376000 -1063.776000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -1055.776000 453.480000 -1063.776000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -1055.776000 455.728000 -1063.776000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -1055.776000 460.632000 -1063.776000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -1055.776000 464.776000 -1063.776000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -3700.800000 0 114.800000 -3700.800000 0 114.800000 -3658.000000 0 72.000000 -3658.000000 0 72.000000 -3700.800000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 449270.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 108.000000 546.200000 0 540.000000 546.200000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 546.200000 0
+eoFillPath subpath 1 108.000000 72.000000 0 540.000000 72.000000 0 540.000000 245.800000 0 108.000000 245.800000 0 108.000000 72.000000 0
+eoFillPath subpath 1 108.000000 245.800000 0 157.400000 245.800000 0 157.400000 546.200000 0 108.000000 546.200000 0 108.000000 245.800000 0
+eoFillPath subpath 1 490.500000 245.800000 0 540.000000 245.800000 0 540.000000 546.200000 0 490.500000 546.200000 0 490.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 15740.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 108.000000 701.300000 0 540.000000 701.300000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 701.300000 0
+eoFillPath subpath 1 108.000000 76.200000 0 540.000000 76.200000 0 540.000000 90.100000 0 108.000000 90.100000 0 108.000000 76.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 108.100000 719.948000 121.892000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 121.908000 719.948000 131.364000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 131.412000 719.948000 136.484000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 136.516000 719.948000 148.532000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 148.516000 719.948000 158.292000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 158.324000 719.948000 168.452000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 168.420000 719.948000 176.740000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 176.724000 719.948000 186.564000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 186.532000 719.948000 191.604000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 191.636000 719.948000 197.396000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 197.444000 719.948000 202.516000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 202.500000 719.948000 211.700000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 210.500000 719.948000 217.076000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 217.108000 719.948000 227.236000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 227.204000 719.948000 231.636000 703.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 231.604000 719.948000 237.876000 703.948000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 672.848000 119.028000 656.848000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 118.004000 672.848000 125.892000 656.848000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.908000 672.848000 137.284000 656.848000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 137.316000 672.848000 142.788000 656.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.820000 672.848000 150.468000 656.848000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 648.336000 232.000000 636.336000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 232.000000 648.336000 239.092000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 239.104000 648.336000 245.860000 636.336000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 245.908000 648.336000 250.720000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 252.208000 648.336000 256.012000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.512000 648.336000 262.324000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 262.312000 648.336000 269.536000 636.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 271.108000 648.336000 274.912000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 276.412000 648.336000 281.224000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 281.212000 648.336000 288.940000 636.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 289.012000 648.336000 296.104000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 297.508000 648.336000 301.312000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 302.812000 648.336000 309.580000 636.336000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 309.616000 648.336000 316.708000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 316.720000 648.336000 324.400000 636.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 324.424000 648.336000 331.516000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 331.528000 648.336000 336.340000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 336.328000 648.336000 343.480000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 343.432000 648.336000 351.112000 636.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 351.232000 648.336000 355.060000 636.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 355.036000 648.336000 362.128000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 363.640000 648.336000 367.444000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.944000 648.336000 376.624000 636.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 376.648000 648.336000 383.740000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 383.752000 648.336000 391.432000 636.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 391.456000 648.336000 397.612000 636.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 399.052000 648.336000 402.856000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.356000 648.336000 411.508000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 411.556000 648.336000 417.292000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 417.256000 648.336000 424.348000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 425.860000 648.336000 429.664000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 431.260000 648.336000 438.412000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 439.864000 648.336000 443.668000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 445.168000 648.336000 449.608000 636.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 449.572000 648.336000 456.664000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 456.676000 648.336000 466.936000 636.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 468.472000 648.336000 472.276000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 473.872000 648.336000 479.608000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 479.572000 648.336000 486.664000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 486.676000 648.336000 494.356000 636.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 494.380000 648.336000 501.100000 636.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 501.076000 648.336000 508.804000 636.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 508.876000 648.336000 514.612000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 514.576000 648.336000 520.312000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 520.276000 648.336000 527.428000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 527.380000 648.336000 535.108000 636.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 535.084000 648.336000 539.896000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 648.336000 543.904000 636.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 634.436000 228.652000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.700000 634.436000 236.428000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.404000 634.436000 244.084000 622.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 246.208000 634.436000 250.012000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 252.112000 634.436000 259.792000 622.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 259.816000 634.436000 263.644000 622.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 263.620000 634.436000 270.772000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 270.820000 634.436000 277.540000 622.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 277.516000 634.436000 284.776000 622.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 284.812000 634.436000 291.532000 622.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 291.508000 634.436000 299.236000 622.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 299.212000 634.436000 304.948000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 305.008000 634.436000 310.744000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 310.708000 634.436000 317.860000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 317.812000 634.436000 325.540000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 325.612000 634.436000 330.424000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 332.512000 634.436000 336.316000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 338.416000 634.436000 346.096000 622.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 346.120000 634.436000 353.848000 622.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 353.824000 634.436000 359.980000 622.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 360.028000 634.436000 367.756000 622.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 367.732000 634.436000 374.824000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 374.836000 634.436000 380.992000 622.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 381.040000 634.436000 384.844000 622.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.944000 634.436000 390.748000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 392.848000 634.436000 403.348000 622.436000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 403.348000 634.436000 410.440000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.452000 634.436000 417.208000 622.436000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 417.256000 634.436000 422.068000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 424.156000 634.436000 427.960000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 430.060000 634.436000 434.872000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 434.860000 634.436000 442.084000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 444.160000 634.436000 447.964000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 450.064000 634.436000 454.876000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 454.960000 634.436000 462.688000 622.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 462.664000 634.436000 469.756000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 471.868000 634.436000 475.672000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 477.772000 634.436000 483.508000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 483.472000 634.436000 491.200000 622.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 491.272000 634.436000 499.000000 622.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 498.976000 634.436000 506.656000 622.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 506.680000 634.436000 513.832000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 513.784000 634.436000 519.520000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 519.580000 634.436000 527.260000 622.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 529.384000 634.436000 533.188000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 535.288000 634.436000 540.028000 622.436000 1.000000 0.000000 0.000000 1.000000 I
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 634.436000 543.904000 622.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 620.536000 229.228000 608.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 229.204000 620.536000 236.356000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 236.404000 620.536000 243.172000 608.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 243.208000 620.536000 250.300000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 251.104000 620.536000 254.908000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 255.700000 620.536000 262.852000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 262.900000 620.536000 266.728000 608.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 266.704000 620.536000 272.860000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 272.908000 620.536000 280.132000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 280.912000 620.536000 284.716000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.616000 620.536000 293.296000 608.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 293.212000 620.536000 297.040000 608.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 297.016000 620.536000 304.168000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 304.216000 620.536000 311.944000 608.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 312.016000 620.536000 316.828000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 316.816000 620.536000 323.908000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 323.920000 620.536000 331.600000 608.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 332.416000 620.536000 336.220000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 337.012000 620.536000 344.164000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 340.312000 620.536000 344.116000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.316000 620.536000 355.120000 608.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 355.200000 620.536000 361.356000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 361.404000 620.536000 366.216000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 366.204000 620.536000 371.940000 608.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 371.904000 620.536000 379.056000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 379.104000 620.536000 389.364000 608.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 389.304000 620.536000 396.984000 608.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 397.008000 620.536000 404.100000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 404.112000 620.536000 409.848000 608.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 409.908000 620.536000 415.644000 608.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 415.608000 620.536000 422.376000 608.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 423.204000 620.536000 427.008000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 427.800000 620.536000 435.480000 608.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 435.504000 620.536000 442.596000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 442.608000 620.536000 450.288000 608.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 450.312000 620.536000 454.116000 608.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 454.908000 620.536000 458.712000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 459.612000 620.536000 466.332000 608.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 466.308000 620.536000 473.532000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 473.508000 620.536000 480.276000 608.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 480.312000 620.536000 487.404000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 487.416000 620.536000 493.152000 608.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 493.212000 620.536000 500.304000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 500.316000 620.536000 507.996000 608.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 508.716000 620.536000 512.520000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 513.312000 620.536000 523.572000 608.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 523.608000 620.536000 527.436000 608.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 527.508000 620.536000 532.320000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 532.308000 620.536000 540.036000 608.536000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 620.536000 543.904000 608.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 606.636000 229.228000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 229.204000 606.636000 236.296000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.308000 606.636000 241.120000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 241.408000 606.636000 245.212000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.404000 606.636000 250.216000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 250.204000 606.636000 257.428000 594.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 257.608000 606.636000 261.412000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 261.604000 606.636000 268.864000 594.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 268.900000 606.636000 275.992000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 276.004000 606.636000 283.096000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 283.108000 606.636000 290.788000 594.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 291.004000 606.636000 294.808000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 295.000000 606.636000 299.812000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 299.800000 606.636000 307.528000 594.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 307.600000 606.636000 314.692000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 314.896000 606.636000 318.700000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.892000 606.636000 326.572000 594.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 326.488000 606.636000 330.316000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 330.292000 606.636000 336.028000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 336.088000 606.636000 343.768000 594.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 343.792000 606.636000 349.948000 594.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 350.188000 606.636000 353.992000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.184000 606.636000 361.336000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 361.384000 606.636000 369.112000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 369.088000 606.636000 376.768000 594.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 376.888000 606.636000 380.692000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.992000 606.636000 384.820000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 384.796000 606.636000 392.524000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 392.596000 606.636000 398.752000 594.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 398.692000 606.636000 405.784000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 405.796000 606.636000 412.516000 594.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 412.492000 606.636000 417.304000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 417.388000 606.636000 423.544000 594.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 423.688000 606.636000 427.492000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 427.684000 606.636000 432.124000 594.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 432.088000 606.636000 437.824000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 437.884000 606.636000 445.108000 594.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 445.084000 606.636000 456.460000 594.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 456.688000 606.636000 460.492000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 460.684000 606.636000 466.840000 594.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 466.888000 606.636000 474.040000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.992000 606.636000 485.368000 594.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 485.392000 606.636000 493.072000 594.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 493.096000 606.636000 496.924000 594.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 496.900000 606.636000 500.728000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 500.704000 606.636000 508.432000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 508.504000 606.636000 516.184000 594.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 516.400000 606.636000 520.204000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 520.396000 606.636000 525.208000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 525.196000 606.636000 532.924000 594.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 532.996000 606.636000 540.088000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 606.636000 543.904000 594.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 592.736000 229.180000 580.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 229.204000 592.736000 236.296000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.308000 592.736000 240.136000 580.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 240.112000 592.736000 243.940000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 244.012000 592.736000 250.732000 580.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 250.708000 592.736000 254.536000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 254.512000 592.736000 261.736000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 261.712000 592.736000 269.440000 580.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 269.512000 592.736000 275.668000 580.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 276.412000 592.736000 280.216000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 281.008000 592.736000 288.688000 580.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 288.712000 592.736000 295.804000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 295.816000 592.736000 301.552000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 301.612000 592.736000 307.348000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 307.312000 592.736000 311.140000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 311.212000 592.736000 318.304000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 318.208000 592.736000 324.364000 580.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 324.412000 592.736000 328.216000 580.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 329.008000 592.736000 332.812000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.712000 592.736000 343.540000 580.736000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 343.516000 592.736000 351.244000 580.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 352.120000 592.736000 355.924000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 356.716000 592.736000 361.528000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 361.516000 592.736000 369.244000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 369.316000 592.736000 376.408000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 377.212000 592.736000 381.016000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 381.916000 592.736000 386.356000 580.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 386.320000 592.736000 393.472000 580.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 393.520000 592.736000 399.256000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 400.024000 592.736000 403.828000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.620000 592.736000 411.712000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 411.724000 592.736000 419.452000 580.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 419.428000 592.736000 427.108000 580.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 427.924000 592.736000 431.728000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 432.628000 592.736000 439.852000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 439.924000 592.736000 444.364000 580.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 445.120000 592.736000 448.924000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 449.716000 592.736000 454.528000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 454.516000 592.736000 462.244000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 462.316000 592.736000 469.408000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.212000 592.736000 474.016000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.916000 592.736000 481.684000 580.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 481.720000 592.736000 488.872000 580.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 488.824000 592.736000 494.560000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 494.620000 592.736000 502.300000 580.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 503.020000 592.736000 506.824000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 507.724000 592.736000 512.536000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 512.524000 592.736000 520.252000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 520.324000 592.736000 527.416000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 527.428000 592.736000 533.164000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 533.032000 592.736000 540.124000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 592.736000 544.004000 580.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 578.836000 228.652000 566.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.700000 578.836000 234.436000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 234.400000 578.836000 241.492000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 241.504000 578.836000 245.308000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.308000 578.836000 252.460000 566.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 252.508000 578.836000 256.336000 566.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 256.312000 578.836000 262.468000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 262.516000 578.836000 269.740000 566.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 269.716000 578.836000 273.520000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.520000 578.836000 280.672000 566.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 280.720000 578.836000 284.524000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.524000 578.836000 288.964000 566.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 288.928000 578.836000 296.020000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 296.032000 578.836000 306.292000 566.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 306.328000 578.836000 310.132000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.132000 578.836000 320.392000 566.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 320.428000 578.836000 324.256000 566.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 324.232000 578.836000 328.060000 566.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 328.036000 578.836000 335.716000 566.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 335.740000 578.836000 339.544000 566.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 339.500000 578.836000 347.180000 566.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 347.204000 578.836000 351.032000 566.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 351.008000 578.836000 358.160000 566.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 358.208000 578.836000 364.928000 566.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 364.904000 578.836000 372.164000 566.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 372.200000 578.836000 379.880000 566.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 379.904000 578.836000 386.996000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 387.008000 578.836000 392.744000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.708000 578.836000 398.444000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 398.408000 578.836000 405.176000 566.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 405.212000 578.836000 409.016000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 409.016000 578.836000 416.696000 566.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 416.720000 578.836000 424.448000 566.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 424.424000 578.836000 430.580000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 430.628000 578.836000 438.356000 566.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 438.332000 578.836000 445.424000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 445.436000 578.836000 451.592000 566.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 451.640000 578.836000 455.444000 566.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 558.936000 225.304000 546.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 228.604000 558.936000 237.268000 546.936000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 237.208000 558.936000 244.936000 546.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 246.508000 558.936000 250.312000 546.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 252.004000 558.936000 259.228000 546.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 259.204000 558.936000 265.972000 546.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 266.008000 558.936000 273.100000 546.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 273.112000 558.936000 278.848000 546.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 278.812000 558.936000 285.580000 546.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 285.616000 558.936000 289.444000 546.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 289.516000 558.936000 296.608000 546.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 296.620000 558.936000 306.880000 546.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 308.524000 558.936000 312.328000 546.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 313.924000 558.936000 321.148000 546.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 321.124000 558.936000 325.564000 546.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 327.124000 558.936000 330.928000 546.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 332.728000 558.936000 337.540000 546.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 337.528000 558.936000 345.256000 546.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 345.328000 558.936000 352.420000 546.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 353.932000 558.936000 357.736000 546.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.332000 558.936000 363.772000 546.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 363.736000 558.936000 369.472000 546.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 369.532000 558.936000 377.260000 546.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 377.236000 558.936000 381.064000 546.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 381.040000 558.936000 385.852000 546.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 387.544000 558.936000 391.348000 546.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.040000 558.936000 400.768000 546.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 400.744000 558.936000 407.896000 546.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 407.944000 558.936000 413.680000 546.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 413.644000 558.936000 420.412000 546.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 420.448000 558.936000 427.540000 546.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 427.552000 558.936000 433.708000 546.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 433.756000 558.936000 438.568000 546.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 438.556000 558.936000 444.712000 546.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 446.260000 558.936000 450.064000 546.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 451.756000 558.936000 456.196000 546.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 456.160000 558.936000 461.896000 546.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 461.860000 558.936000 469.084000 546.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 469.156000 558.936000 480.532000 546.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 482.056000 558.936000 485.860000 546.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 487.552000 558.936000 495.232000 546.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 495.256000 558.936000 500.992000 546.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 501.052000 558.936000 508.144000 546.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 508.156000 558.936000 514.924000 546.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 514.852000 558.936000 518.680000 546.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 518.656000 558.936000 525.880000 546.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 525.952000 558.936000 533.680000 546.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 533.656000 558.936000 539.812000 546.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 558.936000 543.904000 546.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 545.036000 228.268000 533.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 228.304000 545.036000 235.396000 533.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 235.408000 545.036000 242.560000 533.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 242.608000 545.036000 248.344000 533.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 248.308000 545.036000 254.464000 533.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 254.512000 545.036000 258.316000 533.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 258.316000 545.036000 262.996000 533.036000 1.000000 0.000000 0.000000 1.000000 (
+drawChar 263.020000 545.036000 270.700000 533.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 270.724000 545.036000 277.948000 533.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 277.924000 545.036000 285.652000 533.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 285.628000 545.036000 293.356000 533.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 293.332000 545.036000 301.012000 533.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 301.036000 545.036000 307.192000 533.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 307.240000 545.036000 311.920000 533.036000 1.000000 0.000000 0.000000 1.000000 )
+drawChar 311.944000 545.036000 315.976000 533.036000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 113 1 0 1 0 1200.000000 13600 GAAAAA+DejaVuSerif-BoldItalic
+drawChar 268.800000 503.656000 277.308000 491.656000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 277.104000 503.656000 283.416000 491.656000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 283.404000 503.656000 292.128000 491.656000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 292.104000 503.656000 296.652000 491.656000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 296.700000 503.656000 302.232000 491.656000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 113 1 0 1 0 1200.000000 0 GAAAAA+DejaVuSerif-BoldItalic
+drawChar 358.700000 503.656000 367.040000 491.656000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 367.004000 503.656000 375.344000 491.656000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 375.308000 503.656000 383.648000 491.656000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 383.612000 503.656000 391.952000 491.656000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 113 1 0 1 0 1200.000000 0 GAAAAA+DejaVuSerif-BoldItalic
+drawChar 403.000000 503.656000 411.340000 491.656000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 411.304000 503.656000 419.644000 491.656000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 419.608000 503.656000 427.948000 491.656000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 427.912000 503.656000 436.252000 491.656000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 113 1 0 1 0 1200.000000 0 GAAAAA+DejaVuSerif-BoldItalic
+drawChar 447.200000 503.656000 455.540000 491.656000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 455.504000 503.656000 463.844000 491.656000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 463.808000 503.656000 472.148000 491.656000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 472.112000 503.656000 480.452000 491.656000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 113 1 0 1 0 1200.000000 0 GAAAAA+DejaVuSerif-BoldItalic
+drawChar 491.000000 503.656000 499.340000 491.656000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 499.304000 503.656000 507.644000 491.656000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 507.608000 503.656000 515.948000 491.656000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 515.912000 503.656000 524.252000 491.656000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 219.800000 486.836000 228.608000 474.836000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 228.596000 486.836000 232.424000 474.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 232.400000 486.836000 239.552000 474.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 239.600000 486.836000 246.320000 474.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 246.296000 486.836000 253.556000 474.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 253.592000 486.836000 260.312000 474.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 260.288000 486.836000 268.016000 474.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 267.992000 486.836000 273.728000 474.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 273.692000 486.836000 279.428000 474.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 279.392000 486.836000 286.544000 474.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 286.592000 486.836000 294.320000 474.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 294.296000 486.836000 299.108000 474.836000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 377.600000 486.836000 385.232000 474.836000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 385.196000 486.836000 389.000000 474.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 389.000000 486.836000 396.632000 474.836000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 421.900000 486.836000 429.532000 474.836000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 429.496000 486.836000 433.300000 474.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 433.300000 486.836000 440.932000 474.836000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 466.100000 486.836000 473.732000 474.836000 1.000000 0.000000 0.000000 1.000000 4
+drawChar 473.696000 486.836000 477.500000 474.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 477.500000 486.836000 485.132000 474.836000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 509.500000 486.836000 517.132000 474.836000 1.000000 0.000000 0.000000 1.000000 8
+drawChar 517.096000 486.836000 520.900000 474.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 520.900000 486.836000 528.532000 474.836000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 219.800000 470.036000 228.824000 458.036000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 228.800000 470.036000 235.892000 458.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 235.904000 470.036000 243.584000 458.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 243.608000 470.036000 250.328000 458.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 250.304000 470.036000 258.032000 458.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 258.008000 470.036000 263.744000 458.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 263.708000 470.036000 269.444000 458.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 269.408000 470.036000 276.560000 458.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 276.608000 470.036000 284.336000 458.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 284.312000 470.036000 289.124000 458.036000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 377.600000 470.036000 385.232000 458.036000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 385.196000 470.036000 389.000000 458.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 389.000000 470.036000 396.632000 458.036000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 421.900000 470.036000 429.532000 458.036000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 429.496000 470.036000 433.300000 458.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 433.300000 470.036000 440.932000 458.036000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 466.100000 470.036000 473.732000 458.036000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 473.696000 470.036000 477.500000 458.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 477.500000 470.036000 485.132000 458.036000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 509.500000 470.036000 517.132000 458.036000 1.000000 0.000000 0.000000 1.000000 4
+drawChar 517.096000 470.036000 520.900000 458.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 520.900000 470.036000 528.532000 458.036000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 219.800000 453.336000 228.020000 441.336000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 227.996000 453.336000 232.808000 441.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 232.796000 453.336000 238.532000 441.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 238.496000 453.336000 245.648000 441.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 245.696000 453.336000 255.956000 441.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 255.992000 453.336000 263.672000 441.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 263.696000 453.336000 270.788000 441.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 270.800000 453.336000 276.536000 441.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 276.500000 453.336000 282.236000 441.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 282.200000 453.336000 286.028000 441.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 286.004000 453.336000 293.096000 441.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 293.108000 453.336000 299.264000 441.336000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 370.000000 453.336000 377.632000 441.336000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 377.596000 453.336000 385.228000 441.336000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 385.192000 453.336000 388.996000 441.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 388.996000 453.336000 396.628000 441.336000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 421.900000 453.336000 429.532000 441.336000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 429.496000 453.336000 433.300000 441.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 433.300000 453.336000 440.932000 441.336000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 466.100000 453.336000 473.732000 441.336000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 473.696000 453.336000 477.500000 441.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 477.500000 453.336000 485.132000 441.336000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 509.500000 453.336000 517.132000 441.336000 1.000000 0.000000 0.000000 1.000000 8
+drawChar 517.096000 453.336000 520.900000 441.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 520.900000 453.336000 528.532000 441.336000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 219.800000 436.536000 228.980000 424.536000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 229.004000 436.536000 236.732000 424.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 236.708000 436.536000 243.800000 424.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 243.812000 436.536000 249.548000 424.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 249.512000 436.536000 255.248000 424.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 255.212000 436.536000 259.040000 424.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 259.016000 436.536000 266.108000 424.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 266.120000 436.536000 272.276000 424.536000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 377.600000 436.536000 385.232000 424.536000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 385.196000 436.536000 389.000000 424.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 389.000000 436.536000 396.632000 424.536000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 421.900000 436.536000 429.532000 424.536000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 429.496000 436.536000 433.300000 424.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 433.300000 436.536000 440.932000 424.536000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 466.100000 436.536000 473.732000 424.536000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 473.696000 436.536000 477.500000 424.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 477.500000 436.536000 485.132000 424.536000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 509.500000 436.536000 517.132000 424.536000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 517.096000 436.536000 520.900000 424.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 520.900000 436.536000 528.532000 424.536000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 219.800000 419.836000 228.464000 407.836000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 228.500000 419.836000 236.180000 407.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 236.204000 419.836000 243.884000 407.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 243.908000 419.836000 247.736000 407.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 247.712000 419.836000 254.804000 407.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 254.816000 419.836000 260.972000 407.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 370.000000 419.836000 377.632000 407.836000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 377.596000 419.836000 385.228000 407.836000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 385.192000 419.836000 388.996000 407.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 388.996000 419.836000 396.628000 407.836000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 414.300000 419.836000 421.932000 407.836000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 421.896000 419.836000 429.528000 407.836000 1.000000 0.000000 0.000000 1.000000 8
+drawChar 429.492000 419.836000 433.296000 407.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 433.296000 419.836000 440.928000 407.836000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 458.500000 419.836000 466.132000 407.836000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 466.096000 419.836000 473.728000 407.836000 1.000000 0.000000 0.000000 1.000000 8
+drawChar 473.692000 419.836000 477.496000 407.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 477.496000 419.836000 485.128000 407.836000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 501.900000 419.836000 509.532000 407.836000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 509.496000 419.836000 517.128000 407.836000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 517.092000 419.836000 520.896000 407.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 520.896000 419.836000 528.528000 407.836000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 108.100000 90.136000 116.164000 78.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 115.600000 90.136000 122.752000 78.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 122.800000 90.136000 130.480000 78.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 130.504000 90.136000 137.596000 78.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.608000 90.136000 141.412000 78.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 141.400000 90.136000 149.032000 78.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 148.996000 90.136000 156.628000 78.136000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 218.200000 488.200000 0 529.900000 488.200000 0 529.900000 488.300000 0 218.200000 488.300000 0 218.200000 488.200000 0
+eoFillPath subpath 1 353.800000 404.400000 0 353.900000 404.400000 0 353.900000 505.200000 0 353.800000 505.200000 0 353.800000 404.400000 0
+eoFillPath subpath 1 398.000000 404.400000 0 398.100000 404.400000 0 398.100000 505.200000 0 398.000000 505.200000 0 398.000000 404.400000 0
+eoFillPath subpath 1 442.200000 404.400000 0 442.300000 404.400000 0 442.300000 505.200000 0 442.200000 505.200000 0 442.200000 404.400000 0
+eoFillPath subpath 1 486.400000 404.400000 0 486.500000 404.400000 0 486.500000 505.200000 0 486.400000 505.200000 0 486.400000 404.400000 0
+eoFillPath subpath 1 218.200000 471.400000 0 529.900000 471.400000 0 529.900000 471.500000 0 218.200000 471.500000 0 218.200000 471.400000 0
+eoFillPath subpath 1 218.200000 454.700000 0 529.900000 454.700000 0 529.900000 454.800000 0 218.200000 454.800000 0 218.200000 454.700000 0
+eoFillPath subpath 1 218.200000 437.900000 0 529.900000 437.900000 0 529.900000 438.000000 0 218.200000 438.000000 0 218.200000 437.900000 0
+eoFillPath subpath 1 218.200000 421.200000 0 529.900000 421.200000 0 529.900000 421.300000 0 218.200000 421.300000 0 218.200000 421.200000 0
+eoFillPath subpath 1 218.200000 404.400000 0 218.300000 404.400000 0 218.300000 505.200000 0 218.200000 505.200000 0 218.200000 404.400000 0
+eoFillPath subpath 1 218.200000 505.100000 0 529.900000 505.100000 0 529.900000 505.200000 0 218.200000 505.200000 0 218.200000 505.100000 0
+eoFillPath subpath 1 529.800000 404.400000 0 529.900000 404.400000 0 529.900000 505.200000 0 529.800000 505.200000 0 529.800000 404.400000 0
+eoFillPath subpath 1 218.200000 404.400000 0 529.900000 404.400000 0 529.900000 404.500000 0 218.200000 404.500000 0 218.200000 404.400000 0
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 9971.200000 0 477.900000 9971.200000 0 477.900000 10281.000000 0 134.300000 10281.000000 0 134.300000 9971.200000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -917930.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 6982.200000 0 168.100000 6982.200000 0 168.100000 6987.200000 0 76.900000 6987.200000 0 76.900000 6982.200000 0
+eoFillPath subpath 1 163.100000 6987.100000 0 168.100000 6987.100000 0 168.100000 7117.700000 0 163.100000 7117.700000 0 163.100000 6987.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 6987.200000 0 163.100000 6987.200000 0 163.100000 7122.600000 0 72.000000 7122.600000 0 72.000000 6987.200000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 7118.280000 87.320000 7108.280000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 7118.280000 93.420000 7108.280000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 7118.280000 97.510000 7108.280000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 7118.280000 101.420000 7108.280000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 7118.280000 104.170000 7108.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 7118.280000 110.530000 7108.280000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 7118.280000 113.270000 7108.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 7118.280000 116.470000 7108.280000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 7118.280000 123.480000 7108.280000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 7118.280000 129.610000 7108.280000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 7118.280000 135.090000 7108.280000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 7118.280000 140.890000 7108.280000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 7118.280000 144.820000 7108.280000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 7118.280000 150.920000 7108.280000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 7118.280000 153.670000 7108.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 7118.280000 156.470000 7108.280000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 6991.400000 0 168.200000 6991.400000 0 168.200000 7106.600000 0 72.000000 7106.600000 0 72.000000 6991.400000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7059.552000 79.253000 7050.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 7059.552000 86.669000 7050.552000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 7059.552000 90.215000 7050.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 7059.552000 93.077000 7050.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 7059.552000 97.406000 7050.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 7059.552000 100.853000 7050.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 7059.552000 107.324000 7050.552000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 7059.552000 112.337000 7050.552000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 7059.552000 115.271000 7050.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 7059.552000 118.655000 7050.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 7059.552000 126.512000 7050.552000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 7059.552000 130.805000 7050.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 7059.552000 135.881000 7050.552000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 7059.552000 139.355000 7050.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 7059.552000 147.284000 7050.552000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 7059.552000 150.074000 7050.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 7059.552000 155.897000 7050.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 7059.552000 158.750000 7050.552000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 7059.552000 161.853000 7050.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7049.052000 82.124000 7040.052000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 7049.052000 87.137000 7040.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 7049.052000 90.071000 7040.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 7049.052000 93.356000 7040.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 7049.052000 100.403000 7040.052000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 7049.052000 104.921000 7040.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 7049.052000 109.205000 7040.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 7049.052000 117.737000 7040.052000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 7049.052000 123.119000 7040.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 7049.052000 128.996000 7040.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 7049.052000 132.605000 7040.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 7049.052000 138.392000 7040.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 7049.052000 141.749000 7040.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 7049.052000 149.507000 7040.052000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 7049.052000 153.800000 7040.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 7049.052000 158.876000 7040.052000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 7049.052000 161.853000 7040.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7038.552000 81.764000 7029.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 7038.552000 87.596000 7029.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 7038.552000 93.356000 7029.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 7038.552000 102.050000 7029.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 7038.552000 113.822000 7029.552000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 7038.552000 122.651000 7029.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 7038.552000 134.117000 7029.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 7038.552000 138.401000 7029.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 7038.552000 147.149000 7029.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 7038.552000 158.921000 7029.552000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 7038.552000 161.853000 7029.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7028.052000 79.271000 7019.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 7028.052000 84.338000 7019.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 7028.052000 89.621000 7019.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 7028.052000 94.643000 7019.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 7028.052000 100.502000 7019.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 7028.052000 106.262000 7019.052000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 7028.052000 111.518000 7019.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 7028.052000 116.216000 7019.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 7028.052000 119.249000 7019.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 7028.052000 122.363000 7019.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 7028.052000 128.186000 7019.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 7028.052000 131.345000 7019.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 7028.052000 137.060000 7019.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 7028.052000 140.147000 7019.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 7028.052000 145.007000 7019.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 7028.052000 148.598000 7019.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 7028.052000 151.460000 7019.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 7028.052000 155.789000 7019.052000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 7028.052000 158.933000 7019.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7017.552000 80.702000 7008.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 7017.552000 83.573000 7008.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 7017.552000 89.396000 7008.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 7017.552000 95.156000 7008.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 7017.552000 100.547000 7008.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 7017.552000 109.052000 7008.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 7017.552000 111.959000 7008.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 7017.552000 117.251000 7008.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 7017.552000 121.904000 7008.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 7017.552000 126.503000 7008.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 7017.552000 129.338000 7008.552000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 7017.552000 134.936000 7008.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 7017.552000 143.441000 7008.552000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 7017.552000 148.796000 7008.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 7017.552000 154.574000 7008.552000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 7017.552000 158.876000 7008.552000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 7017.552000 161.853000 7008.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7007.052000 79.271000 6998.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 7007.052000 85.094000 6998.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 7007.052000 88.703000 6998.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 7007.052000 94.112000 6998.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 7007.052000 97.244000 6998.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 7007.052000 103.058000 6998.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 7007.052000 108.890000 6998.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 7007.052000 111.950000 6998.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 7007.052000 115.271000 6998.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 7007.052000 120.338000 6998.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 7007.052000 125.621000 6998.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 7007.052000 131.363000 6998.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 7007.052000 134.558000 6998.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 7007.052000 140.048000 6998.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 7007.052000 145.430000 6998.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 7007.052000 150.551000 6998.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 7007.052000 155.960000 6998.052000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 7007.052000 158.933000 6998.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6996.552000 80.009000 6987.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 6996.552000 85.364000 6987.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 6996.552000 88.271000 6987.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 6996.552000 91.169000 6987.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 6996.552000 97.955000 6987.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 6996.552000 107.765000 6987.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 6996.552000 110.672000 6987.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 6996.552000 115.964000 6987.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 6996.552000 120.617000 6987.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 6996.552000 125.216000 6987.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 6996.552000 128.051000 6987.552000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 6996.552000 134.954000 6987.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 6996.552000 146.285000 6987.552000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 6996.552000 151.667000 6987.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 6996.552000 155.906000 6987.552000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 6996.552000 159.033000 6987.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 6987.100000 0 72.100000 6987.100000 0 72.100000 7122.600000 0 72.000000 7122.600000 0 72.000000 6987.100000 0
+eoFillPath subpath 1 163.100000 6987.100000 0 163.200000 6987.100000 0 163.200000 7122.600000 0 163.100000 7122.600000 0 163.100000 6987.100000 0
+eoFillPath subpath 1 72.000000 7122.500000 0 163.200000 7122.500000 0 163.200000 7122.600000 0 72.000000 7122.600000 0 72.000000 7122.500000 0
+eoFillPath subpath 1 72.000000 6987.100000 0 163.200000 6987.100000 0 163.200000 6987.200000 0 72.000000 6987.200000 0 72.000000 6987.100000 0
+saveState
+eoClipPath subpath 1 96.900000 7062.400000 0 138.300000 7062.400000 0 138.300000 7106.600000 0 96.900000 7106.600000 0 96.900000 7062.400000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -627050.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 6707.600000 0 165.500000 6707.600000 0 165.500000 6712.600000 0 76.900000 6712.600000 0 76.900000 6707.600000 0
+eoFillPath subpath 1 160.500000 6712.500000 0 165.500000 6712.500000 0 165.500000 6868.800000 0 160.500000 6868.800000 0 160.500000 6712.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 6712.600000 0 121.400000 6712.600000 0 121.400000 6873.700000 0 72.000000 6873.700000 0 72.000000 6712.600000 0
+saveState
+eoClipPath subpath 1 72.000000 6712.500000 0 160.500000 6712.500000 0 160.500000 6873.600000 0 72.000000 6873.600000 0 72.000000 6712.500000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -590350.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 6869.380000 89.280000 6859.380000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 6869.380000 95.630000 6859.380000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 6869.380000 99.520000 6859.380000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 6869.380000 102.270000 6859.380000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 6869.380000 108.450000 6859.380000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 6869.380000 112.610000 6859.380000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 6869.380000 118.510000 6859.380000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 6869.380000 121.670000 6859.380000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 6869.380000 124.470000 6859.380000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 6869.380000 130.830000 6859.380000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 6869.380000 133.970000 6859.380000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 6869.380000 137.920000 6859.380000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 6869.380000 144.230000 6859.380000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 6869.380000 150.350000 6859.380000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 6869.380000 153.570000 6859.380000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 6857.680000 95.000000 6847.680000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 6857.680000 97.770000 6847.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 6857.680000 103.000000 6847.680000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 6857.680000 109.330000 6847.680000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 6857.680000 117.470000 6847.680000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 6857.680000 123.620000 6847.680000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 6857.680000 128.800000 6847.680000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 6857.680000 135.130000 6847.680000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 6857.680000 141.250000 6847.680000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 6857.680000 145.410000 6847.680000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6842.852000 82.961000 6833.852000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 6842.852000 87.614000 6833.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 6842.852000 93.356000 6833.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 6842.852000 98.612000 6833.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 6842.852000 103.733000 6833.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 6842.852000 106.568000 6833.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 6842.852000 111.959000 6833.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 6842.852000 114.866000 6833.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 6842.852000 117.665000 6833.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 6842.852000 122.768000 6833.852000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 6842.852000 125.747000 6833.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 6842.852000 131.651000 6833.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 6842.852000 136.907000 6833.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 6842.852000 142.307000 6833.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 6842.852000 148.049000 6833.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 6842.852000 150.956000 6833.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 6842.852000 156.302000 6833.852000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6842.852000 159.253000 6833.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6832.352000 84.095000 6823.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 6832.352000 89.900000 6823.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 6832.352000 95.318000 6823.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 6832.352000 100.349000 6823.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 6832.352000 110.789000 6823.352000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 6832.352000 111.464000 6823.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 6832.352000 114.362000 6823.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 6832.352000 119.348000 6823.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 6832.352000 126.962000 6823.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 6832.352000 132.047000 6823.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 6832.352000 139.958000 6823.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 6832.352000 142.865000 6823.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 6832.352000 147.410000 6823.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 6832.352000 153.287000 6823.352000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 6832.352000 156.333000 6823.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6821.852000 84.095000 6812.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 6821.852000 89.468000 6812.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 6821.852000 94.121000 6812.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 6821.852000 99.899000 6812.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 6821.852000 105.218000 6812.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 6821.852000 109.502000 6812.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 6821.852000 115.649000 6812.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 6821.852000 122.327000 6812.852000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 6821.852000 127.718000 6812.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 6821.852000 132.002000 6812.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 6821.852000 138.149000 6812.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 6821.852000 145.205000 6812.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 6821.852000 150.992000 6812.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 6821.852000 156.311000 6812.852000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6821.852000 159.253000 6812.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6811.352000 82.394000 6802.352000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 6811.352000 86.705000 6802.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 6811.352000 91.322000 6802.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 6811.352000 94.913000 6802.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 6811.352000 98.054000 6802.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 6811.352000 102.014000 6802.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 6811.352000 104.876000 6802.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 6811.352000 113.435000 6802.352000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 6811.352000 118.718000 6802.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 6811.352000 121.949000 6802.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 6811.352000 125.063000 6802.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 6811.352000 130.886000 6802.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 6811.352000 134.045000 6802.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 6811.352000 138.005000 6802.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 6811.352000 143.792000 6802.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 6811.352000 149.111000 6802.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 6811.352000 151.964000 6802.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 6811.352000 156.293000 6802.352000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 6811.352000 159.153000 6802.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6800.852000 79.271000 6791.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 6800.852000 82.169000 6791.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 6800.852000 85.526000 6791.852000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 6800.852000 90.818000 6791.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 6800.852000 94.454000 6791.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 6800.852000 99.008000 6791.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 6800.852000 104.318000 6791.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 6800.852000 110.096000 6791.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 6800.852000 115.856000 6791.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 6800.852000 119.546000 6791.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 6800.852000 124.001000 6791.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 6800.852000 129.509000 6791.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 6800.852000 133.145000 6791.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 6800.852000 139.751000 6791.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 6800.852000 145.205000 6791.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 6800.852000 148.841000 6791.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 6800.852000 152.657000 6791.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 6800.852000 156.293000 6791.852000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6800.852000 159.253000 6791.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6790.352000 84.095000 6781.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 6790.352000 88.406000 6781.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 6790.352000 93.824000 6781.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 6790.352000 99.602000 6781.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 6790.352000 105.362000 6781.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 6790.352000 108.422000 6781.352000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 6790.352000 116.747000 6781.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 6790.352000 129.275000 6781.352000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 6790.352000 135.089000 6781.352000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 6790.352000 138.698000 6781.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 6790.352000 141.560000 6781.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 6790.352000 146.906000 6781.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 6790.352000 151.190000 6781.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 6790.352000 156.266000 6781.352000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6790.352000 159.253000 6781.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6779.852000 82.196000 6770.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 6779.852000 87.560000 6770.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 6779.852000 92.213000 6770.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 6779.852000 96.551000 6770.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 6779.852000 101.708000 6770.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 6779.852000 107.216000 6770.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 6779.852000 111.653000 6770.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 6779.852000 118.961000 6770.852000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 6779.852000 124.316000 6770.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 6779.852000 128.654000 6770.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 6779.852000 133.172000 6770.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 6779.852000 138.995000 6770.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 6779.852000 143.612000 6770.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 6779.852000 148.913000 6770.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 6779.852000 153.197000 6770.852000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 6779.852000 156.333000 6770.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6769.352000 80.009000 6760.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 6769.352000 85.319000 6760.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 6769.352000 91.061000 6760.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 6769.352000 100.052000 6760.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 6769.352000 113.993000 6760.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 6769.352000 116.873000 6760.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 6769.352000 120.410000 6760.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 6769.352000 126.296000 6760.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 6769.352000 135.350000 6760.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 6769.352000 145.106000 6760.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 6769.352000 150.893000 6760.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 6769.352000 156.212000 6760.352000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6769.352000 159.253000 6760.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6758.852000 82.196000 6749.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 6758.852000 87.560000 6749.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 6758.852000 93.392000 6749.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 6758.852000 99.152000 6749.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 6758.852000 101.960000 6749.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 6758.852000 107.306000 6749.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 6758.852000 111.905000 6749.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 6758.852000 115.640000 6749.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 6758.852000 122.444000 6749.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 6758.852000 127.898000 6749.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 6758.852000 135.575000 6749.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 6758.852000 141.380000 6749.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 6758.852000 145.241000 6749.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 6758.852000 150.803000 6749.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 6758.852000 156.302000 6749.852000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6758.852000 159.253000 6749.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6748.352000 80.009000 6739.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 6748.352000 85.796000 6739.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 6748.352000 91.115000 6739.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 6748.352000 95.399000 6739.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 6748.352000 100.718000 6739.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 6748.352000 107.054000 6739.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 6748.352000 118.097000 6739.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 6748.352000 123.524000 6739.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 6748.352000 129.401000 6739.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 6748.352000 131.768000 6739.352000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 6748.352000 135.413000 6739.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 6748.352000 141.659000 6739.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 6748.352000 150.965000 6739.352000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 6748.352000 156.320000 6739.352000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6748.352000 159.253000 6739.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6737.852000 81.017000 6728.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 6737.852000 84.608000 6728.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 6737.852000 89.963000 6728.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 6737.852000 92.870000 6728.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 6737.852000 98.693000 6728.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 6737.852000 103.310000 6728.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 6737.852000 107.243000 6728.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 6737.852000 116.081000 6728.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 6737.852000 121.886000 6728.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 6737.852000 127.205000 6728.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 6737.852000 132.983000 6728.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 6737.852000 136.943000 6728.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 6737.852000 143.846000 6728.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 6737.852000 148.184000 6728.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 6737.852000 153.260000 6728.852000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 6737.852000 156.433000 6728.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6727.352000 79.271000 6718.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 6727.352000 85.094000 6718.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 6727.352000 90.854000 6718.352000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 6727.352000 93.653000 6718.352000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 6712.500000 0 72.100000 6712.500000 0 72.100000 6873.700000 0 72.000000 6873.700000 0 72.000000 6712.500000 0
+eoFillPath subpath 1 160.500000 6712.500000 0 160.600000 6712.500000 0 160.600000 6873.700000 0 160.500000 6873.700000 0 160.500000 6712.500000 0
+eoFillPath subpath 1 72.000000 6873.600000 0 160.600000 6873.600000 0 160.600000 6873.700000 0 72.000000 6873.700000 0 72.000000 6873.600000 0
+eoFillPath subpath 1 72.000000 6712.500000 0 160.600000 6712.500000 0 160.600000 6712.600000 0 72.000000 6712.600000 0 72.000000 6712.500000 0
+saveState
+eoClipPath subpath 1 108.000000 6225.100000 0 178.900000 6225.100000 0 178.900000 6281.800000 0 108.000000 6281.800000 0 108.000000 6225.100000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -543320.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 2166.800000 0 165.500000 2166.800000 0 165.500000 2171.800000 0 76.900000 2171.800000 0 76.900000 2166.800000 0
+eoFillPath subpath 1 160.500000 2171.700000 0 165.500000 2171.700000 0 165.500000 2280.500000 0 160.500000 2280.500000 0 160.500000 2171.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 2171.800000 0 160.500000 2171.800000 0 160.500000 2285.400000 0 72.000000 2285.400000 0 72.000000 2171.800000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2281.052000 83.771000 2272.052000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 2281.052000 89.594000 2272.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 2281.052000 92.465000 2272.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 2281.052000 97.568000 2272.052000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 2281.052000 100.943000 2272.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 2281.052000 106.955000 2272.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 2281.052000 110.447000 2272.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 2281.052000 114.425000 2272.052000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 2281.052000 119.717000 2272.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 2281.052000 127.493000 2272.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 2281.052000 130.949000 2272.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 2281.052000 136.574000 2272.052000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 2281.052000 141.920000 2272.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 2281.052000 147.365000 2272.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 2281.052000 151.703000 2272.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 2281.052000 156.320000 2272.052000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 2281.052000 159.153000 2272.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2270.552000 81.764000 2261.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 2270.552000 85.130000 2261.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 2270.552000 88.712000 2261.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 2270.552000 94.022000 2261.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 2270.552000 98.306000 2261.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 2270.552000 102.455000 2261.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 2270.552000 106.676000 2261.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 2270.552000 110.312000 2261.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 2270.552000 114.920000 2261.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 2270.552000 119.060000 2261.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 2270.552000 125.450000 2261.552000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 2270.552000 130.832000 2261.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 2270.552000 139.445000 2261.552000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 2270.552000 145.169000 2261.552000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 2270.552000 148.076000 2261.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 2270.552000 153.323000 2261.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 2270.552000 156.433000 2261.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2260.052000 80.009000 2251.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 2260.052000 82.871000 2251.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 2260.052000 88.316000 2251.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 2260.052000 94.094000 2251.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 2260.052000 96.947000 2251.052000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 2260.052000 104.948000 2251.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 2260.052000 113.705000 2251.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 2260.052000 119.492000 2251.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 2260.052000 124.811000 2251.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 2260.052000 132.848000 2251.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 2260.052000 141.605000 2251.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 2260.052000 144.467000 2251.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 2260.052000 148.103000 2251.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 2260.052000 150.965000 2251.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 2260.052000 156.311000 2251.052000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2260.052000 159.253000 2251.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2249.552000 80.999000 2240.552000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 2249.552000 90.539000 2240.552000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 2249.552000 95.318000 2240.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 2249.552000 99.602000 2240.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 2249.552000 102.473000 2240.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 2249.552000 108.260000 2240.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 2249.552000 110.762000 2240.552000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 2249.552000 115.316000 2240.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 2249.552000 122.156000 2240.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 2249.552000 132.299000 2240.552000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 2249.552000 136.970000 2240.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 2249.552000 139.877000 2240.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 2249.552000 142.775000 2240.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 2249.552000 148.022000 2240.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 2249.552000 152.720000 2240.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 2249.552000 156.311000 2240.552000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2249.552000 159.253000 2240.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2239.052000 83.006000 2230.052000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 2239.052000 88.793000 2230.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 2239.052000 91.664000 2230.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 2239.052000 94.562000 2230.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 2239.052000 100.349000 2230.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 2239.052000 103.157000 2230.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 2239.052000 108.980000 2230.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 2239.052000 114.740000 2230.052000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 2239.052000 119.375000 2230.052000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 2239.052000 128.033000 2230.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 2239.052000 141.479000 2230.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 2239.052000 146.807000 2230.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 2239.052000 152.684000 2230.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 2239.052000 156.293000 2230.052000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2239.052000 159.253000 2230.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2228.552000 79.730000 2219.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 2228.552000 84.005000 2219.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 2228.552000 89.423000 2219.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 2228.552000 98.036000 2219.552000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 2228.552000 121.157000 2219.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 2228.552000 145.115000 2219.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 2228.552000 151.001000 2219.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 2228.552000 156.320000 2219.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 2228.552000 159.253000 2219.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2218.052000 83.285000 2209.052000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 2218.052000 89.099000 2209.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 2218.052000 93.401000 2209.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 2218.052000 98.477000 2209.052000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 2218.052000 103.121000 2209.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 2218.052000 105.974000 2209.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 2218.052000 111.320000 2209.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 2218.052000 115.604000 2209.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 2218.052000 123.857000 2209.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 2218.052000 136.007000 2209.052000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 2218.052000 141.794000 2209.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 2218.052000 144.665000 2209.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 2218.052000 147.464000 2209.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 2218.052000 153.251000 2209.052000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 2218.052000 156.433000 2209.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2207.552000 79.271000 2198.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 2207.552000 85.094000 2198.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 2207.552000 90.854000 2198.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 2207.552000 96.146000 2198.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 2207.552000 102.302000 2198.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 2207.552000 107.711000 2198.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 2207.552000 113.048000 2198.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 2207.552000 119.204000 2198.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 2207.552000 124.991000 2198.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 2207.552000 130.310000 2198.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 2207.552000 135.647000 2198.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 2207.552000 144.755000 2198.552000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 2207.552000 153.323000 2198.552000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 2207.552000 156.333000 2198.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2197.052000 82.160000 2188.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 2197.052000 85.067000 2188.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 2197.052000 89.297000 2188.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 2197.052000 94.616000 2188.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 2197.052000 98.747000 2188.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 2197.052000 106.055000 2188.052000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 2197.052000 109.700000 2188.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 2197.052000 115.055000 2188.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 2197.052000 118.601000 2188.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 2197.052000 124.010000 2188.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 2197.052000 128.042000 2188.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 2197.052000 135.998000 2188.052000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 2197.052000 141.785000 2188.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 2197.052000 144.656000 2188.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 2197.052000 147.554000 2188.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 2197.052000 153.341000 2188.052000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 2197.052000 156.433000 2188.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2186.552000 79.271000 2177.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 2186.552000 85.094000 2177.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 2186.552000 90.854000 2177.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 2186.552000 93.743000 2177.552000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 2171.700000 0 72.100000 2171.700000 0 72.100000 2285.400000 0 72.000000 2285.400000 0 72.000000 2171.700000 0
+eoFillPath subpath 1 160.500000 2171.700000 0 160.600000 2171.700000 0 160.600000 2285.400000 0 160.500000 2285.400000 0 160.500000 2171.700000 0
+eoFillPath subpath 1 72.000000 2285.300000 0 160.600000 2285.300000 0 160.600000 2285.400000 0 72.000000 2285.400000 0 72.000000 2285.300000 0
+eoFillPath subpath 1 72.000000 2171.700000 0 160.600000 2171.700000 0 160.600000 2171.800000 0 72.000000 2171.800000 0 72.000000 2171.700000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 8361.200000 0 169.600000 8361.200000 0 169.600000 8366.200000 0 76.900000 8366.200000 0 76.900000 8361.200000 0
+eoFillPath subpath 1 164.600000 8366.100000 0 169.600000 8366.100000 0 169.600000 8481.700000 0 164.600000 8481.700000 0 164.600000 8366.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 8366.200000 0 121.400000 8366.200000 0 121.400000 8486.600000 0 72.000000 8486.600000 0 72.000000 8366.200000 0
+saveState
+eoClipPath subpath 1 72.000000 8366.100000 0 164.600000 8366.100000 0 164.600000 8486.500000 0 72.000000 8486.500000 0 72.000000 8366.100000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -751590.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 8436.100000 0 93.700000 8436.100000 0 93.700000 8455.300000 0 72.000000 8455.300000 0 72.000000 8436.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 8436.100000 0 169.600000 8436.100000 0 169.600000 8455.300000 0 93.700000 8455.300000 0 93.700000 8436.100000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 8419.400000 0 93.700000 8419.400000 0 93.700000 8436.100000 0 72.000000 8436.100000 0 72.000000 8419.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 8419.400000 0 169.600000 8419.400000 0 169.600000 8436.100000 0 93.700000 8436.100000 0 93.700000 8419.400000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 8400.200000 0 93.700000 8400.200000 0 93.700000 8419.400000 0 72.000000 8419.400000 0 72.000000 8400.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 8400.200000 0 169.600000 8400.200000 0 169.600000 8419.400000 0 93.700000 8419.400000 0 93.700000 8400.200000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 8381.000000 0 93.700000 8381.000000 0 93.700000 8400.200000 0 72.000000 8400.200000 0 72.000000 8381.000000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 8381.000000 0 169.600000 8381.000000 0 169.600000 8400.200000 0 93.700000 8400.200000 0 93.700000 8381.000000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8482.252000 82.898000 8473.252000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 8482.252000 87.200000 8473.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 8482.252000 90.809000 8473.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 8482.252000 93.671000 8473.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 8482.252000 98.315000 8473.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 8482.252000 101.906000 8473.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 8482.252000 106.514000 8473.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 8482.252000 109.754000 8473.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 8482.252000 112.868000 8473.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 8482.252000 118.691000 8473.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 8482.252000 121.850000 8473.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 8482.252000 125.702000 8473.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 8482.252000 131.588000 8473.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 8482.252000 136.907000 8473.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 8482.252000 140.039000 8473.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 8482.252000 146.078000 8473.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 8482.252000 151.442000 8473.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 8482.252000 154.349000 8473.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 8482.252000 157.148000 8473.252000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 8482.252000 160.433000 8473.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8471.752000 84.095000 8462.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 8471.752000 89.468000 8462.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 8471.752000 94.580000 8462.752000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 8471.752000 97.631000 8462.752000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 8451.352000 104.443000 8442.352000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 8451.352000 109.060000 8442.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 8451.352000 113.398000 8442.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 8451.352000 119.194000 8442.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 8451.352000 124.612000 8442.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 8451.352000 127.465000 8442.352000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 8434.652000 101.176000 8425.652000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 8434.652000 104.074000 8425.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 8434.652000 109.420000 8425.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 8434.652000 114.442000 8425.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 8434.652000 120.202000 8425.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 8434.652000 123.811000 8425.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 8434.652000 129.121000 8425.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 8434.652000 134.899000 8425.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 8434.652000 139.516000 8425.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 8434.652000 143.107000 8425.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 8434.652000 148.417000 8425.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 8434.652000 151.270000 8425.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 8434.652000 157.093000 8425.652000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 8417.952000 103.048000 8408.952000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 8417.952000 108.421000 8408.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 8417.952000 113.443000 8408.952000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 8417.952000 118.852000 8408.952000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 8417.952000 124.702000 8408.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 8417.952000 130.021000 8408.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 8417.952000 135.079000 8408.952000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 8398.752000 104.407000 8389.752000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 8398.752000 109.816000 8389.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 8398.752000 115.594000 8389.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 8398.752000 121.354000 8389.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 8398.752000 125.692000 8389.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 8398.752000 128.563000 8389.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 8398.752000 133.954000 8389.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 8398.752000 139.786000 8389.752000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 8366.100000 0 72.100000 8366.100000 0 72.100000 8486.600000 0 72.000000 8486.600000 0 72.000000 8366.100000 0
+eoFillPath subpath 1 164.600000 8366.100000 0 164.700000 8366.100000 0 164.700000 8486.600000 0 164.600000 8486.600000 0 164.600000 8366.100000 0
+eoFillPath subpath 1 72.000000 8486.500000 0 164.700000 8486.500000 0 164.700000 8486.600000 0 72.000000 8486.600000 0 72.000000 8486.500000 0
+eoFillPath subpath 1 72.000000 8366.100000 0 164.700000 8366.100000 0 164.700000 8366.200000 0 72.000000 8366.200000 0 72.000000 8366.100000 0
+eoFillPath subpath 1 91.300000 8381.000000 0 93.700000 8381.000000 0 93.700000 8455.300000 0 91.300000 8455.300000 0 91.300000 8381.000000 0
+eoFillPath subpath 1 72.000000 8400.200000 0 169.600000 8400.200000 0 169.600000 8402.600000 0 72.000000 8402.600000 0 72.000000 8400.200000 0
+eoFillPath subpath 1 72.000000 8452.900000 0 169.600000 8452.900000 0 169.600000 8455.300000 0 72.000000 8455.300000 0 72.000000 8452.900000 0
+eoFillPath subpath 1 72.000000 8381.000000 0 169.600000 8381.000000 0 169.600000 8383.400000 0 72.000000 8383.400000 0 72.000000 8381.000000 0
+saveState
+eoClipPath subpath 1 108.000000 515.000000 0 150.800000 515.000000 0 150.800000 559.200000 0 108.000000 559.200000 0 108.000000 515.000000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 27700.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 -335.000000 0 499.600000 -335.000000 0 499.600000 -329.900000 0 186.800000 -329.900000 0 186.800000 -335.000000 0
+eoFillPath subpath 1 494.500000 -330.000000 0 499.600000 -330.000000 0 499.600000 -141.600000 0 494.500000 -141.600000 0 494.500000 -330.000000 0
+saveState
+eoClipPath subpath 1 181.800000 -329.900000 0 494.500000 -329.900000 0 494.500000 -136.600000 0 181.800000 -136.600000 0 181.800000 -329.900000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 -136.500000 0 494.500000 -136.500000 0 494.500000 -136.500000 0 181.700000 -136.500000 0
+eoFillPath subpath 1 181.700000 -136.500000 0 494.500000 -136.500000 0 494.500000 -137.300000 0 181.700000 -137.300000 0 181.700000 -136.500000 0
+eoFillPath subpath 1 181.700000 -137.300000 0 494.500000 -137.300000 0 494.500000 -138.000000 0 181.700000 -138.000000 0 181.700000 -137.300000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 -138.000000 0 494.500000 -138.000000 0 494.500000 -138.800000 0 181.700000 -138.800000 0 181.700000 -138.000000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 -138.800000 0 494.500000 -138.800000 0 494.500000 -139.600000 0 181.700000 -139.600000 0 181.700000 -138.800000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 -139.600000 0 494.500000 -139.600000 0 494.500000 -140.300000 0 181.700000 -140.300000 0 181.700000 -139.600000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 -140.300000 0 494.500000 -140.300000 0 494.500000 -141.100000 0 181.700000 -141.100000 0 181.700000 -140.300000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 -141.100000 0 494.500000 -141.100000 0 494.500000 -141.800000 0 181.700000 -141.800000 0 181.700000 -141.100000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 -141.800000 0 494.500000 -141.800000 0 494.500000 -142.600000 0 181.700000 -142.600000 0 181.700000 -141.800000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 -142.600000 0 494.500000 -142.600000 0 494.500000 -143.300000 0 181.700000 -143.300000 0 181.700000 -142.600000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 -143.300000 0 494.500000 -143.300000 0 494.500000 -144.100000 0 181.700000 -144.100000 0 181.700000 -143.300000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 -144.100000 0 494.500000 -144.100000 0 494.500000 -144.900000 0 181.700000 -144.900000 0 181.700000 -144.100000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 -144.900000 0 494.500000 -144.900000 0 494.500000 -145.600000 0 181.700000 -145.600000 0 181.700000 -144.900000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 -145.600000 0 494.500000 -145.600000 0 494.500000 -146.400000 0 181.700000 -146.400000 0 181.700000 -145.600000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 -146.400000 0 494.500000 -146.400000 0 494.500000 -147.100000 0 181.700000 -147.100000 0 181.700000 -146.400000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 -147.100000 0 494.500000 -147.100000 0 494.500000 -147.900000 0 181.700000 -147.900000 0 181.700000 -147.100000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 -147.900000 0 494.500000 -147.900000 0 494.500000 -148.700000 0 181.700000 -148.700000 0 181.700000 -147.900000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 -148.700000 0 494.500000 -148.700000 0 494.500000 -149.400000 0 181.700000 -149.400000 0 181.700000 -148.700000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 -149.400000 0 494.500000 -149.400000 0 494.500000 -150.200000 0 181.700000 -150.200000 0 181.700000 -149.400000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 -150.200000 0 494.500000 -150.200000 0 494.500000 -150.900000 0 181.700000 -150.900000 0 181.700000 -150.200000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 -150.900000 0 494.500000 -150.900000 0 494.500000 -151.700000 0 181.700000 -151.700000 0 181.700000 -150.900000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 -151.700000 0 494.500000 -151.700000 0 494.500000 -152.500000 0 181.700000 -152.500000 0 181.700000 -151.700000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 -152.500000 0 494.500000 -152.500000 0 494.500000 -153.200000 0 181.700000 -153.200000 0 181.700000 -152.500000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 -153.200000 0 494.500000 -153.200000 0 494.500000 -154.000000 0 181.700000 -154.000000 0 181.700000 -153.200000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 -154.000000 0 494.500000 -154.000000 0 494.500000 -154.700000 0 181.700000 -154.700000 0 181.700000 -154.000000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 -154.700000 0 494.500000 -154.700000 0 494.500000 -155.500000 0 181.700000 -155.500000 0 181.700000 -154.700000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 -155.500000 0 494.500000 -155.500000 0 494.500000 -156.200000 0 181.700000 -156.200000 0 181.700000 -155.500000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 -156.200000 0 494.500000 -156.200000 0 494.500000 -157.000000 0 181.700000 -157.000000 0 181.700000 -156.200000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 -157.000000 0 494.500000 -157.000000 0 494.500000 -157.800000 0 181.700000 -157.800000 0 181.700000 -157.000000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 -157.800000 0 494.500000 -157.800000 0 494.500000 -158.500000 0 181.700000 -158.500000 0 181.700000 -157.800000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 -158.500000 0 494.500000 -158.500000 0 494.500000 -159.300000 0 181.700000 -159.300000 0 181.700000 -158.500000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 -159.300000 0 494.500000 -159.300000 0 494.500000 -160.000000 0 181.700000 -160.000000 0 181.700000 -159.300000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 -160.000000 0 494.500000 -160.000000 0 494.500000 -160.800000 0 181.700000 -160.800000 0 181.700000 -160.000000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 -160.800000 0 494.500000 -160.800000 0 494.500000 -161.600000 0 181.700000 -161.600000 0 181.700000 -160.800000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 -161.600000 0 494.500000 -161.600000 0 494.500000 -162.300000 0 181.700000 -162.300000 0 181.700000 -161.600000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 -162.300000 0 494.500000 -162.300000 0 494.500000 -163.100000 0 181.700000 -163.100000 0 181.700000 -162.300000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 -163.100000 0 494.500000 -163.100000 0 494.500000 -163.800000 0 181.700000 -163.800000 0 181.700000 -163.100000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 -163.800000 0 494.500000 -163.800000 0 494.500000 -164.600000 0 181.700000 -164.600000 0 181.700000 -163.800000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 -164.600000 0 494.500000 -164.600000 0 494.500000 -165.400000 0 181.700000 -165.400000 0 181.700000 -164.600000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 -165.400000 0 494.500000 -165.400000 0 494.500000 -166.100000 0 181.700000 -166.100000 0 181.700000 -165.400000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 -166.100000 0 494.500000 -166.100000 0 494.500000 -166.900000 0 181.700000 -166.900000 0 181.700000 -166.100000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 -166.900000 0 494.500000 -166.900000 0 494.500000 -167.600000 0 181.700000 -167.600000 0 181.700000 -166.900000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 -167.600000 0 494.500000 -167.600000 0 494.500000 -168.400000 0 181.700000 -168.400000 0 181.700000 -167.600000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 -168.400000 0 494.500000 -168.400000 0 494.500000 -169.100000 0 181.700000 -169.100000 0 181.700000 -168.400000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 -169.100000 0 494.500000 -169.100000 0 494.500000 -169.900000 0 181.700000 -169.900000 0 181.700000 -169.100000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 -169.900000 0 494.500000 -169.900000 0 494.500000 -170.700000 0 181.700000 -170.700000 0 181.700000 -169.900000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 -170.700000 0 494.500000 -170.700000 0 494.500000 -171.400000 0 181.700000 -171.400000 0 181.700000 -170.700000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 -171.400000 0 494.500000 -171.400000 0 494.500000 -172.200000 0 181.700000 -172.200000 0 181.700000 -171.400000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 -172.200000 0 494.500000 -172.200000 0 494.500000 -172.900000 0 181.700000 -172.900000 0 181.700000 -172.200000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 -172.900000 0 494.500000 -172.900000 0 494.500000 -173.700000 0 181.700000 -173.700000 0 181.700000 -172.900000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 -173.700000 0 494.500000 -173.700000 0 494.500000 -174.500000 0 181.700000 -174.500000 0 181.700000 -173.700000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 -174.500000 0 494.500000 -174.500000 0 494.500000 -175.200000 0 181.700000 -175.200000 0 181.700000 -174.500000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 -175.200000 0 494.500000 -175.200000 0 494.500000 -176.000000 0 181.700000 -176.000000 0 181.700000 -175.200000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 -176.000000 0 494.500000 -176.000000 0 494.500000 -176.700000 0 181.700000 -176.700000 0 181.700000 -176.000000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 -176.700000 0 494.500000 -176.700000 0 494.500000 -177.500000 0 181.700000 -177.500000 0 181.700000 -176.700000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 -177.500000 0 494.500000 -177.500000 0 494.500000 -178.300000 0 181.700000 -178.300000 0 181.700000 -177.500000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 -178.300000 0 494.500000 -178.300000 0 494.500000 -179.000000 0 181.700000 -179.000000 0 181.700000 -178.300000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 -179.000000 0 494.500000 -179.000000 0 494.500000 -179.800000 0 181.700000 -179.800000 0 181.700000 -179.000000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 -179.800000 0 494.500000 -179.800000 0 494.500000 -180.500000 0 181.700000 -180.500000 0 181.700000 -179.800000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 -180.500000 0 494.500000 -180.500000 0 494.500000 -181.300000 0 181.700000 -181.300000 0 181.700000 -180.500000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 -181.300000 0 494.500000 -181.300000 0 494.500000 -182.000000 0 181.700000 -182.000000 0 181.700000 -181.300000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 -182.000000 0 494.500000 -182.000000 0 494.500000 -182.800000 0 181.700000 -182.800000 0 181.700000 -182.000000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 -182.800000 0 494.500000 -182.800000 0 494.500000 -183.600000 0 181.700000 -183.600000 0 181.700000 -182.800000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 -183.600000 0 494.500000 -183.600000 0 494.500000 -184.300000 0 181.700000 -184.300000 0 181.700000 -183.600000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 -184.300000 0 494.500000 -184.300000 0 494.500000 -185.100000 0 181.700000 -185.100000 0 181.700000 -184.300000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 -185.100000 0 494.500000 -185.100000 0 494.500000 -185.800000 0 181.700000 -185.800000 0 181.700000 -185.100000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 -185.800000 0 494.500000 -185.800000 0 494.500000 -186.600000 0 181.700000 -186.600000 0 181.700000 -185.800000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 -186.600000 0 494.500000 -186.600000 0 494.500000 -187.400000 0 181.700000 -187.400000 0 181.700000 -186.600000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 -187.400000 0 494.500000 -187.400000 0 494.500000 -188.100000 0 181.700000 -188.100000 0 181.700000 -187.400000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 -188.100000 0 494.500000 -188.100000 0 494.500000 -188.900000 0 181.700000 -188.900000 0 181.700000 -188.100000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 -188.900000 0 494.500000 -188.900000 0 494.500000 -189.600000 0 181.700000 -189.600000 0 181.700000 -188.900000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 -189.600000 0 494.500000 -189.600000 0 494.500000 -190.400000 0 181.700000 -190.400000 0 181.700000 -189.600000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 -190.400000 0 494.500000 -190.400000 0 494.500000 -191.200000 0 181.700000 -191.200000 0 181.700000 -190.400000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 -191.200000 0 494.500000 -191.200000 0 494.500000 -191.900000 0 181.700000 -191.900000 0 181.700000 -191.200000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 -191.900000 0 494.500000 -191.900000 0 494.500000 -192.700000 0 181.700000 -192.700000 0 181.700000 -191.900000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 -192.700000 0 494.500000 -192.700000 0 494.500000 -193.400000 0 181.700000 -193.400000 0 181.700000 -192.700000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 -193.400000 0 494.500000 -193.400000 0 494.500000 -194.200000 0 181.700000 -194.200000 0 181.700000 -193.400000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 -194.200000 0 494.500000 -194.200000 0 494.500000 -194.900000 0 181.700000 -194.900000 0 181.700000 -194.200000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 -194.900000 0 494.500000 -194.900000 0 494.500000 -195.700000 0 181.700000 -195.700000 0 181.700000 -194.900000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 -195.700000 0 494.500000 -195.700000 0 494.500000 -196.500000 0 181.700000 -196.500000 0 181.700000 -195.700000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 -196.500000 0 494.500000 -196.500000 0 494.500000 -197.200000 0 181.700000 -197.200000 0 181.700000 -196.500000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 -197.200000 0 494.500000 -197.200000 0 494.500000 -198.000000 0 181.700000 -198.000000 0 181.700000 -197.200000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 -198.000000 0 494.500000 -198.000000 0 494.500000 -198.700000 0 181.700000 -198.700000 0 181.700000 -198.000000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 -198.700000 0 494.500000 -198.700000 0 494.500000 -199.500000 0 181.700000 -199.500000 0 181.700000 -198.700000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 -199.500000 0 494.500000 -199.500000 0 494.500000 -200.300000 0 181.700000 -200.300000 0 181.700000 -199.500000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 -200.300000 0 494.500000 -200.300000 0 494.500000 -201.000000 0 181.700000 -201.000000 0 181.700000 -200.300000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 -201.000000 0 494.500000 -201.000000 0 494.500000 -201.800000 0 181.700000 -201.800000 0 181.700000 -201.000000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 -201.800000 0 494.500000 -201.800000 0 494.500000 -202.500000 0 181.700000 -202.500000 0 181.700000 -201.800000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 -202.500000 0 494.500000 -202.500000 0 494.500000 -203.300000 0 181.700000 -203.300000 0 181.700000 -202.500000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 -203.300000 0 494.500000 -203.300000 0 494.500000 -204.100000 0 181.700000 -204.100000 0 181.700000 -203.300000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 -204.100000 0 494.500000 -204.100000 0 494.500000 -204.800000 0 181.700000 -204.800000 0 181.700000 -204.100000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 -204.800000 0 494.500000 -204.800000 0 494.500000 -205.600000 0 181.700000 -205.600000 0 181.700000 -204.800000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 -205.600000 0 494.500000 -205.600000 0 494.500000 -206.300000 0 181.700000 -206.300000 0 181.700000 -205.600000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 -206.300000 0 494.500000 -206.300000 0 494.500000 -207.100000 0 181.700000 -207.100000 0 181.700000 -206.300000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 -207.100000 0 494.500000 -207.100000 0 494.500000 -207.800000 0 181.700000 -207.800000 0 181.700000 -207.100000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 -207.800000 0 494.500000 -207.800000 0 494.500000 -208.600000 0 181.700000 -208.600000 0 181.700000 -207.800000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 -208.600000 0 494.500000 -208.600000 0 494.500000 -209.400000 0 181.700000 -209.400000 0 181.700000 -208.600000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 -209.400000 0 494.500000 -209.400000 0 494.500000 -210.100000 0 181.700000 -210.100000 0 181.700000 -209.400000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 -210.100000 0 494.500000 -210.100000 0 494.500000 -210.900000 0 181.700000 -210.900000 0 181.700000 -210.100000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 -210.900000 0 494.500000 -210.900000 0 494.500000 -211.600000 0 181.700000 -211.600000 0 181.700000 -210.900000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 -211.600000 0 494.500000 -211.600000 0 494.500000 -212.400000 0 181.700000 -212.400000 0 181.700000 -211.600000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 -212.400000 0 494.500000 -212.400000 0 494.500000 -213.200000 0 181.700000 -213.200000 0 181.700000 -212.400000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 -213.200000 0 494.500000 -213.200000 0 494.500000 -213.900000 0 181.700000 -213.900000 0 181.700000 -213.200000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 -213.900000 0 494.500000 -213.900000 0 494.500000 -214.700000 0 181.700000 -214.700000 0 181.700000 -213.900000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 -214.700000 0 494.500000 -214.700000 0 494.500000 -215.400000 0 181.700000 -215.400000 0 181.700000 -214.700000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 -215.400000 0 494.500000 -215.400000 0 494.500000 -216.200000 0 181.700000 -216.200000 0 181.700000 -215.400000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 -216.200000 0 494.500000 -216.200000 0 494.500000 -217.000000 0 181.700000 -217.000000 0 181.700000 -216.200000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 -217.000000 0 494.500000 -217.000000 0 494.500000 -217.700000 0 181.700000 -217.700000 0 181.700000 -217.000000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 -217.700000 0 494.500000 -217.700000 0 494.500000 -218.500000 0 181.700000 -218.500000 0 181.700000 -217.700000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 -218.500000 0 494.500000 -218.500000 0 494.500000 -219.200000 0 181.700000 -219.200000 0 181.700000 -218.500000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 -219.200000 0 494.500000 -219.200000 0 494.500000 -220.000000 0 181.700000 -220.000000 0 181.700000 -219.200000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 -220.000000 0 494.500000 -220.000000 0 494.500000 -220.700000 0 181.700000 -220.700000 0 181.700000 -220.000000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 -220.700000 0 494.500000 -220.700000 0 494.500000 -221.500000 0 181.700000 -221.500000 0 181.700000 -220.700000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 -221.500000 0 494.500000 -221.500000 0 494.500000 -222.300000 0 181.700000 -222.300000 0 181.700000 -221.500000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 -222.300000 0 494.500000 -222.300000 0 494.500000 -223.000000 0 181.700000 -223.000000 0 181.700000 -222.300000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 -223.000000 0 494.500000 -223.000000 0 494.500000 -223.800000 0 181.700000 -223.800000 0 181.700000 -223.000000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 -223.800000 0 494.500000 -223.800000 0 494.500000 -224.500000 0 181.700000 -224.500000 0 181.700000 -223.800000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 -224.500000 0 494.500000 -224.500000 0 494.500000 -225.300000 0 181.700000 -225.300000 0 181.700000 -224.500000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 -225.300000 0 494.500000 -225.300000 0 494.500000 -226.100000 0 181.700000 -226.100000 0 181.700000 -225.300000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 -226.100000 0 494.500000 -226.100000 0 494.500000 -226.800000 0 181.700000 -226.800000 0 181.700000 -226.100000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 -226.800000 0 494.500000 -226.800000 0 494.500000 -227.600000 0 181.700000 -227.600000 0 181.700000 -226.800000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 -227.600000 0 494.500000 -227.600000 0 494.500000 -228.300000 0 181.700000 -228.300000 0 181.700000 -227.600000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 -228.300000 0 494.500000 -228.300000 0 494.500000 -229.100000 0 181.700000 -229.100000 0 181.700000 -228.300000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 -229.100000 0 494.500000 -229.100000 0 494.500000 -229.900000 0 181.700000 -229.900000 0 181.700000 -229.100000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 -229.900000 0 494.500000 -229.900000 0 494.500000 -230.600000 0 181.700000 -230.600000 0 181.700000 -229.900000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 -230.600000 0 494.500000 -230.600000 0 494.500000 -231.400000 0 181.700000 -231.400000 0 181.700000 -230.600000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 -231.400000 0 494.500000 -231.400000 0 494.500000 -232.100000 0 181.700000 -232.100000 0 181.700000 -231.400000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 -232.100000 0 494.500000 -232.100000 0 494.500000 -232.900000 0 181.700000 -232.900000 0 181.700000 -232.100000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 -232.900000 0 494.500000 -232.900000 0 494.500000 -233.600000 0 181.700000 -233.600000 0 181.700000 -232.900000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 -233.600000 0 494.500000 -233.600000 0 494.500000 -234.400000 0 181.700000 -234.400000 0 181.700000 -233.600000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 -234.400000 0 494.500000 -234.400000 0 494.500000 -235.200000 0 181.700000 -235.200000 0 181.700000 -234.400000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 -235.200000 0 494.500000 -235.200000 0 494.500000 -235.900000 0 181.700000 -235.900000 0 181.700000 -235.200000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 -235.900000 0 494.500000 -235.900000 0 494.500000 -236.700000 0 181.700000 -236.700000 0 181.700000 -235.900000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 -236.700000 0 494.500000 -236.700000 0 494.500000 -237.400000 0 181.700000 -237.400000 0 181.700000 -236.700000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 -237.400000 0 494.500000 -237.400000 0 494.500000 -238.200000 0 181.700000 -238.200000 0 181.700000 -237.400000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 -238.200000 0 494.500000 -238.200000 0 494.500000 -239.000000 0 181.700000 -239.000000 0 181.700000 -238.200000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 -239.000000 0 494.500000 -239.000000 0 494.500000 -239.700000 0 181.700000 -239.700000 0 181.700000 -239.000000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 -239.700000 0 494.500000 -239.700000 0 494.500000 -240.500000 0 181.700000 -240.500000 0 181.700000 -239.700000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 -240.500000 0 494.500000 -240.500000 0 494.500000 -241.200000 0 181.700000 -241.200000 0 181.700000 -240.500000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 -241.200000 0 494.500000 -241.200000 0 494.500000 -242.000000 0 181.700000 -242.000000 0 181.700000 -241.200000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 -242.000000 0 494.500000 -242.000000 0 494.500000 -242.800000 0 181.700000 -242.800000 0 181.700000 -242.000000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 -242.800000 0 494.500000 -242.800000 0 494.500000 -243.500000 0 181.700000 -243.500000 0 181.700000 -242.800000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 -243.500000 0 494.500000 -243.500000 0 494.500000 -244.300000 0 181.700000 -244.300000 0 181.700000 -243.500000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 -244.300000 0 494.500000 -244.300000 0 494.500000 -245.000000 0 181.700000 -245.000000 0 181.700000 -244.300000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 -245.000000 0 494.500000 -245.000000 0 494.500000 -245.800000 0 181.700000 -245.800000 0 181.700000 -245.000000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 -245.800000 0 494.500000 -245.800000 0 494.500000 -246.500000 0 181.700000 -246.500000 0 181.700000 -245.800000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 -246.500000 0 494.500000 -246.500000 0 494.500000 -247.300000 0 181.700000 -247.300000 0 181.700000 -246.500000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 -247.300000 0 494.500000 -247.300000 0 494.500000 -248.100000 0 181.700000 -248.100000 0 181.700000 -247.300000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 -248.100000 0 494.500000 -248.100000 0 494.500000 -248.800000 0 181.700000 -248.800000 0 181.700000 -248.100000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 -248.800000 0 494.500000 -248.800000 0 494.500000 -249.600000 0 181.700000 -249.600000 0 181.700000 -248.800000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 -249.600000 0 494.500000 -249.600000 0 494.500000 -250.300000 0 181.700000 -250.300000 0 181.700000 -249.600000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 -250.300000 0 494.500000 -250.300000 0 494.500000 -251.100000 0 181.700000 -251.100000 0 181.700000 -250.300000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 -251.100000 0 494.500000 -251.100000 0 494.500000 -251.900000 0 181.700000 -251.900000 0 181.700000 -251.100000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 -251.900000 0 494.500000 -251.900000 0 494.500000 -252.600000 0 181.700000 -252.600000 0 181.700000 -251.900000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 -252.600000 0 494.500000 -252.600000 0 494.500000 -253.400000 0 181.700000 -253.400000 0 181.700000 -252.600000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 -253.400000 0 494.500000 -253.400000 0 494.500000 -254.100000 0 181.700000 -254.100000 0 181.700000 -253.400000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 -254.100000 0 494.500000 -254.100000 0 494.500000 -254.900000 0 181.700000 -254.900000 0 181.700000 -254.100000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 -254.900000 0 494.500000 -254.900000 0 494.500000 -255.700000 0 181.700000 -255.700000 0 181.700000 -254.900000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 -255.700000 0 494.500000 -255.700000 0 494.500000 -256.400000 0 181.700000 -256.400000 0 181.700000 -255.700000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 -256.400000 0 494.500000 -256.400000 0 494.500000 -257.200000 0 181.700000 -257.200000 0 181.700000 -256.400000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 -257.200000 0 494.500000 -257.200000 0 494.500000 -257.900000 0 181.700000 -257.900000 0 181.700000 -257.200000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 -257.900000 0 494.500000 -257.900000 0 494.500000 -258.700000 0 181.700000 -258.700000 0 181.700000 -257.900000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 -258.700000 0 494.500000 -258.700000 0 494.500000 -259.400000 0 181.700000 -259.400000 0 181.700000 -258.700000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 -259.400000 0 494.500000 -259.400000 0 494.500000 -260.200000 0 181.700000 -260.200000 0 181.700000 -259.400000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 -260.200000 0 494.500000 -260.200000 0 494.500000 -261.000000 0 181.700000 -261.000000 0 181.700000 -260.200000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 -261.000000 0 494.500000 -261.000000 0 494.500000 -261.700000 0 181.700000 -261.700000 0 181.700000 -261.000000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 -261.700000 0 494.500000 -261.700000 0 494.500000 -262.500000 0 181.700000 -262.500000 0 181.700000 -261.700000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 -262.500000 0 494.500000 -262.500000 0 494.500000 -263.200000 0 181.700000 -263.200000 0 181.700000 -262.500000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 -263.200000 0 494.500000 -263.200000 0 494.500000 -264.000000 0 181.700000 -264.000000 0 181.700000 -263.200000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 -264.000000 0 494.500000 -264.000000 0 494.500000 -264.800000 0 181.700000 -264.800000 0 181.700000 -264.000000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 -264.800000 0 494.500000 -264.800000 0 494.500000 -265.500000 0 181.700000 -265.500000 0 181.700000 -264.800000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 -265.500000 0 494.500000 -265.500000 0 494.500000 -266.300000 0 181.700000 -266.300000 0 181.700000 -265.500000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 -266.300000 0 494.500000 -266.300000 0 494.500000 -267.000000 0 181.700000 -267.000000 0 181.700000 -266.300000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 -267.000000 0 494.500000 -267.000000 0 494.500000 -267.800000 0 181.700000 -267.800000 0 181.700000 -267.000000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 -267.800000 0 494.500000 -267.800000 0 494.500000 -268.600000 0 181.700000 -268.600000 0 181.700000 -267.800000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 -268.600000 0 494.500000 -268.600000 0 494.500000 -269.300000 0 181.700000 -269.300000 0 181.700000 -268.600000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 -269.300000 0 494.500000 -269.300000 0 494.500000 -270.100000 0 181.700000 -270.100000 0 181.700000 -269.300000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 -270.100000 0 494.500000 -270.100000 0 494.500000 -270.800000 0 181.700000 -270.800000 0 181.700000 -270.100000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 -270.800000 0 494.500000 -270.800000 0 494.500000 -271.600000 0 181.700000 -271.600000 0 181.700000 -270.800000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 -271.600000 0 494.500000 -271.600000 0 494.500000 -272.300000 0 181.700000 -272.300000 0 181.700000 -271.600000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 -272.300000 0 494.500000 -272.300000 0 494.500000 -273.100000 0 181.700000 -273.100000 0 181.700000 -272.300000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 -273.100000 0 494.500000 -273.100000 0 494.500000 -273.900000 0 181.700000 -273.900000 0 181.700000 -273.100000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 -273.900000 0 494.500000 -273.900000 0 494.500000 -274.600000 0 181.700000 -274.600000 0 181.700000 -273.900000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 -274.600000 0 494.500000 -274.600000 0 494.500000 -275.400000 0 181.700000 -275.400000 0 181.700000 -274.600000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 -275.400000 0 494.500000 -275.400000 0 494.500000 -276.100000 0 181.700000 -276.100000 0 181.700000 -275.400000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 -276.100000 0 494.500000 -276.100000 0 494.500000 -276.900000 0 181.700000 -276.900000 0 181.700000 -276.100000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 -276.900000 0 494.500000 -276.900000 0 494.500000 -277.700000 0 181.700000 -277.700000 0 181.700000 -276.900000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 -277.700000 0 494.500000 -277.700000 0 494.500000 -278.400000 0 181.700000 -278.400000 0 181.700000 -277.700000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 -278.400000 0 494.500000 -278.400000 0 494.500000 -279.200000 0 181.700000 -279.200000 0 181.700000 -278.400000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 -279.200000 0 494.500000 -279.200000 0 494.500000 -279.900000 0 181.700000 -279.900000 0 181.700000 -279.200000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 -279.900000 0 494.500000 -279.900000 0 494.500000 -280.700000 0 181.700000 -280.700000 0 181.700000 -279.900000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 -280.700000 0 494.500000 -280.700000 0 494.500000 -281.500000 0 181.700000 -281.500000 0 181.700000 -280.700000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 -281.500000 0 494.500000 -281.500000 0 494.500000 -282.200000 0 181.700000 -282.200000 0 181.700000 -281.500000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 -282.200000 0 494.500000 -282.200000 0 494.500000 -283.000000 0 181.700000 -283.000000 0 181.700000 -282.200000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 -283.000000 0 494.500000 -283.000000 0 494.500000 -283.700000 0 181.700000 -283.700000 0 181.700000 -283.000000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 -283.700000 0 494.500000 -283.700000 0 494.500000 -284.500000 0 181.700000 -284.500000 0 181.700000 -283.700000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 -284.500000 0 494.500000 -284.500000 0 494.500000 -285.200000 0 181.700000 -285.200000 0 181.700000 -284.500000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 -285.200000 0 494.500000 -285.200000 0 494.500000 -286.000000 0 181.700000 -286.000000 0 181.700000 -285.200000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 -286.000000 0 494.500000 -286.000000 0 494.500000 -286.800000 0 181.700000 -286.800000 0 181.700000 -286.000000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 -286.800000 0 494.500000 -286.800000 0 494.500000 -287.500000 0 181.700000 -287.500000 0 181.700000 -286.800000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 -287.500000 0 494.500000 -287.500000 0 494.500000 -288.300000 0 181.700000 -288.300000 0 181.700000 -287.500000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 -288.300000 0 494.500000 -288.300000 0 494.500000 -289.000000 0 181.700000 -289.000000 0 181.700000 -288.300000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 -289.000000 0 494.500000 -289.000000 0 494.500000 -289.800000 0 181.700000 -289.800000 0 181.700000 -289.000000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 -289.800000 0 494.500000 -289.800000 0 494.500000 -290.600000 0 181.700000 -290.600000 0 181.700000 -289.800000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 -290.600000 0 494.500000 -290.600000 0 494.500000 -291.300000 0 181.700000 -291.300000 0 181.700000 -290.600000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 -291.300000 0 494.500000 -291.300000 0 494.500000 -292.100000 0 181.700000 -292.100000 0 181.700000 -291.300000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 -292.100000 0 494.500000 -292.100000 0 494.500000 -292.800000 0 181.700000 -292.800000 0 181.700000 -292.100000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 -292.800000 0 494.500000 -292.800000 0 494.500000 -293.600000 0 181.700000 -293.600000 0 181.700000 -292.800000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 -293.600000 0 494.500000 -293.600000 0 494.500000 -294.300000 0 181.700000 -294.300000 0 181.700000 -293.600000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 -294.300000 0 494.500000 -294.300000 0 494.500000 -295.100000 0 181.700000 -295.100000 0 181.700000 -294.300000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 -295.100000 0 494.500000 -295.100000 0 494.500000 -295.900000 0 181.700000 -295.900000 0 181.700000 -295.100000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 -295.900000 0 494.500000 -295.900000 0 494.500000 -296.600000 0 181.700000 -296.600000 0 181.700000 -295.900000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 -296.600000 0 494.500000 -296.600000 0 494.500000 -297.400000 0 181.700000 -297.400000 0 181.700000 -296.600000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 -297.400000 0 494.500000 -297.400000 0 494.500000 -298.100000 0 181.700000 -298.100000 0 181.700000 -297.400000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 -298.100000 0 494.500000 -298.100000 0 494.500000 -298.900000 0 181.700000 -298.900000 0 181.700000 -298.100000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 -298.900000 0 494.500000 -298.900000 0 494.500000 -299.700000 0 181.700000 -299.700000 0 181.700000 -298.900000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 -299.700000 0 494.500000 -299.700000 0 494.500000 -300.400000 0 181.700000 -300.400000 0 181.700000 -299.700000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 -300.400000 0 494.500000 -300.400000 0 494.500000 -301.200000 0 181.700000 -301.200000 0 181.700000 -300.400000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 -301.200000 0 494.500000 -301.200000 0 494.500000 -301.900000 0 181.700000 -301.900000 0 181.700000 -301.200000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 -301.900000 0 494.500000 -301.900000 0 494.500000 -302.700000 0 181.700000 -302.700000 0 181.700000 -301.900000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 -302.700000 0 494.500000 -302.700000 0 494.500000 -303.400000 0 181.700000 -303.400000 0 181.700000 -302.700000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 -303.400000 0 494.500000 -303.400000 0 494.500000 -304.200000 0 181.700000 -304.200000 0 181.700000 -303.400000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 -304.200000 0 494.500000 -304.200000 0 494.500000 -305.000000 0 181.700000 -305.000000 0 181.700000 -304.200000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 -305.000000 0 494.500000 -305.000000 0 494.500000 -305.700000 0 181.700000 -305.700000 0 181.700000 -305.000000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 -305.700000 0 494.500000 -305.700000 0 494.500000 -306.500000 0 181.700000 -306.500000 0 181.700000 -305.700000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 -306.500000 0 494.500000 -306.500000 0 494.500000 -307.200000 0 181.700000 -307.200000 0 181.700000 -306.500000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 -307.200000 0 494.500000 -307.200000 0 494.500000 -308.000000 0 181.700000 -308.000000 0 181.700000 -307.200000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 -308.000000 0 494.500000 -308.000000 0 494.500000 -308.700000 0 181.700000 -308.700000 0 181.700000 -308.000000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 -308.700000 0 494.500000 -308.700000 0 494.500000 -309.500000 0 181.700000 -309.500000 0 181.700000 -308.700000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 -309.500000 0 494.500000 -309.500000 0 494.500000 -310.300000 0 181.700000 -310.300000 0 181.700000 -309.500000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 -310.300000 0 494.500000 -310.300000 0 494.500000 -311.000000 0 181.700000 -311.000000 0 181.700000 -310.300000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 -311.000000 0 494.500000 -311.000000 0 494.500000 -311.800000 0 181.700000 -311.800000 0 181.700000 -311.000000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 -311.800000 0 494.500000 -311.800000 0 494.500000 -312.500000 0 181.700000 -312.500000 0 181.700000 -311.800000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 -312.500000 0 494.500000 -312.500000 0 494.500000 -313.300000 0 181.700000 -313.300000 0 181.700000 -312.500000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 -313.300000 0 494.500000 -313.300000 0 494.500000 -314.100000 0 181.700000 -314.100000 0 181.700000 -313.300000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 -314.100000 0 494.500000 -314.100000 0 494.500000 -314.800000 0 181.700000 -314.800000 0 181.700000 -314.100000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 -314.800000 0 494.500000 -314.800000 0 494.500000 -315.600000 0 181.700000 -315.600000 0 181.700000 -314.800000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 -315.600000 0 494.500000 -315.600000 0 494.500000 -316.300000 0 181.700000 -316.300000 0 181.700000 -315.600000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 -316.300000 0 494.500000 -316.300000 0 494.500000 -317.100000 0 181.700000 -317.100000 0 181.700000 -316.300000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 -317.100000 0 494.500000 -317.100000 0 494.500000 -317.800000 0 181.700000 -317.800000 0 181.700000 -317.100000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 -317.800000 0 494.500000 -317.800000 0 494.500000 -318.600000 0 181.700000 -318.600000 0 181.700000 -317.800000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 -318.600000 0 494.500000 -318.600000 0 494.500000 -319.400000 0 181.700000 -319.400000 0 181.700000 -318.600000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 -319.400000 0 494.500000 -319.400000 0 494.500000 -320.100000 0 181.700000 -320.100000 0 181.700000 -319.400000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 -320.100000 0 494.500000 -320.100000 0 494.500000 -320.900000 0 181.700000 -320.900000 0 181.700000 -320.100000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 -320.900000 0 494.500000 -320.900000 0 494.500000 -321.600000 0 181.700000 -321.600000 0 181.700000 -320.900000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 -321.600000 0 494.500000 -321.600000 0 494.500000 -322.400000 0 181.700000 -322.400000 0 181.700000 -321.600000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 -322.400000 0 494.500000 -322.400000 0 494.500000 -323.200000 0 181.700000 -323.200000 0 181.700000 -322.400000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 -323.200000 0 494.500000 -323.200000 0 494.500000 -323.900000 0 181.700000 -323.900000 0 181.700000 -323.200000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 -323.900000 0 494.500000 -323.900000 0 494.500000 -324.700000 0 181.700000 -324.700000 0 181.700000 -323.900000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 -324.700000 0 494.500000 -324.700000 0 494.500000 -325.400000 0 181.700000 -325.400000 0 181.700000 -324.700000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 -325.400000 0 494.500000 -325.400000 0 494.500000 -326.200000 0 181.700000 -326.200000 0 181.700000 -325.400000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 -326.200000 0 494.500000 -326.200000 0 494.500000 -326.900000 0 181.700000 -326.900000 0 181.700000 -326.200000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 -326.900000 0 494.500000 -326.900000 0 494.500000 -327.700000 0 181.700000 -327.700000 0 181.700000 -326.900000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 -327.700000 0 494.500000 -327.700000 0 494.500000 -328.500000 0 181.700000 -328.500000 0 181.700000 -327.700000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 -328.500000 0 494.500000 -328.500000 0 494.500000 -329.200000 0 181.700000 -329.200000 0 181.700000 -328.500000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 -329.200000 0 494.500000 -329.200000 0 494.500000 -330.000000 0 181.700000 -330.000000 0 181.700000 -329.200000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 -329.900000 0 181.800000 -329.900000 0 181.800000 -136.600000 0 494.400000 -136.600000 0 494.400000 -329.900000 0 338.100000 -329.900000 0
+strokePath subpath 1 338.100000 -329.900000 0 181.800000 -329.900000 0 181.800000 -136.600000 0 494.400000 -136.600000 0 494.400000 -329.900000 0 338.100000 -329.900000 0
+saveState
+updateCtm 11410.000000 0.000000 0.000000 -8760.000000 20530.000000 104590.000000
+drawSoftMaskedImage 1142 877 1142 877 JPEG 70955 PPM 3004618
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 -290.876000 215.488000 -298.876000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 -290.876000 220.592000 -298.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 -290.876000 225.696000 -298.876000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 -290.876000 230.800000 -298.876000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 -298.476000 241.388000 -306.476000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 -298.476000 246.492000 -306.476000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 -298.476000 251.596000 -306.476000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 -298.476000 256.700000 -306.476000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 -306.176000 267.188000 -314.176000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 -306.176000 272.292000 -314.176000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 -306.176000 277.396000 -314.176000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 -306.176000 282.500000 -314.176000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 -313.776000 293.088000 -321.776000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 -313.776000 298.192000 -321.776000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 -313.776000 303.296000 -321.776000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 -313.776000 308.400000 -321.776000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 -275.976000 202.588000 -283.976000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 -256.576000 201.688000 -264.576000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 -237.276000 195.788000 -245.276000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 -237.276000 200.892000 -245.276000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 -217.976000 194.888000 -225.976000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 -217.976000 199.992000 -225.976000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 -198.676000 193.988000 -206.676000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 -198.676000 199.092000 -206.676000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 -179.276000 193.088000 -187.276000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 -179.276000 198.192000 -187.276000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 -307.176000 330.188000 -315.176000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 -307.176000 332.716000 -315.176000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 -307.176000 337.596000 -315.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 -307.176000 341.396000 -315.176000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 -307.176000 346.036000 -315.176000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 -307.176000 350.900000 -315.176000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 -307.176000 355.972000 -315.176000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 -307.176000 359.196000 -315.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 -307.176000 362.196000 -315.176000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 -307.176000 367.404000 -315.176000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 -307.176000 371.876000 -315.176000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 -307.176000 375.052000 -315.176000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 -287.676000 361.172000 -295.676000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 -287.676000 364.340000 -295.676000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 -287.676000 367.396000 -295.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 -287.676000 372.604000 -295.676000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 -287.676000 379.348000 -295.676000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 -287.676000 384.484000 -295.676000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 -287.676000 389.436000 -295.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 -287.676000 392.108000 -295.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 -287.676000 395.708000 -295.676000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 -287.676000 397.540000 -295.676000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 -287.676000 402.444000 -295.676000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 -287.676000 406.788000 -295.676000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 -268.176000 392.972000 -276.176000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 -268.176000 398.076000 -276.176000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 -268.176000 403.180000 -276.176000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 -268.176000 405.428000 -276.176000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 -268.176000 410.332000 -276.176000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 -268.176000 414.476000 -276.176000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 -140.608000 305.808000 -154.608000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 -140.608000 314.138000 -154.608000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 -140.608000 320.788000 -154.608000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 -140.608000 328.698000 -154.608000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 -140.608000 336.972000 -154.608000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 -140.608000 344.182000 -154.608000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 -140.608000 349.810000 -154.608000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 -140.608000 354.234000 -154.608000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 -140.608000 362.718000 -154.608000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 -140.608000 367.870000 -154.608000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 -140.608000 372.322000 -154.608000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 -140.608000 382.080000 -154.608000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 -140.608000 388.772000 -154.608000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 -140.608000 397.802000 -154.608000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 -140.608000 402.254000 -154.608000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 -140.608000 407.896000 -154.608000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 -263.500000 0 424.300000 -263.500000 0 424.300000 -202.700000 0 493.600000 -202.700000 0 493.600000 -263.500000 0 458.900000 -263.500000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 -212.300000 0 428.900000 -212.300000 0 428.900000 -206.400000 0 434.800000 -206.400000 0 434.800000 -212.300000 0 431.900000 -212.300000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 -223.400000 0 428.900000 -223.400000 0 428.900000 -217.400000 0 434.800000 -217.400000 0 434.800000 -223.400000 0 431.900000 -223.400000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 -234.500000 0 428.900000 -234.500000 0 428.900000 -228.500000 0 434.800000 -228.500000 0 434.800000 -234.500000 0 431.900000 -234.500000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 -245.600000 0 428.900000 -245.600000 0 428.900000 -239.600000 0 434.800000 -239.600000 0 434.800000 -245.600000 0 431.900000 -245.600000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 -256.700000 0 428.900000 -256.700000 0 428.900000 -250.700000 0 434.800000 -250.700000 0 434.800000 -256.700000 0 431.900000 -256.700000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -205.276000 443.288000 -213.276000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 -205.276000 445.816000 -213.276000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 -205.276000 450.600000 -213.276000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 -205.276000 454.496000 -213.276000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 -205.276000 459.136000 -213.276000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 -205.276000 464.000000 -213.276000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 -205.276000 468.976000 -213.276000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 -205.276000 472.304000 -213.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 -205.276000 475.208000 -213.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 -205.276000 480.520000 -213.276000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 -205.276000 484.992000 -213.276000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 -205.276000 488.168000 -213.276000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -216.276000 443.352000 -224.276000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 -216.276000 447.920000 -224.276000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 -216.276000 452.976000 -224.276000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 -216.276000 457.400000 -224.276000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 -216.276000 462.472000 -224.276000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 -216.276000 465.800000 -224.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 -216.276000 468.904000 -224.276000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 -216.276000 473.816000 -224.276000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 -216.276000 478.888000 -224.276000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 -216.276000 482.064000 -224.276000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -227.376000 442.872000 -235.376000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 -227.376000 446.040000 -235.376000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 -227.376000 448.992000 -235.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 -227.376000 454.304000 -235.376000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 -227.376000 461.048000 -235.376000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 -227.376000 466.184000 -235.376000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 -227.376000 471.136000 -235.376000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 -227.376000 473.808000 -235.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 -227.376000 477.408000 -235.376000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 -227.376000 479.240000 -235.376000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 -227.376000 484.144000 -235.376000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 -227.376000 488.488000 -235.376000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -238.476000 443.384000 -246.476000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 -238.476000 448.464000 -246.476000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 -238.476000 453.424000 -246.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 -238.476000 456.696000 -246.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 -238.476000 459.800000 -246.476000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 -238.476000 462.032000 -246.476000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 -238.476000 466.936000 -246.476000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 -238.476000 471.080000 -246.476000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 -249.576000 443.272000 -257.576000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 -249.576000 448.376000 -257.576000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 -249.576000 453.480000 -257.576000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 -249.576000 455.728000 -257.576000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 -249.576000 460.632000 -257.576000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 -249.576000 464.776000 -257.576000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -2894.600000 0 114.800000 -2894.600000 0 114.800000 -2851.800000 0 72.000000 -2851.800000 0 72.000000 -2894.600000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 368650.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 546.200000 0 504.000000 546.200000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 546.200000 0
+eoFillPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 245.800000 0 72.000000 245.800000 0 72.000000 72.000000 0
+eoFillPath subpath 1 72.000000 245.800000 0 121.400000 245.800000 0 121.400000 546.200000 0 72.000000 546.200000 0 72.000000 245.800000 0
+eoFillPath subpath 1 454.500000 245.800000 0 504.000000 245.800000 0 504.000000 546.200000 0 454.500000 546.200000 0 454.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 701.300000 0 504.000000 701.300000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 701.300000 0
+eoFillPath subpath 1 72.000000 72.200000 0 504.000000 72.200000 0 504.000000 86.100000 0 72.000000 86.100000 0 72.000000 72.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 363.000000 719.948000 376.792000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 376.808000 719.948000 386.264000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 386.312000 719.948000 391.384000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.416000 719.948000 403.432000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 403.416000 719.948000 413.192000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 413.224000 719.948000 423.352000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 423.320000 719.948000 431.640000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 431.624000 719.948000 441.464000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 441.432000 719.948000 446.504000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.536000 719.948000 452.296000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 452.344000 719.948000 457.416000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 457.400000 719.948000 462.472000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 462.504000 719.948000 472.264000 703.948000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 469.912000 719.948000 476.488000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 476.120000 719.948000 485.960000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 485.928000 719.948000 495.768000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 495.736000 719.948000 504.056000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 471.148000 77.668000 455.148000 1.000000 0.000000 0.000000 1.000000
+drawChar 77.700000 471.148000 88.612000 455.148000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 86.900000 471.148000 94.788000 455.148000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 94.804000 471.148000 105.652000 455.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.700000 471.148000 116.548000 455.148000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 116.596000 471.148000 126.116000 455.148000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 446.536000 194.308000 434.536000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 194.296000 446.536000 201.388000 434.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 201.400000 446.536000 207.556000 434.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 207.604000 446.536000 211.432000 434.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 211.408000 446.536000 219.088000 434.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 219.112000 446.536000 226.204000 434.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 226.216000 446.536000 232.372000 434.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 232.516000 446.536000 236.320000 434.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 236.416000 446.536000 241.228000 434.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 241.216000 446.536000 248.944000 434.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 249.016000 446.536000 256.108000 434.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 256.120000 446.536000 259.924000 434.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 260.116000 446.536000 267.268000 434.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 267.220000 446.536000 274.900000 434.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 274.924000 446.536000 282.148000 434.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 282.124000 446.536000 288.892000 434.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 288.928000 446.536000 296.020000 434.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 296.032000 446.536000 300.076000 434.536000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 300.136000 446.536000 311.512000 434.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 311.440000 446.536000 318.532000 434.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 318.544000 446.536000 326.272000 434.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 326.344000 446.536000 331.156000 434.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 331.144000 446.536000 334.972000 434.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 334.948000 446.536000 342.172000 434.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 342.244000 446.536000 349.972000 434.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 349.948000 446.536000 357.040000 434.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.052000 446.536000 364.732000 434.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 364.756000 446.536000 368.560000 434.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.752000 446.536000 373.192000 434.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 373.156000 446.536000 378.892000 434.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 378.952000 446.536000 386.680000 434.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 386.656000 446.536000 390.484000 434.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 390.460000 446.536000 395.272000 434.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 395.356000 446.536000 399.160000 434.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 399.352000 446.536000 404.164000 434.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 404.152000 446.536000 409.888000 434.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 409.852000 446.536000 416.944000 434.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 416.956000 446.536000 424.048000 434.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 424.060000 446.536000 430.216000 434.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 430.264000 446.536000 434.068000 434.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 434.164000 446.536000 437.968000 434.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.064000 446.536000 442.804000 434.536000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 442.768000 446.536000 446.572000 434.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.872000 446.536000 454.024000 434.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 453.976000 446.536000 457.804000 434.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 457.780000 446.536000 463.936000 434.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 463.984000 446.536000 471.208000 434.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 471.184000 446.536000 474.988000 434.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 475.180000 446.536000 482.908000 434.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 482.980000 446.536000 490.132000 434.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 490.084000 446.536000 496.852000 434.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 496.888000 446.536000 503.980000 434.536000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 446.536000 507.904000 434.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 432.636000 191.656000 420.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 432.636000 198.796000 420.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 198.808000 432.636000 205.576000 420.636000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 205.612000 432.636000 212.704000 420.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 212.716000 432.636000 218.452000 420.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 218.416000 432.636000 225.568000 420.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 225.616000 432.636000 229.444000 420.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 229.420000 432.636000 233.224000 420.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 233.224000 432.636000 240.448000 420.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 240.424000 432.636000 246.160000 420.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 246.124000 432.636000 253.852000 420.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 253.828000 432.636000 260.980000 420.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 261.028000 432.636000 272.404000 420.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 272.428000 432.636000 279.520000 420.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 279.532000 432.636000 287.260000 420.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 287.236000 432.636000 292.048000 420.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 292.036000 432.636000 299.188000 420.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 299.236000 432.636000 303.064000 420.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 303.040000 432.636000 306.844000 420.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 306.844000 432.636000 311.656000 420.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 311.644000 432.636000 317.380000 420.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 317.344000 432.636000 324.436000 420.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 324.448000 432.636000 331.540000 420.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 331.552000 432.636000 337.708000 420.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 337.756000 432.636000 341.560000 420.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 341.560000 432.636000 348.712000 420.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 348.760000 432.636000 356.488000 420.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 356.464000 432.636000 364.144000 420.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 364.168000 432.636000 367.972000 420.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 367.972000 432.636000 375.652000 420.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 375.676000 432.636000 379.504000 420.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 379.480000 432.636000 386.632000 420.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 386.680000 432.636000 394.408000 420.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 394.384000 432.636000 399.196000 420.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 399.184000 432.636000 405.340000 420.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 405.388000 432.636000 409.192000 420.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 409.192000 432.636000 414.004000 420.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 413.992000 432.636000 421.216000 420.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 421.192000 432.636000 424.996000 420.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 424.996000 432.636000 431.716000 420.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 431.692000 432.636000 437.428000 420.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 437.392000 432.636000 444.484000 420.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 444.496000 432.636000 451.648000 420.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 451.696000 432.636000 456.508000 420.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 456.496000 432.636000 463.588000 420.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 463.600000 432.636000 467.404000 420.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 467.404000 432.636000 474.556000 420.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 474.604000 432.636000 478.408000 420.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 478.408000 432.636000 486.088000 420.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 486.112000 432.636000 493.204000 420.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 493.216000 432.636000 499.936000 420.636000 1.000000 0.000000 0.000000 1.000000 c
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 432.636000 504.044000 420.636000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 418.736000 192.724000 406.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 192.700000 418.736000 198.436000 406.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.496000 418.736000 205.648000 406.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 205.600000 418.736000 210.412000 406.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 210.400000 418.736000 214.228000 406.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 214.300000 418.736000 221.068000 406.736000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 221.104000 418.736000 228.196000 406.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 228.208000 418.736000 232.036000 406.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 232.012000 418.736000 238.780000 406.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 240.412000 418.736000 244.216000 406.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.812000 418.736000 249.640000 406.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 249.616000 418.736000 256.768000 406.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 256.816000 418.736000 264.544000 406.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 264.520000 418.736000 272.200000 406.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 272.224000 418.736000 278.380000 406.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 278.428000 418.736000 285.148000 406.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 285.124000 418.736000 292.276000 406.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 292.228000 418.736000 299.908000 406.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 299.932000 418.736000 307.024000 406.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 307.036000 418.736000 314.716000 406.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 316.336000 418.736000 320.140000 406.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 321.832000 418.736000 328.600000 406.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 328.636000 418.736000 335.788000 406.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 335.740000 418.736000 341.476000 406.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 341.536000 418.736000 349.216000 406.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 349.240000 418.736000 353.044000 406.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.640000 418.736000 358.444000 406.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 360.040000 418.736000 368.356000 406.736000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 367.744000 418.736000 374.968000 406.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 374.944000 418.736000 378.772000 406.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 378.748000 418.736000 382.576000 406.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 382.648000 418.736000 389.872000 406.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 389.848000 418.736000 400.108000 406.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 400.144000 418.736000 403.972000 406.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 403.948000 418.736000 411.676000 406.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 411.652000 418.736000 419.332000 406.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 420.952000 418.736000 424.756000 406.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.448000 418.736000 433.600000 406.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 433.648000 418.736000 439.384000 406.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 439.348000 418.736000 446.440000 406.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 448.048000 418.736000 451.852000 406.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 453.448000 418.736000 459.604000 406.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 459.652000 418.736000 466.876000 406.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 466.852000 418.736000 478.228000 406.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 478.252000 418.736000 485.344000 406.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 486.952000 418.736000 490.756000 406.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 492.448000 418.736000 499.672000 406.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 499.648000 418.736000 504.088000 406.736000 1.000000 0.000000 0.000000 1.000000 f
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 418.736000 507.904000 406.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 404.836000 190.312000 392.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 404.836000 198.028000 392.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.004000 404.836000 205.096000 392.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 205.108000 404.836000 208.912000 392.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 208.912000 404.836000 213.724000 392.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 213.712000 404.836000 220.480000 392.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 220.516000 404.836000 228.196000 392.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 228.220000 404.836000 235.312000 392.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 235.324000 404.836000 241.480000 392.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 241.528000 404.836000 245.332000 392.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.332000 404.836000 252.556000 392.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 252.532000 404.836000 256.972000 392.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 256.936000 404.836000 260.740000 392.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 260.740000 404.836000 265.552000 392.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 265.540000 404.836000 271.276000 392.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 271.240000 404.836000 278.332000 392.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 278.344000 404.836000 285.436000 392.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 285.448000 404.836000 291.604000 392.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 291.652000 404.836000 295.456000 392.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 295.456000 404.836000 303.136000 392.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 303.160000 404.836000 306.988000 392.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 306.964000 404.836000 314.116000 392.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.164000 404.836000 321.892000 392.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 321.868000 404.836000 326.680000 392.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 326.668000 404.836000 333.760000 392.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 333.772000 404.836000 341.452000 392.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 341.476000 404.836000 345.280000 392.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 345.280000 404.836000 353.008000 392.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 352.984000 404.836000 360.076000 392.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.088000 404.836000 365.824000 392.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 365.788000 404.836000 372.880000 392.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 372.892000 404.836000 376.924000 392.836000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 113 1 0 1 0 1200.000000 0 GAAAAA+DejaVuSerif-BoldItalic
+drawChar 206.200000 384.856000 215.740000 372.856000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 215.800000 384.856000 223.792000 372.856000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 223.804000 384.856000 232.528000 372.856000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 232.504000 384.856000 237.052000 372.856000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 237.100000 384.856000 242.260000 372.856000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 242.296000 384.856000 249.928000 372.856000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 249.892000 384.856000 256.204000 372.856000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 256.192000 384.856000 264.184000 372.856000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 264.196000 384.856000 272.920000 372.856000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 272.896000 384.856000 279.640000 372.856000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 279.700000 384.856000 283.876000 372.856000 1.000000 0.000000 0.000000 1.000000
+drawChar 283.900000 384.856000 292.828000 372.856000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 292.000000 384.856000 298.312000 372.856000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 298.300000 384.856000 305.932000 372.856000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 305.896000 384.856000 313.528000 372.856000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 313.492000 384.856000 320.236000 372.856000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 113 1 0 1 0 1200.000000 0 GAAAAA+DejaVuSerif-BoldItalic
+drawChar 367.100000 384.856000 377.504000 372.856000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 377.504000 384.856000 385.136000 372.856000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 385.100000 384.856000 392.396000 372.856000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 392.396000 384.856000 396.944000 372.856000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 396.992000 384.856000 405.380000 372.856000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 405.392000 384.856000 414.116000 372.856000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 414.092000 384.856000 422.084000 372.856000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 422.096000 384.856000 430.820000 372.856000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 430.796000 384.856000 437.540000 372.856000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 437.600000 384.856000 441.776000 372.856000 1.000000 0.000000 0.000000 1.000000
+drawChar 441.800000 384.856000 450.728000 372.856000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 449.900000 384.856000 456.212000 372.856000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.200000 384.856000 463.832000 372.856000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 463.796000 384.856000 471.428000 372.856000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 471.392000 384.856000 478.136000 372.856000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.400000 370.836000 193.464000 358.836000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 193.500000 370.836000 197.328000 358.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 197.304000 370.836000 205.032000 358.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 205.008000 370.836000 212.100000 358.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 212.112000 370.836000 218.268000 358.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 342.200000 370.836000 352.028000 358.836000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 352.004000 370.836000 359.156000 358.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 359.204000 370.836000 366.464000 358.836000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.400000 356.936000 195.012000 344.936000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 195.000000 356.936000 202.224000 344.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 202.200000 356.936000 209.928000 344.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 209.904000 356.936000 217.584000 344.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 217.608000 356.936000 221.436000 344.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 221.412000 356.936000 228.564000 344.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.612000 356.936000 234.768000 344.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 234.816000 356.936000 238.620000 344.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 238.620000 356.936000 246.936000 344.936000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 246.924000 356.936000 250.752000 344.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 250.728000 356.936000 256.464000 344.936000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 342.200000 356.936000 351.380000 344.936000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 351.404000 356.936000 359.132000 344.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 359.108000 356.936000 366.200000 344.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 366.212000 356.936000 372.368000 344.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 372.416000 356.936000 377.228000 344.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 377.216000 356.936000 384.944000 344.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 384.920000 356.936000 392.648000 344.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 392.624000 356.936000 397.436000 344.936000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.400000 343.036000 193.620000 331.036000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 193.596000 343.036000 201.276000 331.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 201.300000 343.036000 207.036000 331.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 207.000000 343.036000 214.728000 331.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 214.704000 343.036000 221.424000 331.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 221.400000 343.036000 228.492000 331.036000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 342.200000 343.036000 351.008000 331.036000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 350.996000 343.036000 358.088000 331.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 358.100000 343.036000 365.192000 331.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.204000 343.036000 371.924000 331.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 371.900000 343.036000 379.628000 331.036000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 305.248000 85.220000 289.248000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 85.204000 305.248000 95.988000 289.248000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 96.004000 305.248000 103.892000 289.248000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 103.908000 305.248000 115.348000 289.248000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 115.412000 305.248000 126.260000 289.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 126.308000 305.248000 137.684000 289.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 137.716000 305.248000 143.284000 289.248000 1.000000 0.000000 0.000000 1.000000
+drawChar 143.316000 305.248000 154.836000 289.248000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 154.820000 305.248000 166.196000 289.248000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 166.228000 305.248000 177.076000 289.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 177.124000 305.248000 188.564000 289.248000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 280.736000 194.308000 268.736000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 194.296000 280.736000 201.388000 268.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 201.400000 280.736000 209.128000 268.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 209.104000 280.736000 212.932000 268.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 213.004000 280.736000 220.732000 268.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 220.708000 280.736000 228.388000 268.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 228.808000 280.736000 232.612000 268.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 233.008000 280.736000 237.820000 268.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 237.808000 280.736000 245.536000 268.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 245.608000 280.736000 252.700000 268.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 253.108000 280.736000 256.912000 268.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.308000 280.736000 264.028000 268.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 264.004000 280.736000 271.156000 268.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 271.204000 280.736000 276.940000 268.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 276.904000 280.736000 284.584000 268.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 284.608000 280.736000 291.832000 268.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 291.808000 280.736000 297.544000 268.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 297.604000 280.736000 302.416000 268.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 302.404000 280.736000 306.208000 268.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 306.604000 280.736000 310.408000 268.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.804000 280.736000 318.028000 268.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 318.004000 280.736000 325.732000 268.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 326.104000 280.736000 329.908000 268.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.400000 280.736000 335.212000 268.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 335.200000 280.736000 342.928000 268.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 343.000000 280.736000 350.092000 268.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 350.404000 280.736000 354.208000 268.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.604000 280.736000 358.432000 268.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 358.408000 280.736000 365.500000 268.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.512000 280.736000 369.952000 268.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 370.012000 280.736000 374.824000 268.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 375.208000 280.736000 379.012000 268.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 379.408000 280.736000 385.564000 268.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 385.612000 280.736000 389.440000 268.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 389.416000 280.736000 397.096000 268.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 397.120000 280.736000 404.212000 268.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 404.620000 280.736000 408.424000 268.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 408.820000 280.736000 416.044000 268.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 416.116000 280.736000 420.556000 268.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 420.916000 280.736000 424.720000 268.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 425.116000 280.736000 429.928000 268.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 429.916000 280.736000 437.644000 268.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 437.716000 280.736000 444.808000 268.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 445.216000 280.736000 449.020000 268.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 449.416000 280.736000 457.144000 268.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 457.120000 280.736000 464.344000 268.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 464.416000 280.736000 472.144000 268.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 472.120000 280.736000 478.276000 268.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 478.216000 280.736000 485.308000 268.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 485.320000 280.736000 489.124000 268.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 489.520000 280.736000 493.324000 268.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 493.720000 280.736000 497.548000 268.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 497.524000 280.736000 503.680000 268.736000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 280.736000 508.004000 268.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 266.836000 192.652000 254.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 193.504000 266.836000 197.308000 254.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 198.208000 266.836000 205.888000 254.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 205.912000 266.836000 213.064000 254.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 213.016000 266.836000 218.752000 254.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 218.812000 266.836000 226.492000 254.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 226.516000 266.836000 233.608000 254.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 233.620000 266.836000 241.348000 254.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 242.116000 266.836000 245.920000 254.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 246.820000 266.836000 252.976000 254.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 253.024000 266.836000 260.752000 254.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 260.728000 266.836000 267.820000 254.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 267.832000 266.836000 275.512000 254.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 275.536000 266.836000 279.340000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.132000 266.836000 283.936000 254.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.836000 266.836000 292.828000 254.836000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 292.840000 266.836000 300.568000 254.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 300.544000 266.836000 307.636000 254.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 308.440000 266.836000 312.244000 254.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 313.144000 266.836000 319.864000 254.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 319.840000 266.836000 326.992000 254.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 327.040000 266.836000 332.776000 254.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 332.740000 266.836000 340.420000 254.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 340.444000 266.836000 347.668000 254.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 347.644000 266.836000 353.380000 254.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 353.440000 266.836000 358.252000 254.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 359.044000 266.836000 362.848000 254.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 363.748000 266.836000 370.900000 254.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 370.948000 266.836000 378.676000 254.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 378.652000 266.836000 386.332000 254.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 387.148000 266.836000 390.952000 254.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 391.852000 266.836000 396.664000 254.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 396.652000 266.836000 404.380000 254.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 404.452000 266.836000 411.544000 254.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 412.252000 266.836000 416.056000 254.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 417.052000 266.836000 423.208000 254.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 423.256000 266.836000 430.984000 254.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 430.852000 266.836000 437.944000 254.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 437.956000 266.836000 445.636000 254.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 446.452000 266.836000 450.256000 254.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 451.156000 266.836000 458.308000 254.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 458.356000 266.836000 464.092000 254.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 464.056000 266.836000 471.148000 254.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 471.952000 266.836000 475.756000 254.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 476.656000 266.836000 484.336000 254.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 484.360000 266.836000 491.584000 254.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 491.560000 266.836000 496.372000 254.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 496.360000 266.836000 504.088000 254.836000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 266.836000 507.904000 254.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 252.936000 196.876000 240.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 196.900000 252.936000 204.052000 240.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 204.004000 252.936000 211.684000 240.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 211.708000 252.936000 218.800000 240.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 220.408000 252.936000 224.212000 240.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 225.808000 252.936000 233.032000 240.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 233.104000 252.936000 237.544000 240.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 239.104000 252.936000 242.908000 240.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 244.504000 252.936000 252.184000 240.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 252.208000 252.936000 259.360000 240.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 259.312000 252.936000 265.048000 240.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 265.108000 252.936000 272.368000 240.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 274.012000 252.936000 277.816000 240.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.412000 252.936000 289.672000 240.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 289.708000 252.936000 296.932000 240.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 296.908000 252.936000 304.132000 240.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 304.108000 252.936000 311.788000 240.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 311.812000 252.936000 315.616000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 317.212000 252.936000 321.016000 240.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.612000 252.936000 327.352000 240.936000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 327.316000 252.936000 332.128000 240.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 332.212000 252.936000 335.500000 240.936000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 335.512000 252.936000 341.668000 240.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 343.216000 252.936000 347.020000 240.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 348.616000 252.936000 356.296000 240.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 356.320000 252.936000 360.148000 240.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 360.220000 252.936000 367.900000 240.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 369.424000 252.936000 373.228000 240.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 374.920000 252.936000 382.012000 240.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 382.024000 252.936000 389.752000 240.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 389.728000 252.936000 396.952000 240.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 397.024000 252.936000 404.752000 240.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 404.620000 252.936000 412.300000 240.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 412.324000 252.936000 420.052000 240.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 421.624000 252.936000 425.428000 240.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 427.120000 252.936000 431.932000 240.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 431.920000 252.936000 439.144000 240.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 440.716000 252.936000 444.520000 240.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.116000 252.936000 452.272000 240.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 452.320000 252.936000 457.132000 240.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 457.120000 252.936000 464.344000 240.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 464.320000 252.936000 470.056000 240.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 470.020000 252.936000 477.112000 240.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 478.816000 252.936000 482.620000 240.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.216000 252.936000 489.028000 240.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.016000 252.936000 496.744000 240.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.816000 252.936000 503.908000 240.936000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 252.936000 507.904000 240.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 239.036000 190.312000 227.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 239.036000 197.524000 227.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 197.500000 239.036000 204.724000 227.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 204.700000 239.036000 208.528000 227.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 208.504000 239.036000 214.660000 227.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 214.708000 239.036000 218.512000 227.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 218.512000 239.036000 222.316000 227.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 222.400000 239.036000 230.080000 227.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 230.104000 239.036000 237.256000 227.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 237.304000 239.036000 243.040000 227.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 243.004000 239.036000 250.684000 227.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 250.708000 239.036000 257.800000 227.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 257.812000 239.036000 265.540000 227.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 265.516000 239.036000 269.320000 227.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 269.320000 239.036000 273.760000 227.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 273.724000 239.036000 281.452000 227.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 281.428000 239.036000 287.164000 227.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 287.128000 239.036000 294.856000 227.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 294.832000 239.036000 298.660000 227.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 298.636000 239.036000 303.448000 227.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 303.436000 239.036000 311.164000 227.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 311.140000 239.036000 316.876000 227.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 316.840000 239.036000 323.932000 227.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 323.944000 239.036000 327.748000 227.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 327.748000 239.036000 331.552000 227.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 331.800000 239.036000 335.628000 227.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 335.604000 239.036000 342.756000 227.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 342.804000 239.036000 353.064000 227.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 353.100000 239.036000 360.828000 227.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 360.804000 239.036000 372.180000 227.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 372.204000 239.036000 379.428000 227.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 379.404000 239.036000 389.664000 227.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 389.700000 239.036000 396.792000 227.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 396.804000 239.036000 402.540000 227.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 402.504000 239.036000 406.308000 227.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 406.308000 239.036000 413.460000 227.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 413.508000 239.036000 421.236000 227.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 421.212000 239.036000 428.892000 227.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 428.916000 239.036000 432.720000 227.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 432.700000 239.036000 440.380000 227.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 440.404000 239.036000 444.232000 227.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 444.208000 239.036000 450.928000 227.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 450.904000 239.036000 457.672000 227.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 457.708000 239.036000 464.428000 227.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 464.404000 239.036000 468.232000 227.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 468.208000 239.036000 475.300000 227.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 475.312000 239.036000 481.468000 227.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 481.516000 239.036000 485.320000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 455.600000 86.136000 463.664000 74.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 463.100000 86.136000 470.252000 74.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 470.300000 86.136000 477.980000 74.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 478.004000 86.136000 485.096000 74.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 485.108000 86.136000 488.912000 74.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 488.900000 86.136000 496.532000 74.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 496.496000 86.136000 504.128000 74.136000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 10777.400000 0 477.900000 10777.400000 0 477.900000 11087.200000 0 134.300000 11087.200000 0 134.300000 10777.400000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -998550.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 7788.400000 0 168.100000 7788.400000 0 168.100000 7793.400000 0 76.900000 7793.400000 0 76.900000 7788.400000 0
+eoFillPath subpath 1 163.100000 7793.300000 0 168.100000 7793.300000 0 168.100000 7923.900000 0 163.100000 7923.900000 0 163.100000 7793.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 7793.400000 0 163.100000 7793.400000 0 163.100000 7928.800000 0 72.000000 7928.800000 0 72.000000 7793.400000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 7924.480000 87.320000 7914.480000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 7924.480000 93.420000 7914.480000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 7924.480000 97.510000 7914.480000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 7924.480000 101.420000 7914.480000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 7924.480000 104.170000 7914.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 7924.480000 110.530000 7914.480000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 7924.480000 113.270000 7914.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 7924.480000 116.470000 7914.480000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 7924.480000 123.480000 7914.480000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 7924.480000 129.610000 7914.480000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 7924.480000 135.090000 7914.480000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 7924.480000 140.890000 7914.480000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 7924.480000 144.820000 7914.480000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 7924.480000 150.920000 7914.480000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 7924.480000 153.670000 7914.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 7924.480000 156.470000 7914.480000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 7797.600000 0 168.200000 7797.600000 0 168.200000 7912.800000 0 72.000000 7912.800000 0 72.000000 7797.600000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7865.752000 79.253000 7856.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 7865.752000 86.669000 7856.752000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 7865.752000 90.215000 7856.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 7865.752000 93.077000 7856.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 7865.752000 97.406000 7856.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 7865.752000 100.853000 7856.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 7865.752000 107.324000 7856.752000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 7865.752000 112.337000 7856.752000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 7865.752000 115.271000 7856.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 7865.752000 118.655000 7856.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 7865.752000 126.512000 7856.752000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 7865.752000 130.805000 7856.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 7865.752000 135.881000 7856.752000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 7865.752000 139.355000 7856.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 7865.752000 147.284000 7856.752000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 7865.752000 150.074000 7856.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 7865.752000 155.897000 7856.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 7865.752000 158.750000 7856.752000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 7865.752000 161.853000 7856.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7855.252000 82.124000 7846.252000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 7855.252000 87.137000 7846.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 7855.252000 90.071000 7846.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 7855.252000 93.356000 7846.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 7855.252000 100.403000 7846.252000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 7855.252000 104.921000 7846.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 7855.252000 109.205000 7846.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 7855.252000 117.737000 7846.252000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 7855.252000 123.119000 7846.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 7855.252000 128.996000 7846.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 7855.252000 132.605000 7846.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 7855.252000 138.392000 7846.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 7855.252000 141.749000 7846.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 7855.252000 149.507000 7846.252000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 7855.252000 153.800000 7846.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 7855.252000 158.876000 7846.252000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 7855.252000 161.853000 7846.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7844.752000 81.764000 7835.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 7844.752000 87.596000 7835.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 7844.752000 93.356000 7835.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 7844.752000 102.050000 7835.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 7844.752000 113.822000 7835.752000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 7844.752000 122.651000 7835.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 7844.752000 134.117000 7835.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 7844.752000 138.401000 7835.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 7844.752000 147.149000 7835.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 7844.752000 158.921000 7835.752000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 7844.752000 161.853000 7835.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7834.252000 79.271000 7825.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 7834.252000 84.338000 7825.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 7834.252000 89.621000 7825.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 7834.252000 94.643000 7825.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 7834.252000 100.502000 7825.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 7834.252000 106.262000 7825.252000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 7834.252000 111.518000 7825.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 7834.252000 116.216000 7825.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 7834.252000 119.249000 7825.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 7834.252000 122.363000 7825.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 7834.252000 128.186000 7825.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 7834.252000 131.345000 7825.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 7834.252000 137.060000 7825.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 7834.252000 140.147000 7825.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 7834.252000 145.007000 7825.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 7834.252000 148.598000 7825.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 7834.252000 151.460000 7825.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 7834.252000 155.789000 7825.252000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 7834.252000 158.933000 7825.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7823.752000 80.702000 7814.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 7823.752000 83.573000 7814.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 7823.752000 89.396000 7814.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 7823.752000 95.156000 7814.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 7823.752000 100.547000 7814.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 7823.752000 109.052000 7814.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 7823.752000 111.959000 7814.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 7823.752000 117.251000 7814.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 7823.752000 121.904000 7814.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 7823.752000 126.503000 7814.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 7823.752000 129.338000 7814.752000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 7823.752000 134.936000 7814.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 7823.752000 143.441000 7814.752000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 7823.752000 148.796000 7814.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 7823.752000 154.574000 7814.752000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 7823.752000 158.876000 7814.752000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 7823.752000 161.853000 7814.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7813.252000 79.271000 7804.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 7813.252000 85.094000 7804.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 7813.252000 88.703000 7804.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 7813.252000 94.112000 7804.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 7813.252000 97.244000 7804.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 7813.252000 103.058000 7804.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 7813.252000 108.890000 7804.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 7813.252000 111.950000 7804.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 7813.252000 115.271000 7804.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 7813.252000 120.338000 7804.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 7813.252000 125.621000 7804.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 7813.252000 131.363000 7804.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 7813.252000 134.558000 7804.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 7813.252000 140.048000 7804.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 7813.252000 145.430000 7804.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 7813.252000 150.551000 7804.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 7813.252000 155.960000 7804.252000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 7813.252000 158.933000 7804.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7802.752000 80.009000 7793.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 7802.752000 85.364000 7793.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 7802.752000 88.271000 7793.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 7802.752000 91.169000 7793.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 7802.752000 97.955000 7793.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 7802.752000 107.765000 7793.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 7802.752000 110.672000 7793.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 7802.752000 115.964000 7793.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 7802.752000 120.617000 7793.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 7802.752000 125.216000 7793.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 7802.752000 128.051000 7793.752000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 7802.752000 134.954000 7793.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 7802.752000 146.285000 7793.752000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 7802.752000 151.667000 7793.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 7802.752000 155.906000 7793.752000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 7802.752000 159.033000 7793.752000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 7793.300000 0 72.100000 7793.300000 0 72.100000 7928.800000 0 72.000000 7928.800000 0 72.000000 7793.300000 0
+eoFillPath subpath 1 163.100000 7793.300000 0 163.200000 7793.300000 0 163.200000 7928.800000 0 163.100000 7928.800000 0 163.100000 7793.300000 0
+eoFillPath subpath 1 72.000000 7928.700000 0 163.200000 7928.700000 0 163.200000 7928.800000 0 72.000000 7928.800000 0 72.000000 7928.700000 0
+eoFillPath subpath 1 72.000000 7793.300000 0 163.200000 7793.300000 0 163.200000 7793.400000 0 72.000000 7793.400000 0 72.000000 7793.300000 0
+saveState
+eoClipPath subpath 1 96.900000 7868.600000 0 138.300000 7868.600000 0 138.300000 7912.800000 0 96.900000 7912.800000 0 96.900000 7868.600000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -707670.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 7513.800000 0 165.500000 7513.800000 0 165.500000 7518.800000 0 76.900000 7518.800000 0 76.900000 7513.800000 0
+eoFillPath subpath 1 160.500000 7518.700000 0 165.500000 7518.700000 0 165.500000 7675.000000 0 160.500000 7675.000000 0 160.500000 7518.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 7518.800000 0 121.400000 7518.800000 0 121.400000 7679.900000 0 72.000000 7679.900000 0 72.000000 7518.800000 0
+saveState
+eoClipPath subpath 1 72.000000 7518.700000 0 160.500000 7518.700000 0 160.500000 7679.800000 0 72.000000 7679.800000 0 72.000000 7518.700000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -670970.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 7675.580000 89.280000 7665.580000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 7675.580000 95.630000 7665.580000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 7675.580000 99.520000 7665.580000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 7675.580000 102.270000 7665.580000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 7675.580000 108.450000 7665.580000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 7675.580000 112.610000 7665.580000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 7675.580000 118.510000 7665.580000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 7675.580000 121.670000 7665.580000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 7675.580000 124.470000 7665.580000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 7675.580000 130.830000 7665.580000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 7675.580000 133.970000 7665.580000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 7675.580000 137.920000 7665.580000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 7675.580000 144.230000 7665.580000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 7675.580000 150.350000 7665.580000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 7675.580000 153.570000 7665.580000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 7663.880000 95.000000 7653.880000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 7663.880000 97.770000 7653.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 7663.880000 103.000000 7653.880000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 7663.880000 109.330000 7653.880000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 7663.880000 117.470000 7653.880000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 7663.880000 123.620000 7653.880000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 7663.880000 128.800000 7653.880000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 7663.880000 135.130000 7653.880000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 7663.880000 141.250000 7653.880000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 7663.880000 145.410000 7653.880000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7649.052000 82.961000 7640.052000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 7649.052000 87.614000 7640.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 7649.052000 93.356000 7640.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 7649.052000 98.612000 7640.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 7649.052000 103.733000 7640.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 7649.052000 106.568000 7640.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 7649.052000 111.959000 7640.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 7649.052000 114.866000 7640.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 7649.052000 117.665000 7640.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 7649.052000 122.768000 7640.052000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 7649.052000 125.747000 7640.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 7649.052000 131.651000 7640.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 7649.052000 136.907000 7640.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 7649.052000 142.307000 7640.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 7649.052000 148.049000 7640.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 7649.052000 150.956000 7640.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 7649.052000 156.302000 7640.052000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7649.052000 159.253000 7640.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7638.552000 84.095000 7629.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 7638.552000 89.900000 7629.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 7638.552000 95.318000 7629.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 7638.552000 100.349000 7629.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 7638.552000 110.789000 7629.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 7638.552000 111.464000 7629.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 7638.552000 114.362000 7629.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 7638.552000 119.348000 7629.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 7638.552000 126.962000 7629.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 7638.552000 132.047000 7629.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 7638.552000 139.958000 7629.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 7638.552000 142.865000 7629.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 7638.552000 147.410000 7629.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 7638.552000 153.287000 7629.552000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 7638.552000 156.333000 7629.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7628.052000 84.095000 7619.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 7628.052000 89.468000 7619.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 7628.052000 94.121000 7619.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 7628.052000 99.899000 7619.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 7628.052000 105.218000 7619.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 7628.052000 109.502000 7619.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 7628.052000 115.649000 7619.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 7628.052000 122.327000 7619.052000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 7628.052000 127.718000 7619.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 7628.052000 132.002000 7619.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 7628.052000 138.149000 7619.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 7628.052000 145.205000 7619.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 7628.052000 150.992000 7619.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 7628.052000 156.311000 7619.052000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7628.052000 159.253000 7619.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7617.552000 82.394000 7608.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 7617.552000 86.705000 7608.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 7617.552000 91.322000 7608.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 7617.552000 94.913000 7608.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 7617.552000 98.054000 7608.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 7617.552000 102.014000 7608.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 7617.552000 104.876000 7608.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 7617.552000 113.435000 7608.552000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 7617.552000 118.718000 7608.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 7617.552000 121.949000 7608.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 7617.552000 125.063000 7608.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 7617.552000 130.886000 7608.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 7617.552000 134.045000 7608.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 7617.552000 138.005000 7608.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 7617.552000 143.792000 7608.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 7617.552000 149.111000 7608.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 7617.552000 151.964000 7608.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 7617.552000 156.293000 7608.552000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 7617.552000 159.153000 7608.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7607.052000 79.271000 7598.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 7607.052000 82.169000 7598.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 7607.052000 85.526000 7598.052000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 7607.052000 90.818000 7598.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 7607.052000 94.454000 7598.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 7607.052000 99.008000 7598.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 7607.052000 104.318000 7598.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 7607.052000 110.096000 7598.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 7607.052000 115.856000 7598.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 7607.052000 119.546000 7598.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 7607.052000 124.001000 7598.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 7607.052000 129.509000 7598.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 7607.052000 133.145000 7598.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 7607.052000 139.751000 7598.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 7607.052000 145.205000 7598.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 7607.052000 148.841000 7598.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 7607.052000 152.657000 7598.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 7607.052000 156.293000 7598.052000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7607.052000 159.253000 7598.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7596.552000 84.095000 7587.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 7596.552000 88.406000 7587.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 7596.552000 93.824000 7587.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 7596.552000 99.602000 7587.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 7596.552000 105.362000 7587.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 7596.552000 108.422000 7587.552000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 7596.552000 116.747000 7587.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 7596.552000 129.275000 7587.552000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 7596.552000 135.089000 7587.552000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 7596.552000 138.698000 7587.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 7596.552000 141.560000 7587.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 7596.552000 146.906000 7587.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 7596.552000 151.190000 7587.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 7596.552000 156.266000 7587.552000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7596.552000 159.253000 7587.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7586.052000 82.196000 7577.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 7586.052000 87.560000 7577.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 7586.052000 92.213000 7577.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 7586.052000 96.551000 7577.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 7586.052000 101.708000 7577.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 7586.052000 107.216000 7577.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 7586.052000 111.653000 7577.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 7586.052000 118.961000 7577.052000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 7586.052000 124.316000 7577.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 7586.052000 128.654000 7577.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 7586.052000 133.172000 7577.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 7586.052000 138.995000 7577.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 7586.052000 143.612000 7577.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 7586.052000 148.913000 7577.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 7586.052000 153.197000 7577.052000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 7586.052000 156.333000 7577.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7575.552000 80.009000 7566.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 7575.552000 85.319000 7566.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 7575.552000 91.061000 7566.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 7575.552000 100.052000 7566.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 7575.552000 113.993000 7566.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 7575.552000 116.873000 7566.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 7575.552000 120.410000 7566.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 7575.552000 126.296000 7566.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 7575.552000 135.350000 7566.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 7575.552000 145.106000 7566.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 7575.552000 150.893000 7566.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 7575.552000 156.212000 7566.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7575.552000 159.253000 7566.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7565.052000 82.196000 7556.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 7565.052000 87.560000 7556.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 7565.052000 93.392000 7556.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 7565.052000 99.152000 7556.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 7565.052000 101.960000 7556.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 7565.052000 107.306000 7556.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 7565.052000 111.905000 7556.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 7565.052000 115.640000 7556.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 7565.052000 122.444000 7556.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 7565.052000 127.898000 7556.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 7565.052000 135.575000 7556.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 7565.052000 141.380000 7556.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 7565.052000 145.241000 7556.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 7565.052000 150.803000 7556.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 7565.052000 156.302000 7556.052000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7565.052000 159.253000 7556.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7554.552000 80.009000 7545.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 7554.552000 85.796000 7545.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 7554.552000 91.115000 7545.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 7554.552000 95.399000 7545.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 7554.552000 100.718000 7545.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 7554.552000 107.054000 7545.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 7554.552000 118.097000 7545.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 7554.552000 123.524000 7545.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 7554.552000 129.401000 7545.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 7554.552000 131.768000 7545.552000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 7554.552000 135.413000 7545.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 7554.552000 141.659000 7545.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 7554.552000 150.965000 7545.552000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 7554.552000 156.320000 7545.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7554.552000 159.253000 7545.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7544.052000 81.017000 7535.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 7544.052000 84.608000 7535.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 7544.052000 89.963000 7535.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 7544.052000 92.870000 7535.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 7544.052000 98.693000 7535.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 7544.052000 103.310000 7535.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 7544.052000 107.243000 7535.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 7544.052000 116.081000 7535.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 7544.052000 121.886000 7535.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 7544.052000 127.205000 7535.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 7544.052000 132.983000 7535.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 7544.052000 136.943000 7535.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 7544.052000 143.846000 7535.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 7544.052000 148.184000 7535.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 7544.052000 153.260000 7535.052000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 7544.052000 156.433000 7535.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7533.552000 79.271000 7524.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 7533.552000 85.094000 7524.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 7533.552000 90.854000 7524.552000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 7533.552000 93.653000 7524.552000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 7518.700000 0 72.100000 7518.700000 0 72.100000 7679.900000 0 72.000000 7679.900000 0 72.000000 7518.700000 0
+eoFillPath subpath 1 160.500000 7518.700000 0 160.600000 7518.700000 0 160.600000 7679.900000 0 160.500000 7679.900000 0 160.500000 7518.700000 0
+eoFillPath subpath 1 72.000000 7679.800000 0 160.600000 7679.800000 0 160.600000 7679.900000 0 72.000000 7679.900000 0 72.000000 7679.800000 0
+eoFillPath subpath 1 72.000000 7518.700000 0 160.600000 7518.700000 0 160.600000 7518.800000 0 72.000000 7518.800000 0 72.000000 7518.700000 0
+saveState
+eoClipPath subpath 1 108.000000 7031.300000 0 178.900000 7031.300000 0 178.900000 7088.000000 0 108.000000 7088.000000 0 108.000000 7031.300000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -623940.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 2973.000000 0 165.500000 2973.000000 0 165.500000 2978.000000 0 76.900000 2978.000000 0 76.900000 2973.000000 0
+eoFillPath subpath 1 160.500000 2977.900000 0 165.500000 2977.900000 0 165.500000 3086.700000 0 160.500000 3086.700000 0 160.500000 2977.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 2978.000000 0 160.500000 2978.000000 0 160.500000 3091.600000 0 72.000000 3091.600000 0 72.000000 2978.000000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3087.252000 83.771000 3078.252000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 3087.252000 89.594000 3078.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 3087.252000 92.465000 3078.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 3087.252000 97.568000 3078.252000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 3087.252000 100.943000 3078.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 3087.252000 106.955000 3078.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 3087.252000 110.447000 3078.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 3087.252000 114.425000 3078.252000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 3087.252000 119.717000 3078.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 3087.252000 127.493000 3078.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 3087.252000 130.949000 3078.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 3087.252000 136.574000 3078.252000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 3087.252000 141.920000 3078.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 3087.252000 147.365000 3078.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 3087.252000 151.703000 3078.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 3087.252000 156.320000 3078.252000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 3087.252000 159.153000 3078.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3076.752000 81.764000 3067.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 3076.752000 85.130000 3067.752000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 3076.752000 88.712000 3067.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 3076.752000 94.022000 3067.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 3076.752000 98.306000 3067.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 3076.752000 102.455000 3067.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 3076.752000 106.676000 3067.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 3076.752000 110.312000 3067.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 3076.752000 114.920000 3067.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 3076.752000 119.060000 3067.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 3076.752000 125.450000 3067.752000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 3076.752000 130.832000 3067.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 3076.752000 139.445000 3067.752000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 3076.752000 145.169000 3067.752000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 3076.752000 148.076000 3067.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 3076.752000 153.323000 3067.752000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 3076.752000 156.433000 3067.752000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3066.252000 80.009000 3057.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 3066.252000 82.871000 3057.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 3066.252000 88.316000 3057.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 3066.252000 94.094000 3057.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 3066.252000 96.947000 3057.252000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 3066.252000 104.948000 3057.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 3066.252000 113.705000 3057.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 3066.252000 119.492000 3057.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 3066.252000 124.811000 3057.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 3066.252000 132.848000 3057.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 3066.252000 141.605000 3057.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 3066.252000 144.467000 3057.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 3066.252000 148.103000 3057.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 3066.252000 150.965000 3057.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 3066.252000 156.311000 3057.252000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3066.252000 159.253000 3057.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3055.752000 80.999000 3046.752000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 3055.752000 90.539000 3046.752000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 3055.752000 95.318000 3046.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 3055.752000 99.602000 3046.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 3055.752000 102.473000 3046.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 3055.752000 108.260000 3046.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 3055.752000 110.762000 3046.752000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 3055.752000 115.316000 3046.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 3055.752000 122.156000 3046.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 3055.752000 132.299000 3046.752000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 3055.752000 136.970000 3046.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 3055.752000 139.877000 3046.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 3055.752000 142.775000 3046.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 3055.752000 148.022000 3046.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 3055.752000 152.720000 3046.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 3055.752000 156.311000 3046.752000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3055.752000 159.253000 3046.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3045.252000 83.006000 3036.252000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 3045.252000 88.793000 3036.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 3045.252000 91.664000 3036.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 3045.252000 94.562000 3036.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 3045.252000 100.349000 3036.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 3045.252000 103.157000 3036.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 3045.252000 108.980000 3036.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 3045.252000 114.740000 3036.252000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 3045.252000 119.375000 3036.252000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 3045.252000 128.033000 3036.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 3045.252000 141.479000 3036.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 3045.252000 146.807000 3036.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 3045.252000 152.684000 3036.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 3045.252000 156.293000 3036.252000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3045.252000 159.253000 3036.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3034.752000 79.730000 3025.752000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 3034.752000 84.005000 3025.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 3034.752000 89.423000 3025.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 3034.752000 98.036000 3025.752000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 3034.752000 121.157000 3025.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 3034.752000 145.115000 3025.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 3034.752000 151.001000 3025.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 3034.752000 156.320000 3025.752000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3034.752000 159.253000 3025.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3024.252000 83.285000 3015.252000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 3024.252000 89.099000 3015.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 3024.252000 93.401000 3015.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 3024.252000 98.477000 3015.252000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 3024.252000 103.121000 3015.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 3024.252000 105.974000 3015.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 3024.252000 111.320000 3015.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 3024.252000 115.604000 3015.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 3024.252000 123.857000 3015.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 3024.252000 136.007000 3015.252000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 3024.252000 141.794000 3015.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 3024.252000 144.665000 3015.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 3024.252000 147.464000 3015.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 3024.252000 153.251000 3015.252000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 3024.252000 156.433000 3015.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3013.752000 79.271000 3004.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 3013.752000 85.094000 3004.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 3013.752000 90.854000 3004.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 3013.752000 96.146000 3004.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 3013.752000 102.302000 3004.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 3013.752000 107.711000 3004.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 3013.752000 113.048000 3004.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 3013.752000 119.204000 3004.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 3013.752000 124.991000 3004.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 3013.752000 130.310000 3004.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 3013.752000 135.647000 3004.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 3013.752000 144.755000 3004.752000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 3013.752000 153.323000 3004.752000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 3013.752000 156.333000 3004.752000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3003.252000 82.160000 2994.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 3003.252000 85.067000 2994.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 3003.252000 89.297000 2994.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 3003.252000 94.616000 2994.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 3003.252000 98.747000 2994.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 3003.252000 106.055000 2994.252000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 3003.252000 109.700000 2994.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 3003.252000 115.055000 2994.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 3003.252000 118.601000 2994.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 3003.252000 124.010000 2994.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 3003.252000 128.042000 2994.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 3003.252000 135.998000 2994.252000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 3003.252000 141.785000 2994.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 3003.252000 144.656000 2994.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 3003.252000 147.554000 2994.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 3003.252000 153.341000 2994.252000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 3003.252000 156.433000 2994.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 2992.752000 79.271000 2983.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 2992.752000 85.094000 2983.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 2992.752000 90.854000 2983.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 2992.752000 93.743000 2983.752000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 2977.900000 0 72.100000 2977.900000 0 72.100000 3091.600000 0 72.000000 3091.600000 0 72.000000 2977.900000 0
+eoFillPath subpath 1 160.500000 2977.900000 0 160.600000 2977.900000 0 160.600000 3091.600000 0 160.500000 3091.600000 0 160.500000 2977.900000 0
+eoFillPath subpath 1 72.000000 3091.500000 0 160.600000 3091.500000 0 160.600000 3091.600000 0 72.000000 3091.600000 0 72.000000 3091.500000 0
+eoFillPath subpath 1 72.000000 2977.900000 0 160.600000 2977.900000 0 160.600000 2978.000000 0 72.000000 2978.000000 0 72.000000 2977.900000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 9167.400000 0 169.600000 9167.400000 0 169.600000 9172.400000 0 76.900000 9172.400000 0 76.900000 9167.400000 0
+eoFillPath subpath 1 164.600000 9172.300000 0 169.600000 9172.300000 0 169.600000 9287.900000 0 164.600000 9287.900000 0 164.600000 9172.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 9172.400000 0 121.400000 9172.400000 0 121.400000 9292.800000 0 72.000000 9292.800000 0 72.000000 9172.400000 0
+saveState
+eoClipPath subpath 1 72.000000 9172.300000 0 164.600000 9172.300000 0 164.600000 9292.700000 0 72.000000 9292.700000 0 72.000000 9172.300000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -832210.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 9242.300000 0 93.700000 9242.300000 0 93.700000 9261.500000 0 72.000000 9261.500000 0 72.000000 9242.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 9242.300000 0 169.600000 9242.300000 0 169.600000 9261.500000 0 93.700000 9261.500000 0 93.700000 9242.300000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 9225.600000 0 93.700000 9225.600000 0 93.700000 9242.300000 0 72.000000 9242.300000 0 72.000000 9225.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 9225.600000 0 169.600000 9225.600000 0 169.600000 9242.300000 0 93.700000 9242.300000 0 93.700000 9225.600000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 9206.400000 0 93.700000 9206.400000 0 93.700000 9225.600000 0 72.000000 9225.600000 0 72.000000 9206.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 9206.400000 0 169.600000 9206.400000 0 169.600000 9225.600000 0 93.700000 9225.600000 0 93.700000 9206.400000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 9187.200000 0 93.700000 9187.200000 0 93.700000 9206.400000 0 72.000000 9206.400000 0 72.000000 9187.200000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 9187.200000 0 169.600000 9187.200000 0 169.600000 9206.400000 0 93.700000 9206.400000 0 93.700000 9187.200000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9288.452000 82.898000 9279.452000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 9288.452000 87.200000 9279.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 9288.452000 90.809000 9279.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 9288.452000 93.671000 9279.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 9288.452000 98.315000 9279.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 9288.452000 101.906000 9279.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 9288.452000 106.514000 9279.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 9288.452000 109.754000 9279.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 9288.452000 112.868000 9279.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 9288.452000 118.691000 9279.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 9288.452000 121.850000 9279.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 9288.452000 125.702000 9279.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 9288.452000 131.588000 9279.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 9288.452000 136.907000 9279.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 9288.452000 140.039000 9279.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 9288.452000 146.078000 9279.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 9288.452000 151.442000 9279.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 9288.452000 154.349000 9279.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 9288.452000 157.148000 9279.452000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 9288.452000 160.433000 9279.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9277.952000 84.095000 9268.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 9277.952000 89.468000 9268.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 9277.952000 94.580000 9268.952000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 9277.952000 97.631000 9268.952000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 9257.552000 104.443000 9248.552000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 9257.552000 109.060000 9248.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 9257.552000 113.398000 9248.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 9257.552000 119.194000 9248.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 9257.552000 124.612000 9248.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 9257.552000 127.465000 9248.552000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 9240.852000 101.176000 9231.852000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 9240.852000 104.074000 9231.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 9240.852000 109.420000 9231.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 9240.852000 114.442000 9231.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 9240.852000 120.202000 9231.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 9240.852000 123.811000 9231.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 9240.852000 129.121000 9231.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 9240.852000 134.899000 9231.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 9240.852000 139.516000 9231.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 9240.852000 143.107000 9231.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 9240.852000 148.417000 9231.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 9240.852000 151.270000 9231.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 9240.852000 157.093000 9231.852000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 9224.152000 103.048000 9215.152000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 9224.152000 108.421000 9215.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 9224.152000 113.443000 9215.152000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 9224.152000 118.852000 9215.152000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 9224.152000 124.702000 9215.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 9224.152000 130.021000 9215.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 9224.152000 135.079000 9215.152000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 9204.952000 104.407000 9195.952000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 9204.952000 109.816000 9195.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 9204.952000 115.594000 9195.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 9204.952000 121.354000 9195.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 9204.952000 125.692000 9195.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 9204.952000 128.563000 9195.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 9204.952000 133.954000 9195.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 9204.952000 139.786000 9195.952000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 9172.300000 0 72.100000 9172.300000 0 72.100000 9292.800000 0 72.000000 9292.800000 0 72.000000 9172.300000 0
+eoFillPath subpath 1 164.600000 9172.300000 0 164.700000 9172.300000 0 164.700000 9292.800000 0 164.600000 9292.800000 0 164.600000 9172.300000 0
+eoFillPath subpath 1 72.000000 9292.700000 0 164.700000 9292.700000 0 164.700000 9292.800000 0 72.000000 9292.800000 0 72.000000 9292.700000 0
+eoFillPath subpath 1 72.000000 9172.300000 0 164.700000 9172.300000 0 164.700000 9172.400000 0 72.000000 9172.400000 0 72.000000 9172.300000 0
+eoFillPath subpath 1 91.300000 9187.200000 0 93.700000 9187.200000 0 93.700000 9261.500000 0 91.300000 9261.500000 0 91.300000 9187.200000 0
+eoFillPath subpath 1 72.000000 9206.400000 0 169.600000 9206.400000 0 169.600000 9208.800000 0 72.000000 9208.800000 0 72.000000 9206.400000 0
+eoFillPath subpath 1 72.000000 9259.100000 0 169.600000 9259.100000 0 169.600000 9261.500000 0 72.000000 9261.500000 0 72.000000 9259.100000 0
+eoFillPath subpath 1 72.000000 9187.200000 0 169.600000 9187.200000 0 169.600000 9189.600000 0 72.000000 9189.600000 0 72.000000 9187.200000 0
+saveState
+eoClipPath subpath 1 108.000000 1321.200000 0 150.800000 1321.200000 0 150.800000 1365.500000 0 108.000000 1365.500000 0 108.000000 1321.200000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 -52930.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 471.200000 0 499.600000 471.200000 0 499.600000 476.300000 0 186.800000 476.300000 0 186.800000 471.200000 0
+eoFillPath subpath 1 494.500000 476.200000 0 499.600000 476.200000 0 499.600000 664.600000 0 494.500000 664.600000 0 494.500000 476.200000 0
+saveState
+eoClipPath subpath 1 181.800000 476.300000 0 494.500000 476.300000 0 494.500000 669.600000 0 181.800000 669.600000 0 181.800000 476.300000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 669.700000 0 494.500000 669.700000 0 494.500000 669.700000 0 181.700000 669.700000 0
+eoFillPath subpath 1 181.700000 669.700000 0 494.500000 669.700000 0 494.500000 668.900000 0 181.700000 668.900000 0 181.700000 669.700000 0
+eoFillPath subpath 1 181.700000 668.900000 0 494.500000 668.900000 0 494.500000 668.200000 0 181.700000 668.200000 0 181.700000 668.900000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 668.200000 0 494.500000 668.200000 0 494.500000 667.400000 0 181.700000 667.400000 0 181.700000 668.200000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 667.400000 0 494.500000 667.400000 0 494.500000 666.600000 0 181.700000 666.600000 0 181.700000 667.400000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 666.600000 0 494.500000 666.600000 0 494.500000 665.900000 0 181.700000 665.900000 0 181.700000 666.600000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 665.900000 0 494.500000 665.900000 0 494.500000 665.100000 0 181.700000 665.100000 0 181.700000 665.900000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 665.100000 0 494.500000 665.100000 0 494.500000 664.400000 0 181.700000 664.400000 0 181.700000 665.100000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 664.400000 0 494.500000 664.400000 0 494.500000 663.600000 0 181.700000 663.600000 0 181.700000 664.400000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 663.600000 0 494.500000 663.600000 0 494.500000 662.900000 0 181.700000 662.900000 0 181.700000 663.600000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 662.900000 0 494.500000 662.900000 0 494.500000 662.100000 0 181.700000 662.100000 0 181.700000 662.900000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 662.100000 0 494.500000 662.100000 0 494.500000 661.300000 0 181.700000 661.300000 0 181.700000 662.100000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 661.300000 0 494.500000 661.300000 0 494.500000 660.600000 0 181.700000 660.600000 0 181.700000 661.300000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 660.600000 0 494.500000 660.600000 0 494.500000 659.800000 0 181.700000 659.800000 0 181.700000 660.600000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 659.800000 0 494.500000 659.800000 0 494.500000 659.100000 0 181.700000 659.100000 0 181.700000 659.800000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 659.100000 0 494.500000 659.100000 0 494.500000 658.300000 0 181.700000 658.300000 0 181.700000 659.100000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 658.300000 0 494.500000 658.300000 0 494.500000 657.500000 0 181.700000 657.500000 0 181.700000 658.300000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 657.500000 0 494.500000 657.500000 0 494.500000 656.800000 0 181.700000 656.800000 0 181.700000 657.500000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 656.800000 0 494.500000 656.800000 0 494.500000 656.000000 0 181.700000 656.000000 0 181.700000 656.800000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 656.000000 0 494.500000 656.000000 0 494.500000 655.300000 0 181.700000 655.300000 0 181.700000 656.000000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 655.300000 0 494.500000 655.300000 0 494.500000 654.500000 0 181.700000 654.500000 0 181.700000 655.300000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 654.500000 0 494.500000 654.500000 0 494.500000 653.700000 0 181.700000 653.700000 0 181.700000 654.500000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 653.700000 0 494.500000 653.700000 0 494.500000 653.000000 0 181.700000 653.000000 0 181.700000 653.700000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 653.000000 0 494.500000 653.000000 0 494.500000 652.200000 0 181.700000 652.200000 0 181.700000 653.000000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 652.200000 0 494.500000 652.200000 0 494.500000 651.500000 0 181.700000 651.500000 0 181.700000 652.200000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 651.500000 0 494.500000 651.500000 0 494.500000 650.700000 0 181.700000 650.700000 0 181.700000 651.500000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 650.700000 0 494.500000 650.700000 0 494.500000 650.000000 0 181.700000 650.000000 0 181.700000 650.700000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 650.000000 0 494.500000 650.000000 0 494.500000 649.200000 0 181.700000 649.200000 0 181.700000 650.000000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 649.200000 0 494.500000 649.200000 0 494.500000 648.400000 0 181.700000 648.400000 0 181.700000 649.200000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 648.400000 0 494.500000 648.400000 0 494.500000 647.700000 0 181.700000 647.700000 0 181.700000 648.400000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 647.700000 0 494.500000 647.700000 0 494.500000 646.900000 0 181.700000 646.900000 0 181.700000 647.700000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 646.900000 0 494.500000 646.900000 0 494.500000 646.200000 0 181.700000 646.200000 0 181.700000 646.900000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 646.200000 0 494.500000 646.200000 0 494.500000 645.400000 0 181.700000 645.400000 0 181.700000 646.200000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 645.400000 0 494.500000 645.400000 0 494.500000 644.600000 0 181.700000 644.600000 0 181.700000 645.400000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 644.600000 0 494.500000 644.600000 0 494.500000 643.900000 0 181.700000 643.900000 0 181.700000 644.600000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 643.900000 0 494.500000 643.900000 0 494.500000 643.100000 0 181.700000 643.100000 0 181.700000 643.900000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 643.100000 0 494.500000 643.100000 0 494.500000 642.400000 0 181.700000 642.400000 0 181.700000 643.100000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 642.400000 0 494.500000 642.400000 0 494.500000 641.600000 0 181.700000 641.600000 0 181.700000 642.400000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 641.600000 0 494.500000 641.600000 0 494.500000 640.800000 0 181.700000 640.800000 0 181.700000 641.600000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 640.800000 0 494.500000 640.800000 0 494.500000 640.100000 0 181.700000 640.100000 0 181.700000 640.800000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 640.100000 0 494.500000 640.100000 0 494.500000 639.300000 0 181.700000 639.300000 0 181.700000 640.100000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 639.300000 0 494.500000 639.300000 0 494.500000 638.600000 0 181.700000 638.600000 0 181.700000 639.300000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 638.600000 0 494.500000 638.600000 0 494.500000 637.800000 0 181.700000 637.800000 0 181.700000 638.600000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 637.800000 0 494.500000 637.800000 0 494.500000 637.100000 0 181.700000 637.100000 0 181.700000 637.800000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 637.100000 0 494.500000 637.100000 0 494.500000 636.300000 0 181.700000 636.300000 0 181.700000 637.100000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 636.300000 0 494.500000 636.300000 0 494.500000 635.500000 0 181.700000 635.500000 0 181.700000 636.300000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 635.500000 0 494.500000 635.500000 0 494.500000 634.800000 0 181.700000 634.800000 0 181.700000 635.500000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 634.800000 0 494.500000 634.800000 0 494.500000 634.000000 0 181.700000 634.000000 0 181.700000 634.800000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 634.000000 0 494.500000 634.000000 0 494.500000 633.300000 0 181.700000 633.300000 0 181.700000 634.000000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 633.300000 0 494.500000 633.300000 0 494.500000 632.500000 0 181.700000 632.500000 0 181.700000 633.300000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 632.500000 0 494.500000 632.500000 0 494.500000 631.700000 0 181.700000 631.700000 0 181.700000 632.500000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 631.700000 0 494.500000 631.700000 0 494.500000 631.000000 0 181.700000 631.000000 0 181.700000 631.700000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 631.000000 0 494.500000 631.000000 0 494.500000 630.200000 0 181.700000 630.200000 0 181.700000 631.000000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 630.200000 0 494.500000 630.200000 0 494.500000 629.500000 0 181.700000 629.500000 0 181.700000 630.200000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 629.500000 0 494.500000 629.500000 0 494.500000 628.700000 0 181.700000 628.700000 0 181.700000 629.500000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 628.700000 0 494.500000 628.700000 0 494.500000 627.900000 0 181.700000 627.900000 0 181.700000 628.700000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 627.900000 0 494.500000 627.900000 0 494.500000 627.200000 0 181.700000 627.200000 0 181.700000 627.900000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 627.200000 0 494.500000 627.200000 0 494.500000 626.400000 0 181.700000 626.400000 0 181.700000 627.200000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 626.400000 0 494.500000 626.400000 0 494.500000 625.700000 0 181.700000 625.700000 0 181.700000 626.400000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 625.700000 0 494.500000 625.700000 0 494.500000 624.900000 0 181.700000 624.900000 0 181.700000 625.700000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 624.900000 0 494.500000 624.900000 0 494.500000 624.200000 0 181.700000 624.200000 0 181.700000 624.900000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 624.200000 0 494.500000 624.200000 0 494.500000 623.400000 0 181.700000 623.400000 0 181.700000 624.200000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 623.400000 0 494.500000 623.400000 0 494.500000 622.600000 0 181.700000 622.600000 0 181.700000 623.400000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 622.600000 0 494.500000 622.600000 0 494.500000 621.900000 0 181.700000 621.900000 0 181.700000 622.600000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 621.900000 0 494.500000 621.900000 0 494.500000 621.100000 0 181.700000 621.100000 0 181.700000 621.900000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 621.100000 0 494.500000 621.100000 0 494.500000 620.400000 0 181.700000 620.400000 0 181.700000 621.100000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 620.400000 0 494.500000 620.400000 0 494.500000 619.600000 0 181.700000 619.600000 0 181.700000 620.400000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 619.600000 0 494.500000 619.600000 0 494.500000 618.800000 0 181.700000 618.800000 0 181.700000 619.600000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 618.800000 0 494.500000 618.800000 0 494.500000 618.100000 0 181.700000 618.100000 0 181.700000 618.800000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 618.100000 0 494.500000 618.100000 0 494.500000 617.300000 0 181.700000 617.300000 0 181.700000 618.100000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 617.300000 0 494.500000 617.300000 0 494.500000 616.600000 0 181.700000 616.600000 0 181.700000 617.300000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 616.600000 0 494.500000 616.600000 0 494.500000 615.800000 0 181.700000 615.800000 0 181.700000 616.600000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 615.800000 0 494.500000 615.800000 0 494.500000 615.000000 0 181.700000 615.000000 0 181.700000 615.800000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 615.000000 0 494.500000 615.000000 0 494.500000 614.300000 0 181.700000 614.300000 0 181.700000 615.000000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 614.300000 0 494.500000 614.300000 0 494.500000 613.500000 0 181.700000 613.500000 0 181.700000 614.300000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 613.500000 0 494.500000 613.500000 0 494.500000 612.800000 0 181.700000 612.800000 0 181.700000 613.500000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 612.800000 0 494.500000 612.800000 0 494.500000 612.000000 0 181.700000 612.000000 0 181.700000 612.800000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 612.000000 0 494.500000 612.000000 0 494.500000 611.300000 0 181.700000 611.300000 0 181.700000 612.000000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 611.300000 0 494.500000 611.300000 0 494.500000 610.500000 0 181.700000 610.500000 0 181.700000 611.300000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 610.500000 0 494.500000 610.500000 0 494.500000 609.700000 0 181.700000 609.700000 0 181.700000 610.500000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 609.700000 0 494.500000 609.700000 0 494.500000 609.000000 0 181.700000 609.000000 0 181.700000 609.700000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 609.000000 0 494.500000 609.000000 0 494.500000 608.200000 0 181.700000 608.200000 0 181.700000 609.000000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 608.200000 0 494.500000 608.200000 0 494.500000 607.500000 0 181.700000 607.500000 0 181.700000 608.200000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 607.500000 0 494.500000 607.500000 0 494.500000 606.700000 0 181.700000 606.700000 0 181.700000 607.500000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 606.700000 0 494.500000 606.700000 0 494.500000 605.900000 0 181.700000 605.900000 0 181.700000 606.700000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 605.900000 0 494.500000 605.900000 0 494.500000 605.200000 0 181.700000 605.200000 0 181.700000 605.900000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 605.200000 0 494.500000 605.200000 0 494.500000 604.400000 0 181.700000 604.400000 0 181.700000 605.200000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 604.400000 0 494.500000 604.400000 0 494.500000 603.700000 0 181.700000 603.700000 0 181.700000 604.400000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 603.700000 0 494.500000 603.700000 0 494.500000 602.900000 0 181.700000 602.900000 0 181.700000 603.700000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 602.900000 0 494.500000 602.900000 0 494.500000 602.100000 0 181.700000 602.100000 0 181.700000 602.900000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 602.100000 0 494.500000 602.100000 0 494.500000 601.400000 0 181.700000 601.400000 0 181.700000 602.100000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 601.400000 0 494.500000 601.400000 0 494.500000 600.600000 0 181.700000 600.600000 0 181.700000 601.400000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 600.600000 0 494.500000 600.600000 0 494.500000 599.900000 0 181.700000 599.900000 0 181.700000 600.600000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 599.900000 0 494.500000 599.900000 0 494.500000 599.100000 0 181.700000 599.100000 0 181.700000 599.900000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 599.100000 0 494.500000 599.100000 0 494.500000 598.400000 0 181.700000 598.400000 0 181.700000 599.100000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 598.400000 0 494.500000 598.400000 0 494.500000 597.600000 0 181.700000 597.600000 0 181.700000 598.400000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 597.600000 0 494.500000 597.600000 0 494.500000 596.800000 0 181.700000 596.800000 0 181.700000 597.600000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 596.800000 0 494.500000 596.800000 0 494.500000 596.100000 0 181.700000 596.100000 0 181.700000 596.800000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 596.100000 0 494.500000 596.100000 0 494.500000 595.300000 0 181.700000 595.300000 0 181.700000 596.100000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 595.300000 0 494.500000 595.300000 0 494.500000 594.600000 0 181.700000 594.600000 0 181.700000 595.300000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 594.600000 0 494.500000 594.600000 0 494.500000 593.800000 0 181.700000 593.800000 0 181.700000 594.600000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 593.800000 0 494.500000 593.800000 0 494.500000 593.000000 0 181.700000 593.000000 0 181.700000 593.800000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 593.000000 0 494.500000 593.000000 0 494.500000 592.300000 0 181.700000 592.300000 0 181.700000 593.000000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 592.300000 0 494.500000 592.300000 0 494.500000 591.500000 0 181.700000 591.500000 0 181.700000 592.300000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 591.500000 0 494.500000 591.500000 0 494.500000 590.800000 0 181.700000 590.800000 0 181.700000 591.500000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 590.800000 0 494.500000 590.800000 0 494.500000 590.000000 0 181.700000 590.000000 0 181.700000 590.800000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 590.000000 0 494.500000 590.000000 0 494.500000 589.200000 0 181.700000 589.200000 0 181.700000 590.000000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 589.200000 0 494.500000 589.200000 0 494.500000 588.500000 0 181.700000 588.500000 0 181.700000 589.200000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 588.500000 0 494.500000 588.500000 0 494.500000 587.700000 0 181.700000 587.700000 0 181.700000 588.500000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 587.700000 0 494.500000 587.700000 0 494.500000 587.000000 0 181.700000 587.000000 0 181.700000 587.700000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 587.000000 0 494.500000 587.000000 0 494.500000 586.200000 0 181.700000 586.200000 0 181.700000 587.000000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 586.200000 0 494.500000 586.200000 0 494.500000 585.500000 0 181.700000 585.500000 0 181.700000 586.200000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 585.500000 0 494.500000 585.500000 0 494.500000 584.700000 0 181.700000 584.700000 0 181.700000 585.500000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 584.700000 0 494.500000 584.700000 0 494.500000 583.900000 0 181.700000 583.900000 0 181.700000 584.700000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 583.900000 0 494.500000 583.900000 0 494.500000 583.200000 0 181.700000 583.200000 0 181.700000 583.900000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 583.200000 0 494.500000 583.200000 0 494.500000 582.400000 0 181.700000 582.400000 0 181.700000 583.200000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 582.400000 0 494.500000 582.400000 0 494.500000 581.700000 0 181.700000 581.700000 0 181.700000 582.400000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 581.700000 0 494.500000 581.700000 0 494.500000 580.900000 0 181.700000 580.900000 0 181.700000 581.700000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 580.900000 0 494.500000 580.900000 0 494.500000 580.100000 0 181.700000 580.100000 0 181.700000 580.900000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 580.100000 0 494.500000 580.100000 0 494.500000 579.400000 0 181.700000 579.400000 0 181.700000 580.100000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 579.400000 0 494.500000 579.400000 0 494.500000 578.600000 0 181.700000 578.600000 0 181.700000 579.400000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 578.600000 0 494.500000 578.600000 0 494.500000 577.900000 0 181.700000 577.900000 0 181.700000 578.600000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 577.900000 0 494.500000 577.900000 0 494.500000 577.100000 0 181.700000 577.100000 0 181.700000 577.900000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 577.100000 0 494.500000 577.100000 0 494.500000 576.300000 0 181.700000 576.300000 0 181.700000 577.100000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 576.300000 0 494.500000 576.300000 0 494.500000 575.600000 0 181.700000 575.600000 0 181.700000 576.300000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 575.600000 0 494.500000 575.600000 0 494.500000 574.800000 0 181.700000 574.800000 0 181.700000 575.600000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 574.800000 0 494.500000 574.800000 0 494.500000 574.100000 0 181.700000 574.100000 0 181.700000 574.800000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 574.100000 0 494.500000 574.100000 0 494.500000 573.300000 0 181.700000 573.300000 0 181.700000 574.100000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 573.300000 0 494.500000 573.300000 0 494.500000 572.600000 0 181.700000 572.600000 0 181.700000 573.300000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 572.600000 0 494.500000 572.600000 0 494.500000 571.800000 0 181.700000 571.800000 0 181.700000 572.600000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 571.800000 0 494.500000 571.800000 0 494.500000 571.000000 0 181.700000 571.000000 0 181.700000 571.800000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 571.000000 0 494.500000 571.000000 0 494.500000 570.300000 0 181.700000 570.300000 0 181.700000 571.000000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 570.300000 0 494.500000 570.300000 0 494.500000 569.500000 0 181.700000 569.500000 0 181.700000 570.300000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 569.500000 0 494.500000 569.500000 0 494.500000 568.800000 0 181.700000 568.800000 0 181.700000 569.500000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 568.800000 0 494.500000 568.800000 0 494.500000 568.000000 0 181.700000 568.000000 0 181.700000 568.800000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 568.000000 0 494.500000 568.000000 0 494.500000 567.200000 0 181.700000 567.200000 0 181.700000 568.000000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 567.200000 0 494.500000 567.200000 0 494.500000 566.500000 0 181.700000 566.500000 0 181.700000 567.200000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 566.500000 0 494.500000 566.500000 0 494.500000 565.700000 0 181.700000 565.700000 0 181.700000 566.500000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 565.700000 0 494.500000 565.700000 0 494.500000 565.000000 0 181.700000 565.000000 0 181.700000 565.700000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 565.000000 0 494.500000 565.000000 0 494.500000 564.200000 0 181.700000 564.200000 0 181.700000 565.000000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 564.200000 0 494.500000 564.200000 0 494.500000 563.400000 0 181.700000 563.400000 0 181.700000 564.200000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 563.400000 0 494.500000 563.400000 0 494.500000 562.700000 0 181.700000 562.700000 0 181.700000 563.400000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 562.700000 0 494.500000 562.700000 0 494.500000 561.900000 0 181.700000 561.900000 0 181.700000 562.700000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 561.900000 0 494.500000 561.900000 0 494.500000 561.200000 0 181.700000 561.200000 0 181.700000 561.900000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 561.200000 0 494.500000 561.200000 0 494.500000 560.400000 0 181.700000 560.400000 0 181.700000 561.200000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 560.400000 0 494.500000 560.400000 0 494.500000 559.700000 0 181.700000 559.700000 0 181.700000 560.400000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 559.700000 0 494.500000 559.700000 0 494.500000 558.900000 0 181.700000 558.900000 0 181.700000 559.700000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 558.900000 0 494.500000 558.900000 0 494.500000 558.100000 0 181.700000 558.100000 0 181.700000 558.900000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 558.100000 0 494.500000 558.100000 0 494.500000 557.400000 0 181.700000 557.400000 0 181.700000 558.100000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 557.400000 0 494.500000 557.400000 0 494.500000 556.600000 0 181.700000 556.600000 0 181.700000 557.400000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 556.600000 0 494.500000 556.600000 0 494.500000 555.900000 0 181.700000 555.900000 0 181.700000 556.600000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 555.900000 0 494.500000 555.900000 0 494.500000 555.100000 0 181.700000 555.100000 0 181.700000 555.900000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 555.100000 0 494.500000 555.100000 0 494.500000 554.300000 0 181.700000 554.300000 0 181.700000 555.100000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 554.300000 0 494.500000 554.300000 0 494.500000 553.600000 0 181.700000 553.600000 0 181.700000 554.300000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 553.600000 0 494.500000 553.600000 0 494.500000 552.800000 0 181.700000 552.800000 0 181.700000 553.600000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 552.800000 0 494.500000 552.800000 0 494.500000 552.100000 0 181.700000 552.100000 0 181.700000 552.800000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 552.100000 0 494.500000 552.100000 0 494.500000 551.300000 0 181.700000 551.300000 0 181.700000 552.100000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 551.300000 0 494.500000 551.300000 0 494.500000 550.500000 0 181.700000 550.500000 0 181.700000 551.300000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 550.500000 0 494.500000 550.500000 0 494.500000 549.800000 0 181.700000 549.800000 0 181.700000 550.500000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 549.800000 0 494.500000 549.800000 0 494.500000 549.000000 0 181.700000 549.000000 0 181.700000 549.800000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 549.000000 0 494.500000 549.000000 0 494.500000 548.300000 0 181.700000 548.300000 0 181.700000 549.000000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 548.300000 0 494.500000 548.300000 0 494.500000 547.500000 0 181.700000 547.500000 0 181.700000 548.300000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 547.500000 0 494.500000 547.500000 0 494.500000 546.800000 0 181.700000 546.800000 0 181.700000 547.500000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 546.800000 0 494.500000 546.800000 0 494.500000 546.000000 0 181.700000 546.000000 0 181.700000 546.800000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 546.000000 0 494.500000 546.000000 0 494.500000 545.200000 0 181.700000 545.200000 0 181.700000 546.000000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 545.200000 0 494.500000 545.200000 0 494.500000 544.500000 0 181.700000 544.500000 0 181.700000 545.200000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 544.500000 0 494.500000 544.500000 0 494.500000 543.700000 0 181.700000 543.700000 0 181.700000 544.500000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 543.700000 0 494.500000 543.700000 0 494.500000 543.000000 0 181.700000 543.000000 0 181.700000 543.700000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 543.000000 0 494.500000 543.000000 0 494.500000 542.200000 0 181.700000 542.200000 0 181.700000 543.000000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 542.200000 0 494.500000 542.200000 0 494.500000 541.400000 0 181.700000 541.400000 0 181.700000 542.200000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 541.400000 0 494.500000 541.400000 0 494.500000 540.700000 0 181.700000 540.700000 0 181.700000 541.400000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 540.700000 0 494.500000 540.700000 0 494.500000 539.900000 0 181.700000 539.900000 0 181.700000 540.700000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 539.900000 0 494.500000 539.900000 0 494.500000 539.200000 0 181.700000 539.200000 0 181.700000 539.900000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 539.200000 0 494.500000 539.200000 0 494.500000 538.400000 0 181.700000 538.400000 0 181.700000 539.200000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 538.400000 0 494.500000 538.400000 0 494.500000 537.600000 0 181.700000 537.600000 0 181.700000 538.400000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 537.600000 0 494.500000 537.600000 0 494.500000 536.900000 0 181.700000 536.900000 0 181.700000 537.600000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 536.900000 0 494.500000 536.900000 0 494.500000 536.100000 0 181.700000 536.100000 0 181.700000 536.900000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 536.100000 0 494.500000 536.100000 0 494.500000 535.400000 0 181.700000 535.400000 0 181.700000 536.100000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 535.400000 0 494.500000 535.400000 0 494.500000 534.600000 0 181.700000 534.600000 0 181.700000 535.400000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 534.600000 0 494.500000 534.600000 0 494.500000 533.900000 0 181.700000 533.900000 0 181.700000 534.600000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 533.900000 0 494.500000 533.900000 0 494.500000 533.100000 0 181.700000 533.100000 0 181.700000 533.900000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 533.100000 0 494.500000 533.100000 0 494.500000 532.300000 0 181.700000 532.300000 0 181.700000 533.100000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 532.300000 0 494.500000 532.300000 0 494.500000 531.600000 0 181.700000 531.600000 0 181.700000 532.300000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 531.600000 0 494.500000 531.600000 0 494.500000 530.800000 0 181.700000 530.800000 0 181.700000 531.600000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 530.800000 0 494.500000 530.800000 0 494.500000 530.100000 0 181.700000 530.100000 0 181.700000 530.800000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 530.100000 0 494.500000 530.100000 0 494.500000 529.300000 0 181.700000 529.300000 0 181.700000 530.100000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 529.300000 0 494.500000 529.300000 0 494.500000 528.500000 0 181.700000 528.500000 0 181.700000 529.300000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 528.500000 0 494.500000 528.500000 0 494.500000 527.800000 0 181.700000 527.800000 0 181.700000 528.500000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 527.800000 0 494.500000 527.800000 0 494.500000 527.000000 0 181.700000 527.000000 0 181.700000 527.800000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 527.000000 0 494.500000 527.000000 0 494.500000 526.300000 0 181.700000 526.300000 0 181.700000 527.000000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 526.300000 0 494.500000 526.300000 0 494.500000 525.500000 0 181.700000 525.500000 0 181.700000 526.300000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 525.500000 0 494.500000 525.500000 0 494.500000 524.700000 0 181.700000 524.700000 0 181.700000 525.500000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 524.700000 0 494.500000 524.700000 0 494.500000 524.000000 0 181.700000 524.000000 0 181.700000 524.700000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 524.000000 0 494.500000 524.000000 0 494.500000 523.200000 0 181.700000 523.200000 0 181.700000 524.000000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 523.200000 0 494.500000 523.200000 0 494.500000 522.500000 0 181.700000 522.500000 0 181.700000 523.200000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 522.500000 0 494.500000 522.500000 0 494.500000 521.700000 0 181.700000 521.700000 0 181.700000 522.500000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 521.700000 0 494.500000 521.700000 0 494.500000 521.000000 0 181.700000 521.000000 0 181.700000 521.700000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 521.000000 0 494.500000 521.000000 0 494.500000 520.200000 0 181.700000 520.200000 0 181.700000 521.000000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 520.200000 0 494.500000 520.200000 0 494.500000 519.400000 0 181.700000 519.400000 0 181.700000 520.200000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 519.400000 0 494.500000 519.400000 0 494.500000 518.700000 0 181.700000 518.700000 0 181.700000 519.400000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 518.700000 0 494.500000 518.700000 0 494.500000 517.900000 0 181.700000 517.900000 0 181.700000 518.700000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 517.900000 0 494.500000 517.900000 0 494.500000 517.200000 0 181.700000 517.200000 0 181.700000 517.900000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 517.200000 0 494.500000 517.200000 0 494.500000 516.400000 0 181.700000 516.400000 0 181.700000 517.200000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 516.400000 0 494.500000 516.400000 0 494.500000 515.700000 0 181.700000 515.700000 0 181.700000 516.400000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 515.700000 0 494.500000 515.700000 0 494.500000 514.900000 0 181.700000 514.900000 0 181.700000 515.700000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 514.900000 0 494.500000 514.900000 0 494.500000 514.100000 0 181.700000 514.100000 0 181.700000 514.900000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 514.100000 0 494.500000 514.100000 0 494.500000 513.400000 0 181.700000 513.400000 0 181.700000 514.100000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 513.400000 0 494.500000 513.400000 0 494.500000 512.600000 0 181.700000 512.600000 0 181.700000 513.400000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 512.600000 0 494.500000 512.600000 0 494.500000 511.900000 0 181.700000 511.900000 0 181.700000 512.600000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 511.900000 0 494.500000 511.900000 0 494.500000 511.100000 0 181.700000 511.100000 0 181.700000 511.900000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 511.100000 0 494.500000 511.100000 0 494.500000 510.300000 0 181.700000 510.300000 0 181.700000 511.100000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 510.300000 0 494.500000 510.300000 0 494.500000 509.600000 0 181.700000 509.600000 0 181.700000 510.300000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 509.600000 0 494.500000 509.600000 0 494.500000 508.800000 0 181.700000 508.800000 0 181.700000 509.600000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 508.800000 0 494.500000 508.800000 0 494.500000 508.100000 0 181.700000 508.100000 0 181.700000 508.800000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 508.100000 0 494.500000 508.100000 0 494.500000 507.300000 0 181.700000 507.300000 0 181.700000 508.100000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 507.300000 0 494.500000 507.300000 0 494.500000 506.600000 0 181.700000 506.600000 0 181.700000 507.300000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 506.600000 0 494.500000 506.600000 0 494.500000 505.800000 0 181.700000 505.800000 0 181.700000 506.600000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 505.800000 0 494.500000 505.800000 0 494.500000 505.000000 0 181.700000 505.000000 0 181.700000 505.800000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 505.000000 0 494.500000 505.000000 0 494.500000 504.300000 0 181.700000 504.300000 0 181.700000 505.000000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 504.300000 0 494.500000 504.300000 0 494.500000 503.500000 0 181.700000 503.500000 0 181.700000 504.300000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 503.500000 0 494.500000 503.500000 0 494.500000 502.800000 0 181.700000 502.800000 0 181.700000 503.500000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 502.800000 0 494.500000 502.800000 0 494.500000 502.000000 0 181.700000 502.000000 0 181.700000 502.800000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 502.000000 0 494.500000 502.000000 0 494.500000 501.300000 0 181.700000 501.300000 0 181.700000 502.000000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 501.300000 0 494.500000 501.300000 0 494.500000 500.500000 0 181.700000 500.500000 0 181.700000 501.300000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 500.500000 0 494.500000 500.500000 0 494.500000 499.700000 0 181.700000 499.700000 0 181.700000 500.500000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 499.700000 0 494.500000 499.700000 0 494.500000 499.000000 0 181.700000 499.000000 0 181.700000 499.700000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 499.000000 0 494.500000 499.000000 0 494.500000 498.200000 0 181.700000 498.200000 0 181.700000 499.000000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 498.200000 0 494.500000 498.200000 0 494.500000 497.500000 0 181.700000 497.500000 0 181.700000 498.200000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 497.500000 0 494.500000 497.500000 0 494.500000 496.700000 0 181.700000 496.700000 0 181.700000 497.500000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 496.700000 0 494.500000 496.700000 0 494.500000 495.900000 0 181.700000 495.900000 0 181.700000 496.700000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 495.900000 0 494.500000 495.900000 0 494.500000 495.200000 0 181.700000 495.200000 0 181.700000 495.900000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 495.200000 0 494.500000 495.200000 0 494.500000 494.400000 0 181.700000 494.400000 0 181.700000 495.200000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 494.400000 0 494.500000 494.400000 0 494.500000 493.700000 0 181.700000 493.700000 0 181.700000 494.400000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 493.700000 0 494.500000 493.700000 0 494.500000 492.900000 0 181.700000 492.900000 0 181.700000 493.700000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 492.900000 0 494.500000 492.900000 0 494.500000 492.200000 0 181.700000 492.200000 0 181.700000 492.900000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 492.200000 0 494.500000 492.200000 0 494.500000 491.400000 0 181.700000 491.400000 0 181.700000 492.200000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 491.400000 0 494.500000 491.400000 0 494.500000 490.600000 0 181.700000 490.600000 0 181.700000 491.400000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 490.600000 0 494.500000 490.600000 0 494.500000 489.900000 0 181.700000 489.900000 0 181.700000 490.600000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 489.900000 0 494.500000 489.900000 0 494.500000 489.100000 0 181.700000 489.100000 0 181.700000 489.900000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 489.100000 0 494.500000 489.100000 0 494.500000 488.400000 0 181.700000 488.400000 0 181.700000 489.100000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 488.400000 0 494.500000 488.400000 0 494.500000 487.600000 0 181.700000 487.600000 0 181.700000 488.400000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 487.600000 0 494.500000 487.600000 0 494.500000 486.800000 0 181.700000 486.800000 0 181.700000 487.600000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 486.800000 0 494.500000 486.800000 0 494.500000 486.100000 0 181.700000 486.100000 0 181.700000 486.800000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 486.100000 0 494.500000 486.100000 0 494.500000 485.300000 0 181.700000 485.300000 0 181.700000 486.100000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 485.300000 0 494.500000 485.300000 0 494.500000 484.600000 0 181.700000 484.600000 0 181.700000 485.300000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 484.600000 0 494.500000 484.600000 0 494.500000 483.800000 0 181.700000 483.800000 0 181.700000 484.600000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 483.800000 0 494.500000 483.800000 0 494.500000 483.000000 0 181.700000 483.000000 0 181.700000 483.800000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 483.000000 0 494.500000 483.000000 0 494.500000 482.300000 0 181.700000 482.300000 0 181.700000 483.000000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 482.300000 0 494.500000 482.300000 0 494.500000 481.500000 0 181.700000 481.500000 0 181.700000 482.300000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 481.500000 0 494.500000 481.500000 0 494.500000 480.800000 0 181.700000 480.800000 0 181.700000 481.500000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 480.800000 0 494.500000 480.800000 0 494.500000 480.000000 0 181.700000 480.000000 0 181.700000 480.800000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 480.000000 0 494.500000 480.000000 0 494.500000 479.300000 0 181.700000 479.300000 0 181.700000 480.000000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 479.300000 0 494.500000 479.300000 0 494.500000 478.500000 0 181.700000 478.500000 0 181.700000 479.300000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 478.500000 0 494.500000 478.500000 0 494.500000 477.700000 0 181.700000 477.700000 0 181.700000 478.500000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 477.700000 0 494.500000 477.700000 0 494.500000 477.000000 0 181.700000 477.000000 0 181.700000 477.700000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 477.000000 0 494.500000 477.000000 0 494.500000 476.200000 0 181.700000 476.200000 0 181.700000 477.000000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 476.300000 0 181.800000 476.300000 0 181.800000 669.600000 0 494.400000 669.600000 0 494.400000 476.300000 0 338.100000 476.300000 0
+strokePath subpath 1 338.100000 476.300000 0 181.800000 476.300000 0 181.800000 669.600000 0 494.400000 669.600000 0 494.400000 476.300000 0 338.100000 476.300000 0
+saveState
+updateCtm 11410.000000 0.000000 0.000000 -8760.000000 20530.000000 23970.000000
+drawSoftMaskedImage 1142 877 1142 877 JPEG 70955 PPM 3004618
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 515.324000 215.488000 507.324000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 515.324000 220.592000 507.324000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 515.324000 225.696000 507.324000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 515.324000 230.800000 507.324000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 507.724000 241.388000 499.724000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 507.724000 246.492000 499.724000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 507.724000 251.596000 499.724000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 507.724000 256.700000 499.724000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 500.024000 267.188000 492.024000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 500.024000 272.292000 492.024000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 500.024000 277.396000 492.024000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 500.024000 282.500000 492.024000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 492.424000 293.088000 484.424000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 492.424000 298.192000 484.424000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 492.424000 303.296000 484.424000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 492.424000 308.400000 484.424000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 530.324000 202.588000 522.324000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 549.624000 201.688000 541.624000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 568.924000 195.788000 560.924000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 568.924000 200.892000 560.924000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 588.224000 194.888000 580.224000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 588.224000 199.992000 580.224000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 607.624000 193.988000 599.624000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 607.624000 199.092000 599.624000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 626.924000 193.088000 618.924000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 626.924000 198.192000 618.924000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 499.024000 330.188000 491.024000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 499.024000 332.716000 491.024000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 499.024000 337.596000 491.024000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 499.024000 341.396000 491.024000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 499.024000 346.036000 491.024000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 499.024000 350.900000 491.024000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 499.024000 355.972000 491.024000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 499.024000 359.196000 491.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 499.024000 362.196000 491.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 499.024000 367.404000 491.024000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 499.024000 371.876000 491.024000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 499.024000 375.052000 491.024000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 518.524000 361.172000 510.524000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 518.524000 364.340000 510.524000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 518.524000 367.396000 510.524000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 518.524000 372.604000 510.524000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 518.524000 379.348000 510.524000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 518.524000 384.484000 510.524000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 518.524000 389.436000 510.524000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 518.524000 392.108000 510.524000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 518.524000 395.708000 510.524000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 518.524000 397.540000 510.524000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 518.524000 402.444000 510.524000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 518.524000 406.788000 510.524000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 538.024000 392.972000 530.024000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 538.024000 398.076000 530.024000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 538.024000 403.180000 530.024000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 538.024000 405.428000 530.024000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 538.024000 410.332000 530.024000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 538.024000 414.476000 530.024000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 665.592000 305.808000 651.592000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 665.592000 314.138000 651.592000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 665.592000 320.788000 651.592000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 665.592000 328.698000 651.592000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 665.592000 336.972000 651.592000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 665.592000 344.182000 651.592000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 665.592000 349.810000 651.592000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 665.592000 354.234000 651.592000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 665.592000 362.718000 651.592000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 665.592000 367.870000 651.592000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 665.592000 372.322000 651.592000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 665.592000 382.080000 651.592000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 665.592000 388.772000 651.592000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 665.592000 397.802000 651.592000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 665.592000 402.254000 651.592000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 665.592000 407.896000 651.592000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 542.700000 0 424.300000 542.700000 0 424.300000 603.500000 0 493.600000 603.500000 0 493.600000 542.700000 0 458.900000 542.700000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 593.900000 0 428.900000 593.900000 0 428.900000 599.800000 0 434.800000 599.800000 0 434.800000 593.900000 0 431.900000 593.900000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 582.800000 0 428.900000 582.800000 0 428.900000 588.800000 0 434.800000 588.800000 0 434.800000 582.800000 0 431.900000 582.800000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 571.700000 0 428.900000 571.700000 0 428.900000 577.700000 0 434.800000 577.700000 0 434.800000 571.700000 0 431.900000 571.700000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 560.600000 0 428.900000 560.600000 0 428.900000 566.600000 0 434.800000 566.600000 0 434.800000 560.600000 0 431.900000 560.600000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 549.500000 0 428.900000 549.500000 0 428.900000 555.500000 0 434.800000 555.500000 0 434.800000 549.500000 0 431.900000 549.500000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 600.924000 443.288000 592.924000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 600.924000 445.816000 592.924000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 600.924000 450.600000 592.924000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 600.924000 454.496000 592.924000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 600.924000 459.136000 592.924000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 600.924000 464.000000 592.924000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 600.924000 468.976000 592.924000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 600.924000 472.304000 592.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 600.924000 475.208000 592.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 600.924000 480.520000 592.924000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 600.924000 484.992000 592.924000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 600.924000 488.168000 592.924000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 589.924000 443.352000 581.924000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 589.924000 447.920000 581.924000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 589.924000 452.976000 581.924000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 589.924000 457.400000 581.924000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 589.924000 462.472000 581.924000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 589.924000 465.800000 581.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 589.924000 468.904000 581.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 589.924000 473.816000 581.924000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 589.924000 478.888000 581.924000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 589.924000 482.064000 581.924000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 578.824000 442.872000 570.824000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 578.824000 446.040000 570.824000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 578.824000 448.992000 570.824000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 578.824000 454.304000 570.824000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 578.824000 461.048000 570.824000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 578.824000 466.184000 570.824000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 578.824000 471.136000 570.824000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 578.824000 473.808000 570.824000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 578.824000 477.408000 570.824000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 578.824000 479.240000 570.824000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 578.824000 484.144000 570.824000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 578.824000 488.488000 570.824000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 567.724000 443.384000 559.724000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 567.724000 448.464000 559.724000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 567.724000 453.424000 559.724000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 567.724000 456.696000 559.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 567.724000 459.800000 559.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 567.724000 462.032000 559.724000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 567.724000 466.936000 559.724000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 567.724000 471.080000 559.724000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 556.624000 443.272000 548.624000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 556.624000 448.376000 548.624000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 556.624000 453.480000 548.624000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 556.624000 455.728000 548.624000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 556.624000 460.632000 548.624000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 556.624000 464.776000 548.624000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -2088.400000 0 114.800000 -2088.400000 0 114.800000 -2045.600000 0 72.000000 -2045.600000 0 72.000000 -2088.400000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 288030.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 108.000000 546.200000 0 540.000000 546.200000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 546.200000 0
+eoFillPath subpath 1 108.000000 72.000000 0 540.000000 72.000000 0 540.000000 245.800000 0 108.000000 245.800000 0 108.000000 72.000000 0
+eoFillPath subpath 1 108.000000 245.800000 0 157.400000 245.800000 0 157.400000 546.200000 0 108.000000 546.200000 0 108.000000 245.800000 0
+eoFillPath subpath 1 490.500000 245.800000 0 540.000000 245.800000 0 540.000000 546.200000 0 490.500000 546.200000 0 490.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 15740.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 108.000000 701.300000 0 540.000000 701.300000 0 540.000000 720.000000 0 108.000000 720.000000 0 108.000000 701.300000 0
+eoFillPath subpath 1 108.000000 76.200000 0 540.000000 76.200000 0 540.000000 90.100000 0 108.000000 90.100000 0 108.000000 76.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 108.100000 719.948000 121.892000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 121.908000 719.948000 131.364000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 131.412000 719.948000 136.484000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 136.516000 719.948000 148.532000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 148.516000 719.948000 158.292000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 158.324000 719.948000 168.452000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 168.420000 719.948000 176.740000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 176.724000 719.948000 186.564000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 186.532000 719.948000 191.604000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 191.636000 719.948000 197.396000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 197.444000 719.948000 202.516000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 202.500000 719.948000 214.884000 703.948000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 214.900000 719.948000 224.692000 703.948000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 224.708000 719.948000 231.284000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 231.012000 719.948000 241.156000 703.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 241.220000 719.948000 251.060000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 251.028000 719.948000 261.156000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 261.124000 719.948000 266.196000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.228000 719.948000 276.372000 703.948000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 276.436000 719.948000 286.564000 703.948000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 286.532000 719.948000 296.372000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 296.340000 719.948000 306.484000 703.948000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 672.892000 117.648000 658.892000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 115.800000 672.892000 125.418000 658.892000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 125.404000 672.892000 135.022000 658.892000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 135.008000 672.892000 139.796000 658.892000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.810000 672.892000 148.140000 658.892000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 650.736000 230.164000 638.736000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 230.200000 650.736000 234.028000 638.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 234.004000 650.736000 237.832000 638.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 237.808000 650.736000 241.612000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.912000 650.736000 253.288000 638.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 253.216000 650.736000 259.984000 638.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 260.116000 650.736000 263.920000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 264.220000 650.736000 269.032000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 269.020000 650.736000 276.244000 638.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 276.220000 650.736000 283.444000 638.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 283.420000 650.736000 287.248000 638.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 287.320000 650.736000 293.476000 638.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 293.416000 650.736000 297.220000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 297.412000 650.736000 304.564000 638.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 304.612000 650.736000 310.348000 638.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 310.312000 650.736000 317.404000 638.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 317.512000 650.736000 321.316000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 321.616000 650.736000 328.876000 638.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 328.816000 650.736000 335.908000 638.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 335.920000 650.736000 343.600000 638.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 343.624000 650.736000 348.436000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 348.424000 650.736000 352.228000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 352.420000 650.736000 357.232000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 357.220000 650.736000 364.444000 638.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 364.420000 650.736000 372.100000 638.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 372.124000 650.736000 379.216000 638.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 379.228000 650.736000 384.040000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 384.124000 650.736000 391.852000 638.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 391.828000 650.736000 398.920000 638.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 398.932000 650.736000 404.668000 638.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 404.728000 650.736000 408.532000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 408.832000 650.736000 419.092000 638.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 419.032000 650.736000 422.860000 638.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 422.932000 650.736000 427.744000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 427.732000 650.736000 435.460000 638.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 435.532000 650.736000 439.336000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.432000 650.736000 445.588000 638.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 445.636000 650.736000 457.012000 638.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 456.940000 650.736000 464.092000 638.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 464.140000 650.736000 467.968000 638.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 467.944000 650.736000 471.772000 638.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 471.940000 650.736000 475.744000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 476.044000 650.736000 483.724000 638.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 483.640000 650.736000 490.792000 638.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 490.744000 650.736000 496.480000 638.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 496.444000 650.736000 501.256000 638.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 501.340000 650.736000 507.496000 638.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 507.640000 650.736000 511.444000 638.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 511.540000 650.736000 517.696000 638.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 517.744000 650.736000 525.472000 638.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 525.448000 650.736000 532.168000 638.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 532.144000 650.736000 539.872000 638.736000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 650.736000 543.904000 638.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 636.836000 228.652000 624.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.700000 636.836000 234.856000 624.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 235.396000 636.836000 239.200000 624.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 239.200000 636.836000 246.928000 624.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 246.904000 636.836000 254.056000 624.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 254.200000 636.836000 258.028000 624.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 257.896000 636.836000 261.724000 624.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 261.892000 636.836000 268.048000 624.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 268.096000 636.836000 271.900000 624.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 272.296000 636.836000 276.100000 624.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.100000 636.836000 282.256000 624.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 282.304000 636.836000 289.024000 624.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 289.000000 636.836000 294.736000 624.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 294.700000 636.836000 301.792000 624.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 301.804000 636.836000 312.064000 624.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 312.100000 636.836000 318.256000 624.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 318.496000 636.836000 322.300000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.696000 636.836000 329.848000 624.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 329.896000 636.836000 337.624000 624.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 337.492000 636.836000 345.172000 624.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 345.796000 636.836000 349.600000 624.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 349.700000 636.836000 357.380000 624.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 357.404000 636.836000 364.628000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 364.604000 636.836000 368.432000 624.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 368.408000 636.836000 373.220000 624.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 373.304000 636.836000 379.460000 624.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 379.700000 636.836000 383.504000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.804000 636.836000 387.632000 624.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 387.608000 636.836000 395.336000 624.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 395.708000 636.836000 399.512000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 399.812000 636.836000 406.964000 624.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 407.312000 636.836000 411.116000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 411.716000 636.836000 415.520000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 415.820000 636.836000 420.632000 624.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 420.620000 636.836000 427.844000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 427.820000 636.836000 435.044000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 435.116000 636.836000 438.944000 624.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 438.920000 636.836000 446.600000 624.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 446.624000 636.836000 453.848000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 453.824000 636.836000 460.580000 624.836000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 460.628000 636.836000 464.432000 624.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.732000 636.836000 468.536000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 468.836000 636.836000 477.500000 624.836000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 477.536000 636.836000 488.912000 624.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 488.840000 636.836000 496.064000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 496.136000 636.836000 503.864000 624.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 503.840000 636.836000 511.520000 624.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 511.844000 636.836000 515.648000 624.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 515.948000 636.836000 523.172000 624.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 523.148000 636.836000 527.960000 624.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 527.948000 636.836000 535.676000 624.836000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 535.900000 636.836000 539.944000 624.836000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 622.936000 228.592000 610.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 228.604000 622.936000 234.340000 610.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 237.808000 622.936000 241.612000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.308000 622.936000 250.120000 610.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 250.108000 622.936000 257.836000 610.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 257.812000 622.936000 261.640000 610.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 261.616000 622.936000 269.344000 610.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 269.416000 622.936000 277.096000 610.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 277.120000 622.936000 283.276000 610.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 283.216000 622.936000 287.020000 610.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 290.512000 622.936000 294.316000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 297.916000 622.936000 302.728000 610.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 302.812000 622.936000 310.540000 610.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 310.516000 622.936000 317.608000 610.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 321.112000 622.936000 324.916000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 328.516000 622.936000 333.328000 610.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 333.316000 622.936000 340.540000 610.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 340.612000 622.936000 347.836000 610.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 347.812000 622.936000 351.640000 610.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 351.616000 622.936000 359.296000 610.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 359.320000 622.936000 366.544000 610.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 366.520000 622.936000 373.276000 610.936000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 376.816000 622.936000 380.620000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 384.220000 622.936000 390.940000 610.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 390.916000 622.936000 398.140000 610.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 398.116000 622.936000 405.844000 610.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 405.916000 622.936000 410.728000 610.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 410.716000 622.936000 417.868000 610.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 417.916000 622.936000 421.744000 610.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 421.720000 622.936000 429.448000 610.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 429.424000 622.936000 435.580000 610.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 439.120000 622.936000 442.924000 610.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.524000 622.936000 454.204000 610.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 454.228000 622.936000 458.056000 610.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 458.032000 622.936000 464.800000 610.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 464.836000 622.936000 471.928000 610.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 471.940000 622.936000 477.676000 610.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.640000 622.936000 483.796000 610.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 483.844000 622.936000 490.936000 610.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 498.040000 622.936000 501.844000 610.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 502.000000 622.936000 509.680000 610.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 509.704000 622.936000 513.532000 610.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 513.508000 622.936000 517.336000 610.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 517.312000 622.936000 524.404000 610.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 524.416000 622.936000 530.152000 610.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 530.116000 622.936000 536.272000 610.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 536.320000 622.936000 540.124000 610.936000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.200000 622.936000 544.004000 610.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 609.036000 227.656000 597.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 609.036000 234.424000 597.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 234.508000 609.036000 240.244000 597.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 240.112000 609.036000 247.204000 597.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 247.216000 609.036000 257.476000 597.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 257.512000 609.036000 265.192000 597.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 265.312000 609.036000 271.048000 597.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 270.916000 609.036000 274.744000 597.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 274.720000 609.036000 281.488000 597.036000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 281.524000 609.036000 288.616000 597.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 288.724000 609.036000 294.460000 597.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 294.424000 609.036000 300.580000 597.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 302.128000 609.036000 305.932000 597.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 307.528000 609.036000 314.680000 597.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.728000 609.036000 322.456000 597.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 322.528000 609.036000 330.208000 597.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 333.424000 609.036000 337.228000 597.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 337.200000 609.036000 347.460000 597.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 347.496000 609.036000 353.232000 597.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 353.196000 609.036000 360.288000 597.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.300000 609.036000 368.028000 597.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 368.004000 609.036000 374.724000 597.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 374.808000 609.036000 382.536000 597.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 382.512000 609.036000 389.604000 597.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 389.616000 609.036000 395.772000 597.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 395.712000 609.036000 399.516000 597.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.208000 609.036000 405.012000 597.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 406.608000 609.036000 414.576000 597.036000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 414.612000 609.036000 421.764000 597.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 421.716000 609.036000 427.452000 597.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 427.512000 609.036000 435.192000 597.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 435.108000 609.036000 442.200000 597.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 442.212000 609.036000 447.948000 597.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.616000 609.036000 453.420000 597.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 455.112000 609.036000 459.924000 597.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 459.912000 609.036000 467.136000 597.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 467.112000 609.036000 474.336000 597.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 474.408000 609.036000 478.236000 597.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 478.212000 609.036000 484.368000 597.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 485.916000 609.036000 489.720000 597.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 491.412000 609.036000 497.568000 597.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 497.616000 609.036000 505.344000 597.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 505.212000 609.036000 511.932000 597.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 512.016000 609.036000 519.744000 597.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 521.316000 609.036000 525.120000 597.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 526.812000 609.036000 533.964000 597.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 534.012000 609.036000 540.168000 597.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 609.036000 543.904000 597.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 595.136000 227.656000 583.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 595.136000 234.856000 583.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 234.808000 595.136000 245.068000 583.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 245.104000 595.136000 251.260000 583.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 251.200000 595.136000 255.004000 583.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 255.400000 595.136000 262.624000 583.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 262.600000 595.136000 268.336000 583.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 268.396000 595.136000 272.200000 583.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 272.392000 595.136000 277.204000 583.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 277.288000 595.136000 285.016000 583.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 284.992000 595.136000 292.084000 583.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 292.396000 595.136000 296.200000 583.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 296.200000 595.136000 303.880000 583.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 303.904000 595.136000 309.640000 583.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 309.604000 595.136000 313.432000 583.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 313.504000 595.136000 317.332000 583.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 317.308000 595.136000 321.136000 583.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 321.112000 595.136000 324.916000 583.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 325.216000 595.136000 332.944000 583.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 333.016000 595.136000 340.168000 583.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 340.120000 595.136000 347.848000 583.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 347.920000 595.136000 355.600000 583.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 355.516000 595.136000 359.320000 583.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.620000 595.136000 366.844000 583.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 366.916000 595.136000 374.644000 583.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 374.716000 595.136000 378.520000 583.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 378.712000 595.136000 383.524000 583.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 383.512000 595.136000 391.240000 583.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 391.312000 595.136000 398.404000 583.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 398.512000 595.136000 402.316000 583.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.508000 595.136000 412.768000 583.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 412.804000 595.136000 419.956000 583.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 419.908000 595.136000 423.736000 583.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 423.808000 595.136000 427.636000 583.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 427.708000 595.136000 431.512000 583.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 431.704000 595.136000 438.928000 583.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 438.904000 595.136000 444.640000 583.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 444.808000 595.136000 448.612000 583.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 448.804000 595.136000 453.244000 583.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 453.208000 595.136000 458.944000 583.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.004000 595.136000 466.228000 583.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 466.204000 595.136000 477.580000 583.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 477.700000 595.136000 481.504000 583.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 481.696000 595.136000 486.508000 583.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 486.496000 595.136000 494.224000 583.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 494.296000 595.136000 501.388000 583.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 501.400000 595.136000 505.204000 583.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 505.504000 595.136000 515.764000 583.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 515.704000 595.136000 522.928000 583.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 523.000000 595.136000 528.736000 583.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 528.700000 595.136000 535.960000 583.136000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 595.136000 540.044000 583.136000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 581.236000 229.180000 569.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 229.204000 581.236000 236.296000 569.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 236.308000 581.236000 244.036000 569.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 244.012000 581.236000 250.732000 569.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 250.708000 581.236000 258.436000 569.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 258.412000 581.236000 262.216000 569.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 262.216000 581.236000 266.020000 569.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 266.020000 581.236000 272.176000 569.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 272.224000 581.236000 279.952000 569.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 279.928000 581.236000 286.648000 569.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 286.624000 581.236000 294.352000 569.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 294.328000 581.236000 298.132000 569.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 298.132000 581.236000 305.284000 569.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 305.332000 581.236000 311.488000 569.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 311.536000 581.236000 315.340000 569.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 315.340000 581.236000 320.152000 569.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 320.140000 581.236000 327.868000 569.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 327.844000 581.236000 334.936000 569.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 334.948000 581.236000 338.752000 569.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 338.800000 581.236000 346.528000 569.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 346.504000 581.236000 353.656000 569.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 353.704000 581.236000 365.080000 569.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 365.104000 581.236000 376.480000 569.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 376.504000 581.236000 383.596000 569.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 383.608000 581.236000 389.344000 569.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 389.308000 581.236000 393.112000 569.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.112000 581.236000 400.264000 569.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 400.312000 581.236000 408.040000 569.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 408.016000 581.236000 415.696000 569.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 415.720000 581.236000 419.524000 569.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 419.500000 581.236000 426.652000 569.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 426.700000 581.236000 433.456000 569.236000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 433.504000 581.236000 437.308000 569.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1400.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 549.392000 119.580000 535.392000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 119.594000 549.392000 129.030000 535.392000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 128.988000 549.392000 135.890000 535.392000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.890000 549.392000 145.900000 535.392000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 145.886000 549.392000 155.378000 535.392000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 155.392000 549.392000 165.346000 535.392000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 165.388000 549.392000 170.260000 535.392000 1.000000 0.000000 0.000000 1.000000
+drawChar 170.288000 549.392000 179.836000 535.392000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 177.988000 549.392000 187.606000 535.392000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 187.592000 549.392000 197.210000 535.392000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 197.196000 549.392000 201.984000 535.392000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 201.998000 549.392000 210.328000 535.392000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 527.236000 229.492000 515.236000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 527.236000 237.232000 515.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 527.236000 244.300000 515.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 244.312000 527.236000 248.116000 515.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 248.300000 527.236000 252.128000 515.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 252.200000 527.236000 259.352000 515.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 259.304000 527.236000 269.564000 515.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 269.600000 527.236000 277.328000 515.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 277.304000 527.236000 288.680000 515.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 288.704000 527.236000 295.928000 515.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 295.904000 527.236000 306.164000 515.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 306.200000 527.236000 313.292000 515.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 313.400000 527.236000 319.136000 515.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 317.804000 527.236000 321.608000 515.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 321.704000 527.236000 325.508000 515.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 325.400000 527.236000 333.128000 515.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 333.104000 527.236000 340.196000 515.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 340.208000 527.236000 347.888000 515.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 347.912000 527.236000 355.592000 515.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 355.616000 527.236000 362.708000 515.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 362.720000 527.236000 366.764000 515.236000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 366.716000 527.236000 373.436000 515.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 373.520000 527.236000 377.348000 515.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 377.324000 527.236000 381.152000 515.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 381.128000 527.236000 388.808000 515.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 388.832000 527.236000 396.512000 515.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 396.536000 527.236000 403.628000 515.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 403.640000 527.236000 409.376000 515.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 409.340000 527.236000 415.496000 515.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 415.544000 527.236000 419.348000 515.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.444000 527.236000 426.596000 515.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 426.644000 527.236000 434.372000 515.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 434.348000 527.236000 442.028000 515.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 442.244000 527.236000 446.048000 515.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 446.000000 527.236000 451.736000 515.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 451.700000 527.236000 458.852000 515.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 458.900000 527.236000 466.160000 515.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 466.196000 527.236000 473.288000 515.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 473.300000 527.236000 477.104000 515.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 477.200000 527.236000 484.352000 515.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 484.304000 527.236000 490.040000 515.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 490.004000 527.236000 497.096000 515.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 497.300000 527.236000 501.104000 515.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 501.296000 527.236000 509.024000 515.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 508.892000 527.236000 515.984000 515.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 515.996000 527.236000 522.716000 515.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 522.692000 527.236000 529.784000 515.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 529.796000 527.236000 535.952000 515.236000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 536.000000 527.236000 540.044000 515.236000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 513.336000 227.656000 501.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 513.336000 234.856000 501.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 234.808000 513.336000 240.544000 501.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 240.508000 513.336000 247.276000 501.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 248.308000 513.336000 252.112000 501.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 253.204000 513.336000 258.016000 501.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 258.100000 513.336000 265.324000 501.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 265.300000 513.336000 272.524000 501.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 272.500000 513.336000 276.328000 501.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 276.400000 513.336000 282.556000 501.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 283.504000 513.336000 287.308000 501.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.400000 513.336000 292.840000 501.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 292.804000 513.336000 300.028000 501.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 300.100000 513.336000 305.836000 501.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 306.796000 513.336000 310.600000 501.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 311.692000 513.336000 323.068000 501.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 323.092000 513.336000 330.244000 501.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 330.196000 513.336000 334.024000 501.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 334.096000 513.336000 341.824000 501.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 341.800000 513.336000 346.612000 501.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 346.696000 513.336000 353.848000 501.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 353.896000 513.336000 357.724000 501.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 357.700000 513.336000 365.428000 501.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 365.404000 513.336000 369.232000 501.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 369.304000 513.336000 377.032000 501.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 377.008000 513.336000 384.688000 501.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 385.612000 513.336000 389.416000 501.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 390.508000 513.336000 395.320000 501.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 395.404000 513.336000 403.132000 501.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 403.108000 513.336000 410.200000 501.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 411.208000 513.336000 415.012000 501.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 416.104000 513.336000 419.932000 501.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 419.908000 513.336000 427.060000 501.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 427.108000 513.336000 437.368000 501.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 437.404000 513.336000 445.132000 501.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 446.104000 513.336000 449.908000 501.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 451.000000 513.336000 458.152000 501.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 458.200000 513.336000 465.928000 501.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 465.904000 513.336000 473.584000 501.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 474.604000 513.336000 478.408000 501.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 479.500000 513.336000 484.312000 501.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 484.300000 513.336000 492.028000 501.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 492.100000 513.336000 499.192000 501.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 500.200000 513.336000 504.004000 501.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 505.096000 513.336000 509.908000 501.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 509.896000 513.336000 515.632000 501.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 515.692000 513.336000 522.784000 501.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 522.796000 513.336000 529.888000 501.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 529.900000 513.336000 536.056000 501.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 535.996000 513.336000 539.800000 501.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 513.336000 543.904000 501.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 499.436000 230.164000 487.436000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 231.004000 499.436000 234.808000 487.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 235.708000 499.436000 241.864000 487.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 241.912000 499.436000 253.288000 487.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 253.216000 499.436000 260.368000 487.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 260.416000 499.436000 264.244000 487.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 264.220000 499.436000 268.048000 487.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 269.716000 499.436000 273.520000 487.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 273.700000 499.436000 281.380000 487.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 281.404000 499.436000 285.232000 487.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 285.208000 499.436000 291.928000 487.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 291.904000 499.436000 299.164000 487.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 300.100000 499.436000 303.904000 487.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 304.696000 499.436000 311.848000 487.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 311.896000 499.436000 319.624000 487.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 319.600000 499.436000 327.280000 487.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 328.996000 499.436000 332.800000 487.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 332.800000 499.436000 338.956000 487.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 339.004000 499.436000 346.732000 487.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 346.708000 499.436000 353.932000 487.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 353.908000 499.436000 360.676000 487.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 360.712000 499.436000 367.804000 487.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 367.816000 499.436000 371.644000 487.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 372.412000 499.436000 376.216000 487.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.116000 499.436000 383.836000 487.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 383.920000 499.436000 391.144000 487.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 391.120000 499.436000 402.496000 487.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 402.520000 499.436000 410.200000 487.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 410.224000 499.436000 414.052000 487.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 414.028000 499.436000 421.120000 487.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 421.132000 499.436000 425.944000 487.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 425.932000 499.436000 433.024000 487.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 433.828000 499.436000 437.632000 487.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 438.532000 499.436000 443.344000 487.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 443.428000 499.436000 451.156000 487.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 451.132000 499.436000 458.224000 487.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 459.028000 499.436000 462.832000 487.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 463.732000 499.436000 470.452000 487.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 470.428000 499.436000 477.652000 487.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 477.628000 499.436000 481.456000 487.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 481.528000 499.436000 485.356000 487.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 485.332000 499.436000 492.424000 487.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 492.436000 499.436000 499.156000 487.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 499.132000 499.436000 503.944000 487.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 504.028000 499.436000 507.856000 487.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 507.832000 499.436000 515.056000 487.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 515.032000 499.436000 522.760000 487.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 523.636000 499.436000 527.440000 487.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 528.340000 499.436000 535.564000 487.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 535.540000 499.436000 539.980000 487.436000 1.000000 0.000000 0.000000 1.000000 f
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 499.436000 543.904000 487.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 485.536000 229.180000 473.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 229.204000 485.536000 236.356000 473.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 236.404000 485.536000 242.140000 473.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 242.104000 485.536000 249.784000 473.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 249.808000 485.536000 256.900000 473.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 256.912000 485.536000 264.640000 473.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 264.616000 485.536000 268.420000 473.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 268.420000 485.536000 273.232000 473.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 273.220000 485.536000 280.444000 473.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 280.420000 485.536000 287.644000 473.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 287.620000 485.536000 291.448000 473.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 291.424000 485.536000 297.580000 473.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 297.628000 485.536000 301.432000 473.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 301.432000 485.536000 305.236000 473.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 305.236000 485.536000 309.040000 473.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 447.748000 121.220000 431.748000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 121.204000 447.748000 129.092000 431.748000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 129.108000 447.748000 139.956000 431.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 140.004000 447.748000 150.852000 431.748000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 150.900000 447.748000 162.276000 431.748000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 162.308000 447.748000 173.684000 431.748000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 173.716000 447.748000 184.708000 431.748000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 184.724000 447.748000 196.100000 431.748000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 196.132000 447.748000 205.652000 431.748000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 205.636000 447.748000 216.484000 431.748000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 423.136000 230.164000 411.136000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 230.704000 423.136000 234.508000 411.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 235.000000 423.136000 241.156000 411.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 241.204000 423.136000 252.580000 411.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 252.508000 423.136000 259.660000 411.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 259.708000 423.136000 263.536000 411.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 263.512000 423.136000 267.340000 411.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 267.808000 423.136000 271.612000 411.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 272.308000 423.136000 279.988000 411.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 279.904000 423.136000 285.640000 411.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 285.604000 423.136000 292.696000 411.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 292.708000 423.136000 299.800000 411.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 299.812000 423.136000 307.540000 411.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 307.612000 423.136000 315.340000 411.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 315.316000 423.136000 322.540000 411.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 322.612000 423.136000 330.340000 411.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 330.316000 423.136000 336.472000 411.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 336.520000 423.136000 343.612000 411.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 344.116000 423.136000 347.920000 411.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 348.412000 423.136000 352.240000 411.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 352.216000 423.136000 358.372000 411.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 358.912000 423.136000 362.716000 411.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 363.316000 423.136000 370.468000 411.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 370.516000 423.136000 374.344000 411.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 374.320000 423.136000 380.476000 411.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 380.524000 423.136000 387.748000 411.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 388.228000 423.136000 392.032000 411.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 392.524000 423.136000 400.204000 411.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 400.120000 423.136000 407.272000 411.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 407.320000 423.136000 413.056000 411.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 413.020000 423.136000 417.832000 411.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 418.420000 423.136000 422.224000 411.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 422.824000 423.136000 430.048000 411.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 430.024000 423.136000 434.464000 411.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 434.920000 423.136000 438.724000 411.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 439.324000 423.136000 450.700000 411.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 450.628000 423.136000 457.396000 411.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 457.924000 423.136000 461.728000 411.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 462.328000 423.136000 470.008000 411.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 470.032000 423.136000 477.184000 411.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 477.136000 423.136000 482.872000 411.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 482.932000 423.136000 490.612000 411.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 490.636000 423.136000 497.728000 411.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 497.740000 423.136000 505.468000 411.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 505.444000 423.136000 509.248000 411.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.740000 423.136000 513.544000 411.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 514.036000 423.136000 522.028000 411.136000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 522.040000 423.136000 529.768000 411.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 529.744000 423.136000 533.572000 411.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 533.644000 423.136000 539.800000 411.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 423.136000 543.904000 411.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 409.236000 225.328000 397.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 225.304000 409.236000 231.460000 397.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 233.308000 409.236000 237.112000 397.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.008000 409.236000 249.268000 397.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 249.304000 409.236000 257.032000 397.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 257.008000 409.236000 264.100000 397.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 264.112000 409.236000 269.848000 397.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 269.812000 409.236000 276.904000 397.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 278.812000 409.236000 282.616000 397.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.512000 409.236000 289.324000 397.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 289.312000 409.236000 297.040000 397.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 297.112000 409.236000 304.204000 397.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 307.816000 409.236000 311.620000 397.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 311.700000 409.236000 316.512000 397.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 316.500000 409.236000 323.724000 397.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 323.700000 409.236000 335.076000 397.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 335.100000 409.236000 342.252000 397.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 342.300000 409.236000 347.112000 397.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 347.100000 409.236000 354.324000 397.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 354.300000 409.236000 361.392000 397.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 361.404000 409.236000 367.560000 397.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 369.408000 409.236000 373.212000 397.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 375.108000 409.236000 382.260000 397.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 382.308000 409.236000 390.036000 397.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 390.012000 409.236000 397.692000 397.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 401.412000 409.236000 405.216000 397.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 405.300000 409.236000 411.456000 397.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 411.504000 409.236000 418.596000 397.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 418.608000 409.236000 425.700000 397.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 425.712000 409.236000 433.392000 397.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 433.308000 409.236000 437.136000 397.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 437.208000 409.236000 441.036000 397.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 441.012000 409.236000 448.740000 397.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 448.716000 409.236000 456.396000 397.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 456.420000 409.236000 462.576000 397.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 464.520000 409.236000 468.324000 397.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.124000 409.236000 477.276000 397.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 477.324000 409.236000 483.060000 397.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 483.024000 409.236000 490.116000 397.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 492.024000 409.236000 495.828000 397.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 497.628000 409.236000 505.308000 397.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 505.332000 409.236000 511.068000 397.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 511.032000 409.236000 518.256000 397.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 518.232000 409.236000 528.492000 397.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 528.528000 409.236000 536.256000 397.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 536.232000 409.236000 540.036000 397.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 409.236000 543.904000 397.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 395.336000 229.492000 383.336000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 395.336000 237.232000 383.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 395.336000 244.300000 383.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 245.308000 395.336000 249.112000 383.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 250.204000 395.336000 257.884000 383.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 257.908000 395.336000 263.644000 383.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 263.704000 395.336000 270.796000 383.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 270.808000 395.336000 277.900000 383.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 277.912000 395.336000 285.640000 383.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 285.616000 395.336000 293.344000 383.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 293.416000 395.336000 300.640000 383.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 300.616000 395.336000 308.344000 383.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 308.320000 395.336000 314.476000 383.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 314.524000 395.336000 321.616000 383.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 322.624000 395.336000 326.428000 383.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 327.628000 395.336000 331.456000 383.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 331.432000 395.336000 337.588000 383.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 338.632000 395.336000 342.436000 383.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 343.528000 395.336000 350.296000 383.336000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 350.224000 395.336000 357.316000 383.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.328000 395.336000 363.064000 383.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 363.028000 395.336000 369.796000 383.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 371.032000 395.336000 374.836000 383.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 375.928000 395.336000 382.084000 383.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 382.132000 395.336000 393.508000 383.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 393.436000 395.336000 400.588000 383.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 400.636000 395.336000 404.464000 383.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 404.440000 395.336000 408.268000 383.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 408.340000 395.336000 412.144000 383.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 413.140000 395.336000 416.944000 383.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 418.036000 395.336000 421.756000 383.336000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 421.732000 395.336000 429.460000 383.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 429.436000 395.336000 435.592000 383.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 435.640000 395.336000 440.452000 383.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 441.544000 395.336000 445.348000 383.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 446.440000 395.336000 454.120000 383.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 454.144000 395.336000 457.972000 383.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 457.948000 395.336000 465.628000 383.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 466.648000 395.336000 470.452000 383.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 471.544000 395.336000 478.636000 383.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 478.648000 395.336000 486.376000 383.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 486.352000 395.336000 493.576000 383.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 493.648000 395.336000 501.376000 383.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 501.352000 395.336000 509.032000 383.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 509.056000 395.336000 516.784000 383.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 517.852000 395.336000 521.656000 383.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 522.748000 395.336000 527.188000 383.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 527.152000 395.336000 534.376000 383.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 534.448000 395.336000 540.184000 383.336000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 395.336000 543.904000 383.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 381.436000 228.724000 369.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 228.700000 381.436000 236.428000 369.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 236.404000 381.436000 243.496000 369.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 243.508000 381.436000 247.312000 369.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.312000 381.436000 254.992000 369.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 255.016000 381.436000 262.108000 369.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 262.120000 381.436000 267.856000 369.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 267.820000 381.436000 273.976000 369.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 274.024000 381.436000 281.248000 369.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 281.224000 381.436000 288.952000 369.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 288.928000 381.436000 292.732000 369.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 292.732000 381.436000 297.544000 369.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 297.532000 381.436000 304.756000 369.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 304.732000 381.436000 308.536000 369.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.536000 381.436000 315.628000 369.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 315.640000 381.436000 323.368000 369.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 323.344000 381.436000 328.156000 369.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 328.144000 381.436000 335.236000 369.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 335.248000 381.436000 340.984000 369.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 339.652000 381.436000 343.456000 369.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 343.456000 381.436000 347.260000 369.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 347.260000 381.436000 354.940000 369.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 354.964000 381.436000 362.692000 369.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 362.668000 381.436000 367.480000 369.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 367.468000 381.436000 371.272000 369.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 371.272000 381.436000 379.000000 369.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 378.976000 381.436000 386.200000 369.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 386.176000 381.436000 390.988000 369.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 390.976000 381.436000 394.780000 369.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 394.780000 381.436000 402.460000 369.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 402.484000 381.436000 406.312000 369.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 406.288000 381.436000 413.968000 369.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 413.992000 381.436000 417.796000 369.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 417.796000 381.436000 424.888000 369.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 424.900000 381.436000 432.628000 369.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 432.604000 381.436000 439.828000 369.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 439.804000 381.436000 447.532000 369.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 447.508000 381.436000 455.188000 369.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 455.212000 381.436000 462.940000 369.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 462.916000 381.436000 466.720000 369.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 466.720000 381.436000 471.532000 369.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 471.520000 381.436000 478.744000 369.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 478.720000 381.436000 482.524000 369.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 482.524000 381.436000 488.680000 369.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 488.728000 381.436000 493.540000 369.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 493.528000 381.436000 500.680000 369.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 500.728000 381.436000 508.456000 369.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 508.432000 381.436000 516.112000 369.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 516.136000 381.436000 519.940000 369.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 519.940000 381.436000 523.768000 369.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 523.744000 381.436000 531.472000 369.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 531.448000 381.436000 535.252000 369.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 108.100000 343.648000 119.028000 327.648000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 118.996000 343.648000 124.468000 327.648000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 124.500000 343.648000 135.492000 327.648000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 135.508000 343.648000 150.276000 327.648000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 150.308000 343.648000 161.156000 327.648000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 161.204000 343.648000 169.092000 327.648000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 169.108000 343.648000 178.628000 327.648000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 319.136000 230.164000 307.136000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 229.096000 319.136000 236.248000 307.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 236.200000 319.136000 241.936000 307.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 241.996000 319.136000 245.824000 307.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 245.800000 319.136000 253.024000 307.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 253.000000 319.136000 260.728000 307.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 260.704000 319.136000 266.860000 307.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 267.508000 319.136000 271.312000 307.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 271.912000 319.136000 276.724000 307.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 276.712000 319.136000 283.480000 307.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 283.516000 319.136000 291.196000 307.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 291.220000 319.136000 298.312000 307.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 298.324000 319.136000 304.480000 307.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 305.128000 319.136000 308.932000 307.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 309.532000 319.136000 316.756000 307.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 316.732000 319.136000 321.172000 307.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 321.736000 319.136000 325.540000 307.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.740000 319.136000 334.732000 307.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 334.240000 319.136000 341.464000 307.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 341.440000 319.136000 351.700000 307.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 351.736000 319.136000 358.828000 307.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 358.840000 319.136000 364.576000 307.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 364.540000 319.136000 370.696000 307.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 371.344000 319.136000 375.148000 307.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 375.748000 319.136000 382.900000 307.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 382.948000 319.136000 388.684000 307.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.648000 319.136000 395.740000 307.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 396.352000 319.136000 400.156000 307.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 400.756000 319.136000 408.436000 307.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 408.460000 319.136000 412.288000 307.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 412.264000 319.136000 419.416000 307.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 419.464000 319.136000 427.192000 307.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 427.168000 319.136000 431.980000 307.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 431.968000 319.136000 439.060000 307.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 439.072000 319.136000 446.752000 307.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 447.376000 319.136000 451.180000 307.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 451.780000 319.136000 455.608000 307.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 455.584000 319.136000 463.312000 307.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 463.984000 319.136000 467.788000 307.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 468.388000 319.136000 473.200000 307.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 473.188000 319.136000 480.916000 307.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 480.988000 319.136000 488.080000 307.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 488.584000 319.136000 492.388000 307.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 492.988000 319.136000 500.668000 307.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 500.692000 319.136000 507.844000 307.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 507.796000 319.136000 513.532000 307.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 513.592000 319.136000 521.272000 307.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 521.296000 319.136000 528.388000 307.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 528.400000 319.136000 536.128000 307.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 536.104000 319.136000 539.908000 307.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 319.136000 543.904000 307.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 305.236000 226.240000 293.236000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 226.204000 305.236000 233.932000 293.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 234.700000 305.236000 238.504000 293.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.200000 305.236000 246.292000 293.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 246.304000 305.236000 253.456000 293.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 253.504000 305.236000 260.224000 293.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 260.200000 305.236000 267.928000 293.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 268.600000 305.236000 272.404000 293.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.904000 305.236000 281.896000 293.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 281.200000 305.236000 288.424000 293.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 288.400000 305.236000 298.660000 293.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 298.696000 305.236000 305.788000 293.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 305.800000 305.236000 311.536000 293.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 311.500000 305.236000 319.180000 293.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 319.204000 305.236000 326.296000 293.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 326.308000 305.236000 333.988000 293.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 334.708000 305.236000 338.512000 293.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.208000 305.236000 343.948000 293.236000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 344.704000 305.236000 348.508000 293.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 349.300000 305.236000 357.028000 293.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 357.004000 305.236000 364.156000 293.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 364.204000 305.236000 370.972000 293.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 371.008000 305.236000 378.100000 293.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 378.712000 305.236000 382.516000 293.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.308000 305.236000 390.988000 293.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 390.904000 305.236000 394.732000 293.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 394.708000 305.236000 401.860000 293.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 401.908000 305.236000 409.636000 293.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 409.708000 305.236000 414.520000 293.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 414.508000 305.236000 421.600000 293.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 421.612000 305.236000 429.292000 293.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 430.012000 305.236000 433.816000 293.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 434.608000 305.236000 441.760000 293.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 441.808000 305.236000 449.536000 293.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 450.208000 305.236000 454.012000 293.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.708000 305.236000 461.860000 293.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 461.908000 305.236000 468.064000 293.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 468.004000 305.236000 474.160000 293.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 474.208000 305.236000 481.432000 293.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 481.408000 305.236000 487.144000 293.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 487.108000 305.236000 491.920000 293.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 492.004000 305.236000 503.380000 293.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 503.308000 305.236000 510.400000 293.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 510.412000 305.236000 518.140000 293.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 518.212000 305.236000 523.024000 293.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 523.708000 305.236000 527.512000 293.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 528.304000 305.236000 535.528000 293.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 535.504000 305.236000 539.944000 293.236000 1.000000 0.000000 0.000000 1.000000 f
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 305.236000 543.904000 293.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 291.336000 227.656000 279.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 227.704000 291.336000 234.796000 279.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 234.808000 291.336000 241.900000 279.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 241.912000 291.336000 249.592000 279.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 249.508000 291.336000 255.664000 279.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 257.008000 291.336000 260.812000 279.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.204000 291.336000 272.464000 279.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 272.500000 291.336000 280.228000 279.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 280.204000 291.336000 284.032000 279.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 284.008000 291.336000 290.728000 279.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 290.812000 291.336000 298.540000 279.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 299.812000 291.336000 303.616000 279.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 305.008000 291.336000 312.688000 279.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 312.712000 291.336000 316.540000 279.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 316.516000 291.336000 323.740000 279.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 323.716000 291.336000 330.940000 279.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 331.012000 291.336000 342.388000 279.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 343.708000 291.336000 347.512000 279.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 348.904000 291.336000 356.056000 279.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 356.104000 291.336000 360.916000 279.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 362.200000 291.336000 366.004000 279.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 367.396000 291.336000 375.076000 279.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 375.100000 291.336000 378.928000 279.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 378.904000 291.336000 387.424000 279.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 387.400000 291.336000 394.492000 279.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 394.504000 291.336000 400.240000 279.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 400.300000 291.336000 407.392000 279.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 407.404000 291.336000 415.132000 279.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 415.108000 291.336000 419.920000 279.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 421.204000 291.336000 425.008000 279.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.400000 291.336000 431.212000 279.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 431.200000 291.336000 435.028000 279.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 435.100000 291.336000 446.476000 279.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 446.404000 291.336000 453.496000 279.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.508000 291.336000 459.664000 279.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 461.008000 291.336000 464.812000 279.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 466.204000 291.336000 473.428000 279.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 473.500000 291.336000 477.940000 279.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 479.200000 291.336000 483.004000 279.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.396000 291.336000 489.208000 279.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.196000 291.336000 496.924000 279.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.996000 291.336000 504.088000 279.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 505.396000 291.336000 509.200000 279.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 510.592000 291.336000 517.360000 279.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 517.396000 291.336000 524.488000 279.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 524.500000 291.336000 531.652000 279.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 531.604000 291.336000 537.340000 279.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 536.104000 291.336000 539.908000 279.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 291.336000 543.904000 279.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 277.436000 229.492000 265.436000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 229.504000 277.436000 237.232000 265.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 237.208000 277.436000 241.036000 265.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 241.108000 277.436000 247.264000 265.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 248.308000 277.436000 252.112000 265.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 253.204000 277.436000 259.924000 265.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 260.008000 277.436000 265.744000 265.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 265.708000 277.436000 272.800000 265.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 272.812000 277.436000 279.964000 265.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 280.012000 277.436000 284.824000 265.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 284.812000 277.436000 291.904000 265.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 291.916000 277.436000 298.072000 265.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 299.116000 277.436000 302.920000 265.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 304.216000 277.436000 311.368000 265.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 312.412000 277.436000 316.216000 265.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.308000 277.436000 324.028000 265.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 324.004000 277.436000 331.228000 265.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 331.204000 277.436000 335.032000 265.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 335.104000 277.436000 342.328000 265.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 342.304000 277.436000 348.040000 265.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 348.004000 277.436000 352.444000 265.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 352.504000 277.436000 360.232000 265.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 360.208000 277.436000 364.036000 265.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 365.212000 277.436000 369.016000 265.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.216000 277.436000 377.368000 265.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 377.416000 277.436000 383.152000 265.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 383.116000 277.436000 388.852000 265.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.816000 277.436000 395.968000 265.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 396.016000 277.436000 403.744000 265.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 403.720000 277.436000 411.400000 265.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 411.424000 277.436000 418.516000 265.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 418.528000 277.436000 429.904000 265.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 429.928000 277.436000 437.020000 265.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 437.032000 277.436000 444.760000 265.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 444.736000 277.436000 449.548000 265.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 450.640000 277.436000 454.444000 265.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 455.536000 277.436000 462.688000 265.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 462.736000 277.436000 470.464000 265.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 470.440000 277.436000 478.120000 265.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 479.236000 277.436000 483.040000 265.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.240000 277.436000 488.068000 265.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 488.044000 277.436000 494.200000 265.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 494.248000 277.436000 498.052000 265.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 499.144000 277.436000 502.948000 265.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 504.040000 277.436000 507.868000 265.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 507.844000 277.436000 515.572000 265.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 516.748000 277.436000 520.552000 265.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 521.752000 277.436000 533.128000 265.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 533.152000 277.436000 539.920000 265.436000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 277.436000 543.904000 265.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 263.536000 228.724000 251.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 228.700000 263.536000 236.380000 251.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 236.404000 263.536000 240.232000 251.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 240.208000 263.536000 247.936000 251.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 248.008000 263.536000 251.836000 251.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 251.812000 263.536000 259.036000 251.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 259.012000 263.536000 266.740000 251.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 266.812000 263.536000 270.616000 251.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 270.616000 263.536000 274.420000 251.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 274.516000 263.536000 285.892000 251.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 285.916000 263.536000 293.140000 251.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 293.116000 263.536000 298.852000 251.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 298.816000 263.536000 305.908000 251.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 306.016000 263.536000 309.820000 251.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.012000 263.536000 317.692000 251.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 317.608000 263.536000 321.436000 251.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 321.508000 263.536000 328.600000 251.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 328.612000 263.536000 335.764000 251.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 335.716000 263.536000 341.872000 251.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 341.920000 263.536000 345.748000 251.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 345.724000 263.536000 353.452000 251.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 353.524000 263.536000 361.204000 251.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 361.120000 263.536000 364.924000 251.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.020000 263.536000 369.832000 251.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 369.916000 263.536000 377.140000 251.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 377.212000 263.536000 381.016000 251.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 381.208000 263.536000 386.020000 251.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 385.912000 263.536000 393.640000 251.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 393.616000 263.536000 400.708000 251.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 400.720000 263.536000 404.524000 251.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.716000 263.536000 411.808000 251.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 411.820000 263.536000 418.588000 251.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 418.624000 263.536000 425.716000 251.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 425.824000 263.536000 429.628000 251.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.820000 263.536000 434.632000 251.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 434.524000 263.536000 442.252000 251.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 442.228000 263.536000 449.380000 251.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 449.428000 263.536000 457.156000 251.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 457.132000 263.536000 460.936000 251.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 461.128000 263.536000 468.808000 251.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 468.832000 263.536000 472.660000 251.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 472.528000 263.536000 478.684000 251.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 478.732000 263.536000 483.544000 251.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 483.532000 263.536000 487.360000 251.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 487.432000 263.536000 495.160000 251.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 495.136000 263.536000 501.856000 251.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 501.832000 263.536000 506.644000 251.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 506.728000 263.536000 510.532000 251.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 510.628000 263.536000 516.364000 251.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 516.424000 263.536000 523.648000 251.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 523.624000 263.536000 533.884000 251.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 533.920000 263.536000 540.076000 251.536000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 263.536000 543.904000 251.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 249.636000 228.724000 237.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 228.700000 249.636000 233.140000 237.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 234.196000 249.636000 238.000000 237.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.092000 249.636000 246.184000 237.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 246.196000 249.636000 253.348000 237.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 253.396000 249.636000 260.116000 237.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 260.092000 249.636000 267.820000 237.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 268.792000 249.636000 272.596000 237.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.688000 249.636000 278.500000 237.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 278.488000 249.636000 285.256000 237.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 285.292000 249.636000 292.972000 237.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 292.996000 249.636000 300.088000 237.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 301.096000 249.636000 304.900000 237.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 305.992000 249.636000 313.216000 237.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 313.192000 249.636000 317.632000 237.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 318.688000 249.636000 322.492000 237.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 324.592000 249.636000 332.584000 237.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 331.588000 249.636000 338.812000 237.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 338.788000 249.636000 349.048000 237.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 349.084000 249.636000 356.176000 237.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 356.188000 249.636000 361.924000 237.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 360.592000 249.636000 364.396000 237.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.392000 249.636000 369.196000 237.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.288000 249.636000 378.508000 237.636000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 378.484000 249.636000 385.708000 237.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 385.684000 249.636000 397.060000 237.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 397.180000 249.636000 404.272000 237.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 405.280000 249.636000 409.084000 237.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 410.176000 249.636000 417.400000 237.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 417.376000 249.636000 421.816000 237.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 422.776000 249.636000 426.580000 237.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 427.672000 249.636000 432.484000 237.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 432.568000 249.636000 440.296000 237.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 440.272000 249.636000 447.364000 237.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 448.372000 249.636000 452.176000 237.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 454.276000 249.636000 462.268000 237.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 461.272000 249.636000 468.496000 237.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 468.472000 249.636000 478.732000 237.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 478.768000 249.636000 485.860000 237.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 485.872000 249.636000 491.608000 237.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 491.572000 249.636000 497.728000 237.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 498.772000 249.636000 502.576000 237.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 503.668000 249.636000 513.928000 237.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 513.964000 249.636000 521.692000 237.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 521.668000 249.636000 525.496000 237.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 525.472000 249.636000 532.192000 237.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 532.276000 249.636000 540.004000 237.636000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 540.100000 249.636000 543.904000 237.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 221.500000 235.736000 228.220000 223.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 228.196000 235.736000 235.348000 223.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 235.396000 235.736000 243.124000 223.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 243.100000 235.736000 246.904000 223.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 246.904000 235.736000 254.584000 223.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 254.608000 235.736000 261.700000 223.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 261.712000 235.736000 265.516000 223.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.516000 235.736000 269.956000 223.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 269.920000 235.736000 277.144000 223.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 277.120000 235.736000 284.848000 223.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 284.824000 235.736000 292.552000 223.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 292.528000 235.736000 300.208000 223.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 300.232000 235.736000 304.036000 223.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 304.036000 235.736000 311.764000 223.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 311.740000 235.736000 318.832000 223.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 318.844000 235.736000 324.580000 223.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 324.544000 235.736000 331.636000 223.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 331.648000 235.736000 335.452000 223.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 335.452000 235.736000 342.604000 223.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 342.652000 235.736000 348.388000 223.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 348.352000 235.736000 355.444000 223.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 355.456000 235.736000 359.488000 223.736000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 93 1 0 0 0 900.000000 0 FAAAAA+OpenSymbol
+drawChar 222.100000 212.944000 226.987000 203.944000 1.000000 0.000000 0.000000 1.000000 ✳
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 236.300000 215.836000 241.040000 203.836000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 241.004000 215.836000 246.740000 203.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 246.704000 215.836000 250.532000 203.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 250.508000 215.836000 256.664000 203.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 256.712000 215.836000 263.804000 203.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 263.816000 215.836000 269.972000 203.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 93 1 0 0 0 900.000000 0 FAAAAA+OpenSymbol
+drawChar 222.100000 193.044000 226.987000 184.044000 1.000000 0.000000 0.000000 1.000000 ✳
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 236.300000 195.936000 245.912000 183.936000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 245.900000 195.936000 253.052000 183.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 253.100000 195.936000 260.828000 183.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 260.804000 195.936000 264.632000 183.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 264.608000 195.936000 268.436000 183.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 268.412000 195.936000 275.564000 183.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 275.612000 195.936000 281.768000 183.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 108.100000 90.136000 116.164000 78.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 115.600000 90.136000 122.752000 78.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 122.800000 90.136000 130.480000 78.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 130.504000 90.136000 137.596000 78.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.608000 90.136000 141.412000 78.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 141.400000 90.136000 149.032000 78.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 148.996000 90.136000 156.628000 78.136000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 11583.600000 0 477.900000 11583.600000 0 477.900000 11893.400000 0 134.300000 11893.400000 0 134.300000 11583.600000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -1079170.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 8594.600000 0 168.100000 8594.600000 0 168.100000 8599.600000 0 76.900000 8599.600000 0 76.900000 8594.600000 0
+eoFillPath subpath 1 163.100000 8599.500000 0 168.100000 8599.500000 0 168.100000 8730.100000 0 163.100000 8730.100000 0 163.100000 8599.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 8599.600000 0 163.100000 8599.600000 0 163.100000 8735.000000 0 72.000000 8735.000000 0 72.000000 8599.600000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 8730.680000 87.320000 8720.680000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 8730.680000 93.420000 8720.680000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 8730.680000 97.510000 8720.680000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 8730.680000 101.420000 8720.680000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 8730.680000 104.170000 8720.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 8730.680000 110.530000 8720.680000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 8730.680000 113.270000 8720.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 8730.680000 116.470000 8720.680000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 8730.680000 123.480000 8720.680000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 8730.680000 129.610000 8720.680000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 8730.680000 135.090000 8720.680000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 8730.680000 140.890000 8720.680000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 8730.680000 144.820000 8720.680000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 8730.680000 150.920000 8720.680000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 8730.680000 153.670000 8720.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 8730.680000 156.470000 8720.680000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 8603.800000 0 168.200000 8603.800000 0 168.200000 8719.000000 0 72.000000 8719.000000 0 72.000000 8603.800000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8671.952000 79.253000 8662.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 8671.952000 86.669000 8662.952000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 8671.952000 90.215000 8662.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 8671.952000 93.077000 8662.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 8671.952000 97.406000 8662.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 8671.952000 100.853000 8662.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 8671.952000 107.324000 8662.952000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 8671.952000 112.337000 8662.952000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 8671.952000 115.271000 8662.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 8671.952000 118.655000 8662.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 8671.952000 126.512000 8662.952000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 8671.952000 130.805000 8662.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 8671.952000 135.881000 8662.952000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 8671.952000 139.355000 8662.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 8671.952000 147.284000 8662.952000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 8671.952000 150.074000 8662.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 8671.952000 155.897000 8662.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 8671.952000 158.750000 8662.952000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 8671.952000 161.853000 8662.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8661.452000 82.124000 8652.452000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 8661.452000 87.137000 8652.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 8661.452000 90.071000 8652.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 8661.452000 93.356000 8652.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 8661.452000 100.403000 8652.452000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 8661.452000 104.921000 8652.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 8661.452000 109.205000 8652.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 8661.452000 117.737000 8652.452000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 8661.452000 123.119000 8652.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 8661.452000 128.996000 8652.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 8661.452000 132.605000 8652.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 8661.452000 138.392000 8652.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 8661.452000 141.749000 8652.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 8661.452000 149.507000 8652.452000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 8661.452000 153.800000 8652.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 8661.452000 158.876000 8652.452000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 8661.452000 161.853000 8652.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8650.952000 81.764000 8641.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 8650.952000 87.596000 8641.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 8650.952000 93.356000 8641.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 8650.952000 102.050000 8641.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 8650.952000 113.822000 8641.952000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 8650.952000 122.651000 8641.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 8650.952000 134.117000 8641.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 8650.952000 138.401000 8641.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 8650.952000 147.149000 8641.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 8650.952000 158.921000 8641.952000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 8650.952000 161.853000 8641.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8640.452000 79.271000 8631.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 8640.452000 84.338000 8631.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 8640.452000 89.621000 8631.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 8640.452000 94.643000 8631.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 8640.452000 100.502000 8631.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 8640.452000 106.262000 8631.452000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 8640.452000 111.518000 8631.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 8640.452000 116.216000 8631.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 8640.452000 119.249000 8631.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 8640.452000 122.363000 8631.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 8640.452000 128.186000 8631.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 8640.452000 131.345000 8631.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 8640.452000 137.060000 8631.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 8640.452000 140.147000 8631.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 8640.452000 145.007000 8631.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 8640.452000 148.598000 8631.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 8640.452000 151.460000 8631.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 8640.452000 155.789000 8631.452000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 8640.452000 158.933000 8631.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8629.952000 80.702000 8620.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 8629.952000 83.573000 8620.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 8629.952000 89.396000 8620.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 8629.952000 95.156000 8620.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 8629.952000 100.547000 8620.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 8629.952000 109.052000 8620.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 8629.952000 111.959000 8620.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 8629.952000 117.251000 8620.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 8629.952000 121.904000 8620.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 8629.952000 126.503000 8620.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 8629.952000 129.338000 8620.952000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 8629.952000 134.936000 8620.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 8629.952000 143.441000 8620.952000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 8629.952000 148.796000 8620.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 8629.952000 154.574000 8620.952000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 8629.952000 158.876000 8620.952000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 8629.952000 161.853000 8620.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8619.452000 79.271000 8610.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 8619.452000 85.094000 8610.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 8619.452000 88.703000 8610.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 8619.452000 94.112000 8610.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 8619.452000 97.244000 8610.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 8619.452000 103.058000 8610.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 8619.452000 108.890000 8610.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 8619.452000 111.950000 8610.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 8619.452000 115.271000 8610.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 8619.452000 120.338000 8610.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 8619.452000 125.621000 8610.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 8619.452000 131.363000 8610.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 8619.452000 134.558000 8610.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 8619.452000 140.048000 8610.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 8619.452000 145.430000 8610.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 8619.452000 150.551000 8610.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 8619.452000 155.960000 8610.452000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 8619.452000 158.933000 8610.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8608.952000 80.009000 8599.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 8608.952000 85.364000 8599.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 8608.952000 88.271000 8599.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 8608.952000 91.169000 8599.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 8608.952000 97.955000 8599.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 8608.952000 107.765000 8599.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 8608.952000 110.672000 8599.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 8608.952000 115.964000 8599.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 8608.952000 120.617000 8599.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 8608.952000 125.216000 8599.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 8608.952000 128.051000 8599.952000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 8608.952000 134.954000 8599.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 8608.952000 146.285000 8599.952000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 8608.952000 151.667000 8599.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 8608.952000 155.906000 8599.952000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 8608.952000 159.033000 8599.952000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 8599.500000 0 72.100000 8599.500000 0 72.100000 8735.000000 0 72.000000 8735.000000 0 72.000000 8599.500000 0
+eoFillPath subpath 1 163.100000 8599.500000 0 163.200000 8599.500000 0 163.200000 8735.000000 0 163.100000 8735.000000 0 163.100000 8599.500000 0
+eoFillPath subpath 1 72.000000 8734.900000 0 163.200000 8734.900000 0 163.200000 8735.000000 0 72.000000 8735.000000 0 72.000000 8734.900000 0
+eoFillPath subpath 1 72.000000 8599.500000 0 163.200000 8599.500000 0 163.200000 8599.600000 0 72.000000 8599.600000 0 72.000000 8599.500000 0
+saveState
+eoClipPath subpath 1 96.900000 8674.800000 0 138.300000 8674.800000 0 138.300000 8719.000000 0 96.900000 8719.000000 0 96.900000 8674.800000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -788290.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 8320.000000 0 165.500000 8320.000000 0 165.500000 8325.000000 0 76.900000 8325.000000 0 76.900000 8320.000000 0
+eoFillPath subpath 1 160.500000 8324.900000 0 165.500000 8324.900000 0 165.500000 8481.200000 0 160.500000 8481.200000 0 160.500000 8324.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 8325.000000 0 121.400000 8325.000000 0 121.400000 8486.100000 0 72.000000 8486.100000 0 72.000000 8325.000000 0
+saveState
+eoClipPath subpath 1 72.000000 8324.900000 0 160.500000 8324.900000 0 160.500000 8486.000000 0 72.000000 8486.000000 0 72.000000 8324.900000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -751590.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 8481.780000 89.280000 8471.780000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 8481.780000 95.630000 8471.780000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 8481.780000 99.520000 8471.780000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 8481.780000 102.270000 8471.780000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 8481.780000 108.450000 8471.780000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 8481.780000 112.610000 8471.780000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 8481.780000 118.510000 8471.780000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 8481.780000 121.670000 8471.780000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 8481.780000 124.470000 8471.780000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 8481.780000 130.830000 8471.780000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 8481.780000 133.970000 8471.780000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 8481.780000 137.920000 8471.780000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 8481.780000 144.230000 8471.780000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 8481.780000 150.350000 8471.780000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 8481.780000 153.570000 8471.780000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 8470.080000 95.000000 8460.080000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 8470.080000 97.770000 8460.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 8470.080000 103.000000 8460.080000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 8470.080000 109.330000 8460.080000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 8470.080000 117.470000 8460.080000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 8470.080000 123.620000 8460.080000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 8470.080000 128.800000 8460.080000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 8470.080000 135.130000 8460.080000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 8470.080000 141.250000 8460.080000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 8470.080000 145.410000 8460.080000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8455.252000 82.961000 8446.252000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 8455.252000 87.614000 8446.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 8455.252000 93.356000 8446.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 8455.252000 98.612000 8446.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 8455.252000 103.733000 8446.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 8455.252000 106.568000 8446.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 8455.252000 111.959000 8446.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 8455.252000 114.866000 8446.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 8455.252000 117.665000 8446.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 8455.252000 122.768000 8446.252000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 8455.252000 125.747000 8446.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 8455.252000 131.651000 8446.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 8455.252000 136.907000 8446.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 8455.252000 142.307000 8446.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 8455.252000 148.049000 8446.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 8455.252000 150.956000 8446.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 8455.252000 156.302000 8446.252000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 8455.252000 159.253000 8446.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8444.752000 84.095000 8435.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 8444.752000 89.900000 8435.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 8444.752000 95.318000 8435.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 8444.752000 100.349000 8435.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 8444.752000 110.789000 8435.752000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 8444.752000 111.464000 8435.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 8444.752000 114.362000 8435.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 8444.752000 119.348000 8435.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 8444.752000 126.962000 8435.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 8444.752000 132.047000 8435.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 8444.752000 139.958000 8435.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 8444.752000 142.865000 8435.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 8444.752000 147.410000 8435.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 8444.752000 153.287000 8435.752000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 8444.752000 156.333000 8435.752000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8434.252000 84.095000 8425.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 8434.252000 89.468000 8425.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 8434.252000 94.121000 8425.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 8434.252000 99.899000 8425.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 8434.252000 105.218000 8425.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 8434.252000 109.502000 8425.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 8434.252000 115.649000 8425.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 8434.252000 122.327000 8425.252000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 8434.252000 127.718000 8425.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 8434.252000 132.002000 8425.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 8434.252000 138.149000 8425.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 8434.252000 145.205000 8425.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 8434.252000 150.992000 8425.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 8434.252000 156.311000 8425.252000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 8434.252000 159.253000 8425.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8423.752000 82.394000 8414.752000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 8423.752000 86.705000 8414.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 8423.752000 91.322000 8414.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 8423.752000 94.913000 8414.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 8423.752000 98.054000 8414.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 8423.752000 102.014000 8414.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 8423.752000 104.876000 8414.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 8423.752000 113.435000 8414.752000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 8423.752000 118.718000 8414.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 8423.752000 121.949000 8414.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 8423.752000 125.063000 8414.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 8423.752000 130.886000 8414.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 8423.752000 134.045000 8414.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 8423.752000 138.005000 8414.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 8423.752000 143.792000 8414.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 8423.752000 149.111000 8414.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 8423.752000 151.964000 8414.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 8423.752000 156.293000 8414.752000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 8423.752000 159.153000 8414.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8413.252000 79.271000 8404.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 8413.252000 82.169000 8404.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 8413.252000 85.526000 8404.252000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 8413.252000 90.818000 8404.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 8413.252000 94.454000 8404.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 8413.252000 99.008000 8404.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 8413.252000 104.318000 8404.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 8413.252000 110.096000 8404.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 8413.252000 115.856000 8404.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 8413.252000 119.546000 8404.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 8413.252000 124.001000 8404.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 8413.252000 129.509000 8404.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 8413.252000 133.145000 8404.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 8413.252000 139.751000 8404.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 8413.252000 145.205000 8404.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 8413.252000 148.841000 8404.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 8413.252000 152.657000 8404.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 8413.252000 156.293000 8404.252000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 8413.252000 159.253000 8404.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8402.752000 84.095000 8393.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 8402.752000 88.406000 8393.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 8402.752000 93.824000 8393.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 8402.752000 99.602000 8393.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 8402.752000 105.362000 8393.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 8402.752000 108.422000 8393.752000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 8402.752000 116.747000 8393.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 8402.752000 129.275000 8393.752000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 8402.752000 135.089000 8393.752000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 8402.752000 138.698000 8393.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 8402.752000 141.560000 8393.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 8402.752000 146.906000 8393.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 8402.752000 151.190000 8393.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 8402.752000 156.266000 8393.752000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 8402.752000 159.253000 8393.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8392.252000 82.196000 8383.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 8392.252000 87.560000 8383.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 8392.252000 92.213000 8383.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 8392.252000 96.551000 8383.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 8392.252000 101.708000 8383.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 8392.252000 107.216000 8383.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 8392.252000 111.653000 8383.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 8392.252000 118.961000 8383.252000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 8392.252000 124.316000 8383.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 8392.252000 128.654000 8383.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 8392.252000 133.172000 8383.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 8392.252000 138.995000 8383.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 8392.252000 143.612000 8383.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 8392.252000 148.913000 8383.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 8392.252000 153.197000 8383.252000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 8392.252000 156.333000 8383.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8381.752000 80.009000 8372.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 8381.752000 85.319000 8372.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 8381.752000 91.061000 8372.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 8381.752000 100.052000 8372.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 8381.752000 113.993000 8372.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 8381.752000 116.873000 8372.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 8381.752000 120.410000 8372.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 8381.752000 126.296000 8372.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 8381.752000 135.350000 8372.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 8381.752000 145.106000 8372.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 8381.752000 150.893000 8372.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 8381.752000 156.212000 8372.752000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 8381.752000 159.253000 8372.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8371.252000 82.196000 8362.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 8371.252000 87.560000 8362.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 8371.252000 93.392000 8362.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 8371.252000 99.152000 8362.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 8371.252000 101.960000 8362.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 8371.252000 107.306000 8362.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 8371.252000 111.905000 8362.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 8371.252000 115.640000 8362.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 8371.252000 122.444000 8362.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 8371.252000 127.898000 8362.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 8371.252000 135.575000 8362.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 8371.252000 141.380000 8362.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 8371.252000 145.241000 8362.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 8371.252000 150.803000 8362.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 8371.252000 156.302000 8362.252000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 8371.252000 159.253000 8362.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8360.752000 80.009000 8351.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 8360.752000 85.796000 8351.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 8360.752000 91.115000 8351.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 8360.752000 95.399000 8351.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 8360.752000 100.718000 8351.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 8360.752000 107.054000 8351.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 8360.752000 118.097000 8351.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 8360.752000 123.524000 8351.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 8360.752000 129.401000 8351.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 8360.752000 131.768000 8351.752000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 8360.752000 135.413000 8351.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 8360.752000 141.659000 8351.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 8360.752000 150.965000 8351.752000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 8360.752000 156.320000 8351.752000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 8360.752000 159.253000 8351.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8350.252000 81.017000 8341.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 8350.252000 84.608000 8341.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 8350.252000 89.963000 8341.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 8350.252000 92.870000 8341.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 8350.252000 98.693000 8341.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 8350.252000 103.310000 8341.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 8350.252000 107.243000 8341.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 8350.252000 116.081000 8341.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 8350.252000 121.886000 8341.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 8350.252000 127.205000 8341.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 8350.252000 132.983000 8341.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 8350.252000 136.943000 8341.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 8350.252000 143.846000 8341.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 8350.252000 148.184000 8341.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 8350.252000 153.260000 8341.252000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 8350.252000 156.433000 8341.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 8339.752000 79.271000 8330.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 8339.752000 85.094000 8330.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 8339.752000 90.854000 8330.752000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 8339.752000 93.653000 8330.752000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 8324.900000 0 72.100000 8324.900000 0 72.100000 8486.100000 0 72.000000 8486.100000 0 72.000000 8324.900000 0
+eoFillPath subpath 1 160.500000 8324.900000 0 160.600000 8324.900000 0 160.600000 8486.100000 0 160.500000 8486.100000 0 160.500000 8324.900000 0
+eoFillPath subpath 1 72.000000 8486.000000 0 160.600000 8486.000000 0 160.600000 8486.100000 0 72.000000 8486.100000 0 72.000000 8486.000000 0
+eoFillPath subpath 1 72.000000 8324.900000 0 160.600000 8324.900000 0 160.600000 8325.000000 0 72.000000 8325.000000 0 72.000000 8324.900000 0
+saveState
+eoClipPath subpath 1 108.000000 7837.500000 0 178.900000 7837.500000 0 178.900000 7894.200000 0 108.000000 7894.200000 0 108.000000 7837.500000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -704560.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 3779.200000 0 165.500000 3779.200000 0 165.500000 3784.200000 0 76.900000 3784.200000 0 76.900000 3779.200000 0
+eoFillPath subpath 1 160.500000 3784.100000 0 165.500000 3784.100000 0 165.500000 3892.900000 0 160.500000 3892.900000 0 160.500000 3784.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 3784.200000 0 160.500000 3784.200000 0 160.500000 3897.800000 0 72.000000 3897.800000 0 72.000000 3784.200000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3893.452000 83.771000 3884.452000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 3893.452000 89.594000 3884.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 3893.452000 92.465000 3884.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 3893.452000 97.568000 3884.452000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 3893.452000 100.943000 3884.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 3893.452000 106.955000 3884.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 3893.452000 110.447000 3884.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 3893.452000 114.425000 3884.452000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 3893.452000 119.717000 3884.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 3893.452000 127.493000 3884.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 3893.452000 130.949000 3884.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 3893.452000 136.574000 3884.452000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 3893.452000 141.920000 3884.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 3893.452000 147.365000 3884.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 3893.452000 151.703000 3884.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 3893.452000 156.320000 3884.452000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 3893.452000 159.153000 3884.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3882.952000 81.764000 3873.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 3882.952000 85.130000 3873.952000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 3882.952000 88.712000 3873.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 3882.952000 94.022000 3873.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 3882.952000 98.306000 3873.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 3882.952000 102.455000 3873.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 3882.952000 106.676000 3873.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 3882.952000 110.312000 3873.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 3882.952000 114.920000 3873.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 3882.952000 119.060000 3873.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 3882.952000 125.450000 3873.952000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 3882.952000 130.832000 3873.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 3882.952000 139.445000 3873.952000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 3882.952000 145.169000 3873.952000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 3882.952000 148.076000 3873.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 3882.952000 153.323000 3873.952000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 3882.952000 156.433000 3873.952000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3872.452000 80.009000 3863.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 3872.452000 82.871000 3863.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 3872.452000 88.316000 3863.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 3872.452000 94.094000 3863.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 3872.452000 96.947000 3863.452000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 3872.452000 104.948000 3863.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 3872.452000 113.705000 3863.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 3872.452000 119.492000 3863.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 3872.452000 124.811000 3863.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 3872.452000 132.848000 3863.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 3872.452000 141.605000 3863.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 3872.452000 144.467000 3863.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 3872.452000 148.103000 3863.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 3872.452000 150.965000 3863.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 3872.452000 156.311000 3863.452000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3872.452000 159.253000 3863.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3861.952000 80.999000 3852.952000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 3861.952000 90.539000 3852.952000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 3861.952000 95.318000 3852.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 3861.952000 99.602000 3852.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 3861.952000 102.473000 3852.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 3861.952000 108.260000 3852.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 3861.952000 110.762000 3852.952000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 3861.952000 115.316000 3852.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 3861.952000 122.156000 3852.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 3861.952000 132.299000 3852.952000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 3861.952000 136.970000 3852.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 3861.952000 139.877000 3852.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 3861.952000 142.775000 3852.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 3861.952000 148.022000 3852.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 3861.952000 152.720000 3852.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 3861.952000 156.311000 3852.952000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3861.952000 159.253000 3852.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3851.452000 83.006000 3842.452000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 3851.452000 88.793000 3842.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 3851.452000 91.664000 3842.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 3851.452000 94.562000 3842.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 3851.452000 100.349000 3842.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 3851.452000 103.157000 3842.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 3851.452000 108.980000 3842.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 3851.452000 114.740000 3842.452000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 3851.452000 119.375000 3842.452000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 3851.452000 128.033000 3842.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 3851.452000 141.479000 3842.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 3851.452000 146.807000 3842.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 3851.452000 152.684000 3842.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 3851.452000 156.293000 3842.452000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3851.452000 159.253000 3842.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3840.952000 79.730000 3831.952000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 3840.952000 84.005000 3831.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 3840.952000 89.423000 3831.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 3840.952000 98.036000 3831.952000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 3840.952000 121.157000 3831.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 3840.952000 145.115000 3831.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 3840.952000 151.001000 3831.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 3840.952000 156.320000 3831.952000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 3840.952000 159.253000 3831.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3830.452000 83.285000 3821.452000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 3830.452000 89.099000 3821.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 3830.452000 93.401000 3821.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 3830.452000 98.477000 3821.452000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 3830.452000 103.121000 3821.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 3830.452000 105.974000 3821.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 3830.452000 111.320000 3821.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 3830.452000 115.604000 3821.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 3830.452000 123.857000 3821.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 3830.452000 136.007000 3821.452000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 3830.452000 141.794000 3821.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 3830.452000 144.665000 3821.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 3830.452000 147.464000 3821.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 3830.452000 153.251000 3821.452000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 3830.452000 156.433000 3821.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3819.952000 79.271000 3810.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 3819.952000 85.094000 3810.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 3819.952000 90.854000 3810.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 3819.952000 96.146000 3810.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 3819.952000 102.302000 3810.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 3819.952000 107.711000 3810.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 3819.952000 113.048000 3810.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 3819.952000 119.204000 3810.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 3819.952000 124.991000 3810.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 3819.952000 130.310000 3810.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 3819.952000 135.647000 3810.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 3819.952000 144.755000 3810.952000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 3819.952000 153.323000 3810.952000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 3819.952000 156.333000 3810.952000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3809.452000 82.160000 3800.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 3809.452000 85.067000 3800.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 3809.452000 89.297000 3800.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 3809.452000 94.616000 3800.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 3809.452000 98.747000 3800.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 3809.452000 106.055000 3800.452000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 3809.452000 109.700000 3800.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 3809.452000 115.055000 3800.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 3809.452000 118.601000 3800.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 3809.452000 124.010000 3800.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 3809.452000 128.042000 3800.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 3809.452000 135.998000 3800.452000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 3809.452000 141.785000 3800.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 3809.452000 144.656000 3800.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 3809.452000 147.554000 3800.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 3809.452000 153.341000 3800.452000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 3809.452000 156.433000 3800.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 3798.952000 79.271000 3789.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 3798.952000 85.094000 3789.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 3798.952000 90.854000 3789.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 3798.952000 93.743000 3789.952000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 3784.100000 0 72.100000 3784.100000 0 72.100000 3897.800000 0 72.000000 3897.800000 0 72.000000 3784.100000 0
+eoFillPath subpath 1 160.500000 3784.100000 0 160.600000 3784.100000 0 160.600000 3897.800000 0 160.500000 3897.800000 0 160.500000 3784.100000 0
+eoFillPath subpath 1 72.000000 3897.700000 0 160.600000 3897.700000 0 160.600000 3897.800000 0 72.000000 3897.800000 0 72.000000 3897.700000 0
+eoFillPath subpath 1 72.000000 3784.100000 0 160.600000 3784.100000 0 160.600000 3784.200000 0 72.000000 3784.200000 0 72.000000 3784.100000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 9973.600000 0 169.600000 9973.600000 0 169.600000 9978.600000 0 76.900000 9978.600000 0 76.900000 9973.600000 0
+eoFillPath subpath 1 164.600000 9978.500000 0 169.600000 9978.500000 0 169.600000 10094.100000 0 164.600000 10094.100000 0 164.600000 9978.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 9978.600000 0 121.400000 9978.600000 0 121.400000 10099.000000 0 72.000000 10099.000000 0 72.000000 9978.600000 0
+saveState
+eoClipPath subpath 1 72.000000 9978.500000 0 164.600000 9978.500000 0 164.600000 10098.900000 0 72.000000 10098.900000 0 72.000000 9978.500000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -912830.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 10048.500000 0 93.700000 10048.500000 0 93.700000 10067.700000 0 72.000000 10067.700000 0 72.000000 10048.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 10048.500000 0 169.600000 10048.500000 0 169.600000 10067.700000 0 93.700000 10067.700000 0 93.700000 10048.500000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 10031.800000 0 93.700000 10031.800000 0 93.700000 10048.500000 0 72.000000 10048.500000 0 72.000000 10031.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 10031.800000 0 169.600000 10031.800000 0 169.600000 10048.500000 0 93.700000 10048.500000 0 93.700000 10031.800000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 10012.600000 0 93.700000 10012.600000 0 93.700000 10031.800000 0 72.000000 10031.800000 0 72.000000 10012.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 10012.600000 0 169.600000 10012.600000 0 169.600000 10031.800000 0 93.700000 10031.800000 0 93.700000 10012.600000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 9993.400000 0 93.700000 9993.400000 0 93.700000 10012.600000 0 72.000000 10012.600000 0 72.000000 9993.400000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 9993.400000 0 169.600000 9993.400000 0 169.600000 10012.600000 0 93.700000 10012.600000 0 93.700000 9993.400000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10094.652000 82.898000 10085.652000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 10094.652000 87.200000 10085.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 10094.652000 90.809000 10085.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 10094.652000 93.671000 10085.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 10094.652000 98.315000 10085.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 10094.652000 101.906000 10085.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 10094.652000 106.514000 10085.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 10094.652000 109.754000 10085.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 10094.652000 112.868000 10085.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 10094.652000 118.691000 10085.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 10094.652000 121.850000 10085.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 10094.652000 125.702000 10085.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 10094.652000 131.588000 10085.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 10094.652000 136.907000 10085.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 10094.652000 140.039000 10085.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 10094.652000 146.078000 10085.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 10094.652000 151.442000 10085.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 10094.652000 154.349000 10085.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 10094.652000 157.148000 10085.652000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 10094.652000 160.433000 10085.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10084.152000 84.095000 10075.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 10084.152000 89.468000 10075.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 10084.152000 94.580000 10075.152000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 10084.152000 97.631000 10075.152000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 10063.752000 104.443000 10054.752000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 10063.752000 109.060000 10054.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 10063.752000 113.398000 10054.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 10063.752000 119.194000 10054.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 10063.752000 124.612000 10054.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 10063.752000 127.465000 10054.752000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 10047.052000 101.176000 10038.052000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 10047.052000 104.074000 10038.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 10047.052000 109.420000 10038.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 10047.052000 114.442000 10038.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 10047.052000 120.202000 10038.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 10047.052000 123.811000 10038.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 10047.052000 129.121000 10038.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 10047.052000 134.899000 10038.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 10047.052000 139.516000 10038.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 10047.052000 143.107000 10038.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 10047.052000 148.417000 10038.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 10047.052000 151.270000 10038.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 10047.052000 157.093000 10038.052000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 10030.352000 103.048000 10021.352000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 10030.352000 108.421000 10021.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 10030.352000 113.443000 10021.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 10030.352000 118.852000 10021.352000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 10030.352000 124.702000 10021.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 10030.352000 130.021000 10021.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 10030.352000 135.079000 10021.352000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 10011.152000 104.407000 10002.152000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 10011.152000 109.816000 10002.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 10011.152000 115.594000 10002.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 10011.152000 121.354000 10002.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 10011.152000 125.692000 10002.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 10011.152000 128.563000 10002.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 10011.152000 133.954000 10002.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 10011.152000 139.786000 10002.152000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 9978.500000 0 72.100000 9978.500000 0 72.100000 10099.000000 0 72.000000 10099.000000 0 72.000000 9978.500000 0
+eoFillPath subpath 1 164.600000 9978.500000 0 164.700000 9978.500000 0 164.700000 10099.000000 0 164.600000 10099.000000 0 164.600000 9978.500000 0
+eoFillPath subpath 1 72.000000 10098.900000 0 164.700000 10098.900000 0 164.700000 10099.000000 0 72.000000 10099.000000 0 72.000000 10098.900000 0
+eoFillPath subpath 1 72.000000 9978.500000 0 164.700000 9978.500000 0 164.700000 9978.600000 0 72.000000 9978.600000 0 72.000000 9978.500000 0
+eoFillPath subpath 1 91.300000 9993.400000 0 93.700000 9993.400000 0 93.700000 10067.700000 0 91.300000 10067.700000 0 91.300000 9993.400000 0
+eoFillPath subpath 1 72.000000 10012.600000 0 169.600000 10012.600000 0 169.600000 10015.000000 0 72.000000 10015.000000 0 72.000000 10012.600000 0
+eoFillPath subpath 1 72.000000 10065.300000 0 169.600000 10065.300000 0 169.600000 10067.700000 0 72.000000 10067.700000 0 72.000000 10065.300000 0
+eoFillPath subpath 1 72.000000 9993.400000 0 169.600000 9993.400000 0 169.600000 9995.800000 0 72.000000 9995.800000 0 72.000000 9993.400000 0
+saveState
+eoClipPath subpath 1 108.000000 2127.400000 0 150.800000 2127.400000 0 150.800000 2171.700000 0 108.000000 2171.700000 0 108.000000 2127.400000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 -133550.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 1277.500000 0 499.600000 1277.500000 0 499.600000 1282.600000 0 186.800000 1282.600000 0 186.800000 1277.500000 0
+eoFillPath subpath 1 494.500000 1282.500000 0 499.600000 1282.500000 0 499.600000 1470.900000 0 494.500000 1470.900000 0 494.500000 1282.500000 0
+saveState
+eoClipPath subpath 1 181.800000 1282.500000 0 494.500000 1282.500000 0 494.500000 1475.800000 0 181.800000 1475.800000 0 181.800000 1282.500000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 1475.900000 0 494.500000 1475.900000 0 494.500000 1475.900000 0 181.700000 1475.900000 0
+eoFillPath subpath 1 181.700000 1475.900000 0 494.500000 1475.900000 0 494.500000 1475.100000 0 181.700000 1475.100000 0 181.700000 1475.900000 0
+eoFillPath subpath 1 181.700000 1475.100000 0 494.500000 1475.100000 0 494.500000 1474.400000 0 181.700000 1474.400000 0 181.700000 1475.100000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 1474.400000 0 494.500000 1474.400000 0 494.500000 1473.600000 0 181.700000 1473.600000 0 181.700000 1474.400000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 1473.600000 0 494.500000 1473.600000 0 494.500000 1472.800000 0 181.700000 1472.800000 0 181.700000 1473.600000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 1472.800000 0 494.500000 1472.800000 0 494.500000 1472.100000 0 181.700000 1472.100000 0 181.700000 1472.800000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 1472.100000 0 494.500000 1472.100000 0 494.500000 1471.300000 0 181.700000 1471.300000 0 181.700000 1472.100000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 1471.300000 0 494.500000 1471.300000 0 494.500000 1470.600000 0 181.700000 1470.600000 0 181.700000 1471.300000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 1470.600000 0 494.500000 1470.600000 0 494.500000 1469.800000 0 181.700000 1469.800000 0 181.700000 1470.600000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 1469.800000 0 494.500000 1469.800000 0 494.500000 1469.100000 0 181.700000 1469.100000 0 181.700000 1469.800000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 1469.100000 0 494.500000 1469.100000 0 494.500000 1468.300000 0 181.700000 1468.300000 0 181.700000 1469.100000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 1468.300000 0 494.500000 1468.300000 0 494.500000 1467.500000 0 181.700000 1467.500000 0 181.700000 1468.300000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 1467.500000 0 494.500000 1467.500000 0 494.500000 1466.800000 0 181.700000 1466.800000 0 181.700000 1467.500000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 1466.800000 0 494.500000 1466.800000 0 494.500000 1466.000000 0 181.700000 1466.000000 0 181.700000 1466.800000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 1466.000000 0 494.500000 1466.000000 0 494.500000 1465.300000 0 181.700000 1465.300000 0 181.700000 1466.000000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 1465.300000 0 494.500000 1465.300000 0 494.500000 1464.500000 0 181.700000 1464.500000 0 181.700000 1465.300000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 1464.500000 0 494.500000 1464.500000 0 494.500000 1463.700000 0 181.700000 1463.700000 0 181.700000 1464.500000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 1463.700000 0 494.500000 1463.700000 0 494.500000 1463.000000 0 181.700000 1463.000000 0 181.700000 1463.700000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 1463.000000 0 494.500000 1463.000000 0 494.500000 1462.200000 0 181.700000 1462.200000 0 181.700000 1463.000000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 1462.200000 0 494.500000 1462.200000 0 494.500000 1461.500000 0 181.700000 1461.500000 0 181.700000 1462.200000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 1461.500000 0 494.500000 1461.500000 0 494.500000 1460.700000 0 181.700000 1460.700000 0 181.700000 1461.500000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 1460.700000 0 494.500000 1460.700000 0 494.500000 1459.900000 0 181.700000 1459.900000 0 181.700000 1460.700000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 1459.900000 0 494.500000 1459.900000 0 494.500000 1459.200000 0 181.700000 1459.200000 0 181.700000 1459.900000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 1459.200000 0 494.500000 1459.200000 0 494.500000 1458.400000 0 181.700000 1458.400000 0 181.700000 1459.200000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 1458.400000 0 494.500000 1458.400000 0 494.500000 1457.700000 0 181.700000 1457.700000 0 181.700000 1458.400000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 1457.700000 0 494.500000 1457.700000 0 494.500000 1456.900000 0 181.700000 1456.900000 0 181.700000 1457.700000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 1456.900000 0 494.500000 1456.900000 0 494.500000 1456.200000 0 181.700000 1456.200000 0 181.700000 1456.900000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 1456.200000 0 494.500000 1456.200000 0 494.500000 1455.400000 0 181.700000 1455.400000 0 181.700000 1456.200000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 1455.400000 0 494.500000 1455.400000 0 494.500000 1454.600000 0 181.700000 1454.600000 0 181.700000 1455.400000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 1454.600000 0 494.500000 1454.600000 0 494.500000 1453.900000 0 181.700000 1453.900000 0 181.700000 1454.600000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 1453.900000 0 494.500000 1453.900000 0 494.500000 1453.100000 0 181.700000 1453.100000 0 181.700000 1453.900000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 1453.100000 0 494.500000 1453.100000 0 494.500000 1452.400000 0 181.700000 1452.400000 0 181.700000 1453.100000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 1452.400000 0 494.500000 1452.400000 0 494.500000 1451.600000 0 181.700000 1451.600000 0 181.700000 1452.400000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 1451.600000 0 494.500000 1451.600000 0 494.500000 1450.800000 0 181.700000 1450.800000 0 181.700000 1451.600000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 1450.800000 0 494.500000 1450.800000 0 494.500000 1450.100000 0 181.700000 1450.100000 0 181.700000 1450.800000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 1450.100000 0 494.500000 1450.100000 0 494.500000 1449.300000 0 181.700000 1449.300000 0 181.700000 1450.100000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 1449.300000 0 494.500000 1449.300000 0 494.500000 1448.600000 0 181.700000 1448.600000 0 181.700000 1449.300000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 1448.600000 0 494.500000 1448.600000 0 494.500000 1447.800000 0 181.700000 1447.800000 0 181.700000 1448.600000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 1447.800000 0 494.500000 1447.800000 0 494.500000 1447.000000 0 181.700000 1447.000000 0 181.700000 1447.800000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 1447.000000 0 494.500000 1447.000000 0 494.500000 1446.300000 0 181.700000 1446.300000 0 181.700000 1447.000000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 1446.300000 0 494.500000 1446.300000 0 494.500000 1445.500000 0 181.700000 1445.500000 0 181.700000 1446.300000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 1445.500000 0 494.500000 1445.500000 0 494.500000 1444.800000 0 181.700000 1444.800000 0 181.700000 1445.500000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 1444.800000 0 494.500000 1444.800000 0 494.500000 1444.000000 0 181.700000 1444.000000 0 181.700000 1444.800000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 1444.000000 0 494.500000 1444.000000 0 494.500000 1443.300000 0 181.700000 1443.300000 0 181.700000 1444.000000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 1443.300000 0 494.500000 1443.300000 0 494.500000 1442.500000 0 181.700000 1442.500000 0 181.700000 1443.300000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 1442.500000 0 494.500000 1442.500000 0 494.500000 1441.700000 0 181.700000 1441.700000 0 181.700000 1442.500000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 1441.700000 0 494.500000 1441.700000 0 494.500000 1441.000000 0 181.700000 1441.000000 0 181.700000 1441.700000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 1441.000000 0 494.500000 1441.000000 0 494.500000 1440.200000 0 181.700000 1440.200000 0 181.700000 1441.000000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 1440.200000 0 494.500000 1440.200000 0 494.500000 1439.500000 0 181.700000 1439.500000 0 181.700000 1440.200000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 1439.500000 0 494.500000 1439.500000 0 494.500000 1438.700000 0 181.700000 1438.700000 0 181.700000 1439.500000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 1438.700000 0 494.500000 1438.700000 0 494.500000 1437.900000 0 181.700000 1437.900000 0 181.700000 1438.700000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 1437.900000 0 494.500000 1437.900000 0 494.500000 1437.200000 0 181.700000 1437.200000 0 181.700000 1437.900000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 1437.200000 0 494.500000 1437.200000 0 494.500000 1436.400000 0 181.700000 1436.400000 0 181.700000 1437.200000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 1436.400000 0 494.500000 1436.400000 0 494.500000 1435.700000 0 181.700000 1435.700000 0 181.700000 1436.400000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 1435.700000 0 494.500000 1435.700000 0 494.500000 1434.900000 0 181.700000 1434.900000 0 181.700000 1435.700000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 1434.900000 0 494.500000 1434.900000 0 494.500000 1434.100000 0 181.700000 1434.100000 0 181.700000 1434.900000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 1434.100000 0 494.500000 1434.100000 0 494.500000 1433.400000 0 181.700000 1433.400000 0 181.700000 1434.100000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 1433.400000 0 494.500000 1433.400000 0 494.500000 1432.600000 0 181.700000 1432.600000 0 181.700000 1433.400000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 1432.600000 0 494.500000 1432.600000 0 494.500000 1431.900000 0 181.700000 1431.900000 0 181.700000 1432.600000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 1431.900000 0 494.500000 1431.900000 0 494.500000 1431.100000 0 181.700000 1431.100000 0 181.700000 1431.900000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 1431.100000 0 494.500000 1431.100000 0 494.500000 1430.400000 0 181.700000 1430.400000 0 181.700000 1431.100000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 1430.400000 0 494.500000 1430.400000 0 494.500000 1429.600000 0 181.700000 1429.600000 0 181.700000 1430.400000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 1429.600000 0 494.500000 1429.600000 0 494.500000 1428.800000 0 181.700000 1428.800000 0 181.700000 1429.600000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 1428.800000 0 494.500000 1428.800000 0 494.500000 1428.100000 0 181.700000 1428.100000 0 181.700000 1428.800000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 1428.100000 0 494.500000 1428.100000 0 494.500000 1427.300000 0 181.700000 1427.300000 0 181.700000 1428.100000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 1427.300000 0 494.500000 1427.300000 0 494.500000 1426.600000 0 181.700000 1426.600000 0 181.700000 1427.300000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 1426.600000 0 494.500000 1426.600000 0 494.500000 1425.800000 0 181.700000 1425.800000 0 181.700000 1426.600000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 1425.800000 0 494.500000 1425.800000 0 494.500000 1425.000000 0 181.700000 1425.000000 0 181.700000 1425.800000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 1425.000000 0 494.500000 1425.000000 0 494.500000 1424.300000 0 181.700000 1424.300000 0 181.700000 1425.000000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 1424.300000 0 494.500000 1424.300000 0 494.500000 1423.500000 0 181.700000 1423.500000 0 181.700000 1424.300000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 1423.500000 0 494.500000 1423.500000 0 494.500000 1422.800000 0 181.700000 1422.800000 0 181.700000 1423.500000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 1422.800000 0 494.500000 1422.800000 0 494.500000 1422.000000 0 181.700000 1422.000000 0 181.700000 1422.800000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 1422.000000 0 494.500000 1422.000000 0 494.500000 1421.200000 0 181.700000 1421.200000 0 181.700000 1422.000000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 1421.200000 0 494.500000 1421.200000 0 494.500000 1420.500000 0 181.700000 1420.500000 0 181.700000 1421.200000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 1420.500000 0 494.500000 1420.500000 0 494.500000 1419.700000 0 181.700000 1419.700000 0 181.700000 1420.500000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 1419.700000 0 494.500000 1419.700000 0 494.500000 1419.000000 0 181.700000 1419.000000 0 181.700000 1419.700000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 1419.000000 0 494.500000 1419.000000 0 494.500000 1418.200000 0 181.700000 1418.200000 0 181.700000 1419.000000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 1418.200000 0 494.500000 1418.200000 0 494.500000 1417.500000 0 181.700000 1417.500000 0 181.700000 1418.200000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 1417.500000 0 494.500000 1417.500000 0 494.500000 1416.700000 0 181.700000 1416.700000 0 181.700000 1417.500000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 1416.700000 0 494.500000 1416.700000 0 494.500000 1415.900000 0 181.700000 1415.900000 0 181.700000 1416.700000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 1415.900000 0 494.500000 1415.900000 0 494.500000 1415.200000 0 181.700000 1415.200000 0 181.700000 1415.900000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 1415.200000 0 494.500000 1415.200000 0 494.500000 1414.400000 0 181.700000 1414.400000 0 181.700000 1415.200000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 1414.400000 0 494.500000 1414.400000 0 494.500000 1413.700000 0 181.700000 1413.700000 0 181.700000 1414.400000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 1413.700000 0 494.500000 1413.700000 0 494.500000 1412.900000 0 181.700000 1412.900000 0 181.700000 1413.700000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 1412.900000 0 494.500000 1412.900000 0 494.500000 1412.100000 0 181.700000 1412.100000 0 181.700000 1412.900000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 1412.100000 0 494.500000 1412.100000 0 494.500000 1411.400000 0 181.700000 1411.400000 0 181.700000 1412.100000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 1411.400000 0 494.500000 1411.400000 0 494.500000 1410.600000 0 181.700000 1410.600000 0 181.700000 1411.400000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 1410.600000 0 494.500000 1410.600000 0 494.500000 1409.900000 0 181.700000 1409.900000 0 181.700000 1410.600000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 1409.900000 0 494.500000 1409.900000 0 494.500000 1409.100000 0 181.700000 1409.100000 0 181.700000 1409.900000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 1409.100000 0 494.500000 1409.100000 0 494.500000 1408.300000 0 181.700000 1408.300000 0 181.700000 1409.100000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 1408.300000 0 494.500000 1408.300000 0 494.500000 1407.600000 0 181.700000 1407.600000 0 181.700000 1408.300000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 1407.600000 0 494.500000 1407.600000 0 494.500000 1406.800000 0 181.700000 1406.800000 0 181.700000 1407.600000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 1406.800000 0 494.500000 1406.800000 0 494.500000 1406.100000 0 181.700000 1406.100000 0 181.700000 1406.800000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 1406.100000 0 494.500000 1406.100000 0 494.500000 1405.300000 0 181.700000 1405.300000 0 181.700000 1406.100000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 1405.300000 0 494.500000 1405.300000 0 494.500000 1404.600000 0 181.700000 1404.600000 0 181.700000 1405.300000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 1404.600000 0 494.500000 1404.600000 0 494.500000 1403.800000 0 181.700000 1403.800000 0 181.700000 1404.600000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 1403.800000 0 494.500000 1403.800000 0 494.500000 1403.000000 0 181.700000 1403.000000 0 181.700000 1403.800000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 1403.000000 0 494.500000 1403.000000 0 494.500000 1402.300000 0 181.700000 1402.300000 0 181.700000 1403.000000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 1402.300000 0 494.500000 1402.300000 0 494.500000 1401.500000 0 181.700000 1401.500000 0 181.700000 1402.300000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 1401.500000 0 494.500000 1401.500000 0 494.500000 1400.800000 0 181.700000 1400.800000 0 181.700000 1401.500000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 1400.800000 0 494.500000 1400.800000 0 494.500000 1400.000000 0 181.700000 1400.000000 0 181.700000 1400.800000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 1400.000000 0 494.500000 1400.000000 0 494.500000 1399.200000 0 181.700000 1399.200000 0 181.700000 1400.000000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 1399.200000 0 494.500000 1399.200000 0 494.500000 1398.500000 0 181.700000 1398.500000 0 181.700000 1399.200000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 1398.500000 0 494.500000 1398.500000 0 494.500000 1397.700000 0 181.700000 1397.700000 0 181.700000 1398.500000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 1397.700000 0 494.500000 1397.700000 0 494.500000 1397.000000 0 181.700000 1397.000000 0 181.700000 1397.700000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 1397.000000 0 494.500000 1397.000000 0 494.500000 1396.200000 0 181.700000 1396.200000 0 181.700000 1397.000000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 1396.200000 0 494.500000 1396.200000 0 494.500000 1395.400000 0 181.700000 1395.400000 0 181.700000 1396.200000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 1395.400000 0 494.500000 1395.400000 0 494.500000 1394.700000 0 181.700000 1394.700000 0 181.700000 1395.400000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 1394.700000 0 494.500000 1394.700000 0 494.500000 1393.900000 0 181.700000 1393.900000 0 181.700000 1394.700000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 1393.900000 0 494.500000 1393.900000 0 494.500000 1393.200000 0 181.700000 1393.200000 0 181.700000 1393.900000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 1393.200000 0 494.500000 1393.200000 0 494.500000 1392.400000 0 181.700000 1392.400000 0 181.700000 1393.200000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 1392.400000 0 494.500000 1392.400000 0 494.500000 1391.700000 0 181.700000 1391.700000 0 181.700000 1392.400000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 1391.700000 0 494.500000 1391.700000 0 494.500000 1390.900000 0 181.700000 1390.900000 0 181.700000 1391.700000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 1390.900000 0 494.500000 1390.900000 0 494.500000 1390.100000 0 181.700000 1390.100000 0 181.700000 1390.900000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 1390.100000 0 494.500000 1390.100000 0 494.500000 1389.400000 0 181.700000 1389.400000 0 181.700000 1390.100000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 1389.400000 0 494.500000 1389.400000 0 494.500000 1388.600000 0 181.700000 1388.600000 0 181.700000 1389.400000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 1388.600000 0 494.500000 1388.600000 0 494.500000 1387.900000 0 181.700000 1387.900000 0 181.700000 1388.600000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 1387.900000 0 494.500000 1387.900000 0 494.500000 1387.100000 0 181.700000 1387.100000 0 181.700000 1387.900000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 1387.100000 0 494.500000 1387.100000 0 494.500000 1386.300000 0 181.700000 1386.300000 0 181.700000 1387.100000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 1386.300000 0 494.500000 1386.300000 0 494.500000 1385.600000 0 181.700000 1385.600000 0 181.700000 1386.300000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 1385.600000 0 494.500000 1385.600000 0 494.500000 1384.800000 0 181.700000 1384.800000 0 181.700000 1385.600000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 1384.800000 0 494.500000 1384.800000 0 494.500000 1384.100000 0 181.700000 1384.100000 0 181.700000 1384.800000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 1384.100000 0 494.500000 1384.100000 0 494.500000 1383.300000 0 181.700000 1383.300000 0 181.700000 1384.100000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 1383.300000 0 494.500000 1383.300000 0 494.500000 1382.500000 0 181.700000 1382.500000 0 181.700000 1383.300000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 1382.500000 0 494.500000 1382.500000 0 494.500000 1381.800000 0 181.700000 1381.800000 0 181.700000 1382.500000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 1381.800000 0 494.500000 1381.800000 0 494.500000 1381.000000 0 181.700000 1381.000000 0 181.700000 1381.800000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 1381.000000 0 494.500000 1381.000000 0 494.500000 1380.300000 0 181.700000 1380.300000 0 181.700000 1381.000000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 1380.300000 0 494.500000 1380.300000 0 494.500000 1379.500000 0 181.700000 1379.500000 0 181.700000 1380.300000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 1379.500000 0 494.500000 1379.500000 0 494.500000 1378.800000 0 181.700000 1378.800000 0 181.700000 1379.500000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 1378.800000 0 494.500000 1378.800000 0 494.500000 1378.000000 0 181.700000 1378.000000 0 181.700000 1378.800000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 1378.000000 0 494.500000 1378.000000 0 494.500000 1377.200000 0 181.700000 1377.200000 0 181.700000 1378.000000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 1377.200000 0 494.500000 1377.200000 0 494.500000 1376.500000 0 181.700000 1376.500000 0 181.700000 1377.200000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 1376.500000 0 494.500000 1376.500000 0 494.500000 1375.700000 0 181.700000 1375.700000 0 181.700000 1376.500000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 1375.700000 0 494.500000 1375.700000 0 494.500000 1375.000000 0 181.700000 1375.000000 0 181.700000 1375.700000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 1375.000000 0 494.500000 1375.000000 0 494.500000 1374.200000 0 181.700000 1374.200000 0 181.700000 1375.000000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 1374.200000 0 494.500000 1374.200000 0 494.500000 1373.400000 0 181.700000 1373.400000 0 181.700000 1374.200000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 1373.400000 0 494.500000 1373.400000 0 494.500000 1372.700000 0 181.700000 1372.700000 0 181.700000 1373.400000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 1372.700000 0 494.500000 1372.700000 0 494.500000 1371.900000 0 181.700000 1371.900000 0 181.700000 1372.700000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 1371.900000 0 494.500000 1371.900000 0 494.500000 1371.200000 0 181.700000 1371.200000 0 181.700000 1371.900000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 1371.200000 0 494.500000 1371.200000 0 494.500000 1370.400000 0 181.700000 1370.400000 0 181.700000 1371.200000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 1370.400000 0 494.500000 1370.400000 0 494.500000 1369.600000 0 181.700000 1369.600000 0 181.700000 1370.400000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 1369.600000 0 494.500000 1369.600000 0 494.500000 1368.900000 0 181.700000 1368.900000 0 181.700000 1369.600000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 1368.900000 0 494.500000 1368.900000 0 494.500000 1368.100000 0 181.700000 1368.100000 0 181.700000 1368.900000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 1368.100000 0 494.500000 1368.100000 0 494.500000 1367.400000 0 181.700000 1367.400000 0 181.700000 1368.100000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 1367.400000 0 494.500000 1367.400000 0 494.500000 1366.600000 0 181.700000 1366.600000 0 181.700000 1367.400000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 1366.600000 0 494.500000 1366.600000 0 494.500000 1365.900000 0 181.700000 1365.900000 0 181.700000 1366.600000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 1365.900000 0 494.500000 1365.900000 0 494.500000 1365.100000 0 181.700000 1365.100000 0 181.700000 1365.900000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 1365.100000 0 494.500000 1365.100000 0 494.500000 1364.300000 0 181.700000 1364.300000 0 181.700000 1365.100000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 1364.300000 0 494.500000 1364.300000 0 494.500000 1363.600000 0 181.700000 1363.600000 0 181.700000 1364.300000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 1363.600000 0 494.500000 1363.600000 0 494.500000 1362.800000 0 181.700000 1362.800000 0 181.700000 1363.600000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 1362.800000 0 494.500000 1362.800000 0 494.500000 1362.100000 0 181.700000 1362.100000 0 181.700000 1362.800000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 1362.100000 0 494.500000 1362.100000 0 494.500000 1361.300000 0 181.700000 1361.300000 0 181.700000 1362.100000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 1361.300000 0 494.500000 1361.300000 0 494.500000 1360.500000 0 181.700000 1360.500000 0 181.700000 1361.300000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 1360.500000 0 494.500000 1360.500000 0 494.500000 1359.800000 0 181.700000 1359.800000 0 181.700000 1360.500000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 1359.800000 0 494.500000 1359.800000 0 494.500000 1359.000000 0 181.700000 1359.000000 0 181.700000 1359.800000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 1359.000000 0 494.500000 1359.000000 0 494.500000 1358.300000 0 181.700000 1358.300000 0 181.700000 1359.000000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 1358.300000 0 494.500000 1358.300000 0 494.500000 1357.500000 0 181.700000 1357.500000 0 181.700000 1358.300000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 1357.500000 0 494.500000 1357.500000 0 494.500000 1356.700000 0 181.700000 1356.700000 0 181.700000 1357.500000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 1356.700000 0 494.500000 1356.700000 0 494.500000 1356.000000 0 181.700000 1356.000000 0 181.700000 1356.700000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 1356.000000 0 494.500000 1356.000000 0 494.500000 1355.200000 0 181.700000 1355.200000 0 181.700000 1356.000000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 1355.200000 0 494.500000 1355.200000 0 494.500000 1354.500000 0 181.700000 1354.500000 0 181.700000 1355.200000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 1354.500000 0 494.500000 1354.500000 0 494.500000 1353.700000 0 181.700000 1353.700000 0 181.700000 1354.500000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 1353.700000 0 494.500000 1353.700000 0 494.500000 1353.000000 0 181.700000 1353.000000 0 181.700000 1353.700000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 1353.000000 0 494.500000 1353.000000 0 494.500000 1352.200000 0 181.700000 1352.200000 0 181.700000 1353.000000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 1352.200000 0 494.500000 1352.200000 0 494.500000 1351.400000 0 181.700000 1351.400000 0 181.700000 1352.200000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 1351.400000 0 494.500000 1351.400000 0 494.500000 1350.700000 0 181.700000 1350.700000 0 181.700000 1351.400000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 1350.700000 0 494.500000 1350.700000 0 494.500000 1349.900000 0 181.700000 1349.900000 0 181.700000 1350.700000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 1349.900000 0 494.500000 1349.900000 0 494.500000 1349.200000 0 181.700000 1349.200000 0 181.700000 1349.900000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 1349.200000 0 494.500000 1349.200000 0 494.500000 1348.400000 0 181.700000 1348.400000 0 181.700000 1349.200000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 1348.400000 0 494.500000 1348.400000 0 494.500000 1347.600000 0 181.700000 1347.600000 0 181.700000 1348.400000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 1347.600000 0 494.500000 1347.600000 0 494.500000 1346.900000 0 181.700000 1346.900000 0 181.700000 1347.600000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 1346.900000 0 494.500000 1346.900000 0 494.500000 1346.100000 0 181.700000 1346.100000 0 181.700000 1346.900000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 1346.100000 0 494.500000 1346.100000 0 494.500000 1345.400000 0 181.700000 1345.400000 0 181.700000 1346.100000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 1345.400000 0 494.500000 1345.400000 0 494.500000 1344.600000 0 181.700000 1344.600000 0 181.700000 1345.400000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 1344.600000 0 494.500000 1344.600000 0 494.500000 1343.800000 0 181.700000 1343.800000 0 181.700000 1344.600000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 1343.800000 0 494.500000 1343.800000 0 494.500000 1343.100000 0 181.700000 1343.100000 0 181.700000 1343.800000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 1343.100000 0 494.500000 1343.100000 0 494.500000 1342.300000 0 181.700000 1342.300000 0 181.700000 1343.100000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 1342.300000 0 494.500000 1342.300000 0 494.500000 1341.600000 0 181.700000 1341.600000 0 181.700000 1342.300000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 1341.600000 0 494.500000 1341.600000 0 494.500000 1340.800000 0 181.700000 1340.800000 0 181.700000 1341.600000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 1340.800000 0 494.500000 1340.800000 0 494.500000 1340.100000 0 181.700000 1340.100000 0 181.700000 1340.800000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 1340.100000 0 494.500000 1340.100000 0 494.500000 1339.300000 0 181.700000 1339.300000 0 181.700000 1340.100000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 1339.300000 0 494.500000 1339.300000 0 494.500000 1338.500000 0 181.700000 1338.500000 0 181.700000 1339.300000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 1338.500000 0 494.500000 1338.500000 0 494.500000 1337.800000 0 181.700000 1337.800000 0 181.700000 1338.500000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 1337.800000 0 494.500000 1337.800000 0 494.500000 1337.000000 0 181.700000 1337.000000 0 181.700000 1337.800000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 1337.000000 0 494.500000 1337.000000 0 494.500000 1336.300000 0 181.700000 1336.300000 0 181.700000 1337.000000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 1336.300000 0 494.500000 1336.300000 0 494.500000 1335.500000 0 181.700000 1335.500000 0 181.700000 1336.300000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 1335.500000 0 494.500000 1335.500000 0 494.500000 1334.700000 0 181.700000 1334.700000 0 181.700000 1335.500000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 1334.700000 0 494.500000 1334.700000 0 494.500000 1334.000000 0 181.700000 1334.000000 0 181.700000 1334.700000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 1334.000000 0 494.500000 1334.000000 0 494.500000 1333.200000 0 181.700000 1333.200000 0 181.700000 1334.000000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 1333.200000 0 494.500000 1333.200000 0 494.500000 1332.500000 0 181.700000 1332.500000 0 181.700000 1333.200000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 1332.500000 0 494.500000 1332.500000 0 494.500000 1331.700000 0 181.700000 1331.700000 0 181.700000 1332.500000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 1331.700000 0 494.500000 1331.700000 0 494.500000 1331.000000 0 181.700000 1331.000000 0 181.700000 1331.700000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 1331.000000 0 494.500000 1331.000000 0 494.500000 1330.200000 0 181.700000 1330.200000 0 181.700000 1331.000000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 1330.200000 0 494.500000 1330.200000 0 494.500000 1329.400000 0 181.700000 1329.400000 0 181.700000 1330.200000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 1329.400000 0 494.500000 1329.400000 0 494.500000 1328.700000 0 181.700000 1328.700000 0 181.700000 1329.400000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 1328.700000 0 494.500000 1328.700000 0 494.500000 1327.900000 0 181.700000 1327.900000 0 181.700000 1328.700000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 1327.900000 0 494.500000 1327.900000 0 494.500000 1327.200000 0 181.700000 1327.200000 0 181.700000 1327.900000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 1327.200000 0 494.500000 1327.200000 0 494.500000 1326.400000 0 181.700000 1326.400000 0 181.700000 1327.200000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 1326.400000 0 494.500000 1326.400000 0 494.500000 1325.700000 0 181.700000 1325.700000 0 181.700000 1326.400000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 1325.700000 0 494.500000 1325.700000 0 494.500000 1324.900000 0 181.700000 1324.900000 0 181.700000 1325.700000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 1324.900000 0 494.500000 1324.900000 0 494.500000 1324.100000 0 181.700000 1324.100000 0 181.700000 1324.900000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 1324.100000 0 494.500000 1324.100000 0 494.500000 1323.400000 0 181.700000 1323.400000 0 181.700000 1324.100000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 1323.400000 0 494.500000 1323.400000 0 494.500000 1322.600000 0 181.700000 1322.600000 0 181.700000 1323.400000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 1322.600000 0 494.500000 1322.600000 0 494.500000 1321.900000 0 181.700000 1321.900000 0 181.700000 1322.600000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 1321.900000 0 494.500000 1321.900000 0 494.500000 1321.100000 0 181.700000 1321.100000 0 181.700000 1321.900000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 1321.100000 0 494.500000 1321.100000 0 494.500000 1320.300000 0 181.700000 1320.300000 0 181.700000 1321.100000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 1320.300000 0 494.500000 1320.300000 0 494.500000 1319.600000 0 181.700000 1319.600000 0 181.700000 1320.300000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 1319.600000 0 494.500000 1319.600000 0 494.500000 1318.800000 0 181.700000 1318.800000 0 181.700000 1319.600000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 1318.800000 0 494.500000 1318.800000 0 494.500000 1318.100000 0 181.700000 1318.100000 0 181.700000 1318.800000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 1318.100000 0 494.500000 1318.100000 0 494.500000 1317.300000 0 181.700000 1317.300000 0 181.700000 1318.100000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 1317.300000 0 494.500000 1317.300000 0 494.500000 1316.600000 0 181.700000 1316.600000 0 181.700000 1317.300000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 1316.600000 0 494.500000 1316.600000 0 494.500000 1315.800000 0 181.700000 1315.800000 0 181.700000 1316.600000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 1315.800000 0 494.500000 1315.800000 0 494.500000 1315.000000 0 181.700000 1315.000000 0 181.700000 1315.800000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 1315.000000 0 494.500000 1315.000000 0 494.500000 1314.300000 0 181.700000 1314.300000 0 181.700000 1315.000000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 1314.300000 0 494.500000 1314.300000 0 494.500000 1313.500000 0 181.700000 1313.500000 0 181.700000 1314.300000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 1313.500000 0 494.500000 1313.500000 0 494.500000 1312.800000 0 181.700000 1312.800000 0 181.700000 1313.500000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 1312.800000 0 494.500000 1312.800000 0 494.500000 1312.000000 0 181.700000 1312.000000 0 181.700000 1312.800000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 1312.000000 0 494.500000 1312.000000 0 494.500000 1311.300000 0 181.700000 1311.300000 0 181.700000 1312.000000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 1311.300000 0 494.500000 1311.300000 0 494.500000 1310.500000 0 181.700000 1310.500000 0 181.700000 1311.300000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 1310.500000 0 494.500000 1310.500000 0 494.500000 1309.700000 0 181.700000 1309.700000 0 181.700000 1310.500000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 1309.700000 0 494.500000 1309.700000 0 494.500000 1309.000000 0 181.700000 1309.000000 0 181.700000 1309.700000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 1309.000000 0 494.500000 1309.000000 0 494.500000 1308.200000 0 181.700000 1308.200000 0 181.700000 1309.000000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 1308.200000 0 494.500000 1308.200000 0 494.500000 1307.500000 0 181.700000 1307.500000 0 181.700000 1308.200000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 1307.500000 0 494.500000 1307.500000 0 494.500000 1306.700000 0 181.700000 1306.700000 0 181.700000 1307.500000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 1306.700000 0 494.500000 1306.700000 0 494.500000 1305.900000 0 181.700000 1305.900000 0 181.700000 1306.700000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 1305.900000 0 494.500000 1305.900000 0 494.500000 1305.200000 0 181.700000 1305.200000 0 181.700000 1305.900000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 1305.200000 0 494.500000 1305.200000 0 494.500000 1304.400000 0 181.700000 1304.400000 0 181.700000 1305.200000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 1304.400000 0 494.500000 1304.400000 0 494.500000 1303.700000 0 181.700000 1303.700000 0 181.700000 1304.400000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 1303.700000 0 494.500000 1303.700000 0 494.500000 1302.900000 0 181.700000 1302.900000 0 181.700000 1303.700000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 1302.900000 0 494.500000 1302.900000 0 494.500000 1302.100000 0 181.700000 1302.100000 0 181.700000 1302.900000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 1302.100000 0 494.500000 1302.100000 0 494.500000 1301.400000 0 181.700000 1301.400000 0 181.700000 1302.100000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 1301.400000 0 494.500000 1301.400000 0 494.500000 1300.600000 0 181.700000 1300.600000 0 181.700000 1301.400000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 1300.600000 0 494.500000 1300.600000 0 494.500000 1299.900000 0 181.700000 1299.900000 0 181.700000 1300.600000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 1299.900000 0 494.500000 1299.900000 0 494.500000 1299.100000 0 181.700000 1299.100000 0 181.700000 1299.900000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 1299.100000 0 494.500000 1299.100000 0 494.500000 1298.400000 0 181.700000 1298.400000 0 181.700000 1299.100000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 1298.400000 0 494.500000 1298.400000 0 494.500000 1297.600000 0 181.700000 1297.600000 0 181.700000 1298.400000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 1297.600000 0 494.500000 1297.600000 0 494.500000 1296.800000 0 181.700000 1296.800000 0 181.700000 1297.600000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 1296.800000 0 494.500000 1296.800000 0 494.500000 1296.100000 0 181.700000 1296.100000 0 181.700000 1296.800000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 1296.100000 0 494.500000 1296.100000 0 494.500000 1295.300000 0 181.700000 1295.300000 0 181.700000 1296.100000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 1295.300000 0 494.500000 1295.300000 0 494.500000 1294.600000 0 181.700000 1294.600000 0 181.700000 1295.300000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 1294.600000 0 494.500000 1294.600000 0 494.500000 1293.800000 0 181.700000 1293.800000 0 181.700000 1294.600000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 1293.800000 0 494.500000 1293.800000 0 494.500000 1293.000000 0 181.700000 1293.000000 0 181.700000 1293.800000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 1293.000000 0 494.500000 1293.000000 0 494.500000 1292.300000 0 181.700000 1292.300000 0 181.700000 1293.000000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 1292.300000 0 494.500000 1292.300000 0 494.500000 1291.500000 0 181.700000 1291.500000 0 181.700000 1292.300000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 1291.500000 0 494.500000 1291.500000 0 494.500000 1290.800000 0 181.700000 1290.800000 0 181.700000 1291.500000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 1290.800000 0 494.500000 1290.800000 0 494.500000 1290.000000 0 181.700000 1290.000000 0 181.700000 1290.800000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 1290.000000 0 494.500000 1290.000000 0 494.500000 1289.200000 0 181.700000 1289.200000 0 181.700000 1290.000000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 1289.200000 0 494.500000 1289.200000 0 494.500000 1288.500000 0 181.700000 1288.500000 0 181.700000 1289.200000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 1288.500000 0 494.500000 1288.500000 0 494.500000 1287.700000 0 181.700000 1287.700000 0 181.700000 1288.500000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 1287.700000 0 494.500000 1287.700000 0 494.500000 1287.000000 0 181.700000 1287.000000 0 181.700000 1287.700000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 1287.000000 0 494.500000 1287.000000 0 494.500000 1286.200000 0 181.700000 1286.200000 0 181.700000 1287.000000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 1286.200000 0 494.500000 1286.200000 0 494.500000 1285.500000 0 181.700000 1285.500000 0 181.700000 1286.200000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 1285.500000 0 494.500000 1285.500000 0 494.500000 1284.700000 0 181.700000 1284.700000 0 181.700000 1285.500000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 1284.700000 0 494.500000 1284.700000 0 494.500000 1283.900000 0 181.700000 1283.900000 0 181.700000 1284.700000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 1283.900000 0 494.500000 1283.900000 0 494.500000 1283.200000 0 181.700000 1283.200000 0 181.700000 1283.900000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 1283.200000 0 494.500000 1283.200000 0 494.500000 1282.400000 0 181.700000 1282.400000 0 181.700000 1283.200000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 1282.500000 0 181.800000 1282.500000 0 181.800000 1475.800000 0 494.400000 1475.800000 0 494.400000 1282.500000 0 338.100000 1282.500000 0
+strokePath subpath 1 338.100000 1282.500000 0 181.800000 1282.500000 0 181.800000 1475.800000 0 494.400000 1475.800000 0 494.400000 1282.500000 0 338.100000 1282.500000 0
+saveState
+updateCtm 11410.000000 0.000000 0.000000 -8760.000000 20530.000000 -56650.000000
+drawSoftMaskedImage 1142 877 1142 877 JPEG 70955 PPM 3004618
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 1321.524000 215.488000 1313.524000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 1321.524000 220.592000 1313.524000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 1321.524000 225.696000 1313.524000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 1321.524000 230.800000 1313.524000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 1313.924000 241.388000 1305.924000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 1313.924000 246.492000 1305.924000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 1313.924000 251.596000 1305.924000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 1313.924000 256.700000 1305.924000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 1306.224000 267.188000 1298.224000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 1306.224000 272.292000 1298.224000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 1306.224000 277.396000 1298.224000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 1306.224000 282.500000 1298.224000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 1298.624000 293.088000 1290.624000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 1298.624000 298.192000 1290.624000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 1298.624000 303.296000 1290.624000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 1298.624000 308.400000 1290.624000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 1336.524000 202.588000 1328.524000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 1355.824000 201.688000 1347.824000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 1375.124000 195.788000 1367.124000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 1375.124000 200.892000 1367.124000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 1394.424000 194.888000 1386.424000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 1394.424000 199.992000 1386.424000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 1413.824000 193.988000 1405.824000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 1413.824000 199.092000 1405.824000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 1433.124000 193.088000 1425.124000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 1433.124000 198.192000 1425.124000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 1305.224000 330.188000 1297.224000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 1305.224000 332.716000 1297.224000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 1305.224000 337.596000 1297.224000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 1305.224000 341.396000 1297.224000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 1305.224000 346.036000 1297.224000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 1305.224000 350.900000 1297.224000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 1305.224000 355.972000 1297.224000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 1305.224000 359.196000 1297.224000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 1305.224000 362.196000 1297.224000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 1305.224000 367.404000 1297.224000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 1305.224000 371.876000 1297.224000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 1305.224000 375.052000 1297.224000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 1324.724000 361.172000 1316.724000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 1324.724000 364.340000 1316.724000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 1324.724000 367.396000 1316.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 1324.724000 372.604000 1316.724000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 1324.724000 379.348000 1316.724000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 1324.724000 384.484000 1316.724000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 1324.724000 389.436000 1316.724000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 1324.724000 392.108000 1316.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 1324.724000 395.708000 1316.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 1324.724000 397.540000 1316.724000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 1324.724000 402.444000 1316.724000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 1324.724000 406.788000 1316.724000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 1344.224000 392.972000 1336.224000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 1344.224000 398.076000 1336.224000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 1344.224000 403.180000 1336.224000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 1344.224000 405.428000 1336.224000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 1344.224000 410.332000 1336.224000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 1344.224000 414.476000 1336.224000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 1471.892000 305.808000 1457.892000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 1471.892000 314.138000 1457.892000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 1471.892000 320.788000 1457.892000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 1471.892000 328.698000 1457.892000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 1471.892000 336.972000 1457.892000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 1471.892000 344.182000 1457.892000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 1471.892000 349.810000 1457.892000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 1471.892000 354.234000 1457.892000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 1471.892000 362.718000 1457.892000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 1471.892000 367.870000 1457.892000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 1471.892000 372.322000 1457.892000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 1471.892000 382.080000 1457.892000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 1471.892000 388.772000 1457.892000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 1471.892000 397.802000 1457.892000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 1471.892000 402.254000 1457.892000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 1471.892000 407.896000 1457.892000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 1349.000000 0 424.300000 1349.000000 0 424.300000 1409.700000 0 493.600000 1409.700000 0 493.600000 1349.000000 0 458.900000 1349.000000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 1400.100000 0 428.900000 1400.100000 0 428.900000 1406.000000 0 434.800000 1406.000000 0 434.800000 1400.100000 0 431.900000 1400.100000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 1389.000000 0 428.900000 1389.000000 0 428.900000 1395.000000 0 434.800000 1395.000000 0 434.800000 1389.000000 0 431.900000 1389.000000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 1377.900000 0 428.900000 1377.900000 0 428.900000 1383.900000 0 434.800000 1383.900000 0 434.800000 1377.900000 0 431.900000 1377.900000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 1366.800000 0 428.900000 1366.800000 0 428.900000 1372.800000 0 434.800000 1372.800000 0 434.800000 1366.800000 0 431.900000 1366.800000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 1355.700000 0 428.900000 1355.700000 0 428.900000 1361.700000 0 434.800000 1361.700000 0 434.800000 1355.700000 0 431.900000 1355.700000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 1407.124000 443.288000 1399.124000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 1407.124000 445.816000 1399.124000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 1407.124000 450.600000 1399.124000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 1407.124000 454.496000 1399.124000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 1407.124000 459.136000 1399.124000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 1407.124000 464.000000 1399.124000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 1407.124000 468.976000 1399.124000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 1407.124000 472.304000 1399.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 1407.124000 475.208000 1399.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 1407.124000 480.520000 1399.124000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 1407.124000 484.992000 1399.124000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 1407.124000 488.168000 1399.124000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 1396.124000 443.352000 1388.124000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 1396.124000 447.920000 1388.124000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 1396.124000 452.976000 1388.124000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 1396.124000 457.400000 1388.124000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 1396.124000 462.472000 1388.124000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 1396.124000 465.800000 1388.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 1396.124000 468.904000 1388.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 1396.124000 473.816000 1388.124000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 1396.124000 478.888000 1388.124000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 1396.124000 482.064000 1388.124000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 1385.024000 442.872000 1377.024000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 1385.024000 446.040000 1377.024000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 1385.024000 448.992000 1377.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 1385.024000 454.304000 1377.024000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 1385.024000 461.048000 1377.024000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 1385.024000 466.184000 1377.024000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 1385.024000 471.136000 1377.024000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 1385.024000 473.808000 1377.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 1385.024000 477.408000 1377.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 1385.024000 479.240000 1377.024000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 1385.024000 484.144000 1377.024000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 1385.024000 488.488000 1377.024000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 1373.924000 443.384000 1365.924000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 1373.924000 448.464000 1365.924000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 1373.924000 453.424000 1365.924000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 1373.924000 456.696000 1365.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 1373.924000 459.800000 1365.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 1373.924000 462.032000 1365.924000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 1373.924000 466.936000 1365.924000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 1373.924000 471.080000 1365.924000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 1362.824000 443.272000 1354.824000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 1362.824000 448.376000 1354.824000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 1362.824000 453.480000 1354.824000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 1362.824000 455.728000 1354.824000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 1362.824000 460.632000 1354.824000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 1362.824000 464.776000 1354.824000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -1282.200000 0 114.800000 -1282.200000 0 114.800000 -1239.400000 0 72.000000 -1239.400000 0 72.000000 -1282.200000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 207410.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 546.200000 0 504.000000 546.200000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 546.200000 0
+eoFillPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 245.800000 0 72.000000 245.800000 0 72.000000 72.000000 0
+eoFillPath subpath 1 72.000000 245.800000 0 121.400000 245.800000 0 121.400000 546.200000 0 72.000000 546.200000 0 72.000000 245.800000 0
+eoFillPath subpath 1 454.500000 245.800000 0 504.000000 245.800000 0 504.000000 546.200000 0 454.500000 546.200000 0 454.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 701.300000 0 504.000000 701.300000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 701.300000 0
+eoFillPath subpath 1 72.000000 72.200000 0 504.000000 72.200000 0 504.000000 86.100000 0 72.000000 86.100000 0 72.000000 72.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 348.500000 719.948000 362.292000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 362.308000 719.948000 371.764000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 371.812000 719.948000 376.884000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 376.916000 719.948000 388.932000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 388.916000 719.948000 398.692000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 398.724000 719.948000 408.852000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 408.820000 719.948000 417.140000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 417.124000 719.948000 426.964000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 426.932000 719.948000 432.004000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 432.036000 719.948000 437.796000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 437.844000 719.948000 442.916000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 442.900000 719.948000 452.100000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 452.100000 719.948000 456.532000 703.948000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 456.500000 719.948000 466.276000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 466.308000 719.948000 479.380000 703.948000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 479.412000 719.948000 489.252000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 489.220000 719.948000 495.796000 703.948000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 495.828000 719.948000 504.148000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 93 1 0 0 0 900.000000 0 FAAAAA+OpenSymbol
+drawChar 186.100000 670.044000 190.987000 661.044000 1.000000 0.000000 0.000000 1.000000 ✳
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 200.300000 672.936000 209.912000 660.936000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 209.900000 672.936000 217.052000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 217.100000 672.936000 225.620000 660.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 225.596000 672.936000 232.820000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 232.796000 672.936000 240.476000 660.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 240.500000 672.936000 244.328000 660.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 244.304000 672.936000 248.132000 660.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 248.108000 672.936000 254.264000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 93 1 0 0 0 900.000000 0 FAAAAA+OpenSymbol
+drawChar 186.100000 650.144000 190.987000 641.144000 1.000000 0.000000 0.000000 1.000000 ✳
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 200.300000 653.036000 209.324000 641.036000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 209.300000 653.036000 217.028000 641.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 217.004000 653.036000 224.228000 641.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 224.204000 653.036000 231.884000 641.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 231.908000 653.036000 239.132000 641.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 239.108000 653.036000 246.788000 641.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 246.812000 653.036000 253.904000 641.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 253.916000 653.036000 261.644000 641.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 261.620000 653.036000 269.300000 641.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 269.324000 653.036000 275.060000 641.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 275.024000 653.036000 282.248000 641.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 282.224000 653.036000 289.952000 641.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 289.928000 653.036000 296.084000 641.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 93 1 0 0 0 900.000000 0 FAAAAA+OpenSymbol
+drawChar 186.100000 630.244000 190.987000 621.244000 1.000000 0.000000 0.000000 1.000000 ✳
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 200.300000 633.136000 209.480000 621.136000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 209.504000 633.136000 217.232000 621.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 217.208000 633.136000 222.944000 621.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 222.908000 633.136000 229.676000 621.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 229.712000 633.136000 235.868000 621.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 235.916000 633.136000 243.068000 621.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 243.116000 633.136000 250.844000 621.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 250.820000 633.136000 255.632000 621.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 255.620000 633.136000 263.348000 621.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 263.324000 633.136000 270.416000 621.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 270.428000 633.136000 281.804000 621.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 281.828000 633.136000 289.556000 621.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 289.532000 633.136000 300.908000 621.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 300.932000 633.136000 307.088000 621.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 595.348000 83.684000 579.348000 1.000000 0.000000 0.000000 1.000000 Y
+drawChar 82.196000 595.348000 92.980000 579.348000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 92.996000 595.348000 100.884000 579.348000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 100.900000 595.348000 112.340000 579.348000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 570.836000 193.492000 558.836000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 193.504000 570.836000 201.232000 558.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 201.208000 570.836000 208.300000 558.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 209.212000 570.836000 213.016000 558.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 213.916000 570.836000 221.596000 558.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 221.620000 570.836000 228.772000 558.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 228.724000 570.836000 235.444000 558.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 235.528000 570.836000 242.788000 558.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 242.728000 570.836000 249.496000 558.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 249.628000 570.836000 256.780000 558.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 256.828000 570.836000 262.564000 558.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 262.432000 570.836000 270.112000 558.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 271.036000 570.836000 274.840000 558.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 275.740000 570.836000 282.964000 558.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 282.940000 570.836000 291.460000 558.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 291.544000 570.836000 298.636000 558.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 298.648000 570.836000 304.384000 558.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 304.444000 570.836000 310.600000 558.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 311.440000 570.836000 315.244000 558.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.144000 570.836000 323.296000 558.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 324.244000 570.836000 328.048000 558.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 328.948000 570.836000 336.628000 558.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 336.652000 570.836000 343.876000 558.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 343.852000 570.836000 351.076000 558.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 351.052000 570.836000 358.732000 558.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 359.656000 570.836000 363.460000 558.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.360000 570.836000 372.040000 558.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 372.064000 570.836000 379.156000 558.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 379.168000 570.836000 386.320000 558.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 386.272000 570.836000 390.100000 558.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 391.072000 570.836000 394.876000 558.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 395.776000 570.836000 403.000000 558.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 402.976000 570.836000 407.416000 558.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 408.376000 570.836000 412.180000 558.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 413.080000 570.836000 420.760000 558.836000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 420.784000 570.836000 426.520000 558.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 426.484000 570.836000 430.312000 558.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 430.384000 570.836000 437.152000 558.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 437.080000 570.836000 444.232000 558.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 444.280000 570.836000 451.000000 558.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 450.976000 570.836000 457.744000 558.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 458.680000 570.836000 462.484000 558.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 463.384000 570.836000 468.196000 558.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 468.184000 570.836000 475.912000 558.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 475.984000 570.836000 483.136000 558.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 483.088000 570.836000 490.816000 558.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 490.792000 570.836000 498.052000 558.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 498.088000 570.836000 504.244000 558.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 570.836000 507.904000 558.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 556.936000 190.312000 544.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 556.936000 197.524000 544.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 197.896000 556.936000 201.700000 544.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 202.192000 556.936000 207.004000 544.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 206.992000 556.936000 214.720000 544.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 214.792000 556.936000 221.884000 544.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 222.196000 556.936000 226.000000 544.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 226.396000 556.936000 231.208000 544.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 231.292000 556.936000 237.028000 544.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 236.992000 556.936000 244.084000 544.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 244.096000 556.936000 251.188000 544.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 251.200000 556.936000 257.356000 544.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 257.704000 556.936000 261.508000 544.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.000000 556.936000 265.828000 544.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 265.804000 556.936000 269.632000 544.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 269.608000 556.936000 277.336000 544.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 277.312000 556.936000 281.140000 544.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 281.212000 556.936000 288.940000 544.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 288.916000 556.936000 296.596000 544.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 297.016000 556.936000 300.820000 544.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 301.216000 556.936000 306.028000 544.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 306.112000 556.936000 313.840000 544.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 313.816000 556.936000 320.908000 544.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 321.316000 556.936000 325.120000 544.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 325.516000 556.936000 331.672000 544.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 331.720000 556.936000 335.548000 544.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 335.524000 556.936000 343.204000 544.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 343.228000 556.936000 350.320000 544.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 350.332000 556.936000 356.488000 544.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 356.836000 556.936000 360.640000 544.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.036000 556.936000 368.260000 544.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 368.332000 556.936000 372.772000 544.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 373.132000 556.936000 376.936000 544.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.332000 556.936000 382.144000 544.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 382.228000 556.936000 389.956000 544.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 389.932000 556.936000 397.024000 544.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 397.432000 556.936000 401.236000 544.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 401.632000 556.936000 409.312000 544.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 409.336000 556.936000 415.072000 544.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 415.036000 556.936000 422.260000 544.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 422.236000 556.936000 429.916000 544.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 429.940000 556.936000 437.032000 544.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 437.044000 556.936000 442.780000 544.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 442.840000 556.936000 447.652000 544.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 447.640000 556.936000 454.408000 544.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 452.836000 556.936000 456.640000 544.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.036000 556.936000 460.840000 544.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 461.236000 556.936000 469.900000 544.936000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 469.936000 556.936000 481.312000 544.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 481.240000 556.936000 488.464000 544.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 488.536000 556.936000 496.264000 544.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 496.240000 556.936000 503.920000 544.936000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 556.936000 507.904000 544.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 543.036000 190.312000 531.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 543.036000 198.028000 531.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 198.100000 543.036000 205.192000 531.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 205.204000 543.036000 209.008000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 209.104000 543.036000 213.916000 531.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 214.000000 543.036000 219.736000 531.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 219.604000 543.036000 226.696000 531.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 226.708000 543.036000 233.800000 531.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 233.812000 543.036000 239.968000 531.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 240.112000 543.036000 243.916000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 244.012000 543.036000 247.840000 531.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 247.816000 543.036000 253.972000 531.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 254.020000 543.036000 257.824000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.920000 543.036000 265.072000 531.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 265.120000 543.036000 268.948000 531.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 268.924000 543.036000 275.080000 531.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 275.128000 543.036000 282.352000 531.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 282.424000 543.036000 286.228000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.324000 543.036000 293.476000 531.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 293.524000 543.036000 297.328000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 297.424000 543.036000 303.580000 531.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 303.520000 543.036000 314.896000 531.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 314.920000 543.036000 322.072000 531.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 322.024000 543.036000 325.852000 531.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 325.924000 543.036000 329.752000 531.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 329.920000 543.036000 333.724000 531.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.000000 543.036000 341.992000 531.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 342.004000 543.036000 348.160000 531.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 348.208000 543.036000 355.936000 531.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 355.912000 543.036000 359.716000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.812000 543.036000 367.492000 531.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 367.516000 543.036000 374.740000 531.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 374.812000 543.036000 382.540000 531.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 382.408000 543.036000 390.088000 531.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 390.112000 543.036000 393.916000 531.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 394.012000 543.036000 397.816000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.008000 543.036000 405.160000 531.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 405.112000 543.036000 412.840000 531.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 412.816000 543.036000 420.496000 531.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 420.520000 543.036000 424.324000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 424.420000 543.036000 431.644000 531.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 431.716000 543.036000 439.444000 531.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 439.420000 543.036000 446.512000 531.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 446.524000 543.036000 450.328000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 450.520000 543.036000 457.744000 531.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 457.720000 543.036000 462.160000 531.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 462.220000 543.036000 466.024000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 466.120000 543.036000 477.496000 531.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 477.520000 543.036000 484.288000 531.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 484.324000 543.036000 488.128000 531.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.320000 543.036000 492.760000 531.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 492.724000 543.036000 499.876000 531.036000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 543.036000 504.044000 531.036000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 529.136000 192.268000 517.136000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 192.304000 529.136000 199.528000 517.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 199.504000 529.136000 205.240000 517.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 205.204000 529.136000 209.032000 517.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 209.104000 529.136000 213.916000 517.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 213.904000 529.136000 220.996000 517.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 223.600000 529.136000 227.404000 517.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 230.104000 529.136000 237.784000 517.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 237.808000 529.136000 244.960000 517.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 244.912000 529.136000 251.068000 517.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 251.116000 529.136000 255.928000 517.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 255.916000 529.136000 259.744000 517.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 259.816000 529.136000 271.192000 517.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 271.120000 529.136000 278.212000 517.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 278.224000 529.136000 284.380000 517.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 287.020000 529.136000 290.824000 517.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 293.524000 529.136000 297.352000 517.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 297.328000 529.136000 303.484000 517.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 306.124000 529.136000 309.928000 517.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 312.628000 529.136000 322.888000 517.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 322.924000 529.136000 330.076000 517.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 330.028000 529.136000 334.840000 517.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 334.828000 529.136000 341.548000 517.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.632000 529.136000 349.360000 517.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 349.336000 529.136000 353.164000 517.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 353.140000 529.136000 360.868000 517.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 360.940000 529.136000 368.620000 517.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 371.236000 529.136000 375.040000 517.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 377.740000 529.136000 382.552000 517.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 382.540000 529.136000 390.268000 517.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 390.340000 529.136000 397.432000 517.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 399.940000 529.136000 403.744000 517.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 406.540000 529.136000 414.220000 517.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 414.136000 529.136000 419.872000 517.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 419.836000 529.136000 423.664000 517.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 423.736000 529.136000 431.416000 517.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 431.440000 529.136000 439.168000 517.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 439.144000 529.136000 443.956000 517.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 443.944000 529.136000 447.772000 517.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 447.748000 529.136000 454.516000 517.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 454.648000 529.136000 458.692000 517.136000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 458.752000 529.136000 465.472000 517.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 465.352000 529.136000 472.576000 517.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 472.648000 529.136000 476.476000 517.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 476.452000 529.136000 483.676000 517.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 483.748000 529.136000 489.484000 517.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 489.448000 529.136000 496.540000 517.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 496.552000 529.136000 504.232000 517.136000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 529.136000 508.004000 517.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 515.236000 193.180000 503.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 193.204000 515.236000 200.428000 503.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 200.404000 515.236000 204.232000 503.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 204.208000 515.236000 211.888000 503.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 211.912000 515.236000 219.904000 503.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 219.916000 515.236000 226.072000 503.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 226.120000 515.236000 233.848000 503.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 234.124000 515.236000 237.928000 503.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 238.324000 515.236000 245.476000 503.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 245.524000 515.236000 253.252000 503.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 253.228000 515.236000 260.908000 503.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 261.328000 515.236000 265.132000 503.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 265.528000 515.236000 272.680000 503.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 273.028000 515.236000 276.832000 503.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.228000 515.236000 281.668000 503.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 281.632000 515.236000 288.724000 503.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 288.736000 515.236000 298.996000 503.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 299.440000 515.236000 303.244000 503.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 303.640000 515.236000 309.796000 503.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 309.844000 515.236000 321.220000 503.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 321.148000 515.236000 328.300000 503.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 328.348000 515.236000 332.176000 503.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.152000 515.236000 335.980000 503.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 336.748000 515.236000 340.552000 503.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 340.600000 515.236000 345.412000 503.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 345.400000 515.236000 351.136000 503.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 351.196000 515.236000 358.288000 503.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 358.300000 515.236000 365.392000 503.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.404000 515.236000 369.844000 503.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 369.808000 515.236000 375.544000 503.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 375.508000 515.236000 382.732000 503.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 382.804000 515.236000 390.484000 503.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 390.400000 515.236000 396.556000 503.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 396.604000 515.236000 400.408000 503.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.708000 515.236000 404.512000 503.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.908000 515.236000 414.520000 503.236000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 414.604000 515.236000 418.432000 503.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 418.408000 515.236000 424.144000 503.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 424.204000 515.236000 431.296000 503.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 431.200000 515.236000 437.920000 503.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 438.004000 515.236000 442.816000 503.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 442.804000 515.236000 446.632000 503.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 446.704000 515.236000 453.472000 503.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 453.808000 515.236000 457.612000 503.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 458.008000 515.236000 461.836000 503.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 461.812000 515.236000 469.540000 503.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 469.912000 515.236000 473.716000 503.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.112000 515.236000 478.552000 503.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 478.516000 515.236000 484.252000 503.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 484.312000 515.236000 491.536000 503.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 491.512000 515.236000 499.240000 503.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 499.216000 515.236000 504.028000 503.236000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 515.236000 507.904000 503.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 501.336000 192.724000 489.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 192.700000 501.336000 197.140000 489.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 197.500000 501.336000 201.304000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 201.700000 501.336000 206.512000 489.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 206.500000 501.336000 214.228000 489.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 214.300000 501.336000 221.392000 489.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 221.704000 501.336000 225.508000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 226.204000 501.336000 230.008000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 230.500000 501.336000 235.312000 489.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 235.300000 501.336000 242.392000 489.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 242.404000 501.336000 248.140000 489.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 248.200000 501.336000 253.936000 489.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 253.900000 501.336000 261.052000 489.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 261.100000 501.336000 267.820000 489.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 267.796000 501.336000 274.888000 489.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 275.200000 501.336000 279.004000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.400000 501.336000 283.228000 489.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 283.204000 501.336000 289.360000 489.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 289.708000 501.336000 293.512000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 294.004000 501.336000 298.816000 489.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 298.804000 501.336000 306.532000 489.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 306.604000 501.336000 313.696000 489.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 314.008000 501.336000 317.812000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.208000 501.336000 322.036000 489.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 322.012000 501.336000 329.164000 489.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 329.212000 501.336000 339.472000 489.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 339.508000 501.336000 347.236000 489.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 347.512000 501.336000 351.316000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.712000 501.336000 361.972000 489.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 362.008000 501.336000 369.736000 489.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 369.712000 501.336000 376.804000 489.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 376.816000 501.336000 382.552000 489.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 382.516000 501.336000 389.608000 489.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 390.112000 501.336000 393.916000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 394.312000 501.336000 399.052000 489.336000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 399.316000 501.336000 403.120000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 403.516000 501.336000 409.672000 489.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 409.720000 501.336000 416.812000 489.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 416.824000 501.336000 421.636000 489.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 422.020000 501.336000 425.824000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.220000 501.336000 433.444000 489.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 433.516000 501.336000 441.244000 489.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 441.220000 501.336000 446.032000 489.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 446.320000 501.336000 450.124000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 450.520000 501.336000 455.332000 489.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 455.416000 501.336000 463.144000 489.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 463.120000 501.336000 470.212000 489.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.620000 501.336000 474.424000 489.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.820000 501.336000 478.648000 489.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 478.624000 501.336000 485.776000 489.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 485.824000 501.336000 496.084000 489.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 496.120000 501.336000 503.848000 489.336000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 501.336000 507.904000 489.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 487.436000 189.940000 475.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 189.904000 487.436000 197.632000 475.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 197.704000 487.436000 203.440000 475.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 203.404000 487.436000 211.132000 475.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 211.108000 487.436000 214.936000 475.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 215.008000 487.436000 219.820000 475.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 219.808000 487.436000 227.536000 475.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 227.512000 487.436000 233.248000 475.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 233.308000 487.436000 240.400000 475.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 240.904000 487.436000 244.708000 475.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 245.308000 487.436000 249.136000 475.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 249.112000 487.436000 256.840000 475.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 257.416000 487.436000 261.220000 475.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 261.916000 487.436000 266.728000 475.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 266.716000 487.436000 274.444000 475.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 274.516000 487.436000 281.608000 475.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 282.016000 487.436000 285.820000 475.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.420000 487.436000 292.576000 475.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 292.624000 487.436000 300.352000 475.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 300.328000 487.436000 311.704000 475.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 311.728000 487.436000 323.104000 475.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 323.032000 487.436000 330.124000 475.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 330.136000 487.436000 335.872000 475.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 335.932000 487.436000 340.744000 475.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 340.732000 487.436000 344.560000 475.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 344.536000 487.436000 355.912000 475.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 355.936000 487.436000 363.028000 475.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 363.040000 487.436000 366.844000 475.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.540000 487.436000 371.344000 475.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 371.944000 487.436000 376.684000 475.436000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 377.140000 487.436000 380.944000 475.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 381.544000 487.436000 388.696000 475.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 388.744000 487.436000 392.572000 475.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 392.548000 487.436000 398.704000 475.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 398.752000 487.436000 405.976000 475.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 406.552000 487.436000 410.356000 475.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 410.956000 487.436000 418.684000 475.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 418.660000 487.436000 425.812000 475.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 425.860000 487.436000 432.628000 475.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 432.664000 487.436000 439.756000 475.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 440.260000 487.436000 444.064000 475.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 444.664000 487.436000 451.816000 475.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 452.464000 487.436000 456.268000 475.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.868000 487.436000 464.548000 475.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 464.464000 487.436000 470.200000 475.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 470.164000 487.436000 473.992000 475.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 474.064000 487.436000 477.892000 475.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 477.964000 487.436000 481.792000 475.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 482.260000 487.436000 486.064000 475.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 486.664000 487.436000 491.104000 475.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 491.068000 487.436000 498.292000 475.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 498.364000 487.436000 504.100000 475.436000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 487.436000 507.904000 475.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 473.536000 193.180000 461.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 193.204000 473.536000 200.356000 461.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 200.308000 473.536000 206.044000 461.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 206.104000 473.536000 213.784000 461.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 213.808000 473.536000 220.900000 461.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 220.912000 473.536000 227.632000 461.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 227.608000 473.536000 235.336000 461.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 235.312000 473.536000 242.404000 461.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 244.312000 473.536000 248.116000 461.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 250.108000 473.536000 257.788000 461.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 257.812000 473.536000 264.964000 461.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 264.916000 473.536000 270.652000 461.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 270.712000 473.536000 275.524000 461.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 275.512000 473.536000 279.340000 461.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 279.316000 473.536000 286.408000 461.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 286.420000 473.536000 292.576000 461.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 294.616000 473.536000 298.420000 461.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 300.412000 473.536000 307.564000 461.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 307.612000 473.536000 315.340000 461.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 315.316000 473.536000 322.996000 461.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 324.916000 473.536000 328.720000 461.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 330.712000 473.536000 337.864000 461.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 339.916000 473.536000 343.720000 461.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 345.712000 473.536000 352.432000 461.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 352.408000 473.536000 360.136000 461.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 360.112000 473.536000 366.268000 461.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 366.316000 473.536000 371.128000 461.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 371.116000 473.536000 378.340000 461.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 378.412000 473.536000 389.788000 461.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 389.716000 473.536000 393.760000 461.536000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 393.820000 473.536000 401.500000 461.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 401.524000 473.536000 408.616000 461.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 408.628000 473.536000 414.784000 461.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 414.724000 473.536000 418.552000 461.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 418.624000 473.536000 426.304000 461.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 426.220000 473.536000 433.948000 461.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 434.020000 473.536000 441.112000 461.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 441.124000 473.536000 448.804000 461.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 450.628000 473.536000 454.432000 461.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.532000 473.536000 463.756000 461.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 463.732000 473.536000 471.460000 461.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 471.532000 473.536000 476.344000 461.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 476.236000 473.536000 483.916000 461.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 483.940000 473.536000 491.164000 461.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 491.140000 473.536000 498.364000 461.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 498.340000 473.536000 504.076000 461.536000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 473.536000 508.004000 461.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 459.636000 193.492000 447.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 193.504000 459.636000 199.240000 447.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 199.204000 459.636000 206.296000 447.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 206.308000 459.636000 213.988000 447.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 214.012000 459.636000 217.840000 447.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 217.816000 459.636000 224.968000 447.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 225.016000 459.636000 231.736000 447.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 231.712000 459.636000 238.804000 447.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 238.816000 459.636000 242.620000 447.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 455.600000 86.136000 463.664000 74.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 463.100000 86.136000 470.252000 74.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 470.300000 86.136000 477.980000 74.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 478.004000 86.136000 485.096000 74.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 485.108000 86.136000 488.912000 74.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 488.900000 86.136000 496.532000 74.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 496.496000 86.136000 504.128000 74.136000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 12389.800000 0 477.900000 12389.800000 0 477.900000 12699.600000 0 134.300000 12699.600000 0 134.300000 12389.800000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -1159790.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 9400.800000 0 168.100000 9400.800000 0 168.100000 9405.800000 0 76.900000 9405.800000 0 76.900000 9400.800000 0
+eoFillPath subpath 1 163.100000 9405.700000 0 168.100000 9405.700000 0 168.100000 9536.300000 0 163.100000 9536.300000 0 163.100000 9405.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 9405.800000 0 163.100000 9405.800000 0 163.100000 9541.200000 0 72.000000 9541.200000 0 72.000000 9405.800000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 9536.880000 87.320000 9526.880000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 9536.880000 93.420000 9526.880000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 9536.880000 97.510000 9526.880000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 9536.880000 101.420000 9526.880000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 9536.880000 104.170000 9526.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 9536.880000 110.530000 9526.880000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 9536.880000 113.270000 9526.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 9536.880000 116.470000 9526.880000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 9536.880000 123.480000 9526.880000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 9536.880000 129.610000 9526.880000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 9536.880000 135.090000 9526.880000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 9536.880000 140.890000 9526.880000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 9536.880000 144.820000 9526.880000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 9536.880000 150.920000 9526.880000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 9536.880000 153.670000 9526.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 9536.880000 156.470000 9526.880000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 9410.000000 0 168.200000 9410.000000 0 168.200000 9525.200000 0 72.000000 9525.200000 0 72.000000 9410.000000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9478.152000 79.253000 9469.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 9478.152000 86.669000 9469.152000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 9478.152000 90.215000 9469.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 9478.152000 93.077000 9469.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 9478.152000 97.406000 9469.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 9478.152000 100.853000 9469.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 9478.152000 107.324000 9469.152000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 9478.152000 112.337000 9469.152000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 9478.152000 115.271000 9469.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 9478.152000 118.655000 9469.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 9478.152000 126.512000 9469.152000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 9478.152000 130.805000 9469.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 9478.152000 135.881000 9469.152000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 9478.152000 139.355000 9469.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 9478.152000 147.284000 9469.152000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 9478.152000 150.074000 9469.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 9478.152000 155.897000 9469.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 9478.152000 158.750000 9469.152000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 9478.152000 161.853000 9469.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9467.652000 82.124000 9458.652000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 9467.652000 87.137000 9458.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 9467.652000 90.071000 9458.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 9467.652000 93.356000 9458.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 9467.652000 100.403000 9458.652000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 9467.652000 104.921000 9458.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 9467.652000 109.205000 9458.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 9467.652000 117.737000 9458.652000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 9467.652000 123.119000 9458.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 9467.652000 128.996000 9458.652000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 9467.652000 132.605000 9458.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 9467.652000 138.392000 9458.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 9467.652000 141.749000 9458.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 9467.652000 149.507000 9458.652000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 9467.652000 153.800000 9458.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 9467.652000 158.876000 9458.652000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 9467.652000 161.853000 9458.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9457.152000 81.764000 9448.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 9457.152000 87.596000 9448.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 9457.152000 93.356000 9448.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 9457.152000 102.050000 9448.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 9457.152000 113.822000 9448.152000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 9457.152000 122.651000 9448.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 9457.152000 134.117000 9448.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 9457.152000 138.401000 9448.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 9457.152000 147.149000 9448.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 9457.152000 158.921000 9448.152000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 9457.152000 161.853000 9448.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9446.652000 79.271000 9437.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 9446.652000 84.338000 9437.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 9446.652000 89.621000 9437.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 9446.652000 94.643000 9437.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 9446.652000 100.502000 9437.652000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 9446.652000 106.262000 9437.652000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 9446.652000 111.518000 9437.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 9446.652000 116.216000 9437.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 9446.652000 119.249000 9437.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 9446.652000 122.363000 9437.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 9446.652000 128.186000 9437.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 9446.652000 131.345000 9437.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 9446.652000 137.060000 9437.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 9446.652000 140.147000 9437.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 9446.652000 145.007000 9437.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 9446.652000 148.598000 9437.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 9446.652000 151.460000 9437.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 9446.652000 155.789000 9437.652000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 9446.652000 158.933000 9437.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9436.152000 80.702000 9427.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 9436.152000 83.573000 9427.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 9436.152000 89.396000 9427.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 9436.152000 95.156000 9427.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 9436.152000 100.547000 9427.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 9436.152000 109.052000 9427.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 9436.152000 111.959000 9427.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 9436.152000 117.251000 9427.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 9436.152000 121.904000 9427.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 9436.152000 126.503000 9427.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 9436.152000 129.338000 9427.152000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 9436.152000 134.936000 9427.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 9436.152000 143.441000 9427.152000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 9436.152000 148.796000 9427.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 9436.152000 154.574000 9427.152000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 9436.152000 158.876000 9427.152000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 9436.152000 161.853000 9427.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9425.652000 79.271000 9416.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 9425.652000 85.094000 9416.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 9425.652000 88.703000 9416.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 9425.652000 94.112000 9416.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 9425.652000 97.244000 9416.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 9425.652000 103.058000 9416.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 9425.652000 108.890000 9416.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 9425.652000 111.950000 9416.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 9425.652000 115.271000 9416.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 9425.652000 120.338000 9416.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 9425.652000 125.621000 9416.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 9425.652000 131.363000 9416.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 9425.652000 134.558000 9416.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 9425.652000 140.048000 9416.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 9425.652000 145.430000 9416.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 9425.652000 150.551000 9416.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 9425.652000 155.960000 9416.652000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 9425.652000 158.933000 9416.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9415.152000 80.009000 9406.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 9415.152000 85.364000 9406.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 9415.152000 88.271000 9406.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 9415.152000 91.169000 9406.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 9415.152000 97.955000 9406.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 9415.152000 107.765000 9406.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 9415.152000 110.672000 9406.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 9415.152000 115.964000 9406.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 9415.152000 120.617000 9406.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 9415.152000 125.216000 9406.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 9415.152000 128.051000 9406.152000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 9415.152000 134.954000 9406.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 9415.152000 146.285000 9406.152000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 9415.152000 151.667000 9406.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 9415.152000 155.906000 9406.152000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 9415.152000 159.033000 9406.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 9405.700000 0 72.100000 9405.700000 0 72.100000 9541.200000 0 72.000000 9541.200000 0 72.000000 9405.700000 0
+eoFillPath subpath 1 163.100000 9405.700000 0 163.200000 9405.700000 0 163.200000 9541.200000 0 163.100000 9541.200000 0 163.100000 9405.700000 0
+eoFillPath subpath 1 72.000000 9541.100000 0 163.200000 9541.100000 0 163.200000 9541.200000 0 72.000000 9541.200000 0 72.000000 9541.100000 0
+eoFillPath subpath 1 72.000000 9405.700000 0 163.200000 9405.700000 0 163.200000 9405.800000 0 72.000000 9405.800000 0 72.000000 9405.700000 0
+saveState
+eoClipPath subpath 1 96.900000 9481.000000 0 138.300000 9481.000000 0 138.300000 9525.200000 0 96.900000 9525.200000 0 96.900000 9481.000000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -868910.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 9126.200000 0 165.500000 9126.200000 0 165.500000 9131.200000 0 76.900000 9131.200000 0 76.900000 9126.200000 0
+eoFillPath subpath 1 160.500000 9131.100000 0 165.500000 9131.100000 0 165.500000 9287.400000 0 160.500000 9287.400000 0 160.500000 9131.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 9131.200000 0 121.400000 9131.200000 0 121.400000 9292.300000 0 72.000000 9292.300000 0 72.000000 9131.200000 0
+saveState
+eoClipPath subpath 1 72.000000 9131.100000 0 160.500000 9131.100000 0 160.500000 9292.200000 0 72.000000 9292.200000 0 72.000000 9131.100000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -832210.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 9287.980000 89.280000 9277.980000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 9287.980000 95.630000 9277.980000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 9287.980000 99.520000 9277.980000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 9287.980000 102.270000 9277.980000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 9287.980000 108.450000 9277.980000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 9287.980000 112.610000 9277.980000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 9287.980000 118.510000 9277.980000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 9287.980000 121.670000 9277.980000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 9287.980000 124.470000 9277.980000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 9287.980000 130.830000 9277.980000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 9287.980000 133.970000 9277.980000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 9287.980000 137.920000 9277.980000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 9287.980000 144.230000 9277.980000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 9287.980000 150.350000 9277.980000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 9287.980000 153.570000 9277.980000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 9276.280000 95.000000 9266.280000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 9276.280000 97.770000 9266.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 9276.280000 103.000000 9266.280000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 9276.280000 109.330000 9266.280000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 9276.280000 117.470000 9266.280000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 9276.280000 123.620000 9266.280000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 9276.280000 128.800000 9266.280000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 9276.280000 135.130000 9266.280000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 9276.280000 141.250000 9266.280000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 9276.280000 145.410000 9266.280000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9261.452000 82.961000 9252.452000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 9261.452000 87.614000 9252.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 9261.452000 93.356000 9252.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 9261.452000 98.612000 9252.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 9261.452000 103.733000 9252.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 9261.452000 106.568000 9252.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 9261.452000 111.959000 9252.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 9261.452000 114.866000 9252.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 9261.452000 117.665000 9252.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 9261.452000 122.768000 9252.452000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 9261.452000 125.747000 9252.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 9261.452000 131.651000 9252.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 9261.452000 136.907000 9252.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 9261.452000 142.307000 9252.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 9261.452000 148.049000 9252.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 9261.452000 150.956000 9252.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 9261.452000 156.302000 9252.452000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 9261.452000 159.253000 9252.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9250.952000 84.095000 9241.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 9250.952000 89.900000 9241.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 9250.952000 95.318000 9241.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 9250.952000 100.349000 9241.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 9250.952000 110.789000 9241.952000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 9250.952000 111.464000 9241.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 9250.952000 114.362000 9241.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 9250.952000 119.348000 9241.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 9250.952000 126.962000 9241.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 9250.952000 132.047000 9241.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 9250.952000 139.958000 9241.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 9250.952000 142.865000 9241.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 9250.952000 147.410000 9241.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 9250.952000 153.287000 9241.952000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 9250.952000 156.333000 9241.952000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9240.452000 84.095000 9231.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 9240.452000 89.468000 9231.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 9240.452000 94.121000 9231.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 9240.452000 99.899000 9231.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 9240.452000 105.218000 9231.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 9240.452000 109.502000 9231.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 9240.452000 115.649000 9231.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 9240.452000 122.327000 9231.452000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 9240.452000 127.718000 9231.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 9240.452000 132.002000 9231.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 9240.452000 138.149000 9231.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 9240.452000 145.205000 9231.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 9240.452000 150.992000 9231.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 9240.452000 156.311000 9231.452000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 9240.452000 159.253000 9231.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9229.952000 82.394000 9220.952000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 9229.952000 86.705000 9220.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 9229.952000 91.322000 9220.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 9229.952000 94.913000 9220.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 9229.952000 98.054000 9220.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 9229.952000 102.014000 9220.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 9229.952000 104.876000 9220.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 9229.952000 113.435000 9220.952000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 9229.952000 118.718000 9220.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 9229.952000 121.949000 9220.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 9229.952000 125.063000 9220.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 9229.952000 130.886000 9220.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 9229.952000 134.045000 9220.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 9229.952000 138.005000 9220.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 9229.952000 143.792000 9220.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 9229.952000 149.111000 9220.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 9229.952000 151.964000 9220.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 9229.952000 156.293000 9220.952000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 9229.952000 159.153000 9220.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9219.452000 79.271000 9210.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 9219.452000 82.169000 9210.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 9219.452000 85.526000 9210.452000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 9219.452000 90.818000 9210.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 9219.452000 94.454000 9210.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 9219.452000 99.008000 9210.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 9219.452000 104.318000 9210.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 9219.452000 110.096000 9210.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 9219.452000 115.856000 9210.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 9219.452000 119.546000 9210.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 9219.452000 124.001000 9210.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 9219.452000 129.509000 9210.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 9219.452000 133.145000 9210.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 9219.452000 139.751000 9210.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 9219.452000 145.205000 9210.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 9219.452000 148.841000 9210.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 9219.452000 152.657000 9210.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 9219.452000 156.293000 9210.452000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 9219.452000 159.253000 9210.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9208.952000 84.095000 9199.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 9208.952000 88.406000 9199.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 9208.952000 93.824000 9199.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 9208.952000 99.602000 9199.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 9208.952000 105.362000 9199.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 9208.952000 108.422000 9199.952000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 9208.952000 116.747000 9199.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 9208.952000 129.275000 9199.952000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 9208.952000 135.089000 9199.952000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 9208.952000 138.698000 9199.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 9208.952000 141.560000 9199.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 9208.952000 146.906000 9199.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 9208.952000 151.190000 9199.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 9208.952000 156.266000 9199.952000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 9208.952000 159.253000 9199.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9198.452000 82.196000 9189.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 9198.452000 87.560000 9189.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 9198.452000 92.213000 9189.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 9198.452000 96.551000 9189.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 9198.452000 101.708000 9189.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 9198.452000 107.216000 9189.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 9198.452000 111.653000 9189.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 9198.452000 118.961000 9189.452000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 9198.452000 124.316000 9189.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 9198.452000 128.654000 9189.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 9198.452000 133.172000 9189.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 9198.452000 138.995000 9189.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 9198.452000 143.612000 9189.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 9198.452000 148.913000 9189.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 9198.452000 153.197000 9189.452000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 9198.452000 156.333000 9189.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9187.952000 80.009000 9178.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 9187.952000 85.319000 9178.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 9187.952000 91.061000 9178.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 9187.952000 100.052000 9178.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 9187.952000 113.993000 9178.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 9187.952000 116.873000 9178.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 9187.952000 120.410000 9178.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 9187.952000 126.296000 9178.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 9187.952000 135.350000 9178.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 9187.952000 145.106000 9178.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 9187.952000 150.893000 9178.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 9187.952000 156.212000 9178.952000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 9187.952000 159.253000 9178.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9177.452000 82.196000 9168.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 9177.452000 87.560000 9168.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 9177.452000 93.392000 9168.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 9177.452000 99.152000 9168.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 9177.452000 101.960000 9168.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 9177.452000 107.306000 9168.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 9177.452000 111.905000 9168.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 9177.452000 115.640000 9168.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 9177.452000 122.444000 9168.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 9177.452000 127.898000 9168.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 9177.452000 135.575000 9168.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 9177.452000 141.380000 9168.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 9177.452000 145.241000 9168.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 9177.452000 150.803000 9168.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 9177.452000 156.302000 9168.452000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 9177.452000 159.253000 9168.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9166.952000 80.009000 9157.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 9166.952000 85.796000 9157.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 9166.952000 91.115000 9157.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 9166.952000 95.399000 9157.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 9166.952000 100.718000 9157.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 9166.952000 107.054000 9157.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 9166.952000 118.097000 9157.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 9166.952000 123.524000 9157.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 9166.952000 129.401000 9157.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 9166.952000 131.768000 9157.952000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 9166.952000 135.413000 9157.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 9166.952000 141.659000 9157.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 9166.952000 150.965000 9157.952000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 9166.952000 156.320000 9157.952000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 9166.952000 159.253000 9157.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9156.452000 81.017000 9147.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 9156.452000 84.608000 9147.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 9156.452000 89.963000 9147.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 9156.452000 92.870000 9147.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 9156.452000 98.693000 9147.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 9156.452000 103.310000 9147.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 9156.452000 107.243000 9147.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 9156.452000 116.081000 9147.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 9156.452000 121.886000 9147.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 9156.452000 127.205000 9147.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 9156.452000 132.983000 9147.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 9156.452000 136.943000 9147.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 9156.452000 143.846000 9147.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 9156.452000 148.184000 9147.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 9156.452000 153.260000 9147.452000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 9156.452000 156.433000 9147.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9145.952000 79.271000 9136.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 9145.952000 85.094000 9136.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 9145.952000 90.854000 9136.952000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 9145.952000 93.653000 9136.952000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 9131.100000 0 72.100000 9131.100000 0 72.100000 9292.300000 0 72.000000 9292.300000 0 72.000000 9131.100000 0
+eoFillPath subpath 1 160.500000 9131.100000 0 160.600000 9131.100000 0 160.600000 9292.300000 0 160.500000 9292.300000 0 160.500000 9131.100000 0
+eoFillPath subpath 1 72.000000 9292.200000 0 160.600000 9292.200000 0 160.600000 9292.300000 0 72.000000 9292.300000 0 72.000000 9292.200000 0
+eoFillPath subpath 1 72.000000 9131.100000 0 160.600000 9131.100000 0 160.600000 9131.200000 0 72.000000 9131.200000 0 72.000000 9131.100000 0
+saveState
+eoClipPath subpath 1 108.000000 8643.700000 0 178.900000 8643.700000 0 178.900000 8700.400000 0 108.000000 8700.400000 0 108.000000 8643.700000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -785180.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 4585.400000 0 165.500000 4585.400000 0 165.500000 4590.400000 0 76.900000 4590.400000 0 76.900000 4585.400000 0
+eoFillPath subpath 1 160.500000 4590.300000 0 165.500000 4590.300000 0 165.500000 4699.100000 0 160.500000 4699.100000 0 160.500000 4590.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 4590.400000 0 160.500000 4590.400000 0 160.500000 4704.000000 0 72.000000 4704.000000 0 72.000000 4590.400000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4699.652000 83.771000 4690.652000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 4699.652000 89.594000 4690.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 4699.652000 92.465000 4690.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 4699.652000 97.568000 4690.652000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 4699.652000 100.943000 4690.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 4699.652000 106.955000 4690.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 4699.652000 110.447000 4690.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 4699.652000 114.425000 4690.652000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 4699.652000 119.717000 4690.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 4699.652000 127.493000 4690.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 4699.652000 130.949000 4690.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 4699.652000 136.574000 4690.652000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 4699.652000 141.920000 4690.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 4699.652000 147.365000 4690.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 4699.652000 151.703000 4690.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 4699.652000 156.320000 4690.652000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 4699.652000 159.153000 4690.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4689.152000 81.764000 4680.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 4689.152000 85.130000 4680.152000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 4689.152000 88.712000 4680.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 4689.152000 94.022000 4680.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 4689.152000 98.306000 4680.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 4689.152000 102.455000 4680.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 4689.152000 106.676000 4680.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 4689.152000 110.312000 4680.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 4689.152000 114.920000 4680.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 4689.152000 119.060000 4680.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 4689.152000 125.450000 4680.152000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 4689.152000 130.832000 4680.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 4689.152000 139.445000 4680.152000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 4689.152000 145.169000 4680.152000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 4689.152000 148.076000 4680.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 4689.152000 153.323000 4680.152000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 4689.152000 156.433000 4680.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4678.652000 80.009000 4669.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 4678.652000 82.871000 4669.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 4678.652000 88.316000 4669.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 4678.652000 94.094000 4669.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 4678.652000 96.947000 4669.652000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 4678.652000 104.948000 4669.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 4678.652000 113.705000 4669.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 4678.652000 119.492000 4669.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 4678.652000 124.811000 4669.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 4678.652000 132.848000 4669.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 4678.652000 141.605000 4669.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 4678.652000 144.467000 4669.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 4678.652000 148.103000 4669.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 4678.652000 150.965000 4669.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 4678.652000 156.311000 4669.652000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4678.652000 159.253000 4669.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4668.152000 80.999000 4659.152000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 4668.152000 90.539000 4659.152000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 4668.152000 95.318000 4659.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 4668.152000 99.602000 4659.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 4668.152000 102.473000 4659.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 4668.152000 108.260000 4659.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 4668.152000 110.762000 4659.152000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 4668.152000 115.316000 4659.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 4668.152000 122.156000 4659.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 4668.152000 132.299000 4659.152000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 4668.152000 136.970000 4659.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 4668.152000 139.877000 4659.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 4668.152000 142.775000 4659.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 4668.152000 148.022000 4659.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 4668.152000 152.720000 4659.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 4668.152000 156.311000 4659.152000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4668.152000 159.253000 4659.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4657.652000 83.006000 4648.652000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 4657.652000 88.793000 4648.652000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 4657.652000 91.664000 4648.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 4657.652000 94.562000 4648.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 4657.652000 100.349000 4648.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 4657.652000 103.157000 4648.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 4657.652000 108.980000 4648.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 4657.652000 114.740000 4648.652000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 4657.652000 119.375000 4648.652000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 4657.652000 128.033000 4648.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 4657.652000 141.479000 4648.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 4657.652000 146.807000 4648.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 4657.652000 152.684000 4648.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 4657.652000 156.293000 4648.652000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4657.652000 159.253000 4648.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4647.152000 79.730000 4638.152000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 4647.152000 84.005000 4638.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 4647.152000 89.423000 4638.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 4647.152000 98.036000 4638.152000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 4647.152000 121.157000 4638.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 4647.152000 145.115000 4638.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 4647.152000 151.001000 4638.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 4647.152000 156.320000 4638.152000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 4647.152000 159.253000 4638.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4636.652000 83.285000 4627.652000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 4636.652000 89.099000 4627.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 4636.652000 93.401000 4627.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 4636.652000 98.477000 4627.652000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 4636.652000 103.121000 4627.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 4636.652000 105.974000 4627.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 4636.652000 111.320000 4627.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 4636.652000 115.604000 4627.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 4636.652000 123.857000 4627.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 4636.652000 136.007000 4627.652000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 4636.652000 141.794000 4627.652000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 4636.652000 144.665000 4627.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 4636.652000 147.464000 4627.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 4636.652000 153.251000 4627.652000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 4636.652000 156.433000 4627.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4626.152000 79.271000 4617.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 4626.152000 85.094000 4617.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 4626.152000 90.854000 4617.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 4626.152000 96.146000 4617.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 4626.152000 102.302000 4617.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 4626.152000 107.711000 4617.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 4626.152000 113.048000 4617.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 4626.152000 119.204000 4617.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 4626.152000 124.991000 4617.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 4626.152000 130.310000 4617.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 4626.152000 135.647000 4617.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 4626.152000 144.755000 4617.152000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 4626.152000 153.323000 4617.152000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 4626.152000 156.333000 4617.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4615.652000 82.160000 4606.652000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 4615.652000 85.067000 4606.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 4615.652000 89.297000 4606.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 4615.652000 94.616000 4606.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 4615.652000 98.747000 4606.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 4615.652000 106.055000 4606.652000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 4615.652000 109.700000 4606.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 4615.652000 115.055000 4606.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 4615.652000 118.601000 4606.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 4615.652000 124.010000 4606.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 4615.652000 128.042000 4606.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 4615.652000 135.998000 4606.652000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 4615.652000 141.785000 4606.652000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 4615.652000 144.656000 4606.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 4615.652000 147.554000 4606.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 4615.652000 153.341000 4606.652000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 4615.652000 156.433000 4606.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 4605.152000 79.271000 4596.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 4605.152000 85.094000 4596.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 4605.152000 90.854000 4596.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 4605.152000 93.743000 4596.152000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 4590.300000 0 72.100000 4590.300000 0 72.100000 4704.000000 0 72.000000 4704.000000 0 72.000000 4590.300000 0
+eoFillPath subpath 1 160.500000 4590.300000 0 160.600000 4590.300000 0 160.600000 4704.000000 0 160.500000 4704.000000 0 160.500000 4590.300000 0
+eoFillPath subpath 1 72.000000 4703.900000 0 160.600000 4703.900000 0 160.600000 4704.000000 0 72.000000 4704.000000 0 72.000000 4703.900000 0
+eoFillPath subpath 1 72.000000 4590.300000 0 160.600000 4590.300000 0 160.600000 4590.400000 0 72.000000 4590.400000 0 72.000000 4590.300000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 10779.800000 0 169.600000 10779.800000 0 169.600000 10784.800000 0 76.900000 10784.800000 0 76.900000 10779.800000 0
+eoFillPath subpath 1 164.600000 10784.700000 0 169.600000 10784.700000 0 169.600000 10900.300000 0 164.600000 10900.300000 0 164.600000 10784.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 10784.800000 0 121.400000 10784.800000 0 121.400000 10905.200000 0 72.000000 10905.200000 0 72.000000 10784.800000 0
+saveState
+eoClipPath subpath 1 72.000000 10784.700000 0 164.600000 10784.700000 0 164.600000 10905.100000 0 72.000000 10905.100000 0 72.000000 10784.700000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -993450.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 10854.700000 0 93.700000 10854.700000 0 93.700000 10873.900000 0 72.000000 10873.900000 0 72.000000 10854.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 10854.700000 0 169.600000 10854.700000 0 169.600000 10873.900000 0 93.700000 10873.900000 0 93.700000 10854.700000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 10838.000000 0 93.700000 10838.000000 0 93.700000 10854.700000 0 72.000000 10854.700000 0 72.000000 10838.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 10838.000000 0 169.600000 10838.000000 0 169.600000 10854.700000 0 93.700000 10854.700000 0 93.700000 10838.000000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 10818.800000 0 93.700000 10818.800000 0 93.700000 10838.000000 0 72.000000 10838.000000 0 72.000000 10818.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 10818.800000 0 169.600000 10818.800000 0 169.600000 10838.000000 0 93.700000 10838.000000 0 93.700000 10818.800000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 10799.600000 0 93.700000 10799.600000 0 93.700000 10818.800000 0 72.000000 10818.800000 0 72.000000 10799.600000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 10799.600000 0 169.600000 10799.600000 0 169.600000 10818.800000 0 93.700000 10818.800000 0 93.700000 10799.600000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10900.852000 82.898000 10891.852000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 10900.852000 87.200000 10891.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 10900.852000 90.809000 10891.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 10900.852000 93.671000 10891.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 10900.852000 98.315000 10891.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 10900.852000 101.906000 10891.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 10900.852000 106.514000 10891.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 10900.852000 109.754000 10891.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 10900.852000 112.868000 10891.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 10900.852000 118.691000 10891.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 10900.852000 121.850000 10891.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 10900.852000 125.702000 10891.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 10900.852000 131.588000 10891.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 10900.852000 136.907000 10891.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 10900.852000 140.039000 10891.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 10900.852000 146.078000 10891.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 10900.852000 151.442000 10891.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 10900.852000 154.349000 10891.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 10900.852000 157.148000 10891.852000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 10900.852000 160.433000 10891.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10890.352000 84.095000 10881.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 10890.352000 89.468000 10881.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 10890.352000 94.580000 10881.352000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 10890.352000 97.631000 10881.352000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 10869.952000 104.443000 10860.952000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 10869.952000 109.060000 10860.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 10869.952000 113.398000 10860.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 10869.952000 119.194000 10860.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 10869.952000 124.612000 10860.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 10869.952000 127.465000 10860.952000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 10853.252000 101.176000 10844.252000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 10853.252000 104.074000 10844.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 10853.252000 109.420000 10844.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 10853.252000 114.442000 10844.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 10853.252000 120.202000 10844.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 10853.252000 123.811000 10844.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 10853.252000 129.121000 10844.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 10853.252000 134.899000 10844.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 10853.252000 139.516000 10844.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 10853.252000 143.107000 10844.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 10853.252000 148.417000 10844.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 10853.252000 151.270000 10844.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 10853.252000 157.093000 10844.252000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 10836.552000 103.048000 10827.552000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 10836.552000 108.421000 10827.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 10836.552000 113.443000 10827.552000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 10836.552000 118.852000 10827.552000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 10836.552000 124.702000 10827.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 10836.552000 130.021000 10827.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 10836.552000 135.079000 10827.552000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 10817.352000 104.407000 10808.352000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 10817.352000 109.816000 10808.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 10817.352000 115.594000 10808.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 10817.352000 121.354000 10808.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 10817.352000 125.692000 10808.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 10817.352000 128.563000 10808.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 10817.352000 133.954000 10808.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 10817.352000 139.786000 10808.352000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 10784.700000 0 72.100000 10784.700000 0 72.100000 10905.200000 0 72.000000 10905.200000 0 72.000000 10784.700000 0
+eoFillPath subpath 1 164.600000 10784.700000 0 164.700000 10784.700000 0 164.700000 10905.200000 0 164.600000 10905.200000 0 164.600000 10784.700000 0
+eoFillPath subpath 1 72.000000 10905.100000 0 164.700000 10905.100000 0 164.700000 10905.200000 0 72.000000 10905.200000 0 72.000000 10905.100000 0
+eoFillPath subpath 1 72.000000 10784.700000 0 164.700000 10784.700000 0 164.700000 10784.800000 0 72.000000 10784.800000 0 72.000000 10784.700000 0
+eoFillPath subpath 1 91.300000 10799.600000 0 93.700000 10799.600000 0 93.700000 10873.900000 0 91.300000 10873.900000 0 91.300000 10799.600000 0
+eoFillPath subpath 1 72.000000 10818.800000 0 169.600000 10818.800000 0 169.600000 10821.200000 0 72.000000 10821.200000 0 72.000000 10818.800000 0
+eoFillPath subpath 1 72.000000 10871.500000 0 169.600000 10871.500000 0 169.600000 10873.900000 0 72.000000 10873.900000 0 72.000000 10871.500000 0
+eoFillPath subpath 1 72.000000 10799.600000 0 169.600000 10799.600000 0 169.600000 10802.000000 0 72.000000 10802.000000 0 72.000000 10799.600000 0
+saveState
+eoClipPath subpath 1 108.000000 2933.600000 0 150.800000 2933.600000 0 150.800000 2977.900000 0 108.000000 2977.900000 0 108.000000 2933.600000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 -214170.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 2083.700000 0 499.600000 2083.700000 0 499.600000 2088.800000 0 186.800000 2088.800000 0 186.800000 2083.700000 0
+eoFillPath subpath 1 494.500000 2088.700000 0 499.600000 2088.700000 0 499.600000 2277.100000 0 494.500000 2277.100000 0 494.500000 2088.700000 0
+saveState
+eoClipPath subpath 1 181.800000 2088.700000 0 494.500000 2088.700000 0 494.500000 2282.000000 0 181.800000 2282.000000 0 181.800000 2088.700000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 2282.100000 0 494.500000 2282.100000 0 494.500000 2282.100000 0 181.700000 2282.100000 0
+eoFillPath subpath 1 181.700000 2282.100000 0 494.500000 2282.100000 0 494.500000 2281.300000 0 181.700000 2281.300000 0 181.700000 2282.100000 0
+eoFillPath subpath 1 181.700000 2281.300000 0 494.500000 2281.300000 0 494.500000 2280.600000 0 181.700000 2280.600000 0 181.700000 2281.300000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 2280.600000 0 494.500000 2280.600000 0 494.500000 2279.800000 0 181.700000 2279.800000 0 181.700000 2280.600000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 2279.800000 0 494.500000 2279.800000 0 494.500000 2279.000000 0 181.700000 2279.000000 0 181.700000 2279.800000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 2279.000000 0 494.500000 2279.000000 0 494.500000 2278.300000 0 181.700000 2278.300000 0 181.700000 2279.000000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 2278.300000 0 494.500000 2278.300000 0 494.500000 2277.500000 0 181.700000 2277.500000 0 181.700000 2278.300000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 2277.500000 0 494.500000 2277.500000 0 494.500000 2276.800000 0 181.700000 2276.800000 0 181.700000 2277.500000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 2276.800000 0 494.500000 2276.800000 0 494.500000 2276.000000 0 181.700000 2276.000000 0 181.700000 2276.800000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 2276.000000 0 494.500000 2276.000000 0 494.500000 2275.300000 0 181.700000 2275.300000 0 181.700000 2276.000000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 2275.300000 0 494.500000 2275.300000 0 494.500000 2274.500000 0 181.700000 2274.500000 0 181.700000 2275.300000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 2274.500000 0 494.500000 2274.500000 0 494.500000 2273.700000 0 181.700000 2273.700000 0 181.700000 2274.500000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 2273.700000 0 494.500000 2273.700000 0 494.500000 2273.000000 0 181.700000 2273.000000 0 181.700000 2273.700000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 2273.000000 0 494.500000 2273.000000 0 494.500000 2272.200000 0 181.700000 2272.200000 0 181.700000 2273.000000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 2272.200000 0 494.500000 2272.200000 0 494.500000 2271.500000 0 181.700000 2271.500000 0 181.700000 2272.200000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 2271.500000 0 494.500000 2271.500000 0 494.500000 2270.700000 0 181.700000 2270.700000 0 181.700000 2271.500000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 2270.700000 0 494.500000 2270.700000 0 494.500000 2269.900000 0 181.700000 2269.900000 0 181.700000 2270.700000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 2269.900000 0 494.500000 2269.900000 0 494.500000 2269.200000 0 181.700000 2269.200000 0 181.700000 2269.900000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 2269.200000 0 494.500000 2269.200000 0 494.500000 2268.400000 0 181.700000 2268.400000 0 181.700000 2269.200000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 2268.400000 0 494.500000 2268.400000 0 494.500000 2267.700000 0 181.700000 2267.700000 0 181.700000 2268.400000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 2267.700000 0 494.500000 2267.700000 0 494.500000 2266.900000 0 181.700000 2266.900000 0 181.700000 2267.700000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 2266.900000 0 494.500000 2266.900000 0 494.500000 2266.100000 0 181.700000 2266.100000 0 181.700000 2266.900000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 2266.100000 0 494.500000 2266.100000 0 494.500000 2265.400000 0 181.700000 2265.400000 0 181.700000 2266.100000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 2265.400000 0 494.500000 2265.400000 0 494.500000 2264.600000 0 181.700000 2264.600000 0 181.700000 2265.400000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 2264.600000 0 494.500000 2264.600000 0 494.500000 2263.900000 0 181.700000 2263.900000 0 181.700000 2264.600000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 2263.900000 0 494.500000 2263.900000 0 494.500000 2263.100000 0 181.700000 2263.100000 0 181.700000 2263.900000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 2263.100000 0 494.500000 2263.100000 0 494.500000 2262.400000 0 181.700000 2262.400000 0 181.700000 2263.100000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 2262.400000 0 494.500000 2262.400000 0 494.500000 2261.600000 0 181.700000 2261.600000 0 181.700000 2262.400000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 2261.600000 0 494.500000 2261.600000 0 494.500000 2260.800000 0 181.700000 2260.800000 0 181.700000 2261.600000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 2260.800000 0 494.500000 2260.800000 0 494.500000 2260.100000 0 181.700000 2260.100000 0 181.700000 2260.800000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 2260.100000 0 494.500000 2260.100000 0 494.500000 2259.300000 0 181.700000 2259.300000 0 181.700000 2260.100000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 2259.300000 0 494.500000 2259.300000 0 494.500000 2258.600000 0 181.700000 2258.600000 0 181.700000 2259.300000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 2258.600000 0 494.500000 2258.600000 0 494.500000 2257.800000 0 181.700000 2257.800000 0 181.700000 2258.600000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 2257.800000 0 494.500000 2257.800000 0 494.500000 2257.000000 0 181.700000 2257.000000 0 181.700000 2257.800000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 2257.000000 0 494.500000 2257.000000 0 494.500000 2256.300000 0 181.700000 2256.300000 0 181.700000 2257.000000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 2256.300000 0 494.500000 2256.300000 0 494.500000 2255.500000 0 181.700000 2255.500000 0 181.700000 2256.300000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 2255.500000 0 494.500000 2255.500000 0 494.500000 2254.800000 0 181.700000 2254.800000 0 181.700000 2255.500000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 2254.800000 0 494.500000 2254.800000 0 494.500000 2254.000000 0 181.700000 2254.000000 0 181.700000 2254.800000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 2254.000000 0 494.500000 2254.000000 0 494.500000 2253.200000 0 181.700000 2253.200000 0 181.700000 2254.000000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 2253.200000 0 494.500000 2253.200000 0 494.500000 2252.500000 0 181.700000 2252.500000 0 181.700000 2253.200000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 2252.500000 0 494.500000 2252.500000 0 494.500000 2251.700000 0 181.700000 2251.700000 0 181.700000 2252.500000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 2251.700000 0 494.500000 2251.700000 0 494.500000 2251.000000 0 181.700000 2251.000000 0 181.700000 2251.700000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 2251.000000 0 494.500000 2251.000000 0 494.500000 2250.200000 0 181.700000 2250.200000 0 181.700000 2251.000000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 2250.200000 0 494.500000 2250.200000 0 494.500000 2249.500000 0 181.700000 2249.500000 0 181.700000 2250.200000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 2249.500000 0 494.500000 2249.500000 0 494.500000 2248.700000 0 181.700000 2248.700000 0 181.700000 2249.500000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 2248.700000 0 494.500000 2248.700000 0 494.500000 2247.900000 0 181.700000 2247.900000 0 181.700000 2248.700000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 2247.900000 0 494.500000 2247.900000 0 494.500000 2247.200000 0 181.700000 2247.200000 0 181.700000 2247.900000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 2247.200000 0 494.500000 2247.200000 0 494.500000 2246.400000 0 181.700000 2246.400000 0 181.700000 2247.200000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 2246.400000 0 494.500000 2246.400000 0 494.500000 2245.700000 0 181.700000 2245.700000 0 181.700000 2246.400000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 2245.700000 0 494.500000 2245.700000 0 494.500000 2244.900000 0 181.700000 2244.900000 0 181.700000 2245.700000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 2244.900000 0 494.500000 2244.900000 0 494.500000 2244.100000 0 181.700000 2244.100000 0 181.700000 2244.900000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 2244.100000 0 494.500000 2244.100000 0 494.500000 2243.400000 0 181.700000 2243.400000 0 181.700000 2244.100000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 2243.400000 0 494.500000 2243.400000 0 494.500000 2242.600000 0 181.700000 2242.600000 0 181.700000 2243.400000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 2242.600000 0 494.500000 2242.600000 0 494.500000 2241.900000 0 181.700000 2241.900000 0 181.700000 2242.600000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 2241.900000 0 494.500000 2241.900000 0 494.500000 2241.100000 0 181.700000 2241.100000 0 181.700000 2241.900000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 2241.100000 0 494.500000 2241.100000 0 494.500000 2240.300000 0 181.700000 2240.300000 0 181.700000 2241.100000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 2240.300000 0 494.500000 2240.300000 0 494.500000 2239.600000 0 181.700000 2239.600000 0 181.700000 2240.300000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 2239.600000 0 494.500000 2239.600000 0 494.500000 2238.800000 0 181.700000 2238.800000 0 181.700000 2239.600000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 2238.800000 0 494.500000 2238.800000 0 494.500000 2238.100000 0 181.700000 2238.100000 0 181.700000 2238.800000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 2238.100000 0 494.500000 2238.100000 0 494.500000 2237.300000 0 181.700000 2237.300000 0 181.700000 2238.100000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 2237.300000 0 494.500000 2237.300000 0 494.500000 2236.600000 0 181.700000 2236.600000 0 181.700000 2237.300000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 2236.600000 0 494.500000 2236.600000 0 494.500000 2235.800000 0 181.700000 2235.800000 0 181.700000 2236.600000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 2235.800000 0 494.500000 2235.800000 0 494.500000 2235.000000 0 181.700000 2235.000000 0 181.700000 2235.800000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 2235.000000 0 494.500000 2235.000000 0 494.500000 2234.300000 0 181.700000 2234.300000 0 181.700000 2235.000000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 2234.300000 0 494.500000 2234.300000 0 494.500000 2233.500000 0 181.700000 2233.500000 0 181.700000 2234.300000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 2233.500000 0 494.500000 2233.500000 0 494.500000 2232.800000 0 181.700000 2232.800000 0 181.700000 2233.500000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 2232.800000 0 494.500000 2232.800000 0 494.500000 2232.000000 0 181.700000 2232.000000 0 181.700000 2232.800000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 2232.000000 0 494.500000 2232.000000 0 494.500000 2231.200000 0 181.700000 2231.200000 0 181.700000 2232.000000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 2231.200000 0 494.500000 2231.200000 0 494.500000 2230.500000 0 181.700000 2230.500000 0 181.700000 2231.200000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 2230.500000 0 494.500000 2230.500000 0 494.500000 2229.700000 0 181.700000 2229.700000 0 181.700000 2230.500000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 2229.700000 0 494.500000 2229.700000 0 494.500000 2229.000000 0 181.700000 2229.000000 0 181.700000 2229.700000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 2229.000000 0 494.500000 2229.000000 0 494.500000 2228.200000 0 181.700000 2228.200000 0 181.700000 2229.000000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 2228.200000 0 494.500000 2228.200000 0 494.500000 2227.400000 0 181.700000 2227.400000 0 181.700000 2228.200000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 2227.400000 0 494.500000 2227.400000 0 494.500000 2226.700000 0 181.700000 2226.700000 0 181.700000 2227.400000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 2226.700000 0 494.500000 2226.700000 0 494.500000 2225.900000 0 181.700000 2225.900000 0 181.700000 2226.700000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 2225.900000 0 494.500000 2225.900000 0 494.500000 2225.200000 0 181.700000 2225.200000 0 181.700000 2225.900000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 2225.200000 0 494.500000 2225.200000 0 494.500000 2224.400000 0 181.700000 2224.400000 0 181.700000 2225.200000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 2224.400000 0 494.500000 2224.400000 0 494.500000 2223.700000 0 181.700000 2223.700000 0 181.700000 2224.400000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 2223.700000 0 494.500000 2223.700000 0 494.500000 2222.900000 0 181.700000 2222.900000 0 181.700000 2223.700000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 2222.900000 0 494.500000 2222.900000 0 494.500000 2222.100000 0 181.700000 2222.100000 0 181.700000 2222.900000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 2222.100000 0 494.500000 2222.100000 0 494.500000 2221.400000 0 181.700000 2221.400000 0 181.700000 2222.100000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 2221.400000 0 494.500000 2221.400000 0 494.500000 2220.600000 0 181.700000 2220.600000 0 181.700000 2221.400000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 2220.600000 0 494.500000 2220.600000 0 494.500000 2219.900000 0 181.700000 2219.900000 0 181.700000 2220.600000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 2219.900000 0 494.500000 2219.900000 0 494.500000 2219.100000 0 181.700000 2219.100000 0 181.700000 2219.900000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 2219.100000 0 494.500000 2219.100000 0 494.500000 2218.300000 0 181.700000 2218.300000 0 181.700000 2219.100000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 2218.300000 0 494.500000 2218.300000 0 494.500000 2217.600000 0 181.700000 2217.600000 0 181.700000 2218.300000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 2217.600000 0 494.500000 2217.600000 0 494.500000 2216.800000 0 181.700000 2216.800000 0 181.700000 2217.600000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 2216.800000 0 494.500000 2216.800000 0 494.500000 2216.100000 0 181.700000 2216.100000 0 181.700000 2216.800000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 2216.100000 0 494.500000 2216.100000 0 494.500000 2215.300000 0 181.700000 2215.300000 0 181.700000 2216.100000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 2215.300000 0 494.500000 2215.300000 0 494.500000 2214.500000 0 181.700000 2214.500000 0 181.700000 2215.300000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 2214.500000 0 494.500000 2214.500000 0 494.500000 2213.800000 0 181.700000 2213.800000 0 181.700000 2214.500000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 2213.800000 0 494.500000 2213.800000 0 494.500000 2213.000000 0 181.700000 2213.000000 0 181.700000 2213.800000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 2213.000000 0 494.500000 2213.000000 0 494.500000 2212.300000 0 181.700000 2212.300000 0 181.700000 2213.000000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 2212.300000 0 494.500000 2212.300000 0 494.500000 2211.500000 0 181.700000 2211.500000 0 181.700000 2212.300000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 2211.500000 0 494.500000 2211.500000 0 494.500000 2210.800000 0 181.700000 2210.800000 0 181.700000 2211.500000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 2210.800000 0 494.500000 2210.800000 0 494.500000 2210.000000 0 181.700000 2210.000000 0 181.700000 2210.800000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 2210.000000 0 494.500000 2210.000000 0 494.500000 2209.200000 0 181.700000 2209.200000 0 181.700000 2210.000000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 2209.200000 0 494.500000 2209.200000 0 494.500000 2208.500000 0 181.700000 2208.500000 0 181.700000 2209.200000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 2208.500000 0 494.500000 2208.500000 0 494.500000 2207.700000 0 181.700000 2207.700000 0 181.700000 2208.500000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 2207.700000 0 494.500000 2207.700000 0 494.500000 2207.000000 0 181.700000 2207.000000 0 181.700000 2207.700000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 2207.000000 0 494.500000 2207.000000 0 494.500000 2206.200000 0 181.700000 2206.200000 0 181.700000 2207.000000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 2206.200000 0 494.500000 2206.200000 0 494.500000 2205.400000 0 181.700000 2205.400000 0 181.700000 2206.200000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 2205.400000 0 494.500000 2205.400000 0 494.500000 2204.700000 0 181.700000 2204.700000 0 181.700000 2205.400000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 2204.700000 0 494.500000 2204.700000 0 494.500000 2203.900000 0 181.700000 2203.900000 0 181.700000 2204.700000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 2203.900000 0 494.500000 2203.900000 0 494.500000 2203.200000 0 181.700000 2203.200000 0 181.700000 2203.900000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 2203.200000 0 494.500000 2203.200000 0 494.500000 2202.400000 0 181.700000 2202.400000 0 181.700000 2203.200000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 2202.400000 0 494.500000 2202.400000 0 494.500000 2201.600000 0 181.700000 2201.600000 0 181.700000 2202.400000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 2201.600000 0 494.500000 2201.600000 0 494.500000 2200.900000 0 181.700000 2200.900000 0 181.700000 2201.600000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 2200.900000 0 494.500000 2200.900000 0 494.500000 2200.100000 0 181.700000 2200.100000 0 181.700000 2200.900000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 2200.100000 0 494.500000 2200.100000 0 494.500000 2199.400000 0 181.700000 2199.400000 0 181.700000 2200.100000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 2199.400000 0 494.500000 2199.400000 0 494.500000 2198.600000 0 181.700000 2198.600000 0 181.700000 2199.400000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 2198.600000 0 494.500000 2198.600000 0 494.500000 2197.900000 0 181.700000 2197.900000 0 181.700000 2198.600000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 2197.900000 0 494.500000 2197.900000 0 494.500000 2197.100000 0 181.700000 2197.100000 0 181.700000 2197.900000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 2197.100000 0 494.500000 2197.100000 0 494.500000 2196.300000 0 181.700000 2196.300000 0 181.700000 2197.100000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 2196.300000 0 494.500000 2196.300000 0 494.500000 2195.600000 0 181.700000 2195.600000 0 181.700000 2196.300000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 2195.600000 0 494.500000 2195.600000 0 494.500000 2194.800000 0 181.700000 2194.800000 0 181.700000 2195.600000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 2194.800000 0 494.500000 2194.800000 0 494.500000 2194.100000 0 181.700000 2194.100000 0 181.700000 2194.800000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 2194.100000 0 494.500000 2194.100000 0 494.500000 2193.300000 0 181.700000 2193.300000 0 181.700000 2194.100000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 2193.300000 0 494.500000 2193.300000 0 494.500000 2192.500000 0 181.700000 2192.500000 0 181.700000 2193.300000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 2192.500000 0 494.500000 2192.500000 0 494.500000 2191.800000 0 181.700000 2191.800000 0 181.700000 2192.500000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 2191.800000 0 494.500000 2191.800000 0 494.500000 2191.000000 0 181.700000 2191.000000 0 181.700000 2191.800000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 2191.000000 0 494.500000 2191.000000 0 494.500000 2190.300000 0 181.700000 2190.300000 0 181.700000 2191.000000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 2190.300000 0 494.500000 2190.300000 0 494.500000 2189.500000 0 181.700000 2189.500000 0 181.700000 2190.300000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 2189.500000 0 494.500000 2189.500000 0 494.500000 2188.700000 0 181.700000 2188.700000 0 181.700000 2189.500000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 2188.700000 0 494.500000 2188.700000 0 494.500000 2188.000000 0 181.700000 2188.000000 0 181.700000 2188.700000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 2188.000000 0 494.500000 2188.000000 0 494.500000 2187.200000 0 181.700000 2187.200000 0 181.700000 2188.000000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 2187.200000 0 494.500000 2187.200000 0 494.500000 2186.500000 0 181.700000 2186.500000 0 181.700000 2187.200000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 2186.500000 0 494.500000 2186.500000 0 494.500000 2185.700000 0 181.700000 2185.700000 0 181.700000 2186.500000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 2185.700000 0 494.500000 2185.700000 0 494.500000 2185.000000 0 181.700000 2185.000000 0 181.700000 2185.700000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 2185.000000 0 494.500000 2185.000000 0 494.500000 2184.200000 0 181.700000 2184.200000 0 181.700000 2185.000000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 2184.200000 0 494.500000 2184.200000 0 494.500000 2183.400000 0 181.700000 2183.400000 0 181.700000 2184.200000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 2183.400000 0 494.500000 2183.400000 0 494.500000 2182.700000 0 181.700000 2182.700000 0 181.700000 2183.400000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 2182.700000 0 494.500000 2182.700000 0 494.500000 2181.900000 0 181.700000 2181.900000 0 181.700000 2182.700000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 2181.900000 0 494.500000 2181.900000 0 494.500000 2181.200000 0 181.700000 2181.200000 0 181.700000 2181.900000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 2181.200000 0 494.500000 2181.200000 0 494.500000 2180.400000 0 181.700000 2180.400000 0 181.700000 2181.200000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 2180.400000 0 494.500000 2180.400000 0 494.500000 2179.600000 0 181.700000 2179.600000 0 181.700000 2180.400000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 2179.600000 0 494.500000 2179.600000 0 494.500000 2178.900000 0 181.700000 2178.900000 0 181.700000 2179.600000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 2178.900000 0 494.500000 2178.900000 0 494.500000 2178.100000 0 181.700000 2178.100000 0 181.700000 2178.900000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 2178.100000 0 494.500000 2178.100000 0 494.500000 2177.400000 0 181.700000 2177.400000 0 181.700000 2178.100000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 2177.400000 0 494.500000 2177.400000 0 494.500000 2176.600000 0 181.700000 2176.600000 0 181.700000 2177.400000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 2176.600000 0 494.500000 2176.600000 0 494.500000 2175.800000 0 181.700000 2175.800000 0 181.700000 2176.600000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 2175.800000 0 494.500000 2175.800000 0 494.500000 2175.100000 0 181.700000 2175.100000 0 181.700000 2175.800000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 2175.100000 0 494.500000 2175.100000 0 494.500000 2174.300000 0 181.700000 2174.300000 0 181.700000 2175.100000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 2174.300000 0 494.500000 2174.300000 0 494.500000 2173.600000 0 181.700000 2173.600000 0 181.700000 2174.300000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 2173.600000 0 494.500000 2173.600000 0 494.500000 2172.800000 0 181.700000 2172.800000 0 181.700000 2173.600000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 2172.800000 0 494.500000 2172.800000 0 494.500000 2172.100000 0 181.700000 2172.100000 0 181.700000 2172.800000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 2172.100000 0 494.500000 2172.100000 0 494.500000 2171.300000 0 181.700000 2171.300000 0 181.700000 2172.100000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 2171.300000 0 494.500000 2171.300000 0 494.500000 2170.500000 0 181.700000 2170.500000 0 181.700000 2171.300000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 2170.500000 0 494.500000 2170.500000 0 494.500000 2169.800000 0 181.700000 2169.800000 0 181.700000 2170.500000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 2169.800000 0 494.500000 2169.800000 0 494.500000 2169.000000 0 181.700000 2169.000000 0 181.700000 2169.800000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 2169.000000 0 494.500000 2169.000000 0 494.500000 2168.300000 0 181.700000 2168.300000 0 181.700000 2169.000000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 2168.300000 0 494.500000 2168.300000 0 494.500000 2167.500000 0 181.700000 2167.500000 0 181.700000 2168.300000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 2167.500000 0 494.500000 2167.500000 0 494.500000 2166.700000 0 181.700000 2166.700000 0 181.700000 2167.500000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 2166.700000 0 494.500000 2166.700000 0 494.500000 2166.000000 0 181.700000 2166.000000 0 181.700000 2166.700000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 2166.000000 0 494.500000 2166.000000 0 494.500000 2165.200000 0 181.700000 2165.200000 0 181.700000 2166.000000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 2165.200000 0 494.500000 2165.200000 0 494.500000 2164.500000 0 181.700000 2164.500000 0 181.700000 2165.200000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 2164.500000 0 494.500000 2164.500000 0 494.500000 2163.700000 0 181.700000 2163.700000 0 181.700000 2164.500000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 2163.700000 0 494.500000 2163.700000 0 494.500000 2162.900000 0 181.700000 2162.900000 0 181.700000 2163.700000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 2162.900000 0 494.500000 2162.900000 0 494.500000 2162.200000 0 181.700000 2162.200000 0 181.700000 2162.900000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 2162.200000 0 494.500000 2162.200000 0 494.500000 2161.400000 0 181.700000 2161.400000 0 181.700000 2162.200000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 2161.400000 0 494.500000 2161.400000 0 494.500000 2160.700000 0 181.700000 2160.700000 0 181.700000 2161.400000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 2160.700000 0 494.500000 2160.700000 0 494.500000 2159.900000 0 181.700000 2159.900000 0 181.700000 2160.700000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 2159.900000 0 494.500000 2159.900000 0 494.500000 2159.200000 0 181.700000 2159.200000 0 181.700000 2159.900000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 2159.200000 0 494.500000 2159.200000 0 494.500000 2158.400000 0 181.700000 2158.400000 0 181.700000 2159.200000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 2158.400000 0 494.500000 2158.400000 0 494.500000 2157.600000 0 181.700000 2157.600000 0 181.700000 2158.400000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 2157.600000 0 494.500000 2157.600000 0 494.500000 2156.900000 0 181.700000 2156.900000 0 181.700000 2157.600000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 2156.900000 0 494.500000 2156.900000 0 494.500000 2156.100000 0 181.700000 2156.100000 0 181.700000 2156.900000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 2156.100000 0 494.500000 2156.100000 0 494.500000 2155.400000 0 181.700000 2155.400000 0 181.700000 2156.100000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 2155.400000 0 494.500000 2155.400000 0 494.500000 2154.600000 0 181.700000 2154.600000 0 181.700000 2155.400000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 2154.600000 0 494.500000 2154.600000 0 494.500000 2153.800000 0 181.700000 2153.800000 0 181.700000 2154.600000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 2153.800000 0 494.500000 2153.800000 0 494.500000 2153.100000 0 181.700000 2153.100000 0 181.700000 2153.800000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 2153.100000 0 494.500000 2153.100000 0 494.500000 2152.300000 0 181.700000 2152.300000 0 181.700000 2153.100000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 2152.300000 0 494.500000 2152.300000 0 494.500000 2151.600000 0 181.700000 2151.600000 0 181.700000 2152.300000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 2151.600000 0 494.500000 2151.600000 0 494.500000 2150.800000 0 181.700000 2150.800000 0 181.700000 2151.600000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 2150.800000 0 494.500000 2150.800000 0 494.500000 2150.100000 0 181.700000 2150.100000 0 181.700000 2150.800000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 2150.100000 0 494.500000 2150.100000 0 494.500000 2149.300000 0 181.700000 2149.300000 0 181.700000 2150.100000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 2149.300000 0 494.500000 2149.300000 0 494.500000 2148.500000 0 181.700000 2148.500000 0 181.700000 2149.300000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 2148.500000 0 494.500000 2148.500000 0 494.500000 2147.800000 0 181.700000 2147.800000 0 181.700000 2148.500000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 2147.800000 0 494.500000 2147.800000 0 494.500000 2147.000000 0 181.700000 2147.000000 0 181.700000 2147.800000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 2147.000000 0 494.500000 2147.000000 0 494.500000 2146.300000 0 181.700000 2146.300000 0 181.700000 2147.000000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 2146.300000 0 494.500000 2146.300000 0 494.500000 2145.500000 0 181.700000 2145.500000 0 181.700000 2146.300000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 2145.500000 0 494.500000 2145.500000 0 494.500000 2144.700000 0 181.700000 2144.700000 0 181.700000 2145.500000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 2144.700000 0 494.500000 2144.700000 0 494.500000 2144.000000 0 181.700000 2144.000000 0 181.700000 2144.700000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 2144.000000 0 494.500000 2144.000000 0 494.500000 2143.200000 0 181.700000 2143.200000 0 181.700000 2144.000000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 2143.200000 0 494.500000 2143.200000 0 494.500000 2142.500000 0 181.700000 2142.500000 0 181.700000 2143.200000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 2142.500000 0 494.500000 2142.500000 0 494.500000 2141.700000 0 181.700000 2141.700000 0 181.700000 2142.500000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 2141.700000 0 494.500000 2141.700000 0 494.500000 2141.000000 0 181.700000 2141.000000 0 181.700000 2141.700000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 2141.000000 0 494.500000 2141.000000 0 494.500000 2140.200000 0 181.700000 2140.200000 0 181.700000 2141.000000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 2140.200000 0 494.500000 2140.200000 0 494.500000 2139.400000 0 181.700000 2139.400000 0 181.700000 2140.200000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 2139.400000 0 494.500000 2139.400000 0 494.500000 2138.700000 0 181.700000 2138.700000 0 181.700000 2139.400000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 2138.700000 0 494.500000 2138.700000 0 494.500000 2137.900000 0 181.700000 2137.900000 0 181.700000 2138.700000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 2137.900000 0 494.500000 2137.900000 0 494.500000 2137.200000 0 181.700000 2137.200000 0 181.700000 2137.900000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 2137.200000 0 494.500000 2137.200000 0 494.500000 2136.400000 0 181.700000 2136.400000 0 181.700000 2137.200000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 2136.400000 0 494.500000 2136.400000 0 494.500000 2135.700000 0 181.700000 2135.700000 0 181.700000 2136.400000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 2135.700000 0 494.500000 2135.700000 0 494.500000 2134.900000 0 181.700000 2134.900000 0 181.700000 2135.700000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 2134.900000 0 494.500000 2134.900000 0 494.500000 2134.100000 0 181.700000 2134.100000 0 181.700000 2134.900000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 2134.100000 0 494.500000 2134.100000 0 494.500000 2133.400000 0 181.700000 2133.400000 0 181.700000 2134.100000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 2133.400000 0 494.500000 2133.400000 0 494.500000 2132.600000 0 181.700000 2132.600000 0 181.700000 2133.400000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 2132.600000 0 494.500000 2132.600000 0 494.500000 2131.900000 0 181.700000 2131.900000 0 181.700000 2132.600000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 2131.900000 0 494.500000 2131.900000 0 494.500000 2131.100000 0 181.700000 2131.100000 0 181.700000 2131.900000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 2131.100000 0 494.500000 2131.100000 0 494.500000 2130.300000 0 181.700000 2130.300000 0 181.700000 2131.100000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 2130.300000 0 494.500000 2130.300000 0 494.500000 2129.600000 0 181.700000 2129.600000 0 181.700000 2130.300000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 2129.600000 0 494.500000 2129.600000 0 494.500000 2128.800000 0 181.700000 2128.800000 0 181.700000 2129.600000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 2128.800000 0 494.500000 2128.800000 0 494.500000 2128.100000 0 181.700000 2128.100000 0 181.700000 2128.800000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 2128.100000 0 494.500000 2128.100000 0 494.500000 2127.300000 0 181.700000 2127.300000 0 181.700000 2128.100000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 2127.300000 0 494.500000 2127.300000 0 494.500000 2126.600000 0 181.700000 2126.600000 0 181.700000 2127.300000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 2126.600000 0 494.500000 2126.600000 0 494.500000 2125.800000 0 181.700000 2125.800000 0 181.700000 2126.600000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 2125.800000 0 494.500000 2125.800000 0 494.500000 2125.000000 0 181.700000 2125.000000 0 181.700000 2125.800000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 2125.000000 0 494.500000 2125.000000 0 494.500000 2124.300000 0 181.700000 2124.300000 0 181.700000 2125.000000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 2124.300000 0 494.500000 2124.300000 0 494.500000 2123.500000 0 181.700000 2123.500000 0 181.700000 2124.300000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 2123.500000 0 494.500000 2123.500000 0 494.500000 2122.800000 0 181.700000 2122.800000 0 181.700000 2123.500000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 2122.800000 0 494.500000 2122.800000 0 494.500000 2122.000000 0 181.700000 2122.000000 0 181.700000 2122.800000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 2122.000000 0 494.500000 2122.000000 0 494.500000 2121.200000 0 181.700000 2121.200000 0 181.700000 2122.000000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 2121.200000 0 494.500000 2121.200000 0 494.500000 2120.500000 0 181.700000 2120.500000 0 181.700000 2121.200000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 2120.500000 0 494.500000 2120.500000 0 494.500000 2119.700000 0 181.700000 2119.700000 0 181.700000 2120.500000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 2119.700000 0 494.500000 2119.700000 0 494.500000 2119.000000 0 181.700000 2119.000000 0 181.700000 2119.700000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 2119.000000 0 494.500000 2119.000000 0 494.500000 2118.200000 0 181.700000 2118.200000 0 181.700000 2119.000000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 2118.200000 0 494.500000 2118.200000 0 494.500000 2117.500000 0 181.700000 2117.500000 0 181.700000 2118.200000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 2117.500000 0 494.500000 2117.500000 0 494.500000 2116.700000 0 181.700000 2116.700000 0 181.700000 2117.500000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 2116.700000 0 494.500000 2116.700000 0 494.500000 2115.900000 0 181.700000 2115.900000 0 181.700000 2116.700000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 2115.900000 0 494.500000 2115.900000 0 494.500000 2115.200000 0 181.700000 2115.200000 0 181.700000 2115.900000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 2115.200000 0 494.500000 2115.200000 0 494.500000 2114.400000 0 181.700000 2114.400000 0 181.700000 2115.200000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 2114.400000 0 494.500000 2114.400000 0 494.500000 2113.700000 0 181.700000 2113.700000 0 181.700000 2114.400000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 2113.700000 0 494.500000 2113.700000 0 494.500000 2112.900000 0 181.700000 2112.900000 0 181.700000 2113.700000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 2112.900000 0 494.500000 2112.900000 0 494.500000 2112.100000 0 181.700000 2112.100000 0 181.700000 2112.900000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 2112.100000 0 494.500000 2112.100000 0 494.500000 2111.400000 0 181.700000 2111.400000 0 181.700000 2112.100000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 2111.400000 0 494.500000 2111.400000 0 494.500000 2110.600000 0 181.700000 2110.600000 0 181.700000 2111.400000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 2110.600000 0 494.500000 2110.600000 0 494.500000 2109.900000 0 181.700000 2109.900000 0 181.700000 2110.600000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 2109.900000 0 494.500000 2109.900000 0 494.500000 2109.100000 0 181.700000 2109.100000 0 181.700000 2109.900000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 2109.100000 0 494.500000 2109.100000 0 494.500000 2108.300000 0 181.700000 2108.300000 0 181.700000 2109.100000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 2108.300000 0 494.500000 2108.300000 0 494.500000 2107.600000 0 181.700000 2107.600000 0 181.700000 2108.300000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 2107.600000 0 494.500000 2107.600000 0 494.500000 2106.800000 0 181.700000 2106.800000 0 181.700000 2107.600000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 2106.800000 0 494.500000 2106.800000 0 494.500000 2106.100000 0 181.700000 2106.100000 0 181.700000 2106.800000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 2106.100000 0 494.500000 2106.100000 0 494.500000 2105.300000 0 181.700000 2105.300000 0 181.700000 2106.100000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 2105.300000 0 494.500000 2105.300000 0 494.500000 2104.600000 0 181.700000 2104.600000 0 181.700000 2105.300000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 2104.600000 0 494.500000 2104.600000 0 494.500000 2103.800000 0 181.700000 2103.800000 0 181.700000 2104.600000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 2103.800000 0 494.500000 2103.800000 0 494.500000 2103.000000 0 181.700000 2103.000000 0 181.700000 2103.800000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 2103.000000 0 494.500000 2103.000000 0 494.500000 2102.300000 0 181.700000 2102.300000 0 181.700000 2103.000000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 2102.300000 0 494.500000 2102.300000 0 494.500000 2101.500000 0 181.700000 2101.500000 0 181.700000 2102.300000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 2101.500000 0 494.500000 2101.500000 0 494.500000 2100.800000 0 181.700000 2100.800000 0 181.700000 2101.500000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 2100.800000 0 494.500000 2100.800000 0 494.500000 2100.000000 0 181.700000 2100.000000 0 181.700000 2100.800000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 2100.000000 0 494.500000 2100.000000 0 494.500000 2099.200000 0 181.700000 2099.200000 0 181.700000 2100.000000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 2099.200000 0 494.500000 2099.200000 0 494.500000 2098.500000 0 181.700000 2098.500000 0 181.700000 2099.200000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 2098.500000 0 494.500000 2098.500000 0 494.500000 2097.700000 0 181.700000 2097.700000 0 181.700000 2098.500000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 2097.700000 0 494.500000 2097.700000 0 494.500000 2097.000000 0 181.700000 2097.000000 0 181.700000 2097.700000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 2097.000000 0 494.500000 2097.000000 0 494.500000 2096.200000 0 181.700000 2096.200000 0 181.700000 2097.000000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 2096.200000 0 494.500000 2096.200000 0 494.500000 2095.400000 0 181.700000 2095.400000 0 181.700000 2096.200000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 2095.400000 0 494.500000 2095.400000 0 494.500000 2094.700000 0 181.700000 2094.700000 0 181.700000 2095.400000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 2094.700000 0 494.500000 2094.700000 0 494.500000 2093.900000 0 181.700000 2093.900000 0 181.700000 2094.700000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 2093.900000 0 494.500000 2093.900000 0 494.500000 2093.200000 0 181.700000 2093.200000 0 181.700000 2093.900000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 2093.200000 0 494.500000 2093.200000 0 494.500000 2092.400000 0 181.700000 2092.400000 0 181.700000 2093.200000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 2092.400000 0 494.500000 2092.400000 0 494.500000 2091.700000 0 181.700000 2091.700000 0 181.700000 2092.400000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 2091.700000 0 494.500000 2091.700000 0 494.500000 2090.900000 0 181.700000 2090.900000 0 181.700000 2091.700000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 2090.900000 0 494.500000 2090.900000 0 494.500000 2090.100000 0 181.700000 2090.100000 0 181.700000 2090.900000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 2090.100000 0 494.500000 2090.100000 0 494.500000 2089.400000 0 181.700000 2089.400000 0 181.700000 2090.100000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 2089.400000 0 494.500000 2089.400000 0 494.500000 2088.600000 0 181.700000 2088.600000 0 181.700000 2089.400000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 2088.700000 0 181.800000 2088.700000 0 181.800000 2282.000000 0 494.400000 2282.000000 0 494.400000 2088.700000 0 338.100000 2088.700000 0
+strokePath subpath 1 338.100000 2088.700000 0 181.800000 2088.700000 0 181.800000 2282.000000 0 494.400000 2282.000000 0 494.400000 2088.700000 0 338.100000 2088.700000 0
+saveState
+updateCtm 11410.000000 0.000000 0.000000 -8760.000000 20530.000000 -137270.000000
+drawSoftMaskedImage 1142 877 1142 877 JPEG 70955 PPM 3004618
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 2127.724000 215.488000 2119.724000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 2127.724000 220.592000 2119.724000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 2127.724000 225.696000 2119.724000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 2127.724000 230.800000 2119.724000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 2120.124000 241.388000 2112.124000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 2120.124000 246.492000 2112.124000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 2120.124000 251.596000 2112.124000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 2120.124000 256.700000 2112.124000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 2112.424000 267.188000 2104.424000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 2112.424000 272.292000 2104.424000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 2112.424000 277.396000 2104.424000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 2112.424000 282.500000 2104.424000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 2104.824000 293.088000 2096.824000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 2104.824000 298.192000 2096.824000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 2104.824000 303.296000 2096.824000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 2104.824000 308.400000 2096.824000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 2142.724000 202.588000 2134.724000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 2162.024000 201.688000 2154.024000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 2181.324000 195.788000 2173.324000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 2181.324000 200.892000 2173.324000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 2200.724000 194.888000 2192.724000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 2200.724000 199.992000 2192.724000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 2220.024000 193.988000 2212.024000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 2220.024000 199.092000 2212.024000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 2239.324000 193.088000 2231.324000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 2239.324000 198.192000 2231.324000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 2111.424000 330.188000 2103.424000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 2111.424000 332.716000 2103.424000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 2111.424000 337.596000 2103.424000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 2111.424000 341.396000 2103.424000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 2111.424000 346.036000 2103.424000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 2111.424000 350.900000 2103.424000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 2111.424000 355.972000 2103.424000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 2111.424000 359.196000 2103.424000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 2111.424000 362.196000 2103.424000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 2111.424000 367.404000 2103.424000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 2111.424000 371.876000 2103.424000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 2111.424000 375.052000 2103.424000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 2130.924000 361.172000 2122.924000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 2130.924000 364.340000 2122.924000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 2130.924000 367.396000 2122.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 2130.924000 372.604000 2122.924000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 2130.924000 379.348000 2122.924000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 2130.924000 384.484000 2122.924000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 2130.924000 389.436000 2122.924000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 2130.924000 392.108000 2122.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 2130.924000 395.708000 2122.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 2130.924000 397.540000 2122.924000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 2130.924000 402.444000 2122.924000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 2130.924000 406.788000 2122.924000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 2150.424000 392.972000 2142.424000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 2150.424000 398.076000 2142.424000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 2150.424000 403.180000 2142.424000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 2150.424000 405.428000 2142.424000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 2150.424000 410.332000 2142.424000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 2150.424000 414.476000 2142.424000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 2278.092000 305.808000 2264.092000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 2278.092000 314.138000 2264.092000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 2278.092000 320.788000 2264.092000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 2278.092000 328.698000 2264.092000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 2278.092000 336.972000 2264.092000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 2278.092000 344.182000 2264.092000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 2278.092000 349.810000 2264.092000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 2278.092000 354.234000 2264.092000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 2278.092000 362.718000 2264.092000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 2278.092000 367.870000 2264.092000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 2278.092000 372.322000 2264.092000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 2278.092000 382.080000 2264.092000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 2278.092000 388.772000 2264.092000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 2278.092000 397.802000 2264.092000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 2278.092000 402.254000 2264.092000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 2278.092000 407.896000 2264.092000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 2155.200000 0 424.300000 2155.200000 0 424.300000 2215.900000 0 493.600000 2215.900000 0 493.600000 2155.200000 0 458.900000 2155.200000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 2206.300000 0 428.900000 2206.300000 0 428.900000 2212.200000 0 434.800000 2212.200000 0 434.800000 2206.300000 0 431.900000 2206.300000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 2195.200000 0 428.900000 2195.200000 0 428.900000 2201.200000 0 434.800000 2201.200000 0 434.800000 2195.200000 0 431.900000 2195.200000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 2184.100000 0 428.900000 2184.100000 0 428.900000 2190.100000 0 434.800000 2190.100000 0 434.800000 2184.100000 0 431.900000 2184.100000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 2173.000000 0 428.900000 2173.000000 0 428.900000 2179.000000 0 434.800000 2179.000000 0 434.800000 2173.000000 0 431.900000 2173.000000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 2161.900000 0 428.900000 2161.900000 0 428.900000 2167.900000 0 434.800000 2167.900000 0 434.800000 2161.900000 0 431.900000 2161.900000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 2213.324000 443.288000 2205.324000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 2213.324000 445.816000 2205.324000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 2213.324000 450.600000 2205.324000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 2213.324000 454.496000 2205.324000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 2213.324000 459.136000 2205.324000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 2213.324000 464.000000 2205.324000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 2213.324000 468.976000 2205.324000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 2213.324000 472.304000 2205.324000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 2213.324000 475.208000 2205.324000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 2213.324000 480.520000 2205.324000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 2213.324000 484.992000 2205.324000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 2213.324000 488.168000 2205.324000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 2202.324000 443.352000 2194.324000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 2202.324000 447.920000 2194.324000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 2202.324000 452.976000 2194.324000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 2202.324000 457.400000 2194.324000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 2202.324000 462.472000 2194.324000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 2202.324000 465.800000 2194.324000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 2202.324000 468.904000 2194.324000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 2202.324000 473.816000 2194.324000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 2202.324000 478.888000 2194.324000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 2202.324000 482.064000 2194.324000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 2191.224000 442.872000 2183.224000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 2191.224000 446.040000 2183.224000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 2191.224000 448.992000 2183.224000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 2191.224000 454.304000 2183.224000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 2191.224000 461.048000 2183.224000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 2191.224000 466.184000 2183.224000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 2191.224000 471.136000 2183.224000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 2191.224000 473.808000 2183.224000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 2191.224000 477.408000 2183.224000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 2191.224000 479.240000 2183.224000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 2191.224000 484.144000 2183.224000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 2191.224000 488.488000 2183.224000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 2180.124000 443.384000 2172.124000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 2180.124000 448.464000 2172.124000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 2180.124000 453.424000 2172.124000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 2180.124000 456.696000 2172.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 2180.124000 459.800000 2172.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 2180.124000 462.032000 2172.124000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 2180.124000 466.936000 2172.124000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 2180.124000 471.080000 2172.124000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 2169.024000 443.272000 2161.024000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 2169.024000 448.376000 2161.024000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 2169.024000 453.480000 2161.024000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 2169.024000 455.728000 2161.024000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 2169.024000 460.632000 2161.024000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 2169.024000 464.776000 2161.024000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 -476.000000 0 114.800000 -476.000000 0 114.800000 -433.200000 0 72.000000 -433.200000 0 72.000000 -476.000000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 126790.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 546.200000 0 504.000000 546.200000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 546.200000 0
+eoFillPath subpath 1 72.000000 72.000000 0 504.000000 72.000000 0 504.000000 245.800000 0 72.000000 245.800000 0 72.000000 72.000000 0
+eoFillPath subpath 1 72.000000 245.800000 0 121.400000 245.800000 0 121.400000 546.200000 0 72.000000 546.200000 0 72.000000 245.800000 0
+eoFillPath subpath 1 454.500000 245.800000 0 504.000000 245.800000 0 504.000000 546.200000 0 454.500000 546.200000 0 454.500000 245.800000 0
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 54620.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 701.300000 0 504.000000 701.300000 0 504.000000 720.000000 0 72.000000 720.000000 0 72.000000 701.300000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 72.000000 654.200000 0 291.400000 654.200000 0 291.400000 672.900000 0 72.000000 672.900000 0 72.000000 654.200000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 72.000000 72.200000 0 504.000000 72.200000 0 504.000000 86.100000 0 72.000000 86.100000 0 72.000000 72.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 354.400000 719.948000 368.192000 703.948000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 368.208000 719.948000 377.664000 703.948000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 377.712000 719.948000 382.784000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 382.816000 719.948000 394.832000 703.948000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 394.816000 719.948000 404.592000 703.948000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 404.624000 719.948000 414.752000 703.948000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 414.720000 719.948000 423.040000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 423.024000 719.948000 432.864000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 432.832000 719.948000 437.904000 703.948000 1.000000 0.000000 0.000000 1.000000
+drawChar 437.936000 719.948000 443.696000 703.948000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 443.744000 719.948000 448.816000 703.948000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 448.800000 719.948000 458.000000 703.948000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 456.800000 719.948000 461.232000 703.948000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 461.200000 719.948000 467.472000 703.948000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 467.504000 719.948000 477.632000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 477.600000 719.948000 487.440000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 487.408000 719.948000 495.728000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 495.712000 719.948000 504.032000 703.948000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 672.848000 83.028000 656.848000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 82.996000 672.848000 88.468000 656.848000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.500000 672.848000 96.148000 656.848000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 96.100000 672.848000 107.476000 656.848000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 107.508000 672.848000 118.356000 656.848000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 118.404000 672.848000 127.924000 656.848000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 127.908000 672.848000 137.428000 656.848000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 648.336000 194.164000 636.336000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 194.200000 648.336000 198.028000 636.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 198.004000 648.336000 202.816000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 202.804000 648.336000 210.532000 636.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 210.604000 648.336000 217.828000 636.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 217.804000 648.336000 225.532000 636.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 225.508000 648.336000 233.188000 636.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 233.212000 648.336000 240.940000 636.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 242.212000 648.336000 246.016000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 247.312000 648.336000 252.124000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 252.208000 648.336000 259.936000 636.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 259.912000 648.336000 267.004000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 268.312000 648.336000 272.116000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 273.412000 648.336000 281.092000 636.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 281.116000 648.336000 288.268000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 288.220000 648.336000 293.956000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 294.016000 648.336000 301.696000 636.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 301.720000 648.336000 308.812000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 308.824000 648.336000 316.552000 636.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 317.824000 648.336000 321.628000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 322.924000 648.336000 326.752000 636.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 326.728000 648.336000 332.884000 636.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 334.228000 648.336000 338.032000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 339.328000 648.336000 345.064000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 345.028000 648.336000 352.180000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 352.228000 648.336000 357.040000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 357.028000 648.336000 364.756000 636.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 364.732000 648.336000 371.824000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 371.836000 648.336000 377.572000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 378.940000 648.336000 382.744000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 384.040000 648.336000 387.868000 636.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 387.844000 648.336000 394.996000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 395.044000 648.336000 400.780000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 400.744000 648.336000 408.424000 636.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 408.448000 648.336000 415.540000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 415.552000 648.336000 419.356000 636.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 420.652000 648.336000 424.456000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 425.752000 648.336000 429.580000 636.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 429.556000 648.336000 434.368000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 434.452000 648.336000 437.740000 636.336000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 437.752000 648.336000 443.908000 636.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 445.252000 648.336000 449.056000 636.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 450.352000 648.336000 457.072000 636.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.048000 648.336000 464.140000 636.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 464.152000 648.336000 469.888000 636.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 469.948000 648.336000 474.760000 636.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 474.748000 648.336000 481.900000 636.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 481.852000 648.336000 485.680000 636.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 485.752000 648.336000 493.480000 636.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 493.456000 648.336000 497.284000 636.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 497.260000 648.336000 504.028000 636.336000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 648.336000 507.904000 636.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 634.436000 193.228000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 193.204000 634.436000 200.428000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 200.500000 634.436000 205.312000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 205.900000 634.436000 209.704000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 210.400000 634.436000 218.080000 622.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 218.104000 634.436000 221.932000 622.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 221.908000 634.436000 229.588000 622.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 230.308000 634.436000 234.112000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 234.808000 634.436000 241.900000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 241.912000 634.436000 249.640000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 249.616000 634.436000 256.840000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 256.912000 634.436000 264.640000 622.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 264.616000 634.436000 272.296000 622.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 272.320000 634.436000 280.048000 622.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 280.624000 634.436000 284.428000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 285.124000 634.436000 289.564000 622.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 289.528000 634.436000 296.752000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 296.824000 634.436000 302.560000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 303.220000 634.436000 307.024000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 307.720000 634.436000 311.440000 622.436000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 311.524000 634.436000 318.748000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 318.724000 634.436000 326.404000 622.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 326.428000 634.436000 334.108000 622.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 334.024000 634.436000 337.852000 622.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 337.828000 634.436000 345.556000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 345.628000 634.436000 353.308000 622.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 353.224000 634.436000 357.028000 622.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 357.724000 634.436000 361.528000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.224000 634.436000 369.448000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 369.424000 634.436000 375.160000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 375.928000 634.436000 379.732000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.428000 634.436000 391.804000 622.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 391.828000 634.436000 398.980000 622.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 398.932000 634.436000 406.660000 622.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 406.732000 634.436000 413.500000 622.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 414.028000 634.436000 417.832000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 418.528000 634.436000 425.752000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 425.824000 634.436000 430.636000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 430.624000 634.436000 438.352000 622.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 438.424000 634.436000 445.516000 622.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 445.528000 634.436000 451.264000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 451.924000 634.436000 455.728000 622.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.424000 634.436000 463.648000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 463.624000 634.436000 471.352000 622.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 471.424000 634.436000 476.236000 622.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 476.128000 634.436000 483.808000 622.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 483.832000 634.436000 491.056000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 491.128000 634.436000 498.352000 622.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 498.328000 634.436000 504.064000 622.436000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 634.436000 507.904000 622.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 620.536000 191.656000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 620.536000 199.384000 608.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 199.300000 620.536000 206.524000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 206.596000 620.536000 212.332000 608.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 212.296000 620.536000 217.108000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 217.096000 620.536000 223.252000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 223.300000 620.536000 227.104000 608.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.200000 620.536000 231.004000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 231.196000 620.536000 240.004000 608.536000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 239.992000 620.536000 247.720000 608.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 247.696000 620.536000 252.508000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 252.796000 620.536000 256.600000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 256.792000 620.536000 268.168000 608.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 268.192000 620.536000 274.960000 608.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 275.092000 620.536000 278.896000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.088000 620.536000 286.816000 608.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 286.792000 620.536000 294.016000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 294.088000 620.536000 301.816000 608.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 301.684000 620.536000 307.840000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 307.888000 620.536000 314.980000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 315.184000 620.536000 318.988000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 319.180000 620.536000 323.008000 608.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 322.984000 620.536000 329.140000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 329.284000 620.536000 333.088000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.280000 620.536000 340.504000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 340.576000 620.536000 348.304000 608.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 348.280000 620.536000 352.108000 608.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 352.180000 620.536000 358.948000 608.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 359.080000 620.536000 362.884000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 363.076000 620.536000 374.452000 608.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 374.476000 620.536000 378.304000 608.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 378.280000 620.536000 386.008000 608.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 385.984000 620.536000 393.712000 608.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 393.784000 620.536000 398.596000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 398.584000 620.536000 405.676000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 405.688000 620.536000 411.844000 608.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 411.988000 620.536000 415.792000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 415.984000 620.536000 423.136000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 423.184000 620.536000 433.444000 608.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 433.384000 620.536000 440.536000 608.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 440.584000 620.536000 447.352000 608.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 447.484000 620.536000 451.288000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 451.684000 620.536000 456.124000 608.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 455.980000 620.536000 461.716000 608.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 461.680000 620.536000 468.904000 608.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 468.976000 620.536000 480.352000 608.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 480.280000 620.536000 484.084000 608.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 484.480000 620.536000 489.292000 608.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 489.280000 620.536000 497.008000 608.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 496.984000 620.536000 504.076000 608.536000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.200000 620.536000 508.004000 608.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 606.636000 193.228000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 193.204000 606.636000 200.932000 594.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 201.004000 606.636000 212.380000 594.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 212.308000 606.636000 219.400000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 219.412000 606.636000 225.148000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 225.208000 606.636000 232.432000 594.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 232.408000 606.636000 240.136000 594.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 240.112000 606.636000 246.268000 594.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 247.108000 606.636000 250.912000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 251.704000 606.636000 258.424000 594.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 258.400000 606.636000 262.228000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 262.300000 606.636000 267.112000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 267.100000 606.636000 273.868000 594.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 274.696000 606.636000 278.500000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.400000 606.636000 287.080000 594.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 287.104000 606.636000 294.256000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 294.208000 606.636000 299.944000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 300.004000 606.636000 307.264000 594.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 307.204000 606.636000 313.360000 594.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 314.200000 606.636000 318.004000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.796000 606.636000 322.624000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 322.600000 606.636000 330.328000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 331.204000 606.636000 335.008000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 335.908000 606.636000 344.128000 594.636000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 344.104000 606.636000 351.256000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 351.304000 606.636000 359.032000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 359.800000 606.636000 363.604000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.396000 606.636000 372.712000 594.636000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 372.700000 606.636000 378.436000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 378.496000 606.636000 385.648000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 385.600000 606.636000 393.328000 594.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 393.304000 606.636000 400.024000 594.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 400.108000 606.636000 403.936000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 403.912000 606.636000 410.068000 594.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 410.116000 606.636000 416.836000 594.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 416.812000 606.636000 424.036000 594.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 424.012000 606.636000 427.816000 594.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 428.608000 606.636000 432.412000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 433.312000 606.636000 444.688000 594.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 444.712000 606.636000 451.480000 594.636000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 452.308000 606.636000 456.112000 594.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.904000 606.636000 461.344000 594.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 461.308000 606.636000 468.460000 594.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 468.508000 606.636000 475.276000 594.636000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 475.312000 606.636000 482.536000 594.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 482.512000 606.636000 488.248000 594.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 488.212000 606.636000 492.040000 594.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 492.112000 606.636000 496.924000 594.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 496.912000 606.636000 504.004000 594.636000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 606.636000 507.904000 594.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 592.736000 192.724000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 192.700000 592.736000 197.140000 580.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 197.500000 592.736000 201.304000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 201.700000 592.736000 211.960000 580.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 211.996000 592.736000 219.724000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 219.700000 592.736000 223.528000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 223.504000 592.736000 230.224000 580.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 230.308000 592.736000 238.036000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 238.408000 592.736000 242.212000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 242.608000 592.736000 246.436000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 246.412000 592.736000 252.568000 580.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 252.916000 592.736000 256.720000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 257.116000 592.736000 261.928000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 261.916000 592.736000 269.644000 580.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 269.716000 592.736000 276.808000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 277.516000 592.736000 281.320000 580.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 281.400000 592.736000 290.976000 580.736000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 291.000000 592.736000 298.224000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 298.200000 592.736000 302.028000 580.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 302.004000 592.736000 309.684000 580.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 309.708000 592.736000 316.800000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 316.812000 592.736000 324.540000 580.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 324.912000 592.736000 328.716000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 329.112000 592.736000 338.688000 580.736000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 338.712000 592.736000 345.864000 580.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 345.816000 592.736000 350.628000 580.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 350.712000 592.736000 357.804000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 358.116000 592.736000 361.920000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 362.412000 592.736000 370.476000 580.736000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 369.912000 592.736000 377.064000 580.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 377.016000 592.736000 382.752000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 382.716000 592.736000 389.976000 580.736000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 390.100000 592.736000 393.904000 580.736000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 394.204000 592.736000 398.008000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.404000 592.736000 402.232000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.208000 592.736000 409.888000 580.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 409.912000 592.736000 417.004000 580.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 417.112000 592.736000 424.264000 580.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 424.312000 592.736000 428.140000 580.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 428.416000 592.736000 432.220000 580.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 432.712000 592.736000 437.152000 580.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 437.116000 592.736000 444.340000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 444.412000 592.736000 450.148000 580.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 450.808000 592.736000 454.612000 580.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 454.700000 592.736000 458.420000 580.736000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 458.396000 592.736000 465.620000 580.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 465.596000 592.736000 473.276000 580.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 473.300000 592.736000 480.980000 580.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 481.004000 592.736000 484.832000 580.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 484.808000 592.736000 492.536000 580.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 492.512000 592.736000 500.192000 580.736000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.300000 592.736000 504.104000 580.736000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 592.736000 507.904000 580.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 578.836000 191.236000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 191.200000 578.836000 198.424000 566.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 198.400000 578.836000 202.228000 566.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 202.204000 578.836000 206.032000 566.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 206.008000 578.836000 213.100000 566.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 213.112000 578.836000 218.848000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 218.812000 578.836000 222.856000 566.836000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 222.916000 578.836000 230.596000 566.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 230.620000 578.836000 234.448000 566.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 234.424000 578.836000 241.576000 566.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 241.624000 578.836000 249.304000 566.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 249.328000 578.836000 253.156000 566.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 253.132000 578.836000 260.860000 566.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 260.836000 578.836000 268.516000 566.836000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 268.600000 578.836000 272.404000 566.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 272.404000 578.836000 279.628000 566.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 279.604000 578.836000 285.340000 566.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 285.304000 578.836000 289.108000 566.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 289.200000 578.836000 296.880000 566.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 296.904000 578.836000 300.732000 566.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 300.708000 578.836000 307.968000 566.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 308.004000 578.836000 311.832000 566.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 311.808000 578.836000 319.536000 566.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 319.512000 578.836000 327.192000 566.836000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 327.200000 578.836000 331.004000 566.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 541.048000 83.620000 525.048000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 83.604000 541.048000 98.372000 525.048000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 98.404000 541.048000 103.876000 525.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.908000 541.048000 120.564000 525.048000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 120.612000 541.048000 137.268000 525.048000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 137.316000 541.048000 142.788000 525.048000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.820000 541.048000 154.196000 525.048000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 154.228000 541.048000 165.668000 525.048000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 165.732000 541.048000 171.300000 525.048000 1.000000 0.000000 0.000000 1.000000
+drawChar 171.332000 541.048000 183.044000 525.048000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 183.028000 541.048000 194.020000 525.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 194.036000 541.048000 205.028000 525.048000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 205.044000 541.048000 210.516000 525.048000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 516.436000 190.240000 504.436000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 190.396000 516.436000 194.200000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 194.596000 516.436000 202.324000 504.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 202.300000 516.436000 209.452000 504.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 209.404000 516.436000 216.172000 504.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 216.208000 516.436000 223.300000 504.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 223.612000 516.436000 227.416000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 227.716000 516.436000 234.868000 504.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 235.120000 516.436000 238.924000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 239.224000 516.436000 245.380000 504.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 245.428000 516.436000 256.804000 504.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 256.732000 516.436000 263.884000 504.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 263.932000 516.436000 267.760000 504.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 267.736000 516.436000 271.564000 504.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 271.636000 516.436000 275.440000 504.436000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 275.740000 516.436000 279.544000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 279.844000 516.436000 286.564000 504.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 286.540000 516.436000 293.764000 504.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 293.740000 516.436000 300.508000 504.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 300.544000 516.436000 307.636000 504.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 307.648000 516.436000 313.384000 504.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 313.444000 516.436000 320.536000 504.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 320.548000 516.436000 328.228000 504.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 328.348000 516.436000 332.152000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 332.548000 516.436000 338.704000 504.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 338.752000 516.436000 349.012000 504.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 348.952000 516.436000 352.780000 504.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 352.852000 516.436000 364.228000 504.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 364.156000 516.436000 375.532000 504.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 375.556000 516.436000 379.384000 504.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 379.456000 516.436000 387.184000 504.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 387.052000 516.436000 394.732000 504.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 395.056000 516.436000 398.860000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 399.160000 516.436000 406.840000 504.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 406.864000 516.436000 414.088000 504.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 414.160000 516.436000 421.384000 504.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 421.360000 516.436000 425.188000 504.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 425.356000 516.436000 429.160000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 429.460000 516.436000 436.684000 504.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 436.756000 516.436000 444.484000 504.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 444.760000 516.436000 448.564000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 448.864000 516.436000 460.240000 504.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 460.264000 516.436000 467.032000 504.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 467.260000 516.436000 471.064000 504.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 471.364000 516.436000 479.044000 504.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 479.068000 516.436000 484.804000 504.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 484.768000 516.436000 491.992000 504.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 491.968000 516.436000 499.648000 504.436000 1.000000 0.000000 0.000000 1.000000 p
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 516.436000 504.044000 504.436000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 502.536000 192.592000 490.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 192.604000 502.536000 198.340000 490.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 198.304000 502.536000 203.116000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 203.200000 502.536000 209.968000 490.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 208.300000 502.536000 212.104000 490.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 213.400000 502.536000 217.204000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 218.404000 502.536000 223.144000 490.536000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 223.108000 502.536000 227.920000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 228.004000 502.536000 231.292000 490.536000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 231.304000 502.536000 237.460000 490.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 238.600000 502.536000 242.404000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 243.700000 502.536000 250.924000 490.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 250.900000 502.536000 258.628000 490.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 258.700000 502.536000 262.528000 490.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 262.504000 502.536000 269.272000 490.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 270.508000 502.536000 274.312000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 275.512000 502.536000 282.664000 490.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 282.712000 502.536000 290.392000 490.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 290.308000 502.536000 297.532000 490.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 297.604000 502.536000 305.332000 490.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 305.308000 502.536000 310.120000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 311.308000 502.536000 315.112000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 316.408000 502.536000 324.040000 490.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 324.004000 502.536000 331.636000 490.536000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 332.908000 502.536000 336.712000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 337.912000 502.536000 342.352000 490.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 342.316000 502.536000 347.128000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 347.212000 502.536000 351.016000 490.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 352.216000 502.536000 356.020000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.316000 502.536000 361.144000 490.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 361.120000 502.536000 368.344000 490.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 368.416000 502.536000 376.144000 490.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 376.120000 502.536000 383.800000 490.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 383.824000 502.536000 387.628000 490.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 388.828000 502.536000 392.632000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.832000 502.536000 401.512000 490.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 401.536000 502.536000 409.264000 490.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 409.240000 502.536000 414.052000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 415.240000 502.536000 419.044000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 420.340000 502.536000 428.068000 490.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 428.044000 502.536000 435.196000 490.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 435.244000 502.536000 441.400000 490.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 442.648000 502.536000 446.452000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 447.652000 502.536000 454.804000 490.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.852000 502.536000 462.580000 490.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 463.756000 502.536000 467.560000 490.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 468.856000 502.536000 472.684000 490.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 472.660000 502.536000 480.388000 490.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 480.460000 502.536000 485.272000 490.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 485.260000 502.536000 492.352000 490.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 492.364000 502.536000 500.044000 490.536000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.100000 502.536000 504.144000 490.536000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 488.636000 191.236000 476.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 191.200000 488.636000 198.352000 476.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 198.400000 488.636000 203.212000 476.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 203.200000 488.636000 210.292000 476.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 210.304000 488.636000 217.984000 476.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 218.008000 488.636000 221.812000 476.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 221.908000 488.636000 228.628000 476.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 228.604000 488.636000 234.340000 476.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 234.304000 488.636000 241.528000 476.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 241.504000 488.636000 247.660000 476.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 247.708000 488.636000 253.864000 476.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 253.804000 488.636000 257.848000 476.636000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 257.908000 488.636000 264.628000 476.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 264.604000 488.636000 272.332000 476.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 272.404000 488.636000 278.140000 476.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 278.008000 488.636000 283.744000 476.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 283.708000 488.636000 290.800000 476.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 290.812000 488.636000 298.540000 476.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 298.612000 488.636000 303.424000 476.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 303.412000 488.636000 307.216000 476.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 307.408000 488.636000 317.668000 476.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 317.704000 488.636000 325.432000 476.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 325.408000 488.636000 329.236000 476.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 329.212000 488.636000 335.932000 476.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 336.016000 488.636000 343.744000 476.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 343.612000 488.636000 347.416000 476.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 347.512000 488.636000 358.888000 476.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 358.816000 488.636000 365.968000 476.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.016000 488.636000 373.276000 476.636000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 373.312000 488.636000 380.404000 476.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 380.416000 488.636000 386.572000 476.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 386.512000 488.636000 390.316000 476.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 390.412000 488.636000 394.240000 476.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 394.312000 488.636000 399.124000 476.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 399.112000 488.636000 402.916000 476.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 402.916000 488.636000 410.596000 476.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 410.620000 488.636000 417.844000 476.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 417.820000 488.636000 423.976000 476.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 424.024000 488.636000 430.180000 476.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 430.120000 488.636000 433.948000 476.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 434.020000 488.636000 441.700000 476.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 441.616000 488.636000 445.444000 476.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.516000 488.636000 452.608000 476.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 452.620000 488.636000 456.424000 476.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 456.424000 488.636000 461.236000 476.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 461.320000 488.636000 468.544000 476.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 468.616000 488.636000 472.420000 476.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 472.516000 488.636000 478.672000 476.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 478.516000 488.636000 488.776000 476.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 488.812000 488.636000 492.640000 476.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 492.616000 488.636000 503.992000 476.636000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 488.636000 507.904000 476.636000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 474.736000 192.652000 462.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 192.700000 474.736000 200.428000 462.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 200.404000 474.736000 208.084000 462.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 208.108000 474.736000 211.912000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 211.912000 474.736000 219.592000 462.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 219.616000 474.736000 226.708000 462.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 226.720000 474.736000 231.532000 462.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 231.520000 474.736000 235.324000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 235.420000 474.736000 242.572000 462.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 242.524000 474.736000 246.328000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 246.424000 474.736000 254.104000 462.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 254.020000 474.736000 261.244000 462.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 261.316000 474.736000 268.540000 462.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 268.516000 474.736000 276.196000 462.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 276.220000 474.736000 280.024000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 280.120000 474.736000 290.380000 462.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 290.320000 474.736000 297.544000 462.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 297.616000 474.736000 303.352000 462.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 303.316000 474.736000 310.576000 462.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 310.612000 474.736000 317.836000 462.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 317.812000 474.736000 325.540000 462.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 325.612000 474.736000 330.424000 462.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 330.412000 474.736000 334.216000 462.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 334.216000 474.736000 338.020000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 338.020000 474.736000 346.012000 462.736000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 346.024000 474.736000 353.752000 462.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 353.728000 474.736000 360.820000 462.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.832000 474.736000 364.636000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.828000 474.736000 370.984000 462.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 371.032000 474.736000 378.712000 462.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 378.628000 474.736000 385.720000 462.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 385.732000 474.736000 392.824000 462.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 392.836000 474.736000 400.516000 462.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 400.540000 474.736000 404.344000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 404.344000 474.736000 411.568000 462.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 411.544000 474.736000 415.984000 462.736000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 416.044000 474.736000 419.848000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 419.848000 474.736000 424.660000 462.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 424.648000 474.736000 432.376000 462.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 432.448000 474.736000 439.540000 462.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 439.552000 474.736000 443.356000 462.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 443.356000 474.736000 450.076000 462.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 450.160000 474.736000 455.896000 462.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 455.860000 474.736000 463.084000 462.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 463.060000 474.736000 469.216000 462.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 469.264000 474.736000 475.420000 462.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 475.360000 474.736000 479.404000 462.736000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 479.464000 474.736000 486.184000 462.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 486.160000 474.736000 493.888000 462.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 493.864000 474.736000 499.600000 462.736000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 500.000000 474.736000 504.044000 462.736000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 460.836000 191.236000 448.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 191.200000 460.836000 198.292000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 198.304000 460.836000 206.032000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 206.104000 460.836000 210.916000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 211.408000 460.836000 215.212000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 215.704000 460.836000 221.860000 448.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 221.908000 460.836000 228.676000 448.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 228.604000 460.836000 234.760000 448.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 234.808000 460.836000 239.620000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 239.608000 460.836000 246.700000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 246.712000 460.836000 258.088000 448.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 258.616000 460.836000 262.420000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 262.912000 460.836000 269.632000 448.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 269.608000 460.836000 276.760000 448.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 276.808000 460.836000 284.536000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 285.004000 460.836000 288.808000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 289.300000 460.836000 296.980000 448.836000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 297.004000 460.836000 304.096000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 304.600000 460.836000 308.404000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 308.896000 460.836000 316.048000 448.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 316.096000 460.836000 323.776000 448.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 323.692000 460.836000 327.412000 448.836000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 327.496000 460.836000 335.224000 448.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 335.200000 460.836000 341.356000 448.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 341.296000 460.836000 346.108000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 346.192000 460.836000 353.284000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 353.296000 460.836000 360.976000 448.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 361.492000 460.836000 365.296000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 365.788000 460.836000 370.600000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 370.588000 460.836000 377.812000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 378.292000 460.836000 382.096000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 382.696000 460.836000 390.376000 448.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 390.292000 460.836000 394.120000 448.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 394.096000 460.836000 402.616000 448.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 402.700000 460.836000 409.792000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 409.804000 460.836000 415.540000 448.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 415.504000 460.836000 422.596000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 422.608000 460.836000 430.336000 448.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 430.312000 460.836000 435.124000 448.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 435.712000 460.836000 439.516000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 440.008000 460.836000 443.836000 448.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 443.812000 460.836000 450.904000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 450.916000 460.836000 457.684000 448.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 457.720000 460.836000 464.812000 448.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 464.824000 460.836000 468.652000 448.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 468.724000 460.836000 474.880000 448.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 474.820000 460.836000 478.624000 448.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.116000 460.836000 482.920000 448.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 483.520000 460.836000 491.836000 448.836000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 491.224000 460.836000 498.448000 448.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 498.328000 460.836000 504.064000 448.836000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 460.836000 507.904000 448.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 446.936000 192.652000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 194.800000 446.936000 198.604000 434.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 198.700000 446.936000 206.380000 434.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 206.404000 446.936000 210.232000 434.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 210.208000 446.936000 216.976000 434.936000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 217.012000 446.936000 220.840000 434.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 220.816000 446.936000 228.544000 434.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 228.616000 446.936000 236.296000 434.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 237.316000 446.936000 241.120000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 242.320000 446.936000 250.000000 434.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 249.916000 446.936000 257.140000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 257.212000 446.936000 264.364000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 264.412000 446.936000 270.148000 434.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 270.112000 446.936000 277.792000 434.936000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 277.600000 446.936000 281.404000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 283.600000 446.936000 288.412000 434.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 288.304000 446.936000 296.032000 434.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 296.008000 446.936000 303.232000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 303.304000 446.936000 311.032000 434.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 311.008000 446.936000 318.688000 434.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 318.712000 446.936000 326.440000 434.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 326.416000 446.936000 330.220000 434.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 331.312000 446.936000 335.116000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 336.316000 446.936000 341.128000 434.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 341.116000 446.936000 348.844000 434.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 348.916000 446.936000 356.008000 434.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 356.920000 446.936000 360.724000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.816000 446.936000 369.496000 434.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 369.520000 446.936000 376.744000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 376.720000 446.936000 383.944000 434.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 383.920000 446.936000 387.748000 434.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 388.924000 446.936000 392.728000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 393.820000 446.936000 397.648000 434.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.624000 446.936000 403.780000 434.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 404.824000 446.936000 408.628000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 409.720000 446.936000 417.448000 434.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 417.424000 446.936000 424.576000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 424.624000 446.936000 429.436000 434.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 429.424000 446.936000 437.152000 434.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 437.128000 446.936000 442.864000 434.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 442.924000 446.936000 450.076000 434.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.028000 446.936000 453.856000 434.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 453.928000 446.936000 457.756000 434.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 457.732000 446.936000 464.500000 434.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 465.628000 446.936000 469.432000 434.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 470.524000 446.936000 481.900000 434.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 481.924000 446.936000 489.652000 434.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 489.628000 446.936000 496.348000 434.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 496.324000 446.936000 504.052000 434.936000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 446.936000 507.904000 434.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 433.036000 190.312000 421.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 433.036000 197.524000 421.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 197.500000 433.036000 204.724000 421.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 204.700000 433.036000 208.504000 421.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 208.504000 433.036000 214.660000 421.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 214.708000 433.036000 226.084000 421.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 226.108000 433.036000 233.260000 421.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 233.308000 433.036000 237.136000 421.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 237.112000 433.036000 240.940000 421.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 240.916000 433.036000 244.720000 421.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+updateFont 103 1 0 0 0 1600.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 72.100000 395.248000 83.012000 379.248000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 80.900000 395.248000 91.748000 379.248000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.796000 395.248000 103.172000 379.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 103.204000 395.248000 114.580000 379.248000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 114.612000 395.248000 120.084000 379.248000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 120.116000 395.248000 129.636000 379.248000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 370.736000 189.304000 358.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 192.004000 370.736000 196.744000 358.736000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 198.100000 370.736000 201.904000 358.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 203.296000 370.736000 209.032000 358.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 208.996000 370.736000 216.088000 358.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 216.100000 370.736000 222.820000 358.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 222.904000 370.736000 229.996000 358.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 230.008000 370.736000 237.736000 358.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 237.712000 370.736000 242.524000 358.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 242.512000 370.736000 246.340000 358.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 246.316000 370.736000 253.084000 358.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 254.416000 370.736000 258.220000 358.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 259.612000 370.736000 266.764000 358.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 266.812000 370.736000 274.492000 358.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 274.408000 370.736000 282.088000 358.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 282.112000 370.736000 289.204000 358.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 289.216000 370.736000 296.896000 358.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 298.216000 370.736000 302.020000 358.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 303.412000 370.736000 310.564000 358.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 311.908000 370.736000 315.712000 358.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 317.104000 370.736000 321.916000 358.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 321.904000 370.736000 328.996000 358.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 329.008000 370.736000 336.736000 358.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 336.808000 370.736000 344.536000 358.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 344.512000 370.736000 348.340000 358.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 348.316000 370.736000 354.472000 358.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 355.816000 370.736000 359.620000 358.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 361.012000 370.736000 367.732000 358.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 367.708000 370.736000 374.932000 358.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 374.908000 370.736000 382.636000 358.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 382.708000 370.736000 388.444000 358.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.408000 370.736000 393.220000 358.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 394.504000 370.736000 398.308000 358.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 399.700000 370.736000 407.380000 358.736000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 407.404000 370.736000 414.496000 358.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 414.508000 370.736000 422.236000 358.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 422.212000 370.736000 426.040000 358.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 426.016000 370.736000 433.744000 358.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 433.816000 370.736000 441.496000 358.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 442.816000 370.736000 446.620000 358.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 448.012000 370.736000 452.824000 358.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 452.812000 370.736000 460.540000 358.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 460.612000 370.736000 467.704000 358.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 469.012000 370.736000 472.816000 358.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 474.208000 370.736000 481.888000 358.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 481.912000 370.736000 489.136000 358.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 489.112000 370.736000 496.336000 358.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 496.312000 370.736000 500.140000 358.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 500.212000 370.736000 504.016000 358.736000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 370.736000 507.904000 358.736000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 356.836000 195.760000 344.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 195.796000 356.836000 199.624000 344.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 199.600000 356.836000 204.412000 344.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 204.400000 356.836000 212.128000 344.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 212.704000 356.836000 216.508000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 217.000000 356.836000 221.812000 344.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 221.800000 356.836000 229.528000 344.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 229.600000 356.836000 236.692000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 237.100000 356.836000 240.904000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 241.504000 356.836000 245.332000 344.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 245.308000 356.836000 252.988000 344.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 253.108000 356.836000 260.200000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 260.212000 356.836000 267.364000 344.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 267.808000 356.836000 271.612000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 272.104000 356.836000 279.328000 344.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 279.400000 356.836000 283.840000 344.836000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 284.296000 356.836000 288.100000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 288.700000 356.836000 295.852000 344.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 295.900000 356.836000 303.580000 344.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 303.496000 356.836000 311.176000 344.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 311.200000 356.836000 315.028000 344.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 315.100000 356.836000 319.912000 344.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 319.900000 356.836000 323.728000 344.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 323.704000 356.836000 330.928000 344.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 330.904000 356.836000 338.632000 344.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 338.704000 356.836000 345.856000 344.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 345.808000 356.836000 349.636000 344.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 350.212000 356.836000 354.016000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.508000 356.836000 361.600000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 361.612000 356.836000 368.368000 344.836000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 368.416000 356.836000 375.508000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 375.520000 356.836000 381.256000 344.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 381.220000 356.836000 387.940000 344.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 387.916000 356.836000 391.744000 344.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 391.816000 356.836000 397.972000 344.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 397.912000 356.836000 405.004000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 405.508000 356.836000 409.312000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 409.912000 356.836000 413.740000 344.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 413.716000 356.836000 421.444000 344.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 422.020000 356.836000 425.824000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 426.316000 356.836000 437.692000 344.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 437.716000 356.836000 441.544000 344.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 441.520000 356.836000 449.248000 344.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 449.224000 356.836000 456.904000 344.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 456.928000 356.836000 460.732000 344.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.224000 356.836000 465.028000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 465.724000 356.836000 470.464000 344.836000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 470.920000 356.836000 474.724000 344.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 475.216000 356.836000 482.308000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 482.320000 356.836000 489.088000 344.836000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 489.124000 356.836000 496.216000 344.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 496.228000 356.836000 503.956000 344.836000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 356.836000 507.904000 344.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 342.936000 193.180000 330.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 193.204000 342.936000 200.296000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 200.308000 342.936000 207.988000 330.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 208.012000 342.936000 215.164000 330.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 215.116000 342.936000 222.844000 330.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 223.720000 342.936000 227.524000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 228.616000 342.936000 233.428000 330.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 233.416000 342.936000 240.568000 330.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 240.520000 342.936000 247.780000 330.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 247.816000 342.936000 251.644000 330.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 251.620000 342.936000 259.348000 330.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 259.324000 342.936000 267.004000 330.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 268.120000 342.936000 271.924000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 272.920000 342.936000 276.748000 330.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 276.724000 342.936000 283.816000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 283.828000 342.936000 289.984000 330.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 290.032000 342.936000 296.188000 330.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 296.236000 342.936000 303.460000 330.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 303.436000 342.936000 311.164000 330.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 311.140000 342.936000 317.296000 330.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 317.344000 342.936000 321.148000 330.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 322.048000 342.936000 325.852000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 326.848000 342.936000 330.568000 330.936000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 330.544000 342.936000 338.272000 330.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 338.248000 342.936000 344.404000 330.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.452000 342.936000 349.264000 330.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 350.248000 342.936000 354.052000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 355.048000 342.936000 359.860000 330.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 359.848000 342.936000 367.072000 330.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 368.044000 342.936000 371.848000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.844000 342.936000 380.524000 330.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 380.548000 342.936000 387.640000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 387.652000 342.936000 392.464000 330.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 393.448000 342.936000 397.252000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.248000 342.936000 405.928000 330.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 405.952000 342.936000 413.176000 330.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 413.152000 342.936000 423.412000 330.936000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 423.448000 342.936000 431.176000 330.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 432.052000 342.936000 435.856000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 436.852000 342.936000 441.664000 330.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 441.652000 342.936000 449.380000 330.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 449.452000 342.936000 456.544000 330.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 457.552000 342.936000 461.356000 330.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 462.352000 342.936000 470.032000 330.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 470.056000 342.936000 477.208000 330.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 477.160000 342.936000 483.316000 330.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 483.364000 342.936000 487.192000 330.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 487.168000 342.936000 493.888000 330.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 493.972000 342.936000 500.128000 330.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 500.068000 342.936000 503.872000 330.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 342.936000 507.904000 330.936000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 329.036000 195.604000 317.036000 1.000000 0.000000 0.000000 1.000000 U
+drawChar 195.604000 329.036000 203.332000 317.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 203.308000 329.036000 207.748000 317.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 207.808000 329.036000 215.032000 317.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 215.008000 329.036000 220.744000 317.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 220.708000 329.036000 225.520000 317.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 225.604000 329.036000 233.332000 317.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 233.308000 329.036000 241.036000 317.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 241.012000 329.036000 248.164000 317.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 248.212000 329.036000 253.024000 317.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 253.012000 329.036000 260.104000 317.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 260.116000 329.036000 263.944000 317.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 263.920000 329.036000 270.688000 317.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 269.116000 329.036000 272.920000 317.036000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 273.316000 329.036000 277.120000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 277.612000 329.036000 282.352000 317.036000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 282.712000 329.036000 286.516000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 286.912000 329.036000 293.068000 317.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 293.116000 329.036000 297.928000 317.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 297.916000 329.036000 301.744000 317.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 301.720000 329.036000 305.548000 317.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 305.620000 329.036000 309.448000 317.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 309.820000 329.036000 313.624000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 314.020000 329.036000 325.396000 317.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 325.420000 329.036000 329.248000 317.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 329.224000 329.036000 335.380000 317.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 335.428000 329.036000 341.584000 317.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 342.028000 329.036000 345.832000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 346.228000 329.036000 357.604000 317.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 357.532000 329.036000 364.756000 317.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 364.828000 329.036000 370.564000 317.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 370.528000 329.036000 377.620000 317.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 378.028000 329.036000 381.832000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 382.228000 329.036000 387.040000 317.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 387.028000 329.036000 394.756000 317.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 394.828000 329.036000 401.980000 317.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 401.932000 329.036000 409.660000 317.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 410.128000 329.036000 413.932000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 414.328000 329.036000 419.068000 317.036000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 419.428000 329.036000 423.232000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 423.628000 329.036000 431.356000 317.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 431.332000 329.036000 435.160000 317.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 435.232000 329.036000 440.044000 317.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 440.032000 329.036000 443.836000 317.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.232000 329.036000 448.036000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 448.432000 329.036000 457.096000 317.036000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 457.132000 329.036000 464.860000 317.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 464.836000 329.036000 472.516000 317.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 472.936000 329.036000 476.740000 317.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 477.136000 329.036000 487.396000 317.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 487.432000 329.036000 491.260000 317.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 491.236000 329.036000 496.048000 317.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 496.036000 329.036000 503.764000 317.036000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 329.036000 507.904000 317.036000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 315.136000 196.876000 303.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 196.900000 315.136000 203.668000 303.136000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 205.300000 315.136000 209.104000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 210.700000 315.136000 215.512000 303.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 215.500000 315.136000 222.592000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 222.604000 315.136000 230.332000 303.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 230.404000 315.136000 238.132000 303.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 238.108000 315.136000 241.936000 303.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 241.912000 315.136000 248.068000 303.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 249.616000 315.136000 253.420000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 255.220000 315.136000 262.312000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 262.324000 315.136000 266.152000 303.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 266.128000 315.136000 273.808000 303.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 273.832000 315.136000 281.056000 303.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 281.032000 315.136000 291.292000 303.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 289.936000 315.136000 293.740000 303.136000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 295.336000 315.136000 299.140000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 300.736000 315.136000 305.476000 303.136000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 307.036000 315.136000 310.840000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 312.532000 315.136000 320.212000 303.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 320.236000 315.136000 325.972000 303.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 326.032000 315.136000 333.124000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 333.136000 315.136000 337.576000 303.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 337.540000 315.136000 344.632000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 344.644000 315.136000 350.380000 303.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 351.940000 315.136000 355.744000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 357.436000 315.136000 362.248000 303.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 362.236000 315.136000 369.460000 303.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 371.032000 315.136000 374.836000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 376.528000 315.136000 386.788000 303.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 386.824000 315.136000 393.976000 303.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 393.928000 315.136000 398.740000 303.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 398.728000 315.136000 405.448000 303.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 405.532000 315.136000 413.260000 303.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 414.832000 315.136000 418.636000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 420.232000 315.136000 425.044000 303.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 425.032000 315.136000 432.760000 303.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 432.832000 315.136000 439.924000 303.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 441.532000 315.136000 445.336000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 447.028000 315.136000 454.708000 303.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 454.732000 315.136000 460.468000 303.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 460.432000 315.136000 467.656000 303.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 467.632000 315.136000 475.624000 303.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 475.636000 315.136000 481.792000 303.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 483.436000 315.136000 487.240000 303.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 488.836000 315.136000 496.060000 303.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 496.036000 315.136000 503.764000 303.136000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 315.136000 507.904000 303.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 301.236000 190.312000 289.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 301.236000 197.392000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 197.404000 301.236000 201.232000 289.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 201.304000 301.236000 208.396000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 208.408000 301.236000 215.176000 289.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 215.104000 301.236000 218.932000 289.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 219.004000 301.236000 225.160000 289.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 225.100000 301.236000 228.928000 289.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 229.000000 301.236000 236.224000 289.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 236.200000 301.236000 243.928000 289.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 243.904000 301.236000 247.708000 289.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.100000 301.236000 252.904000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 254.404000 301.236000 264.868000 289.236000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 264.904000 301.236000 272.128000 289.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 272.008000 301.236000 282.268000 289.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 282.304000 301.236000 289.396000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 289.408000 301.236000 296.176000 289.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 296.212000 301.236000 303.304000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 303.316000 301.236000 309.052000 289.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 307.720000 301.236000 311.524000 289.236000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 312.916000 301.236000 316.720000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 318.112000 301.236000 321.940000 289.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 321.916000 301.236000 326.356000 289.236000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 327.820000 301.236000 331.624000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 333.016000 301.236000 337.756000 289.236000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 339.220000 301.236000 343.024000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 344.416000 301.236000 348.244000 289.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 348.220000 301.236000 359.596000 289.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 359.620000 301.236000 367.300000 289.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 367.324000 301.236000 373.060000 289.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 373.024000 301.236000 380.248000 289.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 380.320000 301.236000 387.088000 289.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 387.016000 301.236000 394.108000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 395.512000 301.236000 399.316000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 400.816000 301.236000 407.908000 289.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 407.920000 301.236000 415.648000 289.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 415.624000 301.236000 422.848000 289.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 422.920000 301.236000 430.648000 289.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 430.516000 301.236000 438.196000 289.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 438.220000 301.236000 445.948000 289.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 447.316000 301.236000 451.120000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 452.620000 301.236000 457.432000 289.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 457.420000 301.236000 464.644000 289.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 466.024000 301.236000 469.828000 289.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 471.220000 301.236000 478.372000 289.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 478.420000 301.236000 485.188000 289.236000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 485.116000 301.236000 492.340000 289.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 492.412000 301.236000 496.240000 289.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 496.216000 301.236000 503.896000 289.236000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 301.236000 507.904000 289.236000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 287.336000 196.876000 275.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 196.900000 287.336000 204.052000 275.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 204.004000 287.336000 211.264000 275.336000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 211.300000 287.336000 215.128000 275.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 215.104000 287.336000 222.832000 275.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 222.904000 287.336000 230.584000 275.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 230.704000 287.336000 234.508000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 234.700000 287.336000 241.852000 275.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 241.900000 287.336000 249.628000 275.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 249.700000 287.336000 253.504000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 253.696000 287.336000 260.788000 275.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 260.800000 287.336000 272.176000 275.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 272.104000 287.336000 279.784000 275.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 279.808000 287.336000 286.960000 275.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 286.912000 287.336000 292.648000 275.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 292.708000 287.336000 298.444000 275.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 298.504000 287.336000 305.656000 275.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 305.704000 287.336000 311.860000 275.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 311.800000 287.336000 317.956000 275.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 318.004000 287.336000 329.380000 275.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 329.308000 287.336000 336.400000 275.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 336.508000 287.336000 344.236000 275.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 344.104000 287.336000 348.916000 275.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.108000 287.336000 352.912000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 353.104000 287.336000 360.328000 275.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 360.304000 287.336000 364.744000 275.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 364.804000 287.336000 368.608000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 368.908000 287.336000 380.284000 275.336000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 380.308000 287.336000 387.076000 275.336000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 387.004000 287.336000 393.160000 275.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 393.208000 287.336000 400.300000 275.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 400.312000 287.336000 404.140000 275.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 404.116000 287.336000 408.556000 275.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 408.220000 287.336000 412.024000 275.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 412.024000 287.336000 415.828000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 416.020000 287.336000 420.760000 275.336000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 420.916000 287.336000 424.720000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 424.912000 287.336000 435.172000 275.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 435.208000 287.336000 442.432000 275.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 442.408000 287.336000 450.136000 275.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 450.112000 287.336000 453.940000 275.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 454.012000 287.336000 461.692000 275.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 461.608000 287.336000 465.412000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 465.808000 287.336000 469.636000 275.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 469.612000 287.336000 473.440000 275.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 473.416000 287.336000 480.676000 275.336000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 480.712000 287.336000 487.804000 275.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 487.912000 287.336000 491.716000 275.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 491.908000 287.336000 496.720000 275.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 496.708000 287.336000 503.932000 275.336000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 287.336000 507.904000 275.336000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 273.436000 189.328000 261.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 189.304000 273.436000 197.032000 261.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 197.104000 273.436000 203.872000 261.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 203.800000 273.436000 207.628000 261.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 207.700000 273.436000 212.512000 261.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 212.500000 273.436000 219.592000 261.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 221.500000 273.436000 225.304000 261.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 227.200000 273.436000 238.576000 261.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 238.600000 273.436000 245.368000 261.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 247.300000 273.436000 251.104000 261.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 253.000000 273.436000 260.224000 261.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 260.200000 273.436000 265.012000 261.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 265.000000 273.436000 272.728000 261.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 272.800000 273.436000 279.892000 261.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 279.904000 273.436000 285.640000 261.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 287.500000 273.436000 291.304000 261.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 293.200000 273.436000 298.012000 261.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 298.000000 273.436000 305.092000 261.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 305.104000 273.436000 312.832000 261.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 312.904000 273.436000 320.632000 261.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 320.608000 273.436000 324.436000 261.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 324.412000 273.436000 330.568000 261.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 330.616000 273.436000 334.660000 261.436000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 334.612000 273.436000 342.292000 261.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 342.316000 273.436000 346.144000 261.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 346.216000 273.436000 353.368000 261.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 353.320000 273.436000 360.088000 261.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 360.124000 273.436000 363.952000 261.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 363.928000 273.436000 371.656000 261.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.728000 273.436000 379.408000 261.436000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 381.328000 273.436000 385.132000 261.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 387.028000 273.436000 391.468000 261.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 391.432000 273.436000 397.168000 261.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 397.132000 273.436000 400.960000 261.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 400.936000 273.436000 408.028000 261.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 408.040000 273.436000 415.768000 261.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 415.840000 273.436000 423.520000 261.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 423.436000 273.436000 429.592000 261.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 431.632000 273.436000 435.436000 261.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 437.332000 273.436000 444.556000 261.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 444.532000 273.436000 451.300000 261.436000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 451.336000 273.436000 458.428000 261.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 458.440000 273.436000 464.176000 261.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 466.036000 273.436000 469.840000 261.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 471.736000 273.436000 476.176000 261.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 476.140000 273.436000 483.364000 261.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 483.436000 273.436000 489.172000 261.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 491.032000 273.436000 494.836000 261.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 496.732000 273.436000 503.884000 261.436000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 273.436000 507.904000 261.436000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 259.536000 190.312000 247.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 190.300000 259.536000 197.524000 247.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 197.500000 259.536000 205.228000 247.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 205.204000 259.536000 210.940000 247.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 210.904000 259.536000 218.632000 247.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 218.608000 259.536000 225.760000 247.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 225.808000 259.536000 237.184000 247.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 237.208000 259.536000 244.300000 247.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 244.312000 259.536000 252.040000 247.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 252.016000 259.536000 256.828000 247.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 256.816000 259.536000 260.620000 247.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.620000 259.536000 264.424000 247.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 264.424000 259.536000 272.488000 247.536000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 272.524000 259.536000 276.352000 247.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 276.328000 259.536000 284.056000 247.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 284.032000 259.536000 290.188000 247.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 290.236000 259.536000 294.040000 247.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 294.040000 259.536000 297.844000 247.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 297.844000 259.536000 301.672000 247.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 301.648000 259.536000 306.460000 247.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 306.448000 259.536000 310.252000 247.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 310.252000 259.536000 320.512000 247.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 320.548000 259.536000 327.772000 247.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 327.748000 259.536000 335.476000 247.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 335.452000 259.536000 339.280000 247.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 339.256000 259.536000 346.936000 247.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 346.960000 259.536000 350.764000 247.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 350.764000 259.536000 358.444000 247.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 358.468000 259.536000 365.560000 247.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.572000 259.536000 369.376000 247.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 369.376000 259.536000 376.528000 247.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 376.576000 259.536000 380.380000 247.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 380.380000 259.536000 388.060000 247.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 388.084000 259.536000 393.820000 247.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 393.784000 259.536000 400.876000 247.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 400.888000 259.536000 408.040000 247.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 408.088000 259.536000 412.900000 247.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 412.888000 259.536000 416.692000 247.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 416.692000 259.536000 423.916000 247.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 423.892000 259.536000 431.572000 247.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 431.596000 259.536000 439.276000 247.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 439.300000 259.536000 446.524000 247.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 446.500000 259.536000 452.236000 247.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 452.200000 259.536000 457.012000 247.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 457.000000 259.536000 464.728000 247.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 464.704000 259.536000 472.432000 247.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 472.408000 259.536000 476.236000 247.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 476.212000 259.536000 481.024000 247.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 481.012000 259.536000 487.780000 247.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 487.816000 259.536000 491.620000 247.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 491.620000 259.536000 496.432000 247.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 496.420000 259.536000 503.644000 247.536000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 504.100000 259.536000 507.904000 247.536000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 185.500000 245.636000 191.656000 233.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 191.704000 245.636000 199.432000 233.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 199.408000 245.636000 206.632000 233.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 206.608000 245.636000 216.868000 233.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 216.904000 245.636000 220.708000 233.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 220.708000 245.636000 227.932000 233.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 227.908000 245.636000 236.428000 233.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 236.404000 245.636000 240.208000 233.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 240.208000 245.636000 245.020000 233.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 245.008000 245.636000 252.736000 233.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 252.712000 245.636000 259.804000 233.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 259.816000 245.636000 263.620000 233.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 263.620000 245.636000 271.348000 233.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 271.324000 245.636000 278.548000 233.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 278.524000 245.636000 286.252000 233.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 286.228000 245.636000 292.384000 233.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 292.432000 245.636000 299.524000 233.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 299.536000 245.636000 304.348000 233.636000 1.000000 0.000000 0.000000 1.000000 !
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 455.600000 86.136000 463.664000 74.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 463.100000 86.136000 470.252000 74.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 470.300000 86.136000 477.980000 74.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 478.004000 86.136000 485.096000 74.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 485.108000 86.136000 488.912000 74.136000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 488.900000 86.136000 496.532000 74.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 496.496000 86.136000 504.128000 74.136000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 13196.000000 0 477.900000 13196.000000 0 477.900000 13505.800000 0 134.300000 13505.800000 0 134.300000 13196.000000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -1240410.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 10207.000000 0 168.100000 10207.000000 0 168.100000 10212.000000 0 76.900000 10212.000000 0 76.900000 10207.000000 0
+eoFillPath subpath 1 163.100000 10211.900000 0 168.100000 10211.900000 0 168.100000 10342.500000 0 163.100000 10342.500000 0 163.100000 10211.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 10212.000000 0 163.100000 10212.000000 0 163.100000 10347.400000 0 72.000000 10347.400000 0 72.000000 10212.000000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 10343.080000 87.320000 10333.080000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 10343.080000 93.420000 10333.080000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 10343.080000 97.510000 10333.080000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 10343.080000 101.420000 10333.080000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 10343.080000 104.170000 10333.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 10343.080000 110.530000 10333.080000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 10343.080000 113.270000 10333.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 10343.080000 116.470000 10333.080000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 10343.080000 123.480000 10333.080000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 10343.080000 129.610000 10333.080000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 10343.080000 135.090000 10333.080000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 10343.080000 140.890000 10333.080000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 10343.080000 144.820000 10333.080000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 10343.080000 150.920000 10333.080000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 10343.080000 153.670000 10333.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 10343.080000 156.470000 10333.080000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 10216.200000 0 168.200000 10216.200000 0 168.200000 10331.400000 0 72.000000 10331.400000 0 72.000000 10216.200000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10284.352000 79.253000 10275.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 10284.352000 86.669000 10275.352000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 10284.352000 90.215000 10275.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 10284.352000 93.077000 10275.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 10284.352000 97.406000 10275.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 10284.352000 100.853000 10275.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 10284.352000 107.324000 10275.352000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 10284.352000 112.337000 10275.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 10284.352000 115.271000 10275.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 10284.352000 118.655000 10275.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 10284.352000 126.512000 10275.352000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 10284.352000 130.805000 10275.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 10284.352000 135.881000 10275.352000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 10284.352000 139.355000 10275.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 10284.352000 147.284000 10275.352000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 10284.352000 150.074000 10275.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 10284.352000 155.897000 10275.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 10284.352000 158.750000 10275.352000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 10284.352000 161.853000 10275.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10273.852000 82.124000 10264.852000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 10273.852000 87.137000 10264.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 10273.852000 90.071000 10264.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 10273.852000 93.356000 10264.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 10273.852000 100.403000 10264.852000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 10273.852000 104.921000 10264.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 10273.852000 109.205000 10264.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 10273.852000 117.737000 10264.852000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 10273.852000 123.119000 10264.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 10273.852000 128.996000 10264.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 10273.852000 132.605000 10264.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 10273.852000 138.392000 10264.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 10273.852000 141.749000 10264.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 10273.852000 149.507000 10264.852000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 10273.852000 153.800000 10264.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 10273.852000 158.876000 10264.852000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 10273.852000 161.853000 10264.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10263.352000 81.764000 10254.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 10263.352000 87.596000 10254.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 10263.352000 93.356000 10254.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 10263.352000 102.050000 10254.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 10263.352000 113.822000 10254.352000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 10263.352000 122.651000 10254.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 10263.352000 134.117000 10254.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 10263.352000 138.401000 10254.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 10263.352000 147.149000 10254.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 10263.352000 158.921000 10254.352000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 10263.352000 161.853000 10254.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10252.852000 79.271000 10243.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 10252.852000 84.338000 10243.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 10252.852000 89.621000 10243.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 10252.852000 94.643000 10243.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 10252.852000 100.502000 10243.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 10252.852000 106.262000 10243.852000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 10252.852000 111.518000 10243.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 10252.852000 116.216000 10243.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 10252.852000 119.249000 10243.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 10252.852000 122.363000 10243.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 10252.852000 128.186000 10243.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 10252.852000 131.345000 10243.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 10252.852000 137.060000 10243.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 10252.852000 140.147000 10243.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 10252.852000 145.007000 10243.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 10252.852000 148.598000 10243.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 10252.852000 151.460000 10243.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 10252.852000 155.789000 10243.852000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 10252.852000 158.933000 10243.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10242.352000 80.702000 10233.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 10242.352000 83.573000 10233.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 10242.352000 89.396000 10233.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 10242.352000 95.156000 10233.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 10242.352000 100.547000 10233.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 10242.352000 109.052000 10233.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 10242.352000 111.959000 10233.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 10242.352000 117.251000 10233.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 10242.352000 121.904000 10233.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 10242.352000 126.503000 10233.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 10242.352000 129.338000 10233.352000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 10242.352000 134.936000 10233.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 10242.352000 143.441000 10233.352000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 10242.352000 148.796000 10233.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 10242.352000 154.574000 10233.352000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 10242.352000 158.876000 10233.352000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 10242.352000 161.853000 10233.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10231.852000 79.271000 10222.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 10231.852000 85.094000 10222.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 10231.852000 88.703000 10222.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 10231.852000 94.112000 10222.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 10231.852000 97.244000 10222.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 10231.852000 103.058000 10222.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 10231.852000 108.890000 10222.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 10231.852000 111.950000 10222.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 10231.852000 115.271000 10222.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 10231.852000 120.338000 10222.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 10231.852000 125.621000 10222.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 10231.852000 131.363000 10222.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 10231.852000 134.558000 10222.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 10231.852000 140.048000 10222.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 10231.852000 145.430000 10222.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 10231.852000 150.551000 10222.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 10231.852000 155.960000 10222.852000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 10231.852000 158.933000 10222.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10221.352000 80.009000 10212.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 10221.352000 85.364000 10212.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 10221.352000 88.271000 10212.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 10221.352000 91.169000 10212.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 10221.352000 97.955000 10212.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 10221.352000 107.765000 10212.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 10221.352000 110.672000 10212.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 10221.352000 115.964000 10212.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 10221.352000 120.617000 10212.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 10221.352000 125.216000 10212.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 10221.352000 128.051000 10212.352000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 10221.352000 134.954000 10212.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 10221.352000 146.285000 10212.352000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 10221.352000 151.667000 10212.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 10221.352000 155.906000 10212.352000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 10221.352000 159.033000 10212.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 10211.900000 0 72.100000 10211.900000 0 72.100000 10347.400000 0 72.000000 10347.400000 0 72.000000 10211.900000 0
+eoFillPath subpath 1 163.100000 10211.900000 0 163.200000 10211.900000 0 163.200000 10347.400000 0 163.100000 10347.400000 0 163.100000 10211.900000 0
+eoFillPath subpath 1 72.000000 10347.300000 0 163.200000 10347.300000 0 163.200000 10347.400000 0 72.000000 10347.400000 0 72.000000 10347.300000 0
+eoFillPath subpath 1 72.000000 10211.900000 0 163.200000 10211.900000 0 163.200000 10212.000000 0 72.000000 10212.000000 0 72.000000 10211.900000 0
+saveState
+eoClipPath subpath 1 96.900000 10287.200000 0 138.300000 10287.200000 0 138.300000 10331.400000 0 96.900000 10331.400000 0 96.900000 10287.200000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -949530.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 9932.400000 0 165.500000 9932.400000 0 165.500000 9937.400000 0 76.900000 9937.400000 0 76.900000 9932.400000 0
+eoFillPath subpath 1 160.500000 9937.300000 0 165.500000 9937.300000 0 165.500000 10093.600000 0 160.500000 10093.600000 0 160.500000 9937.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 9937.400000 0 121.400000 9937.400000 0 121.400000 10098.500000 0 72.000000 10098.500000 0 72.000000 9937.400000 0
+saveState
+eoClipPath subpath 1 72.000000 9937.300000 0 160.500000 9937.300000 0 160.500000 10098.400000 0 72.000000 10098.400000 0 72.000000 9937.300000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -912830.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 10094.180000 89.280000 10084.180000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 10094.180000 95.630000 10084.180000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 10094.180000 99.520000 10084.180000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 10094.180000 102.270000 10084.180000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 10094.180000 108.450000 10084.180000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 10094.180000 112.610000 10084.180000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 10094.180000 118.510000 10084.180000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 10094.180000 121.670000 10084.180000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 10094.180000 124.470000 10084.180000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 10094.180000 130.830000 10084.180000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 10094.180000 133.970000 10084.180000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 10094.180000 137.920000 10084.180000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 10094.180000 144.230000 10084.180000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 10094.180000 150.350000 10084.180000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 10094.180000 153.570000 10084.180000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 10082.480000 95.000000 10072.480000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 10082.480000 97.770000 10072.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 10082.480000 103.000000 10072.480000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 10082.480000 109.330000 10072.480000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 10082.480000 117.470000 10072.480000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 10082.480000 123.620000 10072.480000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 10082.480000 128.800000 10072.480000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 10082.480000 135.130000 10072.480000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 10082.480000 141.250000 10072.480000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 10082.480000 145.410000 10072.480000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10067.652000 82.961000 10058.652000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 10067.652000 87.614000 10058.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 10067.652000 93.356000 10058.652000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 10067.652000 98.612000 10058.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 10067.652000 103.733000 10058.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 10067.652000 106.568000 10058.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 10067.652000 111.959000 10058.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 10067.652000 114.866000 10058.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 10067.652000 117.665000 10058.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 10067.652000 122.768000 10058.652000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 10067.652000 125.747000 10058.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 10067.652000 131.651000 10058.652000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 10067.652000 136.907000 10058.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 10067.652000 142.307000 10058.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 10067.652000 148.049000 10058.652000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 10067.652000 150.956000 10058.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 10067.652000 156.302000 10058.652000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10067.652000 159.253000 10058.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10057.152000 84.095000 10048.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 10057.152000 89.900000 10048.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 10057.152000 95.318000 10048.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 10057.152000 100.349000 10048.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 10057.152000 110.789000 10048.152000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 10057.152000 111.464000 10048.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 10057.152000 114.362000 10048.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 10057.152000 119.348000 10048.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 10057.152000 126.962000 10048.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 10057.152000 132.047000 10048.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 10057.152000 139.958000 10048.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 10057.152000 142.865000 10048.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 10057.152000 147.410000 10048.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 10057.152000 153.287000 10048.152000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 10057.152000 156.333000 10048.152000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10046.652000 84.095000 10037.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 10046.652000 89.468000 10037.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 10046.652000 94.121000 10037.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 10046.652000 99.899000 10037.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 10046.652000 105.218000 10037.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 10046.652000 109.502000 10037.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 10046.652000 115.649000 10037.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 10046.652000 122.327000 10037.652000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 10046.652000 127.718000 10037.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 10046.652000 132.002000 10037.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 10046.652000 138.149000 10037.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 10046.652000 145.205000 10037.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 10046.652000 150.992000 10037.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 10046.652000 156.311000 10037.652000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10046.652000 159.253000 10037.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10036.152000 82.394000 10027.152000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 10036.152000 86.705000 10027.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 10036.152000 91.322000 10027.152000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 10036.152000 94.913000 10027.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 10036.152000 98.054000 10027.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 10036.152000 102.014000 10027.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 10036.152000 104.876000 10027.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 10036.152000 113.435000 10027.152000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 10036.152000 118.718000 10027.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 10036.152000 121.949000 10027.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 10036.152000 125.063000 10027.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 10036.152000 130.886000 10027.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 10036.152000 134.045000 10027.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 10036.152000 138.005000 10027.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 10036.152000 143.792000 10027.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 10036.152000 149.111000 10027.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 10036.152000 151.964000 10027.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 10036.152000 156.293000 10027.152000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 10036.152000 159.153000 10027.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10025.652000 79.271000 10016.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 10025.652000 82.169000 10016.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 10025.652000 85.526000 10016.652000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 10025.652000 90.818000 10016.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 10025.652000 94.454000 10016.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 10025.652000 99.008000 10016.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 10025.652000 104.318000 10016.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 10025.652000 110.096000 10016.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 10025.652000 115.856000 10016.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 10025.652000 119.546000 10016.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 10025.652000 124.001000 10016.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 10025.652000 129.509000 10016.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 10025.652000 133.145000 10016.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 10025.652000 139.751000 10016.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 10025.652000 145.205000 10016.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 10025.652000 148.841000 10016.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 10025.652000 152.657000 10016.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 10025.652000 156.293000 10016.652000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10025.652000 159.253000 10016.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10015.152000 84.095000 10006.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 10015.152000 88.406000 10006.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 10015.152000 93.824000 10006.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 10015.152000 99.602000 10006.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 10015.152000 105.362000 10006.152000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 10015.152000 108.422000 10006.152000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 10015.152000 116.747000 10006.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 10015.152000 129.275000 10006.152000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 10015.152000 135.089000 10006.152000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 10015.152000 138.698000 10006.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 10015.152000 141.560000 10006.152000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 10015.152000 146.906000 10006.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 10015.152000 151.190000 10006.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 10015.152000 156.266000 10006.152000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10015.152000 159.253000 10006.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10004.652000 82.196000 9995.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 10004.652000 87.560000 9995.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 10004.652000 92.213000 9995.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 10004.652000 96.551000 9995.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 10004.652000 101.708000 9995.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 10004.652000 107.216000 9995.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 10004.652000 111.653000 9995.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 10004.652000 118.961000 9995.652000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 10004.652000 124.316000 9995.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 10004.652000 128.654000 9995.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 10004.652000 133.172000 9995.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 10004.652000 138.995000 9995.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 10004.652000 143.612000 9995.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 10004.652000 148.913000 9995.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 10004.652000 153.197000 9995.652000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 10004.652000 156.333000 9995.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9994.152000 80.009000 9985.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 9994.152000 85.319000 9985.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 9994.152000 91.061000 9985.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 9994.152000 100.052000 9985.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 9994.152000 113.993000 9985.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 9994.152000 116.873000 9985.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 9994.152000 120.410000 9985.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 9994.152000 126.296000 9985.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 9994.152000 135.350000 9985.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 9994.152000 145.106000 9985.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 9994.152000 150.893000 9985.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 9994.152000 156.212000 9985.152000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 9994.152000 159.253000 9985.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9983.652000 82.196000 9974.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 9983.652000 87.560000 9974.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 9983.652000 93.392000 9974.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 9983.652000 99.152000 9974.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 9983.652000 101.960000 9974.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 9983.652000 107.306000 9974.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 9983.652000 111.905000 9974.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 9983.652000 115.640000 9974.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 9983.652000 122.444000 9974.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 9983.652000 127.898000 9974.652000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 9983.652000 135.575000 9974.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 9983.652000 141.380000 9974.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 9983.652000 145.241000 9974.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 9983.652000 150.803000 9974.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 9983.652000 156.302000 9974.652000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 9983.652000 159.253000 9974.652000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9973.152000 80.009000 9964.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 9973.152000 85.796000 9964.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 9973.152000 91.115000 9964.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 9973.152000 95.399000 9964.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 9973.152000 100.718000 9964.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 9973.152000 107.054000 9964.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 9973.152000 118.097000 9964.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 9973.152000 123.524000 9964.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 9973.152000 129.401000 9964.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 9973.152000 131.768000 9964.152000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 9973.152000 135.413000 9964.152000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 9973.152000 141.659000 9964.152000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 9973.152000 150.965000 9964.152000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 9973.152000 156.320000 9964.152000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 9973.152000 159.253000 9964.152000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9962.652000 81.017000 9953.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 9962.652000 84.608000 9953.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 9962.652000 89.963000 9953.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 9962.652000 92.870000 9953.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 9962.652000 98.693000 9953.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 9962.652000 103.310000 9953.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 9962.652000 107.243000 9953.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 9962.652000 116.081000 9953.652000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 9962.652000 121.886000 9953.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 9962.652000 127.205000 9953.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 9962.652000 132.983000 9953.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 9962.652000 136.943000 9953.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 9962.652000 143.846000 9953.652000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 9962.652000 148.184000 9953.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 9962.652000 153.260000 9953.652000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 9962.652000 156.433000 9953.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 9952.152000 79.271000 9943.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 9952.152000 85.094000 9943.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 9952.152000 90.854000 9943.152000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 9952.152000 93.653000 9943.152000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 9937.300000 0 72.100000 9937.300000 0 72.100000 10098.500000 0 72.000000 10098.500000 0 72.000000 9937.300000 0
+eoFillPath subpath 1 160.500000 9937.300000 0 160.600000 9937.300000 0 160.600000 10098.500000 0 160.500000 10098.500000 0 160.500000 9937.300000 0
+eoFillPath subpath 1 72.000000 10098.400000 0 160.600000 10098.400000 0 160.600000 10098.500000 0 72.000000 10098.500000 0 72.000000 10098.400000 0
+eoFillPath subpath 1 72.000000 9937.300000 0 160.600000 9937.300000 0 160.600000 9937.400000 0 72.000000 9937.400000 0 72.000000 9937.300000 0
+saveState
+eoClipPath subpath 1 108.000000 9449.900000 0 178.900000 9449.900000 0 178.900000 9506.600000 0 108.000000 9506.600000 0 108.000000 9449.900000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -865800.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 5391.600000 0 165.500000 5391.600000 0 165.500000 5396.600000 0 76.900000 5396.600000 0 76.900000 5391.600000 0
+eoFillPath subpath 1 160.500000 5396.500000 0 165.500000 5396.500000 0 165.500000 5505.300000 0 160.500000 5505.300000 0 160.500000 5396.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 5396.600000 0 160.500000 5396.600000 0 160.500000 5510.200000 0 72.000000 5510.200000 0 72.000000 5396.600000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5505.852000 83.771000 5496.852000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 5505.852000 89.594000 5496.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 5505.852000 92.465000 5496.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 5505.852000 97.568000 5496.852000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 5505.852000 100.943000 5496.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 5505.852000 106.955000 5496.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 5505.852000 110.447000 5496.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 5505.852000 114.425000 5496.852000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 5505.852000 119.717000 5496.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 5505.852000 127.493000 5496.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 5505.852000 130.949000 5496.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 5505.852000 136.574000 5496.852000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 5505.852000 141.920000 5496.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 5505.852000 147.365000 5496.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 5505.852000 151.703000 5496.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 5505.852000 156.320000 5496.852000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 5505.852000 159.153000 5496.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5495.352000 81.764000 5486.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 5495.352000 85.130000 5486.352000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 5495.352000 88.712000 5486.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 5495.352000 94.022000 5486.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 5495.352000 98.306000 5486.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 5495.352000 102.455000 5486.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 5495.352000 106.676000 5486.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 5495.352000 110.312000 5486.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 5495.352000 114.920000 5486.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 5495.352000 119.060000 5486.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 5495.352000 125.450000 5486.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 5495.352000 130.832000 5486.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 5495.352000 139.445000 5486.352000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 5495.352000 145.169000 5486.352000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 5495.352000 148.076000 5486.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 5495.352000 153.323000 5486.352000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 5495.352000 156.433000 5486.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5484.852000 80.009000 5475.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 5484.852000 82.871000 5475.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 5484.852000 88.316000 5475.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 5484.852000 94.094000 5475.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 5484.852000 96.947000 5475.852000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 5484.852000 104.948000 5475.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 5484.852000 113.705000 5475.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 5484.852000 119.492000 5475.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 5484.852000 124.811000 5475.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 5484.852000 132.848000 5475.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 5484.852000 141.605000 5475.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 5484.852000 144.467000 5475.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 5484.852000 148.103000 5475.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 5484.852000 150.965000 5475.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 5484.852000 156.311000 5475.852000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5484.852000 159.253000 5475.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5474.352000 80.999000 5465.352000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 5474.352000 90.539000 5465.352000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 5474.352000 95.318000 5465.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 5474.352000 99.602000 5465.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 5474.352000 102.473000 5465.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 5474.352000 108.260000 5465.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 5474.352000 110.762000 5465.352000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 5474.352000 115.316000 5465.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 5474.352000 122.156000 5465.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 5474.352000 132.299000 5465.352000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 5474.352000 136.970000 5465.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 5474.352000 139.877000 5465.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 5474.352000 142.775000 5465.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 5474.352000 148.022000 5465.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 5474.352000 152.720000 5465.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 5474.352000 156.311000 5465.352000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5474.352000 159.253000 5465.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5463.852000 83.006000 5454.852000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 5463.852000 88.793000 5454.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 5463.852000 91.664000 5454.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 5463.852000 94.562000 5454.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 5463.852000 100.349000 5454.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 5463.852000 103.157000 5454.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 5463.852000 108.980000 5454.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 5463.852000 114.740000 5454.852000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 5463.852000 119.375000 5454.852000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 5463.852000 128.033000 5454.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 5463.852000 141.479000 5454.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 5463.852000 146.807000 5454.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 5463.852000 152.684000 5454.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 5463.852000 156.293000 5454.852000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5463.852000 159.253000 5454.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5453.352000 79.730000 5444.352000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 5453.352000 84.005000 5444.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 5453.352000 89.423000 5444.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 5453.352000 98.036000 5444.352000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 5453.352000 121.157000 5444.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 5453.352000 145.115000 5444.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 5453.352000 151.001000 5444.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 5453.352000 156.320000 5444.352000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 5453.352000 159.253000 5444.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5442.852000 83.285000 5433.852000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 5442.852000 89.099000 5433.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 5442.852000 93.401000 5433.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 5442.852000 98.477000 5433.852000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 5442.852000 103.121000 5433.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 5442.852000 105.974000 5433.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 5442.852000 111.320000 5433.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 5442.852000 115.604000 5433.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 5442.852000 123.857000 5433.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 5442.852000 136.007000 5433.852000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 5442.852000 141.794000 5433.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 5442.852000 144.665000 5433.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 5442.852000 147.464000 5433.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 5442.852000 153.251000 5433.852000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 5442.852000 156.433000 5433.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5432.352000 79.271000 5423.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 5432.352000 85.094000 5423.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 5432.352000 90.854000 5423.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 5432.352000 96.146000 5423.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 5432.352000 102.302000 5423.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 5432.352000 107.711000 5423.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 5432.352000 113.048000 5423.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 5432.352000 119.204000 5423.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 5432.352000 124.991000 5423.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 5432.352000 130.310000 5423.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 5432.352000 135.647000 5423.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 5432.352000 144.755000 5423.352000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 5432.352000 153.323000 5423.352000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 5432.352000 156.333000 5423.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5421.852000 82.160000 5412.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 5421.852000 85.067000 5412.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 5421.852000 89.297000 5412.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 5421.852000 94.616000 5412.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 5421.852000 98.747000 5412.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 5421.852000 106.055000 5412.852000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 5421.852000 109.700000 5412.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 5421.852000 115.055000 5412.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 5421.852000 118.601000 5412.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 5421.852000 124.010000 5412.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 5421.852000 128.042000 5412.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 5421.852000 135.998000 5412.852000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 5421.852000 141.785000 5412.852000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 5421.852000 144.656000 5412.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 5421.852000 147.554000 5412.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 5421.852000 153.341000 5412.852000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 5421.852000 156.433000 5412.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 5411.352000 79.271000 5402.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 5411.352000 85.094000 5402.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 5411.352000 90.854000 5402.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 5411.352000 93.743000 5402.352000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 5396.500000 0 72.100000 5396.500000 0 72.100000 5510.200000 0 72.000000 5510.200000 0 72.000000 5396.500000 0
+eoFillPath subpath 1 160.500000 5396.500000 0 160.600000 5396.500000 0 160.600000 5510.200000 0 160.500000 5510.200000 0 160.500000 5396.500000 0
+eoFillPath subpath 1 72.000000 5510.100000 0 160.600000 5510.100000 0 160.600000 5510.200000 0 72.000000 5510.200000 0 72.000000 5510.100000 0
+eoFillPath subpath 1 72.000000 5396.500000 0 160.600000 5396.500000 0 160.600000 5396.600000 0 72.000000 5396.600000 0 72.000000 5396.500000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 11586.000000 0 169.600000 11586.000000 0 169.600000 11591.000000 0 76.900000 11591.000000 0 76.900000 11586.000000 0
+eoFillPath subpath 1 164.600000 11590.900000 0 169.600000 11590.900000 0 169.600000 11706.500000 0 164.600000 11706.500000 0 164.600000 11590.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 11591.000000 0 121.400000 11591.000000 0 121.400000 11711.400000 0 72.000000 11711.400000 0 72.000000 11591.000000 0
+saveState
+eoClipPath subpath 1 72.000000 11590.900000 0 164.600000 11590.900000 0 164.600000 11711.300000 0 72.000000 11711.300000 0 72.000000 11590.900000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -1074070.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 11660.900000 0 93.700000 11660.900000 0 93.700000 11680.100000 0 72.000000 11680.100000 0 72.000000 11660.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 11660.900000 0 169.600000 11660.900000 0 169.600000 11680.100000 0 93.700000 11680.100000 0 93.700000 11660.900000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 11644.200000 0 93.700000 11644.200000 0 93.700000 11660.900000 0 72.000000 11660.900000 0 72.000000 11644.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 11644.200000 0 169.600000 11644.200000 0 169.600000 11660.900000 0 93.700000 11660.900000 0 93.700000 11644.200000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 11625.000000 0 93.700000 11625.000000 0 93.700000 11644.200000 0 72.000000 11644.200000 0 72.000000 11625.000000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 11625.000000 0 169.600000 11625.000000 0 169.600000 11644.200000 0 93.700000 11644.200000 0 93.700000 11625.000000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 11605.800000 0 93.700000 11605.800000 0 93.700000 11625.000000 0 72.000000 11625.000000 0 72.000000 11605.800000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 11605.800000 0 169.600000 11605.800000 0 169.600000 11625.000000 0 93.700000 11625.000000 0 93.700000 11605.800000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11707.052000 82.898000 11698.052000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 11707.052000 87.200000 11698.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 11707.052000 90.809000 11698.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 11707.052000 93.671000 11698.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 11707.052000 98.315000 11698.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 11707.052000 101.906000 11698.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 11707.052000 106.514000 11698.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 11707.052000 109.754000 11698.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 11707.052000 112.868000 11698.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 11707.052000 118.691000 11698.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 11707.052000 121.850000 11698.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 11707.052000 125.702000 11698.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 11707.052000 131.588000 11698.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 11707.052000 136.907000 11698.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 11707.052000 140.039000 11698.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 11707.052000 146.078000 11698.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 11707.052000 151.442000 11698.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 11707.052000 154.349000 11698.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 11707.052000 157.148000 11698.052000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 11707.052000 160.433000 11698.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11696.552000 84.095000 11687.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 11696.552000 89.468000 11687.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 11696.552000 94.580000 11687.552000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 11696.552000 97.631000 11687.552000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 11676.152000 104.443000 11667.152000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 11676.152000 109.060000 11667.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 11676.152000 113.398000 11667.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 11676.152000 119.194000 11667.152000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 11676.152000 124.612000 11667.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 11676.152000 127.465000 11667.152000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 11659.452000 101.176000 11650.452000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 11659.452000 104.074000 11650.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 11659.452000 109.420000 11650.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 11659.452000 114.442000 11650.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 11659.452000 120.202000 11650.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 11659.452000 123.811000 11650.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 11659.452000 129.121000 11650.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 11659.452000 134.899000 11650.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 11659.452000 139.516000 11650.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 11659.452000 143.107000 11650.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 11659.452000 148.417000 11650.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 11659.452000 151.270000 11650.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 11659.452000 157.093000 11650.452000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 11642.752000 103.048000 11633.752000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 11642.752000 108.421000 11633.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 11642.752000 113.443000 11633.752000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 11642.752000 118.852000 11633.752000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 11642.752000 124.702000 11633.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 11642.752000 130.021000 11633.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 11642.752000 135.079000 11633.752000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 11623.552000 104.407000 11614.552000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 11623.552000 109.816000 11614.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 11623.552000 115.594000 11614.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 11623.552000 121.354000 11614.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 11623.552000 125.692000 11614.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 11623.552000 128.563000 11614.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 11623.552000 133.954000 11614.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 11623.552000 139.786000 11614.552000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 11590.900000 0 72.100000 11590.900000 0 72.100000 11711.400000 0 72.000000 11711.400000 0 72.000000 11590.900000 0
+eoFillPath subpath 1 164.600000 11590.900000 0 164.700000 11590.900000 0 164.700000 11711.400000 0 164.600000 11711.400000 0 164.600000 11590.900000 0
+eoFillPath subpath 1 72.000000 11711.300000 0 164.700000 11711.300000 0 164.700000 11711.400000 0 72.000000 11711.400000 0 72.000000 11711.300000 0
+eoFillPath subpath 1 72.000000 11590.900000 0 164.700000 11590.900000 0 164.700000 11591.000000 0 72.000000 11591.000000 0 72.000000 11590.900000 0
+eoFillPath subpath 1 91.300000 11605.800000 0 93.700000 11605.800000 0 93.700000 11680.100000 0 91.300000 11680.100000 0 91.300000 11605.800000 0
+eoFillPath subpath 1 72.000000 11625.000000 0 169.600000 11625.000000 0 169.600000 11627.400000 0 72.000000 11627.400000 0 72.000000 11625.000000 0
+eoFillPath subpath 1 72.000000 11677.700000 0 169.600000 11677.700000 0 169.600000 11680.100000 0 72.000000 11680.100000 0 72.000000 11677.700000 0
+eoFillPath subpath 1 72.000000 11605.800000 0 169.600000 11605.800000 0 169.600000 11608.200000 0 72.000000 11608.200000 0 72.000000 11605.800000 0
+saveState
+eoClipPath subpath 1 108.000000 3739.800000 0 150.800000 3739.800000 0 150.800000 3784.100000 0 108.000000 3784.100000 0 108.000000 3739.800000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 -294790.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 2889.900000 0 499.600000 2889.900000 0 499.600000 2895.000000 0 186.800000 2895.000000 0 186.800000 2889.900000 0
+eoFillPath subpath 1 494.500000 2894.900000 0 499.600000 2894.900000 0 499.600000 3083.300000 0 494.500000 3083.300000 0 494.500000 2894.900000 0
+saveState
+eoClipPath subpath 1 181.800000 2894.900000 0 494.500000 2894.900000 0 494.500000 3088.200000 0 181.800000 3088.200000 0 181.800000 2894.900000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 3088.300000 0 494.500000 3088.300000 0 494.500000 3088.300000 0 181.700000 3088.300000 0
+eoFillPath subpath 1 181.700000 3088.300000 0 494.500000 3088.300000 0 494.500000 3087.500000 0 181.700000 3087.500000 0 181.700000 3088.300000 0
+eoFillPath subpath 1 181.700000 3087.500000 0 494.500000 3087.500000 0 494.500000 3086.800000 0 181.700000 3086.800000 0 181.700000 3087.500000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 3086.800000 0 494.500000 3086.800000 0 494.500000 3086.000000 0 181.700000 3086.000000 0 181.700000 3086.800000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 3086.000000 0 494.500000 3086.000000 0 494.500000 3085.200000 0 181.700000 3085.200000 0 181.700000 3086.000000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 3085.200000 0 494.500000 3085.200000 0 494.500000 3084.500000 0 181.700000 3084.500000 0 181.700000 3085.200000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 3084.500000 0 494.500000 3084.500000 0 494.500000 3083.700000 0 181.700000 3083.700000 0 181.700000 3084.500000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 3083.700000 0 494.500000 3083.700000 0 494.500000 3083.000000 0 181.700000 3083.000000 0 181.700000 3083.700000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 3083.000000 0 494.500000 3083.000000 0 494.500000 3082.200000 0 181.700000 3082.200000 0 181.700000 3083.000000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 3082.200000 0 494.500000 3082.200000 0 494.500000 3081.500000 0 181.700000 3081.500000 0 181.700000 3082.200000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 3081.500000 0 494.500000 3081.500000 0 494.500000 3080.700000 0 181.700000 3080.700000 0 181.700000 3081.500000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 3080.700000 0 494.500000 3080.700000 0 494.500000 3079.900000 0 181.700000 3079.900000 0 181.700000 3080.700000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 3079.900000 0 494.500000 3079.900000 0 494.500000 3079.200000 0 181.700000 3079.200000 0 181.700000 3079.900000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 3079.200000 0 494.500000 3079.200000 0 494.500000 3078.400000 0 181.700000 3078.400000 0 181.700000 3079.200000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 3078.400000 0 494.500000 3078.400000 0 494.500000 3077.700000 0 181.700000 3077.700000 0 181.700000 3078.400000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 3077.700000 0 494.500000 3077.700000 0 494.500000 3076.900000 0 181.700000 3076.900000 0 181.700000 3077.700000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 3076.900000 0 494.500000 3076.900000 0 494.500000 3076.100000 0 181.700000 3076.100000 0 181.700000 3076.900000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 3076.100000 0 494.500000 3076.100000 0 494.500000 3075.400000 0 181.700000 3075.400000 0 181.700000 3076.100000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 3075.400000 0 494.500000 3075.400000 0 494.500000 3074.600000 0 181.700000 3074.600000 0 181.700000 3075.400000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 3074.600000 0 494.500000 3074.600000 0 494.500000 3073.900000 0 181.700000 3073.900000 0 181.700000 3074.600000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 3073.900000 0 494.500000 3073.900000 0 494.500000 3073.100000 0 181.700000 3073.100000 0 181.700000 3073.900000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 3073.100000 0 494.500000 3073.100000 0 494.500000 3072.300000 0 181.700000 3072.300000 0 181.700000 3073.100000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 3072.300000 0 494.500000 3072.300000 0 494.500000 3071.600000 0 181.700000 3071.600000 0 181.700000 3072.300000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 3071.600000 0 494.500000 3071.600000 0 494.500000 3070.800000 0 181.700000 3070.800000 0 181.700000 3071.600000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 3070.800000 0 494.500000 3070.800000 0 494.500000 3070.100000 0 181.700000 3070.100000 0 181.700000 3070.800000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 3070.100000 0 494.500000 3070.100000 0 494.500000 3069.300000 0 181.700000 3069.300000 0 181.700000 3070.100000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 3069.300000 0 494.500000 3069.300000 0 494.500000 3068.600000 0 181.700000 3068.600000 0 181.700000 3069.300000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 3068.600000 0 494.500000 3068.600000 0 494.500000 3067.800000 0 181.700000 3067.800000 0 181.700000 3068.600000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 3067.800000 0 494.500000 3067.800000 0 494.500000 3067.000000 0 181.700000 3067.000000 0 181.700000 3067.800000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 3067.000000 0 494.500000 3067.000000 0 494.500000 3066.300000 0 181.700000 3066.300000 0 181.700000 3067.000000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 3066.300000 0 494.500000 3066.300000 0 494.500000 3065.500000 0 181.700000 3065.500000 0 181.700000 3066.300000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 3065.500000 0 494.500000 3065.500000 0 494.500000 3064.800000 0 181.700000 3064.800000 0 181.700000 3065.500000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 3064.800000 0 494.500000 3064.800000 0 494.500000 3064.000000 0 181.700000 3064.000000 0 181.700000 3064.800000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 3064.000000 0 494.500000 3064.000000 0 494.500000 3063.200000 0 181.700000 3063.200000 0 181.700000 3064.000000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 3063.200000 0 494.500000 3063.200000 0 494.500000 3062.500000 0 181.700000 3062.500000 0 181.700000 3063.200000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 3062.500000 0 494.500000 3062.500000 0 494.500000 3061.700000 0 181.700000 3061.700000 0 181.700000 3062.500000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 3061.700000 0 494.500000 3061.700000 0 494.500000 3061.000000 0 181.700000 3061.000000 0 181.700000 3061.700000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 3061.000000 0 494.500000 3061.000000 0 494.500000 3060.200000 0 181.700000 3060.200000 0 181.700000 3061.000000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 3060.200000 0 494.500000 3060.200000 0 494.500000 3059.400000 0 181.700000 3059.400000 0 181.700000 3060.200000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 3059.400000 0 494.500000 3059.400000 0 494.500000 3058.700000 0 181.700000 3058.700000 0 181.700000 3059.400000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 3058.700000 0 494.500000 3058.700000 0 494.500000 3057.900000 0 181.700000 3057.900000 0 181.700000 3058.700000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 3057.900000 0 494.500000 3057.900000 0 494.500000 3057.200000 0 181.700000 3057.200000 0 181.700000 3057.900000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 3057.200000 0 494.500000 3057.200000 0 494.500000 3056.400000 0 181.700000 3056.400000 0 181.700000 3057.200000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 3056.400000 0 494.500000 3056.400000 0 494.500000 3055.700000 0 181.700000 3055.700000 0 181.700000 3056.400000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 3055.700000 0 494.500000 3055.700000 0 494.500000 3054.900000 0 181.700000 3054.900000 0 181.700000 3055.700000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 3054.900000 0 494.500000 3054.900000 0 494.500000 3054.100000 0 181.700000 3054.100000 0 181.700000 3054.900000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 3054.100000 0 494.500000 3054.100000 0 494.500000 3053.400000 0 181.700000 3053.400000 0 181.700000 3054.100000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 3053.400000 0 494.500000 3053.400000 0 494.500000 3052.600000 0 181.700000 3052.600000 0 181.700000 3053.400000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 3052.600000 0 494.500000 3052.600000 0 494.500000 3051.900000 0 181.700000 3051.900000 0 181.700000 3052.600000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 3051.900000 0 494.500000 3051.900000 0 494.500000 3051.100000 0 181.700000 3051.100000 0 181.700000 3051.900000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 3051.100000 0 494.500000 3051.100000 0 494.500000 3050.300000 0 181.700000 3050.300000 0 181.700000 3051.100000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 3050.300000 0 494.500000 3050.300000 0 494.500000 3049.600000 0 181.700000 3049.600000 0 181.700000 3050.300000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 3049.600000 0 494.500000 3049.600000 0 494.500000 3048.800000 0 181.700000 3048.800000 0 181.700000 3049.600000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 3048.800000 0 494.500000 3048.800000 0 494.500000 3048.100000 0 181.700000 3048.100000 0 181.700000 3048.800000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 3048.100000 0 494.500000 3048.100000 0 494.500000 3047.300000 0 181.700000 3047.300000 0 181.700000 3048.100000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 3047.300000 0 494.500000 3047.300000 0 494.500000 3046.500000 0 181.700000 3046.500000 0 181.700000 3047.300000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 3046.500000 0 494.500000 3046.500000 0 494.500000 3045.800000 0 181.700000 3045.800000 0 181.700000 3046.500000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 3045.800000 0 494.500000 3045.800000 0 494.500000 3045.000000 0 181.700000 3045.000000 0 181.700000 3045.800000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 3045.000000 0 494.500000 3045.000000 0 494.500000 3044.300000 0 181.700000 3044.300000 0 181.700000 3045.000000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 3044.300000 0 494.500000 3044.300000 0 494.500000 3043.500000 0 181.700000 3043.500000 0 181.700000 3044.300000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 3043.500000 0 494.500000 3043.500000 0 494.500000 3042.800000 0 181.700000 3042.800000 0 181.700000 3043.500000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 3042.800000 0 494.500000 3042.800000 0 494.500000 3042.000000 0 181.700000 3042.000000 0 181.700000 3042.800000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 3042.000000 0 494.500000 3042.000000 0 494.500000 3041.200000 0 181.700000 3041.200000 0 181.700000 3042.000000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 3041.200000 0 494.500000 3041.200000 0 494.500000 3040.500000 0 181.700000 3040.500000 0 181.700000 3041.200000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 3040.500000 0 494.500000 3040.500000 0 494.500000 3039.700000 0 181.700000 3039.700000 0 181.700000 3040.500000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 3039.700000 0 494.500000 3039.700000 0 494.500000 3039.000000 0 181.700000 3039.000000 0 181.700000 3039.700000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 3039.000000 0 494.500000 3039.000000 0 494.500000 3038.200000 0 181.700000 3038.200000 0 181.700000 3039.000000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 3038.200000 0 494.500000 3038.200000 0 494.500000 3037.400000 0 181.700000 3037.400000 0 181.700000 3038.200000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 3037.400000 0 494.500000 3037.400000 0 494.500000 3036.700000 0 181.700000 3036.700000 0 181.700000 3037.400000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 3036.700000 0 494.500000 3036.700000 0 494.500000 3035.900000 0 181.700000 3035.900000 0 181.700000 3036.700000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 3035.900000 0 494.500000 3035.900000 0 494.500000 3035.200000 0 181.700000 3035.200000 0 181.700000 3035.900000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 3035.200000 0 494.500000 3035.200000 0 494.500000 3034.400000 0 181.700000 3034.400000 0 181.700000 3035.200000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 3034.400000 0 494.500000 3034.400000 0 494.500000 3033.600000 0 181.700000 3033.600000 0 181.700000 3034.400000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 3033.600000 0 494.500000 3033.600000 0 494.500000 3032.900000 0 181.700000 3032.900000 0 181.700000 3033.600000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 3032.900000 0 494.500000 3032.900000 0 494.500000 3032.100000 0 181.700000 3032.100000 0 181.700000 3032.900000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 3032.100000 0 494.500000 3032.100000 0 494.500000 3031.400000 0 181.700000 3031.400000 0 181.700000 3032.100000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 3031.400000 0 494.500000 3031.400000 0 494.500000 3030.600000 0 181.700000 3030.600000 0 181.700000 3031.400000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 3030.600000 0 494.500000 3030.600000 0 494.500000 3029.900000 0 181.700000 3029.900000 0 181.700000 3030.600000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 3029.900000 0 494.500000 3029.900000 0 494.500000 3029.100000 0 181.700000 3029.100000 0 181.700000 3029.900000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 3029.100000 0 494.500000 3029.100000 0 494.500000 3028.300000 0 181.700000 3028.300000 0 181.700000 3029.100000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 3028.300000 0 494.500000 3028.300000 0 494.500000 3027.600000 0 181.700000 3027.600000 0 181.700000 3028.300000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 3027.600000 0 494.500000 3027.600000 0 494.500000 3026.800000 0 181.700000 3026.800000 0 181.700000 3027.600000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 3026.800000 0 494.500000 3026.800000 0 494.500000 3026.100000 0 181.700000 3026.100000 0 181.700000 3026.800000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 3026.100000 0 494.500000 3026.100000 0 494.500000 3025.300000 0 181.700000 3025.300000 0 181.700000 3026.100000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 3025.300000 0 494.500000 3025.300000 0 494.500000 3024.500000 0 181.700000 3024.500000 0 181.700000 3025.300000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 3024.500000 0 494.500000 3024.500000 0 494.500000 3023.800000 0 181.700000 3023.800000 0 181.700000 3024.500000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 3023.800000 0 494.500000 3023.800000 0 494.500000 3023.000000 0 181.700000 3023.000000 0 181.700000 3023.800000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 3023.000000 0 494.500000 3023.000000 0 494.500000 3022.300000 0 181.700000 3022.300000 0 181.700000 3023.000000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 3022.300000 0 494.500000 3022.300000 0 494.500000 3021.500000 0 181.700000 3021.500000 0 181.700000 3022.300000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 3021.500000 0 494.500000 3021.500000 0 494.500000 3020.700000 0 181.700000 3020.700000 0 181.700000 3021.500000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 3020.700000 0 494.500000 3020.700000 0 494.500000 3020.000000 0 181.700000 3020.000000 0 181.700000 3020.700000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 3020.000000 0 494.500000 3020.000000 0 494.500000 3019.200000 0 181.700000 3019.200000 0 181.700000 3020.000000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 3019.200000 0 494.500000 3019.200000 0 494.500000 3018.500000 0 181.700000 3018.500000 0 181.700000 3019.200000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 3018.500000 0 494.500000 3018.500000 0 494.500000 3017.700000 0 181.700000 3017.700000 0 181.700000 3018.500000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 3017.700000 0 494.500000 3017.700000 0 494.500000 3017.000000 0 181.700000 3017.000000 0 181.700000 3017.700000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 3017.000000 0 494.500000 3017.000000 0 494.500000 3016.200000 0 181.700000 3016.200000 0 181.700000 3017.000000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 3016.200000 0 494.500000 3016.200000 0 494.500000 3015.400000 0 181.700000 3015.400000 0 181.700000 3016.200000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 3015.400000 0 494.500000 3015.400000 0 494.500000 3014.700000 0 181.700000 3014.700000 0 181.700000 3015.400000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 3014.700000 0 494.500000 3014.700000 0 494.500000 3013.900000 0 181.700000 3013.900000 0 181.700000 3014.700000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 3013.900000 0 494.500000 3013.900000 0 494.500000 3013.200000 0 181.700000 3013.200000 0 181.700000 3013.900000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 3013.200000 0 494.500000 3013.200000 0 494.500000 3012.400000 0 181.700000 3012.400000 0 181.700000 3013.200000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 3012.400000 0 494.500000 3012.400000 0 494.500000 3011.600000 0 181.700000 3011.600000 0 181.700000 3012.400000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 3011.600000 0 494.500000 3011.600000 0 494.500000 3010.900000 0 181.700000 3010.900000 0 181.700000 3011.600000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 3010.900000 0 494.500000 3010.900000 0 494.500000 3010.100000 0 181.700000 3010.100000 0 181.700000 3010.900000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 3010.100000 0 494.500000 3010.100000 0 494.500000 3009.400000 0 181.700000 3009.400000 0 181.700000 3010.100000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 3009.400000 0 494.500000 3009.400000 0 494.500000 3008.600000 0 181.700000 3008.600000 0 181.700000 3009.400000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 3008.600000 0 494.500000 3008.600000 0 494.500000 3007.800000 0 181.700000 3007.800000 0 181.700000 3008.600000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 3007.800000 0 494.500000 3007.800000 0 494.500000 3007.100000 0 181.700000 3007.100000 0 181.700000 3007.800000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 3007.100000 0 494.500000 3007.100000 0 494.500000 3006.300000 0 181.700000 3006.300000 0 181.700000 3007.100000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 3006.300000 0 494.500000 3006.300000 0 494.500000 3005.600000 0 181.700000 3005.600000 0 181.700000 3006.300000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 3005.600000 0 494.500000 3005.600000 0 494.500000 3004.800000 0 181.700000 3004.800000 0 181.700000 3005.600000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 3004.800000 0 494.500000 3004.800000 0 494.500000 3004.100000 0 181.700000 3004.100000 0 181.700000 3004.800000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 3004.100000 0 494.500000 3004.100000 0 494.500000 3003.300000 0 181.700000 3003.300000 0 181.700000 3004.100000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 3003.300000 0 494.500000 3003.300000 0 494.500000 3002.500000 0 181.700000 3002.500000 0 181.700000 3003.300000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 3002.500000 0 494.500000 3002.500000 0 494.500000 3001.800000 0 181.700000 3001.800000 0 181.700000 3002.500000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 3001.800000 0 494.500000 3001.800000 0 494.500000 3001.000000 0 181.700000 3001.000000 0 181.700000 3001.800000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 3001.000000 0 494.500000 3001.000000 0 494.500000 3000.300000 0 181.700000 3000.300000 0 181.700000 3001.000000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 3000.300000 0 494.500000 3000.300000 0 494.500000 2999.500000 0 181.700000 2999.500000 0 181.700000 3000.300000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 2999.500000 0 494.500000 2999.500000 0 494.500000 2998.700000 0 181.700000 2998.700000 0 181.700000 2999.500000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 2998.700000 0 494.500000 2998.700000 0 494.500000 2998.000000 0 181.700000 2998.000000 0 181.700000 2998.700000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 2998.000000 0 494.500000 2998.000000 0 494.500000 2997.200000 0 181.700000 2997.200000 0 181.700000 2998.000000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 2997.200000 0 494.500000 2997.200000 0 494.500000 2996.500000 0 181.700000 2996.500000 0 181.700000 2997.200000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 2996.500000 0 494.500000 2996.500000 0 494.500000 2995.700000 0 181.700000 2995.700000 0 181.700000 2996.500000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 2995.700000 0 494.500000 2995.700000 0 494.500000 2994.900000 0 181.700000 2994.900000 0 181.700000 2995.700000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 2994.900000 0 494.500000 2994.900000 0 494.500000 2994.200000 0 181.700000 2994.200000 0 181.700000 2994.900000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 2994.200000 0 494.500000 2994.200000 0 494.500000 2993.400000 0 181.700000 2993.400000 0 181.700000 2994.200000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 2993.400000 0 494.500000 2993.400000 0 494.500000 2992.700000 0 181.700000 2992.700000 0 181.700000 2993.400000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 2992.700000 0 494.500000 2992.700000 0 494.500000 2991.900000 0 181.700000 2991.900000 0 181.700000 2992.700000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 2991.900000 0 494.500000 2991.900000 0 494.500000 2991.200000 0 181.700000 2991.200000 0 181.700000 2991.900000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 2991.200000 0 494.500000 2991.200000 0 494.500000 2990.400000 0 181.700000 2990.400000 0 181.700000 2991.200000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 2990.400000 0 494.500000 2990.400000 0 494.500000 2989.600000 0 181.700000 2989.600000 0 181.700000 2990.400000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 2989.600000 0 494.500000 2989.600000 0 494.500000 2988.900000 0 181.700000 2988.900000 0 181.700000 2989.600000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 2988.900000 0 494.500000 2988.900000 0 494.500000 2988.100000 0 181.700000 2988.100000 0 181.700000 2988.900000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 2988.100000 0 494.500000 2988.100000 0 494.500000 2987.400000 0 181.700000 2987.400000 0 181.700000 2988.100000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 2987.400000 0 494.500000 2987.400000 0 494.500000 2986.600000 0 181.700000 2986.600000 0 181.700000 2987.400000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 2986.600000 0 494.500000 2986.600000 0 494.500000 2985.800000 0 181.700000 2985.800000 0 181.700000 2986.600000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 2985.800000 0 494.500000 2985.800000 0 494.500000 2985.100000 0 181.700000 2985.100000 0 181.700000 2985.800000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 2985.100000 0 494.500000 2985.100000 0 494.500000 2984.300000 0 181.700000 2984.300000 0 181.700000 2985.100000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 2984.300000 0 494.500000 2984.300000 0 494.500000 2983.600000 0 181.700000 2983.600000 0 181.700000 2984.300000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 2983.600000 0 494.500000 2983.600000 0 494.500000 2982.800000 0 181.700000 2982.800000 0 181.700000 2983.600000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 2982.800000 0 494.500000 2982.800000 0 494.500000 2982.000000 0 181.700000 2982.000000 0 181.700000 2982.800000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 2982.000000 0 494.500000 2982.000000 0 494.500000 2981.300000 0 181.700000 2981.300000 0 181.700000 2982.000000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 2981.300000 0 494.500000 2981.300000 0 494.500000 2980.500000 0 181.700000 2980.500000 0 181.700000 2981.300000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 2980.500000 0 494.500000 2980.500000 0 494.500000 2979.800000 0 181.700000 2979.800000 0 181.700000 2980.500000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 2979.800000 0 494.500000 2979.800000 0 494.500000 2979.000000 0 181.700000 2979.000000 0 181.700000 2979.800000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 2979.000000 0 494.500000 2979.000000 0 494.500000 2978.300000 0 181.700000 2978.300000 0 181.700000 2979.000000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 2978.300000 0 494.500000 2978.300000 0 494.500000 2977.500000 0 181.700000 2977.500000 0 181.700000 2978.300000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 2977.500000 0 494.500000 2977.500000 0 494.500000 2976.700000 0 181.700000 2976.700000 0 181.700000 2977.500000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 2976.700000 0 494.500000 2976.700000 0 494.500000 2976.000000 0 181.700000 2976.000000 0 181.700000 2976.700000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 2976.000000 0 494.500000 2976.000000 0 494.500000 2975.200000 0 181.700000 2975.200000 0 181.700000 2976.000000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 2975.200000 0 494.500000 2975.200000 0 494.500000 2974.500000 0 181.700000 2974.500000 0 181.700000 2975.200000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 2974.500000 0 494.500000 2974.500000 0 494.500000 2973.700000 0 181.700000 2973.700000 0 181.700000 2974.500000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 2973.700000 0 494.500000 2973.700000 0 494.500000 2972.900000 0 181.700000 2972.900000 0 181.700000 2973.700000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 2972.900000 0 494.500000 2972.900000 0 494.500000 2972.200000 0 181.700000 2972.200000 0 181.700000 2972.900000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 2972.200000 0 494.500000 2972.200000 0 494.500000 2971.400000 0 181.700000 2971.400000 0 181.700000 2972.200000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 2971.400000 0 494.500000 2971.400000 0 494.500000 2970.700000 0 181.700000 2970.700000 0 181.700000 2971.400000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 2970.700000 0 494.500000 2970.700000 0 494.500000 2969.900000 0 181.700000 2969.900000 0 181.700000 2970.700000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 2969.900000 0 494.500000 2969.900000 0 494.500000 2969.100000 0 181.700000 2969.100000 0 181.700000 2969.900000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 2969.100000 0 494.500000 2969.100000 0 494.500000 2968.400000 0 181.700000 2968.400000 0 181.700000 2969.100000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 2968.400000 0 494.500000 2968.400000 0 494.500000 2967.600000 0 181.700000 2967.600000 0 181.700000 2968.400000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 2967.600000 0 494.500000 2967.600000 0 494.500000 2966.900000 0 181.700000 2966.900000 0 181.700000 2967.600000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 2966.900000 0 494.500000 2966.900000 0 494.500000 2966.100000 0 181.700000 2966.100000 0 181.700000 2966.900000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 2966.100000 0 494.500000 2966.100000 0 494.500000 2965.400000 0 181.700000 2965.400000 0 181.700000 2966.100000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 2965.400000 0 494.500000 2965.400000 0 494.500000 2964.600000 0 181.700000 2964.600000 0 181.700000 2965.400000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 2964.600000 0 494.500000 2964.600000 0 494.500000 2963.800000 0 181.700000 2963.800000 0 181.700000 2964.600000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 2963.800000 0 494.500000 2963.800000 0 494.500000 2963.100000 0 181.700000 2963.100000 0 181.700000 2963.800000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 2963.100000 0 494.500000 2963.100000 0 494.500000 2962.300000 0 181.700000 2962.300000 0 181.700000 2963.100000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 2962.300000 0 494.500000 2962.300000 0 494.500000 2961.600000 0 181.700000 2961.600000 0 181.700000 2962.300000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 2961.600000 0 494.500000 2961.600000 0 494.500000 2960.800000 0 181.700000 2960.800000 0 181.700000 2961.600000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 2960.800000 0 494.500000 2960.800000 0 494.500000 2960.100000 0 181.700000 2960.100000 0 181.700000 2960.800000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 2960.100000 0 494.500000 2960.100000 0 494.500000 2959.300000 0 181.700000 2959.300000 0 181.700000 2960.100000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 2959.300000 0 494.500000 2959.300000 0 494.500000 2958.500000 0 181.700000 2958.500000 0 181.700000 2959.300000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 2958.500000 0 494.500000 2958.500000 0 494.500000 2957.800000 0 181.700000 2957.800000 0 181.700000 2958.500000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 2957.800000 0 494.500000 2957.800000 0 494.500000 2957.000000 0 181.700000 2957.000000 0 181.700000 2957.800000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 2957.000000 0 494.500000 2957.000000 0 494.500000 2956.300000 0 181.700000 2956.300000 0 181.700000 2957.000000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 2956.300000 0 494.500000 2956.300000 0 494.500000 2955.500000 0 181.700000 2955.500000 0 181.700000 2956.300000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 2955.500000 0 494.500000 2955.500000 0 494.500000 2954.700000 0 181.700000 2954.700000 0 181.700000 2955.500000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 2954.700000 0 494.500000 2954.700000 0 494.500000 2954.000000 0 181.700000 2954.000000 0 181.700000 2954.700000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 2954.000000 0 494.500000 2954.000000 0 494.500000 2953.200000 0 181.700000 2953.200000 0 181.700000 2954.000000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 2953.200000 0 494.500000 2953.200000 0 494.500000 2952.500000 0 181.700000 2952.500000 0 181.700000 2953.200000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 2952.500000 0 494.500000 2952.500000 0 494.500000 2951.700000 0 181.700000 2951.700000 0 181.700000 2952.500000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 2951.700000 0 494.500000 2951.700000 0 494.500000 2951.000000 0 181.700000 2951.000000 0 181.700000 2951.700000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 2951.000000 0 494.500000 2951.000000 0 494.500000 2950.200000 0 181.700000 2950.200000 0 181.700000 2951.000000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 2950.200000 0 494.500000 2950.200000 0 494.500000 2949.400000 0 181.700000 2949.400000 0 181.700000 2950.200000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 2949.400000 0 494.500000 2949.400000 0 494.500000 2948.700000 0 181.700000 2948.700000 0 181.700000 2949.400000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 2948.700000 0 494.500000 2948.700000 0 494.500000 2947.900000 0 181.700000 2947.900000 0 181.700000 2948.700000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 2947.900000 0 494.500000 2947.900000 0 494.500000 2947.200000 0 181.700000 2947.200000 0 181.700000 2947.900000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 2947.200000 0 494.500000 2947.200000 0 494.500000 2946.400000 0 181.700000 2946.400000 0 181.700000 2947.200000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 2946.400000 0 494.500000 2946.400000 0 494.500000 2945.700000 0 181.700000 2945.700000 0 181.700000 2946.400000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 2945.700000 0 494.500000 2945.700000 0 494.500000 2944.900000 0 181.700000 2944.900000 0 181.700000 2945.700000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 2944.900000 0 494.500000 2944.900000 0 494.500000 2944.100000 0 181.700000 2944.100000 0 181.700000 2944.900000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 2944.100000 0 494.500000 2944.100000 0 494.500000 2943.400000 0 181.700000 2943.400000 0 181.700000 2944.100000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 2943.400000 0 494.500000 2943.400000 0 494.500000 2942.600000 0 181.700000 2942.600000 0 181.700000 2943.400000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 2942.600000 0 494.500000 2942.600000 0 494.500000 2941.900000 0 181.700000 2941.900000 0 181.700000 2942.600000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 2941.900000 0 494.500000 2941.900000 0 494.500000 2941.100000 0 181.700000 2941.100000 0 181.700000 2941.900000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 2941.100000 0 494.500000 2941.100000 0 494.500000 2940.300000 0 181.700000 2940.300000 0 181.700000 2941.100000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 2940.300000 0 494.500000 2940.300000 0 494.500000 2939.600000 0 181.700000 2939.600000 0 181.700000 2940.300000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 2939.600000 0 494.500000 2939.600000 0 494.500000 2938.800000 0 181.700000 2938.800000 0 181.700000 2939.600000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 2938.800000 0 494.500000 2938.800000 0 494.500000 2938.100000 0 181.700000 2938.100000 0 181.700000 2938.800000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 2938.100000 0 494.500000 2938.100000 0 494.500000 2937.300000 0 181.700000 2937.300000 0 181.700000 2938.100000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 2937.300000 0 494.500000 2937.300000 0 494.500000 2936.600000 0 181.700000 2936.600000 0 181.700000 2937.300000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 2936.600000 0 494.500000 2936.600000 0 494.500000 2935.800000 0 181.700000 2935.800000 0 181.700000 2936.600000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 2935.800000 0 494.500000 2935.800000 0 494.500000 2935.000000 0 181.700000 2935.000000 0 181.700000 2935.800000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 2935.000000 0 494.500000 2935.000000 0 494.500000 2934.300000 0 181.700000 2934.300000 0 181.700000 2935.000000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 2934.300000 0 494.500000 2934.300000 0 494.500000 2933.500000 0 181.700000 2933.500000 0 181.700000 2934.300000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 2933.500000 0 494.500000 2933.500000 0 494.500000 2932.800000 0 181.700000 2932.800000 0 181.700000 2933.500000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 2932.800000 0 494.500000 2932.800000 0 494.500000 2932.000000 0 181.700000 2932.000000 0 181.700000 2932.800000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 2932.000000 0 494.500000 2932.000000 0 494.500000 2931.200000 0 181.700000 2931.200000 0 181.700000 2932.000000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 2931.200000 0 494.500000 2931.200000 0 494.500000 2930.500000 0 181.700000 2930.500000 0 181.700000 2931.200000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 2930.500000 0 494.500000 2930.500000 0 494.500000 2929.700000 0 181.700000 2929.700000 0 181.700000 2930.500000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 2929.700000 0 494.500000 2929.700000 0 494.500000 2929.000000 0 181.700000 2929.000000 0 181.700000 2929.700000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 2929.000000 0 494.500000 2929.000000 0 494.500000 2928.200000 0 181.700000 2928.200000 0 181.700000 2929.000000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 2928.200000 0 494.500000 2928.200000 0 494.500000 2927.400000 0 181.700000 2927.400000 0 181.700000 2928.200000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 2927.400000 0 494.500000 2927.400000 0 494.500000 2926.700000 0 181.700000 2926.700000 0 181.700000 2927.400000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 2926.700000 0 494.500000 2926.700000 0 494.500000 2925.900000 0 181.700000 2925.900000 0 181.700000 2926.700000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 2925.900000 0 494.500000 2925.900000 0 494.500000 2925.200000 0 181.700000 2925.200000 0 181.700000 2925.900000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 2925.200000 0 494.500000 2925.200000 0 494.500000 2924.400000 0 181.700000 2924.400000 0 181.700000 2925.200000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 2924.400000 0 494.500000 2924.400000 0 494.500000 2923.700000 0 181.700000 2923.700000 0 181.700000 2924.400000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 2923.700000 0 494.500000 2923.700000 0 494.500000 2922.900000 0 181.700000 2922.900000 0 181.700000 2923.700000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 2922.900000 0 494.500000 2922.900000 0 494.500000 2922.100000 0 181.700000 2922.100000 0 181.700000 2922.900000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 2922.100000 0 494.500000 2922.100000 0 494.500000 2921.400000 0 181.700000 2921.400000 0 181.700000 2922.100000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 2921.400000 0 494.500000 2921.400000 0 494.500000 2920.600000 0 181.700000 2920.600000 0 181.700000 2921.400000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 2920.600000 0 494.500000 2920.600000 0 494.500000 2919.900000 0 181.700000 2919.900000 0 181.700000 2920.600000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 2919.900000 0 494.500000 2919.900000 0 494.500000 2919.100000 0 181.700000 2919.100000 0 181.700000 2919.900000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 2919.100000 0 494.500000 2919.100000 0 494.500000 2918.300000 0 181.700000 2918.300000 0 181.700000 2919.100000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 2918.300000 0 494.500000 2918.300000 0 494.500000 2917.600000 0 181.700000 2917.600000 0 181.700000 2918.300000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 2917.600000 0 494.500000 2917.600000 0 494.500000 2916.800000 0 181.700000 2916.800000 0 181.700000 2917.600000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 2916.800000 0 494.500000 2916.800000 0 494.500000 2916.100000 0 181.700000 2916.100000 0 181.700000 2916.800000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 2916.100000 0 494.500000 2916.100000 0 494.500000 2915.300000 0 181.700000 2915.300000 0 181.700000 2916.100000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 2915.300000 0 494.500000 2915.300000 0 494.500000 2914.500000 0 181.700000 2914.500000 0 181.700000 2915.300000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 2914.500000 0 494.500000 2914.500000 0 494.500000 2913.800000 0 181.700000 2913.800000 0 181.700000 2914.500000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 2913.800000 0 494.500000 2913.800000 0 494.500000 2913.000000 0 181.700000 2913.000000 0 181.700000 2913.800000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 2913.000000 0 494.500000 2913.000000 0 494.500000 2912.300000 0 181.700000 2912.300000 0 181.700000 2913.000000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 2912.300000 0 494.500000 2912.300000 0 494.500000 2911.500000 0 181.700000 2911.500000 0 181.700000 2912.300000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 2911.500000 0 494.500000 2911.500000 0 494.500000 2910.800000 0 181.700000 2910.800000 0 181.700000 2911.500000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 2910.800000 0 494.500000 2910.800000 0 494.500000 2910.000000 0 181.700000 2910.000000 0 181.700000 2910.800000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 2910.000000 0 494.500000 2910.000000 0 494.500000 2909.200000 0 181.700000 2909.200000 0 181.700000 2910.000000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 2909.200000 0 494.500000 2909.200000 0 494.500000 2908.500000 0 181.700000 2908.500000 0 181.700000 2909.200000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 2908.500000 0 494.500000 2908.500000 0 494.500000 2907.700000 0 181.700000 2907.700000 0 181.700000 2908.500000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 2907.700000 0 494.500000 2907.700000 0 494.500000 2907.000000 0 181.700000 2907.000000 0 181.700000 2907.700000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 2907.000000 0 494.500000 2907.000000 0 494.500000 2906.200000 0 181.700000 2906.200000 0 181.700000 2907.000000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 2906.200000 0 494.500000 2906.200000 0 494.500000 2905.400000 0 181.700000 2905.400000 0 181.700000 2906.200000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 2905.400000 0 494.500000 2905.400000 0 494.500000 2904.700000 0 181.700000 2904.700000 0 181.700000 2905.400000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 2904.700000 0 494.500000 2904.700000 0 494.500000 2903.900000 0 181.700000 2903.900000 0 181.700000 2904.700000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 2903.900000 0 494.500000 2903.900000 0 494.500000 2903.200000 0 181.700000 2903.200000 0 181.700000 2903.900000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 2903.200000 0 494.500000 2903.200000 0 494.500000 2902.400000 0 181.700000 2902.400000 0 181.700000 2903.200000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 2902.400000 0 494.500000 2902.400000 0 494.500000 2901.600000 0 181.700000 2901.600000 0 181.700000 2902.400000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 2901.600000 0 494.500000 2901.600000 0 494.500000 2900.900000 0 181.700000 2900.900000 0 181.700000 2901.600000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 2900.900000 0 494.500000 2900.900000 0 494.500000 2900.100000 0 181.700000 2900.100000 0 181.700000 2900.900000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 2900.100000 0 494.500000 2900.100000 0 494.500000 2899.400000 0 181.700000 2899.400000 0 181.700000 2900.100000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 2899.400000 0 494.500000 2899.400000 0 494.500000 2898.600000 0 181.700000 2898.600000 0 181.700000 2899.400000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 2898.600000 0 494.500000 2898.600000 0 494.500000 2897.900000 0 181.700000 2897.900000 0 181.700000 2898.600000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 2897.900000 0 494.500000 2897.900000 0 494.500000 2897.100000 0 181.700000 2897.100000 0 181.700000 2897.900000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 2897.100000 0 494.500000 2897.100000 0 494.500000 2896.300000 0 181.700000 2896.300000 0 181.700000 2897.100000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 2896.300000 0 494.500000 2896.300000 0 494.500000 2895.600000 0 181.700000 2895.600000 0 181.700000 2896.300000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 2895.600000 0 494.500000 2895.600000 0 494.500000 2894.800000 0 181.700000 2894.800000 0 181.700000 2895.600000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 2894.900000 0 181.800000 2894.900000 0 181.800000 3088.200000 0 494.400000 3088.200000 0 494.400000 2894.900000 0 338.100000 2894.900000 0
+strokePath subpath 1 338.100000 2894.900000 0 181.800000 2894.900000 0 181.800000 3088.200000 0 494.400000 3088.200000 0 494.400000 2894.900000 0 338.100000 2894.900000 0
+saveState
+updateCtm 11410.000000 0.000000 0.000000 -8760.000000 20530.000000 -217890.000000
+drawSoftMaskedImage 1142 877 1142 877 JPEG 70955 PPM 3004618
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 2933.924000 215.488000 2925.924000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 2933.924000 220.592000 2925.924000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 2933.924000 225.696000 2925.924000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 2933.924000 230.800000 2925.924000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 2926.324000 241.388000 2918.324000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 2926.324000 246.492000 2918.324000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 2926.324000 251.596000 2918.324000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 2926.324000 256.700000 2918.324000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 2918.624000 267.188000 2910.624000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 2918.624000 272.292000 2910.624000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 2918.624000 277.396000 2910.624000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 2918.624000 282.500000 2910.624000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 2911.024000 293.088000 2903.024000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 2911.024000 298.192000 2903.024000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 2911.024000 303.296000 2903.024000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 2911.024000 308.400000 2903.024000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 2948.924000 202.588000 2940.924000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 2968.224000 201.688000 2960.224000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 2987.524000 195.788000 2979.524000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 2987.524000 200.892000 2979.524000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 3006.924000 194.888000 2998.924000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 3006.924000 199.992000 2998.924000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 3026.224000 193.988000 3018.224000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 3026.224000 199.092000 3018.224000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 3045.524000 193.088000 3037.524000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 3045.524000 198.192000 3037.524000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 2917.624000 330.188000 2909.624000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 2917.624000 332.716000 2909.624000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 2917.624000 337.596000 2909.624000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 2917.624000 341.396000 2909.624000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 2917.624000 346.036000 2909.624000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 2917.624000 350.900000 2909.624000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 2917.624000 355.972000 2909.624000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 2917.624000 359.196000 2909.624000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 2917.624000 362.196000 2909.624000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 2917.624000 367.404000 2909.624000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 2917.624000 371.876000 2909.624000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 2917.624000 375.052000 2909.624000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 2937.124000 361.172000 2929.124000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 2937.124000 364.340000 2929.124000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 2937.124000 367.396000 2929.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 2937.124000 372.604000 2929.124000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 2937.124000 379.348000 2929.124000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 2937.124000 384.484000 2929.124000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 2937.124000 389.436000 2929.124000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 2937.124000 392.108000 2929.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 2937.124000 395.708000 2929.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 2937.124000 397.540000 2929.124000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 2937.124000 402.444000 2929.124000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 2937.124000 406.788000 2929.124000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 2956.724000 392.972000 2948.724000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 2956.724000 398.076000 2948.724000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 2956.724000 403.180000 2948.724000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 2956.724000 405.428000 2948.724000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 2956.724000 410.332000 2948.724000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 2956.724000 414.476000 2948.724000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 3084.292000 305.808000 3070.292000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 3084.292000 314.138000 3070.292000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 3084.292000 320.788000 3070.292000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 3084.292000 328.698000 3070.292000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 3084.292000 336.972000 3070.292000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 3084.292000 344.182000 3070.292000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 3084.292000 349.810000 3070.292000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 3084.292000 354.234000 3070.292000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 3084.292000 362.718000 3070.292000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 3084.292000 367.870000 3070.292000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 3084.292000 372.322000 3070.292000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 3084.292000 382.080000 3070.292000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 3084.292000 388.772000 3070.292000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 3084.292000 397.802000 3070.292000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 3084.292000 402.254000 3070.292000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 3084.292000 407.896000 3070.292000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 2961.400000 0 424.300000 2961.400000 0 424.300000 3022.100000 0 493.600000 3022.100000 0 493.600000 2961.400000 0 458.900000 2961.400000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 3012.500000 0 428.900000 3012.500000 0 428.900000 3018.400000 0 434.800000 3018.400000 0 434.800000 3012.500000 0 431.900000 3012.500000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 3001.400000 0 428.900000 3001.400000 0 428.900000 3007.400000 0 434.800000 3007.400000 0 434.800000 3001.400000 0 431.900000 3001.400000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 2990.300000 0 428.900000 2990.300000 0 428.900000 2996.300000 0 434.800000 2996.300000 0 434.800000 2990.300000 0 431.900000 2990.300000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 2979.200000 0 428.900000 2979.200000 0 428.900000 2985.200000 0 434.800000 2985.200000 0 434.800000 2979.200000 0 431.900000 2979.200000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 2968.100000 0 428.900000 2968.100000 0 428.900000 2974.100000 0 434.800000 2974.100000 0 434.800000 2968.100000 0 431.900000 2968.100000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 3019.624000 443.288000 3011.624000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 3019.624000 445.816000 3011.624000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 3019.624000 450.600000 3011.624000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 3019.624000 454.496000 3011.624000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 3019.624000 459.136000 3011.624000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 3019.624000 464.000000 3011.624000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 3019.624000 468.976000 3011.624000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 3019.624000 472.304000 3011.624000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 3019.624000 475.208000 3011.624000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 3019.624000 480.520000 3011.624000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 3019.624000 484.992000 3011.624000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 3019.624000 488.168000 3011.624000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 3008.524000 443.352000 3000.524000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 3008.524000 447.920000 3000.524000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 3008.524000 452.976000 3000.524000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 3008.524000 457.400000 3000.524000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 3008.524000 462.472000 3000.524000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 3008.524000 465.800000 3000.524000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 3008.524000 468.904000 3000.524000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 3008.524000 473.816000 3000.524000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 3008.524000 478.888000 3000.524000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 3008.524000 482.064000 3000.524000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 2997.424000 442.872000 2989.424000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 2997.424000 446.040000 2989.424000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 2997.424000 448.992000 2989.424000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 2997.424000 454.304000 2989.424000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 2997.424000 461.048000 2989.424000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 2997.424000 466.184000 2989.424000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 2997.424000 471.136000 2989.424000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 2997.424000 473.808000 2989.424000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 2997.424000 477.408000 2989.424000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 2997.424000 479.240000 2989.424000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 2997.424000 484.144000 2989.424000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 2997.424000 488.488000 2989.424000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 2986.324000 443.384000 2978.324000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 2986.324000 448.464000 2978.324000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 2986.324000 453.424000 2978.324000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 2986.324000 456.696000 2978.324000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 2986.324000 459.800000 2978.324000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 2986.324000 462.032000 2978.324000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 2986.324000 466.936000 2978.324000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 2986.324000 471.080000 2978.324000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 2975.224000 443.272000 2967.224000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 2975.224000 448.376000 2967.224000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 2975.224000 453.480000 2967.224000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 2975.224000 455.728000 2967.224000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 2975.224000 460.632000 2967.224000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 2975.224000 464.776000 2967.224000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 330.200000 0 114.800000 330.200000 0 114.800000 373.000000 0 72.000000 373.000000 0 72.000000 330.200000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 46170.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 76.600000 701.300000 0 535.500000 701.300000 0 535.500000 720.000000 0 76.600000 720.000000 0 76.600000 701.300000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 76.600000 656.400000 0 291.900000 656.400000 0 291.900000 670.500000 0 76.600000 670.500000 0 76.600000 656.400000 0
+eoFillPath subpath 1 76.600000 572.800000 0 291.900000 572.800000 0 291.900000 586.900000 0 76.600000 586.900000 0 76.600000 572.800000 0
+eoFillPath subpath 1 76.600000 419.700000 0 291.900000 419.700000 0 291.900000 433.800000 0 76.600000 433.800000 0 76.600000 419.700000 0
+eoFillPath subpath 1 76.600000 155.400000 0 291.900000 155.400000 0 291.900000 169.500000 0 76.600000 169.500000 0 76.600000 155.400000 0
+eoFillPath subpath 1 320.200000 492.000000 0 535.500000 492.000000 0 535.500000 506.100000 0 320.200000 506.100000 0 320.200000 492.000000 0
+eoFillPath subpath 1 320.200000 450.100000 0 535.500000 450.100000 0 535.500000 464.200000 0 320.200000 464.200000 0 320.200000 450.100000 0
+eoFillPath subpath 1 320.200000 310.900000 0 535.500000 310.900000 0 535.500000 325.000000 0 320.200000 325.000000 0 320.200000 310.900000 0
+eoFillPath subpath 1 320.200000 199.500000 0 535.500000 199.500000 0 535.500000 213.600000 0 320.200000 213.600000 0 320.200000 199.500000 0
+eoFillPath subpath 1 320.200000 129.800000 0 535.500000 129.800000 0 535.500000 143.900000 0 320.200000 143.900000 0 320.200000 129.800000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 76.700000 719.948000 81.404000 703.948000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 81.404000 719.948000 91.532000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 91.500000 719.948000 101.644000 703.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 101.708000 719.948000 111.548000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.308000 719.948000 120.764000 703.948000 1.000000 0.000000 0.000000 1.000000 x
+endTextObject
+restoreState
+saveState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+updateFont 103 1 0 0 0 200.000000 0 BAAAAA+DejaVuSans-Bold
+drawChar 173.800000 672.856000 175.346000 670.856000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 175.300000 672.856000 175.984000 670.856000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 176.000000 672.856000 177.430000 670.856000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 177.400000 672.856000 178.822000 670.856000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 178.800000 672.856000 180.148000 670.856000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 180.100000 672.856000 181.530000 670.856000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 181.500000 672.856000 182.856000 670.856000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 182.900000 672.856000 183.856000 670.856000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 183.900000 672.856000 184.584000 670.856000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 184.600000 672.856000 185.784000 670.856000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 185.800000 672.856000 187.148000 670.856000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 187.100000 672.856000 187.784000 670.856000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 187.800000 672.856000 188.496000 670.856000 1.000000 0.000000 0.000000 1.000000
+drawChar 188.500000 672.856000 189.244000 670.856000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 189.200000 672.856000 190.622000 670.856000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 190.600000 672.856000 192.030000 670.856000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 192.000000 672.856000 193.356000 670.856000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 193.400000 672.856000 194.690000 670.856000 1.000000 0.000000 0.000000 1.000000 x
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 670.456000 86.000000 658.456000 1.000000 0.000000 0.000000 1.000000 A
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 656.436000 85.364000 644.436000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 85.400000 656.436000 92.120000 644.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 92.096000 656.436000 98.816000 644.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 98.792000 656.436000 105.884000 644.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.896000 656.436000 112.052000 644.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.100000 656.436000 118.256000 644.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 118.304000 656.436000 125.528000 644.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 125.504000 656.436000 131.240000 644.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 131.204000 656.436000 135.032000 644.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 135.008000 656.436000 142.100000 644.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.112000 656.436000 148.268000 644.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 148.200000 656.436000 152.004000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.100000 656.436000 155.904000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.000000 656.436000 159.804000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 159.900000 656.436000 163.704000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 163.800000 656.436000 167.604000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 167.700000 656.436000 171.504000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 171.600000 656.436000 175.404000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.500000 656.436000 179.304000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.400000 656.436000 183.204000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.300000 656.436000 187.104000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.200000 656.436000 191.004000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.100000 656.436000 194.904000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.000000 656.436000 198.804000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.900000 656.436000 202.704000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.800000 656.436000 206.604000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.700000 656.436000 210.504000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.600000 656.436000 214.404000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.500000 656.436000 218.304000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.400000 656.436000 222.204000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.300000 656.436000 226.104000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.200000 656.436000 230.004000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.100000 656.436000 233.904000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.000000 656.436000 237.804000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.900000 656.436000 241.704000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.800000 656.436000 245.604000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.700000 656.436000 249.504000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.600000 656.436000 253.404000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.500000 656.436000 257.304000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.400000 656.436000 261.204000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.300000 656.436000 265.104000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.200000 656.436000 269.004000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.100000 656.436000 272.904000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.000000 656.436000 276.804000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.900000 656.436000 280.704000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.800000 656.436000 284.604000 644.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 656.436000 292.032000 644.436000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 642.536000 85.364000 630.536000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 85.400000 642.536000 93.080000 630.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.104000 642.536000 100.784000 630.536000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 100.808000 642.536000 104.636000 630.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 104.612000 642.536000 111.704000 630.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.716000 642.536000 115.520000 630.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.520000 642.536000 127.796000 630.536000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 127.820000 642.536000 134.972000 630.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 135.020000 642.536000 141.740000 630.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 141.716000 642.536000 145.544000 630.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 145.520000 642.536000 153.248000 630.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 153.224000 642.536000 158.036000 630.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 158.024000 642.536000 165.248000 630.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 165.224000 642.536000 171.380000 630.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 171.428000 642.536000 179.156000 630.536000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 179.000000 642.536000 182.804000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 182.900000 642.536000 186.704000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 186.800000 642.536000 190.604000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 190.700000 642.536000 194.504000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 194.600000 642.536000 198.404000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.500000 642.536000 202.304000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.400000 642.536000 206.204000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.300000 642.536000 210.104000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.200000 642.536000 214.004000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.100000 642.536000 217.904000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.000000 642.536000 221.804000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.900000 642.536000 225.704000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.800000 642.536000 229.604000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.700000 642.536000 233.504000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.600000 642.536000 237.404000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.500000 642.536000 241.304000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.400000 642.536000 245.204000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.300000 642.536000 249.104000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.200000 642.536000 253.004000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.100000 642.536000 256.904000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.000000 642.536000 260.804000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.900000 642.536000 264.704000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.800000 642.536000 268.604000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.700000 642.536000 272.504000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.600000 642.536000 276.404000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.500000 642.536000 280.304000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.400000 642.536000 284.204000 630.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 642.536000 292.032000 630.536000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 628.636000 85.364000 616.636000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 85.400000 628.636000 93.080000 616.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.104000 628.636000 100.784000 616.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 100.808000 628.636000 104.636000 616.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 104.612000 628.636000 111.704000 616.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.716000 628.636000 117.872000 616.636000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 117.700000 628.636000 121.504000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 121.600000 628.636000 125.404000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 125.500000 628.636000 129.304000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.400000 628.636000 133.204000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.300000 628.636000 137.104000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.200000 628.636000 141.004000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.100000 628.636000 144.904000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.000000 628.636000 148.804000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.900000 628.636000 152.704000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.800000 628.636000 156.604000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.700000 628.636000 160.504000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.600000 628.636000 164.404000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.500000 628.636000 168.304000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.400000 628.636000 172.204000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.300000 628.636000 176.104000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.200000 628.636000 180.004000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.100000 628.636000 183.904000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.000000 628.636000 187.804000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.900000 628.636000 191.704000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.800000 628.636000 195.604000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.700000 628.636000 199.504000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.600000 628.636000 203.404000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.500000 628.636000 207.304000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.400000 628.636000 211.204000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.300000 628.636000 215.104000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.200000 628.636000 219.004000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.100000 628.636000 222.904000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.000000 628.636000 226.804000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.900000 628.636000 230.704000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.800000 628.636000 234.604000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.700000 628.636000 238.504000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.600000 628.636000 242.404000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.500000 628.636000 246.304000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.400000 628.636000 250.204000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.300000 628.636000 254.104000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.200000 628.636000 258.004000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.100000 628.636000 261.904000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.000000 628.636000 265.804000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.900000 628.636000 269.704000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.800000 628.636000 273.604000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.700000 628.636000 277.504000 616.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 628.636000 284.332000 616.636000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 628.636000 291.928000 616.636000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 614.736000 85.364000 602.736000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 85.400000 614.736000 91.556000 602.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.604000 614.736000 99.284000 602.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 99.308000 614.736000 103.136000 602.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.112000 614.736000 108.848000 602.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 108.812000 614.736000 112.640000 602.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.616000 614.736000 120.344000 602.736000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 120.200000 614.736000 124.004000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 124.004000 614.736000 127.808000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 127.808000 614.736000 131.612000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 131.612000 614.736000 135.416000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 135.416000 614.736000 139.220000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.220000 614.736000 143.024000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 143.024000 614.736000 146.828000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.828000 614.736000 150.632000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.632000 614.736000 154.436000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.436000 614.736000 158.240000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.240000 614.736000 162.044000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.044000 614.736000 165.848000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.848000 614.736000 169.652000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.652000 614.736000 173.456000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.456000 614.736000 177.260000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.260000 614.736000 181.064000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.064000 614.736000 184.868000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.868000 614.736000 188.672000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.672000 614.736000 192.476000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.476000 614.736000 196.280000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.280000 614.736000 200.084000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.084000 614.736000 203.888000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.888000 614.736000 207.692000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.692000 614.736000 211.496000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.496000 614.736000 215.300000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.300000 614.736000 219.104000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.104000 614.736000 222.908000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.908000 614.736000 226.712000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.712000 614.736000 230.516000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.516000 614.736000 234.320000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.320000 614.736000 238.124000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.124000 614.736000 241.928000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.928000 614.736000 245.732000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.732000 614.736000 249.536000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.536000 614.736000 253.340000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.340000 614.736000 257.144000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.144000 614.736000 260.948000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.948000 614.736000 264.752000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.752000 614.736000 268.556000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.556000 614.736000 272.360000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.360000 614.736000 276.164000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.164000 614.736000 279.968000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.968000 614.736000 283.772000 602.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 614.736000 292.032000 602.736000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 600.836000 85.364000 588.836000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 85.400000 600.836000 92.156000 588.836000 1.000000 0.000000 0.000000 1.000000 x
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 92.000000 600.836000 95.804000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 95.804000 600.836000 99.608000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 99.608000 600.836000 103.412000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 103.412000 600.836000 107.216000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 107.216000 600.836000 111.020000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 111.020000 600.836000 114.824000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 114.824000 600.836000 118.628000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 118.628000 600.836000 122.432000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 122.432000 600.836000 126.236000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 126.236000 600.836000 130.040000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 130.040000 600.836000 133.844000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.844000 600.836000 137.648000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.648000 600.836000 141.452000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.452000 600.836000 145.256000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.256000 600.836000 149.060000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.060000 600.836000 152.864000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.864000 600.836000 156.668000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.668000 600.836000 160.472000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.472000 600.836000 164.276000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.276000 600.836000 168.080000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.080000 600.836000 171.884000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 171.884000 600.836000 175.688000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.688000 600.836000 179.492000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.492000 600.836000 183.296000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.296000 600.836000 187.100000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.100000 600.836000 190.904000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 190.904000 600.836000 194.708000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 194.708000 600.836000 198.512000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.512000 600.836000 202.316000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.316000 600.836000 206.120000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.120000 600.836000 209.924000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 209.924000 600.836000 213.728000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 213.728000 600.836000 217.532000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 217.532000 600.836000 221.336000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.336000 600.836000 225.140000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.140000 600.836000 228.944000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 228.944000 600.836000 232.748000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 232.748000 600.836000 236.552000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 236.552000 600.836000 240.356000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.356000 600.836000 244.160000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.160000 600.836000 247.964000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 247.964000 600.836000 251.768000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 251.768000 600.836000 255.572000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 255.572000 600.836000 259.376000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.376000 600.836000 263.180000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.180000 600.836000 266.984000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.984000 600.836000 270.788000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.788000 600.836000 274.592000 588.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 600.836000 284.332000 588.836000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 600.836000 291.928000 588.836000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 586.856000 86.840000 574.856000 1.000000 0.000000 0.000000 1.000000 B
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 572.836000 85.508000 560.836000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 85.496000 572.836000 92.648000 560.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 92.696000 572.836000 98.852000 560.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.900000 572.836000 102.728000 560.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 102.704000 572.836000 106.532000 560.836000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 106.400000 572.836000 110.204000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 110.300000 572.836000 114.104000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 114.200000 572.836000 118.004000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 118.100000 572.836000 121.904000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 122.000000 572.836000 125.804000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 125.900000 572.836000 129.704000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.800000 572.836000 133.604000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.700000 572.836000 137.504000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.600000 572.836000 141.404000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.500000 572.836000 145.304000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.400000 572.836000 149.204000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.300000 572.836000 153.104000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.200000 572.836000 157.004000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.100000 572.836000 160.904000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.000000 572.836000 164.804000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.900000 572.836000 168.704000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.800000 572.836000 172.604000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.700000 572.836000 176.504000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.600000 572.836000 180.404000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.500000 572.836000 184.304000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.400000 572.836000 188.204000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.300000 572.836000 192.104000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.200000 572.836000 196.004000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.100000 572.836000 199.904000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.000000 572.836000 203.804000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.900000 572.836000 207.704000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.800000 572.836000 211.604000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.700000 572.836000 215.504000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.600000 572.836000 219.404000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.500000 572.836000 223.304000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.400000 572.836000 227.204000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.300000 572.836000 231.104000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.200000 572.836000 235.004000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 235.100000 572.836000 238.904000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 239.000000 572.836000 242.804000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.900000 572.836000 246.704000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.800000 572.836000 250.604000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.700000 572.836000 254.504000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.600000 572.836000 258.404000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.500000 572.836000 262.304000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.400000 572.836000 266.204000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.300000 572.836000 270.104000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.200000 572.836000 274.004000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.100000 572.836000 277.904000 560.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 572.836000 284.332000 560.836000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 572.836000 291.928000 560.836000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 558.936000 85.508000 546.936000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 85.496000 558.936000 92.648000 546.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 92.696000 558.936000 97.508000 546.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 97.496000 558.936000 105.224000 546.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 105.200000 558.936000 109.004000 546.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.004000 558.936000 115.160000 546.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 115.208000 558.936000 122.360000 546.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 122.408000 558.936000 126.236000 546.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 126.212000 558.936000 131.024000 546.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 131.012000 558.936000 137.168000 546.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 137.100000 558.936000 140.904000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.000000 558.936000 144.804000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.900000 558.936000 148.704000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.800000 558.936000 152.604000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.700000 558.936000 156.504000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.600000 558.936000 160.404000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.500000 558.936000 164.304000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.400000 558.936000 168.204000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.300000 558.936000 172.104000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.200000 558.936000 176.004000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.100000 558.936000 179.904000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.000000 558.936000 183.804000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.900000 558.936000 187.704000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.800000 558.936000 191.604000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.700000 558.936000 195.504000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.600000 558.936000 199.404000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.500000 558.936000 203.304000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.400000 558.936000 207.204000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.300000 558.936000 211.104000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.200000 558.936000 215.004000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.100000 558.936000 218.904000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.000000 558.936000 222.804000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.900000 558.936000 226.704000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.800000 558.936000 230.604000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.700000 558.936000 234.504000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.600000 558.936000 238.404000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.500000 558.936000 242.304000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.400000 558.936000 246.204000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.300000 558.936000 250.104000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.200000 558.936000 254.004000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.100000 558.936000 257.904000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.000000 558.936000 261.804000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.900000 558.936000 265.704000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.800000 558.936000 269.604000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.700000 558.936000 273.504000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.600000 558.936000 277.404000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.500000 558.936000 281.304000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.400000 558.936000 285.204000 546.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 558.936000 292.032000 546.936000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 545.036000 85.508000 533.036000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 85.496000 545.036000 92.648000 533.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 92.696000 545.036000 97.508000 533.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 97.496000 545.036000 105.224000 533.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 105.200000 545.036000 109.004000 533.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.004000 545.036000 113.816000 533.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.804000 545.036000 121.028000 533.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 121.004000 545.036000 131.264000 533.036000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 131.300000 545.036000 138.392000 533.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 138.404000 545.036000 142.232000 533.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.208000 545.036000 148.364000 533.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 148.400000 545.036000 152.204000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.300000 545.036000 156.104000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.200000 545.036000 160.004000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.100000 545.036000 163.904000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.000000 545.036000 167.804000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 167.900000 545.036000 171.704000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 171.800000 545.036000 175.604000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.700000 545.036000 179.504000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.600000 545.036000 183.404000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.500000 545.036000 187.304000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.400000 545.036000 191.204000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.300000 545.036000 195.104000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.200000 545.036000 199.004000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.100000 545.036000 202.904000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.000000 545.036000 206.804000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.900000 545.036000 210.704000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.800000 545.036000 214.604000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.700000 545.036000 218.504000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.600000 545.036000 222.404000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.500000 545.036000 226.304000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.400000 545.036000 230.204000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.300000 545.036000 234.104000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.200000 545.036000 238.004000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.100000 545.036000 241.904000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.000000 545.036000 245.804000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.900000 545.036000 249.704000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.800000 545.036000 253.604000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.700000 545.036000 257.504000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.600000 545.036000 261.404000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.500000 545.036000 265.304000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.400000 545.036000 269.204000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.300000 545.036000 273.104000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.200000 545.036000 277.004000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.100000 545.036000 280.904000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.000000 545.036000 284.804000 533.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 545.036000 292.032000 533.036000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 531.136000 85.508000 519.136000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 85.496000 531.136000 92.588000 519.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 92.600000 531.136000 99.692000 519.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 99.704000 531.136000 106.424000 519.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 106.400000 531.136000 114.128000 519.136000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 114.100000 531.136000 117.904000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 118.000000 531.136000 121.804000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 121.900000 531.136000 125.704000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 125.800000 531.136000 129.604000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.700000 531.136000 133.504000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.600000 531.136000 137.404000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.500000 531.136000 141.304000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.400000 531.136000 145.204000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.300000 531.136000 149.104000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.200000 531.136000 153.004000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.100000 531.136000 156.904000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.000000 531.136000 160.804000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.900000 531.136000 164.704000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.800000 531.136000 168.604000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.700000 531.136000 172.504000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.600000 531.136000 176.404000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.500000 531.136000 180.304000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.400000 531.136000 184.204000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.300000 531.136000 188.104000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.200000 531.136000 192.004000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.100000 531.136000 195.904000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.000000 531.136000 199.804000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.900000 531.136000 203.704000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.800000 531.136000 207.604000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.700000 531.136000 211.504000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.600000 531.136000 215.404000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.500000 531.136000 219.304000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.400000 531.136000 223.204000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.300000 531.136000 227.104000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.200000 531.136000 231.004000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.100000 531.136000 234.904000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 235.000000 531.136000 238.804000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.900000 531.136000 242.704000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.800000 531.136000 246.604000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.700000 531.136000 250.504000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.600000 531.136000 254.404000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.500000 531.136000 258.304000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.400000 531.136000 262.204000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.300000 531.136000 266.104000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.200000 531.136000 270.004000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.100000 531.136000 273.904000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.000000 531.136000 277.804000 519.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 531.136000 284.332000 519.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 531.136000 291.928000 519.136000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 517.236000 85.508000 505.236000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 85.496000 517.236000 89.324000 505.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 89.300000 517.236000 96.020000 505.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 95.996000 517.236000 102.764000 505.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 102.800000 517.236000 109.520000 505.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 109.496000 517.236000 113.324000 505.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 113.300000 517.236000 120.392000 505.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 120.404000 517.236000 126.560000 505.236000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 126.600000 517.236000 130.404000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 130.404000 517.236000 134.208000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 134.208000 517.236000 138.012000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 138.012000 517.236000 141.816000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.816000 517.236000 145.620000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.620000 517.236000 149.424000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.424000 517.236000 153.228000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.228000 517.236000 157.032000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.032000 517.236000 160.836000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.836000 517.236000 164.640000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.640000 517.236000 168.444000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.444000 517.236000 172.248000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.248000 517.236000 176.052000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.052000 517.236000 179.856000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.856000 517.236000 183.660000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.660000 517.236000 187.464000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.464000 517.236000 191.268000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.268000 517.236000 195.072000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.072000 517.236000 198.876000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.876000 517.236000 202.680000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.680000 517.236000 206.484000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.484000 517.236000 210.288000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.288000 517.236000 214.092000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.092000 517.236000 217.896000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 217.896000 517.236000 221.700000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.700000 517.236000 225.504000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.504000 517.236000 229.308000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.308000 517.236000 233.112000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.112000 517.236000 236.916000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 236.916000 517.236000 240.720000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.720000 517.236000 244.524000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.524000 517.236000 248.328000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.328000 517.236000 252.132000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.132000 517.236000 255.936000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 255.936000 517.236000 259.740000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.740000 517.236000 263.544000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.544000 517.236000 267.348000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.348000 517.236000 271.152000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.152000 517.236000 274.956000 505.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 517.236000 284.332000 505.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 517.236000 291.928000 505.236000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 503.336000 85.508000 491.336000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 85.496000 503.336000 89.324000 491.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 89.300000 503.336000 96.560000 491.336000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 96.596000 503.336000 100.424000 491.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 100.400000 503.336000 108.128000 491.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.104000 503.336000 115.784000 491.336000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 115.800000 503.336000 119.604000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 119.604000 503.336000 123.408000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 123.408000 503.336000 127.212000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 127.212000 503.336000 131.016000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 131.016000 503.336000 134.820000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 134.820000 503.336000 138.624000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 138.624000 503.336000 142.428000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 142.428000 503.336000 146.232000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.232000 503.336000 150.036000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.036000 503.336000 153.840000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.840000 503.336000 157.644000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.644000 503.336000 161.448000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.448000 503.336000 165.252000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.252000 503.336000 169.056000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.056000 503.336000 172.860000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.860000 503.336000 176.664000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.664000 503.336000 180.468000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.468000 503.336000 184.272000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.272000 503.336000 188.076000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.076000 503.336000 191.880000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.880000 503.336000 195.684000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.684000 503.336000 199.488000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.488000 503.336000 203.292000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.292000 503.336000 207.096000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.096000 503.336000 210.900000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.900000 503.336000 214.704000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.704000 503.336000 218.508000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.508000 503.336000 222.312000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.312000 503.336000 226.116000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.116000 503.336000 229.920000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.920000 503.336000 233.724000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.724000 503.336000 237.528000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.528000 503.336000 241.332000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.332000 503.336000 245.136000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.136000 503.336000 248.940000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.940000 503.336000 252.744000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.744000 503.336000 256.548000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.548000 503.336000 260.352000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.352000 503.336000 264.156000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.156000 503.336000 267.960000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.960000 503.336000 271.764000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.764000 503.336000 275.568000 491.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 503.336000 284.332000 491.336000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 503.336000 291.928000 491.336000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 489.436000 85.508000 477.436000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 85.496000 489.436000 89.324000 477.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 89.300000 489.436000 96.452000 477.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 96.500000 489.436000 103.220000 477.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.196000 489.436000 110.456000 477.436000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 110.492000 489.436000 118.172000 477.436000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.196000 489.436000 125.288000 477.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.300000 489.436000 131.036000 477.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 131.000000 489.436000 136.736000 477.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 136.700000 489.436000 143.468000 477.436000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 143.400000 489.436000 147.204000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 147.204000 489.436000 151.008000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 151.008000 489.436000 154.812000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.812000 489.436000 158.616000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.616000 489.436000 162.420000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.420000 489.436000 166.224000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.224000 489.436000 170.028000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 170.028000 489.436000 173.832000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.832000 489.436000 177.636000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.636000 489.436000 181.440000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.440000 489.436000 185.244000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.244000 489.436000 189.048000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.048000 489.436000 192.852000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.852000 489.436000 196.656000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.656000 489.436000 200.460000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.460000 489.436000 204.264000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.264000 489.436000 208.068000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.068000 489.436000 211.872000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.872000 489.436000 215.676000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.676000 489.436000 219.480000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.480000 489.436000 223.284000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.284000 489.436000 227.088000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.088000 489.436000 230.892000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.892000 489.436000 234.696000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.696000 489.436000 238.500000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.500000 489.436000 242.304000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.304000 489.436000 246.108000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.108000 489.436000 249.912000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.912000 489.436000 253.716000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.716000 489.436000 257.520000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.520000 489.436000 261.324000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.324000 489.436000 265.128000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.128000 489.436000 268.932000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.932000 489.436000 272.736000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.736000 489.436000 276.540000 477.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 489.436000 284.332000 477.436000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 489.436000 291.928000 477.436000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 475.536000 85.508000 463.536000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 85.496000 475.536000 92.720000 463.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 92.696000 475.536000 96.524000 463.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 96.500000 475.536000 101.312000 463.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.300000 475.536000 107.456000 463.536000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 107.500000 475.536000 111.304000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 111.304000 475.536000 115.108000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 115.108000 475.536000 118.912000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 118.912000 475.536000 122.716000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 122.716000 475.536000 126.520000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 126.520000 475.536000 130.324000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 130.324000 475.536000 134.128000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 134.128000 475.536000 137.932000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.932000 475.536000 141.736000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.736000 475.536000 145.540000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.540000 475.536000 149.344000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.344000 475.536000 153.148000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.148000 475.536000 156.952000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.952000 475.536000 160.756000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.756000 475.536000 164.560000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.560000 475.536000 168.364000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.364000 475.536000 172.168000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.168000 475.536000 175.972000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.972000 475.536000 179.776000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.776000 475.536000 183.580000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.580000 475.536000 187.384000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.384000 475.536000 191.188000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.188000 475.536000 194.992000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 194.992000 475.536000 198.796000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.796000 475.536000 202.600000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.600000 475.536000 206.404000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.404000 475.536000 210.208000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.208000 475.536000 214.012000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.012000 475.536000 217.816000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 217.816000 475.536000 221.620000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.620000 475.536000 225.424000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.424000 475.536000 229.228000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.228000 475.536000 233.032000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.032000 475.536000 236.836000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 236.836000 475.536000 240.640000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.640000 475.536000 244.444000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.444000 475.536000 248.248000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.248000 475.536000 252.052000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.052000 475.536000 255.856000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 255.856000 475.536000 259.660000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.660000 475.536000 263.464000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.464000 475.536000 267.268000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.268000 475.536000 271.072000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.072000 475.536000 274.876000 463.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 475.536000 284.332000 463.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 475.536000 291.928000 463.536000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 461.636000 85.508000 449.636000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 85.496000 461.636000 92.720000 449.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 92.696000 461.636000 100.424000 449.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 100.400000 461.636000 107.492000 449.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.504000 461.636000 111.308000 449.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.308000 461.636000 118.028000 449.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 118.004000 461.636000 125.732000 449.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 125.708000 461.636000 129.536000 449.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 129.512000 461.636000 137.240000 449.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 137.216000 461.636000 144.368000 449.636000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 144.500000 461.636000 148.304000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.400000 461.636000 152.204000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.300000 461.636000 156.104000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.200000 461.636000 160.004000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.100000 461.636000 163.904000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.000000 461.636000 167.804000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 167.900000 461.636000 171.704000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 171.800000 461.636000 175.604000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.700000 461.636000 179.504000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.600000 461.636000 183.404000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.500000 461.636000 187.304000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.400000 461.636000 191.204000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.300000 461.636000 195.104000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.200000 461.636000 199.004000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.100000 461.636000 202.904000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.000000 461.636000 206.804000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.900000 461.636000 210.704000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.800000 461.636000 214.604000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.700000 461.636000 218.504000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.600000 461.636000 222.404000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.500000 461.636000 226.304000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.400000 461.636000 230.204000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.300000 461.636000 234.104000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.200000 461.636000 238.004000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.100000 461.636000 241.904000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.000000 461.636000 245.804000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.900000 461.636000 249.704000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.800000 461.636000 253.604000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.700000 461.636000 257.504000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.600000 461.636000 261.404000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.500000 461.636000 265.304000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.400000 461.636000 269.204000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.300000 461.636000 273.104000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.200000 461.636000 277.004000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.100000 461.636000 280.904000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.000000 461.636000 284.804000 449.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 461.636000 292.032000 449.636000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 447.736000 85.508000 435.736000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 85.496000 447.736000 91.232000 435.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 91.196000 447.736000 98.420000 435.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 98.396000 447.736000 105.620000 435.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 105.596000 447.736000 112.856000 435.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 112.892000 447.736000 116.720000 435.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.696000 447.736000 123.464000 435.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 123.500000 447.736000 131.228000 435.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.204000 447.736000 135.008000 435.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 447.736000 143.816000 435.736000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 143.804000 447.736000 149.540000 435.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 149.504000 447.736000 153.332000 435.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.308000 447.736000 160.988000 435.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 161.012000 447.736000 168.692000 435.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 168.716000 447.736000 175.808000 435.736000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 175.900000 447.736000 179.704000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.800000 447.736000 183.604000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.700000 447.736000 187.504000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.600000 447.736000 191.404000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.500000 447.736000 195.304000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.400000 447.736000 199.204000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.300000 447.736000 203.104000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.200000 447.736000 207.004000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.100000 447.736000 210.904000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.000000 447.736000 214.804000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.900000 447.736000 218.704000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.800000 447.736000 222.604000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.700000 447.736000 226.504000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.600000 447.736000 230.404000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.500000 447.736000 234.304000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.400000 447.736000 238.204000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.300000 447.736000 242.104000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.200000 447.736000 246.004000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.100000 447.736000 249.904000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.000000 447.736000 253.804000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.900000 447.736000 257.704000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.800000 447.736000 261.604000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.700000 447.736000 265.504000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.600000 447.736000 269.404000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.500000 447.736000 273.304000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.400000 447.736000 277.204000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.300000 447.736000 281.104000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.200000 447.736000 285.004000 435.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 447.736000 292.032000 435.736000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 433.756000 86.240000 421.756000 1.000000 0.000000 0.000000 1.000000 C
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 419.736000 85.880000 407.736000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 419.736000 93.056000 407.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.104000 419.736000 104.480000 407.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 104.504000 419.736000 112.184000 407.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 112.208000 419.736000 119.360000 407.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 119.408000 419.736000 125.144000 407.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.108000 419.736000 128.936000 407.736000 1.000000 0.000000 0.000000 1.000000 i
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 128.700000 419.736000 132.504000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.600000 419.736000 136.404000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 136.500000 419.736000 140.304000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.400000 419.736000 144.204000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.300000 419.736000 148.104000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.200000 419.736000 152.004000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.100000 419.736000 155.904000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.000000 419.736000 159.804000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 159.900000 419.736000 163.704000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 163.800000 419.736000 167.604000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 167.700000 419.736000 171.504000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 171.600000 419.736000 175.404000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.500000 419.736000 179.304000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.400000 419.736000 183.204000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.300000 419.736000 187.104000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.200000 419.736000 191.004000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.100000 419.736000 194.904000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.000000 419.736000 198.804000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.900000 419.736000 202.704000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.800000 419.736000 206.604000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.700000 419.736000 210.504000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.600000 419.736000 214.404000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.500000 419.736000 218.304000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.400000 419.736000 222.204000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.300000 419.736000 226.104000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.200000 419.736000 230.004000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.100000 419.736000 233.904000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.000000 419.736000 237.804000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.900000 419.736000 241.704000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.800000 419.736000 245.604000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.700000 419.736000 249.504000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.600000 419.736000 253.404000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.500000 419.736000 257.304000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.400000 419.736000 261.204000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.300000 419.736000 265.104000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.200000 419.736000 269.004000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.100000 419.736000 272.904000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.000000 419.736000 276.804000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.900000 419.736000 280.704000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.800000 419.736000 284.604000 407.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 419.736000 292.032000 407.736000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 405.836000 85.880000 393.836000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 405.836000 93.056000 393.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.104000 405.836000 100.832000 393.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 100.808000 405.836000 108.488000 393.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.512000 405.836000 112.340000 393.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 112.316000 405.836000 119.408000 393.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.420000 405.836000 125.576000 393.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 125.400000 405.836000 129.204000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.300000 405.836000 133.104000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.200000 405.836000 137.004000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.100000 405.836000 140.904000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.000000 405.836000 144.804000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.900000 405.836000 148.704000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.800000 405.836000 152.604000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.700000 405.836000 156.504000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.600000 405.836000 160.404000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.500000 405.836000 164.304000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.400000 405.836000 168.204000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.300000 405.836000 172.104000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.200000 405.836000 176.004000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.100000 405.836000 179.904000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.000000 405.836000 183.804000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.900000 405.836000 187.704000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.800000 405.836000 191.604000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.700000 405.836000 195.504000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.600000 405.836000 199.404000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.500000 405.836000 203.304000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.400000 405.836000 207.204000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.300000 405.836000 211.104000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.200000 405.836000 215.004000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.100000 405.836000 218.904000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.000000 405.836000 222.804000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.900000 405.836000 226.704000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.800000 405.836000 230.604000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.700000 405.836000 234.504000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.600000 405.836000 238.404000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.500000 405.836000 242.304000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.400000 405.836000 246.204000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.300000 405.836000 250.104000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.200000 405.836000 254.004000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.100000 405.836000 257.904000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.000000 405.836000 261.804000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.900000 405.836000 265.704000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.800000 405.836000 269.604000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.700000 405.836000 273.504000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.600000 405.836000 277.404000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.500000 405.836000 281.304000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.400000 405.836000 285.204000 393.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 405.836000 292.032000 393.836000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 391.936000 85.880000 379.936000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 391.936000 93.056000 379.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.104000 391.936000 100.832000 379.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 100.808000 391.936000 108.536000 379.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.512000 391.936000 115.604000 379.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 115.616000 391.936000 123.296000 379.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 123.320000 391.936000 127.124000 379.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 127.124000 391.936000 134.804000 379.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 134.828000 391.936000 142.052000 379.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.028000 391.936000 149.252000 379.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 149.228000 391.936000 156.908000 379.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 156.932000 391.936000 163.088000 379.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 163.000000 391.936000 166.804000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.900000 391.936000 170.704000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 170.800000 391.936000 174.604000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 174.700000 391.936000 178.504000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 178.600000 391.936000 182.404000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 182.500000 391.936000 186.304000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 186.400000 391.936000 190.204000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 190.300000 391.936000 194.104000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 194.200000 391.936000 198.004000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.100000 391.936000 201.904000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.000000 391.936000 205.804000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 205.900000 391.936000 209.704000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 209.800000 391.936000 213.604000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 213.700000 391.936000 217.504000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 217.600000 391.936000 221.404000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.500000 391.936000 225.304000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.400000 391.936000 229.204000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.300000 391.936000 233.104000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.200000 391.936000 237.004000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.100000 391.936000 240.904000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.000000 391.936000 244.804000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.900000 391.936000 248.704000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.800000 391.936000 252.604000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.700000 391.936000 256.504000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.600000 391.936000 260.404000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.500000 391.936000 264.304000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.400000 391.936000 268.204000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.300000 391.936000 272.104000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.200000 391.936000 276.004000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.100000 391.936000 279.904000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.000000 391.936000 283.804000 379.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 391.936000 292.032000 379.936000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 378.036000 85.880000 366.036000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 378.036000 93.056000 366.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.104000 378.036000 100.832000 366.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 100.808000 378.036000 108.536000 366.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.512000 378.036000 115.604000 366.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 115.616000 378.036000 121.352000 366.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.316000 378.036000 128.084000 366.036000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 128.120000 378.036000 131.924000 366.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.924000 378.036000 140.948000 366.036000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 140.924000 378.036000 148.148000 366.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.124000 378.036000 158.384000 366.036000 1.000000 0.000000 0.000000 1.000000 w
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 158.400000 378.036000 162.204000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.204000 378.036000 166.008000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.008000 378.036000 169.812000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.812000 378.036000 173.616000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.616000 378.036000 177.420000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.420000 378.036000 181.224000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.224000 378.036000 185.028000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.028000 378.036000 188.832000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.832000 378.036000 192.636000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.636000 378.036000 196.440000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.440000 378.036000 200.244000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.244000 378.036000 204.048000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.048000 378.036000 207.852000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.852000 378.036000 211.656000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.656000 378.036000 215.460000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.460000 378.036000 219.264000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.264000 378.036000 223.068000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.068000 378.036000 226.872000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.872000 378.036000 230.676000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.676000 378.036000 234.480000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.480000 378.036000 238.284000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.284000 378.036000 242.088000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.088000 378.036000 245.892000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.892000 378.036000 249.696000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.696000 378.036000 253.500000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.500000 378.036000 257.304000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.304000 378.036000 261.108000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.108000 378.036000 264.912000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.912000 378.036000 268.716000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.716000 378.036000 272.520000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.520000 378.036000 276.324000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.324000 378.036000 280.128000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.128000 378.036000 283.932000 366.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 378.036000 292.032000 366.036000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 364.136000 85.880000 352.136000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 364.136000 92.996000 352.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 93.008000 364.136000 98.744000 352.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.708000 364.136000 105.860000 352.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 105.908000 364.136000 117.284000 352.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.308000 364.136000 121.136000 352.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 121.112000 364.136000 127.832000 352.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 127.808000 364.136000 131.612000 352.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.612000 364.136000 136.424000 352.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 136.412000 364.136000 140.240000 352.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 140.216000 364.136000 144.044000 352.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 144.020000 364.136000 151.112000 352.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 151.124000 364.136000 157.280000 352.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.300000 364.136000 161.104000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.104000 364.136000 164.908000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.908000 364.136000 168.712000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.712000 364.136000 172.516000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.516000 364.136000 176.320000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.320000 364.136000 180.124000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.124000 364.136000 183.928000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.928000 364.136000 187.732000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.732000 364.136000 191.536000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.536000 364.136000 195.340000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.340000 364.136000 199.144000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.144000 364.136000 202.948000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.948000 364.136000 206.752000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.752000 364.136000 210.556000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.556000 364.136000 214.360000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.360000 364.136000 218.164000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.164000 364.136000 221.968000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.968000 364.136000 225.772000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.772000 364.136000 229.576000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.576000 364.136000 233.380000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.380000 364.136000 237.184000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.184000 364.136000 240.988000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.988000 364.136000 244.792000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.792000 364.136000 248.596000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.596000 364.136000 252.400000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.400000 364.136000 256.204000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.204000 364.136000 260.008000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.008000 364.136000 263.812000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.812000 364.136000 267.616000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.616000 364.136000 271.420000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.420000 364.136000 275.224000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.224000 364.136000 279.028000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.028000 364.136000 282.832000 352.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 364.136000 292.032000 352.136000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 350.236000 85.880000 338.236000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 350.236000 92.996000 338.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 93.008000 350.236000 98.744000 338.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.708000 350.236000 105.800000 338.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.812000 350.236000 112.964000 338.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 113.012000 350.236000 116.840000 338.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.816000 350.236000 122.972000 338.236000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 122.900000 350.236000 126.704000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 126.704000 350.236000 130.508000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 130.508000 350.236000 134.312000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 134.312000 350.236000 138.116000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 138.116000 350.236000 141.920000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.920000 350.236000 145.724000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.724000 350.236000 149.528000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.528000 350.236000 153.332000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.332000 350.236000 157.136000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.136000 350.236000 160.940000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.940000 350.236000 164.744000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.744000 350.236000 168.548000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.548000 350.236000 172.352000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.352000 350.236000 176.156000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.156000 350.236000 179.960000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.960000 350.236000 183.764000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.764000 350.236000 187.568000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.568000 350.236000 191.372000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.372000 350.236000 195.176000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.176000 350.236000 198.980000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.980000 350.236000 202.784000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.784000 350.236000 206.588000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.588000 350.236000 210.392000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.392000 350.236000 214.196000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.196000 350.236000 218.000000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.000000 350.236000 221.804000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.804000 350.236000 225.608000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.608000 350.236000 229.412000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.412000 350.236000 233.216000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.216000 350.236000 237.020000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.020000 350.236000 240.824000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.824000 350.236000 244.628000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.628000 350.236000 248.432000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.432000 350.236000 252.236000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.236000 350.236000 256.040000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.040000 350.236000 259.844000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.844000 350.236000 263.648000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.648000 350.236000 267.452000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.452000 350.236000 271.256000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.256000 350.236000 275.060000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.060000 350.236000 278.864000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 278.864000 350.236000 282.668000 338.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 350.236000 292.032000 338.236000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 336.336000 85.880000 324.336000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 336.336000 93.632000 324.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 93.608000 336.336000 100.700000 324.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 100.712000 336.336000 106.448000 324.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 106.412000 336.336000 112.148000 324.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.112000 336.336000 115.940000 324.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.916000 336.336000 123.008000 324.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 123.020000 336.336000 129.176000 324.336000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 129.200000 336.336000 133.004000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.100000 336.336000 136.904000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.000000 336.336000 140.804000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.900000 336.336000 144.704000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.800000 336.336000 148.604000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.700000 336.336000 152.504000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.600000 336.336000 156.404000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.500000 336.336000 160.304000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.400000 336.336000 164.204000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.300000 336.336000 168.104000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.200000 336.336000 172.004000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.100000 336.336000 175.904000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.000000 336.336000 179.804000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.900000 336.336000 183.704000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.800000 336.336000 187.604000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.700000 336.336000 191.504000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.600000 336.336000 195.404000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.500000 336.336000 199.304000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.400000 336.336000 203.204000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.300000 336.336000 207.104000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.200000 336.336000 211.004000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.100000 336.336000 214.904000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.000000 336.336000 218.804000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.900000 336.336000 222.704000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.800000 336.336000 226.604000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.700000 336.336000 230.504000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.600000 336.336000 234.404000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.500000 336.336000 238.304000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.400000 336.336000 242.204000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.300000 336.336000 246.104000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.200000 336.336000 250.004000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.100000 336.336000 253.904000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.000000 336.336000 257.804000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.900000 336.336000 261.704000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.800000 336.336000 265.604000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.700000 336.336000 269.504000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.600000 336.336000 273.404000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.500000 336.336000 277.304000 324.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 336.336000 284.332000 324.336000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 336.336000 291.928000 324.336000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 322.436000 85.880000 310.436000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 322.436000 93.632000 310.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 93.608000 322.436000 100.700000 310.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 100.712000 322.436000 106.868000 310.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.916000 322.436000 111.728000 310.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 111.716000 322.436000 119.444000 310.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 119.420000 322.436000 127.148000 310.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 127.124000 322.436000 131.936000 310.436000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 131.900000 322.436000 135.704000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 135.704000 322.436000 139.508000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.508000 322.436000 143.312000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 143.312000 322.436000 147.116000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 147.116000 322.436000 150.920000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.920000 322.436000 154.724000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.724000 322.436000 158.528000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.528000 322.436000 162.332000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.332000 322.436000 166.136000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.136000 322.436000 169.940000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.940000 322.436000 173.744000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.744000 322.436000 177.548000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.548000 322.436000 181.352000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.352000 322.436000 185.156000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.156000 322.436000 188.960000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.960000 322.436000 192.764000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.764000 322.436000 196.568000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.568000 322.436000 200.372000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.372000 322.436000 204.176000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.176000 322.436000 207.980000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.980000 322.436000 211.784000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.784000 322.436000 215.588000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.588000 322.436000 219.392000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.392000 322.436000 223.196000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.196000 322.436000 227.000000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.000000 322.436000 230.804000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.804000 322.436000 234.608000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.608000 322.436000 238.412000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.412000 322.436000 242.216000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.216000 322.436000 246.020000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.020000 322.436000 249.824000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.824000 322.436000 253.628000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.628000 322.436000 257.432000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.432000 322.436000 261.236000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.236000 322.436000 265.040000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.040000 322.436000 268.844000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.844000 322.436000 272.648000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.648000 322.436000 276.452000 310.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 322.436000 284.332000 310.436000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 322.436000 291.928000 310.436000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 308.536000 85.880000 296.536000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 308.536000 93.632000 296.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 93.608000 308.536000 99.344000 296.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.308000 308.536000 103.136000 296.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.112000 308.536000 109.268000 296.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 109.316000 308.536000 114.128000 296.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 114.116000 308.536000 117.944000 296.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 117.920000 308.536000 125.012000 296.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.024000 308.536000 128.828000 296.536000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 128.828000 308.536000 132.632000 296.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 132.632000 308.536000 141.296000 296.536000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 141.332000 308.536000 149.012000 296.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 149.036000 308.536000 156.188000 296.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 156.236000 308.536000 161.048000 296.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 161.036000 308.536000 168.764000 296.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 168.740000 308.536000 175.892000 296.536000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 175.800000 308.536000 179.604000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.700000 308.536000 183.504000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.600000 308.536000 187.404000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.500000 308.536000 191.304000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.400000 308.536000 195.204000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.300000 308.536000 199.104000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.200000 308.536000 203.004000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.100000 308.536000 206.904000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.000000 308.536000 210.804000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.900000 308.536000 214.704000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.800000 308.536000 218.604000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.700000 308.536000 222.504000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.600000 308.536000 226.404000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.500000 308.536000 230.304000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.400000 308.536000 234.204000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.300000 308.536000 238.104000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.200000 308.536000 242.004000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.100000 308.536000 245.904000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.000000 308.536000 249.804000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.900000 308.536000 253.704000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.800000 308.536000 257.604000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.700000 308.536000 261.504000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.600000 308.536000 265.404000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.500000 308.536000 269.304000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.400000 308.536000 273.204000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.300000 308.536000 277.104000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.200000 308.536000 281.004000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.100000 308.536000 284.904000 296.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 308.536000 292.032000 296.536000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 294.636000 85.880000 282.636000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 294.636000 93.632000 282.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 93.608000 294.636000 99.344000 282.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.308000 294.636000 103.136000 282.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.112000 294.636000 109.268000 282.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 109.316000 294.636000 114.128000 282.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 114.116000 294.636000 125.492000 282.636000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 125.516000 294.636000 132.668000 282.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 132.716000 294.636000 138.872000 282.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 138.920000 294.636000 142.724000 282.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.724000 294.636000 150.404000 282.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 150.428000 294.636000 157.520000 282.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 157.532000 294.636000 164.252000 282.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 164.228000 294.636000 171.452000 282.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 171.428000 294.636000 177.164000 282.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 177.128000 294.636000 184.280000 282.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 184.328000 294.636000 189.140000 282.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 189.128000 294.636000 192.956000 282.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 192.932000 294.636000 200.156000 282.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 200.132000 294.636000 207.860000 282.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 207.836000 294.636000 213.992000 282.636000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 214.000000 294.636000 217.804000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 217.900000 294.636000 221.704000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.800000 294.636000 225.604000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.700000 294.636000 229.504000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.600000 294.636000 233.404000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.500000 294.636000 237.304000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.400000 294.636000 241.204000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.300000 294.636000 245.104000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.200000 294.636000 249.004000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.100000 294.636000 252.904000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.000000 294.636000 256.804000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.900000 294.636000 260.704000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.800000 294.636000 264.604000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.700000 294.636000 268.504000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.600000 294.636000 272.404000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.500000 294.636000 276.304000 282.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 294.636000 284.332000 282.636000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 294.636000 291.928000 282.636000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 280.736000 85.880000 268.736000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 280.736000 93.632000 268.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 93.608000 280.736000 99.344000 268.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.308000 280.736000 106.076000 268.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 106.112000 280.736000 112.268000 268.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.316000 280.736000 119.468000 268.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 119.516000 280.736000 127.244000 268.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 127.220000 280.736000 132.032000 268.736000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.020000 280.736000 139.748000 268.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 139.724000 280.736000 146.816000 268.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.828000 280.736000 158.204000 268.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 158.228000 280.736000 165.956000 268.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 165.932000 280.736000 177.308000 268.736000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 177.332000 280.736000 183.488000 268.736000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 183.400000 280.736000 187.204000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.300000 280.736000 191.104000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.200000 280.736000 195.004000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.100000 280.736000 198.904000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.000000 280.736000 202.804000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.900000 280.736000 206.704000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.800000 280.736000 210.604000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.700000 280.736000 214.504000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.600000 280.736000 218.404000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.500000 280.736000 222.304000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.400000 280.736000 226.204000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.300000 280.736000 230.104000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.200000 280.736000 234.004000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.100000 280.736000 237.904000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.000000 280.736000 241.804000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.900000 280.736000 245.704000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.800000 280.736000 249.604000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.700000 280.736000 253.504000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.600000 280.736000 257.404000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.500000 280.736000 261.304000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.400000 280.736000 265.204000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.300000 280.736000 269.104000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.200000 280.736000 273.004000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.100000 280.736000 276.904000 268.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 280.736000 284.332000 268.736000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 280.736000 291.928000 268.736000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 266.836000 85.880000 254.836000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 266.836000 93.632000 254.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 93.608000 266.836000 99.344000 254.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.308000 266.836000 106.076000 254.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 106.112000 266.836000 112.268000 254.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.316000 266.836000 116.144000 254.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.120000 266.836000 123.212000 254.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 123.224000 266.836000 128.960000 254.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 128.924000 266.836000 132.728000 254.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 132.728000 266.836000 141.536000 254.836000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 141.524000 266.836000 149.252000 254.836000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 149.228000 266.836000 153.056000 254.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.032000 266.836000 156.860000 254.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 156.836000 266.836000 164.516000 254.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 164.540000 266.836000 168.368000 254.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 168.344000 266.836000 176.072000 254.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 176.048000 266.836000 183.728000 254.836000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 183.800000 266.836000 187.604000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.700000 266.836000 191.504000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.600000 266.836000 195.404000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.500000 266.836000 199.304000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.400000 266.836000 203.204000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.300000 266.836000 207.104000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.200000 266.836000 211.004000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.100000 266.836000 214.904000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.000000 266.836000 218.804000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.900000 266.836000 222.704000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.800000 266.836000 226.604000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.700000 266.836000 230.504000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.600000 266.836000 234.404000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.500000 266.836000 238.304000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.400000 266.836000 242.204000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.300000 266.836000 246.104000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.200000 266.836000 250.004000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.100000 266.836000 253.904000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.000000 266.836000 257.804000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.900000 266.836000 261.704000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.800000 266.836000 265.604000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.700000 266.836000 269.504000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.600000 266.836000 273.404000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.500000 266.836000 277.304000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.400000 266.836000 281.204000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.300000 266.836000 285.104000 254.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 266.836000 292.032000 254.836000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 252.936000 85.880000 240.936000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 252.936000 93.128000 240.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.104000 252.936000 100.256000 240.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 100.304000 252.936000 105.116000 240.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 105.104000 252.936000 108.908000 240.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.908000 252.936000 114.644000 240.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 114.608000 252.936000 121.760000 240.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 121.808000 252.936000 128.528000 240.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 128.504000 252.936000 135.764000 240.936000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 135.700000 252.936000 139.504000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.504000 252.936000 143.308000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 143.308000 252.936000 147.112000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 147.112000 252.936000 150.916000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.916000 252.936000 154.720000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.720000 252.936000 158.524000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.524000 252.936000 162.328000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.328000 252.936000 166.132000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.132000 252.936000 169.936000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.936000 252.936000 173.740000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.740000 252.936000 177.544000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.544000 252.936000 181.348000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.348000 252.936000 185.152000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.152000 252.936000 188.956000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.956000 252.936000 192.760000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.760000 252.936000 196.564000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.564000 252.936000 200.368000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.368000 252.936000 204.172000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.172000 252.936000 207.976000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.976000 252.936000 211.780000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.780000 252.936000 215.584000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.584000 252.936000 219.388000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.388000 252.936000 223.192000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.192000 252.936000 226.996000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.996000 252.936000 230.800000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.800000 252.936000 234.604000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.604000 252.936000 238.408000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.408000 252.936000 242.212000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.212000 252.936000 246.016000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.016000 252.936000 249.820000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.820000 252.936000 253.624000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.624000 252.936000 257.428000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.428000 252.936000 261.232000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.232000 252.936000 265.036000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.036000 252.936000 268.840000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.840000 252.936000 272.644000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.644000 252.936000 276.448000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.448000 252.936000 280.252000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.252000 252.936000 284.056000 240.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 252.936000 292.032000 240.936000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 239.036000 85.880000 227.036000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 239.036000 93.128000 227.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.104000 239.036000 99.824000 227.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 99.800000 239.036000 107.060000 227.036000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 107.096000 239.036000 111.908000 227.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 111.896000 239.036000 119.048000 227.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 119.096000 239.036000 122.924000 227.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.900000 239.036000 126.728000 227.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 126.704000 239.036000 132.860000 227.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 132.800000 239.036000 136.604000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 136.700000 239.036000 140.504000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.600000 239.036000 144.404000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.500000 239.036000 148.304000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.400000 239.036000 152.204000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.300000 239.036000 156.104000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.200000 239.036000 160.004000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.100000 239.036000 163.904000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.000000 239.036000 167.804000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 167.900000 239.036000 171.704000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 171.800000 239.036000 175.604000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.700000 239.036000 179.504000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.600000 239.036000 183.404000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.500000 239.036000 187.304000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.400000 239.036000 191.204000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.300000 239.036000 195.104000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.200000 239.036000 199.004000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.100000 239.036000 202.904000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.000000 239.036000 206.804000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.900000 239.036000 210.704000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.800000 239.036000 214.604000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.700000 239.036000 218.504000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.600000 239.036000 222.404000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.500000 239.036000 226.304000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.400000 239.036000 230.204000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.300000 239.036000 234.104000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.200000 239.036000 238.004000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.100000 239.036000 241.904000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.000000 239.036000 245.804000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.900000 239.036000 249.704000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.800000 239.036000 253.604000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.700000 239.036000 257.504000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.600000 239.036000 261.404000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.500000 239.036000 265.304000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.400000 239.036000 269.204000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.300000 239.036000 273.104000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.200000 239.036000 277.004000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.100000 239.036000 280.904000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.000000 239.036000 284.804000 227.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 239.036000 292.032000 227.036000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 225.136000 85.880000 213.136000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 85.904000 225.136000 93.128000 213.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.104000 225.136000 100.832000 213.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 100.808000 225.136000 104.636000 213.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.612000 225.136000 109.052000 213.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 109.016000 225.136000 116.108000 213.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 116.120000 225.136000 121.856000 213.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.820000 225.136000 129.044000 213.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.020000 225.136000 136.748000 213.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 136.724000 225.136000 142.880000 213.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 142.928000 225.136000 146.732000 213.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.732000 225.136000 151.544000 213.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 151.532000 225.136000 157.268000 213.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 157.232000 225.136000 164.324000 213.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 164.336000 225.136000 171.428000 213.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 171.440000 225.136000 177.596000 213.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 177.700000 225.136000 181.504000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.504000 225.136000 185.308000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.308000 225.136000 189.112000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.112000 225.136000 192.916000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.916000 225.136000 196.720000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.720000 225.136000 200.524000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.524000 225.136000 204.328000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.328000 225.136000 208.132000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.132000 225.136000 211.936000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.936000 225.136000 215.740000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.740000 225.136000 219.544000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.544000 225.136000 223.348000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.348000 225.136000 227.152000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.152000 225.136000 230.956000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.956000 225.136000 234.760000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.760000 225.136000 238.564000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.564000 225.136000 242.368000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.368000 225.136000 246.172000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.172000 225.136000 249.976000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.976000 225.136000 253.780000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.780000 225.136000 257.584000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.584000 225.136000 261.388000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.388000 225.136000 265.192000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.192000 225.136000 268.996000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.996000 225.136000 272.800000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.800000 225.136000 276.604000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.604000 225.136000 280.408000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.408000 225.136000 284.212000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 284.212000 225.136000 288.016000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 288.016000 225.136000 291.820000 213.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 211.236000 100.412000 199.236000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 100.400000 211.236000 107.624000 199.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 107.600000 211.236000 115.328000 199.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 115.304000 211.236000 122.984000 199.236000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 123.008000 211.236000 126.836000 199.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 126.812000 211.236000 133.964000 199.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 134.012000 211.236000 140.168000 199.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 140.216000 211.236000 144.020000 199.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 144.020000 211.236000 152.336000 199.236000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 152.324000 211.236000 156.152000 199.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 156.128000 211.236000 161.864000 199.236000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 161.800000 211.236000 165.604000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.604000 211.236000 169.408000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.408000 211.236000 173.212000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.212000 211.236000 177.016000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.016000 211.236000 180.820000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.820000 211.236000 184.624000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.624000 211.236000 188.428000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.428000 211.236000 192.232000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.232000 211.236000 196.036000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.036000 211.236000 199.840000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.840000 211.236000 203.644000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.644000 211.236000 207.448000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.448000 211.236000 211.252000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.252000 211.236000 215.056000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.056000 211.236000 218.860000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.860000 211.236000 222.664000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.664000 211.236000 226.468000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.468000 211.236000 230.272000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.272000 211.236000 234.076000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.076000 211.236000 237.880000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.880000 211.236000 241.684000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.684000 211.236000 245.488000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.488000 211.236000 249.292000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.292000 211.236000 253.096000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.096000 211.236000 256.900000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.900000 211.236000 260.704000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.704000 211.236000 264.508000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.508000 211.236000 268.312000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.312000 211.236000 272.116000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.116000 211.236000 275.920000 199.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 211.236000 284.332000 199.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 211.236000 291.928000 199.236000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 197.336000 98.864000 185.336000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 98.900000 197.336000 102.728000 185.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 102.704000 197.336000 110.432000 185.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.408000 197.336000 117.500000 185.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 117.512000 197.336000 123.668000 185.336000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 123.600000 197.336000 127.404000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 127.404000 197.336000 131.208000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 131.208000 197.336000 135.012000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 135.012000 197.336000 138.816000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 138.816000 197.336000 142.620000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 142.620000 197.336000 146.424000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.424000 197.336000 150.228000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.228000 197.336000 154.032000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.032000 197.336000 157.836000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.836000 197.336000 161.640000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.640000 197.336000 165.444000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.444000 197.336000 169.248000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.248000 197.336000 173.052000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.052000 197.336000 176.856000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.856000 197.336000 180.660000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.660000 197.336000 184.464000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.464000 197.336000 188.268000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.268000 197.336000 192.072000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.072000 197.336000 195.876000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.876000 197.336000 199.680000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.680000 197.336000 203.484000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.484000 197.336000 207.288000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.288000 197.336000 211.092000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.092000 197.336000 214.896000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.896000 197.336000 218.700000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.700000 197.336000 222.504000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.504000 197.336000 226.308000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.308000 197.336000 230.112000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.112000 197.336000 233.916000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.916000 197.336000 237.720000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.720000 197.336000 241.524000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.524000 197.336000 245.328000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.328000 197.336000 249.132000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.132000 197.336000 252.936000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.936000 197.336000 256.740000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.740000 197.336000 260.544000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.544000 197.336000 264.348000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.348000 197.336000 268.152000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.152000 197.336000 271.956000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.956000 197.336000 275.760000 185.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 197.336000 284.332000 185.336000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 197.336000 291.928000 185.336000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 183.436000 99.020000 171.436000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 98.996000 183.436000 106.676000 171.436000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 106.700000 183.436000 112.436000 171.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.400000 183.436000 120.128000 171.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 120.104000 183.436000 126.824000 171.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 126.800000 183.436000 133.892000 171.436000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 133.900000 183.436000 137.704000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.800000 183.436000 141.604000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.700000 183.436000 145.504000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.600000 183.436000 149.404000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.500000 183.436000 153.304000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.400000 183.436000 157.204000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.300000 183.436000 161.104000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.200000 183.436000 165.004000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.100000 183.436000 168.904000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.000000 183.436000 172.804000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.900000 183.436000 176.704000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.800000 183.436000 180.604000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.700000 183.436000 184.504000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.600000 183.436000 188.404000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.500000 183.436000 192.304000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.400000 183.436000 196.204000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.300000 183.436000 200.104000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.200000 183.436000 204.004000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.100000 183.436000 207.904000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.000000 183.436000 211.804000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.900000 183.436000 215.704000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.800000 183.436000 219.604000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.700000 183.436000 223.504000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.600000 183.436000 227.404000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.500000 183.436000 231.304000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.400000 183.436000 235.204000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 235.300000 183.436000 239.104000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 239.200000 183.436000 243.004000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 243.100000 183.436000 246.904000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 247.000000 183.436000 250.804000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.900000 183.436000 254.704000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.800000 183.436000 258.604000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.700000 183.436000 262.504000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.600000 183.436000 266.404000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.500000 183.436000 270.304000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.400000 183.436000 274.204000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.300000 183.436000 278.104000 171.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 183.436000 284.332000 171.436000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 183.436000 291.928000 171.436000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 169.456000 87.104000 157.456000 1.000000 0.000000 0.000000 1.000000 D
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 155.436000 86.312000 143.436000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 86.300000 155.436000 93.452000 143.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.500000 155.436000 102.020000 143.436000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 101.996000 155.436000 109.220000 143.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.196000 155.436000 116.876000 143.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.900000 155.436000 120.728000 143.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 120.704000 155.436000 124.532000 143.436000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 124.508000 155.436000 130.664000 143.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 130.600000 155.436000 134.404000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 134.404000 155.436000 138.208000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 138.208000 155.436000 142.012000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 142.012000 155.436000 145.816000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.816000 155.436000 149.620000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.620000 155.436000 153.424000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.424000 155.436000 157.228000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.228000 155.436000 161.032000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.032000 155.436000 164.836000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.836000 155.436000 168.640000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.640000 155.436000 172.444000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.444000 155.436000 176.248000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.248000 155.436000 180.052000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.052000 155.436000 183.856000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.856000 155.436000 187.660000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.660000 155.436000 191.464000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.464000 155.436000 195.268000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.268000 155.436000 199.072000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.072000 155.436000 202.876000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.876000 155.436000 206.680000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.680000 155.436000 210.484000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.484000 155.436000 214.288000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.288000 155.436000 218.092000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.092000 155.436000 221.896000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.896000 155.436000 225.700000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.700000 155.436000 229.504000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.504000 155.436000 233.308000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.308000 155.436000 237.112000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.112000 155.436000 240.916000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.916000 155.436000 244.720000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.720000 155.436000 248.524000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.524000 155.436000 252.328000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.328000 155.436000 256.132000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.132000 155.436000 259.936000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.936000 155.436000 263.740000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.740000 155.436000 267.544000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.544000 155.436000 271.348000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.348000 155.436000 275.152000 143.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 155.436000 284.332000 143.436000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 155.436000 291.928000 143.436000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 141.536000 86.312000 129.536000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 86.300000 141.536000 93.452000 129.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.500000 141.536000 101.228000 129.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 101.204000 141.536000 105.032000 129.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 105.008000 141.536000 108.836000 129.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 108.812000 141.536000 115.964000 129.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.012000 141.536000 122.168000 129.536000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 122.100000 141.536000 125.904000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 126.000000 141.536000 129.804000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.900000 141.536000 133.704000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.800000 141.536000 137.604000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.700000 141.536000 141.504000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.600000 141.536000 145.404000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.500000 141.536000 149.304000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.400000 141.536000 153.204000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.300000 141.536000 157.104000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.200000 141.536000 161.004000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.100000 141.536000 164.904000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.000000 141.536000 168.804000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.900000 141.536000 172.704000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.800000 141.536000 176.604000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.700000 141.536000 180.504000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.600000 141.536000 184.404000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.500000 141.536000 188.304000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.400000 141.536000 192.204000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.300000 141.536000 196.104000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.200000 141.536000 200.004000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.100000 141.536000 203.904000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.000000 141.536000 207.804000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.900000 141.536000 211.704000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.800000 141.536000 215.604000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.700000 141.536000 219.504000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.600000 141.536000 223.404000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.500000 141.536000 227.304000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.400000 141.536000 231.204000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.300000 141.536000 235.104000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 235.200000 141.536000 239.004000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 239.100000 141.536000 242.904000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 243.000000 141.536000 246.804000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.900000 141.536000 250.704000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.800000 141.536000 254.604000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.700000 141.536000 258.504000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.600000 141.536000 262.404000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.500000 141.536000 266.304000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.400000 141.536000 270.204000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.300000 141.536000 274.104000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.200000 141.536000 278.004000 129.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 141.536000 284.332000 129.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 141.536000 291.928000 129.536000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 127.636000 86.312000 115.636000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 86.300000 127.636000 93.392000 115.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 93.404000 127.636000 100.124000 115.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 100.100000 127.636000 103.928000 115.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.904000 127.636000 111.584000 115.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 111.608000 127.636000 119.336000 115.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 119.312000 127.636000 126.536000 115.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 126.512000 127.636000 134.240000 115.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 134.216000 127.636000 140.372000 115.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 140.420000 127.636000 144.224000 115.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 144.224000 127.636000 149.036000 115.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 149.024000 127.636000 154.760000 115.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 154.724000 127.636000 161.816000 115.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 161.828000 127.636000 168.920000 115.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 168.932000 127.636000 175.088000 115.636000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 175.100000 127.636000 178.904000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.000000 127.636000 182.804000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 182.900000 127.636000 186.704000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 186.800000 127.636000 190.604000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 190.700000 127.636000 194.504000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 194.600000 127.636000 198.404000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.500000 127.636000 202.304000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.400000 127.636000 206.204000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.300000 127.636000 210.104000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.200000 127.636000 214.004000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.100000 127.636000 217.904000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.000000 127.636000 221.804000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.900000 127.636000 225.704000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.800000 127.636000 229.604000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.700000 127.636000 233.504000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.600000 127.636000 237.404000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.500000 127.636000 241.304000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.400000 127.636000 245.204000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.300000 127.636000 249.104000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.200000 127.636000 253.004000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.100000 127.636000 256.904000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.000000 127.636000 260.804000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.900000 127.636000 264.704000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.800000 127.636000 268.604000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.700000 127.636000 272.504000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.600000 127.636000 276.404000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.500000 127.636000 280.304000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.400000 127.636000 284.204000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 284.300000 127.636000 288.104000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 288.200000 127.636000 292.004000 115.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.400000 672.936000 343.208000 660.936000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 343.196000 672.936000 350.288000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 350.300000 672.936000 357.392000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.404000 672.936000 364.124000 660.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 364.100000 672.936000 371.828000 660.936000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 371.800000 672.936000 375.604000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.604000 672.936000 379.408000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.408000 672.936000 383.212000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.212000 672.936000 387.016000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.016000 672.936000 390.820000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.820000 672.936000 394.624000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.624000 672.936000 398.428000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.428000 672.936000 402.232000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.232000 672.936000 406.036000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.036000 672.936000 409.840000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.840000 672.936000 413.644000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.644000 672.936000 417.448000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.448000 672.936000 421.252000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.252000 672.936000 425.056000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.056000 672.936000 428.860000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.860000 672.936000 432.664000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.664000 672.936000 436.468000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.468000 672.936000 440.272000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.272000 672.936000 444.076000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.076000 672.936000 447.880000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.880000 672.936000 451.684000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.684000 672.936000 455.488000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.488000 672.936000 459.292000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.292000 672.936000 463.096000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.096000 672.936000 466.900000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.900000 672.936000 470.704000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.704000 672.936000 474.508000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.508000 672.936000 478.312000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.312000 672.936000 482.116000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.116000 672.936000 485.920000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.920000 672.936000 489.724000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.724000 672.936000 493.528000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.528000 672.936000 497.332000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.332000 672.936000 501.136000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.136000 672.936000 504.940000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.940000 672.936000 508.744000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.744000 672.936000 512.548000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.548000 672.936000 516.352000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.352000 672.936000 520.156000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 672.936000 527.932000 660.936000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 672.936000 535.528000 660.936000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.400000 659.036000 343.580000 647.036000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 343.604000 659.036000 351.332000 647.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 351.308000 659.036000 358.400000 647.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 358.412000 659.036000 364.568000 647.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 364.616000 659.036000 369.428000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 369.416000 659.036000 377.144000 647.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 377.120000 659.036000 384.848000 647.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 384.824000 659.036000 389.636000 647.036000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 389.600000 659.036000 393.404000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.404000 659.036000 397.208000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.208000 659.036000 401.012000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.012000 659.036000 404.816000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.816000 659.036000 408.620000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.620000 659.036000 412.424000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.424000 659.036000 416.228000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.228000 659.036000 420.032000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.032000 659.036000 423.836000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.836000 659.036000 427.640000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.640000 659.036000 431.444000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.444000 659.036000 435.248000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.248000 659.036000 439.052000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.052000 659.036000 442.856000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.856000 659.036000 446.660000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.660000 659.036000 450.464000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.464000 659.036000 454.268000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.268000 659.036000 458.072000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.072000 659.036000 461.876000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.876000 659.036000 465.680000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.680000 659.036000 469.484000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.484000 659.036000 473.288000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.288000 659.036000 477.092000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.092000 659.036000 480.896000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.896000 659.036000 484.700000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.700000 659.036000 488.504000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.504000 659.036000 492.308000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.308000 659.036000 496.112000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.112000 659.036000 499.916000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.916000 659.036000 503.720000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.720000 659.036000 507.524000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.524000 659.036000 511.328000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.328000 659.036000 515.132000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.132000 659.036000 518.936000 647.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 659.036000 527.932000 647.036000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 659.036000 535.528000 647.036000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.400000 645.136000 344.228000 633.136000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 344.204000 645.136000 351.356000 633.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 351.404000 645.136000 358.664000 633.136000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 358.600000 645.136000 362.404000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.404000 645.136000 366.208000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.208000 645.136000 370.012000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.012000 645.136000 373.816000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.816000 645.136000 377.620000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.620000 645.136000 381.424000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.424000 645.136000 385.228000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.228000 645.136000 389.032000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.032000 645.136000 392.836000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.836000 645.136000 396.640000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.640000 645.136000 400.444000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.444000 645.136000 404.248000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.248000 645.136000 408.052000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.052000 645.136000 411.856000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.856000 645.136000 415.660000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.660000 645.136000 419.464000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.464000 645.136000 423.268000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.268000 645.136000 427.072000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.072000 645.136000 430.876000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.876000 645.136000 434.680000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.680000 645.136000 438.484000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.484000 645.136000 442.288000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.288000 645.136000 446.092000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.092000 645.136000 449.896000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.896000 645.136000 453.700000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.700000 645.136000 457.504000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.504000 645.136000 461.308000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.308000 645.136000 465.112000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.112000 645.136000 468.916000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.916000 645.136000 472.720000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.720000 645.136000 476.524000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.524000 645.136000 480.328000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.328000 645.136000 484.132000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.132000 645.136000 487.936000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 487.936000 645.136000 491.740000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.740000 645.136000 495.544000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.544000 645.136000 499.348000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.348000 645.136000 503.152000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.152000 645.136000 506.956000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.956000 645.136000 510.760000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.760000 645.136000 514.564000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.564000 645.136000 518.368000 633.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 645.136000 527.932000 633.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 645.136000 535.528000 633.136000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 631.236000 329.912000 619.236000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 329.900000 631.236000 333.728000 619.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 333.704000 631.236000 337.532000 619.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 337.508000 631.236000 341.336000 619.236000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 341.300000 631.236000 345.104000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 345.104000 631.236000 348.908000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 348.908000 631.236000 352.712000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 352.712000 631.236000 356.516000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 356.516000 631.236000 360.320000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.320000 631.236000 364.124000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 364.124000 631.236000 367.928000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.928000 631.236000 371.732000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.732000 631.236000 375.536000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.536000 631.236000 379.340000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.340000 631.236000 383.144000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.144000 631.236000 386.948000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.948000 631.236000 390.752000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.752000 631.236000 394.556000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.556000 631.236000 398.360000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.360000 631.236000 402.164000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.164000 631.236000 405.968000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.968000 631.236000 409.772000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.772000 631.236000 413.576000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.576000 631.236000 417.380000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.380000 631.236000 421.184000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.184000 631.236000 424.988000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.988000 631.236000 428.792000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.792000 631.236000 432.596000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.596000 631.236000 436.400000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.400000 631.236000 440.204000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.204000 631.236000 444.008000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.008000 631.236000 447.812000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.812000 631.236000 451.616000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.616000 631.236000 455.420000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.420000 631.236000 459.224000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.224000 631.236000 463.028000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.028000 631.236000 466.832000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.832000 631.236000 470.636000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.636000 631.236000 474.440000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.440000 631.236000 478.244000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.244000 631.236000 482.048000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.048000 631.236000 485.852000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.852000 631.236000 489.656000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.656000 631.236000 493.460000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.460000 631.236000 497.264000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.264000 631.236000 501.068000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.068000 631.236000 504.872000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.872000 631.236000 508.676000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.676000 631.236000 512.480000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.480000 631.236000 516.284000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.284000 631.236000 520.088000 619.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 631.236000 527.932000 619.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 631.236000 535.528000 619.236000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 617.336000 329.912000 605.336000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 329.900000 617.336000 333.728000 605.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 333.704000 617.336000 339.860000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 339.908000 617.336000 347.636000 605.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 347.612000 617.336000 351.416000 605.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 351.416000 617.336000 356.228000 605.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 356.216000 617.336000 363.440000 605.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 363.416000 617.336000 373.676000 605.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 373.712000 617.336000 380.804000 605.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 380.816000 617.336000 384.644000 605.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 384.620000 617.336000 390.776000 605.336000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 390.800000 617.336000 394.604000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.604000 617.336000 398.408000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.408000 617.336000 402.212000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.212000 617.336000 406.016000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.016000 617.336000 409.820000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.820000 617.336000 413.624000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.624000 617.336000 417.428000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.428000 617.336000 421.232000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.232000 617.336000 425.036000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.036000 617.336000 428.840000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.840000 617.336000 432.644000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.644000 617.336000 436.448000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.448000 617.336000 440.252000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.252000 617.336000 444.056000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.056000 617.336000 447.860000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.860000 617.336000 451.664000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.664000 617.336000 455.468000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.468000 617.336000 459.272000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.272000 617.336000 463.076000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.076000 617.336000 466.880000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.880000 617.336000 470.684000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.684000 617.336000 474.488000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.488000 617.336000 478.292000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.292000 617.336000 482.096000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.096000 617.336000 485.900000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.900000 617.336000 489.704000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.704000 617.336000 493.508000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.508000 617.336000 497.312000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.312000 617.336000 501.116000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.116000 617.336000 504.920000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.920000 617.336000 508.724000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.724000 617.336000 512.528000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.528000 617.336000 516.332000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.332000 617.336000 520.136000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.136000 617.336000 523.940000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.940000 617.336000 527.744000 605.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 617.336000 535.632000 605.336000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 603.436000 329.912000 591.436000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 329.900000 603.436000 333.728000 591.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 333.704000 603.436000 339.860000 591.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 339.908000 603.436000 347.636000 591.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 347.612000 603.436000 357.872000 591.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 357.908000 603.436000 365.060000 591.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 365.108000 603.436000 371.264000 591.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 371.312000 603.436000 379.040000 591.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 379.016000 603.436000 386.108000 591.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 386.120000 603.436000 391.856000 591.436000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 391.700000 603.436000 395.504000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.600000 603.436000 399.404000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.500000 603.436000 403.304000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.400000 603.436000 407.204000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.300000 603.436000 411.104000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.200000 603.436000 415.004000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.100000 603.436000 418.904000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.000000 603.436000 422.804000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.900000 603.436000 426.704000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.800000 603.436000 430.604000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.700000 603.436000 434.504000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.600000 603.436000 438.404000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.500000 603.436000 442.304000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.400000 603.436000 446.204000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.300000 603.436000 450.104000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.200000 603.436000 454.004000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.100000 603.436000 457.904000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.000000 603.436000 461.804000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.900000 603.436000 465.704000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.800000 603.436000 469.604000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.700000 603.436000 473.504000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.600000 603.436000 477.404000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.500000 603.436000 481.304000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.400000 603.436000 485.204000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.300000 603.436000 489.104000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.200000 603.436000 493.004000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.100000 603.436000 496.904000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.000000 603.436000 500.804000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.900000 603.436000 504.704000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.800000 603.436000 508.604000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.700000 603.436000 512.504000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.600000 603.436000 516.404000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.500000 603.436000 520.304000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.400000 603.436000 524.204000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.300000 603.436000 528.104000 591.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 603.436000 535.632000 591.436000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 589.536000 329.912000 577.536000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 329.900000 589.536000 333.728000 577.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 333.704000 589.536000 340.472000 577.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 340.508000 589.536000 344.336000 577.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 344.312000 589.536000 352.040000 577.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 352.016000 589.536000 359.696000 577.536000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 359.720000 589.536000 363.524000 577.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 363.524000 589.536000 371.204000 577.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 371.228000 589.536000 378.452000 577.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 378.428000 589.536000 385.580000 577.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 385.628000 589.536000 391.364000 577.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 391.328000 589.536000 399.008000 577.536000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 399.000000 589.536000 402.804000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.900000 589.536000 406.704000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.800000 589.536000 410.604000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.700000 589.536000 414.504000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.600000 589.536000 418.404000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.500000 589.536000 422.304000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.400000 589.536000 426.204000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.300000 589.536000 430.104000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.200000 589.536000 434.004000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.100000 589.536000 437.904000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.000000 589.536000 441.804000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.900000 589.536000 445.704000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.800000 589.536000 449.604000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.700000 589.536000 453.504000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.600000 589.536000 457.404000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.500000 589.536000 461.304000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.400000 589.536000 465.204000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.300000 589.536000 469.104000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.200000 589.536000 473.004000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.100000 589.536000 476.904000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.000000 589.536000 480.804000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.900000 589.536000 484.704000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.800000 589.536000 488.604000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.700000 589.536000 492.504000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.600000 589.536000 496.404000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.500000 589.536000 500.304000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.400000 589.536000 504.204000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.300000 589.536000 508.104000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.200000 589.536000 512.004000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.100000 589.536000 515.904000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.000000 589.536000 519.804000 577.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 589.536000 527.932000 577.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 589.536000 535.528000 577.536000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 575.636000 329.912000 563.636000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 329.900000 575.636000 337.124000 563.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 337.100000 575.636000 344.828000 563.636000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 344.804000 575.636000 352.484000 563.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 352.508000 575.636000 356.336000 563.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 356.312000 575.636000 363.464000 563.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 363.512000 575.636000 369.668000 563.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 369.716000 575.636000 373.520000 563.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 373.520000 575.636000 381.836000 563.636000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 381.824000 575.636000 385.652000 563.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 385.628000 575.636000 391.364000 563.636000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 391.300000 575.636000 395.104000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.200000 575.636000 399.004000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.100000 575.636000 402.904000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.000000 575.636000 406.804000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.900000 575.636000 410.704000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.800000 575.636000 414.604000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.700000 575.636000 418.504000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.600000 575.636000 422.404000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.500000 575.636000 426.304000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.400000 575.636000 430.204000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.300000 575.636000 434.104000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.200000 575.636000 438.004000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.100000 575.636000 441.904000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.000000 575.636000 445.804000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.900000 575.636000 449.704000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.800000 575.636000 453.604000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.700000 575.636000 457.504000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.600000 575.636000 461.404000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.500000 575.636000 465.304000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.400000 575.636000 469.204000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.300000 575.636000 473.104000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.200000 575.636000 477.004000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.100000 575.636000 480.904000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.000000 575.636000 484.804000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.900000 575.636000 488.704000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.800000 575.636000 492.604000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.700000 575.636000 496.504000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.600000 575.636000 500.404000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.500000 575.636000 504.304000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.400000 575.636000 508.204000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.300000 575.636000 512.104000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.200000 575.636000 516.004000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.100000 575.636000 519.904000 563.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 575.636000 527.932000 563.636000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 575.636000 535.528000 563.636000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 561.736000 329.912000 549.736000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 329.900000 561.736000 335.636000 549.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 334.304000 561.736000 338.108000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 338.108000 561.736000 341.912000 549.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 341.912000 561.736000 350.132000 549.736000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 350.108000 561.736000 357.836000 549.736000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 357.812000 561.736000 364.904000 549.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 364.916000 561.736000 371.072000 549.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 371.120000 561.736000 377.276000 549.736000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 377.200000 561.736000 381.004000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.100000 561.736000 384.904000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.000000 561.736000 388.804000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.900000 561.736000 392.704000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.800000 561.736000 396.604000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.700000 561.736000 400.504000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.600000 561.736000 404.404000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.500000 561.736000 408.304000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.400000 561.736000 412.204000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.300000 561.736000 416.104000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.200000 561.736000 420.004000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.100000 561.736000 423.904000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.000000 561.736000 427.804000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.900000 561.736000 431.704000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.800000 561.736000 435.604000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.700000 561.736000 439.504000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.600000 561.736000 443.404000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.500000 561.736000 447.304000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.400000 561.736000 451.204000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.300000 561.736000 455.104000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.200000 561.736000 459.004000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.100000 561.736000 462.904000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.000000 561.736000 466.804000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.900000 561.736000 470.704000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.800000 561.736000 474.604000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.700000 561.736000 478.504000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.600000 561.736000 482.404000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.500000 561.736000 486.304000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.400000 561.736000 490.204000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.300000 561.736000 494.104000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.200000 561.736000 498.004000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.100000 561.736000 501.904000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.000000 561.736000 505.804000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.900000 561.736000 509.704000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.800000 561.736000 513.604000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.700000 561.736000 517.504000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.600000 561.736000 521.404000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.500000 561.736000 525.304000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.400000 561.736000 529.204000 549.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 561.736000 535.632000 549.736000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 547.836000 329.912000 535.836000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 329.900000 547.836000 335.636000 535.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 335.600000 547.836000 339.428000 535.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 339.404000 547.836000 343.232000 535.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 343.208000 547.836000 347.036000 535.836000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 347.100000 547.836000 350.904000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 350.904000 547.836000 354.708000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.708000 547.836000 358.512000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.512000 547.836000 362.316000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.316000 547.836000 366.120000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.120000 547.836000 369.924000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 369.924000 547.836000 373.728000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.728000 547.836000 377.532000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.532000 547.836000 381.336000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.336000 547.836000 385.140000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.140000 547.836000 388.944000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.944000 547.836000 392.748000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.748000 547.836000 396.552000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.552000 547.836000 400.356000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.356000 547.836000 404.160000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.160000 547.836000 407.964000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.964000 547.836000 411.768000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.768000 547.836000 415.572000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.572000 547.836000 419.376000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.376000 547.836000 423.180000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.180000 547.836000 426.984000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.984000 547.836000 430.788000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.788000 547.836000 434.592000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.592000 547.836000 438.396000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.396000 547.836000 442.200000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.200000 547.836000 446.004000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.004000 547.836000 449.808000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.808000 547.836000 453.612000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.612000 547.836000 457.416000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.416000 547.836000 461.220000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.220000 547.836000 465.024000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.024000 547.836000 468.828000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.828000 547.836000 472.632000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.632000 547.836000 476.436000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.436000 547.836000 480.240000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.240000 547.836000 484.044000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.044000 547.836000 487.848000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 487.848000 547.836000 491.652000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.652000 547.836000 495.456000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.456000 547.836000 499.260000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.260000 547.836000 503.064000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.064000 547.836000 506.868000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.868000 547.836000 510.672000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.672000 547.836000 514.476000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.476000 547.836000 518.280000 535.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 547.836000 527.932000 535.836000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 547.836000 535.528000 535.836000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 533.936000 329.912000 521.936000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 329.900000 533.936000 335.636000 521.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 335.600000 533.936000 342.368000 521.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 342.404000 533.936000 349.496000 521.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.508000 533.936000 355.244000 521.936000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 355.200000 533.936000 359.004000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.004000 533.936000 362.808000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.808000 533.936000 366.612000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.612000 533.936000 370.416000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.416000 533.936000 374.220000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.220000 533.936000 378.024000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.024000 533.936000 381.828000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.828000 533.936000 385.632000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.632000 533.936000 389.436000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.436000 533.936000 393.240000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.240000 533.936000 397.044000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.044000 533.936000 400.848000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.848000 533.936000 404.652000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.652000 533.936000 408.456000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.456000 533.936000 412.260000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.260000 533.936000 416.064000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.064000 533.936000 419.868000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.868000 533.936000 423.672000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.672000 533.936000 427.476000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.476000 533.936000 431.280000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.280000 533.936000 435.084000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.084000 533.936000 438.888000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.888000 533.936000 442.692000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.692000 533.936000 446.496000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.496000 533.936000 450.300000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.300000 533.936000 454.104000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.104000 533.936000 457.908000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.908000 533.936000 461.712000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.712000 533.936000 465.516000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.516000 533.936000 469.320000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.320000 533.936000 473.124000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.124000 533.936000 476.928000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.928000 533.936000 480.732000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.732000 533.936000 484.536000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.536000 533.936000 488.340000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.340000 533.936000 492.144000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.144000 533.936000 495.948000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.948000 533.936000 499.752000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.752000 533.936000 503.556000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.556000 533.936000 507.360000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.360000 533.936000 511.164000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.164000 533.936000 514.968000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.968000 533.936000 518.772000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.772000 533.936000 522.576000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.576000 533.936000 526.380000 521.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 533.936000 535.632000 521.936000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 520.036000 329.912000 508.036000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 329.900000 520.036000 337.628000 508.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 337.604000 520.036000 343.760000 508.036000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 343.808000 520.036000 348.620000 508.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 348.608000 520.036000 356.288000 508.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 356.312000 520.036000 363.464000 508.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 363.512000 520.036000 371.240000 508.036000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 371.100000 520.036000 374.904000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.904000 520.036000 378.708000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.708000 520.036000 382.512000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.512000 520.036000 386.316000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.316000 520.036000 390.120000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.120000 520.036000 393.924000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.924000 520.036000 397.728000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.728000 520.036000 401.532000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.532000 520.036000 405.336000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.336000 520.036000 409.140000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.140000 520.036000 412.944000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.944000 520.036000 416.748000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.748000 520.036000 420.552000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.552000 520.036000 424.356000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.356000 520.036000 428.160000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.160000 520.036000 431.964000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.964000 520.036000 435.768000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.768000 520.036000 439.572000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.572000 520.036000 443.376000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.376000 520.036000 447.180000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.180000 520.036000 450.984000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.984000 520.036000 454.788000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.788000 520.036000 458.592000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.592000 520.036000 462.396000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.396000 520.036000 466.200000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.200000 520.036000 470.004000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.004000 520.036000 473.808000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.808000 520.036000 477.612000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.612000 520.036000 481.416000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.416000 520.036000 485.220000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.220000 520.036000 489.024000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.024000 520.036000 492.828000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.828000 520.036000 496.632000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.632000 520.036000 500.436000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.436000 520.036000 504.240000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.240000 520.036000 508.044000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.044000 520.036000 511.848000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.848000 520.036000 515.652000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.652000 520.036000 519.456000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.456000 520.036000 523.260000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.260000 520.036000 527.064000 508.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 520.036000 535.632000 508.036000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 320.300000 506.056000 329.444000 494.056000 1.000000 0.000000 0.000000 1.000000 E
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 492.036000 329.048000 480.036000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 329.096000 492.036000 332.924000 480.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.900000 492.036000 339.992000 480.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 340.004000 492.036000 346.724000 480.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 346.700000 492.036000 351.512000 480.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 351.500000 492.036000 357.236000 480.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 357.200000 492.036000 361.028000 480.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 361.004000 492.036000 367.724000 480.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 367.700000 492.036000 371.504000 480.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 371.504000 492.036000 382.880000 480.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 382.904000 492.036000 386.732000 480.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 386.708000 492.036000 393.464000 480.036000 1.000000 0.000000 0.000000 1.000000 x
+drawChar 393.512000 492.036000 400.604000 480.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 400.616000 492.036000 406.352000 480.036000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 406.400000 492.036000 410.204000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.300000 492.036000 414.104000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.200000 492.036000 418.004000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.100000 492.036000 421.904000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.000000 492.036000 425.804000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.900000 492.036000 429.704000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.800000 492.036000 433.604000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.700000 492.036000 437.504000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.600000 492.036000 441.404000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.500000 492.036000 445.304000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.400000 492.036000 449.204000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.300000 492.036000 453.104000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.200000 492.036000 457.004000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.100000 492.036000 460.904000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.000000 492.036000 464.804000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.900000 492.036000 468.704000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.800000 492.036000 472.604000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.700000 492.036000 476.504000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.600000 492.036000 480.404000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.500000 492.036000 484.304000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.400000 492.036000 488.204000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.300000 492.036000 492.104000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.200000 492.036000 496.004000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.100000 492.036000 499.904000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.000000 492.036000 503.804000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.900000 492.036000 507.704000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.800000 492.036000 511.604000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.700000 492.036000 515.504000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.600000 492.036000 519.404000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.500000 492.036000 523.304000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.400000 492.036000 527.204000 480.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 492.036000 535.632000 480.036000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 478.136000 329.048000 466.136000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 329.096000 478.136000 336.824000 466.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 336.800000 478.136000 344.480000 466.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 344.504000 478.136000 348.332000 466.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 348.308000 478.136000 355.460000 466.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 355.508000 478.136000 363.236000 466.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 363.212000 478.136000 370.892000 466.136000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 370.800000 478.136000 374.604000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.604000 478.136000 378.408000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.408000 478.136000 382.212000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.212000 478.136000 386.016000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.016000 478.136000 389.820000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.820000 478.136000 393.624000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.624000 478.136000 397.428000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.428000 478.136000 401.232000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.232000 478.136000 405.036000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.036000 478.136000 408.840000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.840000 478.136000 412.644000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.644000 478.136000 416.448000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.448000 478.136000 420.252000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.252000 478.136000 424.056000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.056000 478.136000 427.860000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.860000 478.136000 431.664000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.664000 478.136000 435.468000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.468000 478.136000 439.272000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.272000 478.136000 443.076000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.076000 478.136000 446.880000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.880000 478.136000 450.684000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.684000 478.136000 454.488000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.488000 478.136000 458.292000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.292000 478.136000 462.096000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.096000 478.136000 465.900000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.900000 478.136000 469.704000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.704000 478.136000 473.508000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.508000 478.136000 477.312000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.312000 478.136000 481.116000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.116000 478.136000 484.920000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.920000 478.136000 488.724000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.724000 478.136000 492.528000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.528000 478.136000 496.332000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.332000 478.136000 500.136000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.136000 478.136000 503.940000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.940000 478.136000 507.744000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.744000 478.136000 511.548000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.548000 478.136000 515.352000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.352000 478.136000 519.156000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.156000 478.136000 522.960000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.960000 478.136000 526.764000 466.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 478.136000 535.632000 466.136000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 320.300000 464.156000 328.808000 452.156000 1.000000 0.000000 0.000000 1.000000 F
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 450.136000 328.616000 438.136000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 328.604000 450.136000 332.432000 438.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 332.408000 450.136000 338.144000 438.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 338.108000 450.136000 344.264000 438.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.312000 450.136000 349.124000 438.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.112000 450.136000 352.916000 438.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 352.916000 450.136000 360.068000 438.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 360.116000 450.136000 363.944000 438.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 363.920000 450.136000 371.600000 438.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 371.624000 450.136000 375.428000 438.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 375.428000 450.136000 382.688000 438.136000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 382.724000 450.136000 386.552000 438.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 386.528000 450.136000 391.340000 438.136000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 391.300000 450.136000 395.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.200000 450.136000 399.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.100000 450.136000 402.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.000000 450.136000 406.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.900000 450.136000 410.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.800000 450.136000 414.604000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.700000 450.136000 418.504000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.600000 450.136000 422.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.500000 450.136000 426.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.400000 450.136000 430.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.300000 450.136000 434.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.200000 450.136000 438.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.100000 450.136000 441.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.000000 450.136000 445.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.900000 450.136000 449.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.800000 450.136000 453.604000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.700000 450.136000 457.504000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.600000 450.136000 461.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.500000 450.136000 465.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.400000 450.136000 469.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.300000 450.136000 473.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.200000 450.136000 477.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.100000 450.136000 480.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.000000 450.136000 484.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.900000 450.136000 488.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.800000 450.136000 492.604000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.700000 450.136000 496.504000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.600000 450.136000 500.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.500000 450.136000 504.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.400000 450.136000 508.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.300000 450.136000 512.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.200000 450.136000 516.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.100000 450.136000 519.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.000000 450.136000 523.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.900000 450.136000 527.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 450.136000 535.632000 438.136000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 436.236000 328.616000 424.236000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 328.604000 436.236000 332.432000 424.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 332.408000 436.236000 338.564000 424.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 338.612000 436.236000 346.340000 424.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 346.316000 436.236000 350.120000 424.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 350.120000 436.236000 357.800000 424.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 357.824000 436.236000 365.048000 424.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 365.024000 436.236000 372.752000 424.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 372.728000 436.236000 380.408000 424.236000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 380.400000 436.236000 384.204000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.300000 436.236000 388.104000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.200000 436.236000 392.004000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.100000 436.236000 395.904000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.000000 436.236000 399.804000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.900000 436.236000 403.704000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.800000 436.236000 407.604000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.700000 436.236000 411.504000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.600000 436.236000 415.404000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.500000 436.236000 419.304000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.400000 436.236000 423.204000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.300000 436.236000 427.104000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.200000 436.236000 431.004000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.100000 436.236000 434.904000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.000000 436.236000 438.804000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.900000 436.236000 442.704000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.800000 436.236000 446.604000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.700000 436.236000 450.504000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.600000 436.236000 454.404000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.500000 436.236000 458.304000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.400000 436.236000 462.204000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.300000 436.236000 466.104000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.200000 436.236000 470.004000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.100000 436.236000 473.904000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.000000 436.236000 477.804000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.900000 436.236000 481.704000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.800000 436.236000 485.604000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.700000 436.236000 489.504000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.600000 436.236000 493.404000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.500000 436.236000 497.304000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.400000 436.236000 501.204000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.300000 436.236000 505.104000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.200000 436.236000 509.004000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.100000 436.236000 512.904000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.000000 436.236000 516.804000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.900000 436.236000 520.704000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 436.236000 527.932000 424.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 436.236000 535.528000 424.236000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 422.336000 328.616000 410.336000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 328.604000 422.336000 332.432000 410.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.408000 422.336000 339.632000 410.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 339.608000 422.336000 349.868000 410.336000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 349.904000 422.336000 356.996000 410.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.008000 422.336000 362.744000 410.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.708000 422.336000 368.864000 410.336000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 368.900000 422.336000 372.704000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 372.800000 422.336000 376.604000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.700000 422.336000 380.504000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.600000 422.336000 384.404000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.500000 422.336000 388.304000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.400000 422.336000 392.204000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.300000 422.336000 396.104000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.200000 422.336000 400.004000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.100000 422.336000 403.904000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.000000 422.336000 407.804000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.900000 422.336000 411.704000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.800000 422.336000 415.604000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.700000 422.336000 419.504000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.600000 422.336000 423.404000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.500000 422.336000 427.304000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.400000 422.336000 431.204000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.300000 422.336000 435.104000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.200000 422.336000 439.004000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.100000 422.336000 442.904000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.000000 422.336000 446.804000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.900000 422.336000 450.704000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.800000 422.336000 454.604000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.700000 422.336000 458.504000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.600000 422.336000 462.404000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.500000 422.336000 466.304000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.400000 422.336000 470.204000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.300000 422.336000 474.104000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.200000 422.336000 478.004000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.100000 422.336000 481.904000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.000000 422.336000 485.804000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.900000 422.336000 489.704000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.800000 422.336000 493.604000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.700000 422.336000 497.504000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.600000 422.336000 501.404000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.500000 422.336000 505.304000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.400000 422.336000 509.204000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.300000 422.336000 513.104000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.200000 422.336000 517.004000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.100000 422.336000 520.904000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.000000 422.336000 524.804000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.900000 422.336000 528.704000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 528.800000 422.336000 532.604000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 532.700000 422.336000 536.504000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.400000 408.436000 343.580000 396.436000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 343.604000 408.436000 351.332000 396.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 351.308000 408.436000 357.044000 396.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 357.008000 408.436000 363.776000 396.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 363.812000 408.436000 369.968000 396.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 370.016000 408.436000 377.168000 396.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 377.216000 408.436000 384.944000 396.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 384.920000 408.436000 389.732000 396.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 389.720000 408.436000 397.448000 396.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 397.424000 408.436000 404.516000 396.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 404.528000 408.436000 415.904000 396.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 415.928000 408.436000 423.656000 396.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 423.632000 408.436000 435.008000 396.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 435.032000 408.436000 441.188000 396.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 441.100000 408.436000 444.904000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.096000 408.436000 448.900000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.092000 408.436000 452.896000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.088000 408.436000 456.892000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.084000 408.436000 460.888000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.080000 408.436000 464.884000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.076000 408.436000 468.880000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.072000 408.436000 472.876000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.068000 408.436000 476.872000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.064000 408.436000 480.868000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.060000 408.436000 484.864000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.056000 408.436000 488.860000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.052000 408.436000 492.856000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.048000 408.436000 496.852000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.044000 408.436000 500.848000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.040000 408.436000 504.844000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.036000 408.436000 508.840000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.032000 408.436000 512.836000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.028000 408.436000 516.832000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.024000 408.436000 520.828000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 408.436000 527.932000 396.436000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 408.436000 535.528000 396.436000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.400000 394.536000 344.012000 382.536000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 344.000000 394.536000 351.152000 382.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 351.200000 394.536000 359.720000 382.536000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 359.696000 394.536000 366.920000 382.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 366.896000 394.536000 374.576000 382.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 374.600000 394.536000 378.428000 382.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 378.404000 394.536000 382.232000 382.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 382.208000 394.536000 388.364000 382.536000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 388.300000 394.536000 392.104000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.200000 394.536000 396.004000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.100000 394.536000 399.904000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.000000 394.536000 403.804000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.900000 394.536000 407.704000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.800000 394.536000 411.604000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.700000 394.536000 415.504000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.600000 394.536000 419.404000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.500000 394.536000 423.304000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.400000 394.536000 427.204000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.300000 394.536000 431.104000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.200000 394.536000 435.004000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.100000 394.536000 438.904000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.000000 394.536000 442.804000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.900000 394.536000 446.704000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.800000 394.536000 450.604000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.700000 394.536000 454.504000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.600000 394.536000 458.404000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.500000 394.536000 462.304000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.400000 394.536000 466.204000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.300000 394.536000 470.104000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.200000 394.536000 474.004000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.100000 394.536000 477.904000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.000000 394.536000 481.804000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.900000 394.536000 485.704000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.800000 394.536000 489.604000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.700000 394.536000 493.504000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.600000 394.536000 497.404000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.500000 394.536000 501.304000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.400000 394.536000 505.204000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.300000 394.536000 509.104000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.200000 394.536000 513.004000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.100000 394.536000 516.904000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.000000 394.536000 520.804000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 394.536000 527.932000 382.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 394.536000 535.528000 382.536000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.400000 380.636000 344.012000 368.636000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 344.000000 380.636000 351.152000 368.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 351.200000 380.636000 358.928000 368.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 358.904000 380.636000 362.732000 368.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 362.708000 380.636000 366.536000 368.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 366.512000 380.636000 373.664000 368.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 373.712000 380.636000 379.868000 368.636000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 379.800000 380.636000 383.604000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.700000 380.636000 387.504000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.600000 380.636000 391.404000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.500000 380.636000 395.304000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.400000 380.636000 399.204000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.300000 380.636000 403.104000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.200000 380.636000 407.004000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.100000 380.636000 410.904000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.000000 380.636000 414.804000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.900000 380.636000 418.704000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.800000 380.636000 422.604000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.700000 380.636000 426.504000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.600000 380.636000 430.404000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.500000 380.636000 434.304000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.400000 380.636000 438.204000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.300000 380.636000 442.104000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.200000 380.636000 446.004000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.100000 380.636000 449.904000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.000000 380.636000 453.804000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.900000 380.636000 457.704000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.800000 380.636000 461.604000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.700000 380.636000 465.504000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.600000 380.636000 469.404000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.500000 380.636000 473.304000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.400000 380.636000 477.204000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.300000 380.636000 481.104000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.200000 380.636000 485.004000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.100000 380.636000 488.904000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.000000 380.636000 492.804000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.900000 380.636000 496.704000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.800000 380.636000 500.604000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.700000 380.636000 504.504000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.600000 380.636000 508.404000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.500000 380.636000 512.304000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.400000 380.636000 516.204000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.300000 380.636000 520.104000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 380.636000 527.932000 368.636000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 380.636000 535.528000 368.636000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.400000 366.736000 339.140000 354.736000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 339.104000 366.736000 344.840000 354.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 344.804000 366.736000 348.632000 354.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 348.608000 366.736000 354.764000 354.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 354.812000 366.736000 361.904000 354.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 361.916000 366.736000 368.072000 354.736000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 368.000000 366.736000 371.804000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.804000 366.736000 375.608000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.608000 366.736000 379.412000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.412000 366.736000 383.216000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.216000 366.736000 387.020000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.020000 366.736000 390.824000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.824000 366.736000 394.628000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.628000 366.736000 398.432000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.432000 366.736000 402.236000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.236000 366.736000 406.040000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.040000 366.736000 409.844000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.844000 366.736000 413.648000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.648000 366.736000 417.452000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.452000 366.736000 421.256000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.256000 366.736000 425.060000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.060000 366.736000 428.864000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.864000 366.736000 432.668000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.668000 366.736000 436.472000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.472000 366.736000 440.276000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.276000 366.736000 444.080000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.080000 366.736000 447.884000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.884000 366.736000 451.688000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.688000 366.736000 455.492000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.492000 366.736000 459.296000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.296000 366.736000 463.100000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.100000 366.736000 466.904000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.904000 366.736000 470.708000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.708000 366.736000 474.512000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.512000 366.736000 478.316000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.316000 366.736000 482.120000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.120000 366.736000 485.924000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.924000 366.736000 489.728000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.728000 366.736000 493.532000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.532000 366.736000 497.336000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.336000 366.736000 501.140000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.140000 366.736000 504.944000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.944000 366.736000 508.748000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.748000 366.736000 512.552000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.552000 366.736000 516.356000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.356000 366.736000 520.160000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 366.736000 527.932000 354.736000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 366.736000 535.528000 354.736000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.400000 352.836000 343.424000 340.836000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 343.400000 352.836000 351.128000 340.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 351.104000 352.836000 358.328000 340.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 358.304000 352.836000 365.984000 340.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 366.008000 352.836000 373.232000 340.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 373.208000 352.836000 380.888000 340.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 380.912000 352.836000 388.004000 340.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.016000 352.836000 395.744000 340.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 395.720000 352.836000 403.400000 340.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 403.424000 352.836000 409.160000 340.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 409.124000 352.836000 416.348000 340.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 416.324000 352.836000 424.052000 340.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 424.028000 352.836000 430.184000 340.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 430.200000 352.836000 434.004000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.100000 352.836000 437.904000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.000000 352.836000 441.804000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.900000 352.836000 445.704000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.800000 352.836000 449.604000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.700000 352.836000 453.504000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.600000 352.836000 457.404000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.500000 352.836000 461.304000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.400000 352.836000 465.204000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.300000 352.836000 469.104000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.200000 352.836000 473.004000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.100000 352.836000 476.904000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.000000 352.836000 480.804000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.900000 352.836000 484.704000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.800000 352.836000 488.604000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.700000 352.836000 492.504000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.600000 352.836000 496.404000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.500000 352.836000 500.304000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.400000 352.836000 504.204000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.300000 352.836000 508.104000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.200000 352.836000 512.004000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.100000 352.836000 515.904000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.000000 352.836000 519.804000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 352.836000 527.932000 340.836000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 352.836000 535.528000 340.836000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 338.936000 328.616000 326.936000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 328.604000 338.936000 334.340000 326.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 334.304000 338.936000 341.528000 326.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 341.504000 338.936000 347.816000 326.936000 1.000000 0.000000 0.000000 1.000000 z
+drawChar 347.804000 338.936000 354.896000 326.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 354.908000 338.936000 362.636000 326.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 362.612000 338.936000 366.416000 326.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 366.416000 338.936000 377.792000 326.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 377.816000 338.936000 384.968000 326.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 385.016000 338.936000 390.752000 326.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 390.716000 338.936000 398.396000 326.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 398.420000 338.936000 405.572000 326.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 405.620000 338.936000 411.356000 326.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 411.320000 338.936000 415.148000 326.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 415.124000 338.936000 419.936000 326.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 419.924000 338.936000 427.076000 326.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 427.124000 338.936000 433.280000 326.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 433.300000 338.936000 437.104000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.200000 338.936000 441.004000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.100000 338.936000 444.904000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.000000 338.936000 448.804000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.900000 338.936000 452.704000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 452.800000 338.936000 456.604000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.700000 338.936000 460.504000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.600000 338.936000 464.404000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.500000 338.936000 468.304000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.400000 338.936000 472.204000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.300000 338.936000 476.104000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.200000 338.936000 480.004000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.100000 338.936000 483.904000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.000000 338.936000 487.804000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 487.900000 338.936000 491.704000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.800000 338.936000 495.604000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.700000 338.936000 499.504000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.600000 338.936000 503.404000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.500000 338.936000 507.304000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.400000 338.936000 511.204000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.300000 338.936000 515.104000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.200000 338.936000 519.004000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.100000 338.936000 522.904000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.000000 338.936000 526.804000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 338.936000 535.632000 326.936000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 320.300000 324.956000 330.548000 312.956000 1.000000 0.000000 0.000000 1.000000 G
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 310.936000 329.876000 298.936000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 329.900000 310.936000 337.052000 298.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.100000 310.936000 342.836000 298.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 342.800000 310.936000 350.480000 298.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 350.504000 310.936000 357.656000 298.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 357.704000 310.936000 365.384000 298.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 365.408000 310.936000 372.500000 298.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 372.512000 310.936000 376.316000 298.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 376.316000 310.936000 383.996000 298.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 384.020000 310.936000 387.848000 298.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 387.824000 310.936000 393.980000 298.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 394.028000 310.936000 401.708000 298.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 401.732000 310.936000 408.956000 298.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 408.932000 310.936000 415.088000 298.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 415.136000 310.936000 422.288000 298.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 422.336000 310.936000 426.164000 298.936000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 425.800000 310.936000 429.604000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.700000 310.936000 433.504000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.600000 310.936000 437.404000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.500000 310.936000 441.304000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.400000 310.936000 445.204000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.300000 310.936000 449.104000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.200000 310.936000 453.004000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.100000 310.936000 456.904000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.000000 310.936000 460.804000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.900000 310.936000 464.704000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.800000 310.936000 468.604000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.700000 310.936000 472.504000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.600000 310.936000 476.404000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.500000 310.936000 480.304000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.400000 310.936000 484.204000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.300000 310.936000 488.104000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.200000 310.936000 492.004000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.100000 310.936000 495.904000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.000000 310.936000 499.804000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.900000 310.936000 503.704000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.800000 310.936000 507.604000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.700000 310.936000 511.504000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.600000 310.936000 515.404000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.500000 310.936000 519.304000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.400000 310.936000 523.204000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.300000 310.936000 527.104000 298.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 310.936000 535.632000 298.936000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 297.036000 329.876000 285.036000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 329.900000 297.036000 337.052000 285.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.100000 297.036000 342.836000 285.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 342.800000 297.036000 350.480000 285.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 350.504000 297.036000 357.596000 285.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.608000 297.036000 365.336000 285.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 365.312000 297.036000 369.116000 285.036000 1.000000 0.000000 0.000000 1.000000
+drawChar 369.116000 297.036000 373.556000 285.036000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 373.520000 297.036000 381.248000 285.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 381.224000 297.036000 386.960000 285.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 386.924000 297.036000 394.652000 285.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 394.628000 297.036000 398.456000 285.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 398.432000 297.036000 403.244000 285.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 403.232000 297.036000 410.960000 285.036000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 410.936000 297.036000 416.672000 285.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 416.636000 297.036000 423.728000 285.036000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 423.900000 297.036000 427.704000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.800000 297.036000 431.604000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.700000 297.036000 435.504000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.600000 297.036000 439.404000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.500000 297.036000 443.304000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.400000 297.036000 447.204000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.300000 297.036000 451.104000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.200000 297.036000 455.004000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.100000 297.036000 458.904000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.000000 297.036000 462.804000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.900000 297.036000 466.704000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.800000 297.036000 470.604000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.700000 297.036000 474.504000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.600000 297.036000 478.404000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.500000 297.036000 482.304000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.400000 297.036000 486.204000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.300000 297.036000 490.104000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.200000 297.036000 494.004000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.100000 297.036000 497.904000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.000000 297.036000 501.804000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.900000 297.036000 505.704000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.800000 297.036000 509.604000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.700000 297.036000 513.504000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.600000 297.036000 517.404000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.500000 297.036000 521.304000 285.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 297.036000 527.932000 285.036000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 297.036000 535.528000 285.036000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 283.136000 329.876000 271.136000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 329.900000 283.136000 333.728000 271.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 333.704000 283.136000 341.432000 271.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 341.408000 283.136000 345.212000 271.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 345.212000 283.136000 352.364000 271.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 352.412000 283.136000 360.140000 271.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 360.116000 283.136000 367.796000 271.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 367.820000 283.136000 371.624000 271.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 371.624000 283.136000 379.616000 271.136000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 378.728000 283.136000 385.952000 271.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 385.928000 283.136000 393.656000 271.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 393.632000 283.136000 397.460000 271.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.436000 283.136000 404.156000 271.136000 1.000000 0.000000 0.000000 1.000000 c
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 404.100000 283.136000 407.904000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.000000 283.136000 411.804000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.900000 283.136000 415.704000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.800000 283.136000 419.604000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.700000 283.136000 423.504000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.600000 283.136000 427.404000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.500000 283.136000 431.304000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.400000 283.136000 435.204000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.300000 283.136000 439.104000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.200000 283.136000 443.004000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.100000 283.136000 446.904000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.000000 283.136000 450.804000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.900000 283.136000 454.704000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.800000 283.136000 458.604000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.700000 283.136000 462.504000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.600000 283.136000 466.404000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.500000 283.136000 470.304000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.400000 283.136000 474.204000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.300000 283.136000 478.104000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.200000 283.136000 482.004000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.100000 283.136000 485.904000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.000000 283.136000 489.804000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.900000 283.136000 493.704000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.800000 283.136000 497.604000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.700000 283.136000 501.504000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.600000 283.136000 505.404000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.500000 283.136000 509.304000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.400000 283.136000 513.204000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.300000 283.136000 517.104000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.200000 283.136000 521.004000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.100000 283.136000 524.904000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.000000 283.136000 528.804000 271.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 283.136000 535.632000 271.136000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 269.236000 329.876000 257.236000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 329.900000 269.236000 337.124000 257.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 337.100000 269.236000 340.928000 257.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 340.904000 269.236000 348.584000 257.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 348.608000 269.236000 355.700000 257.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 355.712000 269.236000 363.440000 257.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 363.416000 269.236000 367.220000 257.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 367.220000 269.236000 376.796000 257.236000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 376.820000 269.236000 383.972000 257.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 384.020000 269.236000 388.832000 257.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 388.820000 269.236000 395.912000 257.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 395.924000 269.236000 399.728000 257.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 399.728000 269.236000 407.792000 257.236000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 407.228000 269.236000 414.380000 257.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 414.428000 269.236000 420.164000 257.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 420.128000 269.236000 427.388000 257.236000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 427.400000 269.236000 431.204000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.300000 269.236000 435.104000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.200000 269.236000 439.004000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.100000 269.236000 442.904000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.000000 269.236000 446.804000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.900000 269.236000 450.704000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.800000 269.236000 454.604000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.700000 269.236000 458.504000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.600000 269.236000 462.404000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.500000 269.236000 466.304000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.400000 269.236000 470.204000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.300000 269.236000 474.104000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.200000 269.236000 478.004000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.100000 269.236000 481.904000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.000000 269.236000 485.804000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.900000 269.236000 489.704000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.800000 269.236000 493.604000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.700000 269.236000 497.504000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.600000 269.236000 501.404000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.500000 269.236000 505.304000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.400000 269.236000 509.204000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.300000 269.236000 513.104000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.200000 269.236000 517.004000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.100000 269.236000 520.904000 257.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 269.236000 527.932000 257.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 269.236000 535.528000 257.236000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 255.336000 329.876000 243.336000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 329.900000 255.336000 337.124000 243.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 337.100000 255.336000 340.928000 243.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 340.904000 255.336000 348.584000 243.336000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 348.608000 255.336000 356.600000 243.336000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 356.612000 255.336000 362.768000 243.336000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 362.816000 255.336000 370.544000 243.336000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 370.400000 255.336000 374.204000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.204000 255.336000 378.008000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.008000 255.336000 381.812000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.812000 255.336000 385.616000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.616000 255.336000 389.420000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.420000 255.336000 393.224000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.224000 255.336000 397.028000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.028000 255.336000 400.832000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.832000 255.336000 404.636000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.636000 255.336000 408.440000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.440000 255.336000 412.244000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.244000 255.336000 416.048000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.048000 255.336000 419.852000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.852000 255.336000 423.656000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.656000 255.336000 427.460000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.460000 255.336000 431.264000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.264000 255.336000 435.068000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.068000 255.336000 438.872000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.872000 255.336000 442.676000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.676000 255.336000 446.480000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.480000 255.336000 450.284000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.284000 255.336000 454.088000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.088000 255.336000 457.892000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.892000 255.336000 461.696000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.696000 255.336000 465.500000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.500000 255.336000 469.304000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.304000 255.336000 473.108000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.108000 255.336000 476.912000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.912000 255.336000 480.716000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.716000 255.336000 484.520000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.520000 255.336000 488.324000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.324000 255.336000 492.128000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.128000 255.336000 495.932000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.932000 255.336000 499.736000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.736000 255.336000 503.540000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.540000 255.336000 507.344000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.344000 255.336000 511.148000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.148000 255.336000 514.952000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.952000 255.336000 518.756000 243.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 255.336000 527.932000 243.336000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 255.336000 535.528000 243.336000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 241.436000 329.876000 229.436000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 329.900000 241.436000 335.636000 229.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 335.600000 241.436000 342.692000 229.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 342.704000 241.436000 350.432000 229.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 350.408000 241.436000 357.560000 229.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 357.608000 241.436000 365.288000 229.436000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 365.312000 241.436000 369.140000 229.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 369.116000 241.436000 376.844000 229.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 376.820000 241.436000 383.912000 229.436000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 383.900000 241.436000 387.704000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.800000 241.436000 391.604000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.700000 241.436000 395.504000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 395.600000 241.436000 399.404000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 399.500000 241.436000 403.304000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 403.400000 241.436000 407.204000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.300000 241.436000 411.104000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.200000 241.436000 415.004000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.100000 241.436000 418.904000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.000000 241.436000 422.804000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.900000 241.436000 426.704000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.800000 241.436000 430.604000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.700000 241.436000 434.504000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.600000 241.436000 438.404000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.500000 241.436000 442.304000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.400000 241.436000 446.204000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.300000 241.436000 450.104000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.200000 241.436000 454.004000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.100000 241.436000 457.904000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.000000 241.436000 461.804000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.900000 241.436000 465.704000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.800000 241.436000 469.604000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.700000 241.436000 473.504000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.600000 241.436000 477.404000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.500000 241.436000 481.304000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.400000 241.436000 485.204000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.300000 241.436000 489.104000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.200000 241.436000 493.004000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.100000 241.436000 496.904000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.000000 241.436000 500.804000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.900000 241.436000 504.704000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.800000 241.436000 508.604000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.700000 241.436000 512.504000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.600000 241.436000 516.404000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.500000 241.436000 520.304000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.400000 241.436000 524.204000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.300000 241.436000 528.104000 229.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 241.436000 535.632000 229.436000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 227.536000 329.876000 215.536000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 329.900000 227.536000 337.628000 215.536000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 337.604000 227.536000 344.696000 215.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 344.708000 227.536000 350.864000 215.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 350.912000 227.536000 355.724000 215.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 355.712000 227.536000 359.516000 215.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.516000 227.536000 365.252000 215.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 365.216000 227.536000 372.440000 215.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 372.416000 227.536000 379.640000 215.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 379.616000 227.536000 390.992000 215.536000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 391.000000 227.536000 394.804000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.804000 227.536000 398.608000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.608000 227.536000 402.412000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.412000 227.536000 406.216000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.216000 227.536000 410.020000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.020000 227.536000 413.824000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.824000 227.536000 417.628000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.628000 227.536000 421.432000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.432000 227.536000 425.236000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.236000 227.536000 429.040000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.040000 227.536000 432.844000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.844000 227.536000 436.648000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.648000 227.536000 440.452000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.452000 227.536000 444.256000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.256000 227.536000 448.060000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.060000 227.536000 451.864000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.864000 227.536000 455.668000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.668000 227.536000 459.472000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.472000 227.536000 463.276000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.276000 227.536000 467.080000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.080000 227.536000 470.884000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.884000 227.536000 474.688000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.688000 227.536000 478.492000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.492000 227.536000 482.296000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.296000 227.536000 486.100000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.100000 227.536000 489.904000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.904000 227.536000 493.708000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.708000 227.536000 497.512000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.512000 227.536000 501.316000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.316000 227.536000 505.120000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.120000 227.536000 508.924000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.924000 227.536000 512.728000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.728000 227.536000 516.532000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.532000 227.536000 520.336000 215.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 227.536000 527.932000 215.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 227.536000 535.528000 215.536000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 320.300000 213.556000 331.628000 201.556000 1.000000 0.000000 0.000000 1.000000 H
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 199.536000 330.764000 187.536000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 330.800000 199.536000 337.952000 187.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 338.000000 199.536000 349.376000 187.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 349.400000 199.536000 360.776000 187.536000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 360.800000 199.536000 367.892000 187.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 367.904000 199.536000 373.640000 187.536000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 373.400000 199.536000 377.204000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.300000 199.536000 381.104000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.200000 199.536000 385.004000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.100000 199.536000 388.904000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.000000 199.536000 392.804000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.900000 199.536000 396.704000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.800000 199.536000 400.604000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.700000 199.536000 404.504000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.600000 199.536000 408.404000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.500000 199.536000 412.304000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.400000 199.536000 416.204000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.300000 199.536000 420.104000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.200000 199.536000 424.004000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.100000 199.536000 427.904000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.000000 199.536000 431.804000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.900000 199.536000 435.704000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.800000 199.536000 439.604000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.700000 199.536000 443.504000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.600000 199.536000 447.404000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.500000 199.536000 451.304000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.400000 199.536000 455.204000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.300000 199.536000 459.104000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.200000 199.536000 463.004000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.100000 199.536000 466.904000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.000000 199.536000 470.804000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.900000 199.536000 474.704000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.800000 199.536000 478.604000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.700000 199.536000 482.504000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.600000 199.536000 486.404000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.500000 199.536000 490.304000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.400000 199.536000 494.204000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.300000 199.536000 498.104000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.200000 199.536000 502.004000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.100000 199.536000 505.904000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.000000 199.536000 509.804000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.900000 199.536000 513.704000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.800000 199.536000 517.604000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.700000 199.536000 521.504000 187.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 199.536000 527.932000 187.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 199.536000 535.528000 187.536000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 185.636000 330.764000 173.636000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 330.800000 185.636000 337.952000 173.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 338.000000 185.636000 343.736000 173.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 343.700000 185.636000 351.380000 173.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 351.404000 185.636000 361.664000 173.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 361.700000 185.636000 368.924000 173.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 368.900000 185.636000 376.124000 173.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 376.100000 185.636000 383.780000 173.636000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 383.804000 185.636000 387.608000 173.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 387.608000 185.636000 395.600000 173.636000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 395.612000 185.636000 402.836000 173.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 402.812000 185.636000 410.036000 173.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 410.012000 185.636000 415.748000 173.636000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 415.600000 185.636000 419.404000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.500000 185.636000 423.304000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.400000 185.636000 427.204000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.300000 185.636000 431.104000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.200000 185.636000 435.004000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.100000 185.636000 438.904000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.000000 185.636000 442.804000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.900000 185.636000 446.704000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.800000 185.636000 450.604000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.700000 185.636000 454.504000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.600000 185.636000 458.404000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.500000 185.636000 462.304000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.400000 185.636000 466.204000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.300000 185.636000 470.104000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.200000 185.636000 474.004000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.100000 185.636000 477.904000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.000000 185.636000 481.804000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.900000 185.636000 485.704000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.800000 185.636000 489.604000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.700000 185.636000 493.504000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.600000 185.636000 497.404000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.500000 185.636000 501.304000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.400000 185.636000 505.204000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.300000 185.636000 509.104000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.200000 185.636000 513.004000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.100000 185.636000 516.904000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.000000 185.636000 520.804000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.900000 185.636000 524.704000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.800000 185.636000 528.604000 173.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 185.636000 535.632000 173.636000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 171.736000 330.764000 159.736000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 330.800000 171.736000 337.892000 159.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.904000 171.736000 345.584000 159.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 345.608000 171.736000 353.288000 159.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 353.312000 171.736000 360.404000 159.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.416000 171.736000 364.460000 159.736000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 364.520000 171.736000 371.240000 159.736000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 371.216000 171.736000 375.044000 159.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 375.020000 171.736000 378.848000 159.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 378.824000 171.736000 386.504000 159.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 386.528000 171.736000 394.208000 159.736000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 394.232000 171.736000 401.324000 159.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 401.336000 171.736000 407.072000 159.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 407.036000 171.736000 413.192000 159.736000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 413.000000 171.736000 416.804000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.804000 171.736000 420.608000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.608000 171.736000 424.412000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.412000 171.736000 428.216000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.216000 171.736000 432.020000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.020000 171.736000 435.824000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.824000 171.736000 439.628000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.628000 171.736000 443.432000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.432000 171.736000 447.236000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.236000 171.736000 451.040000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.040000 171.736000 454.844000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.844000 171.736000 458.648000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.648000 171.736000 462.452000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.452000 171.736000 466.256000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.256000 171.736000 470.060000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.060000 171.736000 473.864000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.864000 171.736000 477.668000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.668000 171.736000 481.472000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.472000 171.736000 485.276000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.276000 171.736000 489.080000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.080000 171.736000 492.884000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.884000 171.736000 496.688000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.688000 171.736000 500.492000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.492000 171.736000 504.296000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.296000 171.736000 508.100000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.100000 171.736000 511.904000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.904000 171.736000 515.708000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.708000 171.736000 519.512000 159.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 171.736000 527.932000 159.736000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 171.736000 535.528000 159.736000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 157.836000 330.764000 145.836000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 330.800000 157.836000 337.892000 145.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.904000 157.836000 349.280000 145.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 349.304000 157.836000 353.132000 145.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 353.108000 157.836000 360.836000 145.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 360.812000 157.836000 368.492000 145.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 368.516000 157.836000 378.776000 145.836000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 378.812000 157.836000 385.964000 145.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 386.012000 157.836000 392.780000 145.836000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 391.208000 157.836000 395.012000 145.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 395.012000 157.836000 398.816000 145.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 398.816000 157.836000 407.564000 145.836000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 407.612000 157.836000 413.348000 145.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 413.312000 157.836000 421.040000 145.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 421.016000 157.836000 428.108000 145.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 428.120000 157.836000 434.276000 145.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 434.324000 157.836000 439.136000 145.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 439.124000 157.836000 442.928000 145.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 442.800000 157.836000 446.604000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.700000 157.836000 450.504000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.600000 157.836000 454.404000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.500000 157.836000 458.304000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.400000 157.836000 462.204000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.300000 157.836000 466.104000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.200000 157.836000 470.004000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.100000 157.836000 473.904000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.000000 157.836000 477.804000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.900000 157.836000 481.704000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.800000 157.836000 485.604000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.700000 157.836000 489.504000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.600000 157.836000 493.404000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.500000 157.836000 497.304000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.400000 157.836000 501.204000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.300000 157.836000 505.104000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.200000 157.836000 509.004000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.100000 157.836000 512.904000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.000000 157.836000 516.804000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.900000 157.836000 520.704000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.800000 157.836000 524.604000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.700000 157.836000 528.504000 145.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 157.836000 535.632000 145.836000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 320.300000 143.856000 325.904000 131.856000 1.000000 0.000000 0.000000 1.000000 I
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 129.836000 325.040000 117.836000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 325.004000 129.836000 330.740000 117.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 330.704000 129.836000 334.532000 117.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 334.508000 129.836000 340.664000 117.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 340.712000 129.836000 347.804000 117.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 347.816000 129.836000 353.972000 117.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 353.900000 129.836000 357.704000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 357.800000 129.836000 361.604000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.700000 129.836000 365.504000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.600000 129.836000 369.404000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 369.500000 129.836000 373.304000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.400000 129.836000 377.204000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.300000 129.836000 381.104000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.200000 129.836000 385.004000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.100000 129.836000 388.904000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.000000 129.836000 392.804000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.900000 129.836000 396.704000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.800000 129.836000 400.604000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.700000 129.836000 404.504000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.600000 129.836000 408.404000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.500000 129.836000 412.304000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.400000 129.836000 416.204000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.300000 129.836000 420.104000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.200000 129.836000 424.004000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.100000 129.836000 427.904000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.000000 129.836000 431.804000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.900000 129.836000 435.704000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.800000 129.836000 439.604000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.700000 129.836000 443.504000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.600000 129.836000 447.404000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.500000 129.836000 451.304000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.400000 129.836000 455.204000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.300000 129.836000 459.104000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.200000 129.836000 463.004000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.100000 129.836000 466.904000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.000000 129.836000 470.804000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.900000 129.836000 474.704000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.800000 129.836000 478.604000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.700000 129.836000 482.504000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.600000 129.836000 486.404000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.500000 129.836000 490.304000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.400000 129.836000 494.204000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.300000 129.836000 498.104000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.200000 129.836000 502.004000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.100000 129.836000 505.904000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.000000 129.836000 509.804000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.900000 129.836000 513.704000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.800000 129.836000 517.604000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.700000 129.836000 521.504000 117.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 129.836000 527.932000 117.836000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 129.836000 535.528000 117.836000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 306.000000 136.200000 0 306.100000 136.200000 0 306.100000 644.700000 0 306.000000 644.700000 0 306.000000 136.200000 0
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 14002.200000 0 477.900000 14002.200000 0 477.900000 14312.000000 0 134.300000 14312.000000 0 134.300000 14002.200000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -1321030.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 11013.200000 0 168.100000 11013.200000 0 168.100000 11018.200000 0 76.900000 11018.200000 0 76.900000 11013.200000 0
+eoFillPath subpath 1 163.100000 11018.100000 0 168.100000 11018.100000 0 168.100000 11148.700000 0 163.100000 11148.700000 0 163.100000 11018.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 11018.200000 0 163.100000 11018.200000 0 163.100000 11153.600000 0 72.000000 11153.600000 0 72.000000 11018.200000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 11149.280000 87.320000 11139.280000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 11149.280000 93.420000 11139.280000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 11149.280000 97.510000 11139.280000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 11149.280000 101.420000 11139.280000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 11149.280000 104.170000 11139.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 11149.280000 110.530000 11139.280000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 11149.280000 113.270000 11139.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 11149.280000 116.470000 11139.280000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 11149.280000 123.480000 11139.280000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 11149.280000 129.610000 11139.280000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 11149.280000 135.090000 11139.280000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 11149.280000 140.890000 11139.280000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 11149.280000 144.820000 11139.280000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 11149.280000 150.920000 11139.280000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 11149.280000 153.670000 11139.280000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 11149.280000 156.470000 11139.280000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 11022.400000 0 168.200000 11022.400000 0 168.200000 11137.600000 0 72.000000 11137.600000 0 72.000000 11022.400000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11090.552000 79.253000 11081.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 11090.552000 86.669000 11081.552000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 11090.552000 90.215000 11081.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 11090.552000 93.077000 11081.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 11090.552000 97.406000 11081.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 11090.552000 100.853000 11081.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 11090.552000 107.324000 11081.552000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 11090.552000 112.337000 11081.552000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 11090.552000 115.271000 11081.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 11090.552000 118.655000 11081.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 11090.552000 126.512000 11081.552000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 11090.552000 130.805000 11081.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 11090.552000 135.881000 11081.552000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 11090.552000 139.355000 11081.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 11090.552000 147.284000 11081.552000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 11090.552000 150.074000 11081.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 11090.552000 155.897000 11081.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 11090.552000 158.750000 11081.552000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 11090.552000 161.853000 11081.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11080.052000 82.124000 11071.052000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 11080.052000 87.137000 11071.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 11080.052000 90.071000 11071.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 11080.052000 93.356000 11071.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 11080.052000 100.403000 11071.052000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 11080.052000 104.921000 11071.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 11080.052000 109.205000 11071.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 11080.052000 117.737000 11071.052000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 11080.052000 123.119000 11071.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 11080.052000 128.996000 11071.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 11080.052000 132.605000 11071.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 11080.052000 138.392000 11071.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 11080.052000 141.749000 11071.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 11080.052000 149.507000 11071.052000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 11080.052000 153.800000 11071.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 11080.052000 158.876000 11071.052000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 11080.052000 161.853000 11071.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11069.552000 81.764000 11060.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 11069.552000 87.596000 11060.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 11069.552000 93.356000 11060.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 11069.552000 102.050000 11060.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 11069.552000 113.822000 11060.552000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 11069.552000 122.651000 11060.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 11069.552000 134.117000 11060.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 11069.552000 138.401000 11060.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 11069.552000 147.149000 11060.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 11069.552000 158.921000 11060.552000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 11069.552000 161.853000 11060.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11059.052000 79.271000 11050.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 11059.052000 84.338000 11050.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 11059.052000 89.621000 11050.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 11059.052000 94.643000 11050.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 11059.052000 100.502000 11050.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 11059.052000 106.262000 11050.052000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 11059.052000 111.518000 11050.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 11059.052000 116.216000 11050.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 11059.052000 119.249000 11050.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 11059.052000 122.363000 11050.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 11059.052000 128.186000 11050.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 11059.052000 131.345000 11050.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 11059.052000 137.060000 11050.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 11059.052000 140.147000 11050.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 11059.052000 145.007000 11050.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 11059.052000 148.598000 11050.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 11059.052000 151.460000 11050.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 11059.052000 155.789000 11050.052000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 11059.052000 158.933000 11050.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11048.552000 80.702000 11039.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 11048.552000 83.573000 11039.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 11048.552000 89.396000 11039.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 11048.552000 95.156000 11039.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 11048.552000 100.547000 11039.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 11048.552000 109.052000 11039.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 11048.552000 111.959000 11039.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 11048.552000 117.251000 11039.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 11048.552000 121.904000 11039.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 11048.552000 126.503000 11039.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 11048.552000 129.338000 11039.552000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 11048.552000 134.936000 11039.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 11048.552000 143.441000 11039.552000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 11048.552000 148.796000 11039.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 11048.552000 154.574000 11039.552000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 11048.552000 158.876000 11039.552000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 11048.552000 161.853000 11039.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11038.052000 79.271000 11029.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 11038.052000 85.094000 11029.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 11038.052000 88.703000 11029.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 11038.052000 94.112000 11029.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 11038.052000 97.244000 11029.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 11038.052000 103.058000 11029.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 11038.052000 108.890000 11029.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 11038.052000 111.950000 11029.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 11038.052000 115.271000 11029.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 11038.052000 120.338000 11029.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 11038.052000 125.621000 11029.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 11038.052000 131.363000 11029.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 11038.052000 134.558000 11029.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 11038.052000 140.048000 11029.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 11038.052000 145.430000 11029.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 11038.052000 150.551000 11029.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 11038.052000 155.960000 11029.052000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 11038.052000 158.933000 11029.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11027.552000 80.009000 11018.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 11027.552000 85.364000 11018.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 11027.552000 88.271000 11018.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 11027.552000 91.169000 11018.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 11027.552000 97.955000 11018.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 11027.552000 107.765000 11018.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 11027.552000 110.672000 11018.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 11027.552000 115.964000 11018.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 11027.552000 120.617000 11018.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 11027.552000 125.216000 11018.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 11027.552000 128.051000 11018.552000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 11027.552000 134.954000 11018.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 11027.552000 146.285000 11018.552000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 11027.552000 151.667000 11018.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 11027.552000 155.906000 11018.552000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 11027.552000 159.033000 11018.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 11018.100000 0 72.100000 11018.100000 0 72.100000 11153.600000 0 72.000000 11153.600000 0 72.000000 11018.100000 0
+eoFillPath subpath 1 163.100000 11018.100000 0 163.200000 11018.100000 0 163.200000 11153.600000 0 163.100000 11153.600000 0 163.100000 11018.100000 0
+eoFillPath subpath 1 72.000000 11153.500000 0 163.200000 11153.500000 0 163.200000 11153.600000 0 72.000000 11153.600000 0 72.000000 11153.500000 0
+eoFillPath subpath 1 72.000000 11018.100000 0 163.200000 11018.100000 0 163.200000 11018.200000 0 72.000000 11018.200000 0 72.000000 11018.100000 0
+saveState
+eoClipPath subpath 1 96.900000 11093.400000 0 138.300000 11093.400000 0 138.300000 11137.600000 0 96.900000 11137.600000 0 96.900000 11093.400000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -1030150.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 10738.600000 0 165.500000 10738.600000 0 165.500000 10743.600000 0 76.900000 10743.600000 0 76.900000 10738.600000 0
+eoFillPath subpath 1 160.500000 10743.500000 0 165.500000 10743.500000 0 165.500000 10899.800000 0 160.500000 10899.800000 0 160.500000 10743.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 10743.600000 0 121.400000 10743.600000 0 121.400000 10904.700000 0 72.000000 10904.700000 0 72.000000 10743.600000 0
+saveState
+eoClipPath subpath 1 72.000000 10743.500000 0 160.500000 10743.500000 0 160.500000 10904.600000 0 72.000000 10904.600000 0 72.000000 10743.500000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -993450.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 10900.380000 89.280000 10890.380000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 10900.380000 95.630000 10890.380000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 10900.380000 99.520000 10890.380000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 10900.380000 102.270000 10890.380000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 10900.380000 108.450000 10890.380000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 10900.380000 112.610000 10890.380000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 10900.380000 118.510000 10890.380000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 10900.380000 121.670000 10890.380000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 10900.380000 124.470000 10890.380000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 10900.380000 130.830000 10890.380000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 10900.380000 133.970000 10890.380000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 10900.380000 137.920000 10890.380000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 10900.380000 144.230000 10890.380000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 10900.380000 150.350000 10890.380000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 10900.380000 153.570000 10890.380000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 10888.680000 95.000000 10878.680000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 10888.680000 97.770000 10878.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 10888.680000 103.000000 10878.680000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 10888.680000 109.330000 10878.680000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 10888.680000 117.470000 10878.680000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 10888.680000 123.620000 10878.680000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 10888.680000 128.800000 10878.680000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 10888.680000 135.130000 10878.680000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 10888.680000 141.250000 10878.680000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 10888.680000 145.410000 10878.680000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10873.852000 82.961000 10864.852000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 10873.852000 87.614000 10864.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 10873.852000 93.356000 10864.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 10873.852000 98.612000 10864.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 10873.852000 103.733000 10864.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 10873.852000 106.568000 10864.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 10873.852000 111.959000 10864.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 10873.852000 114.866000 10864.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 10873.852000 117.665000 10864.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 10873.852000 122.768000 10864.852000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 10873.852000 125.747000 10864.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 10873.852000 131.651000 10864.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 10873.852000 136.907000 10864.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 10873.852000 142.307000 10864.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 10873.852000 148.049000 10864.852000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 10873.852000 150.956000 10864.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 10873.852000 156.302000 10864.852000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10873.852000 159.253000 10864.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10863.352000 84.095000 10854.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 10863.352000 89.900000 10854.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 10863.352000 95.318000 10854.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 10863.352000 100.349000 10854.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 10863.352000 110.789000 10854.352000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 10863.352000 111.464000 10854.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 10863.352000 114.362000 10854.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 10863.352000 119.348000 10854.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 10863.352000 126.962000 10854.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 10863.352000 132.047000 10854.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 10863.352000 139.958000 10854.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 10863.352000 142.865000 10854.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 10863.352000 147.410000 10854.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 10863.352000 153.287000 10854.352000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 10863.352000 156.333000 10854.352000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10852.852000 84.095000 10843.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 10852.852000 89.468000 10843.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 10852.852000 94.121000 10843.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 10852.852000 99.899000 10843.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 10852.852000 105.218000 10843.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 10852.852000 109.502000 10843.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 10852.852000 115.649000 10843.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 10852.852000 122.327000 10843.852000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 10852.852000 127.718000 10843.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 10852.852000 132.002000 10843.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 10852.852000 138.149000 10843.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 10852.852000 145.205000 10843.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 10852.852000 150.992000 10843.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 10852.852000 156.311000 10843.852000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10852.852000 159.253000 10843.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10842.352000 82.394000 10833.352000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 10842.352000 86.705000 10833.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 10842.352000 91.322000 10833.352000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 10842.352000 94.913000 10833.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 10842.352000 98.054000 10833.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 10842.352000 102.014000 10833.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 10842.352000 104.876000 10833.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 10842.352000 113.435000 10833.352000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 10842.352000 118.718000 10833.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 10842.352000 121.949000 10833.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 10842.352000 125.063000 10833.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 10842.352000 130.886000 10833.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 10842.352000 134.045000 10833.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 10842.352000 138.005000 10833.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 10842.352000 143.792000 10833.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 10842.352000 149.111000 10833.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 10842.352000 151.964000 10833.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 10842.352000 156.293000 10833.352000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 10842.352000 159.153000 10833.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10831.852000 79.271000 10822.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 10831.852000 82.169000 10822.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 10831.852000 85.526000 10822.852000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 10831.852000 90.818000 10822.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 10831.852000 94.454000 10822.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 10831.852000 99.008000 10822.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 10831.852000 104.318000 10822.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 10831.852000 110.096000 10822.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 10831.852000 115.856000 10822.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 10831.852000 119.546000 10822.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 10831.852000 124.001000 10822.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 10831.852000 129.509000 10822.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 10831.852000 133.145000 10822.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 10831.852000 139.751000 10822.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 10831.852000 145.205000 10822.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 10831.852000 148.841000 10822.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 10831.852000 152.657000 10822.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 10831.852000 156.293000 10822.852000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10831.852000 159.253000 10822.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10821.352000 84.095000 10812.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 10821.352000 88.406000 10812.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 10821.352000 93.824000 10812.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 10821.352000 99.602000 10812.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 10821.352000 105.362000 10812.352000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 10821.352000 108.422000 10812.352000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 10821.352000 116.747000 10812.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 10821.352000 129.275000 10812.352000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 10821.352000 135.089000 10812.352000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 10821.352000 138.698000 10812.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 10821.352000 141.560000 10812.352000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 10821.352000 146.906000 10812.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 10821.352000 151.190000 10812.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 10821.352000 156.266000 10812.352000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10821.352000 159.253000 10812.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10810.852000 82.196000 10801.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 10810.852000 87.560000 10801.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 10810.852000 92.213000 10801.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 10810.852000 96.551000 10801.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 10810.852000 101.708000 10801.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 10810.852000 107.216000 10801.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 10810.852000 111.653000 10801.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 10810.852000 118.961000 10801.852000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 10810.852000 124.316000 10801.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 10810.852000 128.654000 10801.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 10810.852000 133.172000 10801.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 10810.852000 138.995000 10801.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 10810.852000 143.612000 10801.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 10810.852000 148.913000 10801.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 10810.852000 153.197000 10801.852000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 10810.852000 156.333000 10801.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10800.352000 80.009000 10791.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 10800.352000 85.319000 10791.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 10800.352000 91.061000 10791.352000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 10800.352000 100.052000 10791.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 10800.352000 113.993000 10791.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 10800.352000 116.873000 10791.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 10800.352000 120.410000 10791.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 10800.352000 126.296000 10791.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 10800.352000 135.350000 10791.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 10800.352000 145.106000 10791.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 10800.352000 150.893000 10791.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 10800.352000 156.212000 10791.352000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10800.352000 159.253000 10791.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10789.852000 82.196000 10780.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 10789.852000 87.560000 10780.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 10789.852000 93.392000 10780.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 10789.852000 99.152000 10780.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 10789.852000 101.960000 10780.852000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 10789.852000 107.306000 10780.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 10789.852000 111.905000 10780.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 10789.852000 115.640000 10780.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 10789.852000 122.444000 10780.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 10789.852000 127.898000 10780.852000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 10789.852000 135.575000 10780.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 10789.852000 141.380000 10780.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 10789.852000 145.241000 10780.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 10789.852000 150.803000 10780.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 10789.852000 156.302000 10780.852000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10789.852000 159.253000 10780.852000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10779.352000 80.009000 10770.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 10779.352000 85.796000 10770.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 10779.352000 91.115000 10770.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 10779.352000 95.399000 10770.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 10779.352000 100.718000 10770.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 10779.352000 107.054000 10770.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 10779.352000 118.097000 10770.352000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 10779.352000 123.524000 10770.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 10779.352000 129.401000 10770.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 10779.352000 131.768000 10770.352000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 10779.352000 135.413000 10770.352000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 10779.352000 141.659000 10770.352000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 10779.352000 150.965000 10770.352000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 10779.352000 156.320000 10770.352000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 10779.352000 159.253000 10770.352000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10768.852000 81.017000 10759.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 10768.852000 84.608000 10759.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 10768.852000 89.963000 10759.852000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 10768.852000 92.870000 10759.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 10768.852000 98.693000 10759.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 10768.852000 103.310000 10759.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 10768.852000 107.243000 10759.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 10768.852000 116.081000 10759.852000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 10768.852000 121.886000 10759.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 10768.852000 127.205000 10759.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 10768.852000 132.983000 10759.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 10768.852000 136.943000 10759.852000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 10768.852000 143.846000 10759.852000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 10768.852000 148.184000 10759.852000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 10768.852000 153.260000 10759.852000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 10768.852000 156.433000 10759.852000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 10758.352000 79.271000 10749.352000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 10758.352000 85.094000 10749.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 10758.352000 90.854000 10749.352000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 10758.352000 93.653000 10749.352000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 10743.500000 0 72.100000 10743.500000 0 72.100000 10904.700000 0 72.000000 10904.700000 0 72.000000 10743.500000 0
+eoFillPath subpath 1 160.500000 10743.500000 0 160.600000 10743.500000 0 160.600000 10904.700000 0 160.500000 10904.700000 0 160.500000 10743.500000 0
+eoFillPath subpath 1 72.000000 10904.600000 0 160.600000 10904.600000 0 160.600000 10904.700000 0 72.000000 10904.700000 0 72.000000 10904.600000 0
+eoFillPath subpath 1 72.000000 10743.500000 0 160.600000 10743.500000 0 160.600000 10743.600000 0 72.000000 10743.600000 0 72.000000 10743.500000 0
+saveState
+eoClipPath subpath 1 108.000000 10256.100000 0 178.900000 10256.100000 0 178.900000 10312.800000 0 108.000000 10312.800000 0 108.000000 10256.100000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -946420.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 6197.800000 0 165.500000 6197.800000 0 165.500000 6202.800000 0 76.900000 6202.800000 0 76.900000 6197.800000 0
+eoFillPath subpath 1 160.500000 6202.700000 0 165.500000 6202.700000 0 165.500000 6311.500000 0 160.500000 6311.500000 0 160.500000 6202.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 6202.800000 0 160.500000 6202.800000 0 160.500000 6316.400000 0 72.000000 6316.400000 0 72.000000 6202.800000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6312.052000 83.771000 6303.052000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 6312.052000 89.594000 6303.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 6312.052000 92.465000 6303.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 6312.052000 97.568000 6303.052000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 6312.052000 100.943000 6303.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 6312.052000 106.955000 6303.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 6312.052000 110.447000 6303.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 6312.052000 114.425000 6303.052000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 6312.052000 119.717000 6303.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 6312.052000 127.493000 6303.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 6312.052000 130.949000 6303.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 6312.052000 136.574000 6303.052000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 6312.052000 141.920000 6303.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 6312.052000 147.365000 6303.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 6312.052000 151.703000 6303.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 6312.052000 156.320000 6303.052000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 6312.052000 159.153000 6303.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6301.552000 81.764000 6292.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 6301.552000 85.130000 6292.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 6301.552000 88.712000 6292.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 6301.552000 94.022000 6292.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 6301.552000 98.306000 6292.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 6301.552000 102.455000 6292.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 6301.552000 106.676000 6292.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 6301.552000 110.312000 6292.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 6301.552000 114.920000 6292.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 6301.552000 119.060000 6292.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 6301.552000 125.450000 6292.552000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 6301.552000 130.832000 6292.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 6301.552000 139.445000 6292.552000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 6301.552000 145.169000 6292.552000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 6301.552000 148.076000 6292.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 6301.552000 153.323000 6292.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 6301.552000 156.433000 6292.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6291.052000 80.009000 6282.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 6291.052000 82.871000 6282.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 6291.052000 88.316000 6282.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 6291.052000 94.094000 6282.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 6291.052000 96.947000 6282.052000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 6291.052000 104.948000 6282.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 6291.052000 113.705000 6282.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 6291.052000 119.492000 6282.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 6291.052000 124.811000 6282.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 6291.052000 132.848000 6282.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 6291.052000 141.605000 6282.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 6291.052000 144.467000 6282.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 6291.052000 148.103000 6282.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 6291.052000 150.965000 6282.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 6291.052000 156.311000 6282.052000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6291.052000 159.253000 6282.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6280.552000 80.999000 6271.552000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 6280.552000 90.539000 6271.552000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 6280.552000 95.318000 6271.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 6280.552000 99.602000 6271.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 6280.552000 102.473000 6271.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 6280.552000 108.260000 6271.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 6280.552000 110.762000 6271.552000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 6280.552000 115.316000 6271.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 6280.552000 122.156000 6271.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 6280.552000 132.299000 6271.552000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 6280.552000 136.970000 6271.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 6280.552000 139.877000 6271.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 6280.552000 142.775000 6271.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 6280.552000 148.022000 6271.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 6280.552000 152.720000 6271.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 6280.552000 156.311000 6271.552000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6280.552000 159.253000 6271.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6270.052000 83.006000 6261.052000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 6270.052000 88.793000 6261.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 6270.052000 91.664000 6261.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 6270.052000 94.562000 6261.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 6270.052000 100.349000 6261.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 6270.052000 103.157000 6261.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 6270.052000 108.980000 6261.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 6270.052000 114.740000 6261.052000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 6270.052000 119.375000 6261.052000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 6270.052000 128.033000 6261.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 6270.052000 141.479000 6261.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 6270.052000 146.807000 6261.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 6270.052000 152.684000 6261.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 6270.052000 156.293000 6261.052000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6270.052000 159.253000 6261.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6259.552000 79.730000 6250.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 6259.552000 84.005000 6250.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 6259.552000 89.423000 6250.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 6259.552000 98.036000 6250.552000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 6259.552000 121.157000 6250.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 6259.552000 145.115000 6250.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 6259.552000 151.001000 6250.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 6259.552000 156.320000 6250.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 6259.552000 159.253000 6250.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6249.052000 83.285000 6240.052000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 6249.052000 89.099000 6240.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 6249.052000 93.401000 6240.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 6249.052000 98.477000 6240.052000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 6249.052000 103.121000 6240.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 6249.052000 105.974000 6240.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 6249.052000 111.320000 6240.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 6249.052000 115.604000 6240.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 6249.052000 123.857000 6240.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 6249.052000 136.007000 6240.052000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 6249.052000 141.794000 6240.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 6249.052000 144.665000 6240.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 6249.052000 147.464000 6240.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 6249.052000 153.251000 6240.052000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 6249.052000 156.433000 6240.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6238.552000 79.271000 6229.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 6238.552000 85.094000 6229.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 6238.552000 90.854000 6229.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 6238.552000 96.146000 6229.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 6238.552000 102.302000 6229.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 6238.552000 107.711000 6229.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 6238.552000 113.048000 6229.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 6238.552000 119.204000 6229.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 6238.552000 124.991000 6229.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 6238.552000 130.310000 6229.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 6238.552000 135.647000 6229.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 6238.552000 144.755000 6229.552000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 6238.552000 153.323000 6229.552000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 6238.552000 156.333000 6229.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6228.052000 82.160000 6219.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 6228.052000 85.067000 6219.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 6228.052000 89.297000 6219.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 6228.052000 94.616000 6219.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 6228.052000 98.747000 6219.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 6228.052000 106.055000 6219.052000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 6228.052000 109.700000 6219.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 6228.052000 115.055000 6219.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 6228.052000 118.601000 6219.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 6228.052000 124.010000 6219.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 6228.052000 128.042000 6219.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 6228.052000 135.998000 6219.052000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 6228.052000 141.785000 6219.052000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 6228.052000 144.656000 6219.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 6228.052000 147.554000 6219.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 6228.052000 153.341000 6219.052000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 6228.052000 156.433000 6219.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 6217.552000 79.271000 6208.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 6217.552000 85.094000 6208.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 6217.552000 90.854000 6208.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 6217.552000 93.743000 6208.552000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 6202.700000 0 72.100000 6202.700000 0 72.100000 6316.400000 0 72.000000 6316.400000 0 72.000000 6202.700000 0
+eoFillPath subpath 1 160.500000 6202.700000 0 160.600000 6202.700000 0 160.600000 6316.400000 0 160.500000 6316.400000 0 160.500000 6202.700000 0
+eoFillPath subpath 1 72.000000 6316.300000 0 160.600000 6316.300000 0 160.600000 6316.400000 0 72.000000 6316.400000 0 72.000000 6316.300000 0
+eoFillPath subpath 1 72.000000 6202.700000 0 160.600000 6202.700000 0 160.600000 6202.800000 0 72.000000 6202.800000 0 72.000000 6202.700000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 12392.200000 0 169.600000 12392.200000 0 169.600000 12397.200000 0 76.900000 12397.200000 0 76.900000 12392.200000 0
+eoFillPath subpath 1 164.600000 12397.100000 0 169.600000 12397.100000 0 169.600000 12512.700000 0 164.600000 12512.700000 0 164.600000 12397.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 12397.200000 0 121.400000 12397.200000 0 121.400000 12517.600000 0 72.000000 12517.600000 0 72.000000 12397.200000 0
+saveState
+eoClipPath subpath 1 72.000000 12397.100000 0 164.600000 12397.100000 0 164.600000 12517.500000 0 72.000000 12517.500000 0 72.000000 12397.100000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -1154690.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 12467.100000 0 93.700000 12467.100000 0 93.700000 12486.300000 0 72.000000 12486.300000 0 72.000000 12467.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 12467.100000 0 169.600000 12467.100000 0 169.600000 12486.300000 0 93.700000 12486.300000 0 93.700000 12467.100000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 12450.400000 0 93.700000 12450.400000 0 93.700000 12467.100000 0 72.000000 12467.100000 0 72.000000 12450.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 12450.400000 0 169.600000 12450.400000 0 169.600000 12467.100000 0 93.700000 12467.100000 0 93.700000 12450.400000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 12431.200000 0 93.700000 12431.200000 0 93.700000 12450.400000 0 72.000000 12450.400000 0 72.000000 12431.200000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 12431.200000 0 169.600000 12431.200000 0 169.600000 12450.400000 0 93.700000 12450.400000 0 93.700000 12431.200000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 12412.000000 0 93.700000 12412.000000 0 93.700000 12431.200000 0 72.000000 12431.200000 0 72.000000 12412.000000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 12412.000000 0 169.600000 12412.000000 0 169.600000 12431.200000 0 93.700000 12431.200000 0 93.700000 12412.000000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12513.252000 82.898000 12504.252000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 12513.252000 87.200000 12504.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 12513.252000 90.809000 12504.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 12513.252000 93.671000 12504.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 12513.252000 98.315000 12504.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 12513.252000 101.906000 12504.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 12513.252000 106.514000 12504.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 12513.252000 109.754000 12504.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 12513.252000 112.868000 12504.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 12513.252000 118.691000 12504.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 12513.252000 121.850000 12504.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 12513.252000 125.702000 12504.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 12513.252000 131.588000 12504.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 12513.252000 136.907000 12504.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 12513.252000 140.039000 12504.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 12513.252000 146.078000 12504.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 12513.252000 151.442000 12504.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 12513.252000 154.349000 12504.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 12513.252000 157.148000 12504.252000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 12513.252000 160.433000 12504.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12502.752000 84.095000 12493.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 12502.752000 89.468000 12493.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 12502.752000 94.580000 12493.752000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 12502.752000 97.631000 12493.752000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 12482.352000 104.443000 12473.352000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 12482.352000 109.060000 12473.352000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 12482.352000 113.398000 12473.352000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 12482.352000 119.194000 12473.352000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 12482.352000 124.612000 12473.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 12482.352000 127.465000 12473.352000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 12465.652000 101.176000 12456.652000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 12465.652000 104.074000 12456.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 12465.652000 109.420000 12456.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 12465.652000 114.442000 12456.652000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 12465.652000 120.202000 12456.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 12465.652000 123.811000 12456.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 12465.652000 129.121000 12456.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 12465.652000 134.899000 12456.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 12465.652000 139.516000 12456.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 12465.652000 143.107000 12456.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 12465.652000 148.417000 12456.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 12465.652000 151.270000 12456.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 12465.652000 157.093000 12456.652000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 12448.952000 103.048000 12439.952000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 12448.952000 108.421000 12439.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 12448.952000 113.443000 12439.952000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 12448.952000 118.852000 12439.952000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 12448.952000 124.702000 12439.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 12448.952000 130.021000 12439.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 12448.952000 135.079000 12439.952000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 12429.752000 104.407000 12420.752000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 12429.752000 109.816000 12420.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 12429.752000 115.594000 12420.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 12429.752000 121.354000 12420.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 12429.752000 125.692000 12420.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 12429.752000 128.563000 12420.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 12429.752000 133.954000 12420.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 12429.752000 139.786000 12420.752000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 12397.100000 0 72.100000 12397.100000 0 72.100000 12517.600000 0 72.000000 12517.600000 0 72.000000 12397.100000 0
+eoFillPath subpath 1 164.600000 12397.100000 0 164.700000 12397.100000 0 164.700000 12517.600000 0 164.600000 12517.600000 0 164.600000 12397.100000 0
+eoFillPath subpath 1 72.000000 12517.500000 0 164.700000 12517.500000 0 164.700000 12517.600000 0 72.000000 12517.600000 0 72.000000 12517.500000 0
+eoFillPath subpath 1 72.000000 12397.100000 0 164.700000 12397.100000 0 164.700000 12397.200000 0 72.000000 12397.200000 0 72.000000 12397.100000 0
+eoFillPath subpath 1 91.300000 12412.000000 0 93.700000 12412.000000 0 93.700000 12486.300000 0 91.300000 12486.300000 0 91.300000 12412.000000 0
+eoFillPath subpath 1 72.000000 12431.200000 0 169.600000 12431.200000 0 169.600000 12433.600000 0 72.000000 12433.600000 0 72.000000 12431.200000 0
+eoFillPath subpath 1 72.000000 12483.900000 0 169.600000 12483.900000 0 169.600000 12486.300000 0 72.000000 12486.300000 0 72.000000 12483.900000 0
+eoFillPath subpath 1 72.000000 12412.000000 0 169.600000 12412.000000 0 169.600000 12414.400000 0 72.000000 12414.400000 0 72.000000 12412.000000 0
+saveState
+eoClipPath subpath 1 108.000000 4546.000000 0 150.800000 4546.000000 0 150.800000 4590.300000 0 108.000000 4590.300000 0 108.000000 4546.000000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 -375410.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 3696.100000 0 499.600000 3696.100000 0 499.600000 3701.200000 0 186.800000 3701.200000 0 186.800000 3696.100000 0
+eoFillPath subpath 1 494.500000 3701.100000 0 499.600000 3701.100000 0 499.600000 3889.500000 0 494.500000 3889.500000 0 494.500000 3701.100000 0
+saveState
+eoClipPath subpath 1 181.800000 3701.100000 0 494.500000 3701.100000 0 494.500000 3894.400000 0 181.800000 3894.400000 0 181.800000 3701.100000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 3894.500000 0 494.500000 3894.500000 0 494.500000 3894.500000 0 181.700000 3894.500000 0
+eoFillPath subpath 1 181.700000 3894.500000 0 494.500000 3894.500000 0 494.500000 3893.700000 0 181.700000 3893.700000 0 181.700000 3894.500000 0
+eoFillPath subpath 1 181.700000 3893.700000 0 494.500000 3893.700000 0 494.500000 3893.000000 0 181.700000 3893.000000 0 181.700000 3893.700000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 3893.000000 0 494.500000 3893.000000 0 494.500000 3892.200000 0 181.700000 3892.200000 0 181.700000 3893.000000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 3892.200000 0 494.500000 3892.200000 0 494.500000 3891.400000 0 181.700000 3891.400000 0 181.700000 3892.200000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 3891.400000 0 494.500000 3891.400000 0 494.500000 3890.700000 0 181.700000 3890.700000 0 181.700000 3891.400000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 3890.700000 0 494.500000 3890.700000 0 494.500000 3889.900000 0 181.700000 3889.900000 0 181.700000 3890.700000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 3889.900000 0 494.500000 3889.900000 0 494.500000 3889.200000 0 181.700000 3889.200000 0 181.700000 3889.900000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 3889.200000 0 494.500000 3889.200000 0 494.500000 3888.400000 0 181.700000 3888.400000 0 181.700000 3889.200000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 3888.400000 0 494.500000 3888.400000 0 494.500000 3887.700000 0 181.700000 3887.700000 0 181.700000 3888.400000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 3887.700000 0 494.500000 3887.700000 0 494.500000 3886.900000 0 181.700000 3886.900000 0 181.700000 3887.700000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 3886.900000 0 494.500000 3886.900000 0 494.500000 3886.100000 0 181.700000 3886.100000 0 181.700000 3886.900000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 3886.100000 0 494.500000 3886.100000 0 494.500000 3885.400000 0 181.700000 3885.400000 0 181.700000 3886.100000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 3885.400000 0 494.500000 3885.400000 0 494.500000 3884.600000 0 181.700000 3884.600000 0 181.700000 3885.400000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 3884.600000 0 494.500000 3884.600000 0 494.500000 3883.900000 0 181.700000 3883.900000 0 181.700000 3884.600000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 3883.900000 0 494.500000 3883.900000 0 494.500000 3883.100000 0 181.700000 3883.100000 0 181.700000 3883.900000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 3883.100000 0 494.500000 3883.100000 0 494.500000 3882.300000 0 181.700000 3882.300000 0 181.700000 3883.100000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 3882.300000 0 494.500000 3882.300000 0 494.500000 3881.600000 0 181.700000 3881.600000 0 181.700000 3882.300000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 3881.600000 0 494.500000 3881.600000 0 494.500000 3880.800000 0 181.700000 3880.800000 0 181.700000 3881.600000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 3880.800000 0 494.500000 3880.800000 0 494.500000 3880.100000 0 181.700000 3880.100000 0 181.700000 3880.800000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 3880.100000 0 494.500000 3880.100000 0 494.500000 3879.300000 0 181.700000 3879.300000 0 181.700000 3880.100000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 3879.300000 0 494.500000 3879.300000 0 494.500000 3878.500000 0 181.700000 3878.500000 0 181.700000 3879.300000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 3878.500000 0 494.500000 3878.500000 0 494.500000 3877.800000 0 181.700000 3877.800000 0 181.700000 3878.500000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 3877.800000 0 494.500000 3877.800000 0 494.500000 3877.000000 0 181.700000 3877.000000 0 181.700000 3877.800000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 3877.000000 0 494.500000 3877.000000 0 494.500000 3876.300000 0 181.700000 3876.300000 0 181.700000 3877.000000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 3876.300000 0 494.500000 3876.300000 0 494.500000 3875.500000 0 181.700000 3875.500000 0 181.700000 3876.300000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 3875.500000 0 494.500000 3875.500000 0 494.500000 3874.800000 0 181.700000 3874.800000 0 181.700000 3875.500000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 3874.800000 0 494.500000 3874.800000 0 494.500000 3874.000000 0 181.700000 3874.000000 0 181.700000 3874.800000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 3874.000000 0 494.500000 3874.000000 0 494.500000 3873.200000 0 181.700000 3873.200000 0 181.700000 3874.000000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 3873.200000 0 494.500000 3873.200000 0 494.500000 3872.500000 0 181.700000 3872.500000 0 181.700000 3873.200000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 3872.500000 0 494.500000 3872.500000 0 494.500000 3871.700000 0 181.700000 3871.700000 0 181.700000 3872.500000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 3871.700000 0 494.500000 3871.700000 0 494.500000 3871.000000 0 181.700000 3871.000000 0 181.700000 3871.700000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 3871.000000 0 494.500000 3871.000000 0 494.500000 3870.200000 0 181.700000 3870.200000 0 181.700000 3871.000000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 3870.200000 0 494.500000 3870.200000 0 494.500000 3869.400000 0 181.700000 3869.400000 0 181.700000 3870.200000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 3869.400000 0 494.500000 3869.400000 0 494.500000 3868.700000 0 181.700000 3868.700000 0 181.700000 3869.400000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 3868.700000 0 494.500000 3868.700000 0 494.500000 3867.900000 0 181.700000 3867.900000 0 181.700000 3868.700000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 3867.900000 0 494.500000 3867.900000 0 494.500000 3867.200000 0 181.700000 3867.200000 0 181.700000 3867.900000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 3867.200000 0 494.500000 3867.200000 0 494.500000 3866.400000 0 181.700000 3866.400000 0 181.700000 3867.200000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 3866.400000 0 494.500000 3866.400000 0 494.500000 3865.600000 0 181.700000 3865.600000 0 181.700000 3866.400000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 3865.600000 0 494.500000 3865.600000 0 494.500000 3864.900000 0 181.700000 3864.900000 0 181.700000 3865.600000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 3864.900000 0 494.500000 3864.900000 0 494.500000 3864.100000 0 181.700000 3864.100000 0 181.700000 3864.900000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 3864.100000 0 494.500000 3864.100000 0 494.500000 3863.400000 0 181.700000 3863.400000 0 181.700000 3864.100000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 3863.400000 0 494.500000 3863.400000 0 494.500000 3862.600000 0 181.700000 3862.600000 0 181.700000 3863.400000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 3862.600000 0 494.500000 3862.600000 0 494.500000 3861.900000 0 181.700000 3861.900000 0 181.700000 3862.600000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 3861.900000 0 494.500000 3861.900000 0 494.500000 3861.100000 0 181.700000 3861.100000 0 181.700000 3861.900000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 3861.100000 0 494.500000 3861.100000 0 494.500000 3860.300000 0 181.700000 3860.300000 0 181.700000 3861.100000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 3860.300000 0 494.500000 3860.300000 0 494.500000 3859.600000 0 181.700000 3859.600000 0 181.700000 3860.300000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 3859.600000 0 494.500000 3859.600000 0 494.500000 3858.800000 0 181.700000 3858.800000 0 181.700000 3859.600000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 3858.800000 0 494.500000 3858.800000 0 494.500000 3858.100000 0 181.700000 3858.100000 0 181.700000 3858.800000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 3858.100000 0 494.500000 3858.100000 0 494.500000 3857.300000 0 181.700000 3857.300000 0 181.700000 3858.100000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 3857.300000 0 494.500000 3857.300000 0 494.500000 3856.500000 0 181.700000 3856.500000 0 181.700000 3857.300000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 3856.500000 0 494.500000 3856.500000 0 494.500000 3855.800000 0 181.700000 3855.800000 0 181.700000 3856.500000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 3855.800000 0 494.500000 3855.800000 0 494.500000 3855.000000 0 181.700000 3855.000000 0 181.700000 3855.800000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 3855.000000 0 494.500000 3855.000000 0 494.500000 3854.300000 0 181.700000 3854.300000 0 181.700000 3855.000000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 3854.300000 0 494.500000 3854.300000 0 494.500000 3853.500000 0 181.700000 3853.500000 0 181.700000 3854.300000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 3853.500000 0 494.500000 3853.500000 0 494.500000 3852.700000 0 181.700000 3852.700000 0 181.700000 3853.500000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 3852.700000 0 494.500000 3852.700000 0 494.500000 3852.000000 0 181.700000 3852.000000 0 181.700000 3852.700000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 3852.000000 0 494.500000 3852.000000 0 494.500000 3851.200000 0 181.700000 3851.200000 0 181.700000 3852.000000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 3851.200000 0 494.500000 3851.200000 0 494.500000 3850.500000 0 181.700000 3850.500000 0 181.700000 3851.200000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 3850.500000 0 494.500000 3850.500000 0 494.500000 3849.700000 0 181.700000 3849.700000 0 181.700000 3850.500000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 3849.700000 0 494.500000 3849.700000 0 494.500000 3849.000000 0 181.700000 3849.000000 0 181.700000 3849.700000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 3849.000000 0 494.500000 3849.000000 0 494.500000 3848.200000 0 181.700000 3848.200000 0 181.700000 3849.000000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 3848.200000 0 494.500000 3848.200000 0 494.500000 3847.400000 0 181.700000 3847.400000 0 181.700000 3848.200000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 3847.400000 0 494.500000 3847.400000 0 494.500000 3846.700000 0 181.700000 3846.700000 0 181.700000 3847.400000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 3846.700000 0 494.500000 3846.700000 0 494.500000 3845.900000 0 181.700000 3845.900000 0 181.700000 3846.700000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 3845.900000 0 494.500000 3845.900000 0 494.500000 3845.200000 0 181.700000 3845.200000 0 181.700000 3845.900000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 3845.200000 0 494.500000 3845.200000 0 494.500000 3844.400000 0 181.700000 3844.400000 0 181.700000 3845.200000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 3844.400000 0 494.500000 3844.400000 0 494.500000 3843.600000 0 181.700000 3843.600000 0 181.700000 3844.400000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 3843.600000 0 494.500000 3843.600000 0 494.500000 3842.900000 0 181.700000 3842.900000 0 181.700000 3843.600000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 3842.900000 0 494.500000 3842.900000 0 494.500000 3842.100000 0 181.700000 3842.100000 0 181.700000 3842.900000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 3842.100000 0 494.500000 3842.100000 0 494.500000 3841.400000 0 181.700000 3841.400000 0 181.700000 3842.100000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 3841.400000 0 494.500000 3841.400000 0 494.500000 3840.600000 0 181.700000 3840.600000 0 181.700000 3841.400000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 3840.600000 0 494.500000 3840.600000 0 494.500000 3839.800000 0 181.700000 3839.800000 0 181.700000 3840.600000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 3839.800000 0 494.500000 3839.800000 0 494.500000 3839.100000 0 181.700000 3839.100000 0 181.700000 3839.800000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 3839.100000 0 494.500000 3839.100000 0 494.500000 3838.300000 0 181.700000 3838.300000 0 181.700000 3839.100000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 3838.300000 0 494.500000 3838.300000 0 494.500000 3837.600000 0 181.700000 3837.600000 0 181.700000 3838.300000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 3837.600000 0 494.500000 3837.600000 0 494.500000 3836.800000 0 181.700000 3836.800000 0 181.700000 3837.600000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 3836.800000 0 494.500000 3836.800000 0 494.500000 3836.100000 0 181.700000 3836.100000 0 181.700000 3836.800000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 3836.100000 0 494.500000 3836.100000 0 494.500000 3835.300000 0 181.700000 3835.300000 0 181.700000 3836.100000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 3835.300000 0 494.500000 3835.300000 0 494.500000 3834.500000 0 181.700000 3834.500000 0 181.700000 3835.300000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 3834.500000 0 494.500000 3834.500000 0 494.500000 3833.800000 0 181.700000 3833.800000 0 181.700000 3834.500000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 3833.800000 0 494.500000 3833.800000 0 494.500000 3833.000000 0 181.700000 3833.000000 0 181.700000 3833.800000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 3833.000000 0 494.500000 3833.000000 0 494.500000 3832.300000 0 181.700000 3832.300000 0 181.700000 3833.000000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 3832.300000 0 494.500000 3832.300000 0 494.500000 3831.500000 0 181.700000 3831.500000 0 181.700000 3832.300000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 3831.500000 0 494.500000 3831.500000 0 494.500000 3830.700000 0 181.700000 3830.700000 0 181.700000 3831.500000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 3830.700000 0 494.500000 3830.700000 0 494.500000 3830.000000 0 181.700000 3830.000000 0 181.700000 3830.700000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 3830.000000 0 494.500000 3830.000000 0 494.500000 3829.200000 0 181.700000 3829.200000 0 181.700000 3830.000000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 3829.200000 0 494.500000 3829.200000 0 494.500000 3828.500000 0 181.700000 3828.500000 0 181.700000 3829.200000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 3828.500000 0 494.500000 3828.500000 0 494.500000 3827.700000 0 181.700000 3827.700000 0 181.700000 3828.500000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 3827.700000 0 494.500000 3827.700000 0 494.500000 3826.900000 0 181.700000 3826.900000 0 181.700000 3827.700000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 3826.900000 0 494.500000 3826.900000 0 494.500000 3826.200000 0 181.700000 3826.200000 0 181.700000 3826.900000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 3826.200000 0 494.500000 3826.200000 0 494.500000 3825.400000 0 181.700000 3825.400000 0 181.700000 3826.200000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 3825.400000 0 494.500000 3825.400000 0 494.500000 3824.700000 0 181.700000 3824.700000 0 181.700000 3825.400000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 3824.700000 0 494.500000 3824.700000 0 494.500000 3823.900000 0 181.700000 3823.900000 0 181.700000 3824.700000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 3823.900000 0 494.500000 3823.900000 0 494.500000 3823.200000 0 181.700000 3823.200000 0 181.700000 3823.900000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 3823.200000 0 494.500000 3823.200000 0 494.500000 3822.400000 0 181.700000 3822.400000 0 181.700000 3823.200000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 3822.400000 0 494.500000 3822.400000 0 494.500000 3821.600000 0 181.700000 3821.600000 0 181.700000 3822.400000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 3821.600000 0 494.500000 3821.600000 0 494.500000 3820.900000 0 181.700000 3820.900000 0 181.700000 3821.600000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 3820.900000 0 494.500000 3820.900000 0 494.500000 3820.100000 0 181.700000 3820.100000 0 181.700000 3820.900000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 3820.100000 0 494.500000 3820.100000 0 494.500000 3819.400000 0 181.700000 3819.400000 0 181.700000 3820.100000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 3819.400000 0 494.500000 3819.400000 0 494.500000 3818.600000 0 181.700000 3818.600000 0 181.700000 3819.400000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 3818.600000 0 494.500000 3818.600000 0 494.500000 3817.800000 0 181.700000 3817.800000 0 181.700000 3818.600000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 3817.800000 0 494.500000 3817.800000 0 494.500000 3817.100000 0 181.700000 3817.100000 0 181.700000 3817.800000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 3817.100000 0 494.500000 3817.100000 0 494.500000 3816.300000 0 181.700000 3816.300000 0 181.700000 3817.100000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 3816.300000 0 494.500000 3816.300000 0 494.500000 3815.600000 0 181.700000 3815.600000 0 181.700000 3816.300000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 3815.600000 0 494.500000 3815.600000 0 494.500000 3814.800000 0 181.700000 3814.800000 0 181.700000 3815.600000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 3814.800000 0 494.500000 3814.800000 0 494.500000 3814.000000 0 181.700000 3814.000000 0 181.700000 3814.800000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 3814.000000 0 494.500000 3814.000000 0 494.500000 3813.300000 0 181.700000 3813.300000 0 181.700000 3814.000000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 3813.300000 0 494.500000 3813.300000 0 494.500000 3812.500000 0 181.700000 3812.500000 0 181.700000 3813.300000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 3812.500000 0 494.500000 3812.500000 0 494.500000 3811.800000 0 181.700000 3811.800000 0 181.700000 3812.500000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 3811.800000 0 494.500000 3811.800000 0 494.500000 3811.000000 0 181.700000 3811.000000 0 181.700000 3811.800000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 3811.000000 0 494.500000 3811.000000 0 494.500000 3810.300000 0 181.700000 3810.300000 0 181.700000 3811.000000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 3810.300000 0 494.500000 3810.300000 0 494.500000 3809.500000 0 181.700000 3809.500000 0 181.700000 3810.300000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 3809.500000 0 494.500000 3809.500000 0 494.500000 3808.700000 0 181.700000 3808.700000 0 181.700000 3809.500000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 3808.700000 0 494.500000 3808.700000 0 494.500000 3808.000000 0 181.700000 3808.000000 0 181.700000 3808.700000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 3808.000000 0 494.500000 3808.000000 0 494.500000 3807.200000 0 181.700000 3807.200000 0 181.700000 3808.000000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 3807.200000 0 494.500000 3807.200000 0 494.500000 3806.500000 0 181.700000 3806.500000 0 181.700000 3807.200000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 3806.500000 0 494.500000 3806.500000 0 494.500000 3805.700000 0 181.700000 3805.700000 0 181.700000 3806.500000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 3805.700000 0 494.500000 3805.700000 0 494.500000 3804.900000 0 181.700000 3804.900000 0 181.700000 3805.700000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 3804.900000 0 494.500000 3804.900000 0 494.500000 3804.200000 0 181.700000 3804.200000 0 181.700000 3804.900000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 3804.200000 0 494.500000 3804.200000 0 494.500000 3803.400000 0 181.700000 3803.400000 0 181.700000 3804.200000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 3803.400000 0 494.500000 3803.400000 0 494.500000 3802.700000 0 181.700000 3802.700000 0 181.700000 3803.400000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 3802.700000 0 494.500000 3802.700000 0 494.500000 3801.900000 0 181.700000 3801.900000 0 181.700000 3802.700000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 3801.900000 0 494.500000 3801.900000 0 494.500000 3801.100000 0 181.700000 3801.100000 0 181.700000 3801.900000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 3801.100000 0 494.500000 3801.100000 0 494.500000 3800.400000 0 181.700000 3800.400000 0 181.700000 3801.100000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 3800.400000 0 494.500000 3800.400000 0 494.500000 3799.600000 0 181.700000 3799.600000 0 181.700000 3800.400000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 3799.600000 0 494.500000 3799.600000 0 494.500000 3798.900000 0 181.700000 3798.900000 0 181.700000 3799.600000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 3798.900000 0 494.500000 3798.900000 0 494.500000 3798.100000 0 181.700000 3798.100000 0 181.700000 3798.900000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 3798.100000 0 494.500000 3798.100000 0 494.500000 3797.400000 0 181.700000 3797.400000 0 181.700000 3798.100000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 3797.400000 0 494.500000 3797.400000 0 494.500000 3796.600000 0 181.700000 3796.600000 0 181.700000 3797.400000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 3796.600000 0 494.500000 3796.600000 0 494.500000 3795.800000 0 181.700000 3795.800000 0 181.700000 3796.600000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 3795.800000 0 494.500000 3795.800000 0 494.500000 3795.100000 0 181.700000 3795.100000 0 181.700000 3795.800000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 3795.100000 0 494.500000 3795.100000 0 494.500000 3794.300000 0 181.700000 3794.300000 0 181.700000 3795.100000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 3794.300000 0 494.500000 3794.300000 0 494.500000 3793.600000 0 181.700000 3793.600000 0 181.700000 3794.300000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 3793.600000 0 494.500000 3793.600000 0 494.500000 3792.800000 0 181.700000 3792.800000 0 181.700000 3793.600000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 3792.800000 0 494.500000 3792.800000 0 494.500000 3792.000000 0 181.700000 3792.000000 0 181.700000 3792.800000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 3792.000000 0 494.500000 3792.000000 0 494.500000 3791.300000 0 181.700000 3791.300000 0 181.700000 3792.000000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 3791.300000 0 494.500000 3791.300000 0 494.500000 3790.500000 0 181.700000 3790.500000 0 181.700000 3791.300000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 3790.500000 0 494.500000 3790.500000 0 494.500000 3789.800000 0 181.700000 3789.800000 0 181.700000 3790.500000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 3789.800000 0 494.500000 3789.800000 0 494.500000 3789.000000 0 181.700000 3789.000000 0 181.700000 3789.800000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 3789.000000 0 494.500000 3789.000000 0 494.500000 3788.200000 0 181.700000 3788.200000 0 181.700000 3789.000000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 3788.200000 0 494.500000 3788.200000 0 494.500000 3787.500000 0 181.700000 3787.500000 0 181.700000 3788.200000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 3787.500000 0 494.500000 3787.500000 0 494.500000 3786.700000 0 181.700000 3786.700000 0 181.700000 3787.500000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 3786.700000 0 494.500000 3786.700000 0 494.500000 3786.000000 0 181.700000 3786.000000 0 181.700000 3786.700000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 3786.000000 0 494.500000 3786.000000 0 494.500000 3785.200000 0 181.700000 3785.200000 0 181.700000 3786.000000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 3785.200000 0 494.500000 3785.200000 0 494.500000 3784.500000 0 181.700000 3784.500000 0 181.700000 3785.200000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 3784.500000 0 494.500000 3784.500000 0 494.500000 3783.700000 0 181.700000 3783.700000 0 181.700000 3784.500000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 3783.700000 0 494.500000 3783.700000 0 494.500000 3782.900000 0 181.700000 3782.900000 0 181.700000 3783.700000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 3782.900000 0 494.500000 3782.900000 0 494.500000 3782.200000 0 181.700000 3782.200000 0 181.700000 3782.900000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 3782.200000 0 494.500000 3782.200000 0 494.500000 3781.400000 0 181.700000 3781.400000 0 181.700000 3782.200000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 3781.400000 0 494.500000 3781.400000 0 494.500000 3780.700000 0 181.700000 3780.700000 0 181.700000 3781.400000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 3780.700000 0 494.500000 3780.700000 0 494.500000 3779.900000 0 181.700000 3779.900000 0 181.700000 3780.700000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 3779.900000 0 494.500000 3779.900000 0 494.500000 3779.100000 0 181.700000 3779.100000 0 181.700000 3779.900000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 3779.100000 0 494.500000 3779.100000 0 494.500000 3778.400000 0 181.700000 3778.400000 0 181.700000 3779.100000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 3778.400000 0 494.500000 3778.400000 0 494.500000 3777.600000 0 181.700000 3777.600000 0 181.700000 3778.400000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 3777.600000 0 494.500000 3777.600000 0 494.500000 3776.900000 0 181.700000 3776.900000 0 181.700000 3777.600000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 3776.900000 0 494.500000 3776.900000 0 494.500000 3776.100000 0 181.700000 3776.100000 0 181.700000 3776.900000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 3776.100000 0 494.500000 3776.100000 0 494.500000 3775.400000 0 181.700000 3775.400000 0 181.700000 3776.100000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 3775.400000 0 494.500000 3775.400000 0 494.500000 3774.600000 0 181.700000 3774.600000 0 181.700000 3775.400000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 3774.600000 0 494.500000 3774.600000 0 494.500000 3773.800000 0 181.700000 3773.800000 0 181.700000 3774.600000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 3773.800000 0 494.500000 3773.800000 0 494.500000 3773.100000 0 181.700000 3773.100000 0 181.700000 3773.800000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 3773.100000 0 494.500000 3773.100000 0 494.500000 3772.300000 0 181.700000 3772.300000 0 181.700000 3773.100000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 3772.300000 0 494.500000 3772.300000 0 494.500000 3771.600000 0 181.700000 3771.600000 0 181.700000 3772.300000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 3771.600000 0 494.500000 3771.600000 0 494.500000 3770.800000 0 181.700000 3770.800000 0 181.700000 3771.600000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 3770.800000 0 494.500000 3770.800000 0 494.500000 3770.100000 0 181.700000 3770.100000 0 181.700000 3770.800000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 3770.100000 0 494.500000 3770.100000 0 494.500000 3769.300000 0 181.700000 3769.300000 0 181.700000 3770.100000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 3769.300000 0 494.500000 3769.300000 0 494.500000 3768.500000 0 181.700000 3768.500000 0 181.700000 3769.300000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 3768.500000 0 494.500000 3768.500000 0 494.500000 3767.800000 0 181.700000 3767.800000 0 181.700000 3768.500000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 3767.800000 0 494.500000 3767.800000 0 494.500000 3767.000000 0 181.700000 3767.000000 0 181.700000 3767.800000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 3767.000000 0 494.500000 3767.000000 0 494.500000 3766.300000 0 181.700000 3766.300000 0 181.700000 3767.000000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 3766.300000 0 494.500000 3766.300000 0 494.500000 3765.500000 0 181.700000 3765.500000 0 181.700000 3766.300000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 3765.500000 0 494.500000 3765.500000 0 494.500000 3764.700000 0 181.700000 3764.700000 0 181.700000 3765.500000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 3764.700000 0 494.500000 3764.700000 0 494.500000 3764.000000 0 181.700000 3764.000000 0 181.700000 3764.700000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 3764.000000 0 494.500000 3764.000000 0 494.500000 3763.200000 0 181.700000 3763.200000 0 181.700000 3764.000000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 3763.200000 0 494.500000 3763.200000 0 494.500000 3762.500000 0 181.700000 3762.500000 0 181.700000 3763.200000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 3762.500000 0 494.500000 3762.500000 0 494.500000 3761.700000 0 181.700000 3761.700000 0 181.700000 3762.500000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 3761.700000 0 494.500000 3761.700000 0 494.500000 3761.000000 0 181.700000 3761.000000 0 181.700000 3761.700000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 3761.000000 0 494.500000 3761.000000 0 494.500000 3760.200000 0 181.700000 3760.200000 0 181.700000 3761.000000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 3760.200000 0 494.500000 3760.200000 0 494.500000 3759.400000 0 181.700000 3759.400000 0 181.700000 3760.200000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 3759.400000 0 494.500000 3759.400000 0 494.500000 3758.700000 0 181.700000 3758.700000 0 181.700000 3759.400000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 3758.700000 0 494.500000 3758.700000 0 494.500000 3757.900000 0 181.700000 3757.900000 0 181.700000 3758.700000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 3757.900000 0 494.500000 3757.900000 0 494.500000 3757.200000 0 181.700000 3757.200000 0 181.700000 3757.900000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 3757.200000 0 494.500000 3757.200000 0 494.500000 3756.400000 0 181.700000 3756.400000 0 181.700000 3757.200000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 3756.400000 0 494.500000 3756.400000 0 494.500000 3755.700000 0 181.700000 3755.700000 0 181.700000 3756.400000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 3755.700000 0 494.500000 3755.700000 0 494.500000 3754.900000 0 181.700000 3754.900000 0 181.700000 3755.700000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 3754.900000 0 494.500000 3754.900000 0 494.500000 3754.100000 0 181.700000 3754.100000 0 181.700000 3754.900000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 3754.100000 0 494.500000 3754.100000 0 494.500000 3753.400000 0 181.700000 3753.400000 0 181.700000 3754.100000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 3753.400000 0 494.500000 3753.400000 0 494.500000 3752.600000 0 181.700000 3752.600000 0 181.700000 3753.400000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 3752.600000 0 494.500000 3752.600000 0 494.500000 3751.900000 0 181.700000 3751.900000 0 181.700000 3752.600000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 3751.900000 0 494.500000 3751.900000 0 494.500000 3751.100000 0 181.700000 3751.100000 0 181.700000 3751.900000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 3751.100000 0 494.500000 3751.100000 0 494.500000 3750.300000 0 181.700000 3750.300000 0 181.700000 3751.100000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 3750.300000 0 494.500000 3750.300000 0 494.500000 3749.600000 0 181.700000 3749.600000 0 181.700000 3750.300000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 3749.600000 0 494.500000 3749.600000 0 494.500000 3748.800000 0 181.700000 3748.800000 0 181.700000 3749.600000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 3748.800000 0 494.500000 3748.800000 0 494.500000 3748.100000 0 181.700000 3748.100000 0 181.700000 3748.800000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 3748.100000 0 494.500000 3748.100000 0 494.500000 3747.300000 0 181.700000 3747.300000 0 181.700000 3748.100000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 3747.300000 0 494.500000 3747.300000 0 494.500000 3746.500000 0 181.700000 3746.500000 0 181.700000 3747.300000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 3746.500000 0 494.500000 3746.500000 0 494.500000 3745.800000 0 181.700000 3745.800000 0 181.700000 3746.500000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 3745.800000 0 494.500000 3745.800000 0 494.500000 3745.000000 0 181.700000 3745.000000 0 181.700000 3745.800000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 3745.000000 0 494.500000 3745.000000 0 494.500000 3744.300000 0 181.700000 3744.300000 0 181.700000 3745.000000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 3744.300000 0 494.500000 3744.300000 0 494.500000 3743.500000 0 181.700000 3743.500000 0 181.700000 3744.300000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 3743.500000 0 494.500000 3743.500000 0 494.500000 3742.800000 0 181.700000 3742.800000 0 181.700000 3743.500000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 3742.800000 0 494.500000 3742.800000 0 494.500000 3742.000000 0 181.700000 3742.000000 0 181.700000 3742.800000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 3742.000000 0 494.500000 3742.000000 0 494.500000 3741.200000 0 181.700000 3741.200000 0 181.700000 3742.000000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 3741.200000 0 494.500000 3741.200000 0 494.500000 3740.500000 0 181.700000 3740.500000 0 181.700000 3741.200000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 3740.500000 0 494.500000 3740.500000 0 494.500000 3739.700000 0 181.700000 3739.700000 0 181.700000 3740.500000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 3739.700000 0 494.500000 3739.700000 0 494.500000 3739.000000 0 181.700000 3739.000000 0 181.700000 3739.700000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 3739.000000 0 494.500000 3739.000000 0 494.500000 3738.200000 0 181.700000 3738.200000 0 181.700000 3739.000000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 3738.200000 0 494.500000 3738.200000 0 494.500000 3737.400000 0 181.700000 3737.400000 0 181.700000 3738.200000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 3737.400000 0 494.500000 3737.400000 0 494.500000 3736.700000 0 181.700000 3736.700000 0 181.700000 3737.400000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 3736.700000 0 494.500000 3736.700000 0 494.500000 3735.900000 0 181.700000 3735.900000 0 181.700000 3736.700000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 3735.900000 0 494.500000 3735.900000 0 494.500000 3735.200000 0 181.700000 3735.200000 0 181.700000 3735.900000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 3735.200000 0 494.500000 3735.200000 0 494.500000 3734.400000 0 181.700000 3734.400000 0 181.700000 3735.200000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 3734.400000 0 494.500000 3734.400000 0 494.500000 3733.600000 0 181.700000 3733.600000 0 181.700000 3734.400000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 3733.600000 0 494.500000 3733.600000 0 494.500000 3732.900000 0 181.700000 3732.900000 0 181.700000 3733.600000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 3732.900000 0 494.500000 3732.900000 0 494.500000 3732.100000 0 181.700000 3732.100000 0 181.700000 3732.900000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 3732.100000 0 494.500000 3732.100000 0 494.500000 3731.400000 0 181.700000 3731.400000 0 181.700000 3732.100000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 3731.400000 0 494.500000 3731.400000 0 494.500000 3730.600000 0 181.700000 3730.600000 0 181.700000 3731.400000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 3730.600000 0 494.500000 3730.600000 0 494.500000 3729.900000 0 181.700000 3729.900000 0 181.700000 3730.600000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 3729.900000 0 494.500000 3729.900000 0 494.500000 3729.100000 0 181.700000 3729.100000 0 181.700000 3729.900000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 3729.100000 0 494.500000 3729.100000 0 494.500000 3728.300000 0 181.700000 3728.300000 0 181.700000 3729.100000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 3728.300000 0 494.500000 3728.300000 0 494.500000 3727.600000 0 181.700000 3727.600000 0 181.700000 3728.300000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 3727.600000 0 494.500000 3727.600000 0 494.500000 3726.800000 0 181.700000 3726.800000 0 181.700000 3727.600000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 3726.800000 0 494.500000 3726.800000 0 494.500000 3726.100000 0 181.700000 3726.100000 0 181.700000 3726.800000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 3726.100000 0 494.500000 3726.100000 0 494.500000 3725.300000 0 181.700000 3725.300000 0 181.700000 3726.100000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 3725.300000 0 494.500000 3725.300000 0 494.500000 3724.500000 0 181.700000 3724.500000 0 181.700000 3725.300000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 3724.500000 0 494.500000 3724.500000 0 494.500000 3723.800000 0 181.700000 3723.800000 0 181.700000 3724.500000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 3723.800000 0 494.500000 3723.800000 0 494.500000 3723.000000 0 181.700000 3723.000000 0 181.700000 3723.800000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 3723.000000 0 494.500000 3723.000000 0 494.500000 3722.300000 0 181.700000 3722.300000 0 181.700000 3723.000000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 3722.300000 0 494.500000 3722.300000 0 494.500000 3721.500000 0 181.700000 3721.500000 0 181.700000 3722.300000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 3721.500000 0 494.500000 3721.500000 0 494.500000 3720.700000 0 181.700000 3720.700000 0 181.700000 3721.500000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 3720.700000 0 494.500000 3720.700000 0 494.500000 3720.000000 0 181.700000 3720.000000 0 181.700000 3720.700000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 3720.000000 0 494.500000 3720.000000 0 494.500000 3719.200000 0 181.700000 3719.200000 0 181.700000 3720.000000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 3719.200000 0 494.500000 3719.200000 0 494.500000 3718.500000 0 181.700000 3718.500000 0 181.700000 3719.200000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 3718.500000 0 494.500000 3718.500000 0 494.500000 3717.700000 0 181.700000 3717.700000 0 181.700000 3718.500000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 3717.700000 0 494.500000 3717.700000 0 494.500000 3717.000000 0 181.700000 3717.000000 0 181.700000 3717.700000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 3717.000000 0 494.500000 3717.000000 0 494.500000 3716.200000 0 181.700000 3716.200000 0 181.700000 3717.000000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 3716.200000 0 494.500000 3716.200000 0 494.500000 3715.400000 0 181.700000 3715.400000 0 181.700000 3716.200000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 3715.400000 0 494.500000 3715.400000 0 494.500000 3714.700000 0 181.700000 3714.700000 0 181.700000 3715.400000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 3714.700000 0 494.500000 3714.700000 0 494.500000 3713.900000 0 181.700000 3713.900000 0 181.700000 3714.700000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 3713.900000 0 494.500000 3713.900000 0 494.500000 3713.200000 0 181.700000 3713.200000 0 181.700000 3713.900000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 3713.200000 0 494.500000 3713.200000 0 494.500000 3712.400000 0 181.700000 3712.400000 0 181.700000 3713.200000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 3712.400000 0 494.500000 3712.400000 0 494.500000 3711.600000 0 181.700000 3711.600000 0 181.700000 3712.400000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 3711.600000 0 494.500000 3711.600000 0 494.500000 3710.900000 0 181.700000 3710.900000 0 181.700000 3711.600000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 3710.900000 0 494.500000 3710.900000 0 494.500000 3710.100000 0 181.700000 3710.100000 0 181.700000 3710.900000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 3710.100000 0 494.500000 3710.100000 0 494.500000 3709.400000 0 181.700000 3709.400000 0 181.700000 3710.100000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 3709.400000 0 494.500000 3709.400000 0 494.500000 3708.600000 0 181.700000 3708.600000 0 181.700000 3709.400000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 3708.600000 0 494.500000 3708.600000 0 494.500000 3707.800000 0 181.700000 3707.800000 0 181.700000 3708.600000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 3707.800000 0 494.500000 3707.800000 0 494.500000 3707.100000 0 181.700000 3707.100000 0 181.700000 3707.800000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 3707.100000 0 494.500000 3707.100000 0 494.500000 3706.300000 0 181.700000 3706.300000 0 181.700000 3707.100000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 3706.300000 0 494.500000 3706.300000 0 494.500000 3705.600000 0 181.700000 3705.600000 0 181.700000 3706.300000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 3705.600000 0 494.500000 3705.600000 0 494.500000 3704.800000 0 181.700000 3704.800000 0 181.700000 3705.600000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 3704.800000 0 494.500000 3704.800000 0 494.500000 3704.100000 0 181.700000 3704.100000 0 181.700000 3704.800000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 3704.100000 0 494.500000 3704.100000 0 494.500000 3703.300000 0 181.700000 3703.300000 0 181.700000 3704.100000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 3703.300000 0 494.500000 3703.300000 0 494.500000 3702.500000 0 181.700000 3702.500000 0 181.700000 3703.300000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 3702.500000 0 494.500000 3702.500000 0 494.500000 3701.800000 0 181.700000 3701.800000 0 181.700000 3702.500000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 3701.800000 0 494.500000 3701.800000 0 494.500000 3701.000000 0 181.700000 3701.000000 0 181.700000 3701.800000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 3701.100000 0 181.800000 3701.100000 0 181.800000 3894.400000 0 494.400000 3894.400000 0 494.400000 3701.100000 0 338.100000 3701.100000 0
+strokePath subpath 1 338.100000 3701.100000 0 181.800000 3701.100000 0 181.800000 3894.400000 0 494.400000 3894.400000 0 494.400000 3701.100000 0 338.100000 3701.100000 0
+saveState
+updateCtm 11410.000000 0.000000 0.000000 -8760.000000 20530.000000 -298510.000000
+drawSoftMaskedImage 1142 877 1142 877 JPEG 70955 PPM 3004618
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 3740.124000 215.488000 3732.124000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 3740.124000 220.592000 3732.124000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 3740.124000 225.696000 3732.124000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 3740.124000 230.800000 3732.124000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 3732.524000 241.388000 3724.524000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 3732.524000 246.492000 3724.524000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 3732.524000 251.596000 3724.524000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 3732.524000 256.700000 3724.524000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 3724.824000 267.188000 3716.824000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 3724.824000 272.292000 3716.824000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 3724.824000 277.396000 3716.824000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 3724.824000 282.500000 3716.824000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 3717.224000 293.088000 3709.224000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 3717.224000 298.192000 3709.224000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 3717.224000 303.296000 3709.224000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 3717.224000 308.400000 3709.224000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 3755.124000 202.588000 3747.124000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 3774.424000 201.688000 3766.424000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 3793.724000 195.788000 3785.724000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 3793.724000 200.892000 3785.724000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 3813.124000 194.888000 3805.124000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 3813.124000 199.992000 3805.124000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 3832.424000 193.988000 3824.424000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 3832.424000 199.092000 3824.424000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 3851.724000 193.088000 3843.724000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 3851.724000 198.192000 3843.724000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 3723.824000 330.188000 3715.824000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 3723.824000 332.716000 3715.824000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 3723.824000 337.596000 3715.824000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 3723.824000 341.396000 3715.824000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 3723.824000 346.036000 3715.824000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 3723.824000 350.900000 3715.824000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 3723.824000 355.972000 3715.824000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 3723.824000 359.196000 3715.824000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 3723.824000 362.196000 3715.824000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 3723.824000 367.404000 3715.824000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 3723.824000 371.876000 3715.824000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 3723.824000 375.052000 3715.824000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 3743.324000 361.172000 3735.324000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 3743.324000 364.340000 3735.324000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 3743.324000 367.396000 3735.324000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 3743.324000 372.604000 3735.324000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 3743.324000 379.348000 3735.324000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 3743.324000 384.484000 3735.324000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 3743.324000 389.436000 3735.324000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 3743.324000 392.108000 3735.324000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 3743.324000 395.708000 3735.324000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 3743.324000 397.540000 3735.324000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 3743.324000 402.444000 3735.324000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 3743.324000 406.788000 3735.324000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 3762.924000 392.972000 3754.924000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 3762.924000 398.076000 3754.924000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 3762.924000 403.180000 3754.924000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 3762.924000 405.428000 3754.924000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 3762.924000 410.332000 3754.924000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 3762.924000 414.476000 3754.924000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 3890.492000 305.808000 3876.492000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 3890.492000 314.138000 3876.492000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 3890.492000 320.788000 3876.492000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 3890.492000 328.698000 3876.492000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 3890.492000 336.972000 3876.492000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 3890.492000 344.182000 3876.492000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 3890.492000 349.810000 3876.492000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 3890.492000 354.234000 3876.492000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 3890.492000 362.718000 3876.492000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 3890.492000 367.870000 3876.492000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 3890.492000 372.322000 3876.492000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 3890.492000 382.080000 3876.492000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 3890.492000 388.772000 3876.492000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 3890.492000 397.802000 3876.492000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 3890.492000 402.254000 3876.492000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 3890.492000 407.896000 3876.492000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 3767.600000 0 424.300000 3767.600000 0 424.300000 3828.300000 0 493.600000 3828.300000 0 493.600000 3767.600000 0 458.900000 3767.600000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 3818.700000 0 428.900000 3818.700000 0 428.900000 3824.600000 0 434.800000 3824.600000 0 434.800000 3818.700000 0 431.900000 3818.700000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 3807.600000 0 428.900000 3807.600000 0 428.900000 3813.600000 0 434.800000 3813.600000 0 434.800000 3807.600000 0 431.900000 3807.600000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 3796.500000 0 428.900000 3796.500000 0 428.900000 3802.500000 0 434.800000 3802.500000 0 434.800000 3796.500000 0 431.900000 3796.500000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 3785.400000 0 428.900000 3785.400000 0 428.900000 3791.400000 0 434.800000 3791.400000 0 434.800000 3785.400000 0 431.900000 3785.400000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 3774.300000 0 428.900000 3774.300000 0 428.900000 3780.300000 0 434.800000 3780.300000 0 434.800000 3774.300000 0 431.900000 3774.300000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 3825.824000 443.288000 3817.824000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 3825.824000 445.816000 3817.824000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 3825.824000 450.600000 3817.824000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 3825.824000 454.496000 3817.824000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 3825.824000 459.136000 3817.824000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 3825.824000 464.000000 3817.824000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 3825.824000 468.976000 3817.824000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 3825.824000 472.304000 3817.824000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 3825.824000 475.208000 3817.824000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 3825.824000 480.520000 3817.824000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 3825.824000 484.992000 3817.824000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 3825.824000 488.168000 3817.824000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 3814.724000 443.352000 3806.724000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 3814.724000 447.920000 3806.724000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 3814.724000 452.976000 3806.724000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 3814.724000 457.400000 3806.724000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 3814.724000 462.472000 3806.724000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 3814.724000 465.800000 3806.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 3814.724000 468.904000 3806.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 3814.724000 473.816000 3806.724000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 3814.724000 478.888000 3806.724000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 3814.724000 482.064000 3806.724000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 3803.624000 442.872000 3795.624000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 3803.624000 446.040000 3795.624000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 3803.624000 448.992000 3795.624000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 3803.624000 454.304000 3795.624000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 3803.624000 461.048000 3795.624000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 3803.624000 466.184000 3795.624000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 3803.624000 471.136000 3795.624000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 3803.624000 473.808000 3795.624000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 3803.624000 477.408000 3795.624000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 3803.624000 479.240000 3795.624000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 3803.624000 484.144000 3795.624000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 3803.624000 488.488000 3795.624000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 3792.524000 443.384000 3784.524000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 3792.524000 448.464000 3784.524000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 3792.524000 453.424000 3784.524000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 3792.524000 456.696000 3784.524000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 3792.524000 459.800000 3784.524000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 3792.524000 462.032000 3784.524000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 3792.524000 466.936000 3784.524000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 3792.524000 471.080000 3784.524000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 3781.424000 443.272000 3773.424000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 3781.424000 448.376000 3773.424000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 3781.424000 453.480000 3773.424000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 3781.424000 455.728000 3773.424000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 3781.424000 460.632000 3773.424000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 3781.424000 464.776000 3773.424000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 1136.500000 0 114.800000 1136.500000 0 114.800000 1179.300000 0 72.000000 1179.300000 0 72.000000 1136.500000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 -34460.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 76.600000 701.300000 0 535.500000 701.300000 0 535.500000 720.000000 0 76.600000 720.000000 0 76.600000 701.300000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 76.600000 644.900000 0 291.900000 644.900000 0 291.900000 659.000000 0 76.600000 659.000000 0 76.600000 644.900000 0
+eoFillPath subpath 1 76.600000 575.200000 0 291.900000 575.200000 0 291.900000 589.300000 0 76.600000 589.300000 0 76.600000 575.200000 0
+eoFillPath subpath 1 76.600000 547.200000 0 291.900000 547.200000 0 291.900000 561.300000 0 76.600000 561.300000 0 76.600000 547.200000 0
+eoFillPath subpath 1 76.600000 505.300000 0 291.900000 505.300000 0 291.900000 519.400000 0 76.600000 519.400000 0 76.600000 505.300000 0
+eoFillPath subpath 1 76.600000 449.500000 0 291.900000 449.500000 0 291.900000 463.600000 0 76.600000 463.600000 0 76.600000 449.500000 0
+eoFillPath subpath 1 76.600000 393.700000 0 291.900000 393.700000 0 291.900000 407.800000 0 76.600000 407.800000 0 76.600000 393.700000 0
+eoFillPath subpath 1 76.600000 310.100000 0 291.900000 310.100000 0 291.900000 324.200000 0 76.600000 324.200000 0 76.600000 310.100000 0
+eoFillPath subpath 1 76.600000 143.100000 0 291.900000 143.100000 0 291.900000 157.200000 0 76.600000 157.200000 0 76.600000 143.100000 0
+eoFillPath subpath 1 320.200000 658.800000 0 535.500000 658.800000 0 535.500000 672.900000 0 320.200000 672.900000 0 320.200000 658.800000 0
+eoFillPath subpath 1 320.200000 547.400000 0 535.500000 547.400000 0 535.500000 561.500000 0 320.200000 561.500000 0 320.200000 547.400000 0
+eoFillPath subpath 1 320.200000 213.600000 0 535.500000 213.600000 0 535.500000 227.700000 0 320.200000 227.700000 0 320.200000 213.600000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 76.700000 719.948000 81.404000 703.948000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 81.404000 719.948000 91.532000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 91.500000 719.948000 101.644000 703.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 101.708000 719.948000 111.548000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.308000 719.948000 120.764000 703.948000 1.000000 0.000000 0.000000 1.000000 x
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 672.936000 81.440000 660.936000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 81.404000 672.936000 87.140000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.104000 672.936000 94.328000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.304000 672.936000 102.032000 660.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 102.008000 672.936000 105.836000 660.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 105.812000 672.936000 113.540000 660.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 113.516000 672.936000 121.196000 660.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 121.220000 672.936000 125.024000 660.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.024000 672.936000 132.704000 660.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 132.728000 672.936000 139.952000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 139.928000 672.936000 147.080000 660.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.128000 672.936000 152.864000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 152.828000 672.936000 160.508000 660.936000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 160.600000 672.936000 164.404000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.500000 672.936000 168.304000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.400000 672.936000 172.204000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.300000 672.936000 176.104000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.200000 672.936000 180.004000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.100000 672.936000 183.904000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.000000 672.936000 187.804000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.900000 672.936000 191.704000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.800000 672.936000 195.604000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.700000 672.936000 199.504000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.600000 672.936000 203.404000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.500000 672.936000 207.304000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.400000 672.936000 211.204000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.300000 672.936000 215.104000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.200000 672.936000 219.004000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.100000 672.936000 222.904000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.000000 672.936000 226.804000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.900000 672.936000 230.704000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.800000 672.936000 234.604000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.700000 672.936000 238.504000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.600000 672.936000 242.404000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.500000 672.936000 246.304000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.400000 672.936000 250.204000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.300000 672.936000 254.104000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.200000 672.936000 258.004000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.100000 672.936000 261.904000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.000000 672.936000 265.804000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.900000 672.936000 269.704000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.800000 672.936000 273.604000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.700000 672.936000 277.504000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.600000 672.936000 281.404000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.500000 672.936000 285.304000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 672.936000 292.032000 660.936000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 658.956000 82.376000 646.956000 1.000000 0.000000 0.000000 1.000000 J
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 644.936000 81.500000 632.936000 1.000000 0.000000 0.000000 1.000000 J
+drawChar 81.500000 644.936000 88.652000 632.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 88.700000 644.936000 100.076000 632.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 100.100000 644.936000 106.256000 632.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 106.100000 644.936000 109.904000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 110.000000 644.936000 113.804000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 113.900000 644.936000 117.704000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 117.800000 644.936000 121.604000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 121.700000 644.936000 125.504000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 125.600000 644.936000 129.404000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.500000 644.936000 133.304000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.400000 644.936000 137.204000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.300000 644.936000 141.104000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.200000 644.936000 145.004000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.100000 644.936000 148.904000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.000000 644.936000 152.804000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.900000 644.936000 156.704000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.800000 644.936000 160.604000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.700000 644.936000 164.504000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.600000 644.936000 168.404000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.500000 644.936000 172.304000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.400000 644.936000 176.204000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.300000 644.936000 180.104000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.200000 644.936000 184.004000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.100000 644.936000 187.904000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.000000 644.936000 191.804000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.900000 644.936000 195.704000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.800000 644.936000 199.604000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.700000 644.936000 203.504000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.600000 644.936000 207.404000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.500000 644.936000 211.304000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.400000 644.936000 215.204000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.300000 644.936000 219.104000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.200000 644.936000 223.004000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.100000 644.936000 226.904000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.000000 644.936000 230.804000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.900000 644.936000 234.704000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.800000 644.936000 238.604000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.700000 644.936000 242.504000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.600000 644.936000 246.404000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.500000 644.936000 250.304000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.400000 644.936000 254.204000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.300000 644.936000 258.104000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.200000 644.936000 262.004000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.100000 644.936000 265.904000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.000000 644.936000 269.804000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.900000 644.936000 273.704000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.800000 644.936000 277.604000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.700000 644.936000 281.504000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.600000 644.936000 285.404000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 644.936000 292.032000 632.936000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 631.036000 81.500000 619.036000 1.000000 0.000000 0.000000 1.000000 J
+drawChar 81.500000 631.036000 88.592000 619.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 88.604000 631.036000 92.432000 619.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.408000 631.036000 96.236000 619.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 96.212000 631.036000 100.040000 619.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 100.016000 631.036000 107.108000 619.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.120000 631.036000 113.276000 619.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 113.300000 631.036000 117.104000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 117.104000 631.036000 120.908000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 120.908000 631.036000 124.712000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 124.712000 631.036000 128.516000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 128.516000 631.036000 132.320000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.320000 631.036000 136.124000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 136.124000 631.036000 139.928000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.928000 631.036000 143.732000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 143.732000 631.036000 147.536000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 147.536000 631.036000 151.340000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 151.340000 631.036000 155.144000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 155.144000 631.036000 158.948000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.948000 631.036000 162.752000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.752000 631.036000 166.556000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.556000 631.036000 170.360000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 170.360000 631.036000 174.164000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 174.164000 631.036000 177.968000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.968000 631.036000 181.772000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.772000 631.036000 185.576000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.576000 631.036000 189.380000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.380000 631.036000 193.184000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 193.184000 631.036000 196.988000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.988000 631.036000 200.792000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.792000 631.036000 204.596000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.596000 631.036000 208.400000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.400000 631.036000 212.204000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 212.204000 631.036000 216.008000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 216.008000 631.036000 219.812000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.812000 631.036000 223.616000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.616000 631.036000 227.420000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.420000 631.036000 231.224000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.224000 631.036000 235.028000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 235.028000 631.036000 238.832000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.832000 631.036000 242.636000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.636000 631.036000 246.440000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.440000 631.036000 250.244000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.244000 631.036000 254.048000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.048000 631.036000 257.852000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.852000 631.036000 261.656000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.656000 631.036000 265.460000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.460000 631.036000 269.264000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.264000 631.036000 273.068000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.068000 631.036000 276.872000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.872000 631.036000 280.676000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.676000 631.036000 284.480000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 631.036000 292.032000 619.036000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 617.136000 81.500000 605.136000 1.000000 0.000000 0.000000 1.000000 J
+drawChar 81.500000 617.136000 88.724000 605.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.700000 617.136000 96.380000 605.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 96.404000 617.136000 104.084000 605.136000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 104.108000 617.136000 107.936000 605.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 107.912000 617.136000 115.640000 605.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.616000 617.136000 123.296000 605.136000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 123.200000 617.136000 127.004000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 127.004000 617.136000 130.808000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 130.808000 617.136000 134.612000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 134.612000 617.136000 138.416000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 138.416000 617.136000 142.220000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 142.220000 617.136000 146.024000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.024000 617.136000 149.828000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.828000 617.136000 153.632000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.632000 617.136000 157.436000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.436000 617.136000 161.240000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.240000 617.136000 165.044000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.044000 617.136000 168.848000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.848000 617.136000 172.652000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.652000 617.136000 176.456000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.456000 617.136000 180.260000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.260000 617.136000 184.064000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.064000 617.136000 187.868000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.868000 617.136000 191.672000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.672000 617.136000 195.476000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.476000 617.136000 199.280000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.280000 617.136000 203.084000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.084000 617.136000 206.888000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.888000 617.136000 210.692000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.692000 617.136000 214.496000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.496000 617.136000 218.300000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.300000 617.136000 222.104000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.104000 617.136000 225.908000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.908000 617.136000 229.712000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.712000 617.136000 233.516000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.516000 617.136000 237.320000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.320000 617.136000 241.124000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.124000 617.136000 244.928000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.928000 617.136000 248.732000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.732000 617.136000 252.536000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.536000 617.136000 256.340000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.340000 617.136000 260.144000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.144000 617.136000 263.948000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.948000 617.136000 267.752000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.752000 617.136000 271.556000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.556000 617.136000 275.360000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 617.136000 284.332000 605.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 617.136000 291.928000 605.136000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 603.236000 81.500000 591.236000 1.000000 0.000000 0.000000 1.000000 J
+drawChar 81.500000 603.236000 89.228000 591.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 89.204000 603.236000 96.464000 591.236000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 96.500000 603.236000 103.592000 591.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 103.604000 603.236000 111.284000 591.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 111.308000 603.236000 118.532000 591.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 118.508000 603.236000 125.264000 591.236000 1.000000 0.000000 0.000000 1.000000 x
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 125.200000 603.236000 129.004000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.100000 603.236000 132.904000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.000000 603.236000 136.804000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 136.900000 603.236000 140.704000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.800000 603.236000 144.604000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.700000 603.236000 148.504000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.600000 603.236000 152.404000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.500000 603.236000 156.304000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.400000 603.236000 160.204000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.300000 603.236000 164.104000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.200000 603.236000 168.004000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.100000 603.236000 171.904000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.000000 603.236000 175.804000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.900000 603.236000 179.704000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.800000 603.236000 183.604000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.700000 603.236000 187.504000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.600000 603.236000 191.404000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.500000 603.236000 195.304000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.400000 603.236000 199.204000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.300000 603.236000 203.104000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.200000 603.236000 207.004000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.100000 603.236000 210.904000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.000000 603.236000 214.804000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.900000 603.236000 218.704000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.800000 603.236000 222.604000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.700000 603.236000 226.504000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.600000 603.236000 230.404000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.500000 603.236000 234.304000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.400000 603.236000 238.204000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.300000 603.236000 242.104000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.200000 603.236000 246.004000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.100000 603.236000 249.904000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.000000 603.236000 253.804000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.900000 603.236000 257.704000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.800000 603.236000 261.604000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.700000 603.236000 265.504000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.600000 603.236000 269.404000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.500000 603.236000 273.304000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.400000 603.236000 277.204000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.300000 603.236000 281.104000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.200000 603.236000 285.004000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 603.236000 292.032000 591.236000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 589.256000 87.128000 577.256000 1.000000 0.000000 0.000000 1.000000 K
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 575.236000 85.664000 563.236000 1.000000 0.000000 0.000000 1.000000 K
+drawChar 85.700000 575.236000 89.528000 563.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 89.504000 575.236000 96.596000 563.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 96.608000 575.236000 103.700000 563.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 103.712000 575.236000 111.440000 563.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 111.416000 575.236000 118.508000 563.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 118.520000 575.236000 125.276000 563.236000 1.000000 0.000000 0.000000 1.000000 x
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 125.200000 575.236000 129.004000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.100000 575.236000 132.904000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.000000 575.236000 136.804000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 136.900000 575.236000 140.704000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.800000 575.236000 144.604000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.700000 575.236000 148.504000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.600000 575.236000 152.404000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.500000 575.236000 156.304000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.400000 575.236000 160.204000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.300000 575.236000 164.104000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.200000 575.236000 168.004000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.100000 575.236000 171.904000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.000000 575.236000 175.804000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.900000 575.236000 179.704000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.800000 575.236000 183.604000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.700000 575.236000 187.504000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.600000 575.236000 191.404000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.500000 575.236000 195.304000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.400000 575.236000 199.204000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.300000 575.236000 203.104000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.200000 575.236000 207.004000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.100000 575.236000 210.904000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.000000 575.236000 214.804000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.900000 575.236000 218.704000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.800000 575.236000 222.604000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.700000 575.236000 226.504000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.600000 575.236000 230.404000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.500000 575.236000 234.304000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.400000 575.236000 238.204000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.300000 575.236000 242.104000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.200000 575.236000 246.004000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.100000 575.236000 249.904000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.000000 575.236000 253.804000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.900000 575.236000 257.704000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.800000 575.236000 261.604000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.700000 575.236000 265.504000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.600000 575.236000 269.404000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.500000 575.236000 273.304000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.400000 575.236000 277.204000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.300000 575.236000 281.104000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.200000 575.236000 285.004000 563.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 575.236000 292.032000 563.236000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 561.256000 85.136000 549.256000 1.000000 0.000000 0.000000 1.000000 L
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 547.236000 84.668000 535.236000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 84.704000 547.236000 91.856000 535.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 91.904000 547.236000 102.164000 535.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 102.200000 547.236000 109.928000 535.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.904000 547.236000 121.280000 535.236000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 121.304000 547.236000 128.528000 535.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 128.504000 547.236000 138.764000 535.236000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 138.800000 547.236000 145.892000 535.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 145.904000 547.236000 151.640000 535.236000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 151.400000 547.236000 155.204000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 155.300000 547.236000 159.104000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 159.200000 547.236000 163.004000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 163.100000 547.236000 166.904000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 167.000000 547.236000 170.804000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 170.900000 547.236000 174.704000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 174.800000 547.236000 178.604000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 178.700000 547.236000 182.504000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 182.600000 547.236000 186.404000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 186.500000 547.236000 190.304000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 190.400000 547.236000 194.204000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 194.300000 547.236000 198.104000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.200000 547.236000 202.004000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.100000 547.236000 205.904000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.000000 547.236000 209.804000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 209.900000 547.236000 213.704000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 213.800000 547.236000 217.604000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 217.700000 547.236000 221.504000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.600000 547.236000 225.404000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.500000 547.236000 229.304000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.400000 547.236000 233.204000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.300000 547.236000 237.104000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.200000 547.236000 241.004000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.100000 547.236000 244.904000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.000000 547.236000 248.804000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.900000 547.236000 252.704000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.800000 547.236000 256.604000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.700000 547.236000 260.504000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.600000 547.236000 264.404000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.500000 547.236000 268.304000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.400000 547.236000 272.204000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.300000 547.236000 276.104000 535.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 547.236000 284.332000 535.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 547.236000 291.928000 535.236000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 533.336000 84.668000 521.336000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 84.704000 533.336000 92.432000 521.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 92.408000 533.336000 100.088000 521.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 100.112000 533.336000 107.792000 521.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.816000 533.336000 114.968000 521.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 115.016000 533.336000 122.696000 521.336000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 122.720000 533.336000 129.812000 521.336000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 129.600000 533.336000 133.404000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.500000 533.336000 137.304000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.400000 533.336000 141.204000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.300000 533.336000 145.104000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.200000 533.336000 149.004000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.100000 533.336000 152.904000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.000000 533.336000 156.804000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.900000 533.336000 160.704000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.800000 533.336000 164.604000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.700000 533.336000 168.504000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.600000 533.336000 172.404000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.500000 533.336000 176.304000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.400000 533.336000 180.204000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.300000 533.336000 184.104000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.200000 533.336000 188.004000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.100000 533.336000 191.904000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.000000 533.336000 195.804000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.900000 533.336000 199.704000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.800000 533.336000 203.604000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.700000 533.336000 207.504000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.600000 533.336000 211.404000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.500000 533.336000 215.304000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.400000 533.336000 219.204000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.300000 533.336000 223.104000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.200000 533.336000 227.004000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.100000 533.336000 230.904000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.000000 533.336000 234.804000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.900000 533.336000 238.704000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.800000 533.336000 242.604000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.700000 533.336000 246.504000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.600000 533.336000 250.404000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.500000 533.336000 254.304000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.400000 533.336000 258.204000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.300000 533.336000 262.104000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.200000 533.336000 266.004000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.100000 533.336000 269.904000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.000000 533.336000 273.804000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.900000 533.336000 277.704000 521.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 533.336000 284.332000 521.336000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 533.336000 291.928000 521.336000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 519.356000 89.972000 507.356000 1.000000 0.000000 0.000000 1.000000 M
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 505.336000 88.976000 493.336000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 89.000000 505.336000 96.152000 493.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 96.200000 505.336000 101.936000 493.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 101.900000 505.336000 109.580000 493.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 109.604000 505.336000 113.432000 493.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 113.408000 505.336000 120.500000 493.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 120.512000 505.336000 124.316000 493.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 124.316000 505.336000 129.128000 493.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 129.116000 505.336000 132.944000 493.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 132.920000 505.336000 136.748000 493.336000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 136.724000 505.336000 143.816000 493.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 143.828000 505.336000 149.984000 493.336000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 150.000000 505.336000 153.804000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.804000 505.336000 157.608000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.608000 505.336000 161.412000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.412000 505.336000 165.216000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.216000 505.336000 169.020000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.020000 505.336000 172.824000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.824000 505.336000 176.628000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.628000 505.336000 180.432000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.432000 505.336000 184.236000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.236000 505.336000 188.040000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.040000 505.336000 191.844000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.844000 505.336000 195.648000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.648000 505.336000 199.452000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.452000 505.336000 203.256000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.256000 505.336000 207.060000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.060000 505.336000 210.864000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.864000 505.336000 214.668000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.668000 505.336000 218.472000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.472000 505.336000 222.276000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.276000 505.336000 226.080000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.080000 505.336000 229.884000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.884000 505.336000 233.688000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.688000 505.336000 237.492000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.492000 505.336000 241.296000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.296000 505.336000 245.100000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.100000 505.336000 248.904000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.904000 505.336000 252.708000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.708000 505.336000 256.512000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.512000 505.336000 260.316000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.316000 505.336000 264.120000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.120000 505.336000 267.924000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.924000 505.336000 271.728000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.728000 505.336000 275.532000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.532000 505.336000 279.336000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.336000 505.336000 283.140000 493.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 505.336000 292.032000 493.336000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 491.436000 88.976000 479.436000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 89.000000 491.436000 96.152000 479.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 96.200000 491.436000 101.936000 479.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 101.900000 491.436000 106.712000 479.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 106.700000 491.436000 110.528000 479.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 110.504000 491.436000 118.232000 479.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.208000 491.436000 122.036000 479.436000 1.000000 0.000000 0.000000 1.000000 i
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 122.000000 491.436000 125.804000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 125.900000 491.436000 129.704000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.800000 491.436000 133.604000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.700000 491.436000 137.504000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.600000 491.436000 141.404000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.500000 491.436000 145.304000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.400000 491.436000 149.204000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.300000 491.436000 153.104000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.200000 491.436000 157.004000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.100000 491.436000 160.904000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.000000 491.436000 164.804000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.900000 491.436000 168.704000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.800000 491.436000 172.604000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.700000 491.436000 176.504000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.600000 491.436000 180.404000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.500000 491.436000 184.304000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.400000 491.436000 188.204000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.300000 491.436000 192.104000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.200000 491.436000 196.004000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.100000 491.436000 199.904000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.000000 491.436000 203.804000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.900000 491.436000 207.704000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.800000 491.436000 211.604000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.700000 491.436000 215.504000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.600000 491.436000 219.404000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.500000 491.436000 223.304000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.400000 491.436000 227.204000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.300000 491.436000 231.104000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.200000 491.436000 235.004000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 235.100000 491.436000 238.904000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 239.000000 491.436000 242.804000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.900000 491.436000 246.704000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.800000 491.436000 250.604000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.700000 491.436000 254.504000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.600000 491.436000 258.404000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.500000 491.436000 262.304000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.400000 491.436000 266.204000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.300000 491.436000 270.104000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.200000 491.436000 274.004000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.100000 491.436000 277.904000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 278.000000 491.436000 281.804000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.900000 491.436000 285.704000 479.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 491.436000 292.032000 479.436000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 477.536000 88.976000 465.536000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 89.000000 477.536000 96.224000 465.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 96.200000 477.536000 103.928000 465.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 103.904000 477.536000 108.716000 465.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 108.704000 477.536000 115.796000 465.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 115.808000 477.536000 121.544000 465.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.508000 477.536000 128.600000 465.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 128.612000 477.536000 135.380000 465.536000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 135.400000 477.536000 139.204000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.204000 477.536000 143.008000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 143.008000 477.536000 146.812000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.812000 477.536000 150.616000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.616000 477.536000 154.420000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.420000 477.536000 158.224000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.224000 477.536000 162.028000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.028000 477.536000 165.832000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.832000 477.536000 169.636000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.636000 477.536000 173.440000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.440000 477.536000 177.244000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.244000 477.536000 181.048000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.048000 477.536000 184.852000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.852000 477.536000 188.656000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.656000 477.536000 192.460000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.460000 477.536000 196.264000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.264000 477.536000 200.068000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.068000 477.536000 203.872000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.872000 477.536000 207.676000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.676000 477.536000 211.480000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.480000 477.536000 215.284000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.284000 477.536000 219.088000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.088000 477.536000 222.892000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.892000 477.536000 226.696000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.696000 477.536000 230.500000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.500000 477.536000 234.304000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.304000 477.536000 238.108000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.108000 477.536000 241.912000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.912000 477.536000 245.716000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.716000 477.536000 249.520000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.520000 477.536000 253.324000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.324000 477.536000 257.128000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.128000 477.536000 260.932000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.932000 477.536000 264.736000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.736000 477.536000 268.540000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.540000 477.536000 272.344000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.344000 477.536000 276.148000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.148000 477.536000 279.952000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.952000 477.536000 283.756000 465.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 477.536000 292.032000 465.536000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 463.556000 87.668000 451.556000 1.000000 0.000000 0.000000 1.000000 N
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 449.536000 87.200000 437.536000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 87.200000 449.536000 94.352000 437.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 94.400000 449.536000 98.228000 437.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 98.204000 449.536000 102.032000 437.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.008000 449.536000 108.164000 437.536000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 108.100000 449.536000 111.904000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 111.904000 449.536000 115.708000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 115.708000 449.536000 119.512000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 119.512000 449.536000 123.316000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 123.316000 449.536000 127.120000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 127.120000 449.536000 130.924000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 130.924000 449.536000 134.728000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 134.728000 449.536000 138.532000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 138.532000 449.536000 142.336000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 142.336000 449.536000 146.140000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.140000 449.536000 149.944000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.944000 449.536000 153.748000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.748000 449.536000 157.552000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.552000 449.536000 161.356000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.356000 449.536000 165.160000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.160000 449.536000 168.964000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.964000 449.536000 172.768000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.768000 449.536000 176.572000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.572000 449.536000 180.376000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.376000 449.536000 184.180000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.180000 449.536000 187.984000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.984000 449.536000 191.788000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.788000 449.536000 195.592000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.592000 449.536000 199.396000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.396000 449.536000 203.200000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.200000 449.536000 207.004000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.004000 449.536000 210.808000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.808000 449.536000 214.612000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.612000 449.536000 218.416000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.416000 449.536000 222.220000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.220000 449.536000 226.024000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.024000 449.536000 229.828000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.828000 449.536000 233.632000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.632000 449.536000 237.436000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.436000 449.536000 241.240000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.240000 449.536000 245.044000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.044000 449.536000 248.848000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.848000 449.536000 252.652000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.652000 449.536000 256.456000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.456000 449.536000 260.260000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.260000 449.536000 264.064000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.064000 449.536000 267.868000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.868000 449.536000 271.672000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.672000 449.536000 275.476000 437.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 449.536000 284.332000 437.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 449.536000 291.928000 437.536000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 435.636000 87.200000 423.636000 1.000000 0.000000 0.000000 1.000000 N
+drawChar 87.200000 435.636000 94.292000 423.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.304000 435.636000 104.564000 423.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 104.600000 435.636000 108.404000 423.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.404000 435.636000 116.324000 423.636000 1.000000 0.000000 0.000000 1.000000 Y
+drawChar 115.304000 435.636000 122.528000 423.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 122.504000 435.636000 128.240000 423.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 128.204000 435.636000 135.464000 423.636000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 135.400000 435.636000 139.204000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.204000 435.636000 143.008000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 143.008000 435.636000 146.812000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.812000 435.636000 150.616000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.616000 435.636000 154.420000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.420000 435.636000 158.224000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.224000 435.636000 162.028000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.028000 435.636000 165.832000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.832000 435.636000 169.636000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.636000 435.636000 173.440000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.440000 435.636000 177.244000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.244000 435.636000 181.048000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.048000 435.636000 184.852000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.852000 435.636000 188.656000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.656000 435.636000 192.460000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.460000 435.636000 196.264000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.264000 435.636000 200.068000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.068000 435.636000 203.872000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.872000 435.636000 207.676000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.676000 435.636000 211.480000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.480000 435.636000 215.284000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.284000 435.636000 219.088000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.088000 435.636000 222.892000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.892000 435.636000 226.696000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.696000 435.636000 230.500000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.500000 435.636000 234.304000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.304000 435.636000 238.108000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.108000 435.636000 241.912000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.912000 435.636000 245.716000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.716000 435.636000 249.520000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.520000 435.636000 253.324000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.324000 435.636000 257.128000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.128000 435.636000 260.932000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.932000 435.636000 264.736000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.736000 435.636000 268.540000 423.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 269.100000 435.636000 276.732000 423.636000 1.000000 0.000000 0.000000 1.000000 6
+drawChar 276.696000 435.636000 280.500000 423.636000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 280.500000 435.636000 284.304000 423.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 284.304000 435.636000 291.936000 423.636000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 421.736000 99.608000 409.736000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 99.596000 421.736000 105.332000 409.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 105.296000 421.736000 112.520000 409.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 112.496000 421.736000 119.720000 409.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 119.696000 421.736000 126.956000 409.736000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 126.992000 421.736000 130.820000 409.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 130.796000 421.736000 137.564000 409.736000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 137.600000 421.736000 145.328000 409.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 145.304000 421.736000 149.108000 409.736000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.108000 421.736000 157.916000 409.736000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 157.904000 421.736000 163.640000 409.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 163.604000 421.736000 167.432000 409.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 167.408000 421.736000 175.088000 409.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 175.112000 421.736000 182.792000 409.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 182.816000 421.736000 189.908000 409.736000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 190.000000 421.736000 193.804000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 193.900000 421.736000 197.704000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 197.800000 421.736000 201.604000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 201.700000 421.736000 205.504000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 205.600000 421.736000 209.404000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 209.500000 421.736000 213.304000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 213.400000 421.736000 217.204000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 217.300000 421.736000 221.104000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.200000 421.736000 225.004000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.100000 421.736000 228.904000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.000000 421.736000 232.804000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 232.900000 421.736000 236.704000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 236.800000 421.736000 240.604000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.700000 421.736000 244.504000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.600000 421.736000 248.404000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.500000 421.736000 252.304000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.400000 421.736000 256.204000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.300000 421.736000 260.104000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.200000 421.736000 264.004000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.100000 421.736000 267.904000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.000000 421.736000 271.804000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.900000 421.736000 275.704000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.800000 421.736000 279.604000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.700000 421.736000 283.504000 409.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 421.736000 292.032000 409.736000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 407.756000 87.152000 395.756000 1.000000 0.000000 0.000000 1.000000 O
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 393.736000 86.528000 381.736000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 86.504000 393.736000 93.656000 381.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.704000 393.736000 100.964000 381.736000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 100.900000 393.736000 104.704000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 104.704000 393.736000 108.508000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 108.508000 393.736000 112.312000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 112.312000 393.736000 116.116000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 116.116000 393.736000 119.920000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 119.920000 393.736000 123.724000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 123.724000 393.736000 127.528000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 127.528000 393.736000 131.332000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 131.332000 393.736000 135.136000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 135.136000 393.736000 138.940000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 138.940000 393.736000 142.744000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 142.744000 393.736000 146.548000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.548000 393.736000 150.352000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.352000 393.736000 154.156000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.156000 393.736000 157.960000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.960000 393.736000 161.764000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.764000 393.736000 165.568000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.568000 393.736000 169.372000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.372000 393.736000 173.176000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.176000 393.736000 176.980000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.980000 393.736000 180.784000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.784000 393.736000 184.588000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.588000 393.736000 188.392000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.392000 393.736000 192.196000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.196000 393.736000 196.000000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.000000 393.736000 199.804000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.804000 393.736000 203.608000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.608000 393.736000 207.412000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.412000 393.736000 211.216000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.216000 393.736000 215.020000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.020000 393.736000 218.824000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.824000 393.736000 222.628000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.628000 393.736000 226.432000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.432000 393.736000 230.236000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.236000 393.736000 234.040000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.040000 393.736000 237.844000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.844000 393.736000 241.648000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.648000 393.736000 245.452000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.452000 393.736000 249.256000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.256000 393.736000 253.060000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.060000 393.736000 256.864000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.864000 393.736000 260.668000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.668000 393.736000 264.472000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.472000 393.736000 268.276000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.276000 393.736000 272.080000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.080000 393.736000 275.884000 381.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 393.736000 284.332000 381.736000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 393.736000 291.928000 381.736000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 379.836000 86.528000 367.836000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 86.504000 379.836000 90.332000 367.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.308000 379.836000 97.988000 367.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 98.012000 379.836000 102.056000 367.836000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 102.116000 379.836000 106.928000 367.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 106.916000 379.836000 110.744000 367.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 110.720000 379.836000 122.096000 367.836000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 122.120000 379.836000 129.212000 367.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.224000 379.836000 134.960000 367.836000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 134.900000 379.836000 138.704000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 138.704000 379.836000 142.508000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 142.508000 379.836000 146.312000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.312000 379.836000 150.116000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.116000 379.836000 153.920000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.920000 379.836000 157.724000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.724000 379.836000 161.528000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.528000 379.836000 165.332000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.332000 379.836000 169.136000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.136000 379.836000 172.940000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.940000 379.836000 176.744000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.744000 379.836000 180.548000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.548000 379.836000 184.352000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.352000 379.836000 188.156000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.156000 379.836000 191.960000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.960000 379.836000 195.764000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.764000 379.836000 199.568000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.568000 379.836000 203.372000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.372000 379.836000 207.176000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.176000 379.836000 210.980000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.980000 379.836000 214.784000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.784000 379.836000 218.588000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.588000 379.836000 222.392000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.392000 379.836000 226.196000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.196000 379.836000 230.000000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.000000 379.836000 233.804000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.804000 379.836000 237.608000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.608000 379.836000 241.412000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.412000 379.836000 245.216000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.216000 379.836000 249.020000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.020000 379.836000 252.824000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.824000 379.836000 256.628000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.628000 379.836000 260.432000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.432000 379.836000 264.236000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.236000 379.836000 268.040000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.040000 379.836000 271.844000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.844000 379.836000 275.648000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.648000 379.836000 279.452000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.452000 379.836000 283.256000 367.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 379.836000 292.032000 367.836000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 365.936000 86.528000 353.936000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 86.504000 365.936000 94.232000 353.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.208000 365.936000 98.036000 353.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 98.012000 365.936000 105.236000 353.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 105.212000 365.936000 112.940000 353.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 112.916000 365.936000 119.072000 353.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 119.100000 365.936000 122.904000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 122.904000 365.936000 126.708000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 126.708000 365.936000 130.512000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 130.512000 365.936000 134.316000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 134.316000 365.936000 138.120000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 138.120000 365.936000 141.924000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.924000 365.936000 145.728000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.728000 365.936000 149.532000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.532000 365.936000 153.336000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.336000 365.936000 157.140000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.140000 365.936000 160.944000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.944000 365.936000 164.748000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.748000 365.936000 168.552000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.552000 365.936000 172.356000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.356000 365.936000 176.160000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.160000 365.936000 179.964000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.964000 365.936000 183.768000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.768000 365.936000 187.572000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.572000 365.936000 191.376000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.376000 365.936000 195.180000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.180000 365.936000 198.984000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.984000 365.936000 202.788000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.788000 365.936000 206.592000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.592000 365.936000 210.396000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.396000 365.936000 214.200000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.200000 365.936000 218.004000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.004000 365.936000 221.808000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.808000 365.936000 225.612000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.612000 365.936000 229.416000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.416000 365.936000 233.220000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.220000 365.936000 237.024000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.024000 365.936000 240.828000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.828000 365.936000 244.632000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.632000 365.936000 248.436000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.436000 365.936000 252.240000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.240000 365.936000 256.044000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.044000 365.936000 259.848000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.848000 365.936000 263.652000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.652000 365.936000 267.456000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.456000 365.936000 271.260000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.260000 365.936000 275.064000 353.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 365.936000 284.332000 353.936000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 365.936000 291.928000 353.936000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 352.036000 86.528000 340.036000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 86.504000 352.036000 92.240000 340.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 92.204000 352.036000 99.296000 340.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 99.308000 352.036000 106.988000 340.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.012000 352.036000 114.164000 340.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.212000 352.036000 121.940000 340.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 121.916000 352.036000 129.140000 340.036000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 129.100000 352.036000 132.904000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.000000 352.036000 136.804000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 136.900000 352.036000 140.704000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.800000 352.036000 144.604000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.700000 352.036000 148.504000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.600000 352.036000 152.404000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.500000 352.036000 156.304000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.400000 352.036000 160.204000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.300000 352.036000 164.104000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.200000 352.036000 168.004000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.100000 352.036000 171.904000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.000000 352.036000 175.804000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.900000 352.036000 179.704000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.800000 352.036000 183.604000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.700000 352.036000 187.504000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.600000 352.036000 191.404000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.500000 352.036000 195.304000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.400000 352.036000 199.204000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.300000 352.036000 203.104000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.200000 352.036000 207.004000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.100000 352.036000 210.904000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.000000 352.036000 214.804000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.900000 352.036000 218.704000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.800000 352.036000 222.604000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.700000 352.036000 226.504000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.600000 352.036000 230.404000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.500000 352.036000 234.304000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.400000 352.036000 238.204000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.300000 352.036000 242.104000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.200000 352.036000 246.004000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.100000 352.036000 249.904000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.000000 352.036000 253.804000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.900000 352.036000 257.704000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.800000 352.036000 261.604000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.700000 352.036000 265.504000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.600000 352.036000 269.404000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.500000 352.036000 273.304000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.400000 352.036000 277.204000 340.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 352.036000 284.332000 340.036000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 352.036000 291.928000 340.036000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 338.136000 86.528000 326.136000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 86.504000 338.136000 92.240000 326.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 92.204000 338.136000 96.032000 326.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 96.008000 338.136000 103.100000 326.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 103.112000 338.136000 110.840000 326.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.816000 338.136000 115.628000 326.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 115.616000 338.136000 122.768000 326.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 122.816000 338.136000 126.644000 326.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 126.620000 338.136000 130.424000 326.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.424000 338.136000 137.144000 326.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 137.120000 338.136000 144.272000 326.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 144.320000 338.136000 150.056000 326.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 150.020000 338.136000 157.700000 326.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 157.724000 338.136000 164.816000 326.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 164.828000 338.136000 169.640000 326.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 169.628000 338.136000 175.784000 326.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 175.800000 338.136000 179.604000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.700000 338.136000 183.504000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.600000 338.136000 187.404000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.500000 338.136000 191.304000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.400000 338.136000 195.204000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.300000 338.136000 199.104000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.200000 338.136000 203.004000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.100000 338.136000 206.904000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.000000 338.136000 210.804000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.900000 338.136000 214.704000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.800000 338.136000 218.604000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.700000 338.136000 222.504000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.600000 338.136000 226.404000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.500000 338.136000 230.304000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.400000 338.136000 234.204000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.300000 338.136000 238.104000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.200000 338.136000 242.004000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.100000 338.136000 245.904000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.000000 338.136000 249.804000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.900000 338.136000 253.704000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.800000 338.136000 257.604000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.700000 338.136000 261.504000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.600000 338.136000 265.404000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.500000 338.136000 269.304000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.400000 338.136000 273.204000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.300000 338.136000 277.104000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.200000 338.136000 281.004000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.100000 338.136000 284.904000 326.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 338.136000 292.032000 326.136000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 324.156000 85.712000 312.156000 1.000000 0.000000 0.000000 1.000000 P
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 310.136000 84.764000 298.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.200000 310.136000 91.352000 298.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 91.400000 310.136000 99.128000 298.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.104000 310.136000 106.328000 298.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 106.304000 310.136000 112.040000 298.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.004000 310.136000 119.156000 298.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 119.204000 310.136000 130.580000 298.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 130.604000 310.136000 137.756000 298.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.804000 310.136000 141.608000 298.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.608000 310.136000 151.868000 298.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 151.904000 310.136000 155.732000 298.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 155.708000 310.136000 163.436000 298.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 163.412000 310.136000 171.092000 298.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 171.116000 310.136000 178.340000 298.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 178.316000 310.136000 188.576000 298.136000 1.000000 0.000000 0.000000 1.000000 w
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 188.500000 310.136000 192.304000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.304000 310.136000 196.108000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.108000 310.136000 199.912000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.912000 310.136000 203.716000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.716000 310.136000 207.520000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.520000 310.136000 211.324000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.324000 310.136000 215.128000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.128000 310.136000 218.932000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.932000 310.136000 222.736000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.736000 310.136000 226.540000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.540000 310.136000 230.344000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.344000 310.136000 234.148000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.148000 310.136000 237.952000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.952000 310.136000 241.756000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.756000 310.136000 245.560000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.560000 310.136000 249.364000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.364000 310.136000 253.168000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.168000 310.136000 256.972000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.972000 310.136000 260.776000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.776000 310.136000 264.580000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.580000 310.136000 268.384000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.384000 310.136000 272.188000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.188000 310.136000 275.992000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.992000 310.136000 279.796000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.796000 310.136000 283.600000 298.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 310.136000 292.032000 298.136000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 296.236000 84.764000 284.236000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.200000 296.236000 91.352000 284.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 91.400000 296.236000 97.556000 284.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 97.604000 296.236000 102.416000 284.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.404000 296.236000 109.556000 284.236000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 109.400000 296.236000 113.204000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 113.204000 296.236000 117.008000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 117.008000 296.236000 120.812000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 120.812000 296.236000 124.616000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 124.616000 296.236000 128.420000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 128.420000 296.236000 132.224000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.224000 296.236000 136.028000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 136.028000 296.236000 139.832000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.832000 296.236000 143.636000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 143.636000 296.236000 147.440000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 147.440000 296.236000 151.244000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 151.244000 296.236000 155.048000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 155.048000 296.236000 158.852000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.852000 296.236000 162.656000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.656000 296.236000 166.460000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.460000 296.236000 170.264000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 170.264000 296.236000 174.068000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 174.068000 296.236000 177.872000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.872000 296.236000 181.676000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.676000 296.236000 185.480000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.480000 296.236000 189.284000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.284000 296.236000 193.088000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 193.088000 296.236000 196.892000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.892000 296.236000 200.696000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.696000 296.236000 204.500000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.500000 296.236000 208.304000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.304000 296.236000 212.108000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 212.108000 296.236000 215.912000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.912000 296.236000 219.716000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.716000 296.236000 223.520000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.520000 296.236000 227.324000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.324000 296.236000 231.128000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.128000 296.236000 234.932000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.932000 296.236000 238.736000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.736000 296.236000 242.540000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.540000 296.236000 246.344000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.344000 296.236000 250.148000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.148000 296.236000 253.952000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.952000 296.236000 257.756000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.756000 296.236000 261.560000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.560000 296.236000 265.364000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.364000 296.236000 269.168000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.168000 296.236000 272.972000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.972000 296.236000 276.776000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.776000 296.236000 280.580000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.580000 296.236000 284.384000 284.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 296.236000 292.032000 284.236000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 282.336000 84.764000 270.336000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.800000 282.336000 93.980000 270.336000 1.000000 0.000000 0.000000 1.000000 C
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 93.900000 282.336000 97.704000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 97.704000 282.336000 101.508000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 101.508000 282.336000 105.312000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 105.312000 282.336000 109.116000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 109.116000 282.336000 112.920000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 112.920000 282.336000 116.724000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 116.724000 282.336000 120.528000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 120.528000 282.336000 124.332000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 124.332000 282.336000 128.136000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 128.136000 282.336000 131.940000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 131.940000 282.336000 135.744000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 135.744000 282.336000 139.548000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.548000 282.336000 143.352000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 143.352000 282.336000 147.156000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 147.156000 282.336000 150.960000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.960000 282.336000 154.764000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.764000 282.336000 158.568000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.568000 282.336000 162.372000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.372000 282.336000 166.176000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.176000 282.336000 169.980000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.980000 282.336000 173.784000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.784000 282.336000 177.588000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.588000 282.336000 181.392000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.392000 282.336000 185.196000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.196000 282.336000 189.000000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.000000 282.336000 192.804000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.804000 282.336000 196.608000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.608000 282.336000 200.412000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.412000 282.336000 204.216000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.216000 282.336000 208.020000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.020000 282.336000 211.824000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.824000 282.336000 215.628000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.628000 282.336000 219.432000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.432000 282.336000 223.236000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.236000 282.336000 227.040000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.040000 282.336000 230.844000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.844000 282.336000 234.648000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.648000 282.336000 238.452000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.452000 282.336000 242.256000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.256000 282.336000 246.060000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.060000 282.336000 249.864000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.864000 282.336000 253.668000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.668000 282.336000 257.472000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.472000 282.336000 261.276000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.276000 282.336000 265.080000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.080000 282.336000 268.884000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.884000 282.336000 272.688000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.688000 282.336000 276.492000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.492000 282.336000 280.296000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.296000 282.336000 284.100000 270.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 282.336000 292.032000 270.336000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 268.436000 84.764000 256.436000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.200000 268.436000 91.292000 256.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.304000 268.436000 98.456000 256.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 98.504000 268.436000 104.240000 256.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 104.204000 268.436000 110.360000 256.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 110.300000 268.436000 114.104000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 114.200000 268.436000 118.004000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 118.100000 268.436000 121.904000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 122.000000 268.436000 125.804000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 125.900000 268.436000 129.704000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.800000 268.436000 133.604000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.700000 268.436000 137.504000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.600000 268.436000 141.404000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.500000 268.436000 145.304000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.400000 268.436000 149.204000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.300000 268.436000 153.104000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.200000 268.436000 157.004000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.100000 268.436000 160.904000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.000000 268.436000 164.804000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.900000 268.436000 168.704000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.800000 268.436000 172.604000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.700000 268.436000 176.504000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.600000 268.436000 180.404000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.500000 268.436000 184.304000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.400000 268.436000 188.204000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.300000 268.436000 192.104000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.200000 268.436000 196.004000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.100000 268.436000 199.904000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.000000 268.436000 203.804000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.900000 268.436000 207.704000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.800000 268.436000 211.604000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.700000 268.436000 215.504000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.600000 268.436000 219.404000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.500000 268.436000 223.304000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.400000 268.436000 227.204000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.300000 268.436000 231.104000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.200000 268.436000 235.004000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 235.100000 268.436000 238.904000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 239.000000 268.436000 242.804000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.900000 268.436000 246.704000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.800000 268.436000 250.604000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.700000 268.436000 254.504000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.600000 268.436000 258.404000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.500000 268.436000 262.304000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.400000 268.436000 266.204000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.300000 268.436000 270.104000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.200000 268.436000 274.004000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.100000 268.436000 277.904000 256.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 268.436000 284.332000 256.436000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 268.436000 291.928000 256.436000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 254.536000 84.764000 242.536000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.800000 254.536000 88.628000 242.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.604000 254.536000 95.324000 242.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 95.300000 254.536000 102.560000 242.536000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 102.500000 254.536000 106.304000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 106.400000 254.536000 110.204000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 110.300000 254.536000 114.104000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 114.200000 254.536000 118.004000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 118.100000 254.536000 121.904000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 122.000000 254.536000 125.804000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 125.900000 254.536000 129.704000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.800000 254.536000 133.604000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.700000 254.536000 137.504000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.600000 254.536000 141.404000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.500000 254.536000 145.304000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.400000 254.536000 149.204000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.300000 254.536000 153.104000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.200000 254.536000 157.004000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.100000 254.536000 160.904000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.000000 254.536000 164.804000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.900000 254.536000 168.704000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.800000 254.536000 172.604000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.700000 254.536000 176.504000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.600000 254.536000 180.404000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.500000 254.536000 184.304000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.400000 254.536000 188.204000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.300000 254.536000 192.104000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.200000 254.536000 196.004000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.100000 254.536000 199.904000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.000000 254.536000 203.804000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.900000 254.536000 207.704000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.800000 254.536000 211.604000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.700000 254.536000 215.504000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.600000 254.536000 219.404000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.500000 254.536000 223.304000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.400000 254.536000 227.204000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.300000 254.536000 231.104000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.200000 254.536000 235.004000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 235.100000 254.536000 238.904000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 239.000000 254.536000 242.804000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.900000 254.536000 246.704000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.800000 254.536000 250.604000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.700000 254.536000 254.504000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.600000 254.536000 258.404000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.500000 254.536000 262.304000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.400000 254.536000 266.204000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.300000 254.536000 270.104000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.200000 254.536000 274.004000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.100000 254.536000 277.904000 242.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 254.536000 284.332000 242.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 254.536000 291.928000 242.536000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 240.636000 84.764000 228.636000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.800000 240.636000 88.628000 228.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.604000 240.636000 96.332000 228.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 96.308000 240.636000 103.400000 228.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 103.412000 240.636000 109.568000 228.636000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 109.500000 240.636000 113.304000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 113.400000 240.636000 117.204000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 117.300000 240.636000 121.104000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 121.200000 240.636000 125.004000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 125.100000 240.636000 128.904000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.000000 240.636000 132.804000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.900000 240.636000 136.704000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 136.800000 240.636000 140.604000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.700000 240.636000 144.504000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.600000 240.636000 148.404000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.500000 240.636000 152.304000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.400000 240.636000 156.204000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.300000 240.636000 160.104000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.200000 240.636000 164.004000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.100000 240.636000 167.904000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.000000 240.636000 171.804000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 171.900000 240.636000 175.704000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.800000 240.636000 179.604000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.700000 240.636000 183.504000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.600000 240.636000 187.404000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.500000 240.636000 191.304000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.400000 240.636000 195.204000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.300000 240.636000 199.104000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.200000 240.636000 203.004000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.100000 240.636000 206.904000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.000000 240.636000 210.804000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.900000 240.636000 214.704000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.800000 240.636000 218.604000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.700000 240.636000 222.504000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.600000 240.636000 226.404000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.500000 240.636000 230.304000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.400000 240.636000 234.204000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.300000 240.636000 238.104000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.200000 240.636000 242.004000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.100000 240.636000 245.904000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.000000 240.636000 249.804000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.900000 240.636000 253.704000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.800000 240.636000 257.604000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.700000 240.636000 261.504000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.600000 240.636000 265.404000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.500000 240.636000 269.304000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.400000 240.636000 273.204000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.300000 240.636000 277.104000 228.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 240.636000 284.332000 228.636000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 240.636000 291.928000 228.636000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 226.736000 84.764000 214.736000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.800000 226.736000 88.628000 214.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 88.604000 226.736000 92.432000 214.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.408000 226.736000 99.500000 214.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 99.512000 226.736000 105.248000 214.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 105.212000 226.736000 111.368000 214.736000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 111.300000 226.736000 115.104000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 115.104000 226.736000 118.908000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 118.908000 226.736000 122.712000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 122.712000 226.736000 126.516000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 126.516000 226.736000 130.320000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 130.320000 226.736000 134.124000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 134.124000 226.736000 137.928000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.928000 226.736000 141.732000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.732000 226.736000 145.536000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.536000 226.736000 149.340000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.340000 226.736000 153.144000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.144000 226.736000 156.948000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.948000 226.736000 160.752000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.752000 226.736000 164.556000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.556000 226.736000 168.360000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.360000 226.736000 172.164000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.164000 226.736000 175.968000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.968000 226.736000 179.772000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.772000 226.736000 183.576000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.576000 226.736000 187.380000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.380000 226.736000 191.184000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.184000 226.736000 194.988000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 194.988000 226.736000 198.792000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.792000 226.736000 202.596000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.596000 226.736000 206.400000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.400000 226.736000 210.204000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.204000 226.736000 214.008000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.008000 226.736000 217.812000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 217.812000 226.736000 221.616000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.616000 226.736000 225.420000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.420000 226.736000 229.224000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.224000 226.736000 233.028000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.028000 226.736000 236.832000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 236.832000 226.736000 240.636000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.636000 226.736000 244.440000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.440000 226.736000 248.244000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.244000 226.736000 252.048000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.048000 226.736000 255.852000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 255.852000 226.736000 259.656000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.656000 226.736000 263.460000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.460000 226.736000 267.264000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.264000 226.736000 271.068000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.068000 226.736000 274.872000 214.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 226.736000 284.332000 214.736000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 226.736000 291.928000 214.736000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 212.836000 84.764000 200.836000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.296000 212.836000 91.520000 200.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 91.496000 212.836000 98.588000 200.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.600000 212.836000 102.404000 200.836000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.404000 212.836000 106.208000 200.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.208000 212.836000 114.956000 200.836000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 115.004000 212.836000 122.684000 200.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.708000 212.836000 130.388000 200.836000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 130.412000 212.836000 137.564000 200.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.612000 212.836000 143.348000 200.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 143.312000 212.836000 147.116000 200.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 147.116000 212.836000 155.780000 200.836000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 155.816000 212.836000 159.644000 200.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 159.620000 212.836000 163.448000 200.836000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 163.424000 212.836000 170.516000 200.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 170.528000 212.836000 178.256000 200.836000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 178.232000 212.836000 182.036000 200.836000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 182.000000 212.836000 185.804000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.900000 212.836000 189.704000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.800000 212.836000 193.604000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 193.700000 212.836000 197.504000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 197.600000 212.836000 201.404000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 201.500000 212.836000 205.304000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 205.400000 212.836000 209.204000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 209.300000 212.836000 213.104000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 213.200000 212.836000 217.004000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 217.100000 212.836000 220.904000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.000000 212.836000 224.804000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 224.900000 212.836000 228.704000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 228.800000 212.836000 232.604000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 232.700000 212.836000 236.504000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 236.600000 212.836000 240.404000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.500000 212.836000 244.304000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.400000 212.836000 248.204000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.300000 212.836000 252.104000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.200000 212.836000 256.004000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.100000 212.836000 259.904000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.000000 212.836000 263.804000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.900000 212.836000 267.704000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.800000 212.836000 271.604000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.700000 212.836000 275.504000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.600000 212.836000 279.404000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.500000 212.836000 283.304000 200.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 212.836000 292.032000 200.836000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 198.936000 84.764000 186.936000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.296000 198.936000 91.520000 186.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 91.496000 198.936000 98.720000 186.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 98.696000 198.936000 102.524000 186.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 198.936000 106.304000 186.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.304000 198.936000 111.116000 186.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 111.104000 198.936000 118.256000 186.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 118.304000 198.936000 125.984000 186.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 126.008000 198.936000 129.836000 186.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 129.812000 198.936000 136.904000 186.936000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 136.900000 198.936000 140.704000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.800000 198.936000 144.604000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.700000 198.936000 148.504000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.600000 198.936000 152.404000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.500000 198.936000 156.304000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.400000 198.936000 160.204000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.300000 198.936000 164.104000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.200000 198.936000 168.004000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.100000 198.936000 171.904000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.000000 198.936000 175.804000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.900000 198.936000 179.704000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.800000 198.936000 183.604000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.700000 198.936000 187.504000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.600000 198.936000 191.404000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.500000 198.936000 195.304000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.400000 198.936000 199.204000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.300000 198.936000 203.104000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.200000 198.936000 207.004000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.100000 198.936000 210.904000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.000000 198.936000 214.804000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.900000 198.936000 218.704000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.800000 198.936000 222.604000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.700000 198.936000 226.504000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.600000 198.936000 230.404000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.500000 198.936000 234.304000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.400000 198.936000 238.204000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.300000 198.936000 242.104000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.200000 198.936000 246.004000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.100000 198.936000 249.904000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.000000 198.936000 253.804000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.900000 198.936000 257.704000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.800000 198.936000 261.604000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.700000 198.936000 265.504000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.600000 198.936000 269.404000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.500000 198.936000 273.304000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.400000 198.936000 277.204000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.300000 198.936000 281.104000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.200000 198.936000 285.004000 186.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 198.936000 292.032000 186.936000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 185.036000 84.764000 173.036000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.296000 185.036000 91.520000 173.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 91.496000 185.036000 97.232000 173.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.196000 185.036000 103.916000 173.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.892000 185.036000 110.984000 173.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 110.996000 185.036000 114.824000 173.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.800000 185.036000 121.952000 173.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 122.000000 185.036000 125.828000 173.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.804000 185.036000 133.532000 173.036000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 133.500000 185.036000 137.304000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.400000 185.036000 141.204000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.300000 185.036000 145.104000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.200000 185.036000 149.004000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.100000 185.036000 152.904000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.000000 185.036000 156.804000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.900000 185.036000 160.704000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.800000 185.036000 164.604000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.700000 185.036000 168.504000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.600000 185.036000 172.404000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.500000 185.036000 176.304000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.400000 185.036000 180.204000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.300000 185.036000 184.104000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.200000 185.036000 188.004000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.100000 185.036000 191.904000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.000000 185.036000 195.804000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.900000 185.036000 199.704000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.800000 185.036000 203.604000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.700000 185.036000 207.504000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.600000 185.036000 211.404000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.500000 185.036000 215.304000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.400000 185.036000 219.204000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.300000 185.036000 223.104000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.200000 185.036000 227.004000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.100000 185.036000 230.904000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.000000 185.036000 234.804000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.900000 185.036000 238.704000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.800000 185.036000 242.604000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.700000 185.036000 246.504000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.600000 185.036000 250.404000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.500000 185.036000 254.304000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.400000 185.036000 258.204000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.300000 185.036000 262.104000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.200000 185.036000 266.004000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.100000 185.036000 269.904000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.000000 185.036000 273.804000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.900000 185.036000 277.704000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.800000 185.036000 281.604000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.700000 185.036000 285.504000 173.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 185.036000 292.032000 173.036000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 171.136000 84.764000 159.136000 1.000000 0.000000 0.000000 1.000000 P
+drawChar 84.296000 171.136000 91.520000 159.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 91.496000 171.136000 96.308000 159.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 96.296000 171.136000 103.448000 159.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.496000 171.136000 108.308000 159.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 108.296000 171.136000 115.520000 159.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 115.496000 171.136000 122.588000 159.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 122.600000 171.136000 128.756000 159.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 128.700000 171.136000 132.504000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.600000 171.136000 136.404000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 136.500000 171.136000 140.304000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.400000 171.136000 144.204000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.300000 171.136000 148.104000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.200000 171.136000 152.004000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.100000 171.136000 155.904000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.000000 171.136000 159.804000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 159.900000 171.136000 163.704000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 163.800000 171.136000 167.604000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 167.700000 171.136000 171.504000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 171.600000 171.136000 175.404000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.500000 171.136000 179.304000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.400000 171.136000 183.204000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.300000 171.136000 187.104000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.200000 171.136000 191.004000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.100000 171.136000 194.904000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.000000 171.136000 198.804000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.900000 171.136000 202.704000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.800000 171.136000 206.604000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.700000 171.136000 210.504000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.600000 171.136000 214.404000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.500000 171.136000 218.304000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.400000 171.136000 222.204000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.300000 171.136000 226.104000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.200000 171.136000 230.004000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.100000 171.136000 233.904000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.000000 171.136000 237.804000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.900000 171.136000 241.704000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.800000 171.136000 245.604000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.700000 171.136000 249.504000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.600000 171.136000 253.404000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.500000 171.136000 257.304000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.400000 171.136000 261.204000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.300000 171.136000 265.104000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.200000 171.136000 269.004000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.100000 171.136000 272.904000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.000000 171.136000 276.804000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.900000 171.136000 280.704000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.800000 171.136000 284.604000 159.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 171.136000 292.032000 159.136000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 157.156000 87.152000 145.156000 1.000000 0.000000 0.000000 1.000000 Q
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 143.136000 86.528000 131.136000 1.000000 0.000000 0.000000 1.000000 Q
+drawChar 86.504000 143.136000 94.232000 131.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 94.208000 143.136000 101.360000 131.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 101.408000 143.136000 107.144000 131.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 107.108000 143.136000 111.920000 131.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 111.908000 143.136000 118.220000 131.136000 1.000000 0.000000 0.000000 1.000000 z
+drawChar 118.208000 143.136000 122.012000 131.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.012000 143.136000 128.732000 131.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 128.708000 143.136000 132.536000 131.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 132.512000 143.136000 139.736000 131.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 139.712000 143.136000 146.432000 131.136000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 146.408000 143.136000 153.668000 131.136000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.800000 143.136000 157.604000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.604000 143.136000 161.408000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.408000 143.136000 165.212000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.212000 143.136000 169.016000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.016000 143.136000 172.820000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.820000 143.136000 176.624000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.624000 143.136000 180.428000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.428000 143.136000 184.232000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.232000 143.136000 188.036000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.036000 143.136000 191.840000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.840000 143.136000 195.644000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.644000 143.136000 199.448000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.448000 143.136000 203.252000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.252000 143.136000 207.056000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.056000 143.136000 210.860000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.860000 143.136000 214.664000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.664000 143.136000 218.468000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.468000 143.136000 222.272000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.272000 143.136000 226.076000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.076000 143.136000 229.880000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.880000 143.136000 233.684000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.684000 143.136000 237.488000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.488000 143.136000 241.292000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.292000 143.136000 245.096000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.096000 143.136000 248.900000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.900000 143.136000 252.704000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.704000 143.136000 256.508000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.508000 143.136000 260.312000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.312000 143.136000 264.116000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.116000 143.136000 267.920000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.920000 143.136000 271.724000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.724000 143.136000 275.528000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.528000 143.136000 279.332000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.332000 143.136000 283.136000 131.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 143.136000 292.032000 131.136000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 129.236000 86.528000 117.236000 1.000000 0.000000 0.000000 1.000000 Q
+drawChar 86.504000 129.236000 94.232000 117.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 94.208000 129.236000 101.300000 117.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 101.312000 129.236000 108.404000 117.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.416000 129.236000 116.144000 117.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 116.120000 129.236000 120.164000 117.236000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 120.224000 129.236000 126.380000 117.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.428000 129.236000 130.256000 117.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 130.232000 129.236000 136.544000 117.236000 1.000000 0.000000 0.000000 1.000000 z
+drawChar 136.532000 129.236000 143.624000 117.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 143.636000 129.236000 147.440000 117.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 147.440000 129.236000 155.120000 117.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 155.144000 129.236000 162.236000 117.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 162.248000 129.236000 169.928000 117.236000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 169.900000 129.236000 173.704000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.704000 129.236000 177.508000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.508000 129.236000 181.312000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.312000 129.236000 185.116000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.116000 129.236000 188.920000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.920000 129.236000 192.724000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.724000 129.236000 196.528000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.528000 129.236000 200.332000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.332000 129.236000 204.136000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.136000 129.236000 207.940000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.940000 129.236000 211.744000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.744000 129.236000 215.548000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.548000 129.236000 219.352000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.352000 129.236000 223.156000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.156000 129.236000 226.960000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.960000 129.236000 230.764000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.764000 129.236000 234.568000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.568000 129.236000 238.372000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.372000 129.236000 242.176000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.176000 129.236000 245.980000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.980000 129.236000 249.784000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.784000 129.236000 253.588000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.588000 129.236000 257.392000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.392000 129.236000 261.196000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.196000 129.236000 265.000000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.000000 129.236000 268.804000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.804000 129.236000 272.608000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.608000 129.236000 276.412000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.412000 129.236000 280.216000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.216000 129.236000 284.020000 117.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 129.236000 292.032000 117.236000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 320.300000 672.856000 330.272000 660.856000 1.000000 0.000000 0.000000 1.000000 R
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 658.836000 329.324000 646.836000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 329.600000 658.836000 336.752000 646.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 336.800000 658.836000 344.480000 646.836000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 344.504000 658.836000 348.332000 646.836000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 348.308000 658.836000 354.464000 646.836000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 354.512000 658.836000 362.240000 646.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 362.216000 658.836000 369.308000 646.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 369.320000 658.836000 375.476000 646.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 375.300000 658.836000 379.104000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.104000 658.836000 382.908000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.908000 658.836000 386.712000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.712000 658.836000 390.516000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.516000 658.836000 394.320000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.320000 658.836000 398.124000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.124000 658.836000 401.928000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.928000 658.836000 405.732000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.732000 658.836000 409.536000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.536000 658.836000 413.340000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.340000 658.836000 417.144000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.144000 658.836000 420.948000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.948000 658.836000 424.752000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.752000 658.836000 428.556000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.556000 658.836000 432.360000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.360000 658.836000 436.164000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.164000 658.836000 439.968000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.968000 658.836000 443.772000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.772000 658.836000 447.576000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.576000 658.836000 451.380000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.380000 658.836000 455.184000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.184000 658.836000 458.988000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.988000 658.836000 462.792000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.792000 658.836000 466.596000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.596000 658.836000 470.400000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.400000 658.836000 474.204000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.204000 658.836000 478.008000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.008000 658.836000 481.812000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.812000 658.836000 485.616000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.616000 658.836000 489.420000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.420000 658.836000 493.224000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.224000 658.836000 497.028000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.028000 658.836000 500.832000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.832000 658.836000 504.636000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.636000 658.836000 508.440000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.440000 658.836000 512.244000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.244000 658.836000 516.048000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.048000 658.836000 519.852000 646.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 658.836000 527.932000 646.836000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 658.836000 535.528000 646.836000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 644.936000 329.324000 632.936000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 329.600000 644.936000 336.752000 632.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 336.800000 644.936000 344.060000 632.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 344.096000 644.936000 351.188000 632.936000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 351.000000 644.936000 354.804000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.804000 644.936000 358.608000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.608000 644.936000 362.412000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.412000 644.936000 366.216000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.216000 644.936000 370.020000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.020000 644.936000 373.824000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.824000 644.936000 377.628000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.628000 644.936000 381.432000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.432000 644.936000 385.236000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.236000 644.936000 389.040000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.040000 644.936000 392.844000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.844000 644.936000 396.648000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.648000 644.936000 400.452000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.452000 644.936000 404.256000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.256000 644.936000 408.060000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.060000 644.936000 411.864000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.864000 644.936000 415.668000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.668000 644.936000 419.472000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.472000 644.936000 423.276000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.276000 644.936000 427.080000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.080000 644.936000 430.884000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.884000 644.936000 434.688000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.688000 644.936000 438.492000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.492000 644.936000 442.296000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.296000 644.936000 446.100000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.100000 644.936000 449.904000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.904000 644.936000 453.708000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.708000 644.936000 457.512000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.512000 644.936000 461.316000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.316000 644.936000 465.120000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.120000 644.936000 468.924000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.924000 644.936000 472.728000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.728000 644.936000 476.532000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.532000 644.936000 480.336000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.336000 644.936000 484.140000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.140000 644.936000 487.944000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 487.944000 644.936000 491.748000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 491.748000 644.936000 495.552000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.552000 644.936000 499.356000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.356000 644.936000 503.160000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.160000 644.936000 506.964000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.964000 644.936000 510.768000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.768000 644.936000 514.572000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.572000 644.936000 518.376000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 644.936000 527.932000 632.936000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 644.936000 535.528000 632.936000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 631.036000 329.324000 619.036000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 329.300000 631.036000 337.028000 619.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 337.004000 631.036000 344.228000 619.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 344.204000 631.036000 351.884000 619.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 351.908000 631.036000 359.132000 619.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 359.108000 631.036000 366.788000 619.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 366.812000 631.036000 373.904000 619.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 373.916000 631.036000 381.644000 619.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 381.620000 631.036000 389.300000 619.036000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 389.324000 631.036000 395.060000 619.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.024000 631.036000 402.248000 619.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 402.224000 631.036000 409.952000 619.036000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 409.928000 631.036000 416.084000 619.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 416.100000 631.036000 419.904000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.000000 631.036000 423.804000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.900000 631.036000 427.704000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.800000 631.036000 431.604000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.700000 631.036000 435.504000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.600000 631.036000 439.404000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.500000 631.036000 443.304000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.400000 631.036000 447.204000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.300000 631.036000 451.104000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.200000 631.036000 455.004000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.100000 631.036000 458.904000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.000000 631.036000 462.804000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.900000 631.036000 466.704000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.800000 631.036000 470.604000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.700000 631.036000 474.504000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.600000 631.036000 478.404000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.500000 631.036000 482.304000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.400000 631.036000 486.204000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.300000 631.036000 490.104000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.200000 631.036000 494.004000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.100000 631.036000 497.904000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.000000 631.036000 501.804000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.900000 631.036000 505.704000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.800000 631.036000 509.604000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.700000 631.036000 513.504000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.600000 631.036000 517.404000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.500000 631.036000 521.304000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 631.036000 527.932000 619.036000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 631.036000 535.528000 619.036000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 617.136000 329.324000 605.136000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 329.300000 617.136000 337.028000 605.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 337.004000 617.136000 344.732000 605.136000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 344.708000 617.136000 352.388000 605.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 352.412000 617.136000 359.564000 605.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 359.612000 617.136000 365.348000 605.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 365.312000 617.136000 372.992000 605.136000 1.000000 0.000000 0.000000 1.000000 b
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 372.900000 617.136000 376.704000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.800000 617.136000 380.604000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.700000 617.136000 384.504000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.600000 617.136000 388.404000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.500000 617.136000 392.304000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.400000 617.136000 396.204000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.300000 617.136000 400.104000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.200000 617.136000 404.004000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.100000 617.136000 407.904000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.000000 617.136000 411.804000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.900000 617.136000 415.704000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.800000 617.136000 419.604000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.700000 617.136000 423.504000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.600000 617.136000 427.404000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.500000 617.136000 431.304000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.400000 617.136000 435.204000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.300000 617.136000 439.104000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.200000 617.136000 443.004000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.100000 617.136000 446.904000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.000000 617.136000 450.804000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.900000 617.136000 454.704000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.800000 617.136000 458.604000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.700000 617.136000 462.504000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.600000 617.136000 466.404000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.500000 617.136000 470.304000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.400000 617.136000 474.204000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.300000 617.136000 478.104000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.200000 617.136000 482.004000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.100000 617.136000 485.904000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.000000 617.136000 489.804000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.900000 617.136000 493.704000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.800000 617.136000 497.604000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.700000 617.136000 501.504000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.600000 617.136000 505.404000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.500000 617.136000 509.304000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.400000 617.136000 513.204000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.300000 617.136000 517.104000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.200000 617.136000 521.004000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 617.136000 527.932000 605.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 617.136000 535.528000 605.136000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 603.236000 329.324000 591.236000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 329.300000 603.236000 336.524000 591.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 336.500000 603.236000 340.328000 591.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 340.304000 603.236000 344.132000 591.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 344.108000 603.236000 351.200000 591.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 351.212000 603.236000 356.948000 591.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 356.912000 603.236000 360.956000 591.236000 1.000000 0.000000 0.000000 1.000000 -
+drawChar 361.016000 603.236000 368.696000 591.236000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 368.720000 603.236000 372.548000 591.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 372.524000 603.236000 379.676000 591.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 379.724000 603.236000 387.404000 591.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 387.428000 603.236000 391.256000 591.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 391.232000 603.236000 398.960000 591.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 398.936000 603.236000 406.616000 591.236000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 406.600000 603.236000 410.404000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.500000 603.236000 414.304000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.400000 603.236000 418.204000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.300000 603.236000 422.104000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.200000 603.236000 426.004000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.100000 603.236000 429.904000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.000000 603.236000 433.804000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.900000 603.236000 437.704000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.800000 603.236000 441.604000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.700000 603.236000 445.504000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.600000 603.236000 449.404000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.500000 603.236000 453.304000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.400000 603.236000 457.204000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.300000 603.236000 461.104000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.200000 603.236000 465.004000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.100000 603.236000 468.904000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.000000 603.236000 472.804000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.900000 603.236000 476.704000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.800000 603.236000 480.604000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.700000 603.236000 484.504000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.600000 603.236000 488.404000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.500000 603.236000 492.304000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.400000 603.236000 496.204000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.300000 603.236000 500.104000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.200000 603.236000 504.004000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.100000 603.236000 507.904000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.000000 603.236000 511.804000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.900000 603.236000 515.704000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.800000 603.236000 519.604000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 603.236000 527.932000 591.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 603.236000 535.528000 591.236000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 589.336000 329.324000 577.336000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 329.300000 589.336000 336.524000 577.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 336.500000 589.336000 343.724000 577.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 343.700000 589.336000 355.076000 577.336000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 355.100000 589.336000 358.904000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.904000 589.336000 362.708000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.708000 589.336000 366.512000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.512000 589.336000 370.316000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.316000 589.336000 374.120000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.120000 589.336000 377.924000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.924000 589.336000 381.728000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.728000 589.336000 385.532000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.532000 589.336000 389.336000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.336000 589.336000 393.140000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.140000 589.336000 396.944000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.944000 589.336000 400.748000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.748000 589.336000 404.552000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.552000 589.336000 408.356000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.356000 589.336000 412.160000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.160000 589.336000 415.964000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.964000 589.336000 419.768000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.768000 589.336000 423.572000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.572000 589.336000 427.376000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.376000 589.336000 431.180000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.180000 589.336000 434.984000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.984000 589.336000 438.788000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.788000 589.336000 442.592000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.592000 589.336000 446.396000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.396000 589.336000 450.200000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.200000 589.336000 454.004000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.004000 589.336000 457.808000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.808000 589.336000 461.612000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.612000 589.336000 465.416000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.416000 589.336000 469.220000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.220000 589.336000 473.024000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.024000 589.336000 476.828000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.828000 589.336000 480.632000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.632000 589.336000 484.436000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.436000 589.336000 488.240000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.240000 589.336000 492.044000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.044000 589.336000 495.848000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.848000 589.336000 499.652000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.652000 589.336000 503.456000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.456000 589.336000 507.260000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.260000 589.336000 511.064000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.064000 589.336000 514.868000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.868000 589.336000 518.672000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.672000 589.336000 522.476000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.476000 589.336000 526.280000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 589.336000 535.632000 577.336000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 575.436000 329.324000 563.436000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 329.300000 575.436000 336.524000 563.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 336.500000 575.436000 342.656000 563.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 342.704000 575.436000 349.796000 563.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.808000 575.436000 361.184000 563.436000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 361.208000 575.436000 368.360000 563.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 368.408000 575.436000 374.144000 563.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 374.108000 575.436000 380.876000 563.436000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 380.800000 575.436000 384.604000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.700000 575.436000 388.504000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.600000 575.436000 392.404000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.500000 575.436000 396.304000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.400000 575.436000 400.204000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.300000 575.436000 404.104000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.200000 575.436000 408.004000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.100000 575.436000 411.904000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.000000 575.436000 415.804000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.900000 575.436000 419.704000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.800000 575.436000 423.604000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.700000 575.436000 427.504000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.600000 575.436000 431.404000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.500000 575.436000 435.304000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.400000 575.436000 439.204000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.300000 575.436000 443.104000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.200000 575.436000 447.004000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.100000 575.436000 450.904000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.000000 575.436000 454.804000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.900000 575.436000 458.704000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.800000 575.436000 462.604000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.700000 575.436000 466.504000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.600000 575.436000 470.404000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.500000 575.436000 474.304000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.400000 575.436000 478.204000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.300000 575.436000 482.104000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.200000 575.436000 486.004000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.100000 575.436000 489.904000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.000000 575.436000 493.804000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.900000 575.436000 497.704000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.800000 575.436000 501.604000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.700000 575.436000 505.504000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.600000 575.436000 509.404000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.500000 575.436000 513.304000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.400000 575.436000 517.204000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.300000 575.436000 521.104000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 575.436000 527.932000 563.436000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 575.436000 535.528000 563.436000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 320.300000 561.456000 328.964000 549.456000 1.000000 0.000000 0.000000 1.000000 S
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 547.436000 328.520000 535.436000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 547.436000 335.648000 535.436000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 335.696000 547.436000 345.956000 535.436000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 345.992000 547.436000 352.148000 535.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 352.000000 547.436000 355.804000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 355.804000 547.436000 359.608000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 359.608000 547.436000 363.412000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 363.412000 547.436000 367.216000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.216000 547.436000 371.020000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.020000 547.436000 374.824000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.824000 547.436000 378.628000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.628000 547.436000 382.432000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.432000 547.436000 386.236000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.236000 547.436000 390.040000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.040000 547.436000 393.844000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.844000 547.436000 397.648000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.648000 547.436000 401.452000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.452000 547.436000 405.256000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.256000 547.436000 409.060000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.060000 547.436000 412.864000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.864000 547.436000 416.668000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.668000 547.436000 420.472000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.472000 547.436000 424.276000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.276000 547.436000 428.080000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.080000 547.436000 431.884000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.884000 547.436000 435.688000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.688000 547.436000 439.492000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.492000 547.436000 443.296000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.296000 547.436000 447.100000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.100000 547.436000 450.904000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.904000 547.436000 454.708000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.708000 547.436000 458.512000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.512000 547.436000 462.316000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.316000 547.436000 466.120000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.120000 547.436000 469.924000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.924000 547.436000 473.728000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.728000 547.436000 477.532000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.532000 547.436000 481.336000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.336000 547.436000 485.140000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.140000 547.436000 488.944000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.944000 547.436000 492.748000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.748000 547.436000 496.552000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.552000 547.436000 500.356000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.356000 547.436000 504.160000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.160000 547.436000 507.964000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.964000 547.436000 511.768000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.768000 547.436000 515.572000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.572000 547.436000 519.376000 535.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 547.436000 527.932000 535.436000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 547.436000 535.528000 535.436000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 533.536000 328.520000 521.536000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 533.536000 335.216000 521.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 335.192000 533.536000 340.928000 521.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 340.892000 533.536000 347.984000 521.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 347.996000 533.536000 358.256000 521.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 358.292000 533.536000 365.972000 521.536000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 365.996000 533.536000 371.732000 521.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 371.696000 533.536000 375.524000 521.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 375.500000 533.536000 382.268000 521.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 382.304000 533.536000 389.396000 521.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 389.408000 533.536000 395.144000 521.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.108000 533.536000 401.264000 521.536000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 401.300000 533.536000 405.104000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.104000 533.536000 408.908000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.908000 533.536000 412.712000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.712000 533.536000 416.516000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.516000 533.536000 420.320000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.320000 533.536000 424.124000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.124000 533.536000 427.928000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.928000 533.536000 431.732000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.732000 533.536000 435.536000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.536000 533.536000 439.340000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.340000 533.536000 443.144000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.144000 533.536000 446.948000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.948000 533.536000 450.752000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.752000 533.536000 454.556000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.556000 533.536000 458.360000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.360000 533.536000 462.164000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.164000 533.536000 465.968000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.968000 533.536000 469.772000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.772000 533.536000 473.576000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.576000 533.536000 477.380000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.380000 533.536000 481.184000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.184000 533.536000 484.988000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.988000 533.536000 488.792000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.792000 533.536000 492.596000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.596000 533.536000 496.400000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.400000 533.536000 500.204000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.204000 533.536000 504.008000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.008000 533.536000 507.812000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.812000 533.536000 511.616000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.616000 533.536000 515.420000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.420000 533.536000 519.224000 521.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 533.536000 527.932000 521.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 533.536000 535.528000 521.536000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 519.636000 328.520000 507.636000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 519.636000 335.216000 507.636000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 335.192000 519.636000 340.928000 507.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 340.892000 519.636000 347.984000 507.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 347.996000 519.636000 358.256000 507.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 358.292000 519.636000 364.448000 507.636000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 364.400000 519.636000 368.204000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.204000 519.636000 372.008000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 372.008000 519.636000 375.812000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.812000 519.636000 379.616000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.616000 519.636000 383.420000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.420000 519.636000 387.224000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.224000 519.636000 391.028000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 391.028000 519.636000 394.832000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.832000 519.636000 398.636000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.636000 519.636000 402.440000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.440000 519.636000 406.244000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.244000 519.636000 410.048000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.048000 519.636000 413.852000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.852000 519.636000 417.656000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.656000 519.636000 421.460000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.460000 519.636000 425.264000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.264000 519.636000 429.068000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 429.068000 519.636000 432.872000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.872000 519.636000 436.676000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.676000 519.636000 440.480000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.480000 519.636000 444.284000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.284000 519.636000 448.088000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.088000 519.636000 451.892000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.892000 519.636000 455.696000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.696000 519.636000 459.500000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.500000 519.636000 463.304000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.304000 519.636000 467.108000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.108000 519.636000 470.912000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.912000 519.636000 474.716000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.716000 519.636000 478.520000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.520000 519.636000 482.324000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.324000 519.636000 486.128000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.128000 519.636000 489.932000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.932000 519.636000 493.736000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.736000 519.636000 497.540000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.540000 519.636000 501.344000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.344000 519.636000 505.148000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.148000 519.636000 508.952000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.952000 519.636000 512.756000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.756000 519.636000 516.560000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.560000 519.636000 520.364000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 519.636000 527.932000 507.636000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 519.636000 535.528000 507.636000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 505.736000 328.520000 493.736000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 505.736000 335.588000 493.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 335.600000 505.736000 342.692000 493.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 342.704000 505.736000 350.384000 493.736000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 350.408000 505.736000 354.236000 493.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 354.212000 505.736000 358.040000 493.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 358.016000 505.736000 365.744000 493.736000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 365.720000 505.736000 373.400000 493.736000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 373.424000 505.736000 379.580000 493.736000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 379.500000 505.736000 383.304000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.304000 505.736000 387.108000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.108000 505.736000 390.912000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.912000 505.736000 394.716000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.716000 505.736000 398.520000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.520000 505.736000 402.324000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.324000 505.736000 406.128000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.128000 505.736000 409.932000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.932000 505.736000 413.736000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.736000 505.736000 417.540000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.540000 505.736000 421.344000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.344000 505.736000 425.148000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.148000 505.736000 428.952000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.952000 505.736000 432.756000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.756000 505.736000 436.560000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.560000 505.736000 440.364000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.364000 505.736000 444.168000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.168000 505.736000 447.972000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.972000 505.736000 451.776000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.776000 505.736000 455.580000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.580000 505.736000 459.384000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.384000 505.736000 463.188000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.188000 505.736000 466.992000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.992000 505.736000 470.796000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.796000 505.736000 474.600000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.600000 505.736000 478.404000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.404000 505.736000 482.208000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.208000 505.736000 486.012000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.012000 505.736000 489.816000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.816000 505.736000 493.620000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.620000 505.736000 497.424000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.424000 505.736000 501.228000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.228000 505.736000 505.032000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.032000 505.736000 508.836000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.836000 505.736000 512.640000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.640000 505.736000 516.444000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.444000 505.736000 520.248000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 505.736000 527.932000 493.736000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 505.736000 535.528000 493.736000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 491.836000 328.520000 479.836000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 491.836000 336.224000 479.836000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 336.200000 491.836000 343.352000 479.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 343.400000 491.836000 350.660000 479.836000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 350.696000 491.836000 357.788000 479.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.800000 491.836000 363.536000 479.836000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 363.400000 491.836000 367.204000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.204000 491.836000 371.008000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.008000 491.836000 374.812000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.812000 491.836000 378.616000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.616000 491.836000 382.420000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.420000 491.836000 386.224000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.224000 491.836000 390.028000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.028000 491.836000 393.832000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.832000 491.836000 397.636000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.636000 491.836000 401.440000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.440000 491.836000 405.244000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.244000 491.836000 409.048000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.048000 491.836000 412.852000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.852000 491.836000 416.656000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.656000 491.836000 420.460000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.460000 491.836000 424.264000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.264000 491.836000 428.068000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.068000 491.836000 431.872000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.872000 491.836000 435.676000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.676000 491.836000 439.480000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.480000 491.836000 443.284000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.284000 491.836000 447.088000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.088000 491.836000 450.892000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.892000 491.836000 454.696000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.696000 491.836000 458.500000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.500000 491.836000 462.304000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.304000 491.836000 466.108000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.108000 491.836000 469.912000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.912000 491.836000 473.716000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.716000 491.836000 477.520000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.520000 491.836000 481.324000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.324000 491.836000 485.128000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.128000 491.836000 488.932000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.932000 491.836000 492.736000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.736000 491.836000 496.540000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.540000 491.836000 500.344000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.344000 491.836000 504.148000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.148000 491.836000 507.952000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.952000 491.836000 511.756000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.756000 491.836000 515.560000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.560000 491.836000 519.364000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.364000 491.836000 523.168000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.168000 491.836000 526.972000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 491.836000 535.632000 479.836000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 477.936000 328.520000 465.936000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 477.936000 336.224000 465.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 336.200000 477.936000 343.352000 465.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 343.400000 477.936000 350.660000 465.936000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 350.696000 477.936000 357.788000 465.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.800000 477.936000 363.956000 465.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 364.004000 477.936000 371.684000 465.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 371.708000 477.936000 378.800000 465.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 378.812000 477.936000 385.964000 465.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 386.012000 477.936000 391.748000 465.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 391.712000 477.936000 398.804000 465.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 398.816000 477.936000 402.620000 465.936000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 402.620000 477.936000 406.424000 465.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 406.424000 477.936000 418.748000 465.936000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 418.520000 477.936000 422.348000 465.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 422.324000 477.936000 426.152000 465.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 426.128000 477.936000 429.956000 465.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 429.932000 477.936000 433.760000 465.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 433.736000 477.936000 440.888000 465.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 440.936000 477.936000 452.312000 465.936000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 452.200000 477.936000 456.004000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 456.196000 477.936000 460.000000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 460.192000 477.936000 463.996000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 464.188000 477.936000 467.992000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 468.184000 477.936000 471.988000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.180000 477.936000 475.984000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.176000 477.936000 479.980000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.172000 477.936000 483.976000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.168000 477.936000 487.972000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.164000 477.936000 491.968000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.160000 477.936000 495.964000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.156000 477.936000 499.960000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.152000 477.936000 503.956000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.148000 477.936000 507.952000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.144000 477.936000 511.948000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.140000 477.936000 515.944000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.136000 477.936000 519.940000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.132000 477.936000 523.936000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.128000 477.936000 527.932000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 477.936000 535.632000 465.936000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 464.036000 328.520000 452.036000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 464.036000 336.224000 452.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 336.200000 464.036000 343.352000 452.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 343.400000 464.036000 354.776000 452.036000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 354.800000 464.036000 362.480000 452.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 362.504000 464.036000 369.728000 452.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 369.704000 464.036000 376.928000 452.036000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 376.800000 464.036000 380.604000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.700000 464.036000 384.504000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.600000 464.036000 388.404000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.500000 464.036000 392.304000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.400000 464.036000 396.204000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.300000 464.036000 400.104000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.200000 464.036000 404.004000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.100000 464.036000 407.904000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.000000 464.036000 411.804000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.900000 464.036000 415.704000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.800000 464.036000 419.604000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.700000 464.036000 423.504000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.600000 464.036000 427.404000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.500000 464.036000 431.304000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.400000 464.036000 435.204000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.300000 464.036000 439.104000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.200000 464.036000 443.004000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.100000 464.036000 446.904000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.000000 464.036000 450.804000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.900000 464.036000 454.704000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.800000 464.036000 458.604000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.700000 464.036000 462.504000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.600000 464.036000 466.404000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.500000 464.036000 470.304000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.400000 464.036000 474.204000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.300000 464.036000 478.104000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.200000 464.036000 482.004000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.100000 464.036000 485.904000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.000000 464.036000 489.804000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.900000 464.036000 493.704000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.800000 464.036000 497.604000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.700000 464.036000 501.504000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.600000 464.036000 505.404000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.500000 464.036000 509.304000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.400000 464.036000 513.204000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.300000 464.036000 517.104000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.200000 464.036000 521.004000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.100000 464.036000 524.904000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.000000 464.036000 528.804000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 464.036000 535.632000 452.036000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 450.136000 328.520000 438.136000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 450.136000 336.224000 438.136000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 336.200000 450.136000 343.292000 438.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 343.304000 450.136000 350.396000 438.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 350.408000 450.136000 355.220000 438.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 355.208000 450.136000 361.364000 438.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 361.300000 450.136000 365.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.200000 450.136000 369.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 369.100000 450.136000 372.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.000000 450.136000 376.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.900000 450.136000 380.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.800000 450.136000 384.604000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.700000 450.136000 388.504000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.600000 450.136000 392.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.500000 450.136000 396.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.400000 450.136000 400.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.300000 450.136000 404.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.200000 450.136000 408.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.100000 450.136000 411.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.000000 450.136000 415.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.900000 450.136000 419.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.800000 450.136000 423.604000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.700000 450.136000 427.504000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.600000 450.136000 431.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.500000 450.136000 435.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.400000 450.136000 439.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.300000 450.136000 443.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.200000 450.136000 447.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.100000 450.136000 450.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.000000 450.136000 454.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.900000 450.136000 458.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.800000 450.136000 462.604000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.700000 450.136000 466.504000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.600000 450.136000 470.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.500000 450.136000 474.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.400000 450.136000 478.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.300000 450.136000 482.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.200000 450.136000 486.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.100000 450.136000 489.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.000000 450.136000 493.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.900000 450.136000 497.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.800000 450.136000 501.604000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.700000 450.136000 505.504000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.600000 450.136000 509.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.500000 450.136000 513.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.400000 450.136000 517.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.300000 450.136000 521.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.200000 450.136000 525.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.100000 450.136000 528.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 529.000000 450.136000 532.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 532.900000 450.136000 536.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.400000 436.236000 342.716000 424.236000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 342.704000 436.236000 346.532000 424.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 346.508000 436.236000 353.660000 424.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 353.708000 436.236000 361.436000 424.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 361.412000 436.236000 369.140000 424.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 369.116000 436.236000 376.208000 424.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 376.220000 436.236000 380.048000 424.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 380.024000 436.236000 383.828000 424.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 383.828000 436.236000 392.048000 424.236000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 392.024000 436.236000 399.752000 424.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 399.728000 436.236000 406.820000 424.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 406.832000 436.236000 413.924000 424.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 413.936000 436.236000 418.748000 424.236000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 418.736000 436.236000 424.892000 424.236000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 425.000000 436.236000 428.804000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.804000 436.236000 432.608000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.608000 436.236000 436.412000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.412000 436.236000 440.216000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.216000 436.236000 444.020000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.020000 436.236000 447.824000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.824000 436.236000 451.628000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.628000 436.236000 455.432000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.432000 436.236000 459.236000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.236000 436.236000 463.040000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.040000 436.236000 466.844000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.844000 436.236000 470.648000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.648000 436.236000 474.452000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.452000 436.236000 478.256000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.256000 436.236000 482.060000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.060000 436.236000 485.864000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.864000 436.236000 489.668000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.668000 436.236000 493.472000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.472000 436.236000 497.276000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.276000 436.236000 501.080000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.080000 436.236000 504.884000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.884000 436.236000 508.688000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.688000 436.236000 512.492000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.492000 436.236000 516.296000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.296000 436.236000 520.100000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.100000 436.236000 523.904000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.904000 436.236000 527.708000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 436.236000 535.632000 424.236000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 334.400000 422.336000 342.620000 410.336000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 342.596000 422.336000 349.748000 410.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 349.796000 422.336000 354.608000 410.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 354.596000 422.336000 358.424000 410.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 358.400000 422.336000 366.128000 410.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 366.104000 422.336000 369.908000 410.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 369.908000 422.336000 378.128000 410.336000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 378.104000 422.336000 385.832000 410.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 385.808000 422.336000 392.900000 410.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 392.912000 422.336000 400.004000 410.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 400.016000 422.336000 404.828000 410.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 404.816000 422.336000 410.972000 410.336000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 411.000000 422.336000 414.804000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.900000 422.336000 418.704000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.800000 422.336000 422.604000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.700000 422.336000 426.504000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.600000 422.336000 430.404000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.500000 422.336000 434.304000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.400000 422.336000 438.204000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.300000 422.336000 442.104000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.200000 422.336000 446.004000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.100000 422.336000 449.904000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.000000 422.336000 453.804000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.900000 422.336000 457.704000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.800000 422.336000 461.604000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.700000 422.336000 465.504000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.600000 422.336000 469.404000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.500000 422.336000 473.304000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.400000 422.336000 477.204000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.300000 422.336000 481.104000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.200000 422.336000 485.004000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.100000 422.336000 488.904000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.000000 422.336000 492.804000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.900000 422.336000 496.704000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.800000 422.336000 500.604000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.700000 422.336000 504.504000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.600000 422.336000 508.404000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.500000 422.336000 512.304000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.400000 422.336000 516.204000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.300000 422.336000 520.104000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.200000 422.336000 524.004000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.100000 422.336000 527.904000 410.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 422.336000 535.632000 410.336000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 408.436000 328.520000 396.436000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 408.436000 336.224000 396.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 336.200000 408.436000 343.424000 396.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 343.400000 408.436000 350.492000 396.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 350.504000 408.436000 356.660000 396.436000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 356.600000 408.436000 360.404000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 360.404000 408.436000 364.208000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 364.208000 408.436000 368.012000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.012000 408.436000 371.816000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.816000 408.436000 375.620000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.620000 408.436000 379.424000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 379.424000 408.436000 383.228000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 383.228000 408.436000 387.032000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 387.032000 408.436000 390.836000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.836000 408.436000 394.640000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.640000 408.436000 398.444000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.444000 408.436000 402.248000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.248000 408.436000 406.052000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.052000 408.436000 409.856000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.856000 408.436000 413.660000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.660000 408.436000 417.464000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.464000 408.436000 421.268000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.268000 408.436000 425.072000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.072000 408.436000 428.876000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.876000 408.436000 432.680000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.680000 408.436000 436.484000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.484000 408.436000 440.288000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.288000 408.436000 444.092000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.092000 408.436000 447.896000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.896000 408.436000 451.700000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.700000 408.436000 455.504000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.504000 408.436000 459.308000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.308000 408.436000 463.112000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.112000 408.436000 466.916000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.916000 408.436000 470.720000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.720000 408.436000 474.524000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.524000 408.436000 478.328000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.328000 408.436000 482.132000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.132000 408.436000 485.936000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.936000 408.436000 489.740000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.740000 408.436000 493.544000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.544000 408.436000 497.348000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.348000 408.436000 501.152000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.152000 408.436000 504.956000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.956000 408.436000 508.760000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.760000 408.436000 512.564000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.564000 408.436000 516.368000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.368000 408.436000 520.172000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.172000 408.436000 523.976000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.976000 408.436000 527.780000 396.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 408.436000 535.632000 396.436000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 394.536000 328.520000 382.536000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 394.536000 336.224000 382.536000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 336.200000 394.536000 343.424000 382.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 343.400000 394.536000 350.168000 382.536000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 350.204000 394.536000 357.296000 382.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 357.308000 394.536000 361.136000 382.536000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 361.100000 394.536000 364.904000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.000000 394.536000 368.804000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 368.900000 394.536000 372.704000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 372.800000 394.536000 376.604000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.700000 394.536000 380.504000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.600000 394.536000 384.404000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.500000 394.536000 388.304000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.400000 394.536000 392.204000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.300000 394.536000 396.104000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.200000 394.536000 400.004000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.100000 394.536000 403.904000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.000000 394.536000 407.804000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 407.900000 394.536000 411.704000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.800000 394.536000 415.604000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.700000 394.536000 419.504000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.600000 394.536000 423.404000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.500000 394.536000 427.304000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.400000 394.536000 431.204000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.300000 394.536000 435.104000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.200000 394.536000 439.004000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.100000 394.536000 442.904000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.000000 394.536000 446.804000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.900000 394.536000 450.704000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.800000 394.536000 454.604000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.700000 394.536000 458.504000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.600000 394.536000 462.404000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.500000 394.536000 466.304000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.400000 394.536000 470.204000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.300000 394.536000 474.104000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.200000 394.536000 478.004000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.100000 394.536000 481.904000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.000000 394.536000 485.804000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.900000 394.536000 489.704000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.800000 394.536000 493.604000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.700000 394.536000 497.504000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.600000 394.536000 501.404000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.500000 394.536000 505.304000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.400000 394.536000 509.204000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.300000 394.536000 513.104000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.200000 394.536000 517.004000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.100000 394.536000 520.904000 382.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 394.536000 527.932000 382.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 394.536000 535.528000 382.536000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 380.636000 328.520000 368.636000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 380.636000 336.224000 368.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 336.200000 380.636000 343.424000 368.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 343.400000 380.636000 353.660000 368.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 353.696000 380.636000 360.788000 368.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 360.800000 380.636000 366.536000 368.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 366.500000 380.636000 370.304000 368.636000 1.000000 0.000000 0.000000 1.000000
+drawChar 370.304000 380.636000 377.984000 368.636000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 378.008000 380.636000 385.100000 368.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 385.112000 380.636000 388.940000 368.636000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 388.900000 380.636000 392.704000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.800000 380.636000 396.604000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.700000 380.636000 400.504000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.600000 380.636000 404.404000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.500000 380.636000 408.304000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.400000 380.636000 412.204000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.300000 380.636000 416.104000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.200000 380.636000 420.004000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.100000 380.636000 423.904000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.000000 380.636000 427.804000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.900000 380.636000 431.704000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.800000 380.636000 435.604000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.700000 380.636000 439.504000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.600000 380.636000 443.404000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.500000 380.636000 447.304000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.400000 380.636000 451.204000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.300000 380.636000 455.104000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.200000 380.636000 459.004000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.100000 380.636000 462.904000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.000000 380.636000 466.804000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.900000 380.636000 470.704000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.800000 380.636000 474.604000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.700000 380.636000 478.504000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.600000 380.636000 482.404000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.500000 380.636000 486.304000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.400000 380.636000 490.204000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.300000 380.636000 494.104000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.200000 380.636000 498.004000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.100000 380.636000 501.904000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.000000 380.636000 505.804000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.900000 380.636000 509.704000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.800000 380.636000 513.604000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.700000 380.636000 517.504000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.600000 380.636000 521.404000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.500000 380.636000 525.304000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.400000 380.636000 529.204000 368.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 380.636000 535.632000 368.636000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 366.736000 328.520000 354.736000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 366.736000 332.324000 354.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 332.300000 366.736000 336.128000 354.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 336.104000 366.736000 342.872000 354.736000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 342.908000 366.736000 350.000000 354.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 350.012000 366.736000 355.748000 354.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 355.712000 366.736000 365.972000 354.736000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 366.008000 366.736000 373.160000 354.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 373.208000 366.736000 378.944000 354.736000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 378.908000 366.736000 386.000000 354.736000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 386.000000 366.736000 389.804000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.804000 366.736000 393.608000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.608000 366.736000 397.412000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.412000 366.736000 401.216000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.216000 366.736000 405.020000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.020000 366.736000 408.824000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.824000 366.736000 412.628000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.628000 366.736000 416.432000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.432000 366.736000 420.236000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.236000 366.736000 424.040000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.040000 366.736000 427.844000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.844000 366.736000 431.648000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.648000 366.736000 435.452000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.452000 366.736000 439.256000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.256000 366.736000 443.060000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.060000 366.736000 446.864000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.864000 366.736000 450.668000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.668000 366.736000 454.472000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.472000 366.736000 458.276000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.276000 366.736000 462.080000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.080000 366.736000 465.884000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.884000 366.736000 469.688000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.688000 366.736000 473.492000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.492000 366.736000 477.296000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.296000 366.736000 481.100000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.100000 366.736000 484.904000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.904000 366.736000 488.708000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.708000 366.736000 492.512000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.512000 366.736000 496.316000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.316000 366.736000 500.120000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.120000 366.736000 503.924000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.924000 366.736000 507.728000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.728000 366.736000 511.532000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.532000 366.736000 515.336000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.336000 366.736000 519.140000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.140000 366.736000 522.944000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.944000 366.736000 526.748000 354.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 366.736000 535.632000 354.736000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 352.836000 328.520000 340.836000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 352.836000 335.720000 340.836000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 335.696000 352.836000 342.848000 340.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 342.896000 352.836000 350.576000 340.836000 1.000000 0.000000 0.000000 1.000000 p
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 350.500000 352.836000 354.304000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 354.400000 352.836000 358.204000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.300000 352.836000 362.104000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 362.200000 352.836000 366.004000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 366.100000 352.836000 369.904000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.000000 352.836000 373.804000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.900000 352.836000 377.704000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.800000 352.836000 381.604000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.700000 352.836000 385.504000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.600000 352.836000 389.404000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.500000 352.836000 393.304000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.400000 352.836000 397.204000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.300000 352.836000 401.104000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.200000 352.836000 405.004000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.100000 352.836000 408.904000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.000000 352.836000 412.804000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.900000 352.836000 416.704000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.800000 352.836000 420.604000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.700000 352.836000 424.504000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.600000 352.836000 428.404000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.500000 352.836000 432.304000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.400000 352.836000 436.204000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.300000 352.836000 440.104000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.200000 352.836000 444.004000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.100000 352.836000 447.904000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 448.000000 352.836000 451.804000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.900000 352.836000 455.704000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.800000 352.836000 459.604000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.700000 352.836000 463.504000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.600000 352.836000 467.404000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.500000 352.836000 471.304000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.400000 352.836000 475.204000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.300000 352.836000 479.104000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 479.200000 352.836000 483.004000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 483.100000 352.836000 486.904000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 487.000000 352.836000 490.804000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.900000 352.836000 494.704000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.800000 352.836000 498.604000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.700000 352.836000 502.504000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.600000 352.836000 506.404000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.500000 352.836000 510.304000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.400000 352.836000 514.204000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.300000 352.836000 518.104000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.200000 352.836000 522.004000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.100000 352.836000 525.904000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 526.000000 352.836000 529.804000 340.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 352.836000 535.632000 340.836000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 338.936000 328.520000 326.936000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 338.936000 335.720000 326.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 335.696000 338.936000 343.376000 326.936000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 343.400000 338.936000 350.552000 326.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 350.600000 338.936000 354.404000 326.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.404000 338.936000 360.560000 326.936000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 360.608000 338.936000 364.436000 326.936000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 364.412000 338.936000 372.092000 326.936000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 372.116000 338.936000 379.844000 326.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 379.820000 338.936000 387.044000 326.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 387.020000 338.936000 394.748000 326.936000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 394.700000 338.936000 398.504000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.504000 338.936000 402.308000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 402.308000 338.936000 406.112000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 406.112000 338.936000 409.916000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.916000 338.936000 413.720000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.720000 338.936000 417.524000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.524000 338.936000 421.328000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 421.328000 338.936000 425.132000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 425.132000 338.936000 428.936000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.936000 338.936000 432.740000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.740000 338.936000 436.544000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.544000 338.936000 440.348000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 440.348000 338.936000 444.152000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 444.152000 338.936000 447.956000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.956000 338.936000 451.760000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.760000 338.936000 455.564000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.564000 338.936000 459.368000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.368000 338.936000 463.172000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.172000 338.936000 466.976000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.976000 338.936000 470.780000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.780000 338.936000 474.584000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.584000 338.936000 478.388000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.388000 338.936000 482.192000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.192000 338.936000 485.996000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.996000 338.936000 489.800000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.800000 338.936000 493.604000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.604000 338.936000 497.408000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.408000 338.936000 501.212000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.212000 338.936000 505.016000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.016000 338.936000 508.820000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.820000 338.936000 512.624000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.624000 338.936000 516.428000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.428000 338.936000 520.232000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 520.232000 338.936000 524.036000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 524.036000 338.936000 527.840000 326.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 338.936000 535.632000 326.936000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 325.036000 328.520000 313.036000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 325.036000 336.176000 313.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 336.200000 325.036000 340.028000 313.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 340.004000 325.036000 346.724000 313.036000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 346.700000 325.036000 353.792000 313.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 353.804000 325.036000 359.960000 313.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 359.900000 325.036000 363.704000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 363.704000 325.036000 367.508000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.508000 325.036000 371.312000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.312000 325.036000 375.116000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 375.116000 325.036000 378.920000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.920000 325.036000 382.724000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.724000 325.036000 386.528000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.528000 325.036000 390.332000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.332000 325.036000 394.136000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.136000 325.036000 397.940000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.940000 325.036000 401.744000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.744000 325.036000 405.548000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.548000 325.036000 409.352000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.352000 325.036000 413.156000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.156000 325.036000 416.960000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.960000 325.036000 420.764000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.764000 325.036000 424.568000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.568000 325.036000 428.372000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.372000 325.036000 432.176000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.176000 325.036000 435.980000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.980000 325.036000 439.784000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.784000 325.036000 443.588000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.588000 325.036000 447.392000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.392000 325.036000 451.196000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.196000 325.036000 455.000000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.000000 325.036000 458.804000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.804000 325.036000 462.608000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.608000 325.036000 466.412000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.412000 325.036000 470.216000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.216000 325.036000 474.020000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.020000 325.036000 477.824000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.824000 325.036000 481.628000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.628000 325.036000 485.432000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.432000 325.036000 489.236000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.236000 325.036000 493.040000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.040000 325.036000 496.844000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.844000 325.036000 500.648000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.648000 325.036000 504.452000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.452000 325.036000 508.256000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.256000 325.036000 512.060000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.060000 325.036000 515.864000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.864000 325.036000 519.668000 313.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 325.036000 527.932000 313.036000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 325.036000 535.528000 313.036000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 311.136000 328.520000 299.136000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 311.136000 336.176000 299.136000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 336.200000 311.136000 340.028000 299.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 340.004000 311.136000 345.740000 299.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 345.704000 311.136000 352.856000 299.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 352.904000 311.136000 356.732000 299.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 356.708000 311.136000 360.512000 299.136000 1.000000 0.000000 0.000000 1.000000
+drawChar 360.512000 311.136000 368.192000 299.136000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 368.216000 311.136000 375.368000 299.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 375.416000 311.136000 383.144000 299.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 383.120000 311.136000 386.948000 299.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 386.924000 311.136000 393.080000 299.136000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 393.128000 311.136000 397.940000 299.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 397.928000 311.136000 405.020000 299.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 405.032000 311.136000 410.768000 299.136000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 410.700000 311.136000 414.504000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.600000 311.136000 418.404000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.500000 311.136000 422.304000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.400000 311.136000 426.204000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.300000 311.136000 430.104000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.200000 311.136000 434.004000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 434.100000 311.136000 437.904000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.000000 311.136000 441.804000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.900000 311.136000 445.704000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.800000 311.136000 449.604000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.700000 311.136000 453.504000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.600000 311.136000 457.404000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.500000 311.136000 461.304000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.400000 311.136000 465.204000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.300000 311.136000 469.104000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.200000 311.136000 473.004000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.100000 311.136000 476.904000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.000000 311.136000 480.804000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.900000 311.136000 484.704000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.800000 311.136000 488.604000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.700000 311.136000 492.504000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.600000 311.136000 496.404000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.500000 311.136000 500.304000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.400000 311.136000 504.204000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.300000 311.136000 508.104000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.200000 311.136000 512.004000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.100000 311.136000 515.904000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 516.000000 311.136000 519.804000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.900000 311.136000 523.704000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.800000 311.136000 527.604000 299.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 311.136000 535.632000 299.136000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 297.236000 328.520000 285.236000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 297.236000 336.176000 285.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 336.200000 297.236000 341.936000 285.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 341.900000 297.236000 349.628000 285.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 349.604000 297.236000 356.324000 285.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 356.300000 297.236000 363.392000 285.236000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 363.400000 297.236000 367.204000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 367.204000 297.236000 371.008000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 371.008000 297.236000 374.812000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.812000 297.236000 378.616000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.616000 297.236000 382.420000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.420000 297.236000 386.224000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.224000 297.236000 390.028000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.028000 297.236000 393.832000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.832000 297.236000 397.636000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.636000 297.236000 401.440000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.440000 297.236000 405.244000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.244000 297.236000 409.048000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.048000 297.236000 412.852000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.852000 297.236000 416.656000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.656000 297.236000 420.460000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.460000 297.236000 424.264000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.264000 297.236000 428.068000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.068000 297.236000 431.872000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.872000 297.236000 435.676000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.676000 297.236000 439.480000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.480000 297.236000 443.284000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.284000 297.236000 447.088000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.088000 297.236000 450.892000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.892000 297.236000 454.696000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.696000 297.236000 458.500000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.500000 297.236000 462.304000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.304000 297.236000 466.108000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.108000 297.236000 469.912000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.912000 297.236000 473.716000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.716000 297.236000 477.520000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.520000 297.236000 481.324000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.324000 297.236000 485.128000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.128000 297.236000 488.932000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.932000 297.236000 492.736000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.736000 297.236000 496.540000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.540000 297.236000 500.344000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.344000 297.236000 504.148000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.148000 297.236000 507.952000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.952000 297.236000 511.756000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.756000 297.236000 515.560000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.560000 297.236000 519.364000 285.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 297.236000 527.932000 285.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 297.236000 535.528000 285.236000 1.000000 0.000000 0.000000 1.000000 2
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 283.336000 328.520000 271.336000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 283.336000 333.308000 271.336000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 333.296000 283.336000 340.388000 271.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 340.400000 283.336000 344.228000 271.336000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 344.204000 283.336000 351.932000 271.336000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 351.908000 283.336000 359.588000 271.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 359.612000 283.336000 366.704000 271.336000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 366.716000 283.336000 373.436000 271.336000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 373.412000 283.336000 380.672000 271.336000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 380.708000 283.336000 384.512000 271.336000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 384.512000 283.336000 388.316000 271.336000 1.000000 0.000000 0.000000 1.000000
+drawChar 388.316000 283.336000 393.116000 271.336000 1.000000 0.000000 0.000000 1.000000 J
+drawChar 393.116000 283.336000 400.340000 271.336000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 400.316000 283.336000 408.044000 271.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 408.020000 283.336000 415.748000 271.336000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 415.800000 283.336000 419.604000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.700000 283.336000 423.504000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.600000 283.336000 427.404000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.500000 283.336000 431.304000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.400000 283.336000 435.204000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.300000 283.336000 439.104000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.200000 283.336000 443.004000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.100000 283.336000 446.904000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.000000 283.336000 450.804000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.900000 283.336000 454.704000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.800000 283.336000 458.604000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.700000 283.336000 462.504000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.600000 283.336000 466.404000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.500000 283.336000 470.304000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.400000 283.336000 474.204000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.300000 283.336000 478.104000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.200000 283.336000 482.004000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.100000 283.336000 485.904000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.000000 283.336000 489.804000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.900000 283.336000 493.704000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.800000 283.336000 497.604000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.700000 283.336000 501.504000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.600000 283.336000 505.404000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.500000 283.336000 509.304000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.400000 283.336000 513.204000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.300000 283.336000 517.104000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.200000 283.336000 521.004000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.100000 283.336000 524.904000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.000000 283.336000 528.804000 271.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 283.336000 535.632000 271.336000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 269.436000 328.520000 257.436000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 269.436000 333.308000 257.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 333.296000 269.436000 340.388000 257.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 340.400000 269.436000 346.136000 257.436000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 346.100000 269.436000 353.192000 257.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 353.204000 269.436000 360.428000 257.436000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 360.404000 269.436000 364.208000 257.436000 1.000000 0.000000 0.000000 1.000000
+drawChar 364.208000 269.436000 370.364000 257.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 370.412000 269.436000 377.180000 257.436000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 377.216000 269.436000 383.372000 257.436000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 383.420000 269.436000 388.232000 257.436000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 388.220000 269.436000 395.312000 257.436000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 395.324000 269.436000 406.700000 257.436000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 406.600000 269.436000 410.404000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 410.500000 269.436000 414.304000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 414.400000 269.436000 418.204000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 418.300000 269.436000 422.104000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 422.200000 269.436000 426.004000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 426.100000 269.436000 429.904000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 430.000000 269.436000 433.804000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 433.900000 269.436000 437.704000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 437.800000 269.436000 441.604000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 441.700000 269.436000 445.504000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 445.600000 269.436000 449.404000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 449.500000 269.436000 453.304000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 453.400000 269.436000 457.204000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.300000 269.436000 461.104000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.200000 269.436000 465.004000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.100000 269.436000 468.904000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.000000 269.436000 472.804000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 472.900000 269.436000 476.704000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.800000 269.436000 480.604000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.700000 269.436000 484.504000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.600000 269.436000 488.404000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.500000 269.436000 492.304000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.400000 269.436000 496.204000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.300000 269.436000 500.104000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.200000 269.436000 504.004000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.100000 269.436000 507.904000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.000000 269.436000 511.804000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.900000 269.436000 515.704000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.800000 269.436000 519.604000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.700000 269.436000 523.504000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.600000 269.436000 527.404000 257.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 269.436000 535.632000 257.436000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 255.536000 328.520000 243.536000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 255.536000 333.308000 243.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 333.296000 255.536000 339.032000 243.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 338.996000 255.536000 346.148000 243.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 346.196000 255.536000 356.456000 243.536000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 356.492000 255.536000 364.172000 243.536000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 364.196000 255.536000 371.288000 243.536000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 371.300000 255.536000 377.036000 243.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 377.000000 255.536000 382.736000 243.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 382.700000 255.536000 389.468000 243.536000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 389.400000 255.536000 393.204000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.204000 255.536000 397.008000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.008000 255.536000 400.812000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.812000 255.536000 404.616000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.616000 255.536000 408.420000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.420000 255.536000 412.224000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.224000 255.536000 416.028000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.028000 255.536000 419.832000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.832000 255.536000 423.636000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.636000 255.536000 427.440000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.440000 255.536000 431.244000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.244000 255.536000 435.048000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.048000 255.536000 438.852000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 438.852000 255.536000 442.656000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.656000 255.536000 446.460000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.460000 255.536000 450.264000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.264000 255.536000 454.068000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.068000 255.536000 457.872000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 457.872000 255.536000 461.676000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.676000 255.536000 465.480000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.480000 255.536000 469.284000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.284000 255.536000 473.088000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.088000 255.536000 476.892000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 476.892000 255.536000 480.696000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.696000 255.536000 484.500000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.500000 255.536000 488.304000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.304000 255.536000 492.108000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.108000 255.536000 495.912000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 495.912000 255.536000 499.716000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.716000 255.536000 503.520000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.520000 255.536000 507.324000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.324000 255.536000 511.128000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.128000 255.536000 514.932000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.932000 255.536000 518.736000 243.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 255.536000 527.932000 243.536000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 255.536000 535.528000 243.536000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 241.636000 328.520000 229.636000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 328.496000 241.636000 338.756000 229.636000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 338.792000 241.636000 345.884000 229.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 345.896000 241.636000 353.048000 229.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 353.096000 241.636000 357.908000 229.636000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 357.896000 241.636000 364.988000 229.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 365.000000 241.636000 370.736000 229.636000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 370.700000 241.636000 376.856000 229.636000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 376.800000 241.636000 380.604000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.700000 241.636000 384.504000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.600000 241.636000 388.404000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.500000 241.636000 392.304000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.400000 241.636000 396.204000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.300000 241.636000 400.104000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.200000 241.636000 404.004000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.100000 241.636000 407.904000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.000000 241.636000 411.804000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.900000 241.636000 415.704000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.800000 241.636000 419.604000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.700000 241.636000 423.504000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.600000 241.636000 427.404000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.500000 241.636000 431.304000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.400000 241.636000 435.204000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.300000 241.636000 439.104000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.200000 241.636000 443.004000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.100000 241.636000 446.904000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.000000 241.636000 450.804000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.900000 241.636000 454.704000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.800000 241.636000 458.604000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.700000 241.636000 462.504000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.600000 241.636000 466.404000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.500000 241.636000 470.304000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.400000 241.636000 474.204000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.300000 241.636000 478.104000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.200000 241.636000 482.004000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.100000 241.636000 485.904000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.000000 241.636000 489.804000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.900000 241.636000 493.704000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.800000 241.636000 497.604000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.700000 241.636000 501.504000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.600000 241.636000 505.404000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.500000 241.636000 509.304000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.400000 241.636000 513.204000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.300000 241.636000 517.104000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.200000 241.636000 521.004000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.100000 241.636000 524.904000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.000000 241.636000 528.804000 229.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 241.636000 535.632000 229.636000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 320.300000 227.656000 329.228000 215.656000 1.000000 0.000000 0.000000 1.000000 T
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 213.636000 328.292000 201.636000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 327.404000 213.636000 334.496000 201.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 334.508000 213.636000 338.336000 201.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 338.312000 213.636000 345.404000 201.636000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 345.416000 213.636000 353.096000 201.636000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 353.120000 213.636000 360.848000 201.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 360.824000 213.636000 368.048000 201.636000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 368.024000 213.636000 375.752000 201.636000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 375.728000 213.636000 382.820000 201.636000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 382.800000 213.636000 386.604000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 386.604000 213.636000 390.408000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 390.408000 213.636000 394.212000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 394.212000 213.636000 398.016000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 398.016000 213.636000 401.820000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.820000 213.636000 405.624000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 405.624000 213.636000 409.428000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 409.428000 213.636000 413.232000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 413.232000 213.636000 417.036000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 417.036000 213.636000 420.840000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.840000 213.636000 424.644000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.644000 213.636000 428.448000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.448000 213.636000 432.252000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.252000 213.636000 436.056000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.056000 213.636000 439.860000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.860000 213.636000 443.664000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.664000 213.636000 447.468000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.468000 213.636000 451.272000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.272000 213.636000 455.076000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.076000 213.636000 458.880000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.880000 213.636000 462.684000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.684000 213.636000 466.488000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.488000 213.636000 470.292000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.292000 213.636000 474.096000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.096000 213.636000 477.900000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.900000 213.636000 481.704000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.704000 213.636000 485.508000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.508000 213.636000 489.312000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.312000 213.636000 493.116000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.116000 213.636000 496.920000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.920000 213.636000 500.724000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.724000 213.636000 504.528000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.528000 213.636000 508.332000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 508.332000 213.636000 512.136000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 512.136000 213.636000 515.940000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.940000 213.636000 519.744000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.744000 213.636000 523.548000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.548000 213.636000 527.352000 201.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 213.636000 535.632000 201.636000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 199.736000 328.292000 187.736000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 327.404000 199.736000 334.496000 187.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 334.508000 199.736000 338.336000 187.736000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 338.312000 199.736000 345.404000 187.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 345.416000 199.736000 352.184000 187.736000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 352.220000 199.736000 356.048000 187.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 356.024000 199.736000 362.180000 187.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 362.228000 199.736000 366.056000 187.736000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 366.032000 199.736000 373.256000 187.736000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 373.232000 199.736000 380.960000 187.736000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 380.900000 199.736000 384.704000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.800000 199.736000 388.604000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.700000 199.736000 392.504000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.600000 199.736000 396.404000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.500000 199.736000 400.304000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.400000 199.736000 404.204000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.300000 199.736000 408.104000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.200000 199.736000 412.004000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.100000 199.736000 415.904000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.000000 199.736000 419.804000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.900000 199.736000 423.704000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.800000 199.736000 427.604000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.700000 199.736000 431.504000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.600000 199.736000 435.404000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.500000 199.736000 439.304000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.400000 199.736000 443.204000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.300000 199.736000 447.104000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.200000 199.736000 451.004000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.100000 199.736000 454.904000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.000000 199.736000 458.804000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.900000 199.736000 462.704000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.800000 199.736000 466.604000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.700000 199.736000 470.504000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.600000 199.736000 474.404000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.500000 199.736000 478.304000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.400000 199.736000 482.204000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.300000 199.736000 486.104000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.200000 199.736000 490.004000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.100000 199.736000 493.904000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.000000 199.736000 497.804000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.900000 199.736000 501.704000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.800000 199.736000 505.604000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.700000 199.736000 509.504000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.600000 199.736000 513.404000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.500000 199.736000 517.304000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.400000 199.736000 521.204000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.300000 199.736000 525.104000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.200000 199.736000 529.004000 187.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 199.736000 535.632000 187.736000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 185.836000 328.292000 173.836000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 327.404000 185.836000 334.496000 173.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 334.508000 185.836000 340.244000 173.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 340.208000 185.836000 345.944000 173.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 345.908000 185.836000 353.060000 173.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 353.108000 185.836000 359.828000 173.836000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 359.804000 185.836000 366.896000 173.836000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 366.800000 185.836000 370.604000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 370.604000 185.836000 374.408000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 374.408000 185.836000 378.212000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 378.212000 185.836000 382.016000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.016000 185.836000 385.820000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.820000 185.836000 389.624000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.624000 185.836000 393.428000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.428000 185.836000 397.232000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.232000 185.836000 401.036000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.036000 185.836000 404.840000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.840000 185.836000 408.644000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.644000 185.836000 412.448000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.448000 185.836000 416.252000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.252000 185.836000 420.056000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.056000 185.836000 423.860000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.860000 185.836000 427.664000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.664000 185.836000 431.468000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.468000 185.836000 435.272000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.272000 185.836000 439.076000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.076000 185.836000 442.880000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.880000 185.836000 446.684000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.684000 185.836000 450.488000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.488000 185.836000 454.292000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.292000 185.836000 458.096000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.096000 185.836000 461.900000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.900000 185.836000 465.704000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.704000 185.836000 469.508000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.508000 185.836000 473.312000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.312000 185.836000 477.116000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.116000 185.836000 480.920000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 480.920000 185.836000 484.724000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.724000 185.836000 488.528000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.528000 185.836000 492.332000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.332000 185.836000 496.136000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.136000 185.836000 499.940000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 499.940000 185.836000 503.744000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.744000 185.836000 507.548000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.548000 185.836000 511.352000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.352000 185.836000 515.156000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.156000 185.836000 518.960000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 518.960000 185.836000 522.764000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 522.764000 185.836000 526.568000 173.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 185.836000 535.632000 173.836000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 171.936000 328.292000 159.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 328.304000 171.936000 336.032000 159.936000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 336.008000 171.936000 342.776000 159.936000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 342.812000 171.936000 354.188000 159.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 354.212000 171.936000 361.304000 159.936000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 361.200000 171.936000 365.004000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.100000 171.936000 368.904000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 369.000000 171.936000 372.804000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 372.900000 171.936000 376.704000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 376.800000 171.936000 380.604000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 380.700000 171.936000 384.504000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 384.600000 171.936000 388.404000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 388.500000 171.936000 392.304000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 392.400000 171.936000 396.204000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 396.300000 171.936000 400.104000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.200000 171.936000 404.004000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.100000 171.936000 407.904000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.000000 171.936000 411.804000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 411.900000 171.936000 415.704000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 415.800000 171.936000 419.604000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 419.700000 171.936000 423.504000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.600000 171.936000 427.404000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.500000 171.936000 431.304000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.400000 171.936000 435.204000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.300000 171.936000 439.104000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.200000 171.936000 443.004000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.100000 171.936000 446.904000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.000000 171.936000 450.804000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.900000 171.936000 454.704000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.800000 171.936000 458.604000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.700000 171.936000 462.504000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.600000 171.936000 466.404000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.500000 171.936000 470.304000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 470.400000 171.936000 474.204000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 474.300000 171.936000 478.104000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.200000 171.936000 482.004000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.100000 171.936000 485.904000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.000000 171.936000 489.804000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 489.900000 171.936000 493.704000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 493.800000 171.936000 497.604000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 497.700000 171.936000 501.504000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 501.600000 171.936000 505.404000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 505.500000 171.936000 509.304000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 509.400000 171.936000 513.204000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 513.300000 171.936000 517.104000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.200000 171.936000 521.004000 159.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 171.936000 527.932000 159.936000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 171.936000 535.528000 159.936000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 158.036000 328.292000 146.036000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 327.404000 158.036000 334.628000 146.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 334.604000 158.036000 338.432000 146.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 338.408000 158.036000 342.236000 146.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 342.212000 158.036000 349.304000 146.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 349.316000 158.036000 354.128000 146.036000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 354.100000 158.036000 357.904000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 358.000000 158.036000 361.804000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 361.900000 158.036000 365.704000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 365.800000 158.036000 369.604000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 369.700000 158.036000 373.504000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 373.600000 158.036000 377.404000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 377.500000 158.036000 381.304000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 381.400000 158.036000 385.204000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.300000 158.036000 389.104000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.200000 158.036000 393.004000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.100000 158.036000 396.904000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.000000 158.036000 400.804000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 400.900000 158.036000 404.704000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.800000 158.036000 408.604000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.700000 158.036000 412.504000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.600000 158.036000 416.404000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.500000 158.036000 420.304000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.400000 158.036000 424.204000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.300000 158.036000 428.104000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.200000 158.036000 432.004000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 432.100000 158.036000 435.904000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 436.000000 158.036000 439.804000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.900000 158.036000 443.704000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.800000 158.036000 447.604000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.700000 158.036000 451.504000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 451.600000 158.036000 455.404000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 455.500000 158.036000 459.304000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 459.400000 158.036000 463.204000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 463.300000 158.036000 467.104000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 467.200000 158.036000 471.004000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 471.100000 158.036000 474.904000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 475.000000 158.036000 478.804000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 478.900000 158.036000 482.704000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 482.800000 158.036000 486.604000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 486.700000 158.036000 490.504000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 490.600000 158.036000 494.404000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 494.500000 158.036000 498.304000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 498.400000 158.036000 502.204000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 502.300000 158.036000 506.104000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 506.200000 158.036000 510.004000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 510.100000 158.036000 513.904000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 514.000000 158.036000 517.804000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 517.900000 158.036000 521.704000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 521.800000 158.036000 525.604000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 525.700000 158.036000 529.504000 146.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 158.036000 535.632000 146.036000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 144.136000 328.292000 132.136000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 327.404000 144.136000 334.628000 132.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 334.604000 144.136000 345.980000 132.136000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 346.004000 144.136000 353.156000 132.136000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 353.204000 144.136000 358.016000 132.136000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 358.004000 144.136000 365.228000 132.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 365.204000 144.136000 372.296000 132.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 372.308000 144.136000 378.464000 132.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 378.300000 144.136000 382.104000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 382.104000 144.136000 385.908000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 385.908000 144.136000 389.712000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 389.712000 144.136000 393.516000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 393.516000 144.136000 397.320000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 397.320000 144.136000 401.124000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 401.124000 144.136000 404.928000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 404.928000 144.136000 408.732000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 408.732000 144.136000 412.536000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.536000 144.136000 416.340000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.340000 144.136000 420.144000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.144000 144.136000 423.948000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 423.948000 144.136000 427.752000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 427.752000 144.136000 431.556000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.556000 144.136000 435.360000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.360000 144.136000 439.164000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.164000 144.136000 442.968000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 442.968000 144.136000 446.772000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 446.772000 144.136000 450.576000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.576000 144.136000 454.380000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.380000 144.136000 458.184000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.184000 144.136000 461.988000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 461.988000 144.136000 465.792000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 465.792000 144.136000 469.596000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.596000 144.136000 473.400000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.400000 144.136000 477.204000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.204000 144.136000 481.008000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.008000 144.136000 484.812000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 484.812000 144.136000 488.616000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.616000 144.136000 492.420000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.420000 144.136000 496.224000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.224000 144.136000 500.028000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.028000 144.136000 503.832000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 503.832000 144.136000 507.636000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.636000 144.136000 511.440000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.440000 144.136000 515.244000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.244000 144.136000 519.048000 132.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 520.300000 144.136000 527.932000 132.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 527.896000 144.136000 535.528000 132.136000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 320.300000 130.236000 328.292000 118.236000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 328.304000 130.236000 334.040000 118.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 334.004000 130.236000 341.156000 118.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 341.204000 130.236000 348.884000 118.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 348.908000 130.236000 356.000000 118.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 356.012000 130.236000 359.816000 118.236000 1.000000 0.000000 0.000000 1.000000
+drawChar 359.816000 130.236000 363.536000 118.236000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 363.512000 130.236000 370.736000 118.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 370.712000 130.236000 378.440000 118.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 378.416000 130.236000 384.152000 118.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 384.116000 130.236000 391.844000 118.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 391.820000 130.236000 398.972000 118.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 399.020000 130.236000 402.848000 118.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 402.824000 130.236000 408.980000 118.236000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 409.000000 130.236000 412.804000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 412.804000 130.236000 416.608000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 416.608000 130.236000 420.412000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 420.412000 130.236000 424.216000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 424.216000 130.236000 428.020000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 428.020000 130.236000 431.824000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 431.824000 130.236000 435.628000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 435.628000 130.236000 439.432000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 439.432000 130.236000 443.236000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 443.236000 130.236000 447.040000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 447.040000 130.236000 450.844000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 450.844000 130.236000 454.648000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 454.648000 130.236000 458.452000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 458.452000 130.236000 462.256000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 462.256000 130.236000 466.060000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 466.060000 130.236000 469.864000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 469.864000 130.236000 473.668000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 473.668000 130.236000 477.472000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 477.472000 130.236000 481.276000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 481.276000 130.236000 485.080000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 485.080000 130.236000 488.884000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 488.884000 130.236000 492.688000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 492.688000 130.236000 496.492000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 496.492000 130.236000 500.296000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 500.296000 130.236000 504.100000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 504.100000 130.236000 507.904000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 507.904000 130.236000 511.708000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 511.708000 130.236000 515.512000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 515.512000 130.236000 519.316000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 519.316000 130.236000 523.120000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 523.120000 130.236000 526.924000 118.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 528.000000 130.236000 535.632000 118.236000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 306.000000 136.200000 0 306.100000 136.200000 0 306.100000 644.700000 0 306.000000 644.700000 0 306.000000 136.200000 0
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 14808.400000 0 477.900000 14808.400000 0 477.900000 15118.200000 0 134.300000 15118.200000 0 134.300000 14808.400000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -1401650.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 11819.400000 0 168.100000 11819.400000 0 168.100000 11824.400000 0 76.900000 11824.400000 0 76.900000 11819.400000 0
+eoFillPath subpath 1 163.100000 11824.300000 0 168.100000 11824.300000 0 168.100000 11954.900000 0 163.100000 11954.900000 0 163.100000 11824.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 11824.400000 0 163.100000 11824.400000 0 163.100000 11959.800000 0 72.000000 11959.800000 0 72.000000 11824.400000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 11955.480000 87.320000 11945.480000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 11955.480000 93.420000 11945.480000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 11955.480000 97.510000 11945.480000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 11955.480000 101.420000 11945.480000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 11955.480000 104.170000 11945.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 11955.480000 110.530000 11945.480000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 11955.480000 113.270000 11945.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 11955.480000 116.470000 11945.480000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 11955.480000 123.480000 11945.480000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 11955.480000 129.610000 11945.480000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 11955.480000 135.090000 11945.480000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 11955.480000 140.890000 11945.480000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 11955.480000 144.820000 11945.480000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 11955.480000 150.920000 11945.480000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 11955.480000 153.670000 11945.480000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 11955.480000 156.470000 11945.480000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 11828.600000 0 168.200000 11828.600000 0 168.200000 11943.800000 0 72.000000 11943.800000 0 72.000000 11828.600000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11896.752000 79.253000 11887.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 11896.752000 86.669000 11887.752000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 11896.752000 90.215000 11887.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 11896.752000 93.077000 11887.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 11896.752000 97.406000 11887.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 11896.752000 100.853000 11887.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 11896.752000 107.324000 11887.752000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 11896.752000 112.337000 11887.752000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 11896.752000 115.271000 11887.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 11896.752000 118.655000 11887.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 11896.752000 126.512000 11887.752000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 11896.752000 130.805000 11887.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 11896.752000 135.881000 11887.752000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 11896.752000 139.355000 11887.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 11896.752000 147.284000 11887.752000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 11896.752000 150.074000 11887.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 11896.752000 155.897000 11887.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 11896.752000 158.750000 11887.752000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 11896.752000 161.853000 11887.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11886.252000 82.124000 11877.252000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 11886.252000 87.137000 11877.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 11886.252000 90.071000 11877.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 11886.252000 93.356000 11877.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 11886.252000 100.403000 11877.252000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 11886.252000 104.921000 11877.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 11886.252000 109.205000 11877.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 11886.252000 117.737000 11877.252000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 11886.252000 123.119000 11877.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 11886.252000 128.996000 11877.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 11886.252000 132.605000 11877.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 11886.252000 138.392000 11877.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 11886.252000 141.749000 11877.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 11886.252000 149.507000 11877.252000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 11886.252000 153.800000 11877.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 11886.252000 158.876000 11877.252000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 11886.252000 161.853000 11877.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11875.752000 81.764000 11866.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 11875.752000 87.596000 11866.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 11875.752000 93.356000 11866.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 11875.752000 102.050000 11866.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 11875.752000 113.822000 11866.752000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 11875.752000 122.651000 11866.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 11875.752000 134.117000 11866.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 11875.752000 138.401000 11866.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 11875.752000 147.149000 11866.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 11875.752000 158.921000 11866.752000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 11875.752000 161.853000 11866.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11865.252000 79.271000 11856.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 11865.252000 84.338000 11856.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 11865.252000 89.621000 11856.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 11865.252000 94.643000 11856.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 11865.252000 100.502000 11856.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 11865.252000 106.262000 11856.252000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 11865.252000 111.518000 11856.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 11865.252000 116.216000 11856.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 11865.252000 119.249000 11856.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 11865.252000 122.363000 11856.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 11865.252000 128.186000 11856.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 11865.252000 131.345000 11856.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 11865.252000 137.060000 11856.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 11865.252000 140.147000 11856.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 11865.252000 145.007000 11856.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 11865.252000 148.598000 11856.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 11865.252000 151.460000 11856.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 11865.252000 155.789000 11856.252000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 11865.252000 158.933000 11856.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11854.752000 80.702000 11845.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 11854.752000 83.573000 11845.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 11854.752000 89.396000 11845.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 11854.752000 95.156000 11845.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 11854.752000 100.547000 11845.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 11854.752000 109.052000 11845.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 11854.752000 111.959000 11845.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 11854.752000 117.251000 11845.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 11854.752000 121.904000 11845.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 11854.752000 126.503000 11845.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 11854.752000 129.338000 11845.752000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 11854.752000 134.936000 11845.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 11854.752000 143.441000 11845.752000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 11854.752000 148.796000 11845.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 11854.752000 154.574000 11845.752000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 11854.752000 158.876000 11845.752000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 11854.752000 161.853000 11845.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11844.252000 79.271000 11835.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 11844.252000 85.094000 11835.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 11844.252000 88.703000 11835.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 11844.252000 94.112000 11835.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 11844.252000 97.244000 11835.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 11844.252000 103.058000 11835.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 11844.252000 108.890000 11835.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 11844.252000 111.950000 11835.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 11844.252000 115.271000 11835.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 11844.252000 120.338000 11835.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 11844.252000 125.621000 11835.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 11844.252000 131.363000 11835.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 11844.252000 134.558000 11835.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 11844.252000 140.048000 11835.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 11844.252000 145.430000 11835.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 11844.252000 150.551000 11835.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 11844.252000 155.960000 11835.252000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 11844.252000 158.933000 11835.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11833.752000 80.009000 11824.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 11833.752000 85.364000 11824.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 11833.752000 88.271000 11824.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 11833.752000 91.169000 11824.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 11833.752000 97.955000 11824.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 11833.752000 107.765000 11824.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 11833.752000 110.672000 11824.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 11833.752000 115.964000 11824.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 11833.752000 120.617000 11824.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 11833.752000 125.216000 11824.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 11833.752000 128.051000 11824.752000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 11833.752000 134.954000 11824.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 11833.752000 146.285000 11824.752000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 11833.752000 151.667000 11824.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 11833.752000 155.906000 11824.752000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 11833.752000 159.033000 11824.752000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 11824.300000 0 72.100000 11824.300000 0 72.100000 11959.800000 0 72.000000 11959.800000 0 72.000000 11824.300000 0
+eoFillPath subpath 1 163.100000 11824.300000 0 163.200000 11824.300000 0 163.200000 11959.800000 0 163.100000 11959.800000 0 163.100000 11824.300000 0
+eoFillPath subpath 1 72.000000 11959.700000 0 163.200000 11959.700000 0 163.200000 11959.800000 0 72.000000 11959.800000 0 72.000000 11959.700000 0
+eoFillPath subpath 1 72.000000 11824.300000 0 163.200000 11824.300000 0 163.200000 11824.400000 0 72.000000 11824.400000 0 72.000000 11824.300000 0
+saveState
+eoClipPath subpath 1 96.900000 11899.600000 0 138.300000 11899.600000 0 138.300000 11943.800000 0 96.900000 11943.800000 0 96.900000 11899.600000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -1110770.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 11544.800000 0 165.500000 11544.800000 0 165.500000 11549.800000 0 76.900000 11549.800000 0 76.900000 11544.800000 0
+eoFillPath subpath 1 160.500000 11549.700000 0 165.500000 11549.700000 0 165.500000 11706.000000 0 160.500000 11706.000000 0 160.500000 11549.700000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 11549.800000 0 121.400000 11549.800000 0 121.400000 11710.900000 0 72.000000 11710.900000 0 72.000000 11549.800000 0
+saveState
+eoClipPath subpath 1 72.000000 11549.700000 0 160.500000 11549.700000 0 160.500000 11710.800000 0 72.000000 11710.800000 0 72.000000 11549.700000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -1074070.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 11706.580000 89.280000 11696.580000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 11706.580000 95.630000 11696.580000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 11706.580000 99.520000 11696.580000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 11706.580000 102.270000 11696.580000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 11706.580000 108.450000 11696.580000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 11706.580000 112.610000 11696.580000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 11706.580000 118.510000 11696.580000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 11706.580000 121.670000 11696.580000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 11706.580000 124.470000 11696.580000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 11706.580000 130.830000 11696.580000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 11706.580000 133.970000 11696.580000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 11706.580000 137.920000 11696.580000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 11706.580000 144.230000 11696.580000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 11706.580000 150.350000 11696.580000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 11706.580000 153.570000 11696.580000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 11694.880000 95.000000 11684.880000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 11694.880000 97.770000 11684.880000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 11694.880000 103.000000 11684.880000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 11694.880000 109.330000 11684.880000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 11694.880000 117.470000 11684.880000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 11694.880000 123.620000 11684.880000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 11694.880000 128.800000 11684.880000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 11694.880000 135.130000 11684.880000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 11694.880000 141.250000 11684.880000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 11694.880000 145.410000 11684.880000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11680.052000 82.961000 11671.052000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 11680.052000 87.614000 11671.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 11680.052000 93.356000 11671.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 11680.052000 98.612000 11671.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 11680.052000 103.733000 11671.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 11680.052000 106.568000 11671.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 11680.052000 111.959000 11671.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 11680.052000 114.866000 11671.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 11680.052000 117.665000 11671.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 11680.052000 122.768000 11671.052000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 11680.052000 125.747000 11671.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 11680.052000 131.651000 11671.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 11680.052000 136.907000 11671.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 11680.052000 142.307000 11671.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 11680.052000 148.049000 11671.052000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 11680.052000 150.956000 11671.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 11680.052000 156.302000 11671.052000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 11680.052000 159.253000 11671.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11669.552000 84.095000 11660.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 11669.552000 89.900000 11660.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 11669.552000 95.318000 11660.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 11669.552000 100.349000 11660.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 11669.552000 110.789000 11660.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 11669.552000 111.464000 11660.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 11669.552000 114.362000 11660.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 11669.552000 119.348000 11660.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 11669.552000 126.962000 11660.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 11669.552000 132.047000 11660.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 11669.552000 139.958000 11660.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 11669.552000 142.865000 11660.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 11669.552000 147.410000 11660.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 11669.552000 153.287000 11660.552000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 11669.552000 156.333000 11660.552000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11659.052000 84.095000 11650.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 11659.052000 89.468000 11650.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 11659.052000 94.121000 11650.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 11659.052000 99.899000 11650.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 11659.052000 105.218000 11650.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 11659.052000 109.502000 11650.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 11659.052000 115.649000 11650.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 11659.052000 122.327000 11650.052000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 11659.052000 127.718000 11650.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 11659.052000 132.002000 11650.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 11659.052000 138.149000 11650.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 11659.052000 145.205000 11650.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 11659.052000 150.992000 11650.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 11659.052000 156.311000 11650.052000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 11659.052000 159.253000 11650.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11648.552000 82.394000 11639.552000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 11648.552000 86.705000 11639.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 11648.552000 91.322000 11639.552000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 11648.552000 94.913000 11639.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 11648.552000 98.054000 11639.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 11648.552000 102.014000 11639.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 11648.552000 104.876000 11639.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 11648.552000 113.435000 11639.552000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 11648.552000 118.718000 11639.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 11648.552000 121.949000 11639.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 11648.552000 125.063000 11639.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 11648.552000 130.886000 11639.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 11648.552000 134.045000 11639.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 11648.552000 138.005000 11639.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 11648.552000 143.792000 11639.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 11648.552000 149.111000 11639.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 11648.552000 151.964000 11639.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 11648.552000 156.293000 11639.552000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 11648.552000 159.153000 11639.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11638.052000 79.271000 11629.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 11638.052000 82.169000 11629.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 11638.052000 85.526000 11629.052000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 11638.052000 90.818000 11629.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 11638.052000 94.454000 11629.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 11638.052000 99.008000 11629.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 11638.052000 104.318000 11629.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 11638.052000 110.096000 11629.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 11638.052000 115.856000 11629.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 11638.052000 119.546000 11629.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 11638.052000 124.001000 11629.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 11638.052000 129.509000 11629.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 11638.052000 133.145000 11629.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 11638.052000 139.751000 11629.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 11638.052000 145.205000 11629.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 11638.052000 148.841000 11629.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 11638.052000 152.657000 11629.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 11638.052000 156.293000 11629.052000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 11638.052000 159.253000 11629.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11627.552000 84.095000 11618.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 11627.552000 88.406000 11618.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 11627.552000 93.824000 11618.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 11627.552000 99.602000 11618.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 11627.552000 105.362000 11618.552000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 11627.552000 108.422000 11618.552000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 11627.552000 116.747000 11618.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 11627.552000 129.275000 11618.552000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 11627.552000 135.089000 11618.552000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 11627.552000 138.698000 11618.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 11627.552000 141.560000 11618.552000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 11627.552000 146.906000 11618.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 11627.552000 151.190000 11618.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 11627.552000 156.266000 11618.552000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 11627.552000 159.253000 11618.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11617.052000 82.196000 11608.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 11617.052000 87.560000 11608.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 11617.052000 92.213000 11608.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 11617.052000 96.551000 11608.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 11617.052000 101.708000 11608.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 11617.052000 107.216000 11608.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 11617.052000 111.653000 11608.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 11617.052000 118.961000 11608.052000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 11617.052000 124.316000 11608.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 11617.052000 128.654000 11608.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 11617.052000 133.172000 11608.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 11617.052000 138.995000 11608.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 11617.052000 143.612000 11608.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 11617.052000 148.913000 11608.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 11617.052000 153.197000 11608.052000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 11617.052000 156.333000 11608.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11606.552000 80.009000 11597.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 11606.552000 85.319000 11597.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 11606.552000 91.061000 11597.552000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 11606.552000 100.052000 11597.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 11606.552000 113.993000 11597.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 11606.552000 116.873000 11597.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 11606.552000 120.410000 11597.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 11606.552000 126.296000 11597.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 11606.552000 135.350000 11597.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 11606.552000 145.106000 11597.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 11606.552000 150.893000 11597.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 11606.552000 156.212000 11597.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 11606.552000 159.253000 11597.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11596.052000 82.196000 11587.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 11596.052000 87.560000 11587.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 11596.052000 93.392000 11587.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 11596.052000 99.152000 11587.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 11596.052000 101.960000 11587.052000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 11596.052000 107.306000 11587.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 11596.052000 111.905000 11587.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 11596.052000 115.640000 11587.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 11596.052000 122.444000 11587.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 11596.052000 127.898000 11587.052000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 11596.052000 135.575000 11587.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 11596.052000 141.380000 11587.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 11596.052000 145.241000 11587.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 11596.052000 150.803000 11587.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 11596.052000 156.302000 11587.052000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 11596.052000 159.253000 11587.052000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11585.552000 80.009000 11576.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 11585.552000 85.796000 11576.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 11585.552000 91.115000 11576.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 11585.552000 95.399000 11576.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 11585.552000 100.718000 11576.552000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 11585.552000 107.054000 11576.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 11585.552000 118.097000 11576.552000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 11585.552000 123.524000 11576.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 11585.552000 129.401000 11576.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 11585.552000 131.768000 11576.552000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 11585.552000 135.413000 11576.552000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 11585.552000 141.659000 11576.552000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 11585.552000 150.965000 11576.552000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 11585.552000 156.320000 11576.552000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 11585.552000 159.253000 11576.552000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11575.052000 81.017000 11566.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 11575.052000 84.608000 11566.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 11575.052000 89.963000 11566.052000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 11575.052000 92.870000 11566.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 11575.052000 98.693000 11566.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 11575.052000 103.310000 11566.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 11575.052000 107.243000 11566.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 11575.052000 116.081000 11566.052000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 11575.052000 121.886000 11566.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 11575.052000 127.205000 11566.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 11575.052000 132.983000 11566.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 11575.052000 136.943000 11566.052000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 11575.052000 143.846000 11566.052000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 11575.052000 148.184000 11566.052000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 11575.052000 153.260000 11566.052000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 11575.052000 156.433000 11566.052000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 11564.552000 79.271000 11555.552000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 11564.552000 85.094000 11555.552000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 11564.552000 90.854000 11555.552000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 11564.552000 93.653000 11555.552000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 11549.700000 0 72.100000 11549.700000 0 72.100000 11710.900000 0 72.000000 11710.900000 0 72.000000 11549.700000 0
+eoFillPath subpath 1 160.500000 11549.700000 0 160.600000 11549.700000 0 160.600000 11710.900000 0 160.500000 11710.900000 0 160.500000 11549.700000 0
+eoFillPath subpath 1 72.000000 11710.800000 0 160.600000 11710.800000 0 160.600000 11710.900000 0 72.000000 11710.900000 0 72.000000 11710.800000 0
+eoFillPath subpath 1 72.000000 11549.700000 0 160.600000 11549.700000 0 160.600000 11549.800000 0 72.000000 11549.800000 0 72.000000 11549.700000 0
+saveState
+eoClipPath subpath 1 108.000000 11062.300000 0 178.900000 11062.300000 0 178.900000 11119.000000 0 108.000000 11119.000000 0 108.000000 11062.300000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -1027040.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 7004.000000 0 165.500000 7004.000000 0 165.500000 7009.000000 0 76.900000 7009.000000 0 76.900000 7004.000000 0
+eoFillPath subpath 1 160.500000 7008.900000 0 165.500000 7008.900000 0 165.500000 7117.700000 0 160.500000 7117.700000 0 160.500000 7008.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 7009.000000 0 160.500000 7009.000000 0 160.500000 7122.600000 0 72.000000 7122.600000 0 72.000000 7009.000000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7118.252000 83.771000 7109.252000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 7118.252000 89.594000 7109.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 7118.252000 92.465000 7109.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 7118.252000 97.568000 7109.252000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 7118.252000 100.943000 7109.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 7118.252000 106.955000 7109.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 7118.252000 110.447000 7109.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 7118.252000 114.425000 7109.252000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 7118.252000 119.717000 7109.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 7118.252000 127.493000 7109.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 7118.252000 130.949000 7109.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 7118.252000 136.574000 7109.252000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 7118.252000 141.920000 7109.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 7118.252000 147.365000 7109.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 7118.252000 151.703000 7109.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 7118.252000 156.320000 7109.252000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 7118.252000 159.153000 7109.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7107.752000 81.764000 7098.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 7107.752000 85.130000 7098.752000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 7107.752000 88.712000 7098.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 7107.752000 94.022000 7098.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 7107.752000 98.306000 7098.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 7107.752000 102.455000 7098.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 7107.752000 106.676000 7098.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 7107.752000 110.312000 7098.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 7107.752000 114.920000 7098.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 7107.752000 119.060000 7098.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 7107.752000 125.450000 7098.752000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 7107.752000 130.832000 7098.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 7107.752000 139.445000 7098.752000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 7107.752000 145.169000 7098.752000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 7107.752000 148.076000 7098.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 7107.752000 153.323000 7098.752000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 7107.752000 156.433000 7098.752000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7097.252000 80.009000 7088.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 7097.252000 82.871000 7088.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 7097.252000 88.316000 7088.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 7097.252000 94.094000 7088.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 7097.252000 96.947000 7088.252000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 7097.252000 104.948000 7088.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 7097.252000 113.705000 7088.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 7097.252000 119.492000 7088.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 7097.252000 124.811000 7088.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 7097.252000 132.848000 7088.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 7097.252000 141.605000 7088.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 7097.252000 144.467000 7088.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 7097.252000 148.103000 7088.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 7097.252000 150.965000 7088.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 7097.252000 156.311000 7088.252000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7097.252000 159.253000 7088.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7086.752000 80.999000 7077.752000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 7086.752000 90.539000 7077.752000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 7086.752000 95.318000 7077.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 7086.752000 99.602000 7077.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 7086.752000 102.473000 7077.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 7086.752000 108.260000 7077.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 7086.752000 110.762000 7077.752000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 7086.752000 115.316000 7077.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 7086.752000 122.156000 7077.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 7086.752000 132.299000 7077.752000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 7086.752000 136.970000 7077.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 7086.752000 139.877000 7077.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 7086.752000 142.775000 7077.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 7086.752000 148.022000 7077.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 7086.752000 152.720000 7077.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 7086.752000 156.311000 7077.752000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7086.752000 159.253000 7077.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7076.252000 83.006000 7067.252000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 7076.252000 88.793000 7067.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 7076.252000 91.664000 7067.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 7076.252000 94.562000 7067.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 7076.252000 100.349000 7067.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 7076.252000 103.157000 7067.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 7076.252000 108.980000 7067.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 7076.252000 114.740000 7067.252000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 7076.252000 119.375000 7067.252000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 7076.252000 128.033000 7067.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 7076.252000 141.479000 7067.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 7076.252000 146.807000 7067.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 7076.252000 152.684000 7067.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 7076.252000 156.293000 7067.252000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7076.252000 159.253000 7067.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7065.752000 79.730000 7056.752000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 7065.752000 84.005000 7056.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 7065.752000 89.423000 7056.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 7065.752000 98.036000 7056.752000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 7065.752000 121.157000 7056.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 7065.752000 145.115000 7056.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 7065.752000 151.001000 7056.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 7065.752000 156.320000 7056.752000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7065.752000 159.253000 7056.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7055.252000 83.285000 7046.252000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 7055.252000 89.099000 7046.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 7055.252000 93.401000 7046.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 7055.252000 98.477000 7046.252000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 7055.252000 103.121000 7046.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 7055.252000 105.974000 7046.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 7055.252000 111.320000 7046.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 7055.252000 115.604000 7046.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 7055.252000 123.857000 7046.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 7055.252000 136.007000 7046.252000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 7055.252000 141.794000 7046.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 7055.252000 144.665000 7046.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 7055.252000 147.464000 7046.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 7055.252000 153.251000 7046.252000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 7055.252000 156.433000 7046.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7044.752000 79.271000 7035.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 7044.752000 85.094000 7035.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 7044.752000 90.854000 7035.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 7044.752000 96.146000 7035.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 7044.752000 102.302000 7035.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 7044.752000 107.711000 7035.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 7044.752000 113.048000 7035.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 7044.752000 119.204000 7035.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 7044.752000 124.991000 7035.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 7044.752000 130.310000 7035.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 7044.752000 135.647000 7035.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 7044.752000 144.755000 7035.752000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 7044.752000 153.323000 7035.752000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 7044.752000 156.333000 7035.752000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7034.252000 82.160000 7025.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 7034.252000 85.067000 7025.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 7034.252000 89.297000 7025.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 7034.252000 94.616000 7025.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 7034.252000 98.747000 7025.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 7034.252000 106.055000 7025.252000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 7034.252000 109.700000 7025.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 7034.252000 115.055000 7025.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 7034.252000 118.601000 7025.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 7034.252000 124.010000 7025.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 7034.252000 128.042000 7025.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 7034.252000 135.998000 7025.252000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 7034.252000 141.785000 7025.252000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 7034.252000 144.656000 7025.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 7034.252000 147.554000 7025.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 7034.252000 153.341000 7025.252000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 7034.252000 156.433000 7025.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7023.752000 79.271000 7014.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 7023.752000 85.094000 7014.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 7023.752000 90.854000 7014.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 7023.752000 93.743000 7014.752000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 7008.900000 0 72.100000 7008.900000 0 72.100000 7122.600000 0 72.000000 7122.600000 0 72.000000 7008.900000 0
+eoFillPath subpath 1 160.500000 7008.900000 0 160.600000 7008.900000 0 160.600000 7122.600000 0 160.500000 7122.600000 0 160.500000 7008.900000 0
+eoFillPath subpath 1 72.000000 7122.500000 0 160.600000 7122.500000 0 160.600000 7122.600000 0 72.000000 7122.600000 0 72.000000 7122.500000 0
+eoFillPath subpath 1 72.000000 7008.900000 0 160.600000 7008.900000 0 160.600000 7009.000000 0 72.000000 7009.000000 0 72.000000 7008.900000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 13198.400000 0 169.600000 13198.400000 0 169.600000 13203.400000 0 76.900000 13203.400000 0 76.900000 13198.400000 0
+eoFillPath subpath 1 164.600000 13203.300000 0 169.600000 13203.300000 0 169.600000 13318.900000 0 164.600000 13318.900000 0 164.600000 13203.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 13203.400000 0 121.400000 13203.400000 0 121.400000 13323.800000 0 72.000000 13323.800000 0 72.000000 13203.400000 0
+saveState
+eoClipPath subpath 1 72.000000 13203.300000 0 164.600000 13203.300000 0 164.600000 13323.700000 0 72.000000 13323.700000 0 72.000000 13203.300000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -1235310.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 13273.300000 0 93.700000 13273.300000 0 93.700000 13292.500000 0 72.000000 13292.500000 0 72.000000 13273.300000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 13273.300000 0 169.600000 13273.300000 0 169.600000 13292.500000 0 93.700000 13292.500000 0 93.700000 13273.300000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 13256.600000 0 93.700000 13256.600000 0 93.700000 13273.300000 0 72.000000 13273.300000 0 72.000000 13256.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 13256.600000 0 169.600000 13256.600000 0 169.600000 13273.300000 0 93.700000 13273.300000 0 93.700000 13256.600000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 13237.400000 0 93.700000 13237.400000 0 93.700000 13256.600000 0 72.000000 13256.600000 0 72.000000 13237.400000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 13237.400000 0 169.600000 13237.400000 0 169.600000 13256.600000 0 93.700000 13256.600000 0 93.700000 13237.400000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 13218.200000 0 93.700000 13218.200000 0 93.700000 13237.400000 0 72.000000 13237.400000 0 72.000000 13218.200000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 13218.200000 0 169.600000 13218.200000 0 169.600000 13237.400000 0 93.700000 13237.400000 0 93.700000 13218.200000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 13319.452000 82.898000 13310.452000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 13319.452000 87.200000 13310.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 13319.452000 90.809000 13310.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 13319.452000 93.671000 13310.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 13319.452000 98.315000 13310.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 13319.452000 101.906000 13310.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 13319.452000 106.514000 13310.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 13319.452000 109.754000 13310.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 13319.452000 112.868000 13310.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 13319.452000 118.691000 13310.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 13319.452000 121.850000 13310.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 13319.452000 125.702000 13310.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 13319.452000 131.588000 13310.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 13319.452000 136.907000 13310.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 13319.452000 140.039000 13310.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 13319.452000 146.078000 13310.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 13319.452000 151.442000 13310.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 13319.452000 154.349000 13310.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 13319.452000 157.148000 13310.452000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 13319.452000 160.433000 13310.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 13308.952000 84.095000 13299.952000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 13308.952000 89.468000 13299.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 13308.952000 94.580000 13299.952000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 13308.952000 97.631000 13299.952000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 13288.552000 104.443000 13279.552000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 13288.552000 109.060000 13279.552000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 13288.552000 113.398000 13279.552000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 13288.552000 119.194000 13279.552000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 13288.552000 124.612000 13279.552000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 13288.552000 127.465000 13279.552000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 13271.852000 101.176000 13262.852000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 13271.852000 104.074000 13262.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 13271.852000 109.420000 13262.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 13271.852000 114.442000 13262.852000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 13271.852000 120.202000 13262.852000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 13271.852000 123.811000 13262.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 13271.852000 129.121000 13262.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 13271.852000 134.899000 13262.852000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 13271.852000 139.516000 13262.852000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 13271.852000 143.107000 13262.852000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 13271.852000 148.417000 13262.852000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 13271.852000 151.270000 13262.852000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 13271.852000 157.093000 13262.852000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 13255.152000 103.048000 13246.152000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 13255.152000 108.421000 13246.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 13255.152000 113.443000 13246.152000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 13255.152000 118.852000 13246.152000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 13255.152000 124.702000 13246.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 13255.152000 130.021000 13246.152000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 13255.152000 135.079000 13246.152000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 13235.952000 104.407000 13226.952000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 13235.952000 109.816000 13226.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 13235.952000 115.594000 13226.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 13235.952000 121.354000 13226.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 13235.952000 125.692000 13226.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 13235.952000 128.563000 13226.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 13235.952000 133.954000 13226.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 13235.952000 139.786000 13226.952000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 13203.300000 0 72.100000 13203.300000 0 72.100000 13323.800000 0 72.000000 13323.800000 0 72.000000 13203.300000 0
+eoFillPath subpath 1 164.600000 13203.300000 0 164.700000 13203.300000 0 164.700000 13323.800000 0 164.600000 13323.800000 0 164.600000 13203.300000 0
+eoFillPath subpath 1 72.000000 13323.700000 0 164.700000 13323.700000 0 164.700000 13323.800000 0 72.000000 13323.800000 0 72.000000 13323.700000 0
+eoFillPath subpath 1 72.000000 13203.300000 0 164.700000 13203.300000 0 164.700000 13203.400000 0 72.000000 13203.400000 0 72.000000 13203.300000 0
+eoFillPath subpath 1 91.300000 13218.200000 0 93.700000 13218.200000 0 93.700000 13292.500000 0 91.300000 13292.500000 0 91.300000 13218.200000 0
+eoFillPath subpath 1 72.000000 13237.400000 0 169.600000 13237.400000 0 169.600000 13239.800000 0 72.000000 13239.800000 0 72.000000 13237.400000 0
+eoFillPath subpath 1 72.000000 13290.100000 0 169.600000 13290.100000 0 169.600000 13292.500000 0 72.000000 13292.500000 0 72.000000 13290.100000 0
+eoFillPath subpath 1 72.000000 13218.200000 0 169.600000 13218.200000 0 169.600000 13220.600000 0 72.000000 13220.600000 0 72.000000 13218.200000 0
+saveState
+eoClipPath subpath 1 108.000000 5352.200000 0 150.800000 5352.200000 0 150.800000 5396.500000 0 108.000000 5396.500000 0 108.000000 5352.200000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 -456030.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 4502.300000 0 499.600000 4502.300000 0 499.600000 4507.400000 0 186.800000 4507.400000 0 186.800000 4502.300000 0
+eoFillPath subpath 1 494.500000 4507.300000 0 499.600000 4507.300000 0 499.600000 4695.700000 0 494.500000 4695.700000 0 494.500000 4507.300000 0
+saveState
+eoClipPath subpath 1 181.800000 4507.300000 0 494.500000 4507.300000 0 494.500000 4700.600000 0 181.800000 4700.600000 0 181.800000 4507.300000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 4700.700000 0 494.500000 4700.700000 0 494.500000 4700.700000 0 181.700000 4700.700000 0
+eoFillPath subpath 1 181.700000 4700.700000 0 494.500000 4700.700000 0 494.500000 4699.900000 0 181.700000 4699.900000 0 181.700000 4700.700000 0
+eoFillPath subpath 1 181.700000 4699.900000 0 494.500000 4699.900000 0 494.500000 4699.200000 0 181.700000 4699.200000 0 181.700000 4699.900000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 4699.200000 0 494.500000 4699.200000 0 494.500000 4698.400000 0 181.700000 4698.400000 0 181.700000 4699.200000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 4698.400000 0 494.500000 4698.400000 0 494.500000 4697.600000 0 181.700000 4697.600000 0 181.700000 4698.400000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 4697.600000 0 494.500000 4697.600000 0 494.500000 4696.900000 0 181.700000 4696.900000 0 181.700000 4697.600000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 4696.900000 0 494.500000 4696.900000 0 494.500000 4696.100000 0 181.700000 4696.100000 0 181.700000 4696.900000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 4696.100000 0 494.500000 4696.100000 0 494.500000 4695.400000 0 181.700000 4695.400000 0 181.700000 4696.100000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 4695.400000 0 494.500000 4695.400000 0 494.500000 4694.600000 0 181.700000 4694.600000 0 181.700000 4695.400000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 4694.600000 0 494.500000 4694.600000 0 494.500000 4693.900000 0 181.700000 4693.900000 0 181.700000 4694.600000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 4693.900000 0 494.500000 4693.900000 0 494.500000 4693.100000 0 181.700000 4693.100000 0 181.700000 4693.900000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 4693.100000 0 494.500000 4693.100000 0 494.500000 4692.300000 0 181.700000 4692.300000 0 181.700000 4693.100000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 4692.300000 0 494.500000 4692.300000 0 494.500000 4691.600000 0 181.700000 4691.600000 0 181.700000 4692.300000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 4691.600000 0 494.500000 4691.600000 0 494.500000 4690.800000 0 181.700000 4690.800000 0 181.700000 4691.600000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 4690.800000 0 494.500000 4690.800000 0 494.500000 4690.100000 0 181.700000 4690.100000 0 181.700000 4690.800000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 4690.100000 0 494.500000 4690.100000 0 494.500000 4689.300000 0 181.700000 4689.300000 0 181.700000 4690.100000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 4689.300000 0 494.500000 4689.300000 0 494.500000 4688.500000 0 181.700000 4688.500000 0 181.700000 4689.300000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 4688.500000 0 494.500000 4688.500000 0 494.500000 4687.800000 0 181.700000 4687.800000 0 181.700000 4688.500000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 4687.800000 0 494.500000 4687.800000 0 494.500000 4687.000000 0 181.700000 4687.000000 0 181.700000 4687.800000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 4687.000000 0 494.500000 4687.000000 0 494.500000 4686.300000 0 181.700000 4686.300000 0 181.700000 4687.000000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 4686.300000 0 494.500000 4686.300000 0 494.500000 4685.500000 0 181.700000 4685.500000 0 181.700000 4686.300000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 4685.500000 0 494.500000 4685.500000 0 494.500000 4684.700000 0 181.700000 4684.700000 0 181.700000 4685.500000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 4684.700000 0 494.500000 4684.700000 0 494.500000 4684.000000 0 181.700000 4684.000000 0 181.700000 4684.700000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 4684.000000 0 494.500000 4684.000000 0 494.500000 4683.200000 0 181.700000 4683.200000 0 181.700000 4684.000000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 4683.200000 0 494.500000 4683.200000 0 494.500000 4682.500000 0 181.700000 4682.500000 0 181.700000 4683.200000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 4682.500000 0 494.500000 4682.500000 0 494.500000 4681.700000 0 181.700000 4681.700000 0 181.700000 4682.500000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 4681.700000 0 494.500000 4681.700000 0 494.500000 4681.000000 0 181.700000 4681.000000 0 181.700000 4681.700000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 4681.000000 0 494.500000 4681.000000 0 494.500000 4680.200000 0 181.700000 4680.200000 0 181.700000 4681.000000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 4680.200000 0 494.500000 4680.200000 0 494.500000 4679.400000 0 181.700000 4679.400000 0 181.700000 4680.200000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 4679.400000 0 494.500000 4679.400000 0 494.500000 4678.700000 0 181.700000 4678.700000 0 181.700000 4679.400000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 4678.700000 0 494.500000 4678.700000 0 494.500000 4677.900000 0 181.700000 4677.900000 0 181.700000 4678.700000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 4677.900000 0 494.500000 4677.900000 0 494.500000 4677.200000 0 181.700000 4677.200000 0 181.700000 4677.900000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 4677.200000 0 494.500000 4677.200000 0 494.500000 4676.400000 0 181.700000 4676.400000 0 181.700000 4677.200000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 4676.400000 0 494.500000 4676.400000 0 494.500000 4675.600000 0 181.700000 4675.600000 0 181.700000 4676.400000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 4675.600000 0 494.500000 4675.600000 0 494.500000 4674.900000 0 181.700000 4674.900000 0 181.700000 4675.600000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 4674.900000 0 494.500000 4674.900000 0 494.500000 4674.100000 0 181.700000 4674.100000 0 181.700000 4674.900000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 4674.100000 0 494.500000 4674.100000 0 494.500000 4673.400000 0 181.700000 4673.400000 0 181.700000 4674.100000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 4673.400000 0 494.500000 4673.400000 0 494.500000 4672.600000 0 181.700000 4672.600000 0 181.700000 4673.400000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 4672.600000 0 494.500000 4672.600000 0 494.500000 4671.800000 0 181.700000 4671.800000 0 181.700000 4672.600000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 4671.800000 0 494.500000 4671.800000 0 494.500000 4671.100000 0 181.700000 4671.100000 0 181.700000 4671.800000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 4671.100000 0 494.500000 4671.100000 0 494.500000 4670.300000 0 181.700000 4670.300000 0 181.700000 4671.100000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 4670.300000 0 494.500000 4670.300000 0 494.500000 4669.600000 0 181.700000 4669.600000 0 181.700000 4670.300000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 4669.600000 0 494.500000 4669.600000 0 494.500000 4668.800000 0 181.700000 4668.800000 0 181.700000 4669.600000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 4668.800000 0 494.500000 4668.800000 0 494.500000 4668.100000 0 181.700000 4668.100000 0 181.700000 4668.800000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 4668.100000 0 494.500000 4668.100000 0 494.500000 4667.300000 0 181.700000 4667.300000 0 181.700000 4668.100000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 4667.300000 0 494.500000 4667.300000 0 494.500000 4666.500000 0 181.700000 4666.500000 0 181.700000 4667.300000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 4666.500000 0 494.500000 4666.500000 0 494.500000 4665.800000 0 181.700000 4665.800000 0 181.700000 4666.500000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 4665.800000 0 494.500000 4665.800000 0 494.500000 4665.000000 0 181.700000 4665.000000 0 181.700000 4665.800000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 4665.000000 0 494.500000 4665.000000 0 494.500000 4664.300000 0 181.700000 4664.300000 0 181.700000 4665.000000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 4664.300000 0 494.500000 4664.300000 0 494.500000 4663.500000 0 181.700000 4663.500000 0 181.700000 4664.300000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 4663.500000 0 494.500000 4663.500000 0 494.500000 4662.700000 0 181.700000 4662.700000 0 181.700000 4663.500000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 4662.700000 0 494.500000 4662.700000 0 494.500000 4662.000000 0 181.700000 4662.000000 0 181.700000 4662.700000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 4662.000000 0 494.500000 4662.000000 0 494.500000 4661.200000 0 181.700000 4661.200000 0 181.700000 4662.000000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 4661.200000 0 494.500000 4661.200000 0 494.500000 4660.500000 0 181.700000 4660.500000 0 181.700000 4661.200000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 4660.500000 0 494.500000 4660.500000 0 494.500000 4659.700000 0 181.700000 4659.700000 0 181.700000 4660.500000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 4659.700000 0 494.500000 4659.700000 0 494.500000 4658.900000 0 181.700000 4658.900000 0 181.700000 4659.700000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 4658.900000 0 494.500000 4658.900000 0 494.500000 4658.200000 0 181.700000 4658.200000 0 181.700000 4658.900000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 4658.200000 0 494.500000 4658.200000 0 494.500000 4657.400000 0 181.700000 4657.400000 0 181.700000 4658.200000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 4657.400000 0 494.500000 4657.400000 0 494.500000 4656.700000 0 181.700000 4656.700000 0 181.700000 4657.400000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 4656.700000 0 494.500000 4656.700000 0 494.500000 4655.900000 0 181.700000 4655.900000 0 181.700000 4656.700000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 4655.900000 0 494.500000 4655.900000 0 494.500000 4655.200000 0 181.700000 4655.200000 0 181.700000 4655.900000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 4655.200000 0 494.500000 4655.200000 0 494.500000 4654.400000 0 181.700000 4654.400000 0 181.700000 4655.200000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 4654.400000 0 494.500000 4654.400000 0 494.500000 4653.600000 0 181.700000 4653.600000 0 181.700000 4654.400000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 4653.600000 0 494.500000 4653.600000 0 494.500000 4652.900000 0 181.700000 4652.900000 0 181.700000 4653.600000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 4652.900000 0 494.500000 4652.900000 0 494.500000 4652.100000 0 181.700000 4652.100000 0 181.700000 4652.900000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 4652.100000 0 494.500000 4652.100000 0 494.500000 4651.400000 0 181.700000 4651.400000 0 181.700000 4652.100000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 4651.400000 0 494.500000 4651.400000 0 494.500000 4650.600000 0 181.700000 4650.600000 0 181.700000 4651.400000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 4650.600000 0 494.500000 4650.600000 0 494.500000 4649.800000 0 181.700000 4649.800000 0 181.700000 4650.600000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 4649.800000 0 494.500000 4649.800000 0 494.500000 4649.100000 0 181.700000 4649.100000 0 181.700000 4649.800000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 4649.100000 0 494.500000 4649.100000 0 494.500000 4648.300000 0 181.700000 4648.300000 0 181.700000 4649.100000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 4648.300000 0 494.500000 4648.300000 0 494.500000 4647.600000 0 181.700000 4647.600000 0 181.700000 4648.300000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 4647.600000 0 494.500000 4647.600000 0 494.500000 4646.800000 0 181.700000 4646.800000 0 181.700000 4647.600000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 4646.800000 0 494.500000 4646.800000 0 494.500000 4646.000000 0 181.700000 4646.000000 0 181.700000 4646.800000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 4646.000000 0 494.500000 4646.000000 0 494.500000 4645.300000 0 181.700000 4645.300000 0 181.700000 4646.000000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 4645.300000 0 494.500000 4645.300000 0 494.500000 4644.500000 0 181.700000 4644.500000 0 181.700000 4645.300000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 4644.500000 0 494.500000 4644.500000 0 494.500000 4643.800000 0 181.700000 4643.800000 0 181.700000 4644.500000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 4643.800000 0 494.500000 4643.800000 0 494.500000 4643.000000 0 181.700000 4643.000000 0 181.700000 4643.800000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 4643.000000 0 494.500000 4643.000000 0 494.500000 4642.300000 0 181.700000 4642.300000 0 181.700000 4643.000000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 4642.300000 0 494.500000 4642.300000 0 494.500000 4641.500000 0 181.700000 4641.500000 0 181.700000 4642.300000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 4641.500000 0 494.500000 4641.500000 0 494.500000 4640.700000 0 181.700000 4640.700000 0 181.700000 4641.500000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 4640.700000 0 494.500000 4640.700000 0 494.500000 4640.000000 0 181.700000 4640.000000 0 181.700000 4640.700000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 4640.000000 0 494.500000 4640.000000 0 494.500000 4639.200000 0 181.700000 4639.200000 0 181.700000 4640.000000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 4639.200000 0 494.500000 4639.200000 0 494.500000 4638.500000 0 181.700000 4638.500000 0 181.700000 4639.200000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 4638.500000 0 494.500000 4638.500000 0 494.500000 4637.700000 0 181.700000 4637.700000 0 181.700000 4638.500000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 4637.700000 0 494.500000 4637.700000 0 494.500000 4636.900000 0 181.700000 4636.900000 0 181.700000 4637.700000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 4636.900000 0 494.500000 4636.900000 0 494.500000 4636.200000 0 181.700000 4636.200000 0 181.700000 4636.900000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 4636.200000 0 494.500000 4636.200000 0 494.500000 4635.400000 0 181.700000 4635.400000 0 181.700000 4636.200000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 4635.400000 0 494.500000 4635.400000 0 494.500000 4634.700000 0 181.700000 4634.700000 0 181.700000 4635.400000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 4634.700000 0 494.500000 4634.700000 0 494.500000 4633.900000 0 181.700000 4633.900000 0 181.700000 4634.700000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 4633.900000 0 494.500000 4633.900000 0 494.500000 4633.100000 0 181.700000 4633.100000 0 181.700000 4633.900000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 4633.100000 0 494.500000 4633.100000 0 494.500000 4632.400000 0 181.700000 4632.400000 0 181.700000 4633.100000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 4632.400000 0 494.500000 4632.400000 0 494.500000 4631.600000 0 181.700000 4631.600000 0 181.700000 4632.400000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 4631.600000 0 494.500000 4631.600000 0 494.500000 4630.900000 0 181.700000 4630.900000 0 181.700000 4631.600000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 4630.900000 0 494.500000 4630.900000 0 494.500000 4630.100000 0 181.700000 4630.100000 0 181.700000 4630.900000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 4630.100000 0 494.500000 4630.100000 0 494.500000 4629.400000 0 181.700000 4629.400000 0 181.700000 4630.100000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 4629.400000 0 494.500000 4629.400000 0 494.500000 4628.600000 0 181.700000 4628.600000 0 181.700000 4629.400000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 4628.600000 0 494.500000 4628.600000 0 494.500000 4627.800000 0 181.700000 4627.800000 0 181.700000 4628.600000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 4627.800000 0 494.500000 4627.800000 0 494.500000 4627.100000 0 181.700000 4627.100000 0 181.700000 4627.800000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 4627.100000 0 494.500000 4627.100000 0 494.500000 4626.300000 0 181.700000 4626.300000 0 181.700000 4627.100000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 4626.300000 0 494.500000 4626.300000 0 494.500000 4625.600000 0 181.700000 4625.600000 0 181.700000 4626.300000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 4625.600000 0 494.500000 4625.600000 0 494.500000 4624.800000 0 181.700000 4624.800000 0 181.700000 4625.600000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 4624.800000 0 494.500000 4624.800000 0 494.500000 4624.000000 0 181.700000 4624.000000 0 181.700000 4624.800000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 4624.000000 0 494.500000 4624.000000 0 494.500000 4623.300000 0 181.700000 4623.300000 0 181.700000 4624.000000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 4623.300000 0 494.500000 4623.300000 0 494.500000 4622.500000 0 181.700000 4622.500000 0 181.700000 4623.300000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 4622.500000 0 494.500000 4622.500000 0 494.500000 4621.800000 0 181.700000 4621.800000 0 181.700000 4622.500000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 4621.800000 0 494.500000 4621.800000 0 494.500000 4621.000000 0 181.700000 4621.000000 0 181.700000 4621.800000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 4621.000000 0 494.500000 4621.000000 0 494.500000 4620.200000 0 181.700000 4620.200000 0 181.700000 4621.000000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 4620.200000 0 494.500000 4620.200000 0 494.500000 4619.500000 0 181.700000 4619.500000 0 181.700000 4620.200000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 4619.500000 0 494.500000 4619.500000 0 494.500000 4618.700000 0 181.700000 4618.700000 0 181.700000 4619.500000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 4618.700000 0 494.500000 4618.700000 0 494.500000 4618.000000 0 181.700000 4618.000000 0 181.700000 4618.700000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 4618.000000 0 494.500000 4618.000000 0 494.500000 4617.200000 0 181.700000 4617.200000 0 181.700000 4618.000000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 4617.200000 0 494.500000 4617.200000 0 494.500000 4616.500000 0 181.700000 4616.500000 0 181.700000 4617.200000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 4616.500000 0 494.500000 4616.500000 0 494.500000 4615.700000 0 181.700000 4615.700000 0 181.700000 4616.500000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 4615.700000 0 494.500000 4615.700000 0 494.500000 4614.900000 0 181.700000 4614.900000 0 181.700000 4615.700000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 4614.900000 0 494.500000 4614.900000 0 494.500000 4614.200000 0 181.700000 4614.200000 0 181.700000 4614.900000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 4614.200000 0 494.500000 4614.200000 0 494.500000 4613.400000 0 181.700000 4613.400000 0 181.700000 4614.200000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 4613.400000 0 494.500000 4613.400000 0 494.500000 4612.700000 0 181.700000 4612.700000 0 181.700000 4613.400000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 4612.700000 0 494.500000 4612.700000 0 494.500000 4611.900000 0 181.700000 4611.900000 0 181.700000 4612.700000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 4611.900000 0 494.500000 4611.900000 0 494.500000 4611.100000 0 181.700000 4611.100000 0 181.700000 4611.900000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 4611.100000 0 494.500000 4611.100000 0 494.500000 4610.400000 0 181.700000 4610.400000 0 181.700000 4611.100000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 4610.400000 0 494.500000 4610.400000 0 494.500000 4609.600000 0 181.700000 4609.600000 0 181.700000 4610.400000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 4609.600000 0 494.500000 4609.600000 0 494.500000 4608.900000 0 181.700000 4608.900000 0 181.700000 4609.600000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 4608.900000 0 494.500000 4608.900000 0 494.500000 4608.100000 0 181.700000 4608.100000 0 181.700000 4608.900000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 4608.100000 0 494.500000 4608.100000 0 494.500000 4607.300000 0 181.700000 4607.300000 0 181.700000 4608.100000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 4607.300000 0 494.500000 4607.300000 0 494.500000 4606.600000 0 181.700000 4606.600000 0 181.700000 4607.300000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 4606.600000 0 494.500000 4606.600000 0 494.500000 4605.800000 0 181.700000 4605.800000 0 181.700000 4606.600000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 4605.800000 0 494.500000 4605.800000 0 494.500000 4605.100000 0 181.700000 4605.100000 0 181.700000 4605.800000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 4605.100000 0 494.500000 4605.100000 0 494.500000 4604.300000 0 181.700000 4604.300000 0 181.700000 4605.100000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 4604.300000 0 494.500000 4604.300000 0 494.500000 4603.600000 0 181.700000 4603.600000 0 181.700000 4604.300000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 4603.600000 0 494.500000 4603.600000 0 494.500000 4602.800000 0 181.700000 4602.800000 0 181.700000 4603.600000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 4602.800000 0 494.500000 4602.800000 0 494.500000 4602.000000 0 181.700000 4602.000000 0 181.700000 4602.800000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 4602.000000 0 494.500000 4602.000000 0 494.500000 4601.300000 0 181.700000 4601.300000 0 181.700000 4602.000000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 4601.300000 0 494.500000 4601.300000 0 494.500000 4600.500000 0 181.700000 4600.500000 0 181.700000 4601.300000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 4600.500000 0 494.500000 4600.500000 0 494.500000 4599.800000 0 181.700000 4599.800000 0 181.700000 4600.500000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 4599.800000 0 494.500000 4599.800000 0 494.500000 4599.000000 0 181.700000 4599.000000 0 181.700000 4599.800000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 4599.000000 0 494.500000 4599.000000 0 494.500000 4598.200000 0 181.700000 4598.200000 0 181.700000 4599.000000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 4598.200000 0 494.500000 4598.200000 0 494.500000 4597.500000 0 181.700000 4597.500000 0 181.700000 4598.200000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 4597.500000 0 494.500000 4597.500000 0 494.500000 4596.700000 0 181.700000 4596.700000 0 181.700000 4597.500000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 4596.700000 0 494.500000 4596.700000 0 494.500000 4596.000000 0 181.700000 4596.000000 0 181.700000 4596.700000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 4596.000000 0 494.500000 4596.000000 0 494.500000 4595.200000 0 181.700000 4595.200000 0 181.700000 4596.000000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 4595.200000 0 494.500000 4595.200000 0 494.500000 4594.500000 0 181.700000 4594.500000 0 181.700000 4595.200000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 4594.500000 0 494.500000 4594.500000 0 494.500000 4593.700000 0 181.700000 4593.700000 0 181.700000 4594.500000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 4593.700000 0 494.500000 4593.700000 0 494.500000 4592.900000 0 181.700000 4592.900000 0 181.700000 4593.700000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 4592.900000 0 494.500000 4592.900000 0 494.500000 4592.200000 0 181.700000 4592.200000 0 181.700000 4592.900000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 4592.200000 0 494.500000 4592.200000 0 494.500000 4591.400000 0 181.700000 4591.400000 0 181.700000 4592.200000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 4591.400000 0 494.500000 4591.400000 0 494.500000 4590.700000 0 181.700000 4590.700000 0 181.700000 4591.400000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 4590.700000 0 494.500000 4590.700000 0 494.500000 4589.900000 0 181.700000 4589.900000 0 181.700000 4590.700000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 4589.900000 0 494.500000 4589.900000 0 494.500000 4589.100000 0 181.700000 4589.100000 0 181.700000 4589.900000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 4589.100000 0 494.500000 4589.100000 0 494.500000 4588.400000 0 181.700000 4588.400000 0 181.700000 4589.100000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 4588.400000 0 494.500000 4588.400000 0 494.500000 4587.600000 0 181.700000 4587.600000 0 181.700000 4588.400000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 4587.600000 0 494.500000 4587.600000 0 494.500000 4586.900000 0 181.700000 4586.900000 0 181.700000 4587.600000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 4586.900000 0 494.500000 4586.900000 0 494.500000 4586.100000 0 181.700000 4586.100000 0 181.700000 4586.900000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 4586.100000 0 494.500000 4586.100000 0 494.500000 4585.400000 0 181.700000 4585.400000 0 181.700000 4586.100000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 4585.400000 0 494.500000 4585.400000 0 494.500000 4584.600000 0 181.700000 4584.600000 0 181.700000 4585.400000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 4584.600000 0 494.500000 4584.600000 0 494.500000 4583.800000 0 181.700000 4583.800000 0 181.700000 4584.600000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 4583.800000 0 494.500000 4583.800000 0 494.500000 4583.100000 0 181.700000 4583.100000 0 181.700000 4583.800000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 4583.100000 0 494.500000 4583.100000 0 494.500000 4582.300000 0 181.700000 4582.300000 0 181.700000 4583.100000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 4582.300000 0 494.500000 4582.300000 0 494.500000 4581.600000 0 181.700000 4581.600000 0 181.700000 4582.300000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 4581.600000 0 494.500000 4581.600000 0 494.500000 4580.800000 0 181.700000 4580.800000 0 181.700000 4581.600000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 4580.800000 0 494.500000 4580.800000 0 494.500000 4580.100000 0 181.700000 4580.100000 0 181.700000 4580.800000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 4580.100000 0 494.500000 4580.100000 0 494.500000 4579.300000 0 181.700000 4579.300000 0 181.700000 4580.100000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 4579.300000 0 494.500000 4579.300000 0 494.500000 4578.500000 0 181.700000 4578.500000 0 181.700000 4579.300000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 4578.500000 0 494.500000 4578.500000 0 494.500000 4577.800000 0 181.700000 4577.800000 0 181.700000 4578.500000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 4577.800000 0 494.500000 4577.800000 0 494.500000 4577.000000 0 181.700000 4577.000000 0 181.700000 4577.800000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 4577.000000 0 494.500000 4577.000000 0 494.500000 4576.300000 0 181.700000 4576.300000 0 181.700000 4577.000000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 4576.300000 0 494.500000 4576.300000 0 494.500000 4575.500000 0 181.700000 4575.500000 0 181.700000 4576.300000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 4575.500000 0 494.500000 4575.500000 0 494.500000 4574.700000 0 181.700000 4574.700000 0 181.700000 4575.500000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 4574.700000 0 494.500000 4574.700000 0 494.500000 4574.000000 0 181.700000 4574.000000 0 181.700000 4574.700000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 4574.000000 0 494.500000 4574.000000 0 494.500000 4573.200000 0 181.700000 4573.200000 0 181.700000 4574.000000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 4573.200000 0 494.500000 4573.200000 0 494.500000 4572.500000 0 181.700000 4572.500000 0 181.700000 4573.200000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 4572.500000 0 494.500000 4572.500000 0 494.500000 4571.700000 0 181.700000 4571.700000 0 181.700000 4572.500000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 4571.700000 0 494.500000 4571.700000 0 494.500000 4571.000000 0 181.700000 4571.000000 0 181.700000 4571.700000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 4571.000000 0 494.500000 4571.000000 0 494.500000 4570.200000 0 181.700000 4570.200000 0 181.700000 4571.000000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 4570.200000 0 494.500000 4570.200000 0 494.500000 4569.400000 0 181.700000 4569.400000 0 181.700000 4570.200000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 4569.400000 0 494.500000 4569.400000 0 494.500000 4568.700000 0 181.700000 4568.700000 0 181.700000 4569.400000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 4568.700000 0 494.500000 4568.700000 0 494.500000 4567.900000 0 181.700000 4567.900000 0 181.700000 4568.700000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 4567.900000 0 494.500000 4567.900000 0 494.500000 4567.200000 0 181.700000 4567.200000 0 181.700000 4567.900000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 4567.200000 0 494.500000 4567.200000 0 494.500000 4566.400000 0 181.700000 4566.400000 0 181.700000 4567.200000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 4566.400000 0 494.500000 4566.400000 0 494.500000 4565.600000 0 181.700000 4565.600000 0 181.700000 4566.400000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 4565.600000 0 494.500000 4565.600000 0 494.500000 4564.900000 0 181.700000 4564.900000 0 181.700000 4565.600000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 4564.900000 0 494.500000 4564.900000 0 494.500000 4564.100000 0 181.700000 4564.100000 0 181.700000 4564.900000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 4564.100000 0 494.500000 4564.100000 0 494.500000 4563.400000 0 181.700000 4563.400000 0 181.700000 4564.100000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 4563.400000 0 494.500000 4563.400000 0 494.500000 4562.600000 0 181.700000 4562.600000 0 181.700000 4563.400000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 4562.600000 0 494.500000 4562.600000 0 494.500000 4561.900000 0 181.700000 4561.900000 0 181.700000 4562.600000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 4561.900000 0 494.500000 4561.900000 0 494.500000 4561.100000 0 181.700000 4561.100000 0 181.700000 4561.900000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 4561.100000 0 494.500000 4561.100000 0 494.500000 4560.300000 0 181.700000 4560.300000 0 181.700000 4561.100000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 4560.300000 0 494.500000 4560.300000 0 494.500000 4559.600000 0 181.700000 4559.600000 0 181.700000 4560.300000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 4559.600000 0 494.500000 4559.600000 0 494.500000 4558.800000 0 181.700000 4558.800000 0 181.700000 4559.600000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 4558.800000 0 494.500000 4558.800000 0 494.500000 4558.100000 0 181.700000 4558.100000 0 181.700000 4558.800000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 4558.100000 0 494.500000 4558.100000 0 494.500000 4557.300000 0 181.700000 4557.300000 0 181.700000 4558.100000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 4557.300000 0 494.500000 4557.300000 0 494.500000 4556.500000 0 181.700000 4556.500000 0 181.700000 4557.300000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 4556.500000 0 494.500000 4556.500000 0 494.500000 4555.800000 0 181.700000 4555.800000 0 181.700000 4556.500000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 4555.800000 0 494.500000 4555.800000 0 494.500000 4555.000000 0 181.700000 4555.000000 0 181.700000 4555.800000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 4555.000000 0 494.500000 4555.000000 0 494.500000 4554.300000 0 181.700000 4554.300000 0 181.700000 4555.000000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 4554.300000 0 494.500000 4554.300000 0 494.500000 4553.500000 0 181.700000 4553.500000 0 181.700000 4554.300000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 4553.500000 0 494.500000 4553.500000 0 494.500000 4552.700000 0 181.700000 4552.700000 0 181.700000 4553.500000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 4552.700000 0 494.500000 4552.700000 0 494.500000 4552.000000 0 181.700000 4552.000000 0 181.700000 4552.700000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 4552.000000 0 494.500000 4552.000000 0 494.500000 4551.200000 0 181.700000 4551.200000 0 181.700000 4552.000000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 4551.200000 0 494.500000 4551.200000 0 494.500000 4550.500000 0 181.700000 4550.500000 0 181.700000 4551.200000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 4550.500000 0 494.500000 4550.500000 0 494.500000 4549.700000 0 181.700000 4549.700000 0 181.700000 4550.500000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 4549.700000 0 494.500000 4549.700000 0 494.500000 4549.000000 0 181.700000 4549.000000 0 181.700000 4549.700000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 4549.000000 0 494.500000 4549.000000 0 494.500000 4548.200000 0 181.700000 4548.200000 0 181.700000 4549.000000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 4548.200000 0 494.500000 4548.200000 0 494.500000 4547.400000 0 181.700000 4547.400000 0 181.700000 4548.200000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 4547.400000 0 494.500000 4547.400000 0 494.500000 4546.700000 0 181.700000 4546.700000 0 181.700000 4547.400000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 4546.700000 0 494.500000 4546.700000 0 494.500000 4545.900000 0 181.700000 4545.900000 0 181.700000 4546.700000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 4545.900000 0 494.500000 4545.900000 0 494.500000 4545.200000 0 181.700000 4545.200000 0 181.700000 4545.900000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 4545.200000 0 494.500000 4545.200000 0 494.500000 4544.400000 0 181.700000 4544.400000 0 181.700000 4545.200000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 4544.400000 0 494.500000 4544.400000 0 494.500000 4543.600000 0 181.700000 4543.600000 0 181.700000 4544.400000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 4543.600000 0 494.500000 4543.600000 0 494.500000 4542.900000 0 181.700000 4542.900000 0 181.700000 4543.600000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 4542.900000 0 494.500000 4542.900000 0 494.500000 4542.100000 0 181.700000 4542.100000 0 181.700000 4542.900000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 4542.100000 0 494.500000 4542.100000 0 494.500000 4541.400000 0 181.700000 4541.400000 0 181.700000 4542.100000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 4541.400000 0 494.500000 4541.400000 0 494.500000 4540.600000 0 181.700000 4540.600000 0 181.700000 4541.400000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 4540.600000 0 494.500000 4540.600000 0 494.500000 4539.800000 0 181.700000 4539.800000 0 181.700000 4540.600000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 4539.800000 0 494.500000 4539.800000 0 494.500000 4539.100000 0 181.700000 4539.100000 0 181.700000 4539.800000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 4539.100000 0 494.500000 4539.100000 0 494.500000 4538.300000 0 181.700000 4538.300000 0 181.700000 4539.100000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 4538.300000 0 494.500000 4538.300000 0 494.500000 4537.600000 0 181.700000 4537.600000 0 181.700000 4538.300000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 4537.600000 0 494.500000 4537.600000 0 494.500000 4536.800000 0 181.700000 4536.800000 0 181.700000 4537.600000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 4536.800000 0 494.500000 4536.800000 0 494.500000 4536.100000 0 181.700000 4536.100000 0 181.700000 4536.800000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 4536.100000 0 494.500000 4536.100000 0 494.500000 4535.300000 0 181.700000 4535.300000 0 181.700000 4536.100000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 4535.300000 0 494.500000 4535.300000 0 494.500000 4534.500000 0 181.700000 4534.500000 0 181.700000 4535.300000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 4534.500000 0 494.500000 4534.500000 0 494.500000 4533.800000 0 181.700000 4533.800000 0 181.700000 4534.500000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 4533.800000 0 494.500000 4533.800000 0 494.500000 4533.000000 0 181.700000 4533.000000 0 181.700000 4533.800000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 4533.000000 0 494.500000 4533.000000 0 494.500000 4532.300000 0 181.700000 4532.300000 0 181.700000 4533.000000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 4532.300000 0 494.500000 4532.300000 0 494.500000 4531.500000 0 181.700000 4531.500000 0 181.700000 4532.300000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 4531.500000 0 494.500000 4531.500000 0 494.500000 4530.700000 0 181.700000 4530.700000 0 181.700000 4531.500000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 4530.700000 0 494.500000 4530.700000 0 494.500000 4530.000000 0 181.700000 4530.000000 0 181.700000 4530.700000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 4530.000000 0 494.500000 4530.000000 0 494.500000 4529.200000 0 181.700000 4529.200000 0 181.700000 4530.000000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 4529.200000 0 494.500000 4529.200000 0 494.500000 4528.500000 0 181.700000 4528.500000 0 181.700000 4529.200000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 4528.500000 0 494.500000 4528.500000 0 494.500000 4527.700000 0 181.700000 4527.700000 0 181.700000 4528.500000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 4527.700000 0 494.500000 4527.700000 0 494.500000 4526.900000 0 181.700000 4526.900000 0 181.700000 4527.700000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 4526.900000 0 494.500000 4526.900000 0 494.500000 4526.200000 0 181.700000 4526.200000 0 181.700000 4526.900000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 4526.200000 0 494.500000 4526.200000 0 494.500000 4525.400000 0 181.700000 4525.400000 0 181.700000 4526.200000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 4525.400000 0 494.500000 4525.400000 0 494.500000 4524.700000 0 181.700000 4524.700000 0 181.700000 4525.400000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 4524.700000 0 494.500000 4524.700000 0 494.500000 4523.900000 0 181.700000 4523.900000 0 181.700000 4524.700000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 4523.900000 0 494.500000 4523.900000 0 494.500000 4523.200000 0 181.700000 4523.200000 0 181.700000 4523.900000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 4523.200000 0 494.500000 4523.200000 0 494.500000 4522.400000 0 181.700000 4522.400000 0 181.700000 4523.200000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 4522.400000 0 494.500000 4522.400000 0 494.500000 4521.600000 0 181.700000 4521.600000 0 181.700000 4522.400000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 4521.600000 0 494.500000 4521.600000 0 494.500000 4520.900000 0 181.700000 4520.900000 0 181.700000 4521.600000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 4520.900000 0 494.500000 4520.900000 0 494.500000 4520.100000 0 181.700000 4520.100000 0 181.700000 4520.900000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 4520.100000 0 494.500000 4520.100000 0 494.500000 4519.400000 0 181.700000 4519.400000 0 181.700000 4520.100000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 4519.400000 0 494.500000 4519.400000 0 494.500000 4518.600000 0 181.700000 4518.600000 0 181.700000 4519.400000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 4518.600000 0 494.500000 4518.600000 0 494.500000 4517.800000 0 181.700000 4517.800000 0 181.700000 4518.600000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 4517.800000 0 494.500000 4517.800000 0 494.500000 4517.100000 0 181.700000 4517.100000 0 181.700000 4517.800000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 4517.100000 0 494.500000 4517.100000 0 494.500000 4516.300000 0 181.700000 4516.300000 0 181.700000 4517.100000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 4516.300000 0 494.500000 4516.300000 0 494.500000 4515.600000 0 181.700000 4515.600000 0 181.700000 4516.300000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 4515.600000 0 494.500000 4515.600000 0 494.500000 4514.800000 0 181.700000 4514.800000 0 181.700000 4515.600000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 4514.800000 0 494.500000 4514.800000 0 494.500000 4514.000000 0 181.700000 4514.000000 0 181.700000 4514.800000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 4514.000000 0 494.500000 4514.000000 0 494.500000 4513.300000 0 181.700000 4513.300000 0 181.700000 4514.000000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 4513.300000 0 494.500000 4513.300000 0 494.500000 4512.500000 0 181.700000 4512.500000 0 181.700000 4513.300000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 4512.500000 0 494.500000 4512.500000 0 494.500000 4511.800000 0 181.700000 4511.800000 0 181.700000 4512.500000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 4511.800000 0 494.500000 4511.800000 0 494.500000 4511.000000 0 181.700000 4511.000000 0 181.700000 4511.800000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 4511.000000 0 494.500000 4511.000000 0 494.500000 4510.300000 0 181.700000 4510.300000 0 181.700000 4511.000000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 4510.300000 0 494.500000 4510.300000 0 494.500000 4509.500000 0 181.700000 4509.500000 0 181.700000 4510.300000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 4509.500000 0 494.500000 4509.500000 0 494.500000 4508.700000 0 181.700000 4508.700000 0 181.700000 4509.500000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 4508.700000 0 494.500000 4508.700000 0 494.500000 4508.000000 0 181.700000 4508.000000 0 181.700000 4508.700000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 4508.000000 0 494.500000 4508.000000 0 494.500000 4507.200000 0 181.700000 4507.200000 0 181.700000 4508.000000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 4507.300000 0 181.800000 4507.300000 0 181.800000 4700.600000 0 494.400000 4700.600000 0 494.400000 4507.300000 0 338.100000 4507.300000 0
+strokePath subpath 1 338.100000 4507.300000 0 181.800000 4507.300000 0 181.800000 4700.600000 0 494.400000 4700.600000 0 494.400000 4507.300000 0 338.100000 4507.300000 0
+saveState
+updateCtm 11410.000000 0.000000 0.000000 -8760.000000 20530.000000 -379130.000000
+drawSoftMaskedImage 1142 877 1142 877 JPEG 70955 PPM 3004618
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 4546.324000 215.488000 4538.324000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 4546.324000 220.592000 4538.324000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 4546.324000 225.696000 4538.324000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 4546.324000 230.800000 4538.324000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 4538.724000 241.388000 4530.724000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 4538.724000 246.492000 4530.724000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 4538.724000 251.596000 4530.724000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 4538.724000 256.700000 4530.724000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 4531.024000 267.188000 4523.024000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 4531.024000 272.292000 4523.024000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 4531.024000 277.396000 4523.024000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 4531.024000 282.500000 4523.024000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 4523.424000 293.088000 4515.424000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 4523.424000 298.192000 4515.424000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 4523.424000 303.296000 4515.424000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 4523.424000 308.400000 4515.424000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 4561.324000 202.588000 4553.324000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 4580.624000 201.688000 4572.624000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 4599.924000 195.788000 4591.924000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 4599.924000 200.892000 4591.924000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 4619.324000 194.888000 4611.324000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 4619.324000 199.992000 4611.324000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 4638.624000 193.988000 4630.624000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 4638.624000 199.092000 4630.624000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 4657.924000 193.088000 4649.924000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 4657.924000 198.192000 4649.924000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 4530.024000 330.188000 4522.024000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 4530.024000 332.716000 4522.024000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 4530.024000 337.596000 4522.024000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 4530.024000 341.396000 4522.024000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 4530.024000 346.036000 4522.024000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 4530.024000 350.900000 4522.024000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 4530.024000 355.972000 4522.024000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 4530.024000 359.196000 4522.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 4530.024000 362.196000 4522.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 4530.024000 367.404000 4522.024000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 4530.024000 371.876000 4522.024000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 4530.024000 375.052000 4522.024000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 4549.524000 361.172000 4541.524000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 4549.524000 364.340000 4541.524000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 4549.524000 367.396000 4541.524000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 4549.524000 372.604000 4541.524000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 4549.524000 379.348000 4541.524000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 4549.524000 384.484000 4541.524000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 4549.524000 389.436000 4541.524000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 4549.524000 392.108000 4541.524000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 4549.524000 395.708000 4541.524000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 4549.524000 397.540000 4541.524000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 4549.524000 402.444000 4541.524000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 4549.524000 406.788000 4541.524000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 4569.124000 392.972000 4561.124000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 4569.124000 398.076000 4561.124000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 4569.124000 403.180000 4561.124000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 4569.124000 405.428000 4561.124000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 4569.124000 410.332000 4561.124000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 4569.124000 414.476000 4561.124000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 4696.692000 305.808000 4682.692000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 4696.692000 314.138000 4682.692000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 4696.692000 320.788000 4682.692000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 4696.692000 328.698000 4682.692000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 4696.692000 336.972000 4682.692000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 4696.692000 344.182000 4682.692000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 4696.692000 349.810000 4682.692000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 4696.692000 354.234000 4682.692000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 4696.692000 362.718000 4682.692000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 4696.692000 367.870000 4682.692000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 4696.692000 372.322000 4682.692000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 4696.692000 382.080000 4682.692000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 4696.692000 388.772000 4682.692000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 4696.692000 397.802000 4682.692000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 4696.692000 402.254000 4682.692000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 4696.692000 407.896000 4682.692000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 4573.800000 0 424.300000 4573.800000 0 424.300000 4634.500000 0 493.600000 4634.500000 0 493.600000 4573.800000 0 458.900000 4573.800000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 4624.900000 0 428.900000 4624.900000 0 428.900000 4630.800000 0 434.800000 4630.800000 0 434.800000 4624.900000 0 431.900000 4624.900000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 4613.800000 0 428.900000 4613.800000 0 428.900000 4619.800000 0 434.800000 4619.800000 0 434.800000 4613.800000 0 431.900000 4613.800000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 4602.700000 0 428.900000 4602.700000 0 428.900000 4608.700000 0 434.800000 4608.700000 0 434.800000 4602.700000 0 431.900000 4602.700000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 4591.600000 0 428.900000 4591.600000 0 428.900000 4597.600000 0 434.800000 4597.600000 0 434.800000 4591.600000 0 431.900000 4591.600000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 4580.500000 0 428.900000 4580.500000 0 428.900000 4586.500000 0 434.800000 4586.500000 0 434.800000 4580.500000 0 431.900000 4580.500000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 4632.024000 443.288000 4624.024000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 4632.024000 445.816000 4624.024000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 4632.024000 450.600000 4624.024000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 4632.024000 454.496000 4624.024000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 4632.024000 459.136000 4624.024000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 4632.024000 464.000000 4624.024000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 4632.024000 468.976000 4624.024000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 4632.024000 472.304000 4624.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 4632.024000 475.208000 4624.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 4632.024000 480.520000 4624.024000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 4632.024000 484.992000 4624.024000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 4632.024000 488.168000 4624.024000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 4620.924000 443.352000 4612.924000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 4620.924000 447.920000 4612.924000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 4620.924000 452.976000 4612.924000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 4620.924000 457.400000 4612.924000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 4620.924000 462.472000 4612.924000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 4620.924000 465.800000 4612.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 4620.924000 468.904000 4612.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 4620.924000 473.816000 4612.924000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 4620.924000 478.888000 4612.924000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 4620.924000 482.064000 4612.924000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 4609.824000 442.872000 4601.824000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 4609.824000 446.040000 4601.824000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 4609.824000 448.992000 4601.824000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 4609.824000 454.304000 4601.824000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 4609.824000 461.048000 4601.824000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 4609.824000 466.184000 4601.824000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 4609.824000 471.136000 4601.824000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 4609.824000 473.808000 4601.824000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 4609.824000 477.408000 4601.824000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 4609.824000 479.240000 4601.824000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 4609.824000 484.144000 4601.824000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 4609.824000 488.488000 4601.824000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 4598.724000 443.384000 4590.724000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 4598.724000 448.464000 4590.724000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 4598.724000 453.424000 4590.724000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 4598.724000 456.696000 4590.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 4598.724000 459.800000 4590.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 4598.724000 462.032000 4590.724000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 4598.724000 466.936000 4590.724000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 4598.724000 471.080000 4590.724000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 4587.624000 443.272000 4579.624000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 4587.624000 448.376000 4579.624000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 4587.624000 453.480000 4579.624000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 4587.624000 455.728000 4579.624000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 4587.624000 460.632000 4579.624000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 4587.624000 464.776000 4579.624000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 1942.700000 0 114.800000 1942.700000 0 114.800000 1985.500000 0 72.000000 1985.500000 0 72.000000 1942.700000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 -115080.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
+startPage 61200.000000 79200.000000
+updateCtm 100.000000 0.000000 0.000000 -100.000000 0.000000 79200.000000
+updateLineDash
+updateFlatness 1
+updateLineJoin 0
+updateLineCap 0
+updateMiterLimit 10.000000
+updateLineWidth 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+clipPath subpath 1 0.000000 0.000000 0 612.000000 0.000000 0 612.000000 792.000000 0 0.000000 792.000000 0 0.000000 0.000000 0
+saveState
+updateLineWidth 0.100000
+saveState
+eoClipPath subpath 1 0.000000 -0.100000 0 612.100000 -0.100000 0 612.100000 792.000000 0 0.000000 792.000000 0 0.000000 -0.100000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 76.600000 701.300000 0 535.500000 701.300000 0 535.500000 720.000000 0 76.600000 720.000000 0 76.600000 701.300000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 76.600000 644.900000 0 291.900000 644.900000 0 291.900000 659.000000 0 76.600000 659.000000 0 76.600000 644.900000 0
+eoFillPath subpath 1 76.600000 519.600000 0 291.900000 519.600000 0 291.900000 533.700000 0 76.600000 533.700000 0 76.600000 519.600000 0
+eoFillPath subpath 1 76.600000 408.200000 0 291.900000 408.200000 0 291.900000 422.300000 0 76.600000 422.300000 0 76.600000 408.200000 0
+eoFillPath subpath 1 76.600000 380.200000 0 291.900000 380.200000 0 291.900000 394.300000 0 76.600000 394.300000 0 76.600000 380.200000 0
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 108 1 0 0 0 1600.000000 0 CAAAAA+DejaVuSans
+drawChar 76.700000 719.948000 81.404000 703.948000 1.000000 0.000000 0.000000 1.000000 I
+drawChar 81.404000 719.948000 91.532000 703.948000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 91.500000 719.948000 101.644000 703.948000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 101.708000 719.948000 111.548000 703.948000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.308000 719.948000 120.764000 703.948000 1.000000 0.000000 0.000000 1.000000 x
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 672.936000 84.692000 660.936000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 84.704000 672.936000 90.440000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 90.404000 672.936000 97.496000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 97.508000 672.936000 104.600000 660.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.612000 672.936000 109.052000 660.936000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 109.016000 672.936000 114.752000 660.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 114.716000 672.936000 121.940000 660.936000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 121.916000 672.936000 129.596000 660.936000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 129.620000 672.936000 135.776000 660.936000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 135.800000 672.936000 139.604000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.604000 672.936000 143.408000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 143.408000 672.936000 147.212000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 147.212000 672.936000 151.016000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 151.016000 672.936000 154.820000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.820000 672.936000 158.624000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.624000 672.936000 162.428000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.428000 672.936000 166.232000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.232000 672.936000 170.036000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 170.036000 672.936000 173.840000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.840000 672.936000 177.644000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.644000 672.936000 181.448000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.448000 672.936000 185.252000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.252000 672.936000 189.056000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.056000 672.936000 192.860000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.860000 672.936000 196.664000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.664000 672.936000 200.468000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.468000 672.936000 204.272000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.272000 672.936000 208.076000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.076000 672.936000 211.880000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.880000 672.936000 215.684000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.684000 672.936000 219.488000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.488000 672.936000 223.292000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.292000 672.936000 227.096000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.096000 672.936000 230.900000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.900000 672.936000 234.704000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.704000 672.936000 238.508000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.508000 672.936000 242.312000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.312000 672.936000 246.116000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.116000 672.936000 249.920000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.920000 672.936000 253.724000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.724000 672.936000 257.528000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.528000 672.936000 261.332000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.332000 672.936000 265.136000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.136000 672.936000 268.940000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.940000 672.936000 272.744000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.744000 672.936000 276.548000 660.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 672.936000 284.332000 660.936000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 672.936000 291.928000 660.936000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 658.956000 86.000000 646.956000 1.000000 0.000000 0.000000 1.000000 V
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 644.936000 85.364000 632.936000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 84.296000 644.936000 91.448000 632.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 91.496000 644.936000 98.216000 632.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 98.192000 644.936000 105.920000 632.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 105.896000 644.936000 113.624000 632.936000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 113.600000 644.936000 124.976000 632.936000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 125.000000 644.936000 128.804000 632.936000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.804000 644.936000 135.524000 632.936000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.500000 644.936000 139.328000 632.936000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.304000 644.936000 146.396000 632.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.408000 644.936000 153.560000 632.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 153.608000 644.936000 161.336000 632.936000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 161.312000 644.936000 168.404000 632.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 168.416000 644.936000 174.152000 632.936000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 174.100000 644.936000 177.904000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.904000 644.936000 181.708000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.708000 644.936000 185.512000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.512000 644.936000 189.316000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.316000 644.936000 193.120000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 193.120000 644.936000 196.924000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.924000 644.936000 200.728000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.728000 644.936000 204.532000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.532000 644.936000 208.336000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.336000 644.936000 212.140000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 212.140000 644.936000 215.944000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.944000 644.936000 219.748000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.748000 644.936000 223.552000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.552000 644.936000 227.356000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.356000 644.936000 231.160000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.160000 644.936000 234.964000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.964000 644.936000 238.768000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.768000 644.936000 242.572000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.572000 644.936000 246.376000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.376000 644.936000 250.180000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.180000 644.936000 253.984000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.984000 644.936000 257.788000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.788000 644.936000 261.592000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.592000 644.936000 265.396000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.396000 644.936000 269.200000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.200000 644.936000 273.004000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.004000 644.936000 276.808000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.808000 644.936000 280.612000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.612000 644.936000 284.416000 632.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 644.936000 292.032000 632.936000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 631.036000 85.364000 619.036000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 84.296000 631.036000 91.388000 619.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.400000 631.036000 99.080000 619.036000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 99.104000 631.036000 106.196000 619.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 106.208000 631.036000 111.020000 619.036000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 111.008000 631.036000 118.160000 619.036000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 118.208000 631.036000 125.888000 619.036000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 125.912000 631.036000 129.740000 619.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 129.716000 631.036000 136.808000 619.036000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.820000 631.036000 142.976000 619.036000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 142.800000 631.036000 146.604000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.604000 631.036000 150.408000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.408000 631.036000 154.212000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.212000 631.036000 158.016000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.016000 631.036000 161.820000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.820000 631.036000 165.624000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.624000 631.036000 169.428000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.428000 631.036000 173.232000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.232000 631.036000 177.036000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.036000 631.036000 180.840000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.840000 631.036000 184.644000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.644000 631.036000 188.448000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.448000 631.036000 192.252000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.252000 631.036000 196.056000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.056000 631.036000 199.860000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.860000 631.036000 203.664000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.664000 631.036000 207.468000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.468000 631.036000 211.272000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.272000 631.036000 215.076000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.076000 631.036000 218.880000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.880000 631.036000 222.684000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.684000 631.036000 226.488000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.488000 631.036000 230.292000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.292000 631.036000 234.096000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.096000 631.036000 237.900000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.900000 631.036000 241.704000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.704000 631.036000 245.508000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.508000 631.036000 249.312000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.312000 631.036000 253.116000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.116000 631.036000 256.920000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.920000 631.036000 260.724000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.724000 631.036000 264.528000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.528000 631.036000 268.332000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.332000 631.036000 272.136000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.136000 631.036000 275.940000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.940000 631.036000 279.744000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.744000 631.036000 283.548000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 283.548000 631.036000 287.352000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 287.352000 631.036000 291.156000 619.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 617.136000 100.628000 605.136000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 100.604000 617.136000 108.332000 605.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.308000 617.136000 112.136000 605.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.112000 617.136000 119.336000 605.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 119.312000 617.136000 127.040000 605.136000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 127.016000 617.136000 133.172000 605.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 133.200000 617.136000 137.004000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.100000 617.136000 140.904000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.000000 617.136000 144.804000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.900000 617.136000 148.704000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.800000 617.136000 152.604000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.700000 617.136000 156.504000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.600000 617.136000 160.404000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.500000 617.136000 164.304000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.400000 617.136000 168.204000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.300000 617.136000 172.104000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.200000 617.136000 176.004000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.100000 617.136000 179.904000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.000000 617.136000 183.804000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.900000 617.136000 187.704000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.800000 617.136000 191.604000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.700000 617.136000 195.504000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.600000 617.136000 199.404000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.500000 617.136000 203.304000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.400000 617.136000 207.204000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.300000 617.136000 211.104000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.200000 617.136000 215.004000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.100000 617.136000 218.904000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.000000 617.136000 222.804000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.900000 617.136000 226.704000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.800000 617.136000 230.604000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.700000 617.136000 234.504000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.600000 617.136000 238.404000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.500000 617.136000 242.304000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.400000 617.136000 246.204000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.300000 617.136000 250.104000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.200000 617.136000 254.004000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.100000 617.136000 257.904000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.000000 617.136000 261.804000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.900000 617.136000 265.704000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.800000 617.136000 269.604000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.700000 617.136000 273.504000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.600000 617.136000 277.404000 605.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 617.136000 284.332000 605.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 617.136000 291.928000 605.136000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 603.236000 99.824000 591.236000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 100.100000 603.236000 107.252000 591.236000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.300000 603.236000 114.980000 591.236000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 115.004000 603.236000 118.832000 591.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 118.808000 603.236000 124.964000 591.236000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.012000 603.236000 132.740000 591.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.716000 603.236000 139.808000 591.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 139.820000 603.236000 145.976000 591.236000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 145.800000 603.236000 149.604000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.604000 603.236000 153.408000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.408000 603.236000 157.212000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.212000 603.236000 161.016000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.016000 603.236000 164.820000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.820000 603.236000 168.624000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.624000 603.236000 172.428000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.428000 603.236000 176.232000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.232000 603.236000 180.036000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.036000 603.236000 183.840000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.840000 603.236000 187.644000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.644000 603.236000 191.448000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.448000 603.236000 195.252000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.252000 603.236000 199.056000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.056000 603.236000 202.860000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.860000 603.236000 206.664000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.664000 603.236000 210.468000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.468000 603.236000 214.272000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.272000 603.236000 218.076000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.076000 603.236000 221.880000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.880000 603.236000 225.684000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.684000 603.236000 229.488000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.488000 603.236000 233.292000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.292000 603.236000 237.096000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.096000 603.236000 240.900000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.900000 603.236000 244.704000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.704000 603.236000 248.508000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.508000 603.236000 252.312000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.312000 603.236000 256.116000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.116000 603.236000 259.920000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.920000 603.236000 263.724000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.724000 603.236000 267.528000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.528000 603.236000 271.332000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.332000 603.236000 275.136000 591.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 603.236000 284.332000 591.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 603.236000 291.928000 591.236000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 589.336000 99.824000 577.336000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 99.800000 589.336000 107.528000 577.336000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 107.504000 589.336000 115.232000 577.336000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 115.208000 589.336000 122.888000 577.336000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 122.912000 589.336000 130.064000 577.336000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 130.112000 589.336000 135.848000 577.336000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.812000 589.336000 143.492000 577.336000 1.000000 0.000000 0.000000 1.000000 b
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 143.400000 589.336000 147.204000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 147.204000 589.336000 151.008000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 151.008000 589.336000 154.812000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.812000 589.336000 158.616000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.616000 589.336000 162.420000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.420000 589.336000 166.224000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.224000 589.336000 170.028000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 170.028000 589.336000 173.832000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.832000 589.336000 177.636000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.636000 589.336000 181.440000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.440000 589.336000 185.244000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.244000 589.336000 189.048000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.048000 589.336000 192.852000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.852000 589.336000 196.656000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.656000 589.336000 200.460000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.460000 589.336000 204.264000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.264000 589.336000 208.068000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.068000 589.336000 211.872000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.872000 589.336000 215.676000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.676000 589.336000 219.480000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.480000 589.336000 223.284000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.284000 589.336000 227.088000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.088000 589.336000 230.892000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.892000 589.336000 234.696000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.696000 589.336000 238.500000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.500000 589.336000 242.304000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.304000 589.336000 246.108000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.108000 589.336000 249.912000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.912000 589.336000 253.716000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.716000 589.336000 257.520000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.520000 589.336000 261.324000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.324000 589.336000 265.128000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.128000 589.336000 268.932000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.932000 589.336000 272.736000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.736000 589.336000 276.540000 577.336000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 589.336000 284.332000 577.336000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 589.336000 291.928000 577.336000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 575.436000 99.128000 563.436000 1.000000 0.000000 0.000000 1.000000 Z
+drawChar 99.104000 575.436000 106.832000 563.436000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 106.808000 575.436000 113.528000 563.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.504000 575.436000 120.224000 563.436000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.200000 575.436000 127.928000 563.436000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 127.904000 575.436000 131.732000 563.436000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 131.708000 575.436000 139.436000 563.436000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 139.412000 575.436000 143.240000 563.436000 1.000000 0.000000 0.000000 1.000000 i
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 143.300000 575.436000 147.104000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 147.104000 575.436000 150.908000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.908000 575.436000 154.712000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.712000 575.436000 158.516000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.516000 575.436000 162.320000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.320000 575.436000 166.124000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.124000 575.436000 169.928000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.928000 575.436000 173.732000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.732000 575.436000 177.536000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.536000 575.436000 181.340000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.340000 575.436000 185.144000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.144000 575.436000 188.948000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.948000 575.436000 192.752000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.752000 575.436000 196.556000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.556000 575.436000 200.360000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.360000 575.436000 204.164000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.164000 575.436000 207.968000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.968000 575.436000 211.772000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.772000 575.436000 215.576000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.576000 575.436000 219.380000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.380000 575.436000 223.184000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.184000 575.436000 226.988000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.988000 575.436000 230.792000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.792000 575.436000 234.596000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.596000 575.436000 238.400000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.400000 575.436000 242.204000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.204000 575.436000 246.008000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.008000 575.436000 249.812000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.812000 575.436000 253.616000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.616000 575.436000 257.420000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.420000 575.436000 261.224000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.224000 575.436000 265.028000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.028000 575.436000 268.832000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.832000 575.436000 272.636000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.636000 575.436000 276.440000 563.436000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 575.436000 284.332000 563.436000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 575.436000 291.928000 563.436000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 561.536000 85.364000 549.536000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 85.196000 561.536000 89.024000 549.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 89.000000 561.536000 95.720000 549.536000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 95.696000 561.536000 100.508000 549.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 100.496000 561.536000 107.720000 549.536000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 107.696000 561.536000 113.432000 549.536000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.396000 561.536000 117.224000 549.536000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 117.200000 561.536000 124.352000 549.536000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 124.400000 561.536000 132.128000 549.536000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 132.104000 561.536000 135.908000 549.536000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.908000 561.536000 142.064000 549.536000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 142.112000 561.536000 146.924000 549.536000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 146.912000 561.536000 153.680000 549.536000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 153.716000 561.536000 157.544000 549.536000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 157.520000 561.536000 164.612000 549.536000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 164.600000 561.536000 168.404000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.500000 561.536000 172.304000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.400000 561.536000 176.204000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.300000 561.536000 180.104000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.200000 561.536000 184.004000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.100000 561.536000 187.904000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.000000 561.536000 191.804000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.900000 561.536000 195.704000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.800000 561.536000 199.604000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.700000 561.536000 203.504000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.600000 561.536000 207.404000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.500000 561.536000 211.304000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.400000 561.536000 215.204000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.300000 561.536000 219.104000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.200000 561.536000 223.004000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.100000 561.536000 226.904000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.000000 561.536000 230.804000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.900000 561.536000 234.704000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.800000 561.536000 238.604000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.700000 561.536000 242.504000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.600000 561.536000 246.404000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.500000 561.536000 250.304000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.400000 561.536000 254.204000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.300000 561.536000 258.104000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.200000 561.536000 262.004000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.100000 561.536000 265.904000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.000000 561.536000 269.804000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.900000 561.536000 273.704000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.800000 561.536000 277.604000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.700000 561.536000 281.504000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.600000 561.536000 285.404000 549.536000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 561.536000 292.032000 549.536000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 547.636000 85.364000 535.636000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 85.196000 547.636000 89.024000 535.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 89.000000 547.636000 92.828000 535.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.804000 547.636000 96.632000 535.636000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 96.608000 547.636000 103.760000 535.636000 1.000000 0.000000 0.000000 1.000000 a
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 103.700000 547.636000 107.504000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 107.504000 547.636000 111.308000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 111.308000 547.636000 115.112000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 115.112000 547.636000 118.916000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 118.916000 547.636000 122.720000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 122.720000 547.636000 126.524000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 126.524000 547.636000 130.328000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 130.328000 547.636000 134.132000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 134.132000 547.636000 137.936000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.936000 547.636000 141.740000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.740000 547.636000 145.544000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.544000 547.636000 149.348000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.348000 547.636000 153.152000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.152000 547.636000 156.956000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.956000 547.636000 160.760000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.760000 547.636000 164.564000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.564000 547.636000 168.368000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.368000 547.636000 172.172000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.172000 547.636000 175.976000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.976000 547.636000 179.780000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.780000 547.636000 183.584000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.584000 547.636000 187.388000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.388000 547.636000 191.192000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.192000 547.636000 194.996000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 194.996000 547.636000 198.800000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.800000 547.636000 202.604000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.604000 547.636000 206.408000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.408000 547.636000 210.212000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.212000 547.636000 214.016000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.016000 547.636000 217.820000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 217.820000 547.636000 221.624000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.624000 547.636000 225.428000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.428000 547.636000 229.232000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.232000 547.636000 233.036000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.036000 547.636000 236.840000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 236.840000 547.636000 240.644000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 240.644000 547.636000 244.448000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.448000 547.636000 248.252000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.252000 547.636000 252.056000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.056000 547.636000 255.860000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 255.860000 547.636000 259.664000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 259.664000 547.636000 263.468000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.468000 547.636000 267.272000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.272000 547.636000 271.076000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.076000 547.636000 274.880000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.880000 547.636000 278.684000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 278.684000 547.636000 282.488000 535.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 547.636000 292.032000 535.636000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 533.656000 90.176000 521.656000 1.000000 0.000000 0.000000 1.000000 W
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 519.636000 89.024000 507.636000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 88.004000 519.636000 95.156000 507.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 95.204000 519.636000 101.360000 507.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 101.408000 519.636000 109.136000 507.636000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.112000 519.636000 116.792000 507.636000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 116.816000 519.636000 123.968000 507.636000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 124.016000 519.636000 130.172000 507.636000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 130.220000 519.636000 134.048000 507.636000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 134.024000 519.636000 141.752000 507.636000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 141.500000 519.636000 145.304000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.400000 519.636000 149.204000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.300000 519.636000 153.104000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.200000 519.636000 157.004000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.100000 519.636000 160.904000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.000000 519.636000 164.804000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.900000 519.636000 168.704000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.800000 519.636000 172.604000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.700000 519.636000 176.504000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.600000 519.636000 180.404000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.500000 519.636000 184.304000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.400000 519.636000 188.204000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.300000 519.636000 192.104000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.200000 519.636000 196.004000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.100000 519.636000 199.904000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.000000 519.636000 203.804000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.900000 519.636000 207.704000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.800000 519.636000 211.604000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.700000 519.636000 215.504000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.600000 519.636000 219.404000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.500000 519.636000 223.304000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.400000 519.636000 227.204000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.300000 519.636000 231.104000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.200000 519.636000 235.004000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 235.100000 519.636000 238.904000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 239.000000 519.636000 242.804000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.900000 519.636000 246.704000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.800000 519.636000 250.604000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.700000 519.636000 254.504000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.600000 519.636000 258.404000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.500000 519.636000 262.304000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.400000 519.636000 266.204000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.300000 519.636000 270.104000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.200000 519.636000 274.004000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 274.100000 519.636000 277.904000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 278.000000 519.636000 281.804000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.900000 519.636000 285.704000 507.636000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 519.636000 292.032000 507.636000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 505.736000 89.024000 493.736000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 88.004000 505.736000 95.156000 493.736000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 95.204000 505.736000 101.360000 493.736000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 101.408000 505.736000 109.136000 493.736000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.112000 505.736000 116.204000 493.736000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 116.216000 505.736000 121.952000 493.736000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 121.800000 505.736000 125.604000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 125.700000 505.736000 129.504000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 129.600000 505.736000 133.404000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.500000 505.736000 137.304000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.400000 505.736000 141.204000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 141.300000 505.736000 145.104000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.200000 505.736000 149.004000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.100000 505.736000 152.904000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.000000 505.736000 156.804000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.900000 505.736000 160.704000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.800000 505.736000 164.604000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.700000 505.736000 168.504000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.600000 505.736000 172.404000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.500000 505.736000 176.304000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.400000 505.736000 180.204000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.300000 505.736000 184.104000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.200000 505.736000 188.004000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.100000 505.736000 191.904000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.000000 505.736000 195.804000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.900000 505.736000 199.704000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.800000 505.736000 203.604000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.700000 505.736000 207.504000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.600000 505.736000 211.404000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.500000 505.736000 215.304000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.400000 505.736000 219.204000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.300000 505.736000 223.104000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.200000 505.736000 227.004000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.100000 505.736000 230.904000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.000000 505.736000 234.804000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.900000 505.736000 238.704000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.800000 505.736000 242.604000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.700000 505.736000 246.504000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.600000 505.736000 250.404000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.500000 505.736000 254.304000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.400000 505.736000 258.204000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 258.300000 505.736000 262.104000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 262.200000 505.736000 266.004000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 266.100000 505.736000 269.904000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 270.000000 505.736000 273.804000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.900000 505.736000 277.704000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 277.800000 505.736000 281.604000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 281.700000 505.736000 285.504000 493.736000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 505.736000 292.032000 493.736000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 491.836000 89.024000 479.836000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 88.004000 491.836000 95.156000 479.836000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 95.204000 491.836000 100.016000 479.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 100.004000 491.836000 107.096000 479.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.108000 491.836000 112.844000 479.836000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.808000 491.836000 116.612000 479.836000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.612000 491.836000 120.332000 479.836000 1.000000 0.000000 0.000000 1.000000 j
+drawChar 120.308000 491.836000 127.400000 479.836000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.412000 491.836000 132.224000 479.836000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.212000 491.836000 138.368000 479.836000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 138.300000 491.836000 142.104000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 142.104000 491.836000 145.908000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 145.908000 491.836000 149.712000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 149.712000 491.836000 153.516000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 153.516000 491.836000 157.320000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 157.320000 491.836000 161.124000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.124000 491.836000 164.928000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.928000 491.836000 168.732000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.732000 491.836000 172.536000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.536000 491.836000 176.340000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.340000 491.836000 180.144000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.144000 491.836000 183.948000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.948000 491.836000 187.752000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.752000 491.836000 191.556000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.556000 491.836000 195.360000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.360000 491.836000 199.164000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.164000 491.836000 202.968000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.968000 491.836000 206.772000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.772000 491.836000 210.576000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.576000 491.836000 214.380000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.380000 491.836000 218.184000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.184000 491.836000 221.988000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 221.988000 491.836000 225.792000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 225.792000 491.836000 229.596000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 229.596000 491.836000 233.400000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 233.400000 491.836000 237.204000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.204000 491.836000 241.008000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.008000 491.836000 244.812000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 244.812000 491.836000 248.616000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 248.616000 491.836000 252.420000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 252.420000 491.836000 256.224000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.224000 491.836000 260.028000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.028000 491.836000 263.832000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 263.832000 491.836000 267.636000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 267.636000 491.836000 271.440000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 271.440000 491.836000 275.244000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.244000 491.836000 279.048000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.048000 491.836000 282.852000 479.836000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 491.836000 292.032000 479.836000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 477.936000 89.024000 465.936000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 88.004000 477.936000 95.156000 465.936000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 95.204000 477.936000 100.016000 465.936000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 100.004000 477.936000 107.096000 465.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.108000 477.936000 112.844000 465.936000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.808000 477.936000 120.488000 465.936000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 120.512000 477.936000 127.604000 465.936000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.616000 477.936000 135.296000 465.936000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 135.200000 477.936000 139.004000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.004000 477.936000 142.808000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 142.808000 477.936000 146.612000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 146.612000 477.936000 150.416000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 150.416000 477.936000 154.220000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 154.220000 477.936000 158.024000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.024000 477.936000 161.828000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 161.828000 477.936000 165.632000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 165.632000 477.936000 169.436000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 169.436000 477.936000 173.240000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 173.240000 477.936000 177.044000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.044000 477.936000 180.848000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 180.848000 477.936000 184.652000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 184.652000 477.936000 188.456000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 188.456000 477.936000 192.260000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 192.260000 477.936000 196.064000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.064000 477.936000 199.868000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.868000 477.936000 203.672000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.672000 477.936000 207.476000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.476000 477.936000 211.280000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.280000 477.936000 215.084000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.084000 477.936000 218.888000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.888000 477.936000 222.692000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.692000 477.936000 226.496000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.496000 477.936000 230.300000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.300000 477.936000 234.104000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.104000 477.936000 237.908000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.908000 477.936000 241.712000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.712000 477.936000 245.516000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.516000 477.936000 249.320000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.320000 477.936000 253.124000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.124000 477.936000 256.928000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 256.928000 477.936000 260.732000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 260.732000 477.936000 264.536000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 264.536000 477.936000 268.340000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 268.340000 477.936000 272.144000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.144000 477.936000 275.948000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 275.948000 477.936000 279.752000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 279.752000 477.936000 283.556000 465.936000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 477.936000 292.032000 465.936000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 464.036000 89.024000 452.036000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.000000 464.036000 96.728000 452.036000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 96.704000 464.036000 100.532000 452.036000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 100.508000 464.036000 106.244000 452.036000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 106.208000 464.036000 110.036000 452.036000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.012000 464.036000 117.692000 452.036000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 117.716000 464.036000 124.940000 452.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.916000 464.036000 132.140000 452.036000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 132.116000 464.036000 135.944000 452.036000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 136.000000 464.036000 139.804000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 139.804000 464.036000 143.608000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 143.608000 464.036000 147.412000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 147.412000 464.036000 151.216000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 151.216000 464.036000 155.020000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 155.020000 464.036000 158.824000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 158.824000 464.036000 162.628000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 162.628000 464.036000 166.432000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 166.432000 464.036000 170.236000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 170.236000 464.036000 174.040000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 174.040000 464.036000 177.844000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 177.844000 464.036000 181.648000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 181.648000 464.036000 185.452000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 185.452000 464.036000 189.256000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 189.256000 464.036000 193.060000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 193.060000 464.036000 196.864000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 196.864000 464.036000 200.668000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 200.668000 464.036000 204.472000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 204.472000 464.036000 208.276000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 208.276000 464.036000 212.080000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 212.080000 464.036000 215.884000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.884000 464.036000 219.688000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 219.688000 464.036000 223.492000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 223.492000 464.036000 227.296000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 227.296000 464.036000 231.100000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 231.100000 464.036000 234.904000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.904000 464.036000 238.708000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.708000 464.036000 242.512000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.512000 464.036000 246.316000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.316000 464.036000 250.120000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.120000 464.036000 253.924000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.924000 464.036000 257.728000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.728000 464.036000 261.532000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.532000 464.036000 265.336000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.336000 464.036000 269.140000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.140000 464.036000 272.944000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 272.944000 464.036000 276.748000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.748000 464.036000 280.552000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.552000 464.036000 284.356000 452.036000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 464.036000 292.032000 452.036000 1.000000 0.000000 0.000000 1.000000 9
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 450.136000 89.024000 438.136000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 88.796000 450.136000 92.624000 438.136000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.600000 450.136000 96.428000 438.136000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 96.404000 450.136000 104.084000 438.136000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 104.108000 450.136000 112.100000 438.136000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 112.112000 450.136000 119.336000 438.136000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 119.312000 450.136000 129.572000 438.136000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 129.608000 450.136000 136.700000 438.136000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.712000 450.136000 142.448000 438.136000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 142.412000 450.136000 148.568000 438.136000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 148.600000 450.136000 152.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.500000 450.136000 156.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.400000 450.136000 160.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.300000 450.136000 164.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.200000 450.136000 168.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.100000 450.136000 171.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.000000 450.136000 175.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.900000 450.136000 179.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.800000 450.136000 183.604000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.700000 450.136000 187.504000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.600000 450.136000 191.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.500000 450.136000 195.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.400000 450.136000 199.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.300000 450.136000 203.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.200000 450.136000 207.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.100000 450.136000 210.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.000000 450.136000 214.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.900000 450.136000 218.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.800000 450.136000 222.604000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.700000 450.136000 226.504000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.600000 450.136000 230.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.500000 450.136000 234.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.400000 450.136000 238.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.300000 450.136000 242.104000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.200000 450.136000 246.004000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.100000 450.136000 249.904000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.000000 450.136000 253.804000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.900000 450.136000 257.704000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.800000 450.136000 261.604000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.700000 450.136000 265.504000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.600000 450.136000 269.404000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.500000 450.136000 273.304000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.400000 450.136000 277.204000 438.136000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 450.136000 284.332000 438.136000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 450.136000 291.928000 438.136000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 436.236000 89.024000 424.236000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 88.496000 436.236000 94.232000 424.236000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 94.196000 436.236000 101.288000 424.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 101.300000 436.236000 109.028000 424.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.004000 436.236000 115.724000 424.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 115.700000 436.236000 123.428000 424.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 123.404000 436.236000 130.496000 424.236000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.508000 436.236000 136.664000 424.236000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 136.700000 436.236000 140.504000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.600000 436.236000 144.404000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.500000 436.236000 148.304000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.400000 436.236000 152.204000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.300000 436.236000 156.104000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.200000 436.236000 160.004000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.100000 436.236000 163.904000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.000000 436.236000 167.804000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 167.900000 436.236000 171.704000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 171.800000 436.236000 175.604000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.700000 436.236000 179.504000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.600000 436.236000 183.404000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.500000 436.236000 187.304000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.400000 436.236000 191.204000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.300000 436.236000 195.104000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.200000 436.236000 199.004000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.100000 436.236000 202.904000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.000000 436.236000 206.804000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.900000 436.236000 210.704000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.800000 436.236000 214.604000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.700000 436.236000 218.504000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.600000 436.236000 222.404000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.500000 436.236000 226.304000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.400000 436.236000 230.204000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.300000 436.236000 234.104000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.200000 436.236000 238.004000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.100000 436.236000 241.904000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.000000 436.236000 245.804000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.900000 436.236000 249.704000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.800000 436.236000 253.604000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.700000 436.236000 257.504000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.600000 436.236000 261.404000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.500000 436.236000 265.304000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.400000 436.236000 269.204000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.300000 436.236000 273.104000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.200000 436.236000 277.004000 424.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 436.236000 284.332000 424.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 436.236000 291.928000 424.236000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 422.256000 86.000000 410.256000 1.000000 0.000000 0.000000 1.000000 X
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 408.236000 85.232000 396.236000 1.000000 0.000000 0.000000 1.000000 X
+drawChar 85.196000 408.236000 91.964000 396.236000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 92.000000 408.236000 95.828000 396.236000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.804000 408.236000 103.028000 396.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 103.004000 408.236000 110.684000 396.236000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 110.708000 408.236000 118.436000 396.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 118.412000 408.236000 125.636000 396.236000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 125.612000 408.236000 133.340000 396.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 133.316000 408.236000 140.408000 396.236000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 140.400000 408.236000 144.204000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.300000 408.236000 148.104000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.200000 408.236000 152.004000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.100000 408.236000 155.904000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.000000 408.236000 159.804000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 159.900000 408.236000 163.704000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 163.800000 408.236000 167.604000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 167.700000 408.236000 171.504000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 171.600000 408.236000 175.404000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 175.500000 408.236000 179.304000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.400000 408.236000 183.204000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.300000 408.236000 187.104000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.200000 408.236000 191.004000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.100000 408.236000 194.904000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.000000 408.236000 198.804000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 198.900000 408.236000 202.704000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 202.800000 408.236000 206.604000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 206.700000 408.236000 210.504000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 210.600000 408.236000 214.404000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 214.500000 408.236000 218.304000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.400000 408.236000 222.204000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.300000 408.236000 226.104000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.200000 408.236000 230.004000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.100000 408.236000 233.904000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.000000 408.236000 237.804000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 237.900000 408.236000 241.704000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 241.800000 408.236000 245.604000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 245.700000 408.236000 249.504000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 249.600000 408.236000 253.404000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 253.500000 408.236000 257.304000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.400000 408.236000 261.204000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.300000 408.236000 265.104000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.200000 408.236000 269.004000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.100000 408.236000 272.904000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.000000 408.236000 276.804000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 276.900000 408.236000 280.704000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 280.800000 408.236000 284.604000 396.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 284.400000 408.236000 292.032000 396.236000 1.000000 0.000000 0.000000 1.000000 4
+endTextObject
+restoreState
+saveState
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+updateFont 88 1 0 0 0 1200.000000 0 EAAAAA+DejaVuSerif-Bold
+drawChar 76.700000 394.256000 85.448000 382.256000 1.000000 0.000000 0.000000 1.000000 Z
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.700000 380.236000 85.028000 368.236000 1.000000 0.000000 0.000000 1.000000 Z
+drawChar 85.004000 380.236000 92.732000 368.236000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 92.708000 380.236000 99.428000 368.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 99.404000 380.236000 106.124000 368.236000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 106.100000 380.236000 113.828000 368.236000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 113.804000 380.236000 117.632000 368.236000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 117.608000 380.236000 125.336000 368.236000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 125.312000 380.236000 129.140000 368.236000 1.000000 0.000000 0.000000 1.000000 i
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 129.200000 380.236000 133.004000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 133.100000 380.236000 136.904000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 137.000000 380.236000 140.804000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 140.900000 380.236000 144.704000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 144.800000 380.236000 148.604000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 148.700000 380.236000 152.504000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 152.600000 380.236000 156.404000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 156.500000 380.236000 160.304000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 160.400000 380.236000 164.204000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 164.300000 380.236000 168.104000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 168.200000 380.236000 172.004000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 172.100000 380.236000 175.904000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 176.000000 380.236000 179.804000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 179.900000 380.236000 183.704000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 183.800000 380.236000 187.604000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 187.700000 380.236000 191.504000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 191.600000 380.236000 195.404000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 195.500000 380.236000 199.304000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 199.400000 380.236000 203.204000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 203.300000 380.236000 207.104000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 207.200000 380.236000 211.004000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 211.100000 380.236000 214.904000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 215.000000 380.236000 218.804000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 218.900000 380.236000 222.704000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 222.800000 380.236000 226.604000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 226.700000 380.236000 230.504000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 230.600000 380.236000 234.404000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 234.500000 380.236000 238.304000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 238.400000 380.236000 242.204000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 242.300000 380.236000 246.104000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 246.200000 380.236000 250.004000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 250.100000 380.236000 253.904000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 254.000000 380.236000 257.804000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 257.900000 380.236000 261.704000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 261.800000 380.236000 265.604000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 265.700000 380.236000 269.504000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 269.600000 380.236000 273.404000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 273.500000 380.236000 277.304000 368.236000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 1200.000000 0 DAAAAA+DejaVuSerif
+drawChar 276.700000 380.236000 284.332000 368.236000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 284.296000 380.236000 291.928000 368.236000 1.000000 0.000000 0.000000 1.000000 1
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 306.000000 136.200000 0 306.100000 136.200000 0 306.100000 644.700000 0 306.000000 644.700000 0 306.000000 136.200000 0
+restoreState
+saveState
+eoClipPath subpath 1 134.300000 15614.600000 0 477.900000 15614.600000 0 477.900000 15924.400000 0 134.300000 15924.400000 0 134.300000 15614.600000 0
+saveState
+updateCtm 34350.000000 0.000000 0.000000 -30980.000000 13430.000000 -1482270.000000
+drawSoftMaskedImage 458 413 458 413 JPEG 27507 PPM 567477
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 12625.600000 0 168.100000 12625.600000 0 168.100000 12630.600000 0 76.900000 12630.600000 0 76.900000 12625.600000 0
+eoFillPath subpath 1 163.100000 12630.500000 0 168.100000 12630.500000 0 168.100000 12761.100000 0 163.100000 12761.100000 0 163.100000 12630.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 12630.600000 0 163.100000 12630.600000 0 163.100000 12766.000000 0 72.000000 12766.000000 0 72.000000 12630.600000 0
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 78.700000 12761.680000 87.320000 12751.680000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 87.300000 12761.680000 93.420000 12751.680000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 93.400000 12761.680000 97.510000 12751.680000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 97.500000 12761.680000 101.420000 12751.680000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.400000 12761.680000 104.170000 12751.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.200000 12761.680000 110.530000 12751.680000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.500000 12761.680000 113.270000 12751.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 113.300000 12761.680000 116.470000 12751.680000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.500000 12761.680000 123.480000 12751.680000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 123.500000 12761.680000 129.610000 12751.680000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 129.600000 12761.680000 135.090000 12751.680000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 135.100000 12761.680000 140.890000 12751.680000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 140.900000 12761.680000 144.820000 12751.680000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 144.800000 12761.680000 150.920000 12751.680000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 150.900000 12761.680000 153.670000 12751.680000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 153.700000 12761.680000 156.470000 12751.680000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 12634.800000 0 168.200000 12634.800000 0 168.200000 12750.000000 0 72.000000 12750.000000 0 72.000000 12634.800000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12702.952000 79.253000 12693.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 80.504000 12702.952000 86.669000 12693.952000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 86.606000 12702.952000 90.215000 12693.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.206000 12702.952000 93.077000 12693.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.104000 12702.952000 97.406000 12693.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 98.000000 12702.952000 100.853000 12693.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.600000 12702.952000 107.324000 12693.952000 1.000000 0.000000 0.000000 1.000000 5
+drawChar 107.297000 12702.952000 112.337000 12693.952000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 112.400000 12702.952000 115.271000 12693.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 115.802000 12702.952000 118.655000 12693.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.303000 12702.952000 126.512000 12693.952000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 126.503000 12702.952000 130.805000 12693.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 130.805000 12702.952000 135.881000 12693.952000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.502000 12702.952000 139.355000 12693.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.102000 12702.952000 147.284000 12693.952000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 147.203000 12702.952000 150.074000 12693.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 150.101000 12702.952000 155.897000 12693.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 155.897000 12702.952000 158.750000 12693.952000 1.000000 0.000000 0.000000 1.000000 ,
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 12702.952000 161.853000 12693.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12692.452000 82.124000 12683.452000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 82.097000 12692.452000 87.137000 12683.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 87.200000 12692.452000 90.071000 12683.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 90.503000 12692.452000 93.356000 12683.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 93.905000 12692.452000 100.403000 12683.452000 1.000000 0.000000 0.000000 1.000000 V
+drawChar 99.602000 12692.452000 104.921000 12683.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.903000 12692.452000 109.205000 12683.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 109.205000 12692.452000 117.737000 12683.452000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 117.701000 12692.452000 123.119000 12683.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.200000 12692.452000 128.996000 12683.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 128.996000 12692.452000 132.605000 12683.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 132.596000 12692.452000 138.392000 12683.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 138.896000 12692.452000 141.749000 12683.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 142.298000 12692.452000 149.507000 12683.452000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 149.498000 12692.452000 153.800000 12683.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 153.800000 12692.452000 158.876000 12683.452000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 12692.452000 161.853000 12683.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12681.952000 81.764000 12672.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 12681.952000 87.596000 12672.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 87.596000 12681.952000 93.356000 12672.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.197000 12681.952000 102.050000 12672.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.098000 12681.952000 113.822000 12672.952000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 119.798000 12681.952000 122.651000 12672.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 128.699000 12681.952000 134.117000 12672.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 134.099000 12681.952000 138.401000 12672.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 144.296000 12681.952000 147.149000 12672.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 153.197000 12681.952000 158.921000 12672.952000 1.000000 0.000000 0.000000 1.000000 3
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 12681.952000 161.853000 12672.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12671.452000 79.271000 12662.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 12671.452000 84.338000 12662.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 84.302000 12671.452000 89.621000 12662.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 89.603000 12671.452000 94.643000 12662.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 94.706000 12671.452000 100.502000 12662.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 100.502000 12671.452000 106.262000 12662.452000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 106.199000 12671.452000 111.518000 12662.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.599000 12671.452000 116.216000 12662.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.396000 12671.452000 119.249000 12662.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 119.492000 12671.452000 122.363000 12662.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 122.390000 12671.452000 128.186000 12662.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 128.492000 12671.452000 131.345000 12662.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.696000 12671.452000 137.060000 12662.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.294000 12671.452000 140.147000 12662.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.390000 12671.452000 145.007000 12662.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 144.989000 12671.452000 148.598000 12662.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.589000 12671.452000 151.460000 12662.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.487000 12671.452000 155.789000 12662.452000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 12671.452000 158.933000 12662.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12660.952000 80.702000 12651.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 80.702000 12660.952000 83.573000 12651.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 83.600000 12660.952000 89.396000 12651.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.396000 12660.952000 95.156000 12651.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 97.694000 12660.952000 100.547000 12651.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.292000 12660.952000 109.052000 12651.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 109.088000 12660.952000 111.959000 12651.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.887000 12660.952000 117.251000 12651.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 117.287000 12660.952000 121.904000 12651.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 121.886000 12660.952000 126.503000 12651.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 126.485000 12660.952000 129.338000 12651.952000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 132.083000 12660.952000 134.936000 12651.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.681000 12660.952000 143.441000 12651.952000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 143.378000 12660.952000 148.796000 12651.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 148.778000 12660.952000 154.574000 12651.952000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 154.574000 12660.952000 158.876000 12651.952000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 159.000000 12660.952000 161.853000 12651.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12650.452000 79.271000 12641.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 12650.452000 85.094000 12641.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 12650.452000 88.703000 12641.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.694000 12650.452000 94.112000 12641.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 94.391000 12650.452000 97.244000 12641.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 97.694000 12650.452000 103.058000 12641.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 103.094000 12650.452000 108.890000 12641.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 109.097000 12650.452000 111.950000 12641.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 112.400000 12650.452000 115.271000 12641.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 115.298000 12650.452000 120.338000 12641.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 120.302000 12650.452000 125.621000 12641.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.603000 12650.452000 131.363000 12641.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 131.705000 12650.452000 134.558000 12641.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 135.008000 12650.452000 140.048000 12641.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 140.012000 12650.452000 145.430000 12641.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.511000 12650.452000 150.551000 12641.452000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 150.515000 12650.452000 155.960000 12641.452000 1.000000 0.000000 0.000000 1.000000 k
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 155.900000 12650.452000 158.933000 12641.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12639.952000 80.009000 12630.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 12639.952000 85.364000 12630.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 85.400000 12639.952000 88.271000 12630.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 88.298000 12639.952000 91.169000 12630.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 95.102000 12639.952000 97.955000 12630.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 102.005000 12639.952000 107.765000 12630.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 107.801000 12639.952000 110.672000 12630.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 110.600000 12639.952000 115.964000 12630.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 116.000000 12639.952000 120.617000 12630.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 120.599000 12639.952000 125.216000 12630.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 125.198000 12639.952000 128.051000 12630.952000 1.000000 0.000000 0.000000 1.000000 .
+drawChar 132.101000 12639.952000 134.954000 12630.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 139.103000 12639.952000 146.285000 12630.952000 1.000000 0.000000 0.000000 1.000000 G
+drawChar 146.303000 12639.952000 151.667000 12630.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.604000 12639.952000 155.906000 12630.952000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.000000 12639.952000 159.033000 12630.952000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 12630.500000 0 72.100000 12630.500000 0 72.100000 12766.000000 0 72.000000 12766.000000 0 72.000000 12630.500000 0
+eoFillPath subpath 1 163.100000 12630.500000 0 163.200000 12630.500000 0 163.200000 12766.000000 0 163.100000 12766.000000 0 163.100000 12630.500000 0
+eoFillPath subpath 1 72.000000 12765.900000 0 163.200000 12765.900000 0 163.200000 12766.000000 0 72.000000 12766.000000 0 72.000000 12765.900000 0
+eoFillPath subpath 1 72.000000 12630.500000 0 163.200000 12630.500000 0 163.200000 12630.600000 0 72.000000 12630.600000 0 72.000000 12630.500000 0
+saveState
+eoClipPath subpath 1 96.900000 12705.800000 0 138.300000 12705.800000 0 138.300000 12750.000000 0 96.900000 12750.000000 0 96.900000 12705.800000 0
+saveState
+updateCtm 4140.000000 0.000000 0.000000 -4410.000000 9690.000000 -1191390.000000
+drawSoftMaskedImage 55 59 55 59 JPEG 2053 PPM 9748
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 12351.000000 0 165.500000 12351.000000 0 165.500000 12356.000000 0 76.900000 12356.000000 0 76.900000 12351.000000 0
+eoFillPath subpath 1 160.500000 12355.900000 0 165.500000 12355.900000 0 165.500000 12512.200000 0 160.500000 12512.200000 0 160.500000 12355.900000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 12356.000000 0 121.400000 12356.000000 0 121.400000 12517.100000 0 72.000000 12517.100000 0 72.000000 12356.000000 0
+saveState
+eoClipPath subpath 1 72.000000 12355.900000 0 160.500000 12355.900000 0 160.500000 12517.000000 0 72.000000 12517.000000 0 72.000000 12355.900000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -1154690.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 82.300000 12512.780000 89.280000 12502.780000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 89.300000 12512.780000 95.630000 12502.780000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 95.600000 12512.780000 99.520000 12502.780000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 99.500000 12512.780000 102.270000 12502.780000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.300000 12512.780000 108.450000 12502.780000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 108.500000 12512.780000 112.610000 12502.780000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.600000 12512.780000 118.510000 12502.780000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 118.500000 12512.780000 121.670000 12502.780000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.700000 12512.780000 124.470000 12502.780000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 124.500000 12512.780000 130.830000 12502.780000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 130.800000 12512.780000 133.970000 12502.780000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.000000 12512.780000 137.920000 12502.780000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.900000 12512.780000 144.230000 12502.780000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 144.200000 12512.780000 150.350000 12502.780000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 150.400000 12512.780000 153.570000 12502.780000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+updateFont 108 1 0 0 0 1000.000000 0 CAAAAA+DejaVuSans
+drawChar 87.300000 12501.080000 95.000000 12491.080000 1.000000 0.000000 0.000000 1.000000 D
+drawChar 95.000000 12501.080000 97.770000 12491.080000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 97.800000 12501.080000 103.000000 12491.080000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.000000 12501.080000 109.330000 12491.080000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 109.300000 12501.080000 117.470000 12491.080000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 117.500000 12501.080000 123.620000 12491.080000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 123.600000 12501.080000 128.800000 12491.080000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 128.800000 12501.080000 135.130000 12491.080000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 135.100000 12501.080000 141.250000 12491.080000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 141.300000 12501.080000 145.410000 12491.080000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12486.252000 82.961000 12477.252000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 82.997000 12486.252000 87.614000 12477.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 87.596000 12486.252000 93.356000 12477.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 93.293000 12486.252000 98.612000 12477.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 98.693000 12486.252000 103.733000 12477.252000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 103.697000 12486.252000 106.568000 12477.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.595000 12486.252000 111.959000 12477.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 111.995000 12486.252000 114.866000 12477.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 114.794000 12486.252000 117.665000 12477.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 117.692000 12486.252000 122.768000 12477.252000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 122.894000 12486.252000 125.747000 12477.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 125.891000 12486.252000 131.651000 12477.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 131.588000 12486.252000 136.907000 12477.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 136.889000 12486.252000 142.307000 12477.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 142.289000 12486.252000 148.049000 12477.252000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 148.085000 12486.252000 150.956000 12477.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.983000 12486.252000 156.302000 12477.252000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 12486.252000 159.253000 12477.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12475.752000 84.095000 12466.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 12475.752000 89.900000 12466.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.900000 12475.752000 95.318000 12466.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 97.496000 12475.752000 100.349000 12466.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 104.795000 12475.752000 110.789000 12466.752000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 108.593000 12475.752000 111.464000 12466.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 111.491000 12475.752000 114.362000 12466.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 116.495000 12475.752000 119.348000 12466.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 121.598000 12475.752000 126.962000 12466.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 129.194000 12475.752000 132.047000 12466.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.198000 12475.752000 139.958000 12466.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.994000 12475.752000 142.865000 12466.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 142.793000 12475.752000 147.410000 12466.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 147.491000 12475.752000 153.287000 12466.752000 1.000000 0.000000 0.000000 1.000000 h
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 12475.752000 156.333000 12466.752000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12465.252000 84.095000 12456.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 12465.252000 89.468000 12456.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 12465.252000 94.121000 12456.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 94.103000 12465.252000 99.899000 12456.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 99.899000 12465.252000 105.218000 12456.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 105.200000 12465.252000 109.502000 12456.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 112.796000 12465.252000 115.649000 12456.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 118.997000 12465.252000 122.327000 12456.252000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 122.300000 12465.252000 127.718000 12456.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.700000 12465.252000 132.002000 12456.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 135.296000 12465.252000 138.149000 12456.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.596000 12465.252000 145.205000 12456.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.196000 12465.252000 150.992000 12456.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.992000 12465.252000 156.311000 12456.252000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 12465.252000 159.253000 12456.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12454.752000 82.394000 12445.752000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 82.403000 12454.752000 86.705000 12445.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 86.705000 12454.752000 91.322000 12445.752000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 91.304000 12454.752000 94.913000 12445.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 95.201000 12454.752000 98.054000 12445.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.405000 12454.752000 102.014000 12445.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.005000 12454.752000 104.876000 12445.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.903000 12454.752000 113.435000 12445.752000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 113.399000 12454.752000 118.718000 12445.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.096000 12454.752000 121.949000 12445.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.192000 12454.752000 125.063000 12445.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 125.090000 12454.752000 130.886000 12445.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 131.192000 12454.752000 134.045000 12445.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 134.396000 12454.752000 138.005000 12445.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 137.996000 12454.752000 143.792000 12445.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 143.792000 12454.752000 149.111000 12445.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 149.093000 12454.752000 151.964000 12445.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.991000 12454.752000 156.293000 12445.752000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 12454.752000 159.153000 12445.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12444.252000 79.271000 12435.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 79.298000 12444.252000 82.169000 12435.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.196000 12444.252000 85.526000 12435.252000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.499000 12444.252000 90.818000 12435.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.601000 12444.252000 94.454000 12435.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 95.399000 12444.252000 99.008000 12435.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 98.999000 12444.252000 104.318000 12435.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.300000 12444.252000 110.096000 12435.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 110.096000 12444.252000 115.856000 12435.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 116.693000 12444.252000 119.546000 12435.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.392000 12444.252000 124.001000 12435.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 124.091000 12444.252000 129.509000 12435.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.292000 12444.252000 133.145000 12435.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.991000 12444.252000 139.751000 12435.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 139.787000 12444.252000 145.205000 12435.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 145.988000 12444.252000 148.841000 12435.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 149.786000 12444.252000 152.657000 12435.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 152.684000 12444.252000 156.293000 12435.252000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 12444.252000 159.253000 12435.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12433.752000 84.095000 12424.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 12433.752000 88.406000 12424.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 88.406000 12433.752000 93.824000 12424.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 93.806000 12433.752000 99.602000 12424.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 99.602000 12433.752000 105.362000 12424.752000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 105.398000 12433.752000 108.422000 12424.752000 1.000000 0.000000 0.000000 1.000000 :
+drawChar 113.894000 12433.752000 116.747000 12424.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.390000 12433.752000 129.275000 12424.752000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 129.293000 12433.752000 135.089000 12424.752000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 135.089000 12433.752000 138.698000 12424.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.689000 12433.752000 141.560000 12424.752000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 141.587000 12433.752000 146.906000 12424.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 12433.752000 151.190000 12424.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.190000 12433.752000 156.266000 12424.752000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 12433.752000 159.253000 12424.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12423.252000 82.196000 12414.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 12423.252000 87.560000 12414.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 12423.252000 92.213000 12414.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 93.698000 12423.252000 96.551000 12414.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.099000 12423.252000 101.708000 12414.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.798000 12423.252000 107.216000 12414.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.800000 12423.252000 111.653000 12414.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 113.201000 12423.252000 118.961000 12414.252000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 118.997000 12423.252000 124.316000 12414.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.801000 12423.252000 128.654000 12414.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 130.301000 12423.252000 133.172000 12414.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 133.199000 12423.252000 138.995000 12414.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 138.995000 12423.252000 143.612000 12414.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 143.594000 12423.252000 148.913000 12414.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.895000 12423.252000 153.197000 12414.252000 1.000000 0.000000 0.000000 1.000000 r
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 12423.252000 156.333000 12414.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12412.752000 80.009000 12403.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 12412.752000 85.319000 12403.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 85.301000 12412.752000 91.061000 12403.752000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 97.199000 12412.752000 100.052000 12403.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 106.298000 12412.752000 113.993000 12403.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 114.002000 12412.752000 116.873000 12403.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 116.801000 12412.752000 120.410000 12403.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 120.500000 12412.752000 126.296000 12403.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 132.497000 12412.752000 135.350000 12403.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.497000 12412.752000 145.106000 12403.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.097000 12412.752000 150.893000 12403.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 150.893000 12412.752000 156.212000 12403.752000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 12412.752000 159.253000 12403.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12402.252000 82.196000 12393.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 82.196000 12402.252000 87.560000 12393.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 87.596000 12402.252000 93.392000 12393.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 93.392000 12402.252000 99.152000 12393.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 99.089000 12402.252000 101.960000 12393.252000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 101.987000 12402.252000 107.306000 12393.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 107.288000 12402.252000 111.905000 12393.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 112.787000 12402.252000 115.640000 12393.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 116.684000 12402.252000 122.444000 12393.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 122.480000 12402.252000 127.898000 12393.252000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 127.880000 12402.252000 135.575000 12393.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 135.584000 12402.252000 141.380000 12393.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 142.388000 12402.252000 145.241000 12393.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 146.186000 12402.252000 150.803000 12393.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 150.884000 12402.252000 156.302000 12393.252000 1.000000 0.000000 0.000000 1.000000 o
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 12402.252000 159.253000 12393.252000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12391.752000 80.009000 12382.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 12391.752000 85.796000 12382.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 85.796000 12391.752000 91.115000 12382.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 91.097000 12391.752000 95.399000 12382.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 95.399000 12391.752000 100.718000 12382.752000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 104.201000 12391.752000 107.054000 12382.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.402000 12391.752000 118.097000 12382.752000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 118.106000 12391.752000 123.524000 12382.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 123.605000 12391.752000 129.401000 12382.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 129.302000 12391.752000 131.768000 12382.752000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 131.804000 12391.752000 135.413000 12382.752000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 138.806000 12391.752000 141.659000 12382.752000 1.000000 0.000000 0.000000 1.000000
+drawChar 145.205000 12391.752000 150.965000 12382.752000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 151.001000 12391.752000 156.320000 12382.752000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 12391.752000 159.253000 12382.752000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12381.252000 81.017000 12372.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 80.999000 12381.252000 84.608000 12372.252000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 84.599000 12381.252000 89.963000 12372.252000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.999000 12381.252000 92.870000 12372.252000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 92.897000 12381.252000 98.693000 12372.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 98.693000 12381.252000 103.310000 12372.252000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 104.390000 12381.252000 107.243000 12372.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 108.386000 12381.252000 116.081000 12372.252000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 116.090000 12381.252000 121.886000 12372.252000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 121.886000 12381.252000 127.205000 12372.252000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 127.187000 12381.252000 132.983000 12372.252000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.090000 12381.252000 136.943000 12372.252000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.086000 12381.252000 143.846000 12372.252000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 143.882000 12381.252000 148.184000 12372.252000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 148.184000 12381.252000 153.260000 12372.252000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 12381.252000 156.433000 12372.252000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 12370.752000 79.271000 12361.752000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 12370.752000 85.094000 12361.752000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 12370.752000 90.854000 12361.752000 1.000000 0.000000 0.000000 1.000000 g
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 90.800000 12370.752000 93.653000 12361.752000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 12355.900000 0 72.100000 12355.900000 0 72.100000 12517.100000 0 72.000000 12517.100000 0 72.000000 12355.900000 0
+eoFillPath subpath 1 160.500000 12355.900000 0 160.600000 12355.900000 0 160.600000 12517.100000 0 160.500000 12517.100000 0 160.500000 12355.900000 0
+eoFillPath subpath 1 72.000000 12517.000000 0 160.600000 12517.000000 0 160.600000 12517.100000 0 72.000000 12517.100000 0 72.000000 12517.000000 0
+eoFillPath subpath 1 72.000000 12355.900000 0 160.600000 12355.900000 0 160.600000 12356.000000 0 72.000000 12356.000000 0 72.000000 12355.900000 0
+saveState
+eoClipPath subpath 1 108.000000 11868.500000 0 178.900000 11868.500000 0 178.900000 11925.200000 0 108.000000 11925.200000 0 108.000000 11868.500000 0
+saveState
+updateCtm 7080.000000 0.000000 0.000000 -5660.000000 10800.000000 -1107660.000000
+drawSoftMaskedImage 75 59 75 59 JPEG 3139 PPM 13288
+restoreState
+restoreState
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 7810.200000 0 165.500000 7810.200000 0 165.500000 7815.200000 0 76.900000 7815.200000 0 76.900000 7810.200000 0
+eoFillPath subpath 1 160.500000 7815.100000 0 165.500000 7815.100000 0 165.500000 7923.900000 0 160.500000 7923.900000 0 160.500000 7815.100000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 7815.200000 0 160.500000 7815.200000 0 160.500000 7928.800000 0 72.000000 7928.800000 0 72.000000 7815.200000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7924.452000 83.771000 7915.452000 1.000000 0.000000 0.000000 1.000000 O
+drawChar 83.798000 7924.452000 89.594000 7915.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 89.594000 7924.452000 92.465000 7915.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 92.492000 7924.452000 97.568000 7915.452000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.090000 7924.452000 100.943000 7915.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 101.591000 7924.452000 106.955000 7915.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 107.594000 7924.452000 110.447000 7915.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 111.095000 7924.452000 114.425000 7915.452000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 114.398000 7924.452000 119.717000 7915.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 119.798000 7924.452000 127.493000 7915.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 128.096000 7924.452000 130.949000 7915.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 131.498000 7924.452000 136.574000 7915.452000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 136.601000 7924.452000 141.920000 7915.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 142.001000 7924.452000 147.365000 7915.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 147.401000 7924.452000 151.703000 7915.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 151.703000 7924.452000 156.320000 7915.452000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.300000 7924.452000 159.153000 7915.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7913.952000 81.764000 7904.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 81.800000 7913.952000 85.130000 7904.952000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 85.103000 7913.952000 88.712000 7904.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 88.703000 7913.952000 94.022000 7904.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 94.004000 7913.952000 98.306000 7904.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 7913.952000 102.455000 7904.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 103.805000 7913.952000 106.676000 7904.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 106.703000 7913.952000 110.312000 7904.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 110.303000 7913.952000 114.920000 7904.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 116.207000 7913.952000 119.060000 7904.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 120.410000 7913.952000 125.450000 7904.952000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 125.414000 7913.952000 130.832000 7904.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 130.913000 7913.952000 139.445000 7904.952000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 139.409000 7913.952000 145.169000 7904.952000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 145.205000 7913.952000 148.076000 7904.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 148.004000 7913.952000 153.323000 7904.952000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 7913.952000 156.433000 7904.952000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7903.452000 80.009000 7894.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 80.000000 7903.452000 82.871000 7894.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 82.898000 7903.452000 88.316000 7894.452000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 88.298000 7903.452000 94.094000 7894.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 94.094000 7903.452000 96.947000 7894.452000 1.000000 0.000000 0.000000 1.000000 ,
+drawChar 102.095000 7903.452000 104.948000 7894.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 110.096000 7903.452000 113.705000 7894.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 113.696000 7903.452000 119.492000 7894.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.492000 7903.452000 124.811000 7894.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.995000 7903.452000 132.848000 7894.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 137.996000 7903.452000 141.605000 7894.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 141.596000 7903.452000 144.467000 7894.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.494000 7903.452000 148.103000 7894.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 148.094000 7903.452000 150.965000 7894.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 150.992000 7903.452000 156.311000 7894.452000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7903.452000 159.253000 7894.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7892.952000 80.999000 7883.952000 1.000000 0.000000 0.000000 1.000000 “
+drawChar 81.296000 7892.952000 90.539000 7883.952000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 89.900000 7892.952000 95.318000 7883.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 95.300000 7892.952000 99.602000 7883.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 99.602000 7892.952000 102.473000 7883.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 102.500000 7892.952000 108.260000 7883.952000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 108.296000 7892.952000 110.762000 7883.952000 1.000000 0.000000 0.000000 1.000000 '
+drawChar 110.699000 7892.952000 115.316000 7883.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 119.303000 7892.952000 122.156000 7883.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 126.305000 7892.952000 132.299000 7883.952000 1.000000 0.000000 0.000000 1.000000 T
+drawChar 131.606000 7892.952000 136.970000 7883.952000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 137.006000 7892.952000 139.877000 7883.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 139.904000 7892.952000 142.775000 7883.952000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 142.703000 7892.952000 148.022000 7883.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.103000 7892.952000 152.720000 7883.952000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 152.702000 7892.952000 156.311000 7883.952000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7892.952000 159.253000 7883.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7882.452000 83.006000 7873.452000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 82.997000 7882.452000 88.793000 7873.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 88.793000 7882.452000 91.664000 7873.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 91.691000 7882.452000 94.562000 7873.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 94.589000 7882.452000 100.349000 7873.452000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 100.286000 7882.452000 103.157000 7873.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 103.184000 7882.452000 108.980000 7873.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 108.980000 7882.452000 114.740000 7873.452000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 114.776000 7882.452000 119.375000 7873.452000 1.000000 0.000000 0.000000 1.000000 â€
+drawChar 125.180000 7882.452000 128.033000 7873.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 133.784000 7882.452000 141.479000 7873.452000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 141.488000 7882.452000 146.807000 7873.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 146.888000 7882.452000 152.684000 7873.452000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 152.684000 7882.452000 156.293000 7873.452000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7882.452000 159.253000 7873.452000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7871.952000 79.730000 7862.952000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 79.703000 7871.952000 84.005000 7862.952000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 84.005000 7871.952000 89.423000 7862.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 89.504000 7871.952000 98.036000 7862.952000 1.000000 0.000000 0.000000 1.000000 m
+drawChar 118.304000 7871.952000 121.157000 7862.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 141.506000 7871.952000 145.115000 7862.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 145.205000 7871.952000 151.001000 7862.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 151.001000 7871.952000 156.320000 7862.952000 1.000000 0.000000 0.000000 1.000000 e
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 156.400000 7871.952000 159.253000 7862.952000 1.000000 0.000000 0.000000 1.000000
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7861.452000 83.285000 7852.452000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 83.303000 7861.452000 89.099000 7852.452000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 89.099000 7861.452000 93.401000 7852.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 93.401000 7861.452000 98.477000 7852.452000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 98.504000 7861.452000 103.121000 7852.452000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 103.103000 7861.452000 105.974000 7852.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 106.001000 7861.452000 111.320000 7852.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 111.302000 7861.452000 115.604000 7852.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 121.004000 7861.452000 123.857000 7852.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.401000 7861.452000 136.007000 7852.452000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.998000 7861.452000 141.794000 7852.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.794000 7861.452000 144.665000 7852.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.593000 7861.452000 147.464000 7852.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.491000 7861.452000 153.251000 7852.452000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 7861.452000 156.433000 7852.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7850.952000 79.271000 7841.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 7850.952000 85.094000 7841.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 7850.952000 90.854000 7841.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 93.293000 7850.952000 96.146000 7841.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 98.693000 7850.952000 102.302000 7841.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 102.293000 7850.952000 107.711000 7841.952000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 110.195000 7850.952000 113.048000 7841.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 115.595000 7850.952000 119.204000 7841.952000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 119.195000 7850.952000 124.991000 7841.952000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 124.991000 7850.952000 130.310000 7841.952000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 132.794000 7850.952000 135.647000 7841.952000 1.000000 0.000000 0.000000 1.000000
+drawChar 138.194000 7850.952000 144.755000 7841.952000 1.000000 0.000000 0.000000 1.000000 E
+drawChar 144.791000 7850.952000 153.323000 7841.952000 1.000000 0.000000 0.000000 1.000000 m
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.300000 7850.952000 156.333000 7841.952000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7840.452000 82.160000 7831.452000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 82.196000 7840.452000 85.067000 7831.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 84.995000 7840.452000 89.297000 7831.452000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 89.297000 7840.452000 94.616000 7831.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 95.894000 7840.452000 98.747000 7831.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 99.890000 7840.452000 106.055000 7831.452000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 106.091000 7840.452000 109.700000 7831.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 109.691000 7840.452000 115.055000 7831.452000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 114.992000 7840.452000 118.601000 7831.452000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 118.691000 7840.452000 124.010000 7831.452000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 125.189000 7840.452000 128.042000 7831.452000 1.000000 0.000000 0.000000 1.000000
+drawChar 129.392000 7840.452000 135.998000 7831.452000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 135.989000 7840.452000 141.785000 7831.452000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 141.785000 7840.452000 144.656000 7831.452000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 144.683000 7840.452000 147.554000 7831.452000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 147.581000 7840.452000 153.341000 7831.452000 1.000000 0.000000 0.000000 1.000000 d
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 153.400000 7840.452000 156.433000 7831.452000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 7829.952000 79.271000 7820.952000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 79.298000 7829.952000 85.094000 7820.952000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 85.094000 7829.952000 90.854000 7820.952000 1.000000 0.000000 0.000000 1.000000 g
+drawChar 90.890000 7829.952000 93.743000 7820.952000 1.000000 0.000000 0.000000 1.000000 .
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 7815.100000 0 72.100000 7815.100000 0 72.100000 7928.800000 0 72.000000 7928.800000 0 72.000000 7815.100000 0
+eoFillPath subpath 1 160.500000 7815.100000 0 160.600000 7815.100000 0 160.600000 7928.800000 0 160.500000 7928.800000 0 160.500000 7815.100000 0
+eoFillPath subpath 1 72.000000 7928.700000 0 160.600000 7928.700000 0 160.600000 7928.800000 0 72.000000 7928.800000 0 72.000000 7928.700000 0
+eoFillPath subpath 1 72.000000 7815.100000 0 160.600000 7815.100000 0 160.600000 7815.200000 0 72.000000 7815.200000 0 72.000000 7815.100000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 76.900000 14004.600000 0 169.600000 14004.600000 0 169.600000 14009.600000 0 76.900000 14009.600000 0 76.900000 14004.600000 0
+eoFillPath subpath 1 164.600000 14009.500000 0 169.600000 14009.500000 0 169.600000 14125.100000 0 164.600000 14125.100000 0 164.600000 14009.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 14009.600000 0 121.400000 14009.600000 0 121.400000 14130.000000 0 72.000000 14130.000000 0 72.000000 14009.600000 0
+saveState
+eoClipPath subpath 1 72.000000 14009.500000 0 164.600000 14009.500000 0 164.600000 14129.900000 0 72.000000 14129.900000 0 72.000000 14009.500000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+saveState
+updateCtm 33310.000000 0.000000 0.000000 -30040.000000 12140.000000 -1315930.000000
+drawImage 458 413 0 JPEG 8655
+restoreState
+restoreState
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 14079.500000 0 93.700000 14079.500000 0 93.700000 14098.700000 0 72.000000 14098.700000 0 72.000000 14079.500000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 14079.500000 0 169.600000 14079.500000 0 169.600000 14098.700000 0 93.700000 14098.700000 0 93.700000 14079.500000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 14062.800000 0 93.700000 14062.800000 0 93.700000 14079.500000 0 72.000000 14079.500000 0 72.000000 14062.800000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 14062.800000 0 169.600000 14062.800000 0 169.600000 14079.500000 0 93.700000 14079.500000 0 93.700000 14062.800000 0
+updateFillColor 0.000000 0.000000 1.000000 1.000000
+eoFillPath subpath 1 72.000000 14043.600000 0 93.700000 14043.600000 0 93.700000 14062.800000 0 72.000000 14062.800000 0 72.000000 14043.600000 0
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+eoFillPath subpath 1 93.700000 14043.600000 0 169.600000 14043.600000 0 169.600000 14062.800000 0 93.700000 14062.800000 0 93.700000 14043.600000 0
+updateFillColor 1.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 14024.400000 0 93.700000 14024.400000 0 93.700000 14043.600000 0 72.000000 14043.600000 0 72.000000 14024.400000 0
+updateFillColor 1.000000 1.000000 0.000000 1.000000
+eoFillPath subpath 1 93.700000 14024.400000 0 169.600000 14024.400000 0 169.600000 14043.600000 0 93.700000 14043.600000 0 93.700000 14024.400000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 14125.652000 82.898000 14116.652000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 82.898000 14125.652000 87.200000 14116.652000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 87.200000 14125.652000 90.809000 14116.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 90.800000 14125.652000 93.671000 14116.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 93.698000 14125.652000 98.315000 14116.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 98.297000 14125.652000 101.906000 14116.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 101.897000 14125.652000 106.514000 14116.652000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 106.901000 14125.652000 109.754000 14116.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 109.997000 14125.652000 112.868000 14116.652000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 112.895000 14125.652000 118.691000 14116.652000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 118.997000 14125.652000 121.850000 14116.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 122.093000 14125.652000 125.702000 14116.652000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 125.792000 14125.652000 131.588000 14116.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 131.588000 14125.652000 136.907000 14116.652000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 137.186000 14125.652000 140.039000 14116.652000 1.000000 0.000000 0.000000 1.000000
+drawChar 140.282000 14125.652000 146.078000 14116.652000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 146.078000 14125.652000 151.442000 14116.652000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 151.478000 14125.652000 154.349000 14116.652000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 154.277000 14125.652000 157.148000 14116.652000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 157.400000 14125.652000 160.433000 14116.652000 1.000000 0.000000 0.000000 1.000000 -
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 76.400000 14115.152000 84.095000 14106.152000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 84.104000 14115.152000 89.468000 14106.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 89.504000 14115.152000 94.580000 14106.152000 1.000000 0.000000 0.000000 1.000000 y
+drawChar 94.607000 14115.152000 97.631000 14106.152000 1.000000 0.000000 0.000000 1.000000 :
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 14094.752000 104.443000 14085.752000 1.000000 0.000000 0.000000 1.000000 W
+drawChar 103.696000 14094.752000 109.060000 14085.752000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 109.096000 14094.752000 113.398000 14085.752000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 113.398000 14094.752000 119.194000 14085.752000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 119.194000 14094.752000 124.612000 14085.752000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 124.594000 14094.752000 127.465000 14085.752000 1.000000 0.000000 0.000000 1.000000 l
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 14078.052000 101.176000 14069.052000 1.000000 0.000000 0.000000 1.000000 L
+drawChar 101.203000 14078.052000 104.074000 14069.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 104.101000 14078.052000 109.420000 14069.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 109.402000 14078.052000 114.442000 14069.052000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 114.406000 14078.052000 120.202000 14069.052000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 120.202000 14078.052000 123.811000 14069.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 123.802000 14078.052000 129.121000 14069.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 129.103000 14078.052000 134.899000 14069.052000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 134.899000 14078.052000 139.516000 14069.052000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 139.498000 14078.052000 143.107000 14069.052000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 143.098000 14078.052000 148.417000 14069.052000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 148.399000 14078.052000 151.270000 14069.052000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 151.297000 14078.052000 157.093000 14069.052000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 14061.352000 103.048000 14052.352000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 103.003000 14061.352000 108.421000 14052.352000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 108.403000 14061.352000 113.443000 14052.352000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 113.407000 14061.352000 118.852000 14052.352000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 118.906000 14061.352000 124.702000 14052.352000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 124.702000 14061.352000 130.021000 14052.352000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 130.003000 14061.352000 135.079000 14052.352000 1.000000 0.000000 0.000000 1.000000 y
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 98 1 0 0 0 900.000000 0 DAAAAA+DejaVuSerif
+drawChar 95.200000 14042.152000 104.407000 14033.152000 1.000000 0.000000 0.000000 1.000000 M
+drawChar 104.398000 14042.152000 109.816000 14033.152000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 109.798000 14042.152000 115.594000 14033.152000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 115.594000 14042.152000 121.354000 14033.152000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 121.390000 14042.152000 125.692000 14033.152000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 125.692000 14042.152000 128.563000 14033.152000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 128.590000 14042.152000 133.954000 14033.152000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 133.990000 14042.152000 139.786000 14033.152000 1.000000 0.000000 0.000000 1.000000 n
+endTextObject
+restoreState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 72.000000 14009.500000 0 72.100000 14009.500000 0 72.100000 14130.000000 0 72.000000 14130.000000 0 72.000000 14009.500000 0
+eoFillPath subpath 1 164.600000 14009.500000 0 164.700000 14009.500000 0 164.700000 14130.000000 0 164.600000 14130.000000 0 164.600000 14009.500000 0
+eoFillPath subpath 1 72.000000 14129.900000 0 164.700000 14129.900000 0 164.700000 14130.000000 0 72.000000 14130.000000 0 72.000000 14129.900000 0
+eoFillPath subpath 1 72.000000 14009.500000 0 164.700000 14009.500000 0 164.700000 14009.600000 0 72.000000 14009.600000 0 72.000000 14009.500000 0
+eoFillPath subpath 1 91.300000 14024.400000 0 93.700000 14024.400000 0 93.700000 14098.700000 0 91.300000 14098.700000 0 91.300000 14024.400000 0
+eoFillPath subpath 1 72.000000 14043.600000 0 169.600000 14043.600000 0 169.600000 14046.000000 0 72.000000 14046.000000 0 72.000000 14043.600000 0
+eoFillPath subpath 1 72.000000 14096.300000 0 169.600000 14096.300000 0 169.600000 14098.700000 0 72.000000 14098.700000 0 72.000000 14096.300000 0
+eoFillPath subpath 1 72.000000 14024.400000 0 169.600000 14024.400000 0 169.600000 14026.800000 0 72.000000 14026.800000 0 72.000000 14024.400000 0
+saveState
+eoClipPath subpath 1 108.000000 6158.400000 0 150.800000 6158.400000 0 150.800000 6202.700000 0 108.000000 6202.700000 0 108.000000 6158.400000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4420.000000 10800.000000 -536650.000000
+drawSoftMaskedImage 57 59 57 59 JPEG 2757 PPM 10102
+restoreState
+restoreState
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 186.800000 5308.500000 0 499.600000 5308.500000 0 499.600000 5313.600000 0 186.800000 5313.600000 0 186.800000 5308.500000 0
+eoFillPath subpath 1 494.500000 5313.500000 0 499.600000 5313.500000 0 499.600000 5501.900000 0 494.500000 5501.900000 0 494.500000 5313.500000 0
+saveState
+eoClipPath subpath 1 181.800000 5313.500000 0 494.500000 5313.500000 0 494.500000 5506.800000 0 181.800000 5506.800000 0 181.800000 5313.500000 0
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+eoFillPath subpath 1 181.700000 5506.900000 0 494.500000 5506.900000 0 494.500000 5506.900000 0 181.700000 5506.900000 0
+eoFillPath subpath 1 181.700000 5506.900000 0 494.500000 5506.900000 0 494.500000 5506.100000 0 181.700000 5506.100000 0 181.700000 5506.900000 0
+eoFillPath subpath 1 181.700000 5506.100000 0 494.500000 5506.100000 0 494.500000 5505.400000 0 181.700000 5505.400000 0 181.700000 5506.100000 0
+updateFillColor 0.003906 0.003906 0.003906 1.000000
+eoFillPath subpath 1 181.700000 5505.400000 0 494.500000 5505.400000 0 494.500000 5504.600000 0 181.700000 5504.600000 0 181.700000 5505.400000 0
+updateFillColor 0.007828 0.007828 0.007828 1.000000
+eoFillPath subpath 1 181.700000 5504.600000 0 494.500000 5504.600000 0 494.500000 5503.800000 0 181.700000 5503.800000 0 181.700000 5504.600000 0
+updateFillColor 0.011749 0.011749 0.011749 1.000000
+eoFillPath subpath 1 181.700000 5503.800000 0 494.500000 5503.800000 0 494.500000 5503.100000 0 181.700000 5503.100000 0 181.700000 5503.800000 0
+updateFillColor 0.015671 0.015671 0.015671 1.000000
+eoFillPath subpath 1 181.700000 5503.100000 0 494.500000 5503.100000 0 494.500000 5502.300000 0 181.700000 5502.300000 0 181.700000 5503.100000 0
+updateFillColor 0.019592 0.019592 0.019592 1.000000
+eoFillPath subpath 1 181.700000 5502.300000 0 494.500000 5502.300000 0 494.500000 5501.600000 0 181.700000 5501.600000 0 181.700000 5502.300000 0
+updateFillColor 0.023514 0.023514 0.023514 1.000000
+eoFillPath subpath 1 181.700000 5501.600000 0 494.500000 5501.600000 0 494.500000 5500.800000 0 181.700000 5500.800000 0 181.700000 5501.600000 0
+updateFillColor 0.027435 0.027435 0.027435 1.000000
+eoFillPath subpath 1 181.700000 5500.800000 0 494.500000 5500.800000 0 494.500000 5500.100000 0 181.700000 5500.100000 0 181.700000 5500.800000 0
+updateFillColor 0.031357 0.031357 0.031357 1.000000
+eoFillPath subpath 1 181.700000 5500.100000 0 494.500000 5500.100000 0 494.500000 5499.300000 0 181.700000 5499.300000 0 181.700000 5500.100000 0
+updateFillColor 0.035278 0.035278 0.035278 1.000000
+eoFillPath subpath 1 181.700000 5499.300000 0 494.500000 5499.300000 0 494.500000 5498.500000 0 181.700000 5498.500000 0 181.700000 5499.300000 0
+updateFillColor 0.039200 0.039200 0.039200 1.000000
+eoFillPath subpath 1 181.700000 5498.500000 0 494.500000 5498.500000 0 494.500000 5497.800000 0 181.700000 5497.800000 0 181.700000 5498.500000 0
+updateFillColor 0.043121 0.043121 0.043121 1.000000
+eoFillPath subpath 1 181.700000 5497.800000 0 494.500000 5497.800000 0 494.500000 5497.000000 0 181.700000 5497.000000 0 181.700000 5497.800000 0
+updateFillColor 0.047043 0.047043 0.047043 1.000000
+eoFillPath subpath 1 181.700000 5497.000000 0 494.500000 5497.000000 0 494.500000 5496.300000 0 181.700000 5496.300000 0 181.700000 5497.000000 0
+updateFillColor 0.050980 0.050980 0.050980 1.000000
+eoFillPath subpath 1 181.700000 5496.300000 0 494.500000 5496.300000 0 494.500000 5495.500000 0 181.700000 5495.500000 0 181.700000 5496.300000 0
+updateFillColor 0.054886 0.054886 0.054886 1.000000
+eoFillPath subpath 1 181.700000 5495.500000 0 494.500000 5495.500000 0 494.500000 5494.700000 0 181.700000 5494.700000 0 181.700000 5495.500000 0
+updateFillColor 0.058807 0.058807 0.058807 1.000000
+eoFillPath subpath 1 181.700000 5494.700000 0 494.500000 5494.700000 0 494.500000 5494.000000 0 181.700000 5494.000000 0 181.700000 5494.700000 0
+updateFillColor 0.062729 0.062729 0.062729 1.000000
+eoFillPath subpath 1 181.700000 5494.000000 0 494.500000 5494.000000 0 494.500000 5493.200000 0 181.700000 5493.200000 0 181.700000 5494.000000 0
+updateFillColor 0.066650 0.066650 0.066650 1.000000
+eoFillPath subpath 1 181.700000 5493.200000 0 494.500000 5493.200000 0 494.500000 5492.500000 0 181.700000 5492.500000 0 181.700000 5493.200000 0
+updateFillColor 0.070572 0.070572 0.070572 1.000000
+eoFillPath subpath 1 181.700000 5492.500000 0 494.500000 5492.500000 0 494.500000 5491.700000 0 181.700000 5491.700000 0 181.700000 5492.500000 0
+updateFillColor 0.074493 0.074493 0.074493 1.000000
+eoFillPath subpath 1 181.700000 5491.700000 0 494.500000 5491.700000 0 494.500000 5490.900000 0 181.700000 5490.900000 0 181.700000 5491.700000 0
+updateFillColor 0.078415 0.078415 0.078415 1.000000
+eoFillPath subpath 1 181.700000 5490.900000 0 494.500000 5490.900000 0 494.500000 5490.200000 0 181.700000 5490.200000 0 181.700000 5490.900000 0
+updateFillColor 0.082336 0.082336 0.082336 1.000000
+eoFillPath subpath 1 181.700000 5490.200000 0 494.500000 5490.200000 0 494.500000 5489.400000 0 181.700000 5489.400000 0 181.700000 5490.200000 0
+updateFillColor 0.086258 0.086258 0.086258 1.000000
+eoFillPath subpath 1 181.700000 5489.400000 0 494.500000 5489.400000 0 494.500000 5488.700000 0 181.700000 5488.700000 0 181.700000 5489.400000 0
+updateFillColor 0.090179 0.090179 0.090179 1.000000
+eoFillPath subpath 1 181.700000 5488.700000 0 494.500000 5488.700000 0 494.500000 5487.900000 0 181.700000 5487.900000 0 181.700000 5488.700000 0
+updateFillColor 0.094101 0.094101 0.094101 1.000000
+eoFillPath subpath 1 181.700000 5487.900000 0 494.500000 5487.900000 0 494.500000 5487.200000 0 181.700000 5487.200000 0 181.700000 5487.900000 0
+updateFillColor 0.098022 0.098022 0.098022 1.000000
+eoFillPath subpath 1 181.700000 5487.200000 0 494.500000 5487.200000 0 494.500000 5486.400000 0 181.700000 5486.400000 0 181.700000 5487.200000 0
+updateFillColor 0.101959 0.101959 0.101959 1.000000
+eoFillPath subpath 1 181.700000 5486.400000 0 494.500000 5486.400000 0 494.500000 5485.600000 0 181.700000 5485.600000 0 181.700000 5486.400000 0
+updateFillColor 0.105865 0.105865 0.105865 1.000000
+eoFillPath subpath 1 181.700000 5485.600000 0 494.500000 5485.600000 0 494.500000 5484.900000 0 181.700000 5484.900000 0 181.700000 5485.600000 0
+updateFillColor 0.109787 0.109787 0.109787 1.000000
+eoFillPath subpath 1 181.700000 5484.900000 0 494.500000 5484.900000 0 494.500000 5484.100000 0 181.700000 5484.100000 0 181.700000 5484.900000 0
+updateFillColor 0.113708 0.113708 0.113708 1.000000
+eoFillPath subpath 1 181.700000 5484.100000 0 494.500000 5484.100000 0 494.500000 5483.400000 0 181.700000 5483.400000 0 181.700000 5484.100000 0
+updateFillColor 0.117630 0.117630 0.117630 1.000000
+eoFillPath subpath 1 181.700000 5483.400000 0 494.500000 5483.400000 0 494.500000 5482.600000 0 181.700000 5482.600000 0 181.700000 5483.400000 0
+updateFillColor 0.121552 0.121552 0.121552 1.000000
+eoFillPath subpath 1 181.700000 5482.600000 0 494.500000 5482.600000 0 494.500000 5481.800000 0 181.700000 5481.800000 0 181.700000 5482.600000 0
+updateFillColor 0.125488 0.125488 0.125488 1.000000
+eoFillPath subpath 1 181.700000 5481.800000 0 494.500000 5481.800000 0 494.500000 5481.100000 0 181.700000 5481.100000 0 181.700000 5481.800000 0
+updateFillColor 0.129410 0.129410 0.129410 1.000000
+eoFillPath subpath 1 181.700000 5481.100000 0 494.500000 5481.100000 0 494.500000 5480.300000 0 181.700000 5480.300000 0 181.700000 5481.100000 0
+updateFillColor 0.133316 0.133316 0.133316 1.000000
+eoFillPath subpath 1 181.700000 5480.300000 0 494.500000 5480.300000 0 494.500000 5479.600000 0 181.700000 5479.600000 0 181.700000 5480.300000 0
+updateFillColor 0.137238 0.137238 0.137238 1.000000
+eoFillPath subpath 1 181.700000 5479.600000 0 494.500000 5479.600000 0 494.500000 5478.800000 0 181.700000 5478.800000 0 181.700000 5479.600000 0
+updateFillColor 0.141159 0.141159 0.141159 1.000000
+eoFillPath subpath 1 181.700000 5478.800000 0 494.500000 5478.800000 0 494.500000 5478.000000 0 181.700000 5478.000000 0 181.700000 5478.800000 0
+updateFillColor 0.145081 0.145081 0.145081 1.000000
+eoFillPath subpath 1 181.700000 5478.000000 0 494.500000 5478.000000 0 494.500000 5477.300000 0 181.700000 5477.300000 0 181.700000 5478.000000 0
+updateFillColor 0.149002 0.149002 0.149002 1.000000
+eoFillPath subpath 1 181.700000 5477.300000 0 494.500000 5477.300000 0 494.500000 5476.500000 0 181.700000 5476.500000 0 181.700000 5477.300000 0
+updateFillColor 0.152939 0.152939 0.152939 1.000000
+eoFillPath subpath 1 181.700000 5476.500000 0 494.500000 5476.500000 0 494.500000 5475.800000 0 181.700000 5475.800000 0 181.700000 5476.500000 0
+updateFillColor 0.156845 0.156845 0.156845 1.000000
+eoFillPath subpath 1 181.700000 5475.800000 0 494.500000 5475.800000 0 494.500000 5475.000000 0 181.700000 5475.000000 0 181.700000 5475.800000 0
+updateFillColor 0.160767 0.160767 0.160767 1.000000
+eoFillPath subpath 1 181.700000 5475.000000 0 494.500000 5475.000000 0 494.500000 5474.300000 0 181.700000 5474.300000 0 181.700000 5475.000000 0
+updateFillColor 0.164688 0.164688 0.164688 1.000000
+eoFillPath subpath 1 181.700000 5474.300000 0 494.500000 5474.300000 0 494.500000 5473.500000 0 181.700000 5473.500000 0 181.700000 5474.300000 0
+updateFillColor 0.168610 0.168610 0.168610 1.000000
+eoFillPath subpath 1 181.700000 5473.500000 0 494.500000 5473.500000 0 494.500000 5472.700000 0 181.700000 5472.700000 0 181.700000 5473.500000 0
+updateFillColor 0.172531 0.172531 0.172531 1.000000
+eoFillPath subpath 1 181.700000 5472.700000 0 494.500000 5472.700000 0 494.500000 5472.000000 0 181.700000 5472.000000 0 181.700000 5472.700000 0
+updateFillColor 0.176468 0.176468 0.176468 1.000000
+eoFillPath subpath 1 181.700000 5472.000000 0 494.500000 5472.000000 0 494.500000 5471.200000 0 181.700000 5471.200000 0 181.700000 5472.000000 0
+updateFillColor 0.180389 0.180389 0.180389 1.000000
+eoFillPath subpath 1 181.700000 5471.200000 0 494.500000 5471.200000 0 494.500000 5470.500000 0 181.700000 5470.500000 0 181.700000 5471.200000 0
+updateFillColor 0.184296 0.184296 0.184296 1.000000
+eoFillPath subpath 1 181.700000 5470.500000 0 494.500000 5470.500000 0 494.500000 5469.700000 0 181.700000 5469.700000 0 181.700000 5470.500000 0
+updateFillColor 0.188217 0.188217 0.188217 1.000000
+eoFillPath subpath 1 181.700000 5469.700000 0 494.500000 5469.700000 0 494.500000 5468.900000 0 181.700000 5468.900000 0 181.700000 5469.700000 0
+updateFillColor 0.192139 0.192139 0.192139 1.000000
+eoFillPath subpath 1 181.700000 5468.900000 0 494.500000 5468.900000 0 494.500000 5468.200000 0 181.700000 5468.200000 0 181.700000 5468.900000 0
+updateFillColor 0.196060 0.196060 0.196060 1.000000
+eoFillPath subpath 1 181.700000 5468.200000 0 494.500000 5468.200000 0 494.500000 5467.400000 0 181.700000 5467.400000 0 181.700000 5468.200000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 181.700000 5467.400000 0 494.500000 5467.400000 0 494.500000 5466.700000 0 181.700000 5466.700000 0 181.700000 5467.400000 0
+updateFillColor 0.203918 0.203918 0.203918 1.000000
+eoFillPath subpath 1 181.700000 5466.700000 0 494.500000 5466.700000 0 494.500000 5465.900000 0 181.700000 5465.900000 0 181.700000 5466.700000 0
+updateFillColor 0.207840 0.207840 0.207840 1.000000
+eoFillPath subpath 1 181.700000 5465.900000 0 494.500000 5465.900000 0 494.500000 5465.100000 0 181.700000 5465.100000 0 181.700000 5465.900000 0
+updateFillColor 0.211746 0.211746 0.211746 1.000000
+eoFillPath subpath 1 181.700000 5465.100000 0 494.500000 5465.100000 0 494.500000 5464.400000 0 181.700000 5464.400000 0 181.700000 5465.100000 0
+updateFillColor 0.215668 0.215668 0.215668 1.000000
+eoFillPath subpath 1 181.700000 5464.400000 0 494.500000 5464.400000 0 494.500000 5463.600000 0 181.700000 5463.600000 0 181.700000 5464.400000 0
+updateFillColor 0.219589 0.219589 0.219589 1.000000
+eoFillPath subpath 1 181.700000 5463.600000 0 494.500000 5463.600000 0 494.500000 5462.900000 0 181.700000 5462.900000 0 181.700000 5463.600000 0
+updateFillColor 0.223511 0.223511 0.223511 1.000000
+eoFillPath subpath 1 181.700000 5462.900000 0 494.500000 5462.900000 0 494.500000 5462.100000 0 181.700000 5462.100000 0 181.700000 5462.900000 0
+updateFillColor 0.227448 0.227448 0.227448 1.000000
+eoFillPath subpath 1 181.700000 5462.100000 0 494.500000 5462.100000 0 494.500000 5461.400000 0 181.700000 5461.400000 0 181.700000 5462.100000 0
+updateFillColor 0.231369 0.231369 0.231369 1.000000
+eoFillPath subpath 1 181.700000 5461.400000 0 494.500000 5461.400000 0 494.500000 5460.600000 0 181.700000 5460.600000 0 181.700000 5461.400000 0
+updateFillColor 0.235275 0.235275 0.235275 1.000000
+eoFillPath subpath 1 181.700000 5460.600000 0 494.500000 5460.600000 0 494.500000 5459.800000 0 181.700000 5459.800000 0 181.700000 5460.600000 0
+updateFillColor 0.239197 0.239197 0.239197 1.000000
+eoFillPath subpath 1 181.700000 5459.800000 0 494.500000 5459.800000 0 494.500000 5459.100000 0 181.700000 5459.100000 0 181.700000 5459.800000 0
+updateFillColor 0.243118 0.243118 0.243118 1.000000
+eoFillPath subpath 1 181.700000 5459.100000 0 494.500000 5459.100000 0 494.500000 5458.300000 0 181.700000 5458.300000 0 181.700000 5459.100000 0
+updateFillColor 0.247040 0.247040 0.247040 1.000000
+eoFillPath subpath 1 181.700000 5458.300000 0 494.500000 5458.300000 0 494.500000 5457.600000 0 181.700000 5457.600000 0 181.700000 5458.300000 0
+updateFillColor 0.250977 0.250977 0.250977 1.000000
+eoFillPath subpath 1 181.700000 5457.600000 0 494.500000 5457.600000 0 494.500000 5456.800000 0 181.700000 5456.800000 0 181.700000 5457.600000 0
+updateFillColor 0.254898 0.254898 0.254898 1.000000
+eoFillPath subpath 1 181.700000 5456.800000 0 494.500000 5456.800000 0 494.500000 5456.000000 0 181.700000 5456.000000 0 181.700000 5456.800000 0
+updateFillColor 0.258820 0.258820 0.258820 1.000000
+eoFillPath subpath 1 181.700000 5456.000000 0 494.500000 5456.000000 0 494.500000 5455.300000 0 181.700000 5455.300000 0 181.700000 5456.000000 0
+updateFillColor 0.262726 0.262726 0.262726 1.000000
+eoFillPath subpath 1 181.700000 5455.300000 0 494.500000 5455.300000 0 494.500000 5454.500000 0 181.700000 5454.500000 0 181.700000 5455.300000 0
+updateFillColor 0.266647 0.266647 0.266647 1.000000
+eoFillPath subpath 1 181.700000 5454.500000 0 494.500000 5454.500000 0 494.500000 5453.800000 0 181.700000 5453.800000 0 181.700000 5454.500000 0
+updateFillColor 0.270569 0.270569 0.270569 1.000000
+eoFillPath subpath 1 181.700000 5453.800000 0 494.500000 5453.800000 0 494.500000 5453.000000 0 181.700000 5453.000000 0 181.700000 5453.800000 0
+updateFillColor 0.274490 0.274490 0.274490 1.000000
+eoFillPath subpath 1 181.700000 5453.000000 0 494.500000 5453.000000 0 494.500000 5452.200000 0 181.700000 5452.200000 0 181.700000 5453.000000 0
+updateFillColor 0.278427 0.278427 0.278427 1.000000
+eoFillPath subpath 1 181.700000 5452.200000 0 494.500000 5452.200000 0 494.500000 5451.500000 0 181.700000 5451.500000 0 181.700000 5452.200000 0
+updateFillColor 0.282349 0.282349 0.282349 1.000000
+eoFillPath subpath 1 181.700000 5451.500000 0 494.500000 5451.500000 0 494.500000 5450.700000 0 181.700000 5450.700000 0 181.700000 5451.500000 0
+updateFillColor 0.286255 0.286255 0.286255 1.000000
+eoFillPath subpath 1 181.700000 5450.700000 0 494.500000 5450.700000 0 494.500000 5450.000000 0 181.700000 5450.000000 0 181.700000 5450.700000 0
+updateFillColor 0.290176 0.290176 0.290176 1.000000
+eoFillPath subpath 1 181.700000 5450.000000 0 494.500000 5450.000000 0 494.500000 5449.200000 0 181.700000 5449.200000 0 181.700000 5450.000000 0
+updateFillColor 0.294098 0.294098 0.294098 1.000000
+eoFillPath subpath 1 181.700000 5449.200000 0 494.500000 5449.200000 0 494.500000 5448.500000 0 181.700000 5448.500000 0 181.700000 5449.200000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 181.700000 5448.500000 0 494.500000 5448.500000 0 494.500000 5447.700000 0 181.700000 5447.700000 0 181.700000 5448.500000 0
+updateFillColor 0.301956 0.301956 0.301956 1.000000
+eoFillPath subpath 1 181.700000 5447.700000 0 494.500000 5447.700000 0 494.500000 5446.900000 0 181.700000 5446.900000 0 181.700000 5447.700000 0
+updateFillColor 0.305878 0.305878 0.305878 1.000000
+eoFillPath subpath 1 181.700000 5446.900000 0 494.500000 5446.900000 0 494.500000 5446.200000 0 181.700000 5446.200000 0 181.700000 5446.900000 0
+updateFillColor 0.309799 0.309799 0.309799 1.000000
+eoFillPath subpath 1 181.700000 5446.200000 0 494.500000 5446.200000 0 494.500000 5445.400000 0 181.700000 5445.400000 0 181.700000 5446.200000 0
+updateFillColor 0.313705 0.313705 0.313705 1.000000
+eoFillPath subpath 1 181.700000 5445.400000 0 494.500000 5445.400000 0 494.500000 5444.700000 0 181.700000 5444.700000 0 181.700000 5445.400000 0
+updateFillColor 0.317627 0.317627 0.317627 1.000000
+eoFillPath subpath 1 181.700000 5444.700000 0 494.500000 5444.700000 0 494.500000 5443.900000 0 181.700000 5443.900000 0 181.700000 5444.700000 0
+updateFillColor 0.321548 0.321548 0.321548 1.000000
+eoFillPath subpath 1 181.700000 5443.900000 0 494.500000 5443.900000 0 494.500000 5443.100000 0 181.700000 5443.100000 0 181.700000 5443.900000 0
+updateFillColor 0.325485 0.325485 0.325485 1.000000
+eoFillPath subpath 1 181.700000 5443.100000 0 494.500000 5443.100000 0 494.500000 5442.400000 0 181.700000 5442.400000 0 181.700000 5443.100000 0
+updateFillColor 0.329407 0.329407 0.329407 1.000000
+eoFillPath subpath 1 181.700000 5442.400000 0 494.500000 5442.400000 0 494.500000 5441.600000 0 181.700000 5441.600000 0 181.700000 5442.400000 0
+updateFillColor 0.333328 0.333328 0.333328 1.000000
+eoFillPath subpath 1 181.700000 5441.600000 0 494.500000 5441.600000 0 494.500000 5440.900000 0 181.700000 5440.900000 0 181.700000 5441.600000 0
+updateFillColor 0.337250 0.337250 0.337250 1.000000
+eoFillPath subpath 1 181.700000 5440.900000 0 494.500000 5440.900000 0 494.500000 5440.100000 0 181.700000 5440.100000 0 181.700000 5440.900000 0
+updateFillColor 0.341156 0.341156 0.341156 1.000000
+eoFillPath subpath 1 181.700000 5440.100000 0 494.500000 5440.100000 0 494.500000 5439.300000 0 181.700000 5439.300000 0 181.700000 5440.100000 0
+updateFillColor 0.345078 0.345078 0.345078 1.000000
+eoFillPath subpath 1 181.700000 5439.300000 0 494.500000 5439.300000 0 494.500000 5438.600000 0 181.700000 5438.600000 0 181.700000 5439.300000 0
+updateFillColor 0.348999 0.348999 0.348999 1.000000
+eoFillPath subpath 1 181.700000 5438.600000 0 494.500000 5438.600000 0 494.500000 5437.800000 0 181.700000 5437.800000 0 181.700000 5438.600000 0
+updateFillColor 0.352936 0.352936 0.352936 1.000000
+eoFillPath subpath 1 181.700000 5437.800000 0 494.500000 5437.800000 0 494.500000 5437.100000 0 181.700000 5437.100000 0 181.700000 5437.800000 0
+updateFillColor 0.356857 0.356857 0.356857 1.000000
+eoFillPath subpath 1 181.700000 5437.100000 0 494.500000 5437.100000 0 494.500000 5436.300000 0 181.700000 5436.300000 0 181.700000 5437.100000 0
+updateFillColor 0.360779 0.360779 0.360779 1.000000
+eoFillPath subpath 1 181.700000 5436.300000 0 494.500000 5436.300000 0 494.500000 5435.600000 0 181.700000 5435.600000 0 181.700000 5436.300000 0
+updateFillColor 0.364685 0.364685 0.364685 1.000000
+eoFillPath subpath 1 181.700000 5435.600000 0 494.500000 5435.600000 0 494.500000 5434.800000 0 181.700000 5434.800000 0 181.700000 5435.600000 0
+updateFillColor 0.368607 0.368607 0.368607 1.000000
+eoFillPath subpath 1 181.700000 5434.800000 0 494.500000 5434.800000 0 494.500000 5434.000000 0 181.700000 5434.000000 0 181.700000 5434.800000 0
+updateFillColor 0.372528 0.372528 0.372528 1.000000
+eoFillPath subpath 1 181.700000 5434.000000 0 494.500000 5434.000000 0 494.500000 5433.300000 0 181.700000 5433.300000 0 181.700000 5434.000000 0
+updateFillColor 0.376465 0.376465 0.376465 1.000000
+eoFillPath subpath 1 181.700000 5433.300000 0 494.500000 5433.300000 0 494.500000 5432.500000 0 181.700000 5432.500000 0 181.700000 5433.300000 0
+updateFillColor 0.380386 0.380386 0.380386 1.000000
+eoFillPath subpath 1 181.700000 5432.500000 0 494.500000 5432.500000 0 494.500000 5431.800000 0 181.700000 5431.800000 0 181.700000 5432.500000 0
+updateFillColor 0.384308 0.384308 0.384308 1.000000
+eoFillPath subpath 1 181.700000 5431.800000 0 494.500000 5431.800000 0 494.500000 5431.000000 0 181.700000 5431.000000 0 181.700000 5431.800000 0
+updateFillColor 0.388229 0.388229 0.388229 1.000000
+eoFillPath subpath 1 181.700000 5431.000000 0 494.500000 5431.000000 0 494.500000 5430.200000 0 181.700000 5430.200000 0 181.700000 5431.000000 0
+updateFillColor 0.392136 0.392136 0.392136 1.000000
+eoFillPath subpath 1 181.700000 5430.200000 0 494.500000 5430.200000 0 494.500000 5429.500000 0 181.700000 5429.500000 0 181.700000 5430.200000 0
+updateFillColor 0.396057 0.396057 0.396057 1.000000
+eoFillPath subpath 1 181.700000 5429.500000 0 494.500000 5429.500000 0 494.500000 5428.700000 0 181.700000 5428.700000 0 181.700000 5429.500000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 181.700000 5428.700000 0 494.500000 5428.700000 0 494.500000 5428.000000 0 181.700000 5428.000000 0 181.700000 5428.700000 0
+updateFillColor 0.403915 0.403915 0.403915 1.000000
+eoFillPath subpath 1 181.700000 5428.000000 0 494.500000 5428.000000 0 494.500000 5427.200000 0 181.700000 5427.200000 0 181.700000 5428.000000 0
+updateFillColor 0.407837 0.407837 0.407837 1.000000
+eoFillPath subpath 1 181.700000 5427.200000 0 494.500000 5427.200000 0 494.500000 5426.400000 0 181.700000 5426.400000 0 181.700000 5427.200000 0
+updateFillColor 0.411758 0.411758 0.411758 1.000000
+eoFillPath subpath 1 181.700000 5426.400000 0 494.500000 5426.400000 0 494.500000 5425.700000 0 181.700000 5425.700000 0 181.700000 5426.400000 0
+updateFillColor 0.415680 0.415680 0.415680 1.000000
+eoFillPath subpath 1 181.700000 5425.700000 0 494.500000 5425.700000 0 494.500000 5424.900000 0 181.700000 5424.900000 0 181.700000 5425.700000 0
+updateFillColor 0.419586 0.419586 0.419586 1.000000
+eoFillPath subpath 1 181.700000 5424.900000 0 494.500000 5424.900000 0 494.500000 5424.200000 0 181.700000 5424.200000 0 181.700000 5424.900000 0
+updateFillColor 0.423508 0.423508 0.423508 1.000000
+eoFillPath subpath 1 181.700000 5424.200000 0 494.500000 5424.200000 0 494.500000 5423.400000 0 181.700000 5423.400000 0 181.700000 5424.200000 0
+updateFillColor 0.427444 0.427444 0.427444 1.000000
+eoFillPath subpath 1 181.700000 5423.400000 0 494.500000 5423.400000 0 494.500000 5422.700000 0 181.700000 5422.700000 0 181.700000 5423.400000 0
+updateFillColor 0.431366 0.431366 0.431366 1.000000
+eoFillPath subpath 1 181.700000 5422.700000 0 494.500000 5422.700000 0 494.500000 5421.900000 0 181.700000 5421.900000 0 181.700000 5422.700000 0
+updateFillColor 0.435287 0.435287 0.435287 1.000000
+eoFillPath subpath 1 181.700000 5421.900000 0 494.500000 5421.900000 0 494.500000 5421.100000 0 181.700000 5421.100000 0 181.700000 5421.900000 0
+updateFillColor 0.439209 0.439209 0.439209 1.000000
+eoFillPath subpath 1 181.700000 5421.100000 0 494.500000 5421.100000 0 494.500000 5420.400000 0 181.700000 5420.400000 0 181.700000 5421.100000 0
+updateFillColor 0.443115 0.443115 0.443115 1.000000
+eoFillPath subpath 1 181.700000 5420.400000 0 494.500000 5420.400000 0 494.500000 5419.600000 0 181.700000 5419.600000 0 181.700000 5420.400000 0
+updateFillColor 0.447037 0.447037 0.447037 1.000000
+eoFillPath subpath 1 181.700000 5419.600000 0 494.500000 5419.600000 0 494.500000 5418.900000 0 181.700000 5418.900000 0 181.700000 5419.600000 0
+updateFillColor 0.450974 0.450974 0.450974 1.000000
+eoFillPath subpath 1 181.700000 5418.900000 0 494.500000 5418.900000 0 494.500000 5418.100000 0 181.700000 5418.100000 0 181.700000 5418.900000 0
+updateFillColor 0.454895 0.454895 0.454895 1.000000
+eoFillPath subpath 1 181.700000 5418.100000 0 494.500000 5418.100000 0 494.500000 5417.300000 0 181.700000 5417.300000 0 181.700000 5418.100000 0
+updateFillColor 0.458817 0.458817 0.458817 1.000000
+eoFillPath subpath 1 181.700000 5417.300000 0 494.500000 5417.300000 0 494.500000 5416.600000 0 181.700000 5416.600000 0 181.700000 5417.300000 0
+updateFillColor 0.462738 0.462738 0.462738 1.000000
+eoFillPath subpath 1 181.700000 5416.600000 0 494.500000 5416.600000 0 494.500000 5415.800000 0 181.700000 5415.800000 0 181.700000 5416.600000 0
+updateFillColor 0.466660 0.466660 0.466660 1.000000
+eoFillPath subpath 1 181.700000 5415.800000 0 494.500000 5415.800000 0 494.500000 5415.100000 0 181.700000 5415.100000 0 181.700000 5415.800000 0
+updateFillColor 0.470566 0.470566 0.470566 1.000000
+eoFillPath subpath 1 181.700000 5415.100000 0 494.500000 5415.100000 0 494.500000 5414.300000 0 181.700000 5414.300000 0 181.700000 5415.100000 0
+updateFillColor 0.474487 0.474487 0.474487 1.000000
+eoFillPath subpath 1 181.700000 5414.300000 0 494.500000 5414.300000 0 494.500000 5413.500000 0 181.700000 5413.500000 0 181.700000 5414.300000 0
+updateFillColor 0.478424 0.478424 0.478424 1.000000
+eoFillPath subpath 1 181.700000 5413.500000 0 494.500000 5413.500000 0 494.500000 5412.800000 0 181.700000 5412.800000 0 181.700000 5413.500000 0
+updateFillColor 0.482346 0.482346 0.482346 1.000000
+eoFillPath subpath 1 181.700000 5412.800000 0 494.500000 5412.800000 0 494.500000 5412.000000 0 181.700000 5412.000000 0 181.700000 5412.800000 0
+updateFillColor 0.486267 0.486267 0.486267 1.000000
+eoFillPath subpath 1 181.700000 5412.000000 0 494.500000 5412.000000 0 494.500000 5411.300000 0 181.700000 5411.300000 0 181.700000 5412.000000 0
+updateFillColor 0.490189 0.490189 0.490189 1.000000
+eoFillPath subpath 1 181.700000 5411.300000 0 494.500000 5411.300000 0 494.500000 5410.500000 0 181.700000 5410.500000 0 181.700000 5411.300000 0
+updateFillColor 0.494095 0.494095 0.494095 1.000000
+eoFillPath subpath 1 181.700000 5410.500000 0 494.500000 5410.500000 0 494.500000 5409.800000 0 181.700000 5409.800000 0 181.700000 5410.500000 0
+updateFillColor 0.498016 0.498016 0.498016 1.000000
+eoFillPath subpath 1 181.700000 5409.800000 0 494.500000 5409.800000 0 494.500000 5409.000000 0 181.700000 5409.000000 0 181.700000 5409.800000 0
+updateFillColor 0.501953 0.501953 0.501953 1.000000
+eoFillPath subpath 1 181.700000 5409.000000 0 494.500000 5409.000000 0 494.500000 5408.200000 0 181.700000 5408.200000 0 181.700000 5409.000000 0
+updateFillColor 0.505875 0.505875 0.505875 1.000000
+eoFillPath subpath 1 181.700000 5408.200000 0 494.500000 5408.200000 0 494.500000 5407.500000 0 181.700000 5407.500000 0 181.700000 5408.200000 0
+updateFillColor 0.509796 0.509796 0.509796 1.000000
+eoFillPath subpath 1 181.700000 5407.500000 0 494.500000 5407.500000 0 494.500000 5406.700000 0 181.700000 5406.700000 0 181.700000 5407.500000 0
+updateFillColor 0.513718 0.513718 0.513718 1.000000
+eoFillPath subpath 1 181.700000 5406.700000 0 494.500000 5406.700000 0 494.500000 5406.000000 0 181.700000 5406.000000 0 181.700000 5406.700000 0
+updateFillColor 0.517639 0.517639 0.517639 1.000000
+eoFillPath subpath 1 181.700000 5406.000000 0 494.500000 5406.000000 0 494.500000 5405.200000 0 181.700000 5405.200000 0 181.700000 5406.000000 0
+updateFillColor 0.521545 0.521545 0.521545 1.000000
+eoFillPath subpath 1 181.700000 5405.200000 0 494.500000 5405.200000 0 494.500000 5404.500000 0 181.700000 5404.500000 0 181.700000 5405.200000 0
+updateFillColor 0.525482 0.525482 0.525482 1.000000
+eoFillPath subpath 1 181.700000 5404.500000 0 494.500000 5404.500000 0 494.500000 5403.700000 0 181.700000 5403.700000 0 181.700000 5404.500000 0
+updateFillColor 0.529404 0.529404 0.529404 1.000000
+eoFillPath subpath 1 181.700000 5403.700000 0 494.500000 5403.700000 0 494.500000 5402.900000 0 181.700000 5402.900000 0 181.700000 5403.700000 0
+updateFillColor 0.533325 0.533325 0.533325 1.000000
+eoFillPath subpath 1 181.700000 5402.900000 0 494.500000 5402.900000 0 494.500000 5402.200000 0 181.700000 5402.200000 0 181.700000 5402.900000 0
+updateFillColor 0.537247 0.537247 0.537247 1.000000
+eoFillPath subpath 1 181.700000 5402.200000 0 494.500000 5402.200000 0 494.500000 5401.400000 0 181.700000 5401.400000 0 181.700000 5402.200000 0
+updateFillColor 0.541168 0.541168 0.541168 1.000000
+eoFillPath subpath 1 181.700000 5401.400000 0 494.500000 5401.400000 0 494.500000 5400.700000 0 181.700000 5400.700000 0 181.700000 5401.400000 0
+updateFillColor 0.545090 0.545090 0.545090 1.000000
+eoFillPath subpath 1 181.700000 5400.700000 0 494.500000 5400.700000 0 494.500000 5399.900000 0 181.700000 5399.900000 0 181.700000 5400.700000 0
+updateFillColor 0.548996 0.548996 0.548996 1.000000
+eoFillPath subpath 1 181.700000 5399.900000 0 494.500000 5399.900000 0 494.500000 5399.100000 0 181.700000 5399.100000 0 181.700000 5399.900000 0
+updateFillColor 0.552933 0.552933 0.552933 1.000000
+eoFillPath subpath 1 181.700000 5399.100000 0 494.500000 5399.100000 0 494.500000 5398.400000 0 181.700000 5398.400000 0 181.700000 5399.100000 0
+updateFillColor 0.556854 0.556854 0.556854 1.000000
+eoFillPath subpath 1 181.700000 5398.400000 0 494.500000 5398.400000 0 494.500000 5397.600000 0 181.700000 5397.600000 0 181.700000 5398.400000 0
+updateFillColor 0.560776 0.560776 0.560776 1.000000
+eoFillPath subpath 1 181.700000 5397.600000 0 494.500000 5397.600000 0 494.500000 5396.900000 0 181.700000 5396.900000 0 181.700000 5397.600000 0
+updateFillColor 0.564697 0.564697 0.564697 1.000000
+eoFillPath subpath 1 181.700000 5396.900000 0 494.500000 5396.900000 0 494.500000 5396.100000 0 181.700000 5396.100000 0 181.700000 5396.900000 0
+updateFillColor 0.568619 0.568619 0.568619 1.000000
+eoFillPath subpath 1 181.700000 5396.100000 0 494.500000 5396.100000 0 494.500000 5395.400000 0 181.700000 5395.400000 0 181.700000 5396.100000 0
+updateFillColor 0.572525 0.572525 0.572525 1.000000
+eoFillPath subpath 1 181.700000 5395.400000 0 494.500000 5395.400000 0 494.500000 5394.600000 0 181.700000 5394.600000 0 181.700000 5395.400000 0
+updateFillColor 0.576462 0.576462 0.576462 1.000000
+eoFillPath subpath 1 181.700000 5394.600000 0 494.500000 5394.600000 0 494.500000 5393.800000 0 181.700000 5393.800000 0 181.700000 5394.600000 0
+updateFillColor 0.580383 0.580383 0.580383 1.000000
+eoFillPath subpath 1 181.700000 5393.800000 0 494.500000 5393.800000 0 494.500000 5393.100000 0 181.700000 5393.100000 0 181.700000 5393.800000 0
+updateFillColor 0.584305 0.584305 0.584305 1.000000
+eoFillPath subpath 1 181.700000 5393.100000 0 494.500000 5393.100000 0 494.500000 5392.300000 0 181.700000 5392.300000 0 181.700000 5393.100000 0
+updateFillColor 0.588226 0.588226 0.588226 1.000000
+eoFillPath subpath 1 181.700000 5392.300000 0 494.500000 5392.300000 0 494.500000 5391.600000 0 181.700000 5391.600000 0 181.700000 5392.300000 0
+updateFillColor 0.592148 0.592148 0.592148 1.000000
+eoFillPath subpath 1 181.700000 5391.600000 0 494.500000 5391.600000 0 494.500000 5390.800000 0 181.700000 5390.800000 0 181.700000 5391.600000 0
+updateFillColor 0.596069 0.596069 0.596069 1.000000
+eoFillPath subpath 1 181.700000 5390.800000 0 494.500000 5390.800000 0 494.500000 5390.100000 0 181.700000 5390.100000 0 181.700000 5390.800000 0
+updateFillColor 0.599991 0.599991 0.599991 1.000000
+eoFillPath subpath 1 181.700000 5390.100000 0 494.500000 5390.100000 0 494.500000 5389.300000 0 181.700000 5389.300000 0 181.700000 5390.100000 0
+updateFillColor 0.603912 0.603912 0.603912 1.000000
+eoFillPath subpath 1 181.700000 5389.300000 0 494.500000 5389.300000 0 494.500000 5388.500000 0 181.700000 5388.500000 0 181.700000 5389.300000 0
+updateFillColor 0.607834 0.607834 0.607834 1.000000
+eoFillPath subpath 1 181.700000 5388.500000 0 494.500000 5388.500000 0 494.500000 5387.800000 0 181.700000 5387.800000 0 181.700000 5388.500000 0
+updateFillColor 0.611755 0.611755 0.611755 1.000000
+eoFillPath subpath 1 181.700000 5387.800000 0 494.500000 5387.800000 0 494.500000 5387.000000 0 181.700000 5387.000000 0 181.700000 5387.800000 0
+updateFillColor 0.615677 0.615677 0.615677 1.000000
+eoFillPath subpath 1 181.700000 5387.000000 0 494.500000 5387.000000 0 494.500000 5386.300000 0 181.700000 5386.300000 0 181.700000 5387.000000 0
+updateFillColor 0.619598 0.619598 0.619598 1.000000
+eoFillPath subpath 1 181.700000 5386.300000 0 494.500000 5386.300000 0 494.500000 5385.500000 0 181.700000 5385.500000 0 181.700000 5386.300000 0
+updateFillColor 0.623520 0.623520 0.623520 1.000000
+eoFillPath subpath 1 181.700000 5385.500000 0 494.500000 5385.500000 0 494.500000 5384.700000 0 181.700000 5384.700000 0 181.700000 5385.500000 0
+updateFillColor 0.627441 0.627441 0.627441 1.000000
+eoFillPath subpath 1 181.700000 5384.700000 0 494.500000 5384.700000 0 494.500000 5384.000000 0 181.700000 5384.000000 0 181.700000 5384.700000 0
+updateFillColor 0.631363 0.631363 0.631363 1.000000
+eoFillPath subpath 1 181.700000 5384.000000 0 494.500000 5384.000000 0 494.500000 5383.200000 0 181.700000 5383.200000 0 181.700000 5384.000000 0
+updateFillColor 0.635284 0.635284 0.635284 1.000000
+eoFillPath subpath 1 181.700000 5383.200000 0 494.500000 5383.200000 0 494.500000 5382.500000 0 181.700000 5382.500000 0 181.700000 5383.200000 0
+updateFillColor 0.639206 0.639206 0.639206 1.000000
+eoFillPath subpath 1 181.700000 5382.500000 0 494.500000 5382.500000 0 494.500000 5381.700000 0 181.700000 5381.700000 0 181.700000 5382.500000 0
+updateFillColor 0.643127 0.643127 0.643127 1.000000
+eoFillPath subpath 1 181.700000 5381.700000 0 494.500000 5381.700000 0 494.500000 5381.000000 0 181.700000 5381.000000 0 181.700000 5381.700000 0
+updateFillColor 0.647049 0.647049 0.647049 1.000000
+eoFillPath subpath 1 181.700000 5381.000000 0 494.500000 5381.000000 0 494.500000 5380.200000 0 181.700000 5380.200000 0 181.700000 5381.000000 0
+updateFillColor 0.650970 0.650970 0.650970 1.000000
+eoFillPath subpath 1 181.700000 5380.200000 0 494.500000 5380.200000 0 494.500000 5379.400000 0 181.700000 5379.400000 0 181.700000 5380.200000 0
+updateFillColor 0.654892 0.654892 0.654892 1.000000
+eoFillPath subpath 1 181.700000 5379.400000 0 494.500000 5379.400000 0 494.500000 5378.700000 0 181.700000 5378.700000 0 181.700000 5379.400000 0
+updateFillColor 0.658813 0.658813 0.658813 1.000000
+eoFillPath subpath 1 181.700000 5378.700000 0 494.500000 5378.700000 0 494.500000 5377.900000 0 181.700000 5377.900000 0 181.700000 5378.700000 0
+updateFillColor 0.662735 0.662735 0.662735 1.000000
+eoFillPath subpath 1 181.700000 5377.900000 0 494.500000 5377.900000 0 494.500000 5377.200000 0 181.700000 5377.200000 0 181.700000 5377.900000 0
+updateFillColor 0.666656 0.666656 0.666656 1.000000
+eoFillPath subpath 1 181.700000 5377.200000 0 494.500000 5377.200000 0 494.500000 5376.400000 0 181.700000 5376.400000 0 181.700000 5377.200000 0
+updateFillColor 0.670578 0.670578 0.670578 1.000000
+eoFillPath subpath 1 181.700000 5376.400000 0 494.500000 5376.400000 0 494.500000 5375.600000 0 181.700000 5375.600000 0 181.700000 5376.400000 0
+updateFillColor 0.674500 0.674500 0.674500 1.000000
+eoFillPath subpath 1 181.700000 5375.600000 0 494.500000 5375.600000 0 494.500000 5374.900000 0 181.700000 5374.900000 0 181.700000 5375.600000 0
+updateFillColor 0.678421 0.678421 0.678421 1.000000
+eoFillPath subpath 1 181.700000 5374.900000 0 494.500000 5374.900000 0 494.500000 5374.100000 0 181.700000 5374.100000 0 181.700000 5374.900000 0
+updateFillColor 0.682343 0.682343 0.682343 1.000000
+eoFillPath subpath 1 181.700000 5374.100000 0 494.500000 5374.100000 0 494.500000 5373.400000 0 181.700000 5373.400000 0 181.700000 5374.100000 0
+updateFillColor 0.686264 0.686264 0.686264 1.000000
+eoFillPath subpath 1 181.700000 5373.400000 0 494.500000 5373.400000 0 494.500000 5372.600000 0 181.700000 5372.600000 0 181.700000 5373.400000 0
+updateFillColor 0.690186 0.690186 0.690186 1.000000
+eoFillPath subpath 1 181.700000 5372.600000 0 494.500000 5372.600000 0 494.500000 5371.800000 0 181.700000 5371.800000 0 181.700000 5372.600000 0
+updateFillColor 0.694107 0.694107 0.694107 1.000000
+eoFillPath subpath 1 181.700000 5371.800000 0 494.500000 5371.800000 0 494.500000 5371.100000 0 181.700000 5371.100000 0 181.700000 5371.800000 0
+updateFillColor 0.698029 0.698029 0.698029 1.000000
+eoFillPath subpath 1 181.700000 5371.100000 0 494.500000 5371.100000 0 494.500000 5370.300000 0 181.700000 5370.300000 0 181.700000 5371.100000 0
+updateFillColor 0.701950 0.701950 0.701950 1.000000
+eoFillPath subpath 1 181.700000 5370.300000 0 494.500000 5370.300000 0 494.500000 5369.600000 0 181.700000 5369.600000 0 181.700000 5370.300000 0
+updateFillColor 0.705872 0.705872 0.705872 1.000000
+eoFillPath subpath 1 181.700000 5369.600000 0 494.500000 5369.600000 0 494.500000 5368.800000 0 181.700000 5368.800000 0 181.700000 5369.600000 0
+updateFillColor 0.709793 0.709793 0.709793 1.000000
+eoFillPath subpath 1 181.700000 5368.800000 0 494.500000 5368.800000 0 494.500000 5368.100000 0 181.700000 5368.100000 0 181.700000 5368.800000 0
+updateFillColor 0.713715 0.713715 0.713715 1.000000
+eoFillPath subpath 1 181.700000 5368.100000 0 494.500000 5368.100000 0 494.500000 5367.300000 0 181.700000 5367.300000 0 181.700000 5368.100000 0
+updateFillColor 0.717636 0.717636 0.717636 1.000000
+eoFillPath subpath 1 181.700000 5367.300000 0 494.500000 5367.300000 0 494.500000 5366.500000 0 181.700000 5366.500000 0 181.700000 5367.300000 0
+updateFillColor 0.721558 0.721558 0.721558 1.000000
+eoFillPath subpath 1 181.700000 5366.500000 0 494.500000 5366.500000 0 494.500000 5365.800000 0 181.700000 5365.800000 0 181.700000 5366.500000 0
+updateFillColor 0.725479 0.725479 0.725479 1.000000
+eoFillPath subpath 1 181.700000 5365.800000 0 494.500000 5365.800000 0 494.500000 5365.000000 0 181.700000 5365.000000 0 181.700000 5365.800000 0
+updateFillColor 0.729401 0.729401 0.729401 1.000000
+eoFillPath subpath 1 181.700000 5365.000000 0 494.500000 5365.000000 0 494.500000 5364.300000 0 181.700000 5364.300000 0 181.700000 5365.000000 0
+updateFillColor 0.733322 0.733322 0.733322 1.000000
+eoFillPath subpath 1 181.700000 5364.300000 0 494.500000 5364.300000 0 494.500000 5363.500000 0 181.700000 5363.500000 0 181.700000 5364.300000 0
+updateFillColor 0.737244 0.737244 0.737244 1.000000
+eoFillPath subpath 1 181.700000 5363.500000 0 494.500000 5363.500000 0 494.500000 5362.700000 0 181.700000 5362.700000 0 181.700000 5363.500000 0
+updateFillColor 0.741165 0.741165 0.741165 1.000000
+eoFillPath subpath 1 181.700000 5362.700000 0 494.500000 5362.700000 0 494.500000 5362.000000 0 181.700000 5362.000000 0 181.700000 5362.700000 0
+updateFillColor 0.745087 0.745087 0.745087 1.000000
+eoFillPath subpath 1 181.700000 5362.000000 0 494.500000 5362.000000 0 494.500000 5361.200000 0 181.700000 5361.200000 0 181.700000 5362.000000 0
+updateFillColor 0.749008 0.749008 0.749008 1.000000
+eoFillPath subpath 1 181.700000 5361.200000 0 494.500000 5361.200000 0 494.500000 5360.500000 0 181.700000 5360.500000 0 181.700000 5361.200000 0
+updateFillColor 0.752930 0.752930 0.752930 1.000000
+eoFillPath subpath 1 181.700000 5360.500000 0 494.500000 5360.500000 0 494.500000 5359.700000 0 181.700000 5359.700000 0 181.700000 5360.500000 0
+updateFillColor 0.756851 0.756851 0.756851 1.000000
+eoFillPath subpath 1 181.700000 5359.700000 0 494.500000 5359.700000 0 494.500000 5358.900000 0 181.700000 5358.900000 0 181.700000 5359.700000 0
+updateFillColor 0.760773 0.760773 0.760773 1.000000
+eoFillPath subpath 1 181.700000 5358.900000 0 494.500000 5358.900000 0 494.500000 5358.200000 0 181.700000 5358.200000 0 181.700000 5358.900000 0
+updateFillColor 0.764694 0.764694 0.764694 1.000000
+eoFillPath subpath 1 181.700000 5358.200000 0 494.500000 5358.200000 0 494.500000 5357.400000 0 181.700000 5357.400000 0 181.700000 5358.200000 0
+updateFillColor 0.768616 0.768616 0.768616 1.000000
+eoFillPath subpath 1 181.700000 5357.400000 0 494.500000 5357.400000 0 494.500000 5356.700000 0 181.700000 5356.700000 0 181.700000 5357.400000 0
+updateFillColor 0.772537 0.772537 0.772537 1.000000
+eoFillPath subpath 1 181.700000 5356.700000 0 494.500000 5356.700000 0 494.500000 5355.900000 0 181.700000 5355.900000 0 181.700000 5356.700000 0
+updateFillColor 0.776459 0.776459 0.776459 1.000000
+eoFillPath subpath 1 181.700000 5355.900000 0 494.500000 5355.900000 0 494.500000 5355.200000 0 181.700000 5355.200000 0 181.700000 5355.900000 0
+updateFillColor 0.780380 0.780380 0.780380 1.000000
+eoFillPath subpath 1 181.700000 5355.200000 0 494.500000 5355.200000 0 494.500000 5354.400000 0 181.700000 5354.400000 0 181.700000 5355.200000 0
+updateFillColor 0.784302 0.784302 0.784302 1.000000
+eoFillPath subpath 1 181.700000 5354.400000 0 494.500000 5354.400000 0 494.500000 5353.600000 0 181.700000 5353.600000 0 181.700000 5354.400000 0
+updateFillColor 0.788223 0.788223 0.788223 1.000000
+eoFillPath subpath 1 181.700000 5353.600000 0 494.500000 5353.600000 0 494.500000 5352.900000 0 181.700000 5352.900000 0 181.700000 5353.600000 0
+updateFillColor 0.792145 0.792145 0.792145 1.000000
+eoFillPath subpath 1 181.700000 5352.900000 0 494.500000 5352.900000 0 494.500000 5352.100000 0 181.700000 5352.100000 0 181.700000 5352.900000 0
+updateFillColor 0.796066 0.796066 0.796066 1.000000
+eoFillPath subpath 1 181.700000 5352.100000 0 494.500000 5352.100000 0 494.500000 5351.400000 0 181.700000 5351.400000 0 181.700000 5352.100000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 181.700000 5351.400000 0 494.500000 5351.400000 0 494.500000 5350.600000 0 181.700000 5350.600000 0 181.700000 5351.400000 0
+updateFillColor 0.803909 0.803909 0.803909 1.000000
+eoFillPath subpath 1 181.700000 5350.600000 0 494.500000 5350.600000 0 494.500000 5349.800000 0 181.700000 5349.800000 0 181.700000 5350.600000 0
+updateFillColor 0.807831 0.807831 0.807831 1.000000
+eoFillPath subpath 1 181.700000 5349.800000 0 494.500000 5349.800000 0 494.500000 5349.100000 0 181.700000 5349.100000 0 181.700000 5349.800000 0
+updateFillColor 0.811752 0.811752 0.811752 1.000000
+eoFillPath subpath 1 181.700000 5349.100000 0 494.500000 5349.100000 0 494.500000 5348.300000 0 181.700000 5348.300000 0 181.700000 5349.100000 0
+updateFillColor 0.815674 0.815674 0.815674 1.000000
+eoFillPath subpath 1 181.700000 5348.300000 0 494.500000 5348.300000 0 494.500000 5347.600000 0 181.700000 5347.600000 0 181.700000 5348.300000 0
+updateFillColor 0.819595 0.819595 0.819595 1.000000
+eoFillPath subpath 1 181.700000 5347.600000 0 494.500000 5347.600000 0 494.500000 5346.800000 0 181.700000 5346.800000 0 181.700000 5347.600000 0
+updateFillColor 0.823517 0.823517 0.823517 1.000000
+eoFillPath subpath 1 181.700000 5346.800000 0 494.500000 5346.800000 0 494.500000 5346.000000 0 181.700000 5346.000000 0 181.700000 5346.800000 0
+updateFillColor 0.827438 0.827438 0.827438 1.000000
+eoFillPath subpath 1 181.700000 5346.000000 0 494.500000 5346.000000 0 494.500000 5345.300000 0 181.700000 5345.300000 0 181.700000 5346.000000 0
+updateFillColor 0.831360 0.831360 0.831360 1.000000
+eoFillPath subpath 1 181.700000 5345.300000 0 494.500000 5345.300000 0 494.500000 5344.500000 0 181.700000 5344.500000 0 181.700000 5345.300000 0
+updateFillColor 0.835281 0.835281 0.835281 1.000000
+eoFillPath subpath 1 181.700000 5344.500000 0 494.500000 5344.500000 0 494.500000 5343.800000 0 181.700000 5343.800000 0 181.700000 5344.500000 0
+updateFillColor 0.839203 0.839203 0.839203 1.000000
+eoFillPath subpath 1 181.700000 5343.800000 0 494.500000 5343.800000 0 494.500000 5343.000000 0 181.700000 5343.000000 0 181.700000 5343.800000 0
+updateFillColor 0.843124 0.843124 0.843124 1.000000
+eoFillPath subpath 1 181.700000 5343.000000 0 494.500000 5343.000000 0 494.500000 5342.300000 0 181.700000 5342.300000 0 181.700000 5343.000000 0
+updateFillColor 0.847046 0.847046 0.847046 1.000000
+eoFillPath subpath 1 181.700000 5342.300000 0 494.500000 5342.300000 0 494.500000 5341.500000 0 181.700000 5341.500000 0 181.700000 5342.300000 0
+updateFillColor 0.850967 0.850967 0.850967 1.000000
+eoFillPath subpath 1 181.700000 5341.500000 0 494.500000 5341.500000 0 494.500000 5340.700000 0 181.700000 5340.700000 0 181.700000 5341.500000 0
+updateFillColor 0.854889 0.854889 0.854889 1.000000
+eoFillPath subpath 1 181.700000 5340.700000 0 494.500000 5340.700000 0 494.500000 5340.000000 0 181.700000 5340.000000 0 181.700000 5340.700000 0
+updateFillColor 0.858810 0.858810 0.858810 1.000000
+eoFillPath subpath 1 181.700000 5340.000000 0 494.500000 5340.000000 0 494.500000 5339.200000 0 181.700000 5339.200000 0 181.700000 5340.000000 0
+updateFillColor 0.862732 0.862732 0.862732 1.000000
+eoFillPath subpath 1 181.700000 5339.200000 0 494.500000 5339.200000 0 494.500000 5338.500000 0 181.700000 5338.500000 0 181.700000 5339.200000 0
+updateFillColor 0.866653 0.866653 0.866653 1.000000
+eoFillPath subpath 1 181.700000 5338.500000 0 494.500000 5338.500000 0 494.500000 5337.700000 0 181.700000 5337.700000 0 181.700000 5338.500000 0
+updateFillColor 0.870575 0.870575 0.870575 1.000000
+eoFillPath subpath 1 181.700000 5337.700000 0 494.500000 5337.700000 0 494.500000 5336.900000 0 181.700000 5336.900000 0 181.700000 5337.700000 0
+updateFillColor 0.874496 0.874496 0.874496 1.000000
+eoFillPath subpath 1 181.700000 5336.900000 0 494.500000 5336.900000 0 494.500000 5336.200000 0 181.700000 5336.200000 0 181.700000 5336.900000 0
+updateFillColor 0.878418 0.878418 0.878418 1.000000
+eoFillPath subpath 1 181.700000 5336.200000 0 494.500000 5336.200000 0 494.500000 5335.400000 0 181.700000 5335.400000 0 181.700000 5336.200000 0
+updateFillColor 0.882339 0.882339 0.882339 1.000000
+eoFillPath subpath 1 181.700000 5335.400000 0 494.500000 5335.400000 0 494.500000 5334.700000 0 181.700000 5334.700000 0 181.700000 5335.400000 0
+updateFillColor 0.886261 0.886261 0.886261 1.000000
+eoFillPath subpath 1 181.700000 5334.700000 0 494.500000 5334.700000 0 494.500000 5333.900000 0 181.700000 5333.900000 0 181.700000 5334.700000 0
+updateFillColor 0.890182 0.890182 0.890182 1.000000
+eoFillPath subpath 1 181.700000 5333.900000 0 494.500000 5333.900000 0 494.500000 5333.100000 0 181.700000 5333.100000 0 181.700000 5333.900000 0
+updateFillColor 0.894104 0.894104 0.894104 1.000000
+eoFillPath subpath 1 181.700000 5333.100000 0 494.500000 5333.100000 0 494.500000 5332.400000 0 181.700000 5332.400000 0 181.700000 5333.100000 0
+updateFillColor 0.898026 0.898026 0.898026 1.000000
+eoFillPath subpath 1 181.700000 5332.400000 0 494.500000 5332.400000 0 494.500000 5331.600000 0 181.700000 5331.600000 0 181.700000 5332.400000 0
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 181.700000 5331.600000 0 494.500000 5331.600000 0 494.500000 5330.900000 0 181.700000 5330.900000 0 181.700000 5331.600000 0
+updateFillColor 0.905869 0.905869 0.905869 1.000000
+eoFillPath subpath 1 181.700000 5330.900000 0 494.500000 5330.900000 0 494.500000 5330.100000 0 181.700000 5330.100000 0 181.700000 5330.900000 0
+updateFillColor 0.909790 0.909790 0.909790 1.000000
+eoFillPath subpath 1 181.700000 5330.100000 0 494.500000 5330.100000 0 494.500000 5329.400000 0 181.700000 5329.400000 0 181.700000 5330.100000 0
+updateFillColor 0.913712 0.913712 0.913712 1.000000
+eoFillPath subpath 1 181.700000 5329.400000 0 494.500000 5329.400000 0 494.500000 5328.600000 0 181.700000 5328.600000 0 181.700000 5329.400000 0
+updateFillColor 0.917633 0.917633 0.917633 1.000000
+eoFillPath subpath 1 181.700000 5328.600000 0 494.500000 5328.600000 0 494.500000 5327.800000 0 181.700000 5327.800000 0 181.700000 5328.600000 0
+updateFillColor 0.921555 0.921555 0.921555 1.000000
+eoFillPath subpath 1 181.700000 5327.800000 0 494.500000 5327.800000 0 494.500000 5327.100000 0 181.700000 5327.100000 0 181.700000 5327.800000 0
+updateFillColor 0.925476 0.925476 0.925476 1.000000
+eoFillPath subpath 1 181.700000 5327.100000 0 494.500000 5327.100000 0 494.500000 5326.300000 0 181.700000 5326.300000 0 181.700000 5327.100000 0
+updateFillColor 0.929398 0.929398 0.929398 1.000000
+eoFillPath subpath 1 181.700000 5326.300000 0 494.500000 5326.300000 0 494.500000 5325.600000 0 181.700000 5325.600000 0 181.700000 5326.300000 0
+updateFillColor 0.933319 0.933319 0.933319 1.000000
+eoFillPath subpath 1 181.700000 5325.600000 0 494.500000 5325.600000 0 494.500000 5324.800000 0 181.700000 5324.800000 0 181.700000 5325.600000 0
+updateFillColor 0.937241 0.937241 0.937241 1.000000
+eoFillPath subpath 1 181.700000 5324.800000 0 494.500000 5324.800000 0 494.500000 5324.000000 0 181.700000 5324.000000 0 181.700000 5324.800000 0
+updateFillColor 0.941162 0.941162 0.941162 1.000000
+eoFillPath subpath 1 181.700000 5324.000000 0 494.500000 5324.000000 0 494.500000 5323.300000 0 181.700000 5323.300000 0 181.700000 5324.000000 0
+updateFillColor 0.945084 0.945084 0.945084 1.000000
+eoFillPath subpath 1 181.700000 5323.300000 0 494.500000 5323.300000 0 494.500000 5322.500000 0 181.700000 5322.500000 0 181.700000 5323.300000 0
+updateFillColor 0.949005 0.949005 0.949005 1.000000
+eoFillPath subpath 1 181.700000 5322.500000 0 494.500000 5322.500000 0 494.500000 5321.800000 0 181.700000 5321.800000 0 181.700000 5322.500000 0
+updateFillColor 0.952927 0.952927 0.952927 1.000000
+eoFillPath subpath 1 181.700000 5321.800000 0 494.500000 5321.800000 0 494.500000 5321.000000 0 181.700000 5321.000000 0 181.700000 5321.800000 0
+updateFillColor 0.956848 0.956848 0.956848 1.000000
+eoFillPath subpath 1 181.700000 5321.000000 0 494.500000 5321.000000 0 494.500000 5320.200000 0 181.700000 5320.200000 0 181.700000 5321.000000 0
+updateFillColor 0.960770 0.960770 0.960770 1.000000
+eoFillPath subpath 1 181.700000 5320.200000 0 494.500000 5320.200000 0 494.500000 5319.500000 0 181.700000 5319.500000 0 181.700000 5320.200000 0
+updateFillColor 0.964691 0.964691 0.964691 1.000000
+eoFillPath subpath 1 181.700000 5319.500000 0 494.500000 5319.500000 0 494.500000 5318.700000 0 181.700000 5318.700000 0 181.700000 5319.500000 0
+updateFillColor 0.968613 0.968613 0.968613 1.000000
+eoFillPath subpath 1 181.700000 5318.700000 0 494.500000 5318.700000 0 494.500000 5318.000000 0 181.700000 5318.000000 0 181.700000 5318.700000 0
+updateFillColor 0.972534 0.972534 0.972534 1.000000
+eoFillPath subpath 1 181.700000 5318.000000 0 494.500000 5318.000000 0 494.500000 5317.200000 0 181.700000 5317.200000 0 181.700000 5318.000000 0
+updateFillColor 0.976456 0.976456 0.976456 1.000000
+eoFillPath subpath 1 181.700000 5317.200000 0 494.500000 5317.200000 0 494.500000 5316.500000 0 181.700000 5316.500000 0 181.700000 5317.200000 0
+updateFillColor 0.980377 0.980377 0.980377 1.000000
+eoFillPath subpath 1 181.700000 5316.500000 0 494.500000 5316.500000 0 494.500000 5315.700000 0 181.700000 5315.700000 0 181.700000 5316.500000 0
+updateFillColor 0.984299 0.984299 0.984299 1.000000
+eoFillPath subpath 1 181.700000 5315.700000 0 494.500000 5315.700000 0 494.500000 5314.900000 0 181.700000 5314.900000 0 181.700000 5315.700000 0
+updateFillColor 0.988220 0.988220 0.988220 1.000000
+eoFillPath subpath 1 181.700000 5314.900000 0 494.500000 5314.900000 0 494.500000 5314.200000 0 181.700000 5314.200000 0 181.700000 5314.900000 0
+updateFillColor 0.992142 0.992142 0.992142 1.000000
+eoFillPath subpath 1 181.700000 5314.200000 0 494.500000 5314.200000 0 494.500000 5313.400000 0 181.700000 5313.400000 0 181.700000 5314.200000 0
+updateStrokeColor 0.000000 0.000000 0.000000 1.000000
+strokePath subpath 1 338.100000 5313.500000 0 181.800000 5313.500000 0 181.800000 5506.800000 0 494.400000 5506.800000 0 494.400000 5313.500000 0 338.100000 5313.500000 0
+strokePath subpath 1 338.100000 5313.500000 0 181.800000 5313.500000 0 181.800000 5506.800000 0 494.400000 5506.800000 0 494.400000 5313.500000 0 338.100000 5313.500000 0
+saveState
+updateCtm 11420.000000 0.000000 0.000000 -8760.000000 20530.000000 -459750.000000
+drawSoftMaskedImage 1143 877 1143 877 JPEG 71324 PPM 3007249
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 210.400000 5352.524000 215.488000 5344.524000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 215.504000 5352.524000 220.592000 5344.524000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 220.608000 5352.524000 225.696000 5344.524000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 225.712000 5352.524000 230.800000 5344.524000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 236.300000 5344.924000 241.388000 5336.924000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 241.404000 5344.924000 246.492000 5336.924000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 246.508000 5344.924000 251.596000 5336.924000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 251.612000 5344.924000 256.700000 5336.924000 1.000000 0.000000 0.000000 1.000000 6
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 262.100000 5337.224000 267.188000 5329.224000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 267.204000 5337.224000 272.292000 5329.224000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 272.308000 5337.224000 277.396000 5329.224000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 277.412000 5337.224000 282.500000 5329.224000 1.000000 0.000000 0.000000 1.000000 7
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 288.000000 5329.624000 293.088000 5321.624000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 293.104000 5329.624000 298.192000 5321.624000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 298.208000 5329.624000 303.296000 5321.624000 1.000000 0.000000 0.000000 1.000000 9
+drawChar 303.312000 5329.624000 308.400000 5321.624000 1.000000 0.000000 0.000000 1.000000 8
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 197.500000 5367.524000 202.588000 5359.524000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 196.600000 5386.824000 201.688000 5378.824000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 190.700000 5406.124000 195.788000 5398.124000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 195.804000 5406.124000 200.892000 5398.124000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 189.800000 5425.524000 194.888000 5417.524000 1.000000 0.000000 0.000000 1.000000 1
+drawChar 194.904000 5425.524000 199.992000 5417.524000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.900000 5444.824000 193.988000 5436.824000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 194.004000 5444.824000 199.092000 5436.824000 1.000000 0.000000 0.000000 1.000000 0
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 188.000000 5464.124000 193.088000 5456.124000 1.000000 0.000000 0.000000 1.000000 2
+drawChar 193.104000 5464.124000 198.192000 5456.124000 1.000000 0.000000 0.000000 1.000000 5
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 324.700000 5336.224000 330.188000 5328.224000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 330.500000 5336.224000 332.716000 5328.224000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 332.700000 5336.224000 337.596000 5328.224000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 337.004000 5336.224000 341.396000 5328.224000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 341.404000 5336.224000 346.036000 5328.224000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 346.508000 5336.224000 350.900000 5328.224000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 350.908000 5336.224000 355.972000 5328.224000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 355.908000 5336.224000 359.196000 5328.224000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 358.908000 5336.224000 362.196000 5328.224000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 362.508000 5336.224000 367.404000 5328.224000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 366.812000 5336.224000 371.876000 5328.224000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 371.916000 5336.224000 375.052000 5328.224000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 356.100000 5355.724000 361.172000 5347.724000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 361.204000 5355.724000 364.340000 5347.724000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 364.108000 5355.724000 367.396000 5347.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 367.708000 5355.724000 372.604000 5347.724000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 372.812000 5355.724000 379.348000 5347.724000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 379.412000 5355.724000 384.484000 5347.724000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 384.516000 5355.724000 389.436000 5347.724000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 388.820000 5355.724000 392.108000 5347.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 392.420000 5355.724000 395.708000 5347.724000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 395.324000 5355.724000 397.540000 5347.724000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 397.524000 5355.724000 402.444000 5347.724000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 402.628000 5355.724000 406.788000 5347.724000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 387.500000 5375.324000 392.972000 5367.324000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 393.004000 5375.324000 398.076000 5367.324000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 398.108000 5375.324000 403.180000 5367.324000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 403.212000 5375.324000 405.428000 5367.324000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 405.412000 5375.324000 410.332000 5367.324000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 410.316000 5375.324000 414.476000 5367.324000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 1.000000 1.000000 1.000000 1.000000
+updateFont 98 1 0 0 0 1400.000000 0 DAAAAA+DejaVuSerif
+drawChar 293.600000 5502.892000 305.808000 5488.892000 1.000000 0.000000 0.000000 1.000000 H
+drawChar 305.794000 5502.892000 314.138000 5488.892000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 314.096000 5502.892000 320.788000 5488.892000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 320.802000 5502.892000 328.698000 5488.892000 1.000000 0.000000 0.000000 1.000000 v
+drawChar 328.698000 5502.892000 336.972000 5488.892000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 337.000000 5502.892000 344.182000 5488.892000 1.000000 0.000000 0.000000 1.000000 s
+drawChar 344.196000 5502.892000 349.810000 5488.892000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 349.796000 5502.892000 354.234000 5488.892000 1.000000 0.000000 0.000000 1.000000
+drawChar 354.290000 5502.892000 362.718000 5488.892000 1.000000 0.000000 0.000000 1.000000 o
+drawChar 362.690000 5502.892000 367.870000 5488.892000 1.000000 0.000000 0.000000 1.000000 f
+drawChar 367.884000 5502.892000 372.322000 5488.892000 1.000000 0.000000 0.000000 1.000000
+drawChar 372.378000 5502.892000 382.080000 5488.892000 1.000000 0.000000 0.000000 1.000000 F
+drawChar 382.080000 5502.892000 388.772000 5488.892000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 388.786000 5502.892000 397.802000 5488.892000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 397.788000 5502.892000 402.254000 5488.892000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 402.282000 5502.892000 407.896000 5488.892000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateLineWidth 0.000000
+updateLineCap 0
+updateLineJoin 1
+strokePath subpath 1 458.900000 5380.000000 0 424.300000 5380.000000 0 424.300000 5440.700000 0 493.600000 5440.700000 0 493.600000 5380.000000 0 458.900000 5380.000000 0
+restoreState
+updateFillColor 0.901947 0.901947 0.901947 1.000000
+eoFillPath subpath 1 431.900000 5431.100000 0 428.900000 5431.100000 0 428.900000 5437.000000 0 434.800000 5437.000000 0 434.800000 5431.100000 0 431.900000 5431.100000 0
+updateFillColor 0.298019 0.298019 0.298019 1.000000
+eoFillPath subpath 1 431.900000 5420.000000 0 428.900000 5420.000000 0 428.900000 5426.000000 0 434.800000 5426.000000 0 434.800000 5420.000000 0 431.900000 5420.000000 0
+updateFillColor 0.399994 0.399994 0.399994 1.000000
+eoFillPath subpath 1 431.900000 5408.900000 0 428.900000 5408.900000 0 428.900000 5414.900000 0 434.800000 5414.900000 0 434.800000 5408.900000 0 431.900000 5408.900000 0
+updateFillColor 0.799988 0.799988 0.799988 1.000000
+eoFillPath subpath 1 431.900000 5397.800000 0 428.900000 5397.800000 0 428.900000 5403.800000 0 434.800000 5403.800000 0 434.800000 5397.800000 0 431.900000 5397.800000 0
+updateFillColor 0.199997 0.199997 0.199997 1.000000
+eoFillPath subpath 1 431.900000 5386.700000 0 428.900000 5386.700000 0 428.900000 5392.700000 0 434.800000 5392.700000 0 434.800000 5386.700000 0 431.900000 5386.700000 0
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 5438.224000 443.288000 5430.224000 1.000000 0.000000 0.000000 1.000000 B
+drawChar 443.600000 5438.224000 445.816000 5430.224000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 445.704000 5438.224000 450.600000 5430.224000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 450.104000 5438.224000 454.496000 5430.224000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 454.504000 5438.224000 459.136000 5430.224000 1.000000 0.000000 0.000000 1.000000 k
+drawChar 459.608000 5438.224000 464.000000 5430.224000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 463.912000 5438.224000 468.976000 5430.224000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 469.016000 5438.224000 472.304000 5430.224000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 471.920000 5438.224000 475.208000 5430.224000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 475.624000 5438.224000 480.520000 5430.224000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 479.928000 5438.224000 484.992000 5430.224000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 485.032000 5438.224000 488.168000 5430.224000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 5427.124000 443.352000 5419.124000 1.000000 0.000000 0.000000 1.000000 R
+drawChar 443.000000 5427.124000 447.920000 5419.124000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 447.904000 5427.124000 452.976000 5419.124000 1.000000 0.000000 0.000000 1.000000 d
+drawChar 453.008000 5427.124000 457.400000 5419.124000 1.000000 0.000000 0.000000 1.000000 c
+drawChar 457.408000 5427.124000 462.472000 5419.124000 1.000000 0.000000 0.000000 1.000000 u
+drawChar 462.512000 5427.124000 465.800000 5419.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 465.616000 5427.124000 468.904000 5419.124000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 468.920000 5427.124000 473.816000 5419.124000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 473.824000 5427.124000 478.888000 5419.124000 1.000000 0.000000 0.000000 1.000000 n
+drawChar 478.928000 5427.124000 482.064000 5419.124000 1.000000 0.000000 0.000000 1.000000 t
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 5416.024000 442.872000 5408.024000 1.000000 0.000000 0.000000 1.000000 S
+drawChar 442.904000 5416.024000 446.040000 5408.024000 1.000000 0.000000 0.000000 1.000000 t
+drawChar 445.704000 5416.024000 448.992000 5408.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 449.408000 5416.024000 454.304000 5408.024000 1.000000 0.000000 0.000000 1.000000 a
+drawChar 454.512000 5416.024000 461.048000 5408.024000 1.000000 0.000000 0.000000 1.000000 w
+drawChar 461.112000 5416.024000 466.184000 5408.024000 1.000000 0.000000 0.000000 1.000000 b
+drawChar 466.216000 5416.024000 471.136000 5408.024000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 470.520000 5416.024000 473.808000 5408.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 474.120000 5416.024000 477.408000 5408.024000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 477.024000 5416.024000 479.240000 5408.024000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 479.224000 5416.024000 484.144000 5408.024000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 484.328000 5416.024000 488.488000 5408.024000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 5404.924000 443.384000 5396.924000 1.000000 0.000000 0.000000 1.000000 C
+drawChar 443.400000 5404.924000 448.464000 5396.924000 1.000000 0.000000 0.000000 1.000000 h
+drawChar 448.504000 5404.924000 453.424000 5396.924000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 453.408000 5404.924000 456.696000 5396.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 456.512000 5404.924000 459.800000 5396.924000 1.000000 0.000000 0.000000 1.000000 r
+drawChar 459.816000 5404.924000 462.032000 5396.924000 1.000000 0.000000 0.000000 1.000000 i
+drawChar 462.016000 5404.924000 466.936000 5396.924000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 466.920000 5404.924000 471.080000 5396.924000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+saveState
+updateFillColor 0.000000 0.000000 0.000000 1.000000
+updateFont 108 1 0 0 0 800.000000 0 CAAAAA+DejaVuSans
+drawChar 437.800000 5393.824000 443.272000 5385.824000 1.000000 0.000000 0.000000 1.000000 A
+drawChar 443.304000 5393.824000 448.376000 5385.824000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 448.408000 5393.824000 453.480000 5385.824000 1.000000 0.000000 0.000000 1.000000 p
+drawChar 453.512000 5393.824000 455.728000 5385.824000 1.000000 0.000000 0.000000 1.000000 l
+drawChar 455.712000 5393.824000 460.632000 5385.824000 1.000000 0.000000 0.000000 1.000000 e
+drawChar 460.616000 5393.824000 464.776000 5385.824000 1.000000 0.000000 0.000000 1.000000 s
+endTextObject
+restoreState
+restoreState
+saveState
+eoClipPath subpath 1 72.000000 2748.900000 0 114.800000 2748.900000 0 114.800000 2791.700000 0 72.000000 2791.700000 0 72.000000 2748.900000 0
+saveState
+updateCtm 4280.000000 0.000000 0.000000 -4270.000000 7200.000000 -195700.000000
+drawSoftMaskedImage 57 57 57 57 JPEG 3113 PPM 9760
+restoreState
+restoreState
+restoreState
+endPage
diff --git a/sdext/source/pdfimport/xpdfwrapper/makefile.mk b/sdext/source/pdfimport/xpdfwrapper/makefile.mk
new file mode 100644
index 000000000000..0d74baf215fa
--- /dev/null
+++ b/sdext/source/pdfimport/xpdfwrapper/makefile.mk
@@ -0,0 +1,82 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..
+
+PRJNAME=sdext
+TARGET=xpdfimport
+TARGETTYPE=CUI
+ENABLE_EXCEPTIONS=TRUE
+EXTERNAL_WARNINGS_NOT_ERRORS := TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+.IF "$(SYSTEM_ZLIB)" == "YES"
+CFLAGS+=-DSYSTEM_ZLIB
+.ENDIF
+
+.IF "$(ENABLE_PDFIMPORT)" == "NO"
+@all:
+ @echo "PDF Import extension disabled."
+.ENDIF
+
+.IF "$(SYSTEM_POPPLER)" == "YES"
+CFLAGS += $(POPPLER_CFLAGS) -DSYSTEM_POPPLER
+.ELSE
+CFLAGS += -I$(SOLARINCDIR)$/xpdf
+.ENDIF
+
+# --- Files --------------------------------------------------------
+UWINAPILIB:=
+APP1TARGET=$(TARGET)
+APP1LIBSALCPPRT=
+APP1OBJS= \
+ $(OBJ)$/wrapper_gpl.obj $(OBJ)/pdfioutdev_gpl.obj $(OBJ)/pnghelper.obj
+
+APP1STDLIBS+=$(ZLIB3RDLIB)
+
+.IF "$(SYSTEM_POPPLER)" == "YES"
+APP1STDLIBS+=$(POPPLER_LIBS)
+.ELSE
+.IF "$(GUI)" == "WNT"
+.IF "$(COM)"=="GCC"
+APP1STDLIBS+=-lxpdf -lfofi -lGoo -lgdi32 -ladvapi32
+.ELSE
+APP1STDLIBS+=xpdf.lib fofi.lib Goo.lib gdi32.lib advapi32.lib
+.ENDIF
+.ELSE
+.IF "$(OS)" == "MACOSX" && "$(GUIBASE)"=="unx"
+APP1STDLIBS+=-lobjc
+.ENDIF
+APP1STDLIBS+=-lxpdf -lfofi -lGoo
+.ENDIF
+.ENDIF
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
diff --git a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
new file mode 100644
index 000000000000..cf28922d2e7d
--- /dev/null
+++ b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
@@ -0,0 +1,935 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU General Public License Version 2.
+ *
+ *
+ * GNU General Public License, version 2
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * 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 program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ ************************************************************************/
+
+#include "pdfioutdev_gpl.hxx"
+#include "pnghelper.hxx"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+#include <vector>
+
+#include <boost/shared_array.hpp>
+
+#if defined __SUNPRO_CC
+#pragma disable_warn
+#elif defined _MSC_VER
+#pragma warning(push, 1)
+#endif
+
+#include "UTF8.h"
+
+#if defined __SUNPRO_CC
+#pragma enable_warn
+#elif defined _MSC_VER
+#pragma warning(pop)
+#endif
+
+#ifdef WNT
+# define snprintf _snprintf
+#endif
+
+
+/* SYNC STREAMS
+ ============
+
+ We stream human-readble tokens to stdout, and binary data (fonts,
+ bitmaps) to g_binary_out. Another process reads from those pipes, and
+ there lies the rub: things can deadlock, if the two involved
+ processes access the pipes in different order. At any point in
+ time, both processes must access the same pipe. To ensure this,
+ data must be flushed to the OS before writing to a different pipe,
+ otherwise not-yet-written data will leave the reading process
+ waiting on the wrong pipe.
+ */
+
+namespace pdfi
+{
+
+/// cut off very small numbers & clamp value to zero
+inline double normalize( double val )
+{
+ return fabs(val) < 0.0000001 ? 0.0 : val;
+}
+
+namespace
+{
+
+/** Escapes line-ending characters (\n and \r) in input string.
+ */
+boost::shared_array<char> lcl_escapeLineFeeds(const char* const i_pStr)
+{
+ size_t nLength(strlen(i_pStr));
+ char* pBuffer = new char[2*nLength+1];
+
+ const char* pRead = i_pStr;
+ char* pWrite = pBuffer;
+ while( nLength-- )
+ {
+ if( *pRead == '\r' )
+ {
+ *pWrite++ = '\\';
+ *pWrite++ = 'r';
+ }
+ else if( *pRead == '\n' )
+ {
+ *pWrite++ = '\\';
+ *pWrite++ = 'n';
+ }
+ else if( *pRead == '\\' )
+ {
+ *pWrite++ = '\\';
+ *pWrite++ = '\\';
+ }
+ else
+ *pWrite++ = *pRead;
+ pRead++;
+ }
+ *pWrite++ = 0;
+
+ return boost::shared_array<char>(pBuffer);
+}
+
+}
+
+/// for the temp char buffer the header gets snprintfed in
+#define WRITE_BUFFER_SIZE 1024
+
+/// for the initial std::vector capacity when copying stream from xpdf
+#define WRITE_BUFFER_INITIAL_CAPACITY (1024*100)
+
+void initBuf(OutputBuffer& io_rBuffer)
+{
+ io_rBuffer.reserve(WRITE_BUFFER_INITIAL_CAPACITY);
+}
+
+void writeBinaryBuffer( const OutputBuffer& rBuffer )
+{
+ // ---sync point--- see SYNC STREAMS above
+ fflush(stdout);
+
+ // put buffer to stderr
+ if( !rBuffer.empty() )
+ if( fwrite(&rBuffer[0], sizeof(char),
+ rBuffer.size(), g_binary_out) != (size_t)rBuffer.size() )
+ exit(1); // error
+
+ // ---sync point--- see SYNC STREAMS above
+ fflush(g_binary_out);
+}
+
+void writeJpeg_( OutputBuffer& o_rOutputBuf, Stream* str, bool bWithLinefeed )
+{
+ // dump JPEG file as-is
+ str = ((DCTStream *)str)->getRawStream();
+ str->reset();
+
+ int c;
+ o_rOutputBuf.clear();
+ while((c=str->getChar()) != EOF)
+ o_rOutputBuf.push_back(static_cast<char>(c));
+
+ printf( " JPEG %d", (int)o_rOutputBuf.size() );
+ if( bWithLinefeed )
+ printf("\n");
+
+ str->close();
+}
+
+void writePbm_(OutputBuffer& o_rOutputBuf, Stream* str, int width, int height, bool bWithLinefeed, bool bInvert )
+{
+ // write as PBM (char by char, to avoid stdlib lineend messing)
+ o_rOutputBuf.clear();
+ o_rOutputBuf.resize(WRITE_BUFFER_SIZE);
+ o_rOutputBuf[0] = 'P';
+ o_rOutputBuf[1] = '4';
+ o_rOutputBuf[2] = 0x0A;
+ int nOutLen = snprintf(&o_rOutputBuf[3], WRITE_BUFFER_SIZE-10, "%d %d", width, height);
+ if( nOutLen < 0 )
+ nOutLen = WRITE_BUFFER_SIZE-10;
+ o_rOutputBuf[3+nOutLen] =0x0A;
+ o_rOutputBuf[3+nOutLen+1]=0;
+
+ const int header_size = 3+nOutLen+1;
+ const int size = height * ((width + 7) / 8);
+
+ printf( " PBM %d", size + header_size );
+ if( bWithLinefeed )
+ printf("\n");
+
+ // trim buffer to exact header length
+ o_rOutputBuf.resize(header_size);
+
+ // initialize stream
+ str->reset();
+
+ // copy the raw stream
+ if( bInvert )
+ {
+ for( int i=0; i<size; ++i)
+ o_rOutputBuf.push_back(static_cast<char>(str->getChar() ^ 0xff));
+ }
+ else
+ {
+ for( int i=0; i<size; ++i)
+ o_rOutputBuf.push_back(static_cast<char>(str->getChar()));
+ }
+
+ str->close();
+}
+
+void writePpm_( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width,
+ int height,
+ GfxImageColorMap* colorMap,
+ bool bWithLinefeed )
+{
+ // write as PPM (char by char, to avoid stdlib lineend messing)
+ o_rOutputBuf.clear();
+ o_rOutputBuf.resize(WRITE_BUFFER_SIZE);
+ o_rOutputBuf[0] = 'P';
+ o_rOutputBuf[1] = '6';
+ o_rOutputBuf[2] = '\n';
+ int nOutLen = snprintf(&o_rOutputBuf[3], WRITE_BUFFER_SIZE-10, "%d %d", width, height);
+ if( nOutLen < 0 )
+ nOutLen = WRITE_BUFFER_SIZE-10;
+ o_rOutputBuf[3+nOutLen] ='\n';
+ o_rOutputBuf[3+nOutLen+1]='2';
+ o_rOutputBuf[3+nOutLen+2]='5';
+ o_rOutputBuf[3+nOutLen+3]='5';
+ o_rOutputBuf[3+nOutLen+4]='\n';
+ o_rOutputBuf[3+nOutLen+5]=0;
+
+ const int header_size = 3+nOutLen+5;
+ const int size = width*height*3 + header_size;
+
+ printf( " PPM %d", size );
+ if( bWithLinefeed )
+ printf("\n");
+
+ // trim buffer to exact header size
+ o_rOutputBuf.resize(header_size);
+
+ // initialize stream
+ Guchar *p;
+ GfxRGB rgb;
+ ImageStream* imgStr =
+ new ImageStream(str,
+ width,
+ colorMap->getNumPixelComps(),
+ colorMap->getBits());
+ imgStr->reset();
+
+ for( int y=0; y<height; ++y)
+ {
+ p = imgStr->getLine();
+ for( int x=0; x<width; ++x)
+ {
+ colorMap->getRGB(p, &rgb);
+ o_rOutputBuf.push_back(colToByte(rgb.r));
+ o_rOutputBuf.push_back(colToByte(rgb.g));
+ o_rOutputBuf.push_back(colToByte(rgb.b));
+
+ p +=colorMap->getNumPixelComps();
+ }
+ }
+
+ delete imgStr;
+
+}
+
+// call this only for 1 bit image streams !
+void writePng_( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width,
+ int height,
+ GfxRGB& zeroColor,
+ GfxRGB& oneColor,
+ bool bIsMask,
+ bool bWithLinefeed )
+{
+ o_rOutputBuf.clear();
+
+ // get png image
+ PngHelper::createPng( o_rOutputBuf, str, width, height, zeroColor, oneColor, bIsMask );
+
+ printf( " PNG %d", (int)o_rOutputBuf.size() );
+ if( bWithLinefeed )
+ printf("\n");
+}
+
+void writePng_( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width, int height, GfxImageColorMap* colorMap,
+ Stream* maskStr,
+ int maskWidth, int maskHeight, GfxImageColorMap* maskColorMap,
+ bool bWithLinefeed )
+{
+ o_rOutputBuf.clear();
+
+ // get png image
+ PngHelper::createPng( o_rOutputBuf, str, width, height, colorMap, maskStr, maskWidth, maskHeight, maskColorMap );
+
+ printf( " PNG %d", (int)o_rOutputBuf.size() );
+ if( bWithLinefeed )
+ printf("\n");
+}
+
+void writePng_( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width, int height, GfxImageColorMap* colorMap,
+ Stream* maskStr,
+ int maskWidth, int maskHeight, bool maskInvert,
+ bool bWithLinefeed )
+{
+ o_rOutputBuf.clear();
+
+ // get png image
+ PngHelper::createPng( o_rOutputBuf, str, width, height, colorMap, maskStr, maskWidth, maskHeight, maskInvert );
+
+ printf( " PNG %d", (int)o_rOutputBuf.size() );
+ if( bWithLinefeed )
+ printf("\n");
+}
+
+// stolen from ImageOutputDev.cc
+void writeMask_( OutputBuffer& o_rOutputBuf, Stream* str, int width, int height, bool bWithLinefeed, bool bInvert )
+{
+ if( str->getKind() == strDCT )
+ writeJpeg_(o_rOutputBuf, str, bWithLinefeed);
+ else
+ writePbm_(o_rOutputBuf, str, width, height, bWithLinefeed, bInvert );
+}
+
+void writeImage_( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width,
+ int height,
+ GfxImageColorMap* colorMap,
+ bool bWithLinefeed )
+{
+ // dump JPEG file
+ if( str->getKind() == strDCT &&
+ (colorMap->getNumPixelComps() == 1 ||
+ colorMap->getNumPixelComps() == 3) )
+ {
+ writeJpeg_(o_rOutputBuf, str, bWithLinefeed);
+ }
+ else if (colorMap->getNumPixelComps() == 1 &&
+ colorMap->getBits() == 1)
+ {
+ // this is a two color bitmap, write a png
+ // provide default colors
+ GfxRGB zeroColor = { 0, 0, 0 },
+ oneColor = { byteToCol( 0xff ), byteToCol( 0xff ), byteToCol( 0xff ) };
+ if( colorMap->getColorSpace()->getMode() == csIndexed || colorMap->getColorSpace()->getMode() == csDeviceGray )
+ {
+ Guchar nIndex = 0;
+ colorMap->getRGB( &nIndex, &zeroColor );
+ nIndex = 1;
+ colorMap->getRGB( &nIndex, &oneColor );
+ }
+ writePng_( o_rOutputBuf, str, width, height, zeroColor, oneColor, false, bWithLinefeed );
+ }
+ else
+ writePpm_( o_rOutputBuf, str, width, height, colorMap, bWithLinefeed );
+}
+
+// forwarders
+// ------------------------------------------------------------------
+
+inline void writeImage( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width,
+ int height,
+ GfxImageColorMap* colorMap ) { writeImage_(o_rOutputBuf,str,width,height,colorMap,false); }
+inline void writeImageLF( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width,
+ int height,
+ GfxImageColorMap* colorMap ) { writeImage_(o_rOutputBuf,str,width,height,colorMap,true); }
+inline void writeMask( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width,
+ int height,
+ bool bInvert ) { writeMask_(o_rOutputBuf,str,width,height,false,bInvert); }
+inline void writeMaskLF( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width,
+ int height,
+ bool bInvert ) { writeMask_(o_rOutputBuf,str,width,height,true,bInvert); }
+
+// ------------------------------------------------------------------
+
+
+int PDFOutDev::parseFont( long long nNewId, GfxFont* gfxFont, GfxState* state ) const
+{
+ FontAttributes aNewFont;
+ int nSize = 0;
+
+ GooString* pFamily = gfxFont->getName();
+ if( ! pFamily )
+ pFamily = gfxFont->getOrigName();
+ if( pFamily )
+ {
+ aNewFont.familyName.clear();
+ aNewFont.familyName.append( gfxFont->getName() );
+ }
+ else
+ {
+ aNewFont.familyName.clear();
+ aNewFont.familyName.append( "Arial" );
+ }
+
+ aNewFont.isBold = gfxFont->isBold();
+ aNewFont.isItalic = gfxFont->isItalic();
+ aNewFont.size = state->getTransformedFontSize();
+ aNewFont.isUnderline = false;
+
+ if( gfxFont->getType() == fontTrueType || gfxFont->getType() == fontType1 )
+ {
+ // TODO(P3): Unfortunately, need to read stream twice, since
+ // we must write byte count to stdout before
+ char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
+ if( pBuf )
+ aNewFont.isEmbedded = true;
+ }
+
+ m_aFontMap[ nNewId ] = aNewFont;
+ return nSize;
+}
+
+void PDFOutDev::writeFontFile( GfxFont* gfxFont ) const
+{
+ if( gfxFont->getType() != fontTrueType && gfxFont->getType() != fontType1 )
+ return;
+
+ int nSize = 0;
+ char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
+ if( !pBuf )
+ return;
+
+ // ---sync point--- see SYNC STREAMS above
+ fflush(stdout);
+
+ if( fwrite(pBuf, sizeof(char), nSize, g_binary_out) != (size_t)nSize )
+ exit(1); // error
+
+ // ---sync point--- see SYNC STREAMS above
+ fflush(g_binary_out);
+}
+
+void PDFOutDev::printPath( GfxPath* pPath ) const
+{
+ int nSubPaths = pPath ? pPath->getNumSubpaths() : 0;
+ for( int i=0; i<nSubPaths; i++ )
+ {
+ GfxSubpath* pSub = pPath->getSubpath( i );
+ const int nPoints = pSub->getNumPoints();
+
+ printf( " subpath %d", pSub->isClosed() );
+
+ for( int n=0; n<nPoints; ++n )
+ {
+ printf( " %f %f %d",
+ normalize(pSub->getX(n)),
+ normalize(pSub->getY(n)),
+ pSub->getCurve(n) );
+ }
+ }
+}
+
+PDFOutDev::PDFOutDev( PDFDoc* pDoc ) :
+ m_pDoc( pDoc ),
+ m_aFontMap(),
+ m_pUtf8Map( new UnicodeMap((char*)"UTF-8", gTrue, &mapUTF8) )
+{
+}
+
+void PDFOutDev::startPage(int /*pageNum*/, GfxState* state)
+{
+ assert(state);
+ printf("startPage %f %f\n",
+ normalize(state->getPageWidth()),
+ normalize(state->getPageHeight()));
+}
+
+void PDFOutDev::endPage()
+{
+ printf("endPage\n");
+}
+
+#if POPPLER_CHECK_VERSION(0, 17, 0)
+void PDFOutDev::processLink(AnnotLink *link, Catalog *catalog)
+#else
+void PDFOutDev::processLink(Link* link, Catalog*)
+#endif
+{
+ assert(link);
+
+ double x1,x2,y1,y2;
+ link->getRect( &x1, &y1, &x2, &y2 );
+
+ LinkAction* pAction = link->getAction();
+ if( pAction->getKind() == actionURI )
+ {
+ const char* pURI = static_cast<LinkURI*>(pAction)->getURI()->getCString();
+
+ boost::shared_array<char> pEsc( lcl_escapeLineFeeds(pURI) );
+
+ printf( "drawLink %f %f %f %f %s\n",
+ normalize(x1),
+ normalize(y1),
+ normalize(x2),
+ normalize(y2),
+ pEsc.get() );
+ }
+}
+
+void PDFOutDev::saveState(GfxState*)
+{
+ printf( "saveState\n" );
+}
+
+void PDFOutDev::restoreState(GfxState*)
+{
+ printf( "restoreState\n" );
+}
+
+void PDFOutDev::setDefaultCTM(double *pMat)
+{
+ assert(pMat);
+
+ OutputDev::setDefaultCTM(pMat);
+
+ printf( "updateCtm %f %f %f %f %f %f\n",
+ normalize(pMat[0]),
+ normalize(pMat[2]),
+ normalize(pMat[1]),
+ normalize(pMat[3]),
+ normalize(pMat[4]),
+ normalize(pMat[5]) );
+}
+
+void PDFOutDev::updateCTM(GfxState* state,
+ double, double,
+ double, double,
+ double, double)
+{
+ assert(state);
+
+ const double* const pMat = state->getCTM();
+ assert(pMat);
+
+ printf( "updateCtm %f %f %f %f %f %f\n",
+ normalize(pMat[0]),
+ normalize(pMat[2]),
+ normalize(pMat[1]),
+ normalize(pMat[3]),
+ normalize(pMat[4]),
+ normalize(pMat[5]) );
+}
+
+void PDFOutDev::updateLineDash(GfxState *state)
+{
+ assert(state);
+
+ double* dashArray; int arrayLen; double startOffset;
+ state->getLineDash(&dashArray, &arrayLen, &startOffset);
+
+ printf( "updateLineDash" );
+ if( arrayLen && dashArray )
+ {
+ printf( " %f %d", normalize(startOffset), arrayLen );
+ for( int i=0; i<arrayLen; ++i )
+ printf( " %f", normalize(*dashArray++) );
+ }
+ printf( "\n" );
+}
+
+void PDFOutDev::updateFlatness(GfxState *state)
+{
+ assert(state);
+ printf( "updateFlatness %d\n", state->getFlatness() );
+}
+
+void PDFOutDev::updateLineJoin(GfxState *state)
+{
+ assert(state);
+ printf( "updateLineJoin %d\n", state->getLineJoin() );
+}
+
+void PDFOutDev::updateLineCap(GfxState *state)
+{
+ assert(state);
+ printf( "updateLineCap %d\n", state->getLineCap() );
+}
+
+void PDFOutDev::updateMiterLimit(GfxState *state)
+{
+ assert(state);
+ printf( "updateMiterLimit %f\n", normalize(state->getMiterLimit()) );
+}
+
+void PDFOutDev::updateLineWidth(GfxState *state)
+{
+ assert(state);
+ printf( "updateLineWidth %f\n", normalize(state->getLineWidth()) );
+}
+
+void PDFOutDev::updateFillColor(GfxState *state)
+{
+ assert(state);
+
+ GfxRGB aRGB;
+ state->getFillRGB( &aRGB );
+
+ printf( "updateFillColor %f %f %f %f\n",
+ normalize(colToDbl(aRGB.r)),
+ normalize(colToDbl(aRGB.g)),
+ normalize(colToDbl(aRGB.b)),
+ normalize(state->getFillOpacity()) );
+}
+
+void PDFOutDev::updateStrokeColor(GfxState *state)
+{
+ assert(state);
+
+ GfxRGB aRGB;
+ state->getStrokeRGB( &aRGB );
+
+ printf( "updateStrokeColor %f %f %f %f\n",
+ normalize(colToDbl(aRGB.r)),
+ normalize(colToDbl(aRGB.g)),
+ normalize(colToDbl(aRGB.b)),
+ normalize(state->getFillOpacity()) );
+}
+
+void PDFOutDev::updateFillOpacity(GfxState *state)
+{
+ updateFillColor(state);
+}
+
+void PDFOutDev::updateStrokeOpacity(GfxState *state)
+{
+ updateStrokeColor(state);
+}
+
+void PDFOutDev::updateBlendMode(GfxState*)
+{
+}
+
+void PDFOutDev::updateFont(GfxState *state)
+{
+ assert(state);
+
+ GfxFont *gfxFont = state->getFont();
+ if( gfxFont )
+ {
+ FontAttributes aFont;
+ int nEmbedSize=0;
+
+ Ref* pID = gfxFont->getID();
+ // TODO(Q3): Portability problem
+ long long fontID = (long long)pID->gen << 32 | (long long)pID->num;
+ boost::unordered_map< long long, FontAttributes >::const_iterator it =
+ m_aFontMap.find( fontID );
+ if( it == m_aFontMap.end() )
+ {
+ nEmbedSize = parseFont( fontID, gfxFont, state );
+ it = m_aFontMap.find( fontID );
+ }
+
+ printf( "updateFont" );
+ if( it != m_aFontMap.end() )
+ {
+ // conflating this with printf below crashes under Windoze
+ printf( " %lld", fontID );
+
+ aFont = it->second;
+
+ boost::shared_array<char> pEsc( lcl_escapeLineFeeds(aFont.familyName.getCString()) );
+ printf( " %d %d %d %d %f %d %s",
+ aFont.isEmbedded,
+ aFont.isBold,
+ aFont.isItalic,
+ aFont.isUnderline,
+ normalize(state->getTransformedFontSize()),
+ nEmbedSize,
+ pEsc.get() );
+ }
+ printf( "\n" );
+
+ if( nEmbedSize )
+ writeFontFile(gfxFont);
+ }
+}
+
+void PDFOutDev::updateRender(GfxState *state)
+{
+ assert(state);
+
+ printf( "setTextRenderMode %d\n", state->getRender() );
+}
+
+void PDFOutDev::stroke(GfxState *state)
+{
+ assert(state);
+
+ printf( "strokePath" );
+ printPath( state->getPath() );
+ printf( "\n" );
+}
+
+void PDFOutDev::fill(GfxState *state)
+{
+ assert(state);
+
+ printf( "fillPath" );
+ printPath( state->getPath() );
+ printf( "\n" );
+}
+
+void PDFOutDev::eoFill(GfxState *state)
+{
+ assert(state);
+
+ printf( "eoFillPath" );
+ printPath( state->getPath() );
+ printf( "\n" );
+}
+
+void PDFOutDev::clip(GfxState *state)
+{
+ assert(state);
+
+ printf( "clipPath" );
+ printPath( state->getPath() );
+ printf( "\n" );
+}
+
+void PDFOutDev::eoClip(GfxState *state)
+{
+ assert(state);
+
+ printf( "eoClipPath" );
+ printPath( state->getPath() );
+ printf( "\n" );
+}
+
+/** Output one glyph
+
+
+ @param dx
+ horizontal skip for character (already scaled with font size) +
+ inter-char space: cursor is shifted by this amount for next char
+
+ @param dy
+ vertical skip for character (zero for horizontal writing mode):
+ cursor is shifted by this amount for next char
+
+ @param originX
+ local offset of character (zero for horizontal writing mode). not
+ taken into account for output pos updates. Used for vertical writing.
+
+ @param originY
+ local offset of character (zero for horizontal writing mode). not
+ taken into account for output pos updates. Used for vertical writing.
+ */
+void PDFOutDev::drawChar(GfxState *state, double x, double y,
+ double dx, double dy,
+ double originX, double originY,
+ CharCode, int /*nBytes*/, Unicode *u, int uLen)
+{
+ assert(state);
+
+ if( u == NULL )
+ return;
+
+ // normalize coordinates: correct from baseline-relative to upper
+ // left corner of glyphs
+ double x2(0.0), y2(0.0);
+ state->textTransformDelta( 0.0,
+ state->getFont()->getAscent(),
+ &x2, &y2 );
+ const double fFontSize(state->getFontSize());
+ x += x2*fFontSize;
+ y += y2*fFontSize;
+
+ const double aPositionX(x-originX);
+ const double aPositionY(y-originY);
+ // TODO(F2): use leading here, when set
+ const double nWidth(dx != 0.0 ? dx : fFontSize);
+ const double nHeight(dy != 0.0 ? dy : fFontSize);
+
+ const double* pTextMat=state->getTextMat();
+ printf( "drawChar %f %f %f %f %f %f %f %f ",
+ normalize(aPositionX),
+ normalize(aPositionY),
+ normalize(aPositionX+nWidth),
+ normalize(aPositionY-nHeight),
+ normalize(pTextMat[0]),
+ normalize(pTextMat[2]),
+ normalize(pTextMat[1]),
+ normalize(pTextMat[3]) );
+
+ // silence spurious warning
+ (void)&mapUCS2;
+
+ char buf[9];
+ for( int i=0; i<uLen; ++i )
+ {
+ buf[ m_pUtf8Map->mapUnicode(u[i], buf, sizeof(buf)-1) ] = 0;
+ boost::shared_array<char> pEsc( lcl_escapeLineFeeds(buf) );
+ printf( "%s", pEsc.get() );
+ }
+
+ printf( "\n" );
+}
+
+void PDFOutDev::drawString(GfxState*, GooString* /*s*/)
+{
+ // TODO(F3): NYI
+}
+
+void PDFOutDev::endTextObject(GfxState*)
+{
+ printf( "endTextObject\n" );
+}
+
+void PDFOutDev::drawImageMask(GfxState* pState, Object*, Stream* str,
+ int width, int height, GBool invert,
+ GBool /*inlineImg*/ )
+{
+ OutputBuffer aBuf; initBuf(aBuf);
+
+ printf( "drawMask %d %d %d", width, height, invert );
+
+ int bitsPerComponent = 1;
+ StreamColorSpaceMode csMode = streamCSNone;
+ str->getImageParams( &bitsPerComponent, &csMode );
+ if( bitsPerComponent == 1 && (csMode == streamCSNone || csMode == streamCSDeviceGray) )
+ {
+ GfxRGB oneColor = { dblToCol( 1.0 ), dblToCol( 1.0 ), dblToCol( 1.0 ) };
+ GfxRGB zeroColor = { dblToCol( 0.0 ), dblToCol( 0.0 ), dblToCol( 0.0 ) };
+ pState->getFillColorSpace()->getRGB( pState->getFillColor(), &zeroColor );
+ if( invert )
+ writePng_( aBuf, str, width, height, oneColor, zeroColor, true, true );
+ else
+ writePng_( aBuf, str, width, height, zeroColor, oneColor, true, true );
+ }
+ else
+ writeMaskLF(aBuf, str, width, height, invert != 0);
+ writeBinaryBuffer(aBuf);
+}
+
+void PDFOutDev::drawImage(GfxState*, Object*, Stream* str,
+ int width, int height, GfxImageColorMap* colorMap,
+ int* maskColors, GBool /*inlineImg*/ )
+{
+ OutputBuffer aBuf; initBuf(aBuf);
+ OutputBuffer aMaskBuf;
+
+ printf( "drawImage %d %d", width, height );
+
+ if( maskColors )
+ {
+ // write mask colors. nBytes must be even - first half is
+ // lower bound values, second half upper bound values
+ if( colorMap->getColorSpace()->getMode() == csIndexed )
+ {
+ aMaskBuf.push_back( (char)maskColors[0] );
+ aMaskBuf.push_back( (char)maskColors[gfxColorMaxComps] );
+ }
+ else
+ {
+ GfxRGB aMinRGB;
+ colorMap->getColorSpace()->getRGB(
+ (GfxColor*)maskColors,
+ &aMinRGB );
+
+ GfxRGB aMaxRGB;
+ colorMap->getColorSpace()->getRGB(
+ (GfxColor*)maskColors+gfxColorMaxComps,
+ &aMaxRGB );
+
+ aMaskBuf.push_back( colToByte(aMinRGB.r) );
+ aMaskBuf.push_back( colToByte(aMinRGB.g) );
+ aMaskBuf.push_back( colToByte(aMinRGB.b) );
+ aMaskBuf.push_back( colToByte(aMaxRGB.r) );
+ aMaskBuf.push_back( colToByte(aMaxRGB.g) );
+ aMaskBuf.push_back( colToByte(aMaxRGB.b) );
+ }
+ }
+
+ printf( " %d", (int)aMaskBuf.size() );
+ writeImageLF( aBuf, str, width, height, colorMap );
+ writeBinaryBuffer(aBuf);
+ writeBinaryBuffer(aMaskBuf);
+}
+
+void PDFOutDev::drawMaskedImage(GfxState*, Object*, Stream* str,
+ int width, int height,
+ GfxImageColorMap* colorMap,
+ Stream* maskStr,
+ int maskWidth, int maskHeight,
+ GBool maskInvert)
+{
+ OutputBuffer aBuf; initBuf(aBuf);
+ printf( "drawImage %d %d 0", width, height );
+ writePng_( aBuf, str, width, height, colorMap, maskStr, maskWidth, maskHeight, maskInvert, true );
+ writeBinaryBuffer( aBuf );
+}
+
+void PDFOutDev::drawSoftMaskedImage(GfxState*, Object*, Stream* str,
+ int width, int height,
+ GfxImageColorMap* colorMap,
+ Stream* maskStr,
+ int maskWidth, int maskHeight,
+ GfxImageColorMap* maskColorMap )
+{
+ OutputBuffer aBuf; initBuf(aBuf);
+ printf( "drawImage %d %d 0", width, height );
+ writePng_( aBuf, str, width, height, colorMap, maskStr, maskWidth, maskHeight, maskColorMap, true );
+ writeBinaryBuffer( aBuf );
+}
+
+void PDFOutDev::setPageNum( int nNumPages )
+{
+ // TODO(F3): printf might format int locale-dependent!
+ printf("setPageNum %d\n", nNumPages);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx
new file mode 100644
index 000000000000..2a35fb7faaae
--- /dev/null
+++ b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx
@@ -0,0 +1,299 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU General Public License Version 2.
+ *
+ *
+ * GNU General Public License, version 2
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * 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 program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_PDFI_OUTDEV_HXX
+#define INCLUDED_PDFI_OUTDEV_HXX
+
+#if defined __GNUC__
+#pragma GCC system_header
+#elif defined __SUNPRO_CC
+#pragma disable_warn
+#elif defined _MSC_VER
+#pragma warning(push, 1)
+#endif
+
+#include "GfxState.h"
+#include "GfxFont.h"
+#include "UnicodeMap.h"
+#include "Link.h"
+#include "Object.h"
+#include "OutputDev.h"
+#ifndef SYSTEM_POPPLER
+# include "parseargs.h"
+#endif
+#include "GlobalParams.h"
+#include "PDFDoc.h"
+
+#if defined __SUNPRO_CC
+#pragma enable_warn
+#elif defined _MSC_VER
+#pragma warning(pop)
+#endif
+
+#include <boost/unordered_map.hpp>
+#include <vector>
+
+class GfxPath;
+class GfxFont;
+class PDFDoc;
+#ifndef SYSTEM_POPPLER
+#define POPPLER_CHECK_VERSION(major,minor,micro) (0)
+typedef GString GooString;
+#else
+#include <glib/poppler-features.h>
+#endif
+
+namespace pdfi
+{
+ struct FontAttributes
+ {
+ FontAttributes( const GooString& familyName_,
+ bool isEmbedded_,
+ bool isBold_,
+ bool isItalic_,
+ bool isUnderline_,
+ double size_ ) :
+ familyName(),
+ isEmbedded(isEmbedded_),
+ isBold(isBold_),
+ isItalic(isItalic_),
+ isUnderline(isUnderline_),
+ size(size_)
+ {
+ familyName.append(const_cast<GooString*>(&familyName_));
+ }
+
+ FontAttributes() :
+ familyName(),
+ isEmbedded(false),
+ isBold(false),
+ isItalic(false),
+ isUnderline(false),
+ size(0.0)
+ {}
+
+ // xdpf goo stuff is so totally borked...
+ // ...need to hand-code assignment
+ FontAttributes( const FontAttributes& rSrc ) :
+ familyName(),
+ isEmbedded(rSrc.isEmbedded),
+ isBold(rSrc.isBold),
+ isItalic(rSrc.isItalic),
+ isUnderline(rSrc.isUnderline),
+ size(rSrc.size)
+ {
+ familyName.append(const_cast<GooString*>(&rSrc.familyName));
+ }
+
+ FontAttributes& operator=( const FontAttributes& rSrc )
+ {
+ familyName.clear();
+ familyName.append(const_cast<GooString*>(&rSrc.familyName));
+
+ isEmbedded = rSrc.isEmbedded;
+ isBold = rSrc.isBold;
+ isItalic = rSrc.isItalic;
+ isUnderline = rSrc.isUnderline;
+ size = rSrc.size;
+
+ return *this;
+ }
+
+ bool operator==(const FontAttributes& rFont) const
+ {
+ return const_cast<GooString*>(&familyName)->cmp(
+ const_cast<GooString*>(&rFont.familyName))==0 &&
+ isEmbedded == rFont.isEmbedded &&
+ isBold == rFont.isBold &&
+ isItalic == rFont.isItalic &&
+ isUnderline == rFont.isUnderline &&
+ size == rFont.size;
+ }
+
+ GooString familyName;
+ bool isEmbedded;
+ bool isBold;
+ bool isItalic;
+ bool isUnderline;
+ double size;
+ };
+
+ class PDFOutDev : public OutputDev
+ {
+ // not owned by this class
+ PDFDoc* m_pDoc;
+ mutable boost::unordered_map< long long,
+ FontAttributes > m_aFontMap;
+ UnicodeMap* m_pUtf8Map;
+
+ int parseFont( long long nNewId, GfxFont* pFont, GfxState* state ) const;
+ void writeFontFile( GfxFont* gfxFont ) const;
+ void printPath( GfxPath* pPath ) const;
+
+ public:
+ explicit PDFOutDev( PDFDoc* pDoc );
+
+ //----- get info about output device
+
+ // Does this device use upside-down coordinates?
+ // (Upside-down means (0,0) is the top left corner of the page.)
+ virtual GBool upsideDown() { return gTrue; }
+
+ // Does this device use drawChar() or drawString()?
+ virtual GBool useDrawChar() { return gTrue; }
+
+ // Does this device use beginType3Char/endType3Char? Otherwise,
+ // text in Type 3 fonts will be drawn with drawChar/drawString.
+ virtual GBool interpretType3Chars() { return gFalse; }
+
+ // Does this device need non-text content?
+ virtual GBool needNonText() { return gTrue; }
+
+ //----- initialization and control
+
+ // Set default transform matrix.
+ virtual void setDefaultCTM(double *ctm);
+
+ // Start a page.
+ virtual void startPage(int pageNum, GfxState *state);
+
+ // End a page.
+ virtual void endPage();
+
+ // Dump page contents to display.
+ // virtual void dump() {}
+
+ //----- coordinate conversion
+
+ // Convert between device and user coordinates.
+ // virtual void cvtDevToUser(double dx, double dy, double *ux, double *uy);
+ // virtual void cvtUserToDev(double ux, double uy, int *dx, int *dy);
+
+ #if POPPLER_CHECK_VERSION(0, 17, 0)
+ virtual void processLink(AnnotLink *link, Catalog *catalog);
+ #else
+ //----- link borders
+ virtual void processLink(Link *link, Catalog *catalog);
+ #endif
+
+ //----- save/restore graphics state
+ virtual void saveState(GfxState *state);
+ virtual void restoreState(GfxState *state);
+
+ //----- update graphics state
+ // virtual void updateAll(GfxState *state);
+ virtual void updateCTM(GfxState *state, double m11, double m12,
+ double m21, double m22, double m31, double m32);
+ virtual void updateLineDash(GfxState *state);
+ virtual void updateFlatness(GfxState *state);
+ virtual void updateLineJoin(GfxState *state);
+ virtual void updateLineCap(GfxState *state);
+ virtual void updateMiterLimit(GfxState *state);
+ virtual void updateLineWidth(GfxState *state);
+ virtual void updateFillColor(GfxState *state);
+ virtual void updateStrokeColor(GfxState *state);
+ virtual void updateFillOpacity(GfxState *state);
+ virtual void updateStrokeOpacity(GfxState *state);
+ virtual void updateBlendMode(GfxState *state);
+
+ //----- update text state
+ virtual void updateFont(GfxState *state);
+ // virtual void updateTextMat(GfxState *state);
+ // virtual void updateCharSpace(GfxState *state) {}
+ virtual void updateRender(GfxState *state);
+ // virtual void updateRise(GfxState *state) {}
+ // virtual void updateWordSpace(GfxState *state) {}
+ // virtual void updateHorizScaling(GfxState *state) {}
+ // virtual void updateTextPos(GfxState *state) {}
+ // virtual void updateTextShift(GfxState *state, double shift) {}
+
+ //----- path painting
+ virtual void stroke(GfxState *state);
+ virtual void fill(GfxState *state);
+ virtual void eoFill(GfxState *state);
+
+ //----- path clipping
+ virtual void clip(GfxState *state);
+ virtual void eoClip(GfxState *state);
+
+ //----- text drawing
+ virtual void drawChar(GfxState *state, double x, double y,
+ double dx, double dy,
+ double originX, double originY,
+ CharCode code, int nBytes, Unicode *u, int uLen);
+ virtual void drawString(GfxState *state, GooString *s);
+ virtual void endTextObject(GfxState *state);
+
+ //----- image drawing
+ virtual void drawImageMask(GfxState *state, Object *ref, Stream *str,
+ int width, int height, GBool invert,
+ GBool inlineImg);
+ virtual void drawImage(GfxState *state, Object *ref, Stream *str,
+ int width, int height, GfxImageColorMap *colorMap,
+ int *maskColors, GBool inlineImg);
+ virtual void drawMaskedImage(GfxState *state, Object *ref, Stream *str,
+ int width, int height,
+ GfxImageColorMap *colorMap,
+ Stream *maskStr, int maskWidth, int maskHeight,
+ GBool maskInvert);
+ virtual void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str,
+ int width, int height,
+ GfxImageColorMap *colorMap,
+ Stream *maskStr,
+ int maskWidth, int maskHeight,
+ GfxImageColorMap *maskColorMap);
+
+ //----- OPI functions
+ // virtual void opiBegin(GfxState *state, Dict *opiDict);
+ // virtual void opiEnd(GfxState *state, Dict *opiDict);
+
+ //----- Type 3 font operators
+ // virtual void type3D0(GfxState *state, double wx, double wy) {}
+ // virtual void type3D1(GfxState *state, double wx, double wy,
+ // double llx, double lly, double urx, double ury) {}
+
+ //----- PostScript XObjects
+ // virtual void psXObject(Stream *psStream, Stream *level1Stream) {}
+
+ void setPageNum( int nNumPages );
+ };
+}
+
+extern FILE* g_binary_out;
+
+// note: if you ever hcange Output_t, please keep in mind that the current code
+// relies on it being of 8 bit size
+typedef char Output_t;
+typedef std::vector< Output_t > OutputBuffer;
+
+#endif /* INCLUDED_PDFI_OUTDEV_HXX */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/xpdfwrapper/pnghelper.cxx b/sdext/source/pdfimport/xpdfwrapper/pnghelper.cxx
new file mode 100644
index 000000000000..71b0c8989228
--- /dev/null
+++ b/sdext/source/pdfimport/xpdfwrapper/pnghelper.cxx
@@ -0,0 +1,419 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU General Public License Version 2.
+ *
+ *
+ * GNU General Public License, version 2
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * 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 program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ ************************************************************************/
+
+#include "pnghelper.hxx"
+#include <sal/macros.h>
+
+#ifdef SYSTEM_ZLIB
+#include "zlib.h"
+#else
+#define ZLIB_INTERNAL 1
+#include <zlib/zlib.h>
+#endif
+
+using namespace pdfi;
+
+// checksum helpers, courtesy of libpng.org
+
+/* Table of CRCs of all 8-bit messages. */
+sal_uInt32 PngHelper::crc_table[256];
+
+/* Flag: has the table been computed? Initially false. */
+bool PngHelper::bCRCTableInit = true;
+
+/* Make the table for a fast CRC. */
+void PngHelper::initCRCTable()
+{
+ for (sal_uInt32 n = 0; n < 256; n++)
+ {
+ sal_uInt32 c = n;
+ for (int k = 0; k < 8; k++)
+ {
+ if (c & 1)
+ c = 0xedb88320L ^ (c >> 1);
+ else
+ c = c >> 1;
+ }
+ crc_table[n] = c;
+ }
+ bCRCTableInit = false;
+}
+
+/* Update a running CRC with the bytes buf[0..len-1]--the CRC
+ should be initialized to all 1's, and the transmitted value
+ is the 1's complement of the final running CRC (see the
+ crc() routine below)). */
+
+void PngHelper::updateCRC( sal_uInt32& io_rCRC, const sal_uInt8* i_pBuf, size_t i_nLen )
+{
+ if( bCRCTableInit )
+ initCRCTable();
+
+ sal_uInt32 nCRC = io_rCRC;
+ for( size_t n = 0; n < i_nLen; n++ )
+ nCRC = crc_table[(nCRC ^ i_pBuf[n]) & 0xff] ^ (nCRC >> 8);
+ io_rCRC = nCRC;
+}
+
+sal_uInt32 PngHelper::getCRC( const sal_uInt8* i_pBuf, size_t i_nLen )
+{
+ sal_uInt32 nCRC = 0xffffffff;
+ updateCRC( nCRC, i_pBuf, i_nLen );
+ return nCRC ^ 0xffffffff;
+}
+
+sal_uInt32 PngHelper::deflateBuffer( const Output_t* i_pBuf, size_t i_nLen, OutputBuffer& o_rOut )
+{
+ size_t nOrigSize = o_rOut.size();
+
+ // prepare z stream
+ z_stream aStream;
+ aStream.zalloc = Z_NULL;
+ aStream.zfree = Z_NULL;
+ aStream.opaque = Z_NULL;
+ deflateInit( &aStream, Z_BEST_COMPRESSION );
+ aStream.avail_in = uInt(i_nLen);
+ aStream.next_in = (Bytef*)i_pBuf;
+
+ sal_uInt8 aOutBuf[ 32768 ];
+ do
+ {
+ aStream.avail_out = sizeof( aOutBuf );
+ aStream.next_out = aOutBuf;
+
+ if( deflate( &aStream, Z_FINISH ) == Z_STREAM_ERROR )
+ {
+ deflateEnd( &aStream );
+ // scrao the data of this broken stream
+ o_rOut.resize( nOrigSize );
+ return 0;
+ }
+
+ // append compressed bytes
+ sal_uInt32 nCompressedBytes = sizeof( aOutBuf ) - aStream.avail_out;
+ if( nCompressedBytes )
+ o_rOut.insert( o_rOut.end(), aOutBuf, aOutBuf+nCompressedBytes );
+
+ } while( aStream.avail_out == 0 );
+
+ // cleanup
+ deflateEnd( &aStream );
+
+ return sal_uInt32( o_rOut.size() - nOrigSize );
+}
+
+void PngHelper::appendFileHeader( OutputBuffer& o_rOutputBuf )
+{
+ static const unsigned char aHeader[] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a };
+
+ o_rOutputBuf.insert( o_rOutputBuf.end(), aHeader, aHeader + SAL_N_ELEMENTS(aHeader) );
+}
+
+size_t PngHelper::startChunk( const char* pChunkName, OutputBuffer& o_rOutputBuf )
+{
+ size_t nIndex = sal_uInt32( o_rOutputBuf.size() );
+ o_rOutputBuf.insert( o_rOutputBuf.end(), 4, (Output_t)0 );
+ o_rOutputBuf.push_back( pChunkName[0] );
+ o_rOutputBuf.push_back( pChunkName[1] );
+ o_rOutputBuf.push_back( pChunkName[2] );
+ o_rOutputBuf.push_back( pChunkName[3] );
+ return nIndex;
+}
+
+void PngHelper::set( sal_uInt32 i_nValue, OutputBuffer& o_rOutputBuf, size_t i_nIndex )
+{
+ o_rOutputBuf[ i_nIndex ] = (i_nValue & 0xff000000) >> 24;
+ o_rOutputBuf[ i_nIndex+1 ] = (i_nValue & 0x00ff0000) >> 16;
+ o_rOutputBuf[ i_nIndex+2 ] = (i_nValue & 0x0000ff00) >> 8;
+ o_rOutputBuf[ i_nIndex+3 ] = (i_nValue & 0x000000ff);
+}
+
+void PngHelper::endChunk( size_t nStart, OutputBuffer& o_rOutputBuf )
+{
+ if( nStart+8 > o_rOutputBuf.size() )
+ return; // something broken is going on
+
+ // update chunk length
+ size_t nLen = o_rOutputBuf.size() - nStart;
+ sal_uInt32 nDataLen = sal_uInt32(nLen)-8;
+ set( nDataLen, o_rOutputBuf, nStart );
+
+ // append chunk crc
+ sal_uInt32 nChunkCRC = getCRC( (sal_uInt8*)&o_rOutputBuf[nStart+4], nLen-4 );
+ append( nChunkCRC, o_rOutputBuf );
+}
+
+void PngHelper::appendIHDR( OutputBuffer& o_rOutputBuf, int width, int height, int depth, int colortype )
+{
+ size_t nStart = startChunk( "IHDR", o_rOutputBuf );
+ append( width, o_rOutputBuf );
+ append( height, o_rOutputBuf );
+ o_rOutputBuf.push_back( Output_t(depth) );
+ o_rOutputBuf.push_back( Output_t(colortype) );
+ o_rOutputBuf.push_back( 0 ); // compression method deflate
+ o_rOutputBuf.push_back( 0 ); // filtering method 0 (default)
+ o_rOutputBuf.push_back( 0 ); // no interlacing
+ endChunk( nStart, o_rOutputBuf );
+}
+
+void PngHelper::appendIEND( OutputBuffer& o_rOutputBuf )
+{
+ size_t nStart = startChunk( "IEND", o_rOutputBuf );
+ endChunk( nStart, o_rOutputBuf );
+}
+
+void PngHelper::createPng( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width,
+ int height,
+ GfxRGB& zeroColor,
+ GfxRGB& oneColor,
+ bool bIsMask
+ )
+{
+ appendFileHeader( o_rOutputBuf );
+ appendIHDR( o_rOutputBuf, width, height, 1, 3 );
+
+ // write palette
+ size_t nIdx = startChunk( "PLTE", o_rOutputBuf );
+ // write colors 0 and 1
+ o_rOutputBuf.push_back(colToByte(zeroColor.r));
+ o_rOutputBuf.push_back(colToByte(zeroColor.g));
+ o_rOutputBuf.push_back(colToByte(zeroColor.b));
+ o_rOutputBuf.push_back(colToByte(oneColor.r));
+ o_rOutputBuf.push_back(colToByte(oneColor.g));
+ o_rOutputBuf.push_back(colToByte(oneColor.b));
+ // end PLTE chunk
+ endChunk( nIdx, o_rOutputBuf );
+
+ if( bIsMask )
+ {
+ // write tRNS chunk
+ nIdx = startChunk( "tRNS", o_rOutputBuf );
+ o_rOutputBuf.push_back( 0xff );
+ o_rOutputBuf.push_back( 0 );
+ // end tRNS chunk
+ endChunk( nIdx, o_rOutputBuf );
+ }
+
+ // create scan line data buffer
+ OutputBuffer aScanlines;
+ int nLineSize = (width + 7)/8;
+ aScanlines.reserve( nLineSize * height + height );
+
+ str->reset();
+ for( int y = 0; y < height; y++ )
+ {
+ // determine filter type (none) for this scanline
+ aScanlines.push_back( 0 );
+ for( int x = 0; x < nLineSize; x++ )
+ aScanlines.push_back( str->getChar() );
+ }
+
+ // begin IDAT chunk for scanline data
+ nIdx = startChunk( "IDAT", o_rOutputBuf );
+ // compress scanlines
+ deflateBuffer( &aScanlines[0], aScanlines.size(), o_rOutputBuf );
+ // end IDAT chunk
+ endChunk( nIdx, o_rOutputBuf );
+
+ // output IEND
+ appendIEND( o_rOutputBuf );
+}
+
+void PngHelper::createPng( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width, int height, GfxImageColorMap* colorMap,
+ Stream* maskStr,
+ int maskWidth, int maskHeight, GfxImageColorMap* maskColorMap )
+{
+ appendFileHeader( o_rOutputBuf );
+ appendIHDR( o_rOutputBuf, width, height, 8, 6 ); // RGBA image
+
+ // initialize stream
+ Guchar *p, *pm;
+ GfxRGB rgb;
+ GfxGray alpha;
+ ImageStream* imgStr =
+ new ImageStream(str,
+ width,
+ colorMap->getNumPixelComps(),
+ colorMap->getBits());
+ imgStr->reset();
+
+ // create scan line data buffer
+ OutputBuffer aScanlines;
+ aScanlines.reserve( width*height*4 + height );
+
+ for( int y=0; y<height; ++y)
+ {
+ aScanlines.push_back( 0 );
+ p = imgStr->getLine();
+ for( int x=0; x<width; ++x)
+ {
+ colorMap->getRGB(p, &rgb);
+ aScanlines.push_back(colToByte(rgb.r));
+ aScanlines.push_back(colToByte(rgb.g));
+ aScanlines.push_back(colToByte(rgb.b));
+ aScanlines.push_back( 0xff );
+
+ p +=colorMap->getNumPixelComps();
+ }
+ }
+
+
+ // now fill in the mask data
+
+ // CAUTION: originally this was done in one single loop
+ // it caused merry chaos; the reason is that maskStr and str are
+ // not independent streams, it happens that reading one advances
+ // the other, too. Hence the two passes are imperative !
+
+ // initialize mask stream
+ ImageStream* imgStrMask =
+ new ImageStream(maskStr,
+ maskWidth,
+ maskColorMap->getNumPixelComps(),
+ maskColorMap->getBits());
+
+ imgStrMask->reset();
+ for( int y = 0; y < maskHeight; ++y )
+ {
+ pm = imgStrMask->getLine();
+ for( int x = 0; x < maskWidth; ++x )
+ {
+ maskColorMap->getGray(pm,&alpha);
+ pm += maskColorMap->getNumPixelComps();
+ int nIndex = (y*height/maskHeight) * (width*4+1) + // mapped line
+ (x*width/maskWidth)*4 + 1 + 3 // mapped column
+ ;
+ aScanlines[ nIndex ] = colToByte(alpha);
+ }
+ }
+
+ delete imgStr;
+ delete imgStrMask;
+
+ // begind IDAT chunk for scanline data
+ size_t nIdx = startChunk( "IDAT", o_rOutputBuf );
+ // compress scanlines
+ deflateBuffer( &aScanlines[0], aScanlines.size(), o_rOutputBuf );
+ // end IDAT chunk
+ endChunk( nIdx, o_rOutputBuf );
+ // output IEND
+ appendIEND( o_rOutputBuf );
+}
+
+// one bit mask; 0 bits opaque
+void PngHelper::createPng( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width, int height, GfxImageColorMap* colorMap,
+ Stream* maskStr,
+ int maskWidth, int maskHeight,
+ bool maskInvert
+ )
+{
+ appendFileHeader( o_rOutputBuf );
+ appendIHDR( o_rOutputBuf, width, height, 8, 6 ); // RGBA image
+
+ // initialize stream
+ Guchar *p;
+ GfxRGB rgb;
+ ImageStream* imgStr =
+ new ImageStream(str,
+ width,
+ colorMap->getNumPixelComps(),
+ colorMap->getBits());
+ imgStr->reset();
+
+ // create scan line data buffer
+ OutputBuffer aScanlines;
+ aScanlines.reserve( width*height*4 + height );
+
+ for( int y=0; y<height; ++y)
+ {
+ aScanlines.push_back( 0 );
+ p = imgStr->getLine();
+ for( int x=0; x<width; ++x)
+ {
+ colorMap->getRGB(p, &rgb);
+ aScanlines.push_back(colToByte(rgb.r));
+ aScanlines.push_back(colToByte(rgb.g));
+ aScanlines.push_back(colToByte(rgb.b));
+ aScanlines.push_back( 0xff );
+
+ p +=colorMap->getNumPixelComps();
+ }
+ }
+
+
+ // now fill in the mask data
+
+ // CAUTION: originally this was done in one single loop
+ // it caused merry chaos; the reason is that maskStr and str are
+ // not independent streams, it happens that reading one advances
+ // the other, too. Hence the two passes are imperative !
+
+ // initialize mask stream
+ ImageStream* imgStrMask =
+ new ImageStream(maskStr, maskWidth, 1, 1);
+
+ imgStrMask->reset();
+ for( int y = 0; y < maskHeight; ++y )
+ {
+ for( int x = 0; x < maskWidth; ++x )
+ {
+ Guchar aPixel = 0;
+ imgStrMask->getPixel( &aPixel );
+ int nIndex = (y*height/maskHeight) * (width*4+1) + // mapped line
+ (x*width/maskWidth)*4 + 1 + 3 // mapped column
+ ;
+ if( maskInvert )
+ aScanlines[ nIndex ] = aPixel ? 0xff : 0x00;
+ else
+ aScanlines[ nIndex ] = aPixel ? 0x00 : 0xff;
+ }
+ }
+
+ delete imgStr;
+ delete imgStrMask;
+
+ // begind IDAT chunk for scanline data
+ size_t nIdx = startChunk( "IDAT", o_rOutputBuf );
+ // compress scanlines
+ deflateBuffer( &aScanlines[0], aScanlines.size(), o_rOutputBuf );
+ // end IDAT chunk
+ endChunk( nIdx, o_rOutputBuf );
+ // output IEND
+ appendIEND( o_rOutputBuf );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/xpdfwrapper/pnghelper.hxx b/sdext/source/pdfimport/xpdfwrapper/pnghelper.hxx
new file mode 100644
index 000000000000..c7b050869554
--- /dev/null
+++ b/sdext/source/pdfimport/xpdfwrapper/pnghelper.hxx
@@ -0,0 +1,95 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU General Public License Version 2.
+ *
+ *
+ * GNU General Public License, version 2
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * 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 program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ ************************************************************************/
+#ifndef _IPDF_PNGHELPER_HXX
+#define _IPDF_PNGHELPER_HXX
+
+#include "sal/types.h"
+#include "pdfioutdev_gpl.hxx"
+
+
+namespace pdfi
+{
+ class PngHelper
+ {
+ static sal_uInt32 crc_table[ 256 ];
+ static bool bCRCTableInit;
+
+ static void initCRCTable();
+ static void appendFileHeader( OutputBuffer& o_rOutputBuf );
+ static size_t startChunk( const char* pChunkName, OutputBuffer& o_rOut );
+ static void endChunk( size_t nStart, OutputBuffer& o_rOut );
+
+ static void set( sal_uInt32 i_nValue, OutputBuffer& o_rOutputBuf, size_t i_nIndex );
+ static void append( sal_uInt32 i_nValue, OutputBuffer& o_rOutputBuf )
+ {
+ size_t nCur = o_rOutputBuf.size();
+ o_rOutputBuf.insert( o_rOutputBuf.end(), 4, (Output_t)0 );
+ set( i_nValue, o_rOutputBuf, nCur );
+ }
+
+ static void appendIHDR( OutputBuffer& o_rOutputBuf, int width, int height, int depth, int colortype );
+ static void appendIEND( OutputBuffer& o_rOutputBuf );
+
+ public:
+ static void updateCRC( sal_uInt32& io_rCRC, const sal_uInt8* i_pBuf, size_t i_nLen );
+ static sal_uInt32 getCRC( const sal_uInt8* i_pBuf, size_t i_nLen );
+
+ // deflates the passed buff i_pBuf and appends it to the output vector
+ // returns the number of bytes added to the output
+ static sal_uInt32 deflateBuffer( const Output_t* i_pBuf, size_t i_nLen, OutputBuffer& o_rOut );
+
+ static void createPng( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width,
+ int height,
+ GfxRGB& zeroColor,
+ GfxRGB& oneColor,
+ bool bIsMask
+ );
+ static void createPng( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width, int height, GfxImageColorMap* colorMap,
+ Stream* maskStr,
+ int maskWidth, int maskHeight, GfxImageColorMap* maskColorMap );
+
+ // for one bit masks
+ static void createPng( OutputBuffer& o_rOutputBuf,
+ Stream* str,
+ int width, int height, GfxImageColorMap* colorMap,
+ Stream* maskStr,
+ int maskWidth, int maskHeight, bool maskInvert );
+
+ };
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx
new file mode 100644
index 000000000000..f10ed9278b6b
--- /dev/null
+++ b/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx
@@ -0,0 +1,210 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU General Public License Version 2.
+ *
+ *
+ * GNU General Public License, version 2
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * 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 program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ ************************************************************************/
+
+#include "pdfioutdev_gpl.hxx"
+#ifdef WNT
+# include <io.h>
+# include <fcntl.h> /*_O_BINARY*/
+#endif
+
+FILE* g_binary_out=stderr;
+
+#ifndef SYSTEM_POPPLER
+static char ownerPassword[33] = "\001";
+static char userPassword[33] = "\001";
+static char outputFile[256] = "\001";
+
+static ArgDesc argDesc[] = {
+ {(char*)"-f", argString, outputFile, sizeof(outputFile),
+ (char*)"output file for binary streams"},
+ {(char*)"-opw", argString, ownerPassword, sizeof(ownerPassword),
+ (char*)"owner password (for encrypted files)"},
+ {(char*)"-upw", argString, userPassword, sizeof(userPassword),
+ (char*)"user password (for encrypted files)"},
+ {NULL, argString, NULL, 0, NULL }
+};
+#else
+static const char *ownerPassword = "\001";
+static const char *userPassword = "\001";
+static const char *outputFile = "\001";
+#endif
+
+int main(int argc, char **argv)
+{
+#ifndef SYSTEM_POPPLER
+ // parse args; initialize to defaults
+ if( !parseArgs(argDesc, &argc, argv) )
+ return 1;
+#else
+ int k = 0;
+ while (k < argc)
+ {
+ if (!strcmp(argv[k], "-f"))
+ {
+ outputFile = argv[k+1];
+ --argc;
+ for (int j = k; j < argc; ++j)
+ argv[j] = argv[j+1];
+ }
+ else if (!strcmp(argv[k], "-opw"))
+ {
+ ownerPassword = argv[k+1];
+ --argc;
+ for (int j = k; j < argc; ++j)
+ argv[j] = argv[j+1];
+ }
+ else if (!strcmp(argv[k], "-upw"))
+ {
+ userPassword = argv[k+1];
+ --argc;
+ for (int j = k; j < argc; ++j)
+ argv[j] = argv[j+1];
+ }
+ ++k;
+ }
+#endif
+
+ if( argc < 2 )
+ return 1;
+
+ // read config file
+ globalParams = new GlobalParams(
+#ifndef SYSTEM_POPPLER
+ (char*)""
+#endif
+ );
+ globalParams->setErrQuiet(gTrue);
+#if !defined(SYSTEM_POPPLER) || defined(_MSC_VER)
+ globalParams->setupBaseFonts(NULL);
+#endif
+
+ // try to read a possible open password form stdin
+ char aPwBuf[129];
+ aPwBuf[128] = 0;
+ if( ! fgets( aPwBuf, sizeof(aPwBuf)-1, stdin ) )
+ aPwBuf[0] = 0; // mark as empty
+ else
+ {
+ for( unsigned int i = 0; i < sizeof(aPwBuf); i++ )
+ {
+ if( aPwBuf[i] == '\n' )
+ {
+ aPwBuf[i] = 0;
+ break;
+ }
+ }
+ }
+
+ // PDFDoc takes over ownership for all strings below
+ GooString* pFileName = new GooString(argv[1]);
+ GooString* pTempErrFileName = new GooString("_err.pdf");
+ GooString* pTempErrFileNamePath = new GooString(argv[0]);
+
+ GooString* pErrFileName = new GooString(pTempErrFileNamePath,pTempErrFileName);
+
+
+ // check for password string(s)
+ GooString* pOwnerPasswordStr( aPwBuf[0] != 0
+ ? new GooString( aPwBuf )
+ : (ownerPassword[0] != '\001'
+ ? new GooString(ownerPassword)
+ : (GooString *)NULL ) );
+ GooString* pUserPasswordStr( userPassword[0] != '\001'
+ ? new GooString(userPassword)
+ : (GooString *)NULL );
+ if( outputFile[0] != '\001' )
+ g_binary_out = fopen(outputFile,"wb");
+
+#ifdef WNT
+ // Win actually modifies output for O_TEXT file mode, so need to
+ // revert to binary here
+ _setmode( _fileno( g_binary_out ), _O_BINARY );
+#endif
+
+ PDFDoc aDoc( pFileName,
+ pOwnerPasswordStr,
+ pUserPasswordStr );
+
+ PDFDoc aErrDoc( pErrFileName,
+ pOwnerPasswordStr,
+ pUserPasswordStr );
+
+
+ // Check various permissions.
+ if ( !aDoc.isOk() )
+ {
+ pdfi::PDFOutDev* pOutDev( new pdfi::PDFOutDev(&aErrDoc) );
+
+ const int nPages = aErrDoc.isOk() ? aErrDoc.getNumPages() : 0;
+
+ // tell receiver early - needed for proper progress calculation
+ pOutDev->setPageNum( nPages );
+
+ // virtual resolution of the PDF OutputDev in dpi
+ static const int PDFI_OUTDEV_RESOLUTION=7200;
+
+ // do the conversion
+ for( int i=1; i<=nPages; ++i )
+ {
+ aErrDoc.displayPage( pOutDev,
+ i,
+ PDFI_OUTDEV_RESOLUTION,
+ PDFI_OUTDEV_RESOLUTION,
+ 0, gTrue, gTrue, gTrue );
+ aErrDoc.processLinks( pOutDev, i );
+ }
+ }
+ else
+ {
+ pdfi::PDFOutDev* pOutDev( new pdfi::PDFOutDev(&aDoc) );
+
+ // tell receiver early - needed for proper progress calculation
+ pOutDev->setPageNum( aDoc.getNumPages() );
+
+ // virtual resolution of the PDF OutputDev in dpi
+ static const int PDFI_OUTDEV_RESOLUTION=7200;
+
+ // do the conversion
+ const int nPages = aDoc.getNumPages();
+ for( int i=1; i<=nPages; ++i )
+ {
+ aDoc.displayPage( pOutDev,
+ i,
+ PDFI_OUTDEV_RESOLUTION,
+ PDFI_OUTDEV_RESOLUTION,
+ 0, gTrue, gTrue, gTrue );
+ aDoc.processLinks( pOutDev, i );
+ }
+ }
+ return 0;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterAccessibility.cxx b/sdext/source/presenter/PresenterAccessibility.cxx
new file mode 100644
index 000000000000..35c17c0da0bd
--- /dev/null
+++ b/sdext/source/presenter/PresenterAccessibility.cxx
@@ -0,0 +1,2495 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "precompiled_sdext.hxx"
+
+#include "PresenterAccessibility.hxx"
+#include "PresenterTextView.hxx"
+#include "PresenterConfigurationAccess.hxx"
+#include "PresenterNotesView.hxx"
+#include "PresenterPaneBase.hxx"
+#include "PresenterPaneContainer.hxx"
+#include "PresenterPaneFactory.hxx"
+#include "PresenterViewFactory.hxx"
+
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <com/sun/star/accessibility/AccessibleRelationType.hpp>
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
+#include <com/sun/star/accessibility/XAccessibleContext.hpp>
+#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
+#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
+#include <com/sun/star/accessibility/XAccessibleText.hpp>
+#include <com/sun/star/drawing/framework/ResourceId.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/compbase5.hxx>
+#include <cppuhelper/implbase1.hxx>
+#include <boost/bind.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+#define A2S(s) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)))
+
+#define VERBOSE
+
+//===== PresenterAccessibleObject =============================================
+
+namespace sdext { namespace presenter {
+
+namespace {
+ typedef ::cppu::PartialWeakComponentImplHelper5 <
+ cssa::XAccessible,
+ cssa::XAccessibleContext,
+ cssa::XAccessibleComponent,
+ cssa::XAccessibleEventBroadcaster,
+ css::awt::XWindowListener
+ > PresenterAccessibleObjectInterfaceBase;
+}
+
+class PresenterAccessible::AccessibleObject
+ : public ::cppu::BaseMutex,
+ public PresenterAccessibleObjectInterfaceBase
+{
+public:
+ AccessibleObject (
+ const css::lang::Locale aLocale,
+ const sal_Int16 nRole,
+ const ::rtl::OUString& rsName);
+ void LateInitialization (void);
+
+ virtual ~AccessibleObject (void);
+
+ virtual void SetWindow (
+ const cssu::Reference<css::awt::XWindow>& rxContentWindow,
+ const cssu::Reference<css::awt::XWindow>& rxBorderWindow);
+ void SetAccessibleParent (const cssu::Reference<cssa::XAccessible>& rxAccessibleParent);
+
+ virtual void SAL_CALL disposing (void);
+
+ void NotifyCurrentSlideChange (const sal_Int32 nCurrentSlideIndex);
+
+ void AddChild (const ::rtl::Reference<AccessibleObject>& rpChild);
+ void RemoveChild (const ::rtl::Reference<AccessibleObject>& rpChild);
+
+ void SetIsFocused (const bool bIsFocused);
+ void SetAccessibleName (const ::rtl::OUString& rsName);
+
+ void FireAccessibleEvent (
+ const sal_Int16 nEventId,
+ const cssu::Any& rOldValue,
+ const cssu::Any& rNewValue);
+
+ void UpdateStateSet (void);
+
+ //----- XComponent ---------------------------------------------------
+
+ virtual void SAL_CALL dispose()throw (cssu::RuntimeException)
+ { WeakComponentImplHelperBase::dispose(); }
+ virtual void SAL_CALL addEventListener(const cssu::Reference< ::com::sun::star::lang::XEventListener > & xListener)throw (cssu::RuntimeException)
+ { WeakComponentImplHelperBase::addEventListener(xListener); }
+ virtual void SAL_CALL removeEventListener(const cssu::Reference< ::com::sun::star::lang::XEventListener > & xListener)throw (cssu::RuntimeException)
+ { WeakComponentImplHelperBase::removeEventListener(xListener); }
+
+ //----- XAccessible -------------------------------------------------------
+
+ virtual cssu::Reference<cssa::XAccessibleContext> SAL_CALL
+ getAccessibleContext (void)
+ throw (cssu::RuntimeException);
+
+
+ //----- XAccessibleContext ----------------------------------------------
+
+ virtual sal_Int32 SAL_CALL getAccessibleChildCount (void)
+ throw (cssu::RuntimeException);
+
+ virtual cssu::Reference< cssa::XAccessible> SAL_CALL
+ getAccessibleChild (sal_Int32 nIndex)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException);
+
+ virtual cssu::Reference< cssa::XAccessible> SAL_CALL getAccessibleParent (void)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Int32 SAL_CALL getAccessibleIndexInParent (void)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Int16 SAL_CALL getAccessibleRole (void)
+ throw (cssu::RuntimeException);
+
+ virtual ::rtl::OUString SAL_CALL getAccessibleDescription (void)
+ throw (cssu::RuntimeException);
+
+ virtual ::rtl::OUString SAL_CALL getAccessibleName (void)
+ throw (cssu::RuntimeException);
+
+ virtual cssu::Reference<cssa::XAccessibleRelationSet> SAL_CALL
+ getAccessibleRelationSet (void)
+ throw (cssu::RuntimeException);
+
+ virtual cssu::Reference<cssa::XAccessibleStateSet> SAL_CALL
+ getAccessibleStateSet (void)
+ throw (cssu::RuntimeException);
+
+ virtual css::lang::Locale SAL_CALL getLocale (void)
+ throw (cssu::RuntimeException,
+ cssa::IllegalAccessibleComponentStateException);
+
+
+ //----- XAccessibleComponent --------------------------------------------
+
+ virtual sal_Bool SAL_CALL containsPoint (
+ const css::awt::Point& aPoint)
+ throw (cssu::RuntimeException);
+
+ virtual cssu::Reference<cssa::XAccessible> SAL_CALL
+ getAccessibleAtPoint (
+ const css::awt::Point& aPoint)
+ throw (cssu::RuntimeException);
+
+ virtual css::awt::Rectangle SAL_CALL getBounds (void)
+ throw (cssu::RuntimeException);
+
+ virtual css::awt::Point SAL_CALL getLocation (void)
+ throw (cssu::RuntimeException);
+
+ virtual css::awt::Point SAL_CALL getLocationOnScreen (void)
+ throw (cssu::RuntimeException);
+
+ virtual css::awt::Size SAL_CALL getSize (void)
+ throw (cssu::RuntimeException);
+
+ virtual void SAL_CALL grabFocus (void)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Int32 SAL_CALL getForeground (void)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Int32 SAL_CALL getBackground (void)
+ throw (cssu::RuntimeException);
+
+
+ //----- XAccessibleEventBroadcaster --------------------------------------
+
+ virtual void SAL_CALL addEventListener (
+ const cssu::Reference<cssa::XAccessibleEventListener>& rxListener)
+ throw (cssu::RuntimeException);
+
+ virtual void SAL_CALL removeEventListener (
+ const cssu::Reference<cssa::XAccessibleEventListener>& rxListener)
+ throw (cssu::RuntimeException);
+
+ //----- XWindowListener ---------------------------------------------------
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (cssu::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (cssu::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (cssu::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (cssu::RuntimeException);
+
+
+ //----- XEventListener ----------------------------------------------------
+
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw (cssu::RuntimeException);
+
+
+protected:
+ ::rtl::OUString msName;
+ cssu::Reference<css::awt::XWindow2> mxContentWindow;
+ cssu::Reference<css::awt::XWindow2> mxBorderWindow;
+ const css::lang::Locale maLocale;
+ const sal_Int16 mnRole;
+ sal_uInt32 mnStateSet;
+ bool mbIsFocused;
+ cssu::Reference<cssa::XAccessible> mxParentAccessible;
+ ::std::vector<rtl::Reference<AccessibleObject> > maChildren;
+ ::std::vector<Reference<XAccessibleEventListener> > maListeners;
+
+ virtual awt::Point GetRelativeLocation (void);
+ virtual awt::Size GetSize (void);
+ virtual awt::Point GetAbsoluteParentLocation (void);
+
+ virtual bool GetWindowState (const sal_Int16 nType) const;
+
+ void UpdateState (const sal_Int16 aState, const bool bValue);
+
+ sal_Bool IsDisposed (void) const;
+
+ void ThrowIfDisposed (void) const
+ throw (css::lang::DisposedException);
+
+ enum ExceptionType { ET_Runtime, ET_Disposed, ET_IndexOutOfBounds };
+ void ThrowException (const sal_Char* pMessage, const ExceptionType eExceptionType) const;
+};
+
+
+
+
+//===== AccessibleStateSet ====================================================
+
+namespace {
+typedef ::cppu::WeakComponentImplHelper1 <
+ cssa::XAccessibleStateSet
+ > AccessibleStateSetInterfaceBase;
+}
+
+class AccessibleStateSet
+ : public ::cppu::BaseMutex,
+ public AccessibleStateSetInterfaceBase
+{
+public:
+ AccessibleStateSet (const sal_Int32 nStateSet);
+ virtual ~AccessibleStateSet (void);
+
+ static sal_uInt32 GetStateMask (const sal_Int16 nType);
+
+ //----- XAccessibleStateSet -----------------------------------------------
+
+ virtual sal_Bool SAL_CALL isEmpty (void)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Bool SAL_CALL contains (sal_Int16 nState)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Bool SAL_CALL containsAll (const cssu::Sequence<sal_Int16>& rStateSet)
+ throw (cssu::RuntimeException);
+
+ virtual cssu::Sequence<sal_Int16> SAL_CALL getStates (void)
+ throw (cssu::RuntimeException);
+
+private:
+ const sal_Int32 mnStateSet;
+};
+
+
+
+
+//===== AccessibleRelationSet =================================================
+
+namespace {
+typedef ::cppu::WeakComponentImplHelper1 <
+ cssa::XAccessibleRelationSet
+ > AccessibleRelationSetInterfaceBase;
+}
+
+class AccessibleRelationSet
+ : public ::cppu::BaseMutex,
+ public AccessibleRelationSetInterfaceBase
+{
+public:
+ AccessibleRelationSet (void);
+ virtual ~AccessibleRelationSet (void);
+
+ void AddRelation (
+ const sal_Int16 nRelationType,
+ const Reference<XInterface>& rxObject);
+
+
+ //----- XAccessibleRelationSet --------------------------------------------
+
+ virtual sal_Int32 SAL_CALL getRelationCount (void)
+ throw (cssu::RuntimeException);
+
+ virtual AccessibleRelation SAL_CALL getRelation (sal_Int32 nIndex)
+ throw (cssu::RuntimeException, css::lang::IndexOutOfBoundsException);
+
+ virtual sal_Bool SAL_CALL containsRelation (sal_Int16 nRelationType)
+ throw (cssu::RuntimeException);
+
+ virtual AccessibleRelation SAL_CALL getRelationByType (sal_Int16 nRelationType)
+ throw (cssu::RuntimeException);
+
+private:
+ ::std::vector<AccessibleRelation> maRelations;
+};
+
+
+
+
+//===== PresenterAccessibleParagraph ==========================================
+
+namespace {
+typedef ::cppu::ImplInheritanceHelper1 <
+ PresenterAccessible::AccessibleObject,
+ cssa::XAccessibleText
+ > PresenterAccessibleParagraphInterfaceBase;
+}
+
+
+
+
+class PresenterAccessible::AccessibleParagraph
+ : public PresenterAccessibleParagraphInterfaceBase
+{
+public:
+ AccessibleParagraph (
+ const css::lang::Locale aLocale,
+ const sal_Int16 nRole,
+ const ::rtl::OUString& rsName,
+ const SharedPresenterTextParagraph& rpParagraph,
+ const sal_Int32 nParagraphIndex);
+
+ virtual ~AccessibleParagraph (void);
+
+
+ //----- XAccessibleContext ------------------------------------------------
+
+ virtual cssu::Reference<cssa::XAccessibleRelationSet> SAL_CALL
+ getAccessibleRelationSet (void)
+ throw (cssu::RuntimeException);
+
+
+ //----- XAccessibleText ---------------------------------------------------
+
+ virtual sal_Int32 SAL_CALL getCaretPosition (void)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Bool SAL_CALL setCaretPosition (sal_Int32 nIndex)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException, cssu::RuntimeException);
+
+ virtual sal_Unicode SAL_CALL getCharacter (sal_Int32 nIndex)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException, cssu::RuntimeException);
+
+ virtual cssu::Sequence<css::beans::PropertyValue> SAL_CALL
+ getCharacterAttributes (
+ ::sal_Int32 nIndex,
+ const cssu::Sequence<rtl::OUString>& rRequestedAttributes)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException);
+
+ virtual css::awt::Rectangle SAL_CALL getCharacterBounds (sal_Int32 nIndex)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException);
+
+ virtual sal_Int32 SAL_CALL getCharacterCount (void)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Int32 SAL_CALL getIndexAtPoint (const css::awt::Point& rPoint)
+ throw (cssu::RuntimeException);
+
+ virtual ::rtl::OUString SAL_CALL getSelectedText (void)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Int32 SAL_CALL getSelectionStart (void)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Int32 SAL_CALL getSelectionEnd (void)
+ throw (cssu::RuntimeException);
+
+ virtual sal_Bool SAL_CALL setSelection (sal_Int32 nStartIndex, sal_Int32 nEndIndex)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException);
+
+ virtual ::rtl::OUString SAL_CALL getText (void)
+ throw (cssu::RuntimeException);
+
+ virtual ::rtl::OUString SAL_CALL getTextRange (
+ sal_Int32 nStartIndex,
+ sal_Int32 nEndIndex)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException);
+
+ virtual cssa::TextSegment SAL_CALL getTextAtIndex (
+ sal_Int32 nIndex,
+ sal_Int16 nTextType)
+ throw (css::lang::IndexOutOfBoundsException,
+ css::lang::IllegalArgumentException,
+ cssu::RuntimeException);
+
+ virtual cssa::TextSegment SAL_CALL getTextBeforeIndex (
+ sal_Int32 nIndex,
+ sal_Int16 nTextType)
+ throw (css::lang::IndexOutOfBoundsException,
+ css::lang::IllegalArgumentException,
+ cssu::RuntimeException);
+
+ virtual cssa::TextSegment SAL_CALL getTextBehindIndex (
+ sal_Int32 nIndex,
+ sal_Int16 nTextType)
+ throw (css::lang::IndexOutOfBoundsException,
+ css::lang::IllegalArgumentException,
+ cssu::RuntimeException);
+
+ virtual ::sal_Bool SAL_CALL copyText (sal_Int32 nStartIndex, sal_Int32 nEndIndex)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException);
+
+
+protected:
+ virtual awt::Point GetRelativeLocation (void);
+ virtual awt::Size GetSize (void);
+ virtual awt::Point GetAbsoluteParentLocation (void);
+ virtual bool GetWindowState (const sal_Int16 nType) const;
+
+private:
+ SharedPresenterTextParagraph mpParagraph;
+ const sal_Int32 mnParagraphIndex;
+};
+
+
+
+
+//===== AccessibleConsole =====================================================
+
+class AccessibleConsole
+{
+public:
+ static rtl::Reference<PresenterAccessible::AccessibleObject> Create (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const lang::Locale aLocale)
+ {
+ OUString sName (A2S("Presenter Console"));
+ PresenterConfigurationAccess aConfiguration (
+ rxContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_ONLY);
+ aConfiguration.GetConfigurationNode(A2S("Presenter/Accessibility/Console/String"))
+ >>= sName;
+
+ rtl::Reference<PresenterAccessible::AccessibleObject> pObject (
+ new PresenterAccessible::AccessibleObject(
+ aLocale, AccessibleRole::PANEL, sName));
+ pObject->LateInitialization();
+ pObject->UpdateStateSet();
+
+ return pObject;
+ }
+};
+
+
+
+
+//===== AccessiblePreview =====================================================
+
+class AccessiblePreview
+{
+public:
+ static rtl::Reference<PresenterAccessible::AccessibleObject> Create (
+ const Reference<css::uno::XComponentContext>& rxContext,
+ const lang::Locale aLocale,
+ const Reference<awt::XWindow>& rxContentWindow,
+ const Reference<awt::XWindow>& rxBorderWindow)
+ {
+ OUString sName (A2S("Presenter Notes Window"));
+ {
+ PresenterConfigurationAccess aConfiguration (
+ rxContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_ONLY);
+ aConfiguration.GetConfigurationNode(A2S("Presenter/Accessibility/Preview/String"))
+ >>= sName;
+ }
+
+ rtl::Reference<PresenterAccessible::AccessibleObject> pObject (
+ new PresenterAccessible::AccessibleObject(
+ aLocale,
+ AccessibleRole::LABEL,
+ sName));
+ pObject->LateInitialization();
+ pObject->UpdateStateSet();
+ pObject->SetWindow(rxContentWindow, rxBorderWindow);
+
+ return pObject;
+ }
+};
+
+
+
+
+//===== AccessibleNotes =======================================================
+
+class AccessibleNotes : public PresenterAccessible::AccessibleObject
+{
+public:
+ AccessibleNotes (
+ const css::lang::Locale aLocale,
+ const sal_Int16 nRole,
+ const ::rtl::OUString& rsName);
+
+
+ static rtl::Reference<PresenterAccessible::AccessibleObject> Create (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const lang::Locale aLocale,
+ const Reference<awt::XWindow>& rxContentWindow,
+ const Reference<awt::XWindow>& rxBorderWindow,
+ const ::boost::shared_ptr<PresenterTextView>& rpTextView);
+
+ void SetTextView (const ::boost::shared_ptr<PresenterTextView>& rpTextView);
+
+ virtual void SetWindow (
+ const cssu::Reference<css::awt::XWindow>& rxContentWindow,
+ const cssu::Reference<css::awt::XWindow>& rxBorderWindow);
+
+private:
+ ::boost::shared_ptr<PresenterTextView> mpTextView;
+
+ void NotifyCaretChange (
+ const sal_Int32 nOldParagraphIndex,
+ const sal_Int32 nOldCharacterIndex,
+ const sal_Int32 nNewParagraphIndex,
+ const sal_Int32 nNewCharacterIndex);
+ void HandleTextChange (void);
+};
+
+
+
+
+//===== AccessibleFocusManager ================================================
+
+/** A singleton class that makes sure that only one accessibility object in
+ the PresenterConsole hierarchy has the focus.
+*/
+class AccessibleFocusManager
+{
+public:
+ static ::boost::shared_ptr<AccessibleFocusManager> Instance (void);
+
+ void AddFocusableObject (const ::rtl::Reference<PresenterAccessible::AccessibleObject>& rpObject);
+ void RemoveFocusableObject (const ::rtl::Reference<PresenterAccessible::AccessibleObject>& rpObject);
+
+ void FocusObject (const ::rtl::Reference<PresenterAccessible::AccessibleObject>& rpObject);
+
+private:
+ static ::boost::shared_ptr<AccessibleFocusManager> mpInstance;
+ ::std::vector<rtl::Reference<PresenterAccessible::AccessibleObject> > maFocusableObjects;
+
+ AccessibleFocusManager (void);
+};
+
+
+
+
+//===== PresenterAccessible ===================================================
+
+PresenterAccessible::PresenterAccessible (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const Reference<drawing::framework::XPane>& rxMainPane)
+ : PresenterAccessibleInterfaceBase(m_aMutex),
+ mxComponentContext(rxContext),
+ mpPresenterController(rpPresenterController),
+ mxMainPaneId(rxMainPane.is() ? rxMainPane->getResourceId() : Reference<XResourceId>()),
+ mxMainPane(rxMainPane, UNO_QUERY),
+ mxMainWindow(),
+ mxPreviewContentWindow(),
+ mxPreviewBorderWindow(),
+ mxNotesContentWindow(),
+ mxNotesBorderWindow(),
+ mpAccessibleConsole(),
+ mpAccessiblePreview(),
+ mpAccessibleNotes(),
+ mxAccessibleParent()
+{
+ if (mxMainPane.is())
+ mxMainPane->setAccessible(this);
+}
+
+
+
+
+PresenterAccessible::~PresenterAccessible (void)
+{
+}
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor PresenterAccessible::GetPreviewPane (void) const
+{
+ PresenterPaneContainer::SharedPaneDescriptor pPreviewPane;
+
+ if ( ! mpPresenterController.is())
+ return pPreviewPane;
+
+ rtl::Reference<PresenterPaneContainer> pContainer (mpPresenterController->GetPaneContainer());
+ if ( ! pContainer.is())
+ return pPreviewPane;
+
+ pPreviewPane = pContainer->FindPaneURL(PresenterPaneFactory::msCurrentSlidePreviewPaneURL);
+ Reference<drawing::framework::XPane> xPreviewPane;
+ if (pPreviewPane)
+ xPreviewPane = pPreviewPane->mxPane.get();
+ if ( ! xPreviewPane.is())
+ {
+ pPreviewPane = pContainer->FindPaneURL(PresenterPaneFactory::msSlideSorterPaneURL);
+ }
+ return pPreviewPane;
+}
+
+
+
+
+void PresenterAccessible::UpdateAccessibilityHierarchy (void)
+{
+ if ( ! mpPresenterController.is())
+ return;
+
+ Reference<drawing::framework::XConfigurationController> xConfigurationController(
+ mpPresenterController->GetConfigurationController());
+ if ( ! xConfigurationController.is())
+ return;
+
+ rtl::Reference<PresenterPaneContainer> pPaneContainer (
+ mpPresenterController->GetPaneContainer());
+ if ( ! pPaneContainer.is())
+ return;
+
+ if ( ! mpAccessibleConsole.is())
+ return;
+
+ // Get the preview pane (standard or notes view) or the slide overview
+ // pane.
+ PresenterPaneContainer::SharedPaneDescriptor pPreviewPane(GetPreviewPane());
+ Reference<drawing::framework::XPane> xPreviewPane;
+ if (pPreviewPane)
+ xPreviewPane = pPreviewPane->mxPane.get();
+
+ // Get the notes pane.
+ PresenterPaneContainer::SharedPaneDescriptor pNotesPane(
+ pPaneContainer->FindPaneURL(PresenterPaneFactory::msNotesPaneURL));
+ Reference<drawing::framework::XPane> xNotesPane;
+ if (pNotesPane)
+ xNotesPane = pNotesPane->mxPane.get();
+
+ // Get the notes view.
+ Reference<drawing::framework::XView> xNotesView;
+ if (pNotesPane)
+ xNotesView = pNotesPane->mxView;
+ rtl::Reference<PresenterNotesView> pNotesView (
+ dynamic_cast<PresenterNotesView*>(xNotesView.get()));
+
+ UpdateAccessibilityHierarchy(
+ pPreviewPane ? pPreviewPane->mxContentWindow : Reference<awt::XWindow>(),
+ pPreviewPane ? pPreviewPane->mxBorderWindow : Reference<awt::XWindow>(),
+ (pPreviewPane&&pPreviewPane->mxPane.is()) ? pPreviewPane->mxPane->GetTitle() : OUString(),
+ pNotesPane ? pNotesPane->mxContentWindow : Reference<awt::XWindow>(),
+ pNotesPane ? pNotesPane->mxBorderWindow : Reference<awt::XWindow>(),
+ pNotesView.is()
+ ? pNotesView->GetTextView()
+ : ::boost::shared_ptr<PresenterTextView>());
+}
+
+
+
+
+
+void PresenterAccessible::UpdateAccessibilityHierarchy (
+ const Reference<awt::XWindow>& rxPreviewContentWindow,
+ const Reference<awt::XWindow>& rxPreviewBorderWindow,
+ const ::rtl::OUString& rsTitle,
+ const Reference<awt::XWindow>& rxNotesContentWindow,
+ const Reference<awt::XWindow>& rxNotesBorderWindow,
+ const ::boost::shared_ptr<PresenterTextView>& rpNotesTextView)
+{
+ if ( ! mpAccessibleConsole.is())
+ return;
+
+ if (mxPreviewContentWindow != rxPreviewContentWindow)
+ {
+ if (mpAccessiblePreview.is())
+ {
+ mpAccessibleConsole->RemoveChild(mpAccessiblePreview);
+ mpAccessiblePreview = NULL;
+ }
+
+ mxPreviewContentWindow = rxPreviewContentWindow;
+ mxPreviewBorderWindow = rxPreviewBorderWindow;
+
+ if (mxPreviewContentWindow.is())
+ {
+ mpAccessiblePreview = AccessiblePreview::Create(
+ mxComponentContext,
+ lang::Locale(),
+ mxPreviewContentWindow,
+ mxPreviewBorderWindow);
+ mpAccessibleConsole->AddChild(mpAccessiblePreview);
+ mpAccessiblePreview->SetAccessibleName(rsTitle);
+ }
+ }
+
+ if (mxNotesContentWindow != rxNotesContentWindow)
+ {
+ if (mpAccessibleNotes.is())
+ {
+ mpAccessibleConsole->RemoveChild(mpAccessibleConsole.get());
+ mpAccessibleNotes = NULL;
+ }
+
+ mxNotesContentWindow = rxNotesContentWindow;
+ mxNotesBorderWindow = rxNotesBorderWindow;
+
+ if (mxNotesContentWindow.is())
+ {
+ mpAccessibleNotes = AccessibleNotes::Create(
+ mxComponentContext,
+ lang::Locale(),
+ mxNotesContentWindow,
+ mxNotesBorderWindow,
+ rpNotesTextView);
+ mpAccessibleConsole->AddChild(mpAccessibleNotes.get());
+ }
+ }
+}
+
+
+
+
+void PresenterAccessible::NotifyCurrentSlideChange (
+ const sal_Int32 nCurrentSlideIndex,
+ const sal_Int32 nSlideCount)
+{
+ (void)nCurrentSlideIndex;
+ (void)nSlideCount;
+
+ if (mpAccessiblePreview.is())
+ {
+ PresenterPaneContainer::SharedPaneDescriptor pPreviewPane (GetPreviewPane());
+ mpAccessiblePreview->SetAccessibleName(
+ (pPreviewPane&&pPreviewPane->mxPane.is()
+ ? pPreviewPane->mxPane->GetTitle()
+ : rtl::OUString()));
+ }
+
+ // Play some focus ping-pong to trigger AT tools.
+ //AccessibleFocusManager::Instance()->FocusObject(mpAccessibleConsole);
+ AccessibleFocusManager::Instance()->FocusObject(mpAccessiblePreview);
+}
+
+
+
+
+bool PresenterAccessible::IsAccessibilityActive (void) const
+{
+ return mpAccessibleConsole.is();
+}
+
+
+
+
+void SAL_CALL PresenterAccessible::disposing (void)
+{
+ UpdateAccessibilityHierarchy(
+ NULL,
+ NULL,
+ OUString(),
+ NULL,
+ NULL,
+ ::boost::shared_ptr<PresenterTextView>());
+
+ if (mxMainWindow.is())
+ {
+ mxMainWindow->removeFocusListener(this);
+
+ if (mxMainPane.is())
+ mxMainPane->setAccessible(NULL);
+ }
+
+ mpAccessiblePreview = NULL;
+ mpAccessibleNotes = NULL;
+ mpAccessibleConsole = NULL;
+}
+
+
+
+
+//----- XAccessible -----------------------------------------------------------
+
+Reference<XAccessibleContext> SAL_CALL PresenterAccessible::getAccessibleContext (void)
+ throw (cssu::RuntimeException)
+{
+ if ( ! mpAccessibleConsole.is())
+ {
+ Reference<XPane> xMainPane (mxMainPane, UNO_QUERY);
+ if (xMainPane.is())
+ {
+ mxMainWindow = Reference<awt::XWindow>(xMainPane->getWindow(), UNO_QUERY);
+ mxMainWindow->addFocusListener(this);
+ }
+ mpAccessibleConsole = AccessibleConsole::Create(
+ mxComponentContext, css::lang::Locale());
+ mpAccessibleConsole->SetWindow(mxMainWindow, NULL);
+ mpAccessibleConsole->SetAccessibleParent(mxAccessibleParent);
+ UpdateAccessibilityHierarchy();
+ if (mpPresenterController.is())
+ mpPresenterController->SetAccessibilityActiveState(true);
+ }
+ return mpAccessibleConsole->getAccessibleContext();
+}
+
+
+
+
+
+//----- XFocusListener ----------------------------------------------------
+
+void SAL_CALL PresenterAccessible::focusGained (const css::awt::FocusEvent& rEvent)
+ throw (cssu::RuntimeException)
+{
+ (void)rEvent;
+
+#ifdef VERBOSE
+ OSL_TRACE("PresenterAccessible::focusGained at %x and window %x\r", this,
+ mxMainWindow.get());
+#endif
+
+ AccessibleFocusManager::Instance()->FocusObject(mpAccessibleConsole);
+}
+
+
+
+
+void SAL_CALL PresenterAccessible::focusLost (const css::awt::FocusEvent& rEvent)
+ throw (cssu::RuntimeException)
+{
+ (void)rEvent;
+
+#ifdef VERBOSE
+ OSL_TRACE("PresenterAccessible::focusLost at %x\r", this);
+#endif
+
+ AccessibleFocusManager::Instance()->FocusObject(NULL);
+}
+
+
+
+
+//----- XEventListener ----------------------------------------------------
+
+void SAL_CALL PresenterAccessible::disposing (const css::lang::EventObject& rEvent)
+ throw (cssu::RuntimeException)
+{
+ if (rEvent.Source == mxMainWindow)
+ mxMainWindow = NULL;
+}
+
+
+
+
+//----- XInitialize -----------------------------------------------------------
+
+void SAL_CALL PresenterAccessible::initialize (const cssu::Sequence<cssu::Any>& rArguments)
+ throw (cssu::RuntimeException)
+{
+ if (rArguments.getLength() >= 1)
+ {
+ mxAccessibleParent = Reference<XAccessible>(rArguments[0], UNO_QUERY);
+ if (mpAccessibleConsole.is())
+ mpAccessibleConsole->SetAccessibleParent(mxAccessibleParent);
+ }
+}
+
+
+
+
+//===== PresenterAccessible::AccessibleObject =========================================
+
+PresenterAccessible::AccessibleObject::AccessibleObject (
+ const lang::Locale aLocale,
+ const sal_Int16 nRole,
+ const OUString& rsName)
+ : PresenterAccessibleObjectInterfaceBase(m_aMutex),
+ msName(rsName),
+ mxContentWindow(),
+ mxBorderWindow(),
+ maLocale(aLocale),
+ mnRole(nRole),
+ mnStateSet(0),
+ mbIsFocused(false),
+ mxParentAccessible(),
+ maChildren(),
+ maListeners()
+{
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::LateInitialization (void)
+{
+ AccessibleFocusManager::Instance()->AddFocusableObject(this);
+}
+
+
+
+
+PresenterAccessible::AccessibleObject::~AccessibleObject (void)
+{
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::SetWindow (
+ const Reference<awt::XWindow>& rxContentWindow,
+ const Reference<awt::XWindow>& rxBorderWindow)
+{
+ Reference<awt::XWindow2> xContentWindow (rxContentWindow, UNO_QUERY);
+
+ if (mxContentWindow.get() != xContentWindow.get())
+ {
+ if (mxContentWindow.is())
+ {
+ mxContentWindow->removeWindowListener(this);
+ }
+
+ mxContentWindow = xContentWindow;
+ mxBorderWindow = Reference<awt::XWindow2>(rxBorderWindow, UNO_QUERY);
+
+ if (mxContentWindow.is())
+ {
+ mxContentWindow->addWindowListener(this);
+ }
+
+ UpdateStateSet();
+ }
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::SetAccessibleParent (
+ const Reference<XAccessible>& rxAccessibleParent)
+{
+ mxParentAccessible = rxAccessibleParent;
+}
+
+
+
+
+void SAL_CALL PresenterAccessible::AccessibleObject::disposing (void)
+{
+ AccessibleFocusManager::Instance()->RemoveFocusableObject(this);
+ SetWindow(NULL, NULL);
+}
+
+
+
+
+//----- XAccessible -------------------------------------------------------
+
+Reference<XAccessibleContext> SAL_CALL
+ PresenterAccessible::AccessibleObject::getAccessibleContext (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return this;
+}
+
+
+
+
+//----- XAccessibleContext ----------------------------------------------
+
+sal_Int32 SAL_CALL PresenterAccessible::AccessibleObject::getAccessibleChildCount (void)
+ throw (cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ const sal_Int32 nChildCount (maChildren.size());
+
+ return nChildCount;
+}
+
+
+
+
+Reference<XAccessible> SAL_CALL
+ PresenterAccessible::AccessibleObject::getAccessibleChild (sal_Int32 nIndex)
+ throw (lang::IndexOutOfBoundsException, RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if (nIndex<0 || nIndex>=sal_Int32(maChildren.size()))
+ ThrowException("invalid child index", ET_IndexOutOfBounds);
+
+ return Reference<XAccessible>(maChildren[nIndex].get());
+}
+
+
+
+
+Reference<XAccessible> SAL_CALL
+ PresenterAccessible::AccessibleObject::getAccessibleParent (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return mxParentAccessible;
+}
+
+
+
+
+sal_Int32 SAL_CALL
+ PresenterAccessible::AccessibleObject::getAccessibleIndexInParent (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ const Reference<XAccessible> xThis (this);
+ if (mxParentAccessible.is())
+ {
+ const Reference<XAccessibleContext> xContext (mxParentAccessible->getAccessibleContext());
+ for (sal_Int32 nIndex=0,nCount=xContext->getAccessibleChildCount();
+ nIndex<nCount;
+ ++nIndex)
+ {
+ if (xContext->getAccessibleChild(nIndex) == xThis)
+ return nIndex;
+ }
+ }
+
+ return 0;
+}
+
+
+
+
+sal_Int16 SAL_CALL
+ PresenterAccessible::AccessibleObject::getAccessibleRole (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return mnRole;
+}
+
+
+
+
+OUString SAL_CALL
+ PresenterAccessible::AccessibleObject::getAccessibleDescription (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return msName;
+}
+
+
+
+
+OUString SAL_CALL
+ PresenterAccessible::AccessibleObject::getAccessibleName (void)
+ throw (cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return msName;
+}
+
+
+
+
+Reference<XAccessibleRelationSet> SAL_CALL
+ PresenterAccessible::AccessibleObject::getAccessibleRelationSet (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return NULL;
+}
+
+
+
+
+Reference<XAccessibleStateSet> SAL_CALL
+ PresenterAccessible::AccessibleObject::getAccessibleStateSet (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return Reference<XAccessibleStateSet>(new AccessibleStateSet(mnStateSet));
+}
+
+
+
+
+lang::Locale SAL_CALL
+ PresenterAccessible::AccessibleObject::getLocale (void)
+ throw (RuntimeException,
+ IllegalAccessibleComponentStateException)
+{
+ ThrowIfDisposed();
+
+ if (mxParentAccessible.is())
+ {
+ Reference<XAccessibleContext> xParentContext (mxParentAccessible->getAccessibleContext());
+ if (xParentContext.is())
+ return xParentContext->getLocale();
+ }
+ return maLocale;
+}
+
+
+
+
+//----- XAccessibleComponent ------------------------------------------------
+
+sal_Bool SAL_CALL PresenterAccessible::AccessibleObject::containsPoint (
+ const awt::Point& rPoint)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if (mxContentWindow.is())
+ {
+ const awt::Rectangle aBox (getBounds());
+ return rPoint.X>=aBox.X
+ && rPoint.Y>=aBox.Y
+ && rPoint.X<aBox.X+aBox.Width
+ && rPoint.Y<aBox.Y+aBox.Height;
+ }
+ else
+ return false;
+}
+
+
+
+
+Reference<XAccessible> SAL_CALL
+ PresenterAccessible::AccessibleObject::getAccessibleAtPoint (const awt::Point& rPoint)
+ throw (RuntimeException)
+{
+ (void)rPoint;
+ ThrowIfDisposed();
+
+ return Reference<XAccessible>();
+}
+
+
+
+
+awt::Rectangle SAL_CALL PresenterAccessible::AccessibleObject::getBounds (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ awt::Rectangle aBox;
+
+ const awt::Point aLocation (GetRelativeLocation());
+ const awt::Size aSize (GetSize());
+
+ return awt::Rectangle (aLocation.X, aLocation.Y, aSize.Width, aSize.Height);
+}
+
+
+
+
+awt::Point SAL_CALL PresenterAccessible::AccessibleObject::getLocation (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ const awt::Point aLocation (GetRelativeLocation());
+
+ return aLocation;
+}
+
+
+
+
+awt::Point SAL_CALL PresenterAccessible::AccessibleObject::getLocationOnScreen (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ awt::Point aRelativeLocation (GetRelativeLocation());
+ awt::Point aParentLocationOnScreen (GetAbsoluteParentLocation());
+
+ return awt::Point(
+ aRelativeLocation.X + aParentLocationOnScreen.X,
+ aRelativeLocation.Y + aParentLocationOnScreen.Y);
+}
+
+
+
+
+awt::Size SAL_CALL PresenterAccessible::AccessibleObject::getSize (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ const awt::Size aSize (GetSize());
+
+ return aSize;
+}
+
+
+
+
+void SAL_CALL PresenterAccessible::AccessibleObject::grabFocus (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ if (mxBorderWindow.is())
+ mxBorderWindow->setFocus();
+ else if (mxContentWindow.is())
+ mxContentWindow->setFocus();
+}
+
+
+
+
+sal_Int32 SAL_CALL PresenterAccessible::AccessibleObject::getForeground (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return 0x00ffffff;
+}
+
+
+
+
+sal_Int32 SAL_CALL PresenterAccessible::AccessibleObject::getBackground (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return 0x00000000;
+}
+
+
+
+
+//----- XAccessibleEventBroadcaster -------------------------------------------
+
+void SAL_CALL PresenterAccessible::AccessibleObject::addEventListener (
+ const Reference<XAccessibleEventListener>& rxListener)
+ throw (RuntimeException)
+{
+ if (rxListener.is())
+ {
+ const osl::MutexGuard aGuard(m_aMutex);
+
+ if (IsDisposed())
+ {
+ uno::Reference<uno::XInterface> xThis (static_cast<XWeak*>(this), UNO_QUERY);
+ rxListener->disposing (lang::EventObject(xThis));
+ }
+ else
+ {
+ maListeners.push_back(rxListener);
+ }
+ }
+}
+
+
+
+
+void SAL_CALL PresenterAccessible::AccessibleObject::removeEventListener (
+ const Reference<XAccessibleEventListener>& rxListener)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ if (rxListener.is())
+ {
+ const osl::MutexGuard aGuard(m_aMutex);
+
+ maListeners.erase(std::remove(maListeners.begin(), maListeners.end(), rxListener));
+ }
+}
+
+
+
+
+//----- XWindowListener ---------------------------------------------------
+
+void SAL_CALL PresenterAccessible::AccessibleObject::windowResized (
+ const css::awt::WindowEvent& rEvent)
+ throw (cssu::RuntimeException)
+{
+ (void)rEvent;
+
+ FireAccessibleEvent(AccessibleEventId::BOUNDRECT_CHANGED, Any(), Any());
+}
+
+
+
+
+void SAL_CALL PresenterAccessible::AccessibleObject::windowMoved (
+ const css::awt::WindowEvent& rEvent)
+ throw (cssu::RuntimeException)
+{
+ (void)rEvent;
+
+ FireAccessibleEvent(AccessibleEventId::BOUNDRECT_CHANGED, Any(), Any());
+}
+
+
+
+
+void SAL_CALL PresenterAccessible::AccessibleObject::windowShown (
+ const css::lang::EventObject& rEvent)
+ throw (cssu::RuntimeException)
+{
+ (void)rEvent;
+ UpdateStateSet();
+}
+
+
+
+
+void SAL_CALL PresenterAccessible::AccessibleObject::windowHidden (
+ const css::lang::EventObject& rEvent)
+ throw (cssu::RuntimeException)
+{
+ (void)rEvent;
+ UpdateStateSet();
+}
+
+
+
+
+//----- XEventListener --------------------------------------------------------
+
+void SAL_CALL PresenterAccessible::AccessibleObject::disposing (const css::lang::EventObject& rEvent)
+ throw (cssu::RuntimeException)
+{
+ if (rEvent.Source == mxContentWindow)
+ {
+ mxContentWindow = NULL;
+ mxBorderWindow = NULL;
+ }
+ else
+ {
+ SetWindow(NULL, NULL);
+ }
+}
+
+
+
+
+//----- private ---------------------------------------------------------------
+
+bool PresenterAccessible::AccessibleObject::GetWindowState (const sal_Int16 nType) const
+{
+ switch (nType)
+ {
+ case AccessibleStateType::ENABLED:
+ return mxContentWindow.is() && mxContentWindow->isEnabled();
+
+ case AccessibleStateType::FOCUSABLE:
+ return true;
+
+ case AccessibleStateType::FOCUSED:
+ return mbIsFocused;
+
+ case AccessibleStateType::SHOWING:
+ return mxContentWindow.is() && mxContentWindow->isVisible();
+
+ default:
+ return false;
+ }
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::UpdateStateSet (void)
+{
+ UpdateState(AccessibleStateType::FOCUSABLE, true);
+ UpdateState(AccessibleStateType::VISIBLE, true);
+ UpdateState(AccessibleStateType::ENABLED, true);
+ UpdateState(AccessibleStateType::MULTI_LINE, true);
+ UpdateState(AccessibleStateType::SENSITIVE, true);
+
+ UpdateState(AccessibleStateType::ENABLED, GetWindowState(AccessibleStateType::ENABLED));
+ UpdateState(AccessibleStateType::FOCUSED, GetWindowState(AccessibleStateType::FOCUSED));
+ UpdateState(AccessibleStateType::SHOWING, GetWindowState(AccessibleStateType::SHOWING));
+ // UpdateState(AccessibleStateType::ACTIVE, GetWindowState(AccessibleStateType::ACTIVE));
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::UpdateState(
+ const sal_Int16 nState,
+ const bool bValue)
+{
+ const sal_uInt32 nStateMask (AccessibleStateSet::GetStateMask(nState));
+ if (((mnStateSet & nStateMask)!=0) != bValue)
+ {
+ if (bValue)
+ {
+ mnStateSet |= nStateMask;
+ FireAccessibleEvent(AccessibleEventId::STATE_CHANGED, Any(), Any(nState));
+ }
+ else
+ {
+ mnStateSet &= ~nStateMask;
+ FireAccessibleEvent(AccessibleEventId::STATE_CHANGED, Any(nState), Any());
+ }
+ }
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::AddChild (
+ const ::rtl::Reference<AccessibleObject>& rpChild)
+{
+ maChildren.push_back(rpChild);
+ rpChild->SetAccessibleParent(this);
+ FireAccessibleEvent(AccessibleEventId::INVALIDATE_ALL_CHILDREN, Any(), Any());
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::RemoveChild (
+ const ::rtl::Reference<AccessibleObject>& rpChild)
+{
+ rpChild->SetAccessibleParent(Reference<XAccessible>());
+ maChildren.erase(::std::find(maChildren.begin(), maChildren.end(), rpChild));
+ FireAccessibleEvent(AccessibleEventId::INVALIDATE_ALL_CHILDREN, Any(), Any());
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::SetIsFocused (const bool bIsFocused)
+{
+ if (mbIsFocused != bIsFocused)
+ {
+ mbIsFocused = bIsFocused;
+ UpdateStateSet();
+ }
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::SetAccessibleName (const ::rtl::OUString& rsName)
+{
+ if (msName != rsName)
+ {
+ const OUString sOldName(msName);
+ msName = rsName;
+ FireAccessibleEvent(AccessibleEventId::NAME_CHANGED, Any(sOldName), Any(msName));
+ }
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::FireAccessibleEvent (
+ const sal_Int16 nEventId,
+ const uno::Any& rOldValue,
+ const uno::Any& rNewValue )
+{
+ AccessibleEventObject aEventObject;
+
+ aEventObject.Source = Reference<XWeak>(this);
+ aEventObject.EventId = nEventId;
+ aEventObject.NewValue = rNewValue;
+ aEventObject.OldValue = rOldValue;
+
+ ::std::vector<Reference<XAccessibleEventListener> > aListenerCopy(maListeners);
+ for (::std::vector<Reference<XAccessibleEventListener> >::const_iterator
+ iListener(aListenerCopy.begin()),
+ iEnd(aListenerCopy.end());
+ iListener!=iEnd;
+ ++iListener)
+ {
+ try
+ {
+ (*iListener)->notifyEvent(aEventObject);
+ }
+ catch(lang::DisposedException&)
+ {
+ // Listener has been disposed and should have been removed
+ // already.
+ removeEventListener(*iListener);
+ }
+ catch(Exception&)
+ {
+ // Ignore all other exceptions and assume that they are
+ // caused by a temporary problem.
+ }
+ }
+}
+
+
+
+awt::Point PresenterAccessible::AccessibleObject::GetRelativeLocation (void)
+{
+ awt::Point aLocation;
+ if (mxContentWindow.is())
+ {
+ const awt::Rectangle aContentBox (mxContentWindow->getPosSize());
+ aLocation.X = aContentBox.X;
+ aLocation.Y = aContentBox.Y;
+ if (mxBorderWindow.is())
+ {
+ const awt::Rectangle aBorderBox (mxBorderWindow->getPosSize());
+ aLocation.X += aBorderBox.X;
+ aLocation.Y += aBorderBox.Y;
+ }
+ }
+ return aLocation;
+}
+
+
+
+
+awt::Size PresenterAccessible::AccessibleObject::GetSize (void)
+{
+ if (mxContentWindow.is())
+ {
+ const awt::Rectangle aBox (mxContentWindow->getPosSize());
+ return awt::Size(aBox.Width, aBox.Height);
+ }
+ else
+ return awt::Size();
+}
+
+
+
+
+awt::Point PresenterAccessible::AccessibleObject::GetAbsoluteParentLocation (void)
+{
+ Reference<XAccessibleComponent> xParentComponent;
+ if (mxParentAccessible.is())
+ xParentComponent = Reference<XAccessibleComponent>(
+ mxParentAccessible->getAccessibleContext(), UNO_QUERY);
+ if (xParentComponent.is())
+ return xParentComponent->getLocationOnScreen();
+ else
+ return awt::Point();
+}
+
+
+
+
+sal_Bool PresenterAccessible::AccessibleObject::IsDisposed (void) const
+{
+ return (rBHelper.bDisposed || rBHelper.bInDispose);
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::ThrowIfDisposed (void) const
+ throw (lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ ThrowException("object has already been disposed", ET_Disposed);
+}
+
+
+
+
+void PresenterAccessible::AccessibleObject::ThrowException (
+ const sal_Char* pMessage,
+ const ExceptionType eExceptionType) const
+{
+ const OUString sMessage (OUString(A2S("PresenterAccessible: ")) + OUString::createFromAscii(pMessage));
+ const Reference<XInterface> xObject (
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ switch (eExceptionType)
+ {
+ default:
+ case ET_Runtime:
+ throw RuntimeException(sMessage, xObject);
+ case ET_Disposed:
+ throw lang::DisposedException(sMessage, xObject);
+ case ET_IndexOutOfBounds:
+ throw lang::IndexOutOfBoundsException(sMessage, xObject);
+ }
+}
+
+
+
+
+
+//===== AccessibleStateSet ====================================================
+
+AccessibleStateSet::AccessibleStateSet (const sal_Int32 nStateSet)
+ : AccessibleStateSetInterfaceBase(m_aMutex),
+ mnStateSet (nStateSet)
+{
+}
+
+
+
+
+AccessibleStateSet::~AccessibleStateSet (void)
+{
+}
+
+
+
+
+sal_uInt32 AccessibleStateSet::GetStateMask (const sal_Int16 nState)
+{
+ if (nState<0 || nState>=sal_Int16(sizeof(sal_uInt32)*8))
+ {
+ throw RuntimeException(A2S("AccessibleStateSet::GetStateMask: invalid state"), NULL);
+ }
+
+ return 1<<nState;
+}
+
+
+
+
+//----- XAccessibleStateSet ---------------------------------------------------
+
+sal_Bool SAL_CALL AccessibleStateSet::isEmpty (void)
+ throw (cssu::RuntimeException)
+{
+ return mnStateSet==0;
+}
+
+
+
+
+sal_Bool SAL_CALL AccessibleStateSet::contains (sal_Int16 nState)
+ throw (cssu::RuntimeException)
+{
+ return (mnStateSet & GetStateMask(nState)) != 0;
+}
+
+
+
+
+sal_Bool SAL_CALL AccessibleStateSet::containsAll (const cssu::Sequence<sal_Int16>& rStateSet)
+ throw (cssu::RuntimeException)
+{
+ for (sal_Int32 nIndex=0,nCount=rStateSet.getLength(); nIndex<nCount; ++nIndex)
+ {
+ if ((mnStateSet & GetStateMask(rStateSet[nIndex])) == 0)
+ return sal_False;
+ }
+ return sal_True;
+}
+
+
+
+
+cssu::Sequence<sal_Int16> SAL_CALL AccessibleStateSet::getStates (void)
+ throw (cssu::RuntimeException)
+{
+ ::std::vector<sal_Int16> aStates;
+ aStates.reserve(sizeof(mnStateSet)*8);
+ for (sal_uInt16 nIndex=0; nIndex<sizeof(mnStateSet)*8; ++nIndex)
+ if ((mnStateSet & GetStateMask(nIndex)) != 0)
+ aStates.push_back(nIndex);
+ return Sequence<sal_Int16>(&aStates.front(), aStates.size());
+}
+
+
+
+
+//===== AccessibleRelationSet =================================================
+
+AccessibleRelationSet::AccessibleRelationSet (void)
+ : AccessibleRelationSetInterfaceBase(m_aMutex),
+ maRelations()
+{
+}
+
+
+
+
+AccessibleRelationSet::~AccessibleRelationSet (void)
+{
+}
+
+
+
+
+void AccessibleRelationSet::AddRelation (
+ const sal_Int16 nRelationType,
+ const Reference<XInterface>& rxObject)
+{
+ maRelations.resize(maRelations.size()+1);
+ maRelations.back().RelationType = nRelationType;
+ maRelations.back().TargetSet.realloc(1);
+ maRelations.back().TargetSet[0] = rxObject;
+}
+
+
+
+
+//----- XAccessibleRelationSet ------------------------------------------------
+
+sal_Int32 SAL_CALL AccessibleRelationSet::getRelationCount (void)
+ throw (cssu::RuntimeException)
+{
+ return maRelations.size();
+}
+
+
+
+
+AccessibleRelation SAL_CALL AccessibleRelationSet::getRelation (sal_Int32 nIndex)
+ throw (cssu::RuntimeException, css::lang::IndexOutOfBoundsException)
+{
+ if (nIndex<0 && sal_uInt32(nIndex)>=maRelations.size())
+ return AccessibleRelation();
+ else
+ return maRelations[nIndex];
+}
+
+
+
+
+sal_Bool SAL_CALL AccessibleRelationSet::containsRelation (sal_Int16 nRelationType)
+ throw (cssu::RuntimeException)
+{
+ for (::std::vector<AccessibleRelation>::const_iterator iRelation(maRelations.begin());
+ iRelation!=maRelations.end();
+ ++iRelation)
+ {
+ if (iRelation->RelationType == nRelationType)
+ return sal_True;
+ }
+ return sal_False;
+}
+
+
+
+
+AccessibleRelation SAL_CALL AccessibleRelationSet::getRelationByType (sal_Int16 nRelationType)
+ throw (cssu::RuntimeException)
+{
+ for (::std::vector<AccessibleRelation>::const_iterator iRelation(maRelations.begin());
+ iRelation!=maRelations.end();
+ ++iRelation)
+ {
+ if (iRelation->RelationType == nRelationType)
+ return *iRelation;
+ }
+ return AccessibleRelation();
+}
+
+
+
+
+//===== PresenterAccessible::AccessibleParagraph ==============================
+
+PresenterAccessible::AccessibleParagraph::AccessibleParagraph (
+ const lang::Locale aLocale,
+ const sal_Int16 nRole,
+ const OUString& rsName,
+ const SharedPresenterTextParagraph& rpParagraph,
+ const sal_Int32 nParagraphIndex)
+ : PresenterAccessibleParagraphInterfaceBase(aLocale, nRole, rsName),
+ mpParagraph(rpParagraph),
+ mnParagraphIndex(nParagraphIndex)
+{
+}
+
+
+
+
+PresenterAccessible::AccessibleParagraph::~AccessibleParagraph (void)
+{
+}
+
+
+
+
+//----- XAccessibleContext ----------------------------------------------------
+
+Reference<XAccessibleRelationSet> SAL_CALL
+ PresenterAccessible::AccessibleParagraph::getAccessibleRelationSet (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ rtl::Reference<AccessibleRelationSet> pSet (new AccessibleRelationSet);
+
+ if (mxParentAccessible.is())
+ {
+ Reference<XAccessibleContext> xParentContext (mxParentAccessible->getAccessibleContext());
+ if (xParentContext.is())
+ {
+ if (mnParagraphIndex>0)
+ pSet->AddRelation(
+ AccessibleRelationType::CONTENT_FLOWS_FROM,
+ xParentContext->getAccessibleChild(mnParagraphIndex-1));
+
+ if (mnParagraphIndex<xParentContext->getAccessibleChildCount()-1)
+ pSet->AddRelation(
+ AccessibleRelationType::CONTENT_FLOWS_TO,
+ xParentContext->getAccessibleChild(mnParagraphIndex+1));
+ }
+ }
+
+ return Reference<XAccessibleRelationSet>(pSet.get());
+}
+
+
+
+
+
+
+//----- XAccessibleText -------------------------------------------------------
+
+sal_Int32 SAL_CALL PresenterAccessible::AccessibleParagraph::getCaretPosition (void)
+ throw (cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ sal_Int32 nPosition (-1);
+ if (mpParagraph)
+ nPosition = mpParagraph->GetCaretPosition();
+
+ return nPosition;
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterAccessible::AccessibleParagraph::setCaretPosition (sal_Int32 nIndex)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException, cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if (mpParagraph)
+ {
+ mpParagraph->SetCaretPosition(nIndex);
+ return sal_True;
+ }
+ else
+ return sal_False;
+}
+
+
+
+
+sal_Unicode SAL_CALL PresenterAccessible::AccessibleParagraph::getCharacter (sal_Int32 nIndex)
+ throw (::com::sun::star::lang::IndexOutOfBoundsException, cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if (mpParagraph)
+ return mpParagraph->GetCharacter(nIndex);
+ else
+ {
+ ThrowException("no text support in current mode", ET_IndexOutOfBounds);
+ // The method above throws an exception and the following line is
+ // never reached. But there is at least one compiler that can not
+ // detect this and we need the return to make it happy.
+ return sal_Unicode();
+ }
+}
+
+
+
+
+Sequence<css::beans::PropertyValue> SAL_CALL
+ PresenterAccessible::AccessibleParagraph::getCharacterAttributes (
+ ::sal_Int32 nIndex,
+ const cssu::Sequence<rtl::OUString>& rRequestedAttributes)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+#ifdef VERBOSE
+ OSL_TRACE("PresenterAccessible::AccessibleParagraph::getCharacterAttributes at %x,%d returns empty set\r",
+ this,nIndex);
+ for (sal_Int32 nAttributeIndex(0),nAttributeCount(rRequestedAttributes.getLength());
+ nAttributeIndex<nAttributeCount;
+ ++nAttributeIndex)
+ {
+ OSL_TRACE(" requested attribute %d is %s\r",
+ nAttributeIndex,
+ OUStringToOString(rRequestedAttributes[nAttributeIndex], RTL_TEXTENCODING_UTF8).getStr());
+ }
+#endif
+
+ // Character properties are not supported.
+ (void)nIndex;
+ (void)rRequestedAttributes;
+ return Sequence<css::beans::PropertyValue>();
+}
+
+
+
+
+awt::Rectangle SAL_CALL PresenterAccessible::AccessibleParagraph::getCharacterBounds (
+ sal_Int32 nIndex)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ awt::Rectangle aCharacterBox;
+ if (nIndex < 0)
+ {
+ ThrowException("invalid text index", ET_IndexOutOfBounds);
+ }
+ else if (mpParagraph)
+ {
+ aCharacterBox = mpParagraph->GetCharacterBounds(nIndex, false);
+ // Convert coordinates relative to the window origin into absolute
+ // screen coordinates.
+ const awt::Point aWindowLocationOnScreen (getLocationOnScreen());
+ aCharacterBox.X += aWindowLocationOnScreen.X;
+ aCharacterBox.Y += aWindowLocationOnScreen.Y;
+ }
+ else
+ {
+ ThrowException("no text support in current mode", ET_IndexOutOfBounds);
+ }
+
+ return aCharacterBox;
+}
+
+
+
+
+sal_Int32 SAL_CALL PresenterAccessible::AccessibleParagraph::getCharacterCount (void)
+ throw (cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ sal_Int32 nCount (0);
+ if (mpParagraph)
+ nCount = mpParagraph->GetCharacterCount();
+
+ return nCount;
+}
+
+
+
+
+sal_Int32 SAL_CALL PresenterAccessible::AccessibleParagraph::getIndexAtPoint (
+ const css::awt::Point& rPoint)
+ throw (cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ sal_Int32 nIndex (-1);
+ if (mpParagraph)
+ nIndex = mpParagraph->GetIndexAtPoint(rPoint);
+
+ return nIndex;
+}
+
+
+
+
+::rtl::OUString SAL_CALL PresenterAccessible::AccessibleParagraph::getSelectedText (void)
+ throw (cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return getTextRange(getSelectionStart(), getSelectionEnd());
+}
+
+
+
+
+sal_Int32 SAL_CALL PresenterAccessible::AccessibleParagraph::getSelectionStart (void)
+ throw (cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return getCaretPosition();
+}
+
+
+
+
+sal_Int32 SAL_CALL PresenterAccessible::AccessibleParagraph::getSelectionEnd (void)
+ throw (cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return getCaretPosition();
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterAccessible::AccessibleParagraph::setSelection (
+ sal_Int32 nStartIndex,
+ sal_Int32 nEndIndex)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException)
+{
+ (void)nEndIndex;
+ ThrowIfDisposed();
+
+ return setCaretPosition(nStartIndex);
+}
+
+
+
+
+::rtl::OUString SAL_CALL PresenterAccessible::AccessibleParagraph::getText (void)
+ throw (cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ ::rtl::OUString sText;
+ if (mpParagraph)
+ sText = mpParagraph->GetText();
+
+ return sText;
+}
+
+
+
+
+::rtl::OUString SAL_CALL PresenterAccessible::AccessibleParagraph::getTextRange (
+ sal_Int32 nLocalStartIndex,
+ sal_Int32 nLocalEndIndex)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ ::rtl::OUString sText;
+ if (mpParagraph)
+ {
+ const TextSegment aSegment (
+ mpParagraph->CreateTextSegment(nLocalStartIndex, nLocalEndIndex));
+ sText = aSegment.SegmentText;
+ }
+
+ return sText;
+}
+
+
+
+
+TextSegment SAL_CALL PresenterAccessible::AccessibleParagraph::getTextAtIndex (
+ sal_Int32 nLocalCharacterIndex,
+ sal_Int16 nTextType)
+ throw (css::lang::IndexOutOfBoundsException,
+ css::lang::IllegalArgumentException,
+ cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ TextSegment aSegment;
+ if (mpParagraph)
+ aSegment = mpParagraph->GetTextSegment(0, nLocalCharacterIndex, nTextType);
+
+ return aSegment;
+}
+
+
+
+
+TextSegment SAL_CALL PresenterAccessible::AccessibleParagraph::getTextBeforeIndex (
+ sal_Int32 nLocalCharacterIndex,
+ sal_Int16 nTextType)
+ throw (css::lang::IndexOutOfBoundsException,
+ css::lang::IllegalArgumentException,
+ cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ TextSegment aSegment;
+ if (mpParagraph)
+ aSegment = mpParagraph->GetTextSegment(-1, nLocalCharacterIndex, nTextType);
+
+ return aSegment;
+}
+
+
+
+
+TextSegment SAL_CALL PresenterAccessible::AccessibleParagraph::getTextBehindIndex (
+ sal_Int32 nLocalCharacterIndex,
+ sal_Int16 nTextType)
+ throw (css::lang::IndexOutOfBoundsException,
+ css::lang::IllegalArgumentException,
+ cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ TextSegment aSegment;
+ if (mpParagraph)
+ aSegment = mpParagraph->GetTextSegment(+1, nLocalCharacterIndex, nTextType);
+
+ return aSegment;
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterAccessible::AccessibleParagraph::copyText (
+ sal_Int32 nStartIndex,
+ sal_Int32 nEndIndex)
+ throw (css::lang::IndexOutOfBoundsException, cssu::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ // Return false because copying to clipboard is not supported.
+ // It IS supported in the notes view. There is no need to duplicate
+ // this here.
+ (void)nStartIndex;
+ (void)nEndIndex;
+ return sal_False;
+}
+
+
+
+
+//----- protected -------------------------------------------------------------
+
+awt::Point PresenterAccessible::AccessibleParagraph::GetRelativeLocation (void)
+{
+ awt::Point aLocation (AccessibleObject::GetRelativeLocation());
+ if (mpParagraph)
+ {
+ const awt::Point aParagraphLocation (mpParagraph->GetRelativeLocation());
+ aLocation.X += aParagraphLocation.X;
+ aLocation.Y += aParagraphLocation.Y;
+ }
+
+ return aLocation;
+}
+
+
+
+
+awt::Size PresenterAccessible::AccessibleParagraph::GetSize (void)
+{
+ if (mpParagraph)
+ return mpParagraph->GetSize();
+ else
+ return AccessibleObject::GetSize();
+}
+
+
+
+
+awt::Point PresenterAccessible::AccessibleParagraph::GetAbsoluteParentLocation (void)
+{
+ if (mxParentAccessible.is())
+ {
+ Reference<XAccessibleContext> xParentContext(
+ mxParentAccessible->getAccessibleContext(), UNO_QUERY);
+ if (xParentContext.is())
+ {
+ Reference<XAccessibleComponent> xGrandParentComponent(
+ xParentContext->getAccessibleParent(), UNO_QUERY);
+ if (xGrandParentComponent.is())
+ return xGrandParentComponent->getLocationOnScreen();
+ }
+ }
+
+ return awt::Point();
+}
+
+
+
+
+bool PresenterAccessible::AccessibleParagraph::GetWindowState (const sal_Int16 nType) const
+{
+ switch (nType)
+ {
+ case AccessibleStateType::EDITABLE:
+ return mpParagraph.get()!=NULL;
+
+ case AccessibleStateType::ACTIVE:
+ return true;
+
+ default:
+ return AccessibleObject::GetWindowState(nType);
+ }
+}
+
+
+
+
+
+
+//===== AccessibleNotes =======================================================
+
+AccessibleNotes::AccessibleNotes (
+ const css::lang::Locale aLocale,
+ const sal_Int16 nRole,
+ const ::rtl::OUString& rsName)
+ : AccessibleObject(aLocale,nRole,rsName),
+ mpTextView()
+{
+}
+
+
+
+
+rtl::Reference<PresenterAccessible::AccessibleObject> AccessibleNotes::Create (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const lang::Locale aLocale,
+ const Reference<awt::XWindow>& rxContentWindow,
+ const Reference<awt::XWindow>& rxBorderWindow,
+ const ::boost::shared_ptr<PresenterTextView>& rpTextView)
+{
+ OUString sName (A2S("Presenter Notes Text"));
+ {
+ PresenterConfigurationAccess aConfiguration (
+ rxContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_ONLY);
+ aConfiguration.GetConfigurationNode(A2S("Presenter/Accessibility/Notes/String"))
+ >>= sName;
+ }
+
+ rtl::Reference<AccessibleNotes> pObject (
+ new AccessibleNotes(
+ aLocale,
+ AccessibleRole::PANEL,
+ sName));
+ pObject->LateInitialization();
+ pObject->SetTextView(rpTextView);
+ pObject->UpdateStateSet();
+ pObject->SetWindow(rxContentWindow, rxBorderWindow);
+
+ return rtl::Reference<PresenterAccessible::AccessibleObject>(pObject.get());
+}
+
+
+
+
+void AccessibleNotes::SetTextView (
+ const ::boost::shared_ptr<PresenterTextView>& rpTextView)
+{
+ ::std::vector<rtl::Reference<PresenterAccessible::AccessibleObject> > aChildren;
+
+ // Release any listeners to the current text view.
+ if (mpTextView)
+ {
+ mpTextView->GetCaret()->SetCaretMotionBroadcaster(
+ ::boost::function<void(sal_Int32,sal_Int32,sal_Int32,sal_Int32)>());
+ mpTextView->SetTextChangeBroadcaster(
+ ::boost::function<void(void)>());
+ }
+
+ mpTextView = rpTextView;
+
+ if (mpTextView)
+ {
+ // Create a new set of children, one for each paragraph.
+ const sal_Int32 nParagraphCount (mpTextView->GetParagraphCount());
+ for (sal_Int32 nIndex=0; nIndex<nParagraphCount; ++nIndex)
+ {
+ rtl::Reference<PresenterAccessible::AccessibleParagraph> pParagraph (
+ new PresenterAccessible::AccessibleParagraph(
+ css::lang::Locale(),
+ AccessibleRole::PARAGRAPH,
+ A2S("Paragraph")+OUString::valueOf(nIndex),
+ rpTextView->GetParagraph(nIndex),
+ nIndex));
+ pParagraph->LateInitialization();
+ pParagraph->SetWindow(
+ Reference<awt::XWindow>(mxContentWindow, UNO_QUERY),
+ Reference<awt::XWindow>(mxBorderWindow, UNO_QUERY));
+ pParagraph->SetAccessibleParent(this);
+ aChildren.push_back(
+ rtl::Reference<PresenterAccessible::AccessibleObject>(pParagraph.get()));
+ }
+ maChildren.swap(aChildren);
+ FireAccessibleEvent(AccessibleEventId::INVALIDATE_ALL_CHILDREN, Any(), Any());
+
+ // Dispose the old children. (This will remove them from the focus
+ // manager).
+ for (std::vector<rtl::Reference<AccessibleObject> >::const_iterator
+ iChild(aChildren.begin()), iEnd(aChildren.end());
+ iChild!=iEnd;
+ ++iChild)
+ {
+ Reference<lang::XComponent> xComponent (static_cast<XWeak*>(iChild->get()), UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ // This class acts as a controller of who broadcasts caret motion
+ // events and handles text changes. Register the corresponding
+ // listeners here.
+ mpTextView->GetCaret()->SetCaretMotionBroadcaster(
+ ::boost::bind(&AccessibleNotes::NotifyCaretChange, this, _1, _2, _3, _4));
+ mpTextView->SetTextChangeBroadcaster(
+ ::boost::bind(&AccessibleNotes::HandleTextChange, this));
+ }
+}
+
+
+
+
+void AccessibleNotes::SetWindow (
+ const cssu::Reference<css::awt::XWindow>& rxContentWindow,
+ const cssu::Reference<css::awt::XWindow>& rxBorderWindow)
+{
+ AccessibleObject::SetWindow(rxContentWindow, rxBorderWindow);
+
+ // Set the windows at the children as well, so that every paragraph can
+ // setup its geometry.
+ for (::std::vector<rtl::Reference<AccessibleObject> >::const_iterator
+ iChild(maChildren.begin()),
+ iEnd(maChildren.end());
+ iChild!=iEnd;
+ ++iChild)
+ {
+ (*iChild)->SetWindow(rxContentWindow, rxBorderWindow);
+ }
+}
+
+
+
+
+void AccessibleNotes::NotifyCaretChange (
+ const sal_Int32 nOldParagraphIndex,
+ const sal_Int32 nOldCharacterIndex,
+ const sal_Int32 nNewParagraphIndex,
+ const sal_Int32 nNewCharacterIndex)
+{
+ AccessibleFocusManager::Instance()->FocusObject(
+ nNewParagraphIndex >= 0
+ ? maChildren[nNewParagraphIndex]
+ : this);
+
+ if (nOldParagraphIndex != nNewParagraphIndex)
+ {
+ // Moved caret from one paragraph to another (or showed or
+ // hid the caret). Move focuse from one accessible
+ // paragraph to another.
+ if (nOldParagraphIndex >= 0)
+ {
+ maChildren[nOldParagraphIndex]->FireAccessibleEvent(
+ AccessibleEventId::CARET_CHANGED,
+ Any(nOldCharacterIndex),
+ Any(sal_Int32(-1)));
+ }
+ if (nNewParagraphIndex >= 0)
+ {
+ maChildren[nNewParagraphIndex]->FireAccessibleEvent(
+ AccessibleEventId::CARET_CHANGED,
+ Any(sal_Int32(-1)),
+ Any(nNewCharacterIndex));
+ }
+ }
+ else if (nNewParagraphIndex >= 0)
+ {
+ // Caret moved inside one paragraph.
+ maChildren[nNewParagraphIndex]->FireAccessibleEvent(
+ AccessibleEventId::CARET_CHANGED,
+ Any(nOldCharacterIndex),
+ Any(nNewCharacterIndex));
+ }
+}
+
+
+
+
+void AccessibleNotes::HandleTextChange (void)
+{
+ SetTextView(mpTextView);
+}
+
+
+
+
+//===== AccessibleFocusManager ================================================
+
+::boost::shared_ptr<AccessibleFocusManager> AccessibleFocusManager::mpInstance;
+
+::boost::shared_ptr<AccessibleFocusManager> AccessibleFocusManager::Instance (void)
+{
+ if ( ! mpInstance)
+ {
+ mpInstance.reset(new AccessibleFocusManager());
+ }
+ return mpInstance;
+}
+
+
+
+
+AccessibleFocusManager::AccessibleFocusManager (void)
+ : maFocusableObjects()
+{
+}
+
+
+
+
+void AccessibleFocusManager::AddFocusableObject (
+ const ::rtl::Reference<PresenterAccessible::AccessibleObject>& rpObject)
+{
+ OSL_ASSERT(rpObject.is());
+ OSL_ASSERT(::std::find(maFocusableObjects.begin(),maFocusableObjects.end(), rpObject)==maFocusableObjects.end());
+
+ maFocusableObjects.push_back(rpObject);
+}
+
+
+
+
+void AccessibleFocusManager::RemoveFocusableObject (
+ const ::rtl::Reference<PresenterAccessible::AccessibleObject>& rpObject)
+{
+ ::std::vector<rtl::Reference<PresenterAccessible::AccessibleObject> >::iterator iObject (
+ ::std::find(maFocusableObjects.begin(),maFocusableObjects.end(), rpObject));
+
+ if (iObject != maFocusableObjects.end())
+ maFocusableObjects.erase(iObject);
+ else
+ {
+ OSL_ASSERT(iObject!=maFocusableObjects.end());
+ }
+}
+
+
+
+
+void AccessibleFocusManager::FocusObject (
+ const ::rtl::Reference<PresenterAccessible::AccessibleObject>& rpObject)
+{
+ // Remove the focus of any of the other focusable objects.
+ for (::std::vector<rtl::Reference<PresenterAccessible::AccessibleObject> >::const_iterator
+ iObject (maFocusableObjects.begin()),
+ iEnd (maFocusableObjects.end());
+ iObject != iEnd;
+ ++iObject)
+ {
+ if (*iObject!=rpObject)
+ (*iObject)->SetIsFocused(false);
+ }
+
+ if (rpObject.is())
+ rpObject->SetIsFocused(true);
+}
+
+} } // end of namespace ::sd::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterAccessibility.hxx b/sdext/source/presenter/PresenterAccessibility.hxx
new file mode 100644
index 000000000000..16e19abc1695
--- /dev/null
+++ b/sdext/source/presenter/PresenterAccessibility.hxx
@@ -0,0 +1,159 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_ACCESSIBILITY_HXX
+#define SDEXT_PRESENTER_PRESENTER_ACCESSIBILITY_HXX
+
+#include "PresenterPaneContainer.hxx"
+
+#include <com/sun/star/accessibility/AccessibleStateType.hpp>
+#include <com/sun/star/accessibility/TextSegment.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/awt/XFocusListener.hpp>
+#include <com/sun/star/awt/XWindow2.hpp>
+#include <com/sun/star/awt/WindowEvent.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XPane2.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <cppuhelper/compbase3.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <rtl/ref.hxx>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+namespace cssu = ::com::sun::star::uno;
+namespace cssa = ::com::sun::star::accessibility;
+
+
+namespace sdext { namespace presenter {
+
+class PresenterController;
+class PresenterTextView;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper3 <
+ css::accessibility::XAccessible,
+ css::lang::XInitialization,
+ css::awt::XFocusListener
+ > PresenterAccessibleInterfaceBase;
+}
+
+class PresenterAccessible
+ : public ::cppu::BaseMutex,
+ public PresenterAccessibleInterfaceBase
+{
+public:
+ PresenterAccessible (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const css::uno::Reference<css::drawing::framework::XPane>& rxMainPane);
+ virtual ~PresenterAccessible (void);
+
+ void SetAccessibleParent (const cssu::Reference<cssa::XAccessible>& rxAccessibleParent);
+
+ void UpdateAccessibilityHierarchy (void);
+
+ void NotifyCurrentSlideChange (
+ const sal_Int32 nCurrentSlideIndex,
+ const sal_Int32 nSlideCount);
+
+ /** Return whether accessibility support is active, i.e. whether
+ somebody has called getAccessibleContext() yet.
+ */
+ bool IsAccessibilityActive (void) const;
+
+ virtual void SAL_CALL disposing (void);
+
+
+ //----- XAccessible -------------------------------------------------------
+
+ virtual cssu::Reference<cssa::XAccessibleContext> SAL_CALL
+ getAccessibleContext (void)
+ throw (cssu::RuntimeException);
+
+
+ //----- XFocusListener ----------------------------------------------------
+
+ virtual void SAL_CALL focusGained (const css::awt::FocusEvent& rEvent)
+ throw (cssu::RuntimeException);
+
+ virtual void SAL_CALL focusLost (const css::awt::FocusEvent& rEvent)
+ throw (cssu::RuntimeException);
+
+
+ //----- XEventListener ----------------------------------------------------
+
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw (cssu::RuntimeException);
+
+
+ //----- XInitialization ---------------------------------------------------
+
+ virtual void SAL_CALL initialize (const cssu::Sequence<cssu::Any>& rArguments)
+ throw (cssu::RuntimeException);
+
+
+ class AccessibleObject;
+ class AccessibleParagraph;
+
+private:
+ const css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxMainPaneId;
+ css::uno::Reference<css::drawing::framework::XPane2> mxMainPane;
+ css::uno::Reference<css::awt::XWindow> mxMainWindow;
+ css::uno::Reference<css::awt::XWindow> mxPreviewContentWindow;
+ css::uno::Reference<css::awt::XWindow> mxPreviewBorderWindow;
+ css::uno::Reference<css::awt::XWindow> mxNotesContentWindow;
+ css::uno::Reference<css::awt::XWindow> mxNotesBorderWindow;
+ ::rtl::Reference<AccessibleObject> mpAccessibleConsole;
+ ::rtl::Reference<AccessibleObject> mpAccessiblePreview;
+ ::rtl::Reference<AccessibleObject> mpAccessibleNotes;
+ css::uno::Reference<css::accessibility::XAccessible> mxAccessibleParent;
+
+ void UpdateAccessibilityHierarchy (
+ const css::uno::Reference<css::awt::XWindow>& rxPreviewContentWindow,
+ const css::uno::Reference<css::awt::XWindow>& rxPreviewBorderWindow,
+ const ::rtl::OUString& rsTitle,
+ const css::uno::Reference<css::awt::XWindow>& rxNotesContentWindow,
+ const css::uno::Reference<css::awt::XWindow>& rxNotesBorderWindow,
+ const ::boost::shared_ptr<PresenterTextView>& rpNotesTextView);
+ PresenterPaneContainer::SharedPaneDescriptor GetPreviewPane (void) const;
+};
+
+
+
+
+} } // end of namespace ::sd::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterAnimation.cxx b/sdext/source/presenter/PresenterAnimation.cxx
new file mode 100644
index 000000000000..0be27e813b38
--- /dev/null
+++ b/sdext/source/presenter/PresenterAnimation.cxx
@@ -0,0 +1,143 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterAnimation.hxx"
+
+#include <osl/time.h>
+
+namespace sdext { namespace presenter {
+
+sal_uInt64 GetCurrentTime (void)
+{
+ TimeValue aTimeValue;
+ if (osl_getSystemTime(&aTimeValue))
+ return sal_uInt64(aTimeValue.Seconds * 1000.0 + aTimeValue.Nanosec / 1000000.0);
+ else
+ return 0;
+}
+
+
+
+
+PresenterAnimation::PresenterAnimation (
+ const sal_uInt64 nStartDelay,
+ const sal_uInt64 nTotalDuration,
+ const sal_uInt64 nStepDuration)
+ : mnStartTime(GetCurrentTime()+nStartDelay),
+ mnTotalDuration(nTotalDuration),
+ mnStepDuration(nStepDuration),
+ mpStartCallbacks(),
+ mpEndCallbacks()
+{
+}
+
+
+
+
+PresenterAnimation::~PresenterAnimation (void)
+{
+}
+
+
+
+
+sal_uInt64 PresenterAnimation::GetStartTime (void)
+{
+ return mnStartTime;
+}
+
+
+
+
+sal_uInt64 PresenterAnimation::GetEndTime (void)
+{
+ return mnStartTime + mnTotalDuration;
+}
+
+
+
+
+sal_uInt64 PresenterAnimation::GetStepDuration (void)
+{
+ return mnStepDuration;
+}
+
+
+
+
+void PresenterAnimation::AddStartCallback (const Callback& rCallback)
+{
+ if (mpStartCallbacks.get() == NULL)
+ mpStartCallbacks.reset(new ::std::vector<Callback>());
+ mpStartCallbacks->push_back(rCallback);
+}
+
+
+
+
+void PresenterAnimation::AddEndCallback (const Callback& rCallback)
+{
+ if (mpEndCallbacks.get() == NULL)
+ mpEndCallbacks.reset(new ::std::vector<Callback>());
+ mpEndCallbacks->push_back(rCallback);
+}
+
+
+
+void PresenterAnimation::RunStartCallbacks (void)
+{
+ if (mpStartCallbacks.get() != NULL)
+ {
+ ::std::vector<Callback>::const_iterator iCallback;
+ for (iCallback=mpStartCallbacks->begin(); iCallback!=mpStartCallbacks->end(); ++iCallback)
+ (*iCallback)();
+ }
+}
+
+
+
+
+void PresenterAnimation::RunEndCallbacks (void)
+{
+ if (mpEndCallbacks.get() != NULL)
+ {
+ ::std::vector<Callback>::const_iterator iCallback;
+ for (iCallback=mpEndCallbacks->begin(); iCallback!=mpEndCallbacks->end(); ++iCallback)
+ (*iCallback)();
+ }
+}
+
+
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterAnimation.hxx b/sdext/source/presenter/PresenterAnimation.hxx
new file mode 100644
index 000000000000..76d102a20758
--- /dev/null
+++ b/sdext/source/presenter/PresenterAnimation.hxx
@@ -0,0 +1,133 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_ANIMATION_HXX
+#define SDEXT_PRESENTER_ANIMATION_HXX
+
+#include <sal/types.h>
+#include <boost/function.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/scoped_ptr.hpp>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+
+namespace sdext { namespace presenter {
+
+/** Base class for animations handled by a PresenterAnimator object.
+ A PresenterAnimation objects basically states when it wants to be
+ started, how long it runs, and in what steps it wants to be called back
+ while running.
+ When a PresenterAnimation object is active/running its Run() method is
+ called back with increasing values between 0 and 1.
+*/
+class PresenterAnimation
+ : private ::boost::noncopyable
+{
+public:
+ /** Create a new PresenterAnimation object.
+ @param nStartDelay
+ The delay in ms (milliseconds) from this call until the new
+ object is to be activated.
+ @param nTotalDuration
+ The duration in ms the Run() method is to be called with
+ increasing values between 0 and 1.
+ @param nStepDuration
+ The duration between calls to Run(). This leads to approximately
+ nTotalDuration/nStepDuration calls to Run(). The exact duration
+ of each step may vary depending on system load an other influences.
+ */
+ PresenterAnimation (
+ const sal_uInt64 nStartDelay,
+ const sal_uInt64 nTotalDuration,
+ const sal_uInt64 nStepDuration);
+ virtual ~PresenterAnimation (void);
+
+ /** Return the absolute start time in a system dependent format.
+ At about this time the Run() method will be called with a value of 0.
+ */
+ sal_uInt64 GetStartTime (void);
+
+ /** Return the absolute end time in a system dependent format.
+ At about this time the Run() method will be called with a value of 1.
+ */
+ sal_uInt64 GetEndTime (void);
+
+ /** Return the duration of each step in ms.
+ */
+ sal_uInt64 GetStepDuration (void);
+
+ typedef ::boost::function<void(void)> Callback;
+
+ /** Add a callback that is executed before Run() is called for the first
+ time.
+ */
+ void AddStartCallback (const Callback& rCallback);
+
+ /** Add a callback that is executed after Run() is called for the last
+ time.
+ */
+ void AddEndCallback (const Callback& rCallback);
+
+ /** Called with nProgress taking on values between 0 and 1.
+ @param nProgress
+ A value between 0 and 1.
+ @param nCurrentTime
+ Current time in a system dependent format.
+ */
+ virtual void Run (const double nProgress, const sal_uInt64 nCurrentTime) = 0;
+
+ /** Called just before Run() is called for the first time to trigger the
+ callbacks registered via the <method>AddStartCallback()</method>.
+ */
+ void RunStartCallbacks (void);
+
+ /** Called just after Run() is called for the last time to trigger the
+ callbacks registered via the <method>AddEndCallback()</method>.
+ */
+ void RunEndCallbacks (void);
+
+private:
+ const sal_uInt64 mnStartTime;
+ const sal_uInt64 mnTotalDuration;
+ const sal_uInt64 mnStepDuration;
+ ::boost::scoped_ptr<std::vector<Callback> > mpStartCallbacks;
+ ::boost::scoped_ptr<std::vector<Callback> > mpEndCallbacks;
+};
+
+sal_uInt64 GetCurrentTime (void);
+inline sal_uInt32 GetSeconds (const sal_uInt64 nTime) { return sal_uInt32(nTime / 1000); }
+inline sal_uInt32 GetNanoSeconds (const sal_uInt64 nTime) { return sal_uInt32((nTime % 1000) * 1000000); }
+
+typedef ::boost::shared_ptr<PresenterAnimation> SharedPresenterAnimation;
+
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterAnimator.cxx b/sdext/source/presenter/PresenterAnimator.cxx
new file mode 100644
index 000000000000..d16528f658e3
--- /dev/null
+++ b/sdext/source/presenter/PresenterAnimator.cxx
@@ -0,0 +1,174 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterAnimator.hxx"
+
+#include "PresenterTimer.hxx"
+#include <osl/diagnose.h>
+#include <osl/time.h>
+#include <salhelper/timer.hxx>
+#include <boost/bind.hpp>
+#include <boost/function.hpp>
+
+namespace sdext { namespace presenter {
+
+
+
+//===== PresenterAnimator =====================================================
+
+PresenterAnimator::PresenterAnimator (void)
+ : maFutureAnimations(),
+ maActiveAnimations(),
+ mnCurrentTaskId(0),
+ mnNextTime(0)
+{
+}
+
+
+
+
+PresenterAnimator::~PresenterAnimator (void)
+{
+ PresenterTimer::CancelTask(mnCurrentTaskId);
+}
+
+
+
+
+
+void PresenterAnimator::AddAnimation (const SharedPresenterAnimation& rpAnimation)
+{
+ ::osl::MutexGuard aGuard (m_aMutex);
+
+ maFutureAnimations.insert(AnimationList::value_type(rpAnimation->GetStartTime(), rpAnimation));
+ ScheduleNextRun();
+}
+
+
+
+
+void PresenterAnimator::Process (void)
+{
+ ::osl::MutexGuard aGuard (m_aMutex);
+
+ mnNextTime = 0;
+
+ const sal_uInt64 nCurrentTime (GetCurrentTime());
+
+ ActivateAnimations(nCurrentTime);
+
+ while ( ! maActiveAnimations.empty())
+ {
+ sal_uInt64 nRequestedTime (maActiveAnimations.begin()->first);
+ SharedPresenterAnimation pAnimation (maActiveAnimations.begin()->second);
+
+ if (nRequestedTime > nCurrentTime)
+ break;
+
+ maActiveAnimations.erase(maActiveAnimations.begin());
+
+ const double nTotalDuration (double(pAnimation->GetEndTime() - pAnimation->GetStartTime()));
+ double nProgress (nTotalDuration > 0 ? (nCurrentTime - pAnimation->GetStartTime()) / nTotalDuration : 1);
+ if (nProgress <= 0)
+ nProgress = 0;
+ else if (nProgress >= 1)
+ nProgress = 1;
+
+ OSL_TRACE("running animation step at %f (requested was %f) %f\n",
+ nCurrentTime/1e6, nRequestedTime/1e6, nProgress);
+ pAnimation->Run(nProgress, nCurrentTime);
+
+ if (nCurrentTime < pAnimation->GetEndTime())
+ maActiveAnimations.insert(
+ AnimationList::value_type(
+ nCurrentTime + pAnimation->GetStepDuration(),
+ pAnimation));
+ else
+ pAnimation->RunEndCallbacks();
+ }
+
+ ScheduleNextRun();
+}
+
+
+
+
+void PresenterAnimator::ActivateAnimations (const sal_uInt64 nCurrentTime)
+{
+ while ( ! maFutureAnimations.empty()
+ && maFutureAnimations.begin()->first <= nCurrentTime)
+ {
+ SharedPresenterAnimation pAnimation (maFutureAnimations.begin()->second);
+ maActiveAnimations.insert(*maFutureAnimations.begin());
+ maFutureAnimations.erase(maFutureAnimations.begin());
+ pAnimation->RunStartCallbacks();
+ }
+}
+
+
+
+
+void PresenterAnimator::ScheduleNextRun (void)
+{
+ sal_uInt64 nStartTime (0);
+
+ if ( ! maActiveAnimations.empty())
+ {
+ nStartTime = maActiveAnimations.begin()->first;
+ if ( ! maFutureAnimations.empty())
+ if (maFutureAnimations.begin()->first < nStartTime)
+ nStartTime = maFutureAnimations.begin()->first;
+ }
+ else if ( ! maFutureAnimations.empty())
+ nStartTime = maFutureAnimations.begin()->first;
+
+ if (nStartTime > 0)
+ ScheduleNextRun(nStartTime);
+}
+
+
+
+
+void PresenterAnimator::ScheduleNextRun (const sal_uInt64 nStartTime)
+{
+ if (mnNextTime==0 || nStartTime<mnNextTime)
+ {
+ mnNextTime = nStartTime;
+ ::salhelper::TTimeValue aTimeValue (GetSeconds(mnNextTime), GetNanoSeconds(mnNextTime));
+ PresenterTimer::ScheduleSingleTaskAbsolute (
+ ::boost::bind(&PresenterAnimator::Process, this),
+ aTimeValue);
+ }
+}
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterAnimator.hxx b/sdext/source/presenter/PresenterAnimator.hxx
new file mode 100644
index 000000000000..073592b69947
--- /dev/null
+++ b/sdext/source/presenter/PresenterAnimator.hxx
@@ -0,0 +1,75 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_ANIMATOR_HXX
+#define SDEXT_PRESENTER_ANIMATOR_HXX
+
+#include "PresenterAnimation.hxx"
+#include <cppuhelper/basemutex.hxx>
+#include <map>
+#include <boost/noncopyable.hpp>
+#include <boost/scoped_ptr.hpp>
+
+namespace sdext { namespace presenter {
+
+/** Simple animation management. Call AddAnimation to run animations
+ concurrently or one of the other. See PresenterAnimation for details of
+ how to specify animations.
+*/
+class PresenterAnimator
+ : private ::boost::noncopyable,
+ private ::cppu::BaseMutex
+{
+public:
+ PresenterAnimator (void);
+ virtual ~PresenterAnimator (void);
+
+ /** Add an animation. The time at which to start and end this animation
+ is provided by the animation itself.
+ */
+ void AddAnimation (const SharedPresenterAnimation& rpAnimation);
+
+private:
+ typedef ::std::multimap<sal_uInt64,SharedPresenterAnimation> AnimationList;
+ AnimationList maFutureAnimations;
+ AnimationList maActiveAnimations;
+ sal_Int32 mnCurrentTaskId;
+ sal_uInt64 mnNextTime;
+
+ void Process (void);
+ void ActivateAnimations (const sal_uInt64 nCurrentTime);
+ void ScheduleNextRun (void);
+ void ScheduleNextRun (const sal_uInt64 nStartTime);
+
+};
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterBitmapContainer.cxx b/sdext/source/presenter/PresenterBitmapContainer.cxx
new file mode 100644
index 000000000000..1422ac3509dc
--- /dev/null
+++ b/sdext/source/presenter/PresenterBitmapContainer.cxx
@@ -0,0 +1,501 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterBitmapContainer.hxx"
+#include "PresenterComponent.hxx"
+#include "PresenterConfigurationAccess.hxx"
+
+#include <com/sun/star/deployment/XPackageInformationProvider.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/lang/XMultiComponentFactory.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/XIntegerBitmap.hpp>
+#include <boost/bind.hpp>
+#include <map>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::std;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+
+namespace sdext { namespace presenter {
+
+namespace {
+static OUString gsNameProperty (A2S("Name"));
+static OUString gsNormalFileNameProperty (A2S("NormalFileName"));
+static OUString gsMouseOverFileNameProperty (A2S("MouseOverFileName"));
+static OUString gsButtonDownFileNameProperty (A2S("ButtonDownFileName"));
+static OUString gsDisabledFileNameProperty (A2S("DisabledFileName"));
+static OUString gsMaskFileNameProperty (A2S("MaskFileName"));
+static OUString gsXOffsetProperty (A2S("XOffset"));
+static OUString gsYOffsetProperty (A2S("YOffset"));
+static OUString gsXHotSpotProperty (A2S("XHotSpot"));
+static OUString gsYHotSpotProperty (A2S("YHotSpot"));
+static OUString gsReplacementColorProperty (A2S("ReplacementColor"));
+static OUString gsHorizontalTexturingModeProperty (A2S("HorizontalTexturingMode"));
+static OUString gsVerticalTexturingModeProperty (A2S("VerticalTexturingMode"));
+}
+
+//===== PresenterBitmapContainer ==============================================
+
+PresenterBitmapContainer::PresenterBitmapContainer (
+ const ::rtl::OUString& rsConfigurationBase,
+ const ::boost::shared_ptr<PresenterBitmapContainer>& rpParentContainer,
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const OUString& rsBasePath,
+ const css::uno::Reference<css::drawing::XPresenterHelper>& rxPresenterHelper)
+ : mpParentContainer(rpParentContainer),
+ maIconContainer(),
+ msBasePath(rsBasePath),
+ mxCanvas(rxCanvas),
+ mxPresenterHelper(rxPresenterHelper)
+{
+ Initialize(rxComponentContext);
+
+ // Get access to the configuration.
+ PresenterConfigurationAccess aConfiguration (
+ rxComponentContext,
+ A2S("org.openoffice.Office.extension.PresenterScreen"),
+ PresenterConfigurationAccess::READ_ONLY);
+ Reference<container::XNameAccess> xBitmapList (
+ aConfiguration.GetConfigurationNode(rsConfigurationBase),
+ UNO_QUERY_THROW);
+
+ LoadBitmaps(xBitmapList);
+}
+
+
+
+
+
+PresenterBitmapContainer::PresenterBitmapContainer (
+ const css::uno::Reference<css::container::XNameAccess>& rxRootNode,
+ const ::boost::shared_ptr<PresenterBitmapContainer>& rpParentContainer,
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const OUString& rsBasePath,
+ const css::uno::Reference<css::drawing::XPresenterHelper>& rxPresenterHelper)
+ : mpParentContainer(rpParentContainer),
+ maIconContainer(),
+ msBasePath(rsBasePath),
+ mxCanvas(rxCanvas),
+ mxPresenterHelper(rxPresenterHelper)
+{
+ Initialize(rxComponentContext);
+
+ LoadBitmaps(rxRootNode);
+}
+
+
+
+
+void PresenterBitmapContainer::Initialize (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext)
+{
+ if ( ! mxPresenterHelper.is())
+ {
+ // Create an object that is able to load the bitmaps in a format that is
+ // supported by the canvas.
+ Reference<lang::XMultiComponentFactory> xFactory (
+ rxComponentContext->getServiceManager(), UNO_QUERY);
+ if ( ! xFactory.is())
+ return;
+ mxPresenterHelper = Reference<drawing::XPresenterHelper>(
+ xFactory->createInstanceWithContext(
+ A2S("com.sun.star.drawing.PresenterHelper"),
+ rxComponentContext),
+ UNO_QUERY_THROW);
+ }
+}
+
+
+
+
+PresenterBitmapContainer::~PresenterBitmapContainer (void)
+{
+ maIconContainer.clear();
+}
+
+
+
+
+SharedBitmapDescriptor PresenterBitmapContainer::GetBitmap (
+ const OUString& rsName) const
+{
+ BitmapContainer::const_iterator iSet (maIconContainer.find(rsName));
+ if (iSet != maIconContainer.end())
+ return iSet->second;
+ else if (mpParentContainer.get() != NULL)
+ return mpParentContainer->GetBitmap(rsName);
+ else
+ return SharedBitmapDescriptor();
+}
+
+
+
+
+void PresenterBitmapContainer::LoadBitmaps (
+ const css::uno::Reference<css::container::XNameAccess>& rxBitmapList)
+{
+ if ( ! mxCanvas.is())
+ return;
+
+ if ( ! rxBitmapList.is())
+ return;
+
+ try
+ {
+ // Load all button bitmaps.
+ if (rxBitmapList.is())
+ {
+ PresenterConfigurationAccess::ForAll(
+ rxBitmapList,
+ ::boost::bind(&PresenterBitmapContainer::ProcessBitmap, this, _1, _2));
+ }
+ }
+ catch (Exception&)
+ {
+ OSL_ASSERT(false);
+ }
+}
+
+
+
+
+SharedBitmapDescriptor PresenterBitmapContainer::LoadBitmap (
+ const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
+ const ::rtl::OUString& rsPath,
+ const css::uno::Reference<css::drawing::XPresenterHelper>& rxPresenterHelper,
+ const OUString& rsBasePath,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const SharedBitmapDescriptor& rpDefault)
+{
+ SharedBitmapDescriptor pBitmap;
+
+ if (rxNode.is())
+ {
+ try
+ {
+ Reference<beans::XPropertySet> xBitmapProperties (
+ PresenterConfigurationAccess::GetConfigurationNode(rxNode, rsPath),
+ UNO_QUERY);
+ if (xBitmapProperties.is())
+ pBitmap = LoadBitmap(
+ xBitmapProperties,
+ rxPresenterHelper,
+ rsBasePath,
+ rxCanvas,
+ rpDefault);
+ }
+ catch (Exception&)
+ {
+ OSL_ASSERT(false);
+ }
+ }
+
+ return pBitmap;
+}
+
+
+
+
+void PresenterBitmapContainer::ProcessBitmap (
+ const OUString& rsKey,
+ const Reference<beans::XPropertySet>& rxProperties)
+{
+ OUString sName;
+ if ( ! (PresenterConfigurationAccess::GetProperty(rxProperties, gsNameProperty) >>= sName))
+ sName = rsKey;
+
+ maIconContainer[sName] = LoadBitmap(
+ rxProperties,
+ mxPresenterHelper,
+ msBasePath,
+ mxCanvas,
+ SharedBitmapDescriptor());
+}
+
+
+
+
+SharedBitmapDescriptor PresenterBitmapContainer::LoadBitmap (
+ const Reference<beans::XPropertySet>& rxProperties,
+ const css::uno::Reference<css::drawing::XPresenterHelper>& rxPresenterHelper,
+ const OUString& rsBasePath,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const SharedBitmapDescriptor& rpDefault)
+{
+ OSL_ASSERT(rxCanvas.is());
+ OSL_ASSERT(rxPresenterHelper.is());
+
+ SharedBitmapDescriptor pBitmap (new BitmapDescriptor(rpDefault));
+
+ if ( ! rxProperties.is())
+ return pBitmap;
+
+ OUString sFileName;
+
+ // Load bitmaps.
+ if (PresenterConfigurationAccess::GetProperty(rxProperties, gsNormalFileNameProperty) >>= sFileName)
+ try
+ {
+ pBitmap->SetBitmap(
+ BitmapDescriptor::Normal,
+ rxPresenterHelper->loadBitmap(rsBasePath + sFileName, rxCanvas));
+ }
+ catch (Exception&)
+ {}
+ if (PresenterConfigurationAccess::GetProperty(rxProperties, gsMouseOverFileNameProperty) >>= sFileName)
+ try
+ {
+ pBitmap->SetBitmap(
+ BitmapDescriptor::MouseOver,
+ rxPresenterHelper->loadBitmap(rsBasePath + sFileName, rxCanvas));
+ }
+ catch (Exception&)
+ {}
+ if (PresenterConfigurationAccess::GetProperty(rxProperties, gsButtonDownFileNameProperty) >>= sFileName)
+ try
+ {
+ pBitmap->SetBitmap(
+ BitmapDescriptor::ButtonDown,
+ rxPresenterHelper->loadBitmap(rsBasePath + sFileName, rxCanvas));
+ }
+ catch (Exception&)
+ {}
+ if (PresenterConfigurationAccess::GetProperty(rxProperties, gsDisabledFileNameProperty) >>= sFileName)
+ try
+ {
+ pBitmap->SetBitmap(
+ BitmapDescriptor::Disabled,
+ rxPresenterHelper->loadBitmap(rsBasePath + sFileName, rxCanvas));
+ }
+ catch (Exception&)
+ {}
+ if (PresenterConfigurationAccess::GetProperty(rxProperties, gsMaskFileNameProperty) >>= sFileName)
+ try
+ {
+ pBitmap->SetBitmap(
+ BitmapDescriptor::Mask,
+ rxPresenterHelper->loadBitmap(rsBasePath + sFileName, rxCanvas));
+ }
+ catch (Exception&)
+ {}
+
+
+ PresenterConfigurationAccess::GetProperty(rxProperties, gsXOffsetProperty) >>= pBitmap->mnXOffset;
+ PresenterConfigurationAccess::GetProperty(rxProperties, gsYOffsetProperty) >>= pBitmap->mnYOffset;
+
+ PresenterConfigurationAccess::GetProperty(rxProperties, gsXHotSpotProperty) >>= pBitmap->mnXHotSpot;
+ PresenterConfigurationAccess::GetProperty(rxProperties, gsYHotSpotProperty) >>= pBitmap->mnYHotSpot;
+
+ PresenterConfigurationAccess::GetProperty(rxProperties, gsReplacementColorProperty) >>= pBitmap->maReplacementColor;
+
+ OUString sTexturingMode;
+ if (PresenterConfigurationAccess::GetProperty(rxProperties, gsHorizontalTexturingModeProperty) >>= sTexturingMode)
+ pBitmap->meHorizontalTexturingMode = StringToTexturingMode(sTexturingMode);
+ if (PresenterConfigurationAccess::GetProperty(rxProperties, gsVerticalTexturingModeProperty) >>= sTexturingMode)
+ pBitmap->meVerticalTexturingMode = StringToTexturingMode(sTexturingMode);
+
+ return pBitmap;
+}
+
+
+
+
+PresenterBitmapContainer::BitmapDescriptor::TexturingMode
+ PresenterBitmapContainer::StringToTexturingMode (const OUString& rsTexturingMode)
+{
+ if (rsTexturingMode == A2S("Once"))
+ return PresenterBitmapContainer::BitmapDescriptor::Once;
+ else if (rsTexturingMode == A2S("Repeat"))
+ return PresenterBitmapContainer::BitmapDescriptor::Repeat;
+ else if (rsTexturingMode == A2S("Stretch"))
+ return PresenterBitmapContainer::BitmapDescriptor::Stretch;
+ else
+ return PresenterBitmapContainer::BitmapDescriptor::Once;
+}
+
+
+
+
+//===== PresenterBitmapContainer::BitmapSet ===================================
+
+PresenterBitmapContainer::BitmapDescriptor::BitmapDescriptor (void)
+ : mnWidth(0),
+ mnHeight(0),
+ mnXOffset(0),
+ mnYOffset(0),
+ mnXHotSpot(0),
+ mnYHotSpot(0),
+ maReplacementColor(0x00000000),
+ meHorizontalTexturingMode(Once),
+ meVerticalTexturingMode(Once),
+ mxNormalBitmap(),
+ mxMouseOverBitmap(),
+ mxButtonDownBitmap(),
+ mxDisabledBitmap(),
+ mxMaskBitmap()
+{
+}
+
+
+
+
+PresenterBitmapContainer::BitmapDescriptor::BitmapDescriptor (
+ const ::boost::shared_ptr<PresenterBitmapContainer::BitmapDescriptor>& rpDefault)
+ : mnWidth(0),
+ mnHeight(0),
+ mnXOffset(0),
+ mnYOffset(0),
+ mnXHotSpot(0),
+ mnYHotSpot(0),
+ maReplacementColor(0x00000000),
+ meHorizontalTexturingMode(Once),
+ meVerticalTexturingMode(Once),
+ mxNormalBitmap(),
+ mxMouseOverBitmap(),
+ mxButtonDownBitmap(),
+ mxDisabledBitmap(),
+ mxMaskBitmap()
+{
+ if (rpDefault.get() != NULL)
+ {
+ mnWidth = rpDefault->mnWidth;
+ mnHeight = rpDefault->mnHeight;
+ mnXOffset = rpDefault->mnXOffset;
+ mnYOffset = rpDefault->mnYOffset;
+ mnXHotSpot = rpDefault->mnXHotSpot;
+ mnYHotSpot = rpDefault->mnYHotSpot;
+ maReplacementColor = rpDefault->maReplacementColor;
+ meHorizontalTexturingMode = rpDefault->meHorizontalTexturingMode;
+ meVerticalTexturingMode = rpDefault->meVerticalTexturingMode;
+ mxNormalBitmap = rpDefault->mxNormalBitmap;
+ mxMouseOverBitmap = rpDefault->mxMouseOverBitmap;
+ mxButtonDownBitmap = rpDefault->mxButtonDownBitmap;
+ mxDisabledBitmap = rpDefault->mxDisabledBitmap;
+ mxMaskBitmap = rpDefault->mxMaskBitmap;
+ }
+}
+
+
+css::uno::Reference<css::rendering::XBitmap>
+ PresenterBitmapContainer::BitmapDescriptor::GetNormalBitmap (void) const
+{
+ return mxNormalBitmap;
+}
+
+
+
+
+css::uno::Reference<css::rendering::XBitmap>
+ PresenterBitmapContainer::BitmapDescriptor::GetBitmap (
+ const Mode eMode,
+ const bool bMissingDefaultsToNormal) const
+{
+ switch (eMode)
+ {
+ case Normal:
+ default:
+ return mxNormalBitmap;
+
+ case MouseOver:
+ if (mxMouseOverBitmap.is())
+ return mxMouseOverBitmap;
+ else if (bMissingDefaultsToNormal)
+ return mxNormalBitmap;
+
+ case ButtonDown:
+ if (mxButtonDownBitmap.is())
+ return mxButtonDownBitmap;
+ else if (bMissingDefaultsToNormal)
+ return mxNormalBitmap;
+
+ case Disabled:
+ if (mxDisabledBitmap.is())
+ return mxDisabledBitmap;
+ else if (bMissingDefaultsToNormal)
+ return mxNormalBitmap;
+
+ case Mask:
+ return mxMaskBitmap;
+ }
+ return NULL;
+}
+
+
+
+
+void PresenterBitmapContainer::BitmapDescriptor::SetBitmap (
+ const Mode eMode,
+ const css::uno::Reference<css::rendering::XBitmap>& rxBitmap)
+{
+ switch (eMode)
+ {
+ case Normal:
+ default:
+ mxNormalBitmap = rxBitmap;
+ if (mxNormalBitmap.is())
+ {
+ const geometry::IntegerSize2D aSize (mxNormalBitmap->getSize());
+ mnWidth = aSize.Width;
+ mnHeight = aSize.Height;
+ }
+ break;
+
+ case MouseOver:
+ mxMouseOverBitmap = rxBitmap;
+ break;
+
+ case ButtonDown:
+ mxButtonDownBitmap = rxBitmap;
+ break;
+
+ case Disabled:
+ mxDisabledBitmap = rxBitmap;
+ break;
+
+ case Mask:
+ mxMaskBitmap = rxBitmap;
+ break;
+ }
+}
+
+
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterBitmapContainer.hxx b/sdext/source/presenter/PresenterBitmapContainer.hxx
new file mode 100644
index 000000000000..500899992605
--- /dev/null
+++ b/sdext/source/presenter/PresenterBitmapContainer.hxx
@@ -0,0 +1,168 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_BITMAP_CONTAINER_HXX
+#define SDEXT_PRESENTER_BITMAP_CONTAINER_HXX
+
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/rendering/XBitmap.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/scoped_ptr.hpp>
+#include <map>
+#include <vector>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+
+namespace sdext { namespace presenter {
+
+/** Manage a set of bitmap groups as they are used for buttons: three
+ bitmaps, one for the normal state, one for a mouse over effect and one
+ to show that the button has been pressed.
+ A bitmap group is defined by some entries in the configuration.
+*/
+class PresenterBitmapContainer
+ : private ::boost::noncopyable
+{
+public:
+ /** There is one bitmap for the normal state, one for a mouse over effect and one
+ to show that a button has been pressed.
+ */
+ class BitmapDescriptor
+ {
+ public:
+ BitmapDescriptor (void);
+ BitmapDescriptor (const ::boost::shared_ptr<BitmapDescriptor>& rpDefault);
+
+ enum Mode {Normal, MouseOver, ButtonDown, Disabled, Mask};
+ css::uno::Reference<css::rendering::XBitmap> GetNormalBitmap (void) const;
+ css::uno::Reference<css::rendering::XBitmap> GetBitmap (
+ const Mode eMode,
+ const bool bMissingDefaultsToNormal = true) const;
+ void SetBitmap (
+ const Mode eMode,
+ const css::uno::Reference<css::rendering::XBitmap>& rxBitmap);
+
+ sal_Int32 mnWidth;
+ sal_Int32 mnHeight;
+ sal_Int32 mnXOffset;
+ sal_Int32 mnYOffset;
+ sal_Int32 mnXHotSpot;
+ sal_Int32 mnYHotSpot;
+ css::util::Color maReplacementColor;
+ enum TexturingMode { Once, Repeat, Stretch };
+ TexturingMode meHorizontalTexturingMode;
+ TexturingMode meVerticalTexturingMode;
+
+ private:
+ css::uno::Reference<css::rendering::XBitmap> mxNormalBitmap;
+ css::uno::Reference<css::rendering::XBitmap> mxMouseOverBitmap;
+ css::uno::Reference<css::rendering::XBitmap> mxButtonDownBitmap;
+ css::uno::Reference<css::rendering::XBitmap> mxDisabledBitmap;
+ css::uno::Reference<css::rendering::XBitmap> mxMaskBitmap;
+ };
+
+ /** Create a new bitmap container from a section of the configuration.
+ @param rxComponentContext
+ The component context is used to create new API objects.
+ @param rxCanvas
+ Bitmaps are created specifically for this canvas.
+ @param rsConfigurationBase
+ The name of a configuration node whose sub-tree defines the
+ bitmap sets.
+ */
+ PresenterBitmapContainer (
+ const ::rtl::OUString& rsConfigurationBase,
+ const ::boost::shared_ptr<PresenterBitmapContainer>& rpParentContainer,
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const ::rtl::OUString& rsBasePath,
+ const css::uno::Reference<css::drawing::XPresenterHelper>& rxPresenterHelper = NULL);
+ PresenterBitmapContainer (
+ const css::uno::Reference<css::container::XNameAccess>& rsRootNode,
+ const ::boost::shared_ptr<PresenterBitmapContainer>& rpParentContainer,
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const ::rtl::OUString& rsBasePath,
+ const css::uno::Reference<css::drawing::XPresenterHelper>& rxPresenterHelper = NULL);
+ ~PresenterBitmapContainer (void);
+
+ void Initialize (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext);
+
+ /** Return the bitmap set that is associated with the given name.
+ */
+ ::boost::shared_ptr<BitmapDescriptor> GetBitmap (const ::rtl::OUString& rsName) const;
+
+ static ::boost::shared_ptr<BitmapDescriptor> LoadBitmap (
+ const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
+ const ::rtl::OUString& rsPathToBitmapNode,
+ const css::uno::Reference<css::drawing::XPresenterHelper>& rxPresenterHelper,
+ const ::rtl::OUString& rsBitmapBasePath,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const ::boost::shared_ptr<BitmapDescriptor>& rpDefaultBitmap);
+
+private:
+ ::boost::shared_ptr<PresenterBitmapContainer> mpParentContainer;
+ typedef ::std::map<rtl::OUString, ::boost::shared_ptr<BitmapDescriptor> > BitmapContainer;
+ BitmapContainer maIconContainer;
+ ::rtl::OUString msBasePath;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
+
+ void LoadBitmaps (
+ const css::uno::Reference<css::container::XNameAccess>& rsRootNode);
+ void ProcessBitmap (
+ const ::rtl::OUString& rsKey,
+ const css::uno::Reference<css::beans::XPropertySet>& rProperties);
+ static ::boost::shared_ptr<BitmapDescriptor> LoadBitmap (
+ const css::uno::Reference<css::beans::XPropertySet>& rxProperties,
+ const css::uno::Reference<css::drawing::XPresenterHelper>& rxPresenterHelper,
+ const ::rtl::OUString& rsBasePath,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const ::boost::shared_ptr<PresenterBitmapContainer::BitmapDescriptor>& rpDefault);
+ static BitmapDescriptor::TexturingMode
+ StringToTexturingMode (const ::rtl::OUString& rsTexturingMode);
+};
+
+
+typedef PresenterBitmapContainer::BitmapDescriptor PresenterBitmapDescriptor;
+typedef ::boost::shared_ptr<PresenterBitmapContainer::BitmapDescriptor> SharedBitmapDescriptor;
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterButton.cxx b/sdext/source/presenter/PresenterButton.cxx
new file mode 100644
index 000000000000..e13bbcdc1386
--- /dev/null
+++ b/sdext/source/presenter/PresenterButton.cxx
@@ -0,0 +1,615 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterButton.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterController.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterPaintManager.hxx"
+#include "PresenterUIPainter.hxx"
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+#include <boost/bind.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace sdext { namespace presenter {
+
+const static double gnHorizontalBorder (15);
+const static double gnVerticalBorder (5);
+
+
+
+::rtl::Reference<PresenterButton> PresenterButton::Create (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme,
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const css::uno::Reference<css::rendering::XCanvas>& rxParentCanvas,
+ const OUString& rsConfigurationName)
+{
+ Reference<beans::XPropertySet> xProperties (GetConfigurationProperties(
+ rxComponentContext,
+ rsConfigurationName));
+ if (xProperties.is())
+ {
+ OUString sText;
+ OUString sAction;
+ PresenterConfigurationAccess::GetProperty(xProperties, A2S("Text")) >>= sText;
+ PresenterConfigurationAccess::GetProperty(xProperties, A2S("Action")) >>= sAction;
+
+ PresenterTheme::SharedFontDescriptor pFont;
+ if (rpTheme.get() != NULL)
+ pFont = rpTheme->GetFont(A2S("ButtonFont"));
+
+ PresenterTheme::SharedFontDescriptor pMouseOverFont;
+ if (rpTheme.get() != NULL)
+ pMouseOverFont = rpTheme->GetFont(A2S("ButtonMouseOverFont"));
+
+ rtl::Reference<PresenterButton> pButton (
+ new PresenterButton(
+ rxComponentContext,
+ rpPresenterController,
+ rpTheme,
+ rxParentWindow,
+ pFont,
+ pMouseOverFont,
+ sText,
+ sAction));
+ pButton->SetCanvas(rxParentCanvas, rxParentWindow);
+ return pButton;
+ }
+ else
+ return NULL;
+}
+
+
+
+
+PresenterButton::PresenterButton (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme,
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const PresenterTheme::SharedFontDescriptor& rpFont,
+ const PresenterTheme::SharedFontDescriptor& rpMouseOverFont,
+ const OUString& rsText,
+ const OUString& rsAction)
+ : PresenterButtonInterfaceBase(m_aMutex),
+ mpPresenterController(rpPresenterController),
+ mpTheme(rpTheme),
+ mxWindow(),
+ mxCanvas(),
+ mxPresenterHelper(),
+ msText(rsText),
+ mpFont(rpFont),
+ mpMouseOverFont(rpMouseOverFont),
+ msAction(rsAction),
+ maCenter(),
+ maButtonSize(-1,-1),
+ meState(PresenterBitmapDescriptor::Normal),
+ mxNormalBitmap(),
+ mxMouseOverBitmap()
+{
+ try
+ {
+ Reference<lang::XMultiComponentFactory> xFactory (rxComponentContext->getServiceManager());
+ if ( ! xFactory.is())
+ throw RuntimeException();
+
+ mxPresenterHelper = Reference<drawing::XPresenterHelper>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.PresenterHelper")),
+ rxComponentContext),
+ UNO_QUERY_THROW);
+
+ if (mxPresenterHelper.is())
+ mxWindow = mxPresenterHelper->createWindow(rxParentWindow,
+ sal_False,
+ sal_False,
+ sal_False,
+ sal_False);
+
+ // Make the background transparent.
+ Reference<awt::XWindowPeer> xPeer (mxWindow, UNO_QUERY_THROW);
+ if (xPeer.is())
+ {
+ xPeer->setBackground(0xff000000);
+ }
+
+ mxWindow->setVisible(sal_True);
+ mxWindow->addWindowListener(this);
+ mxWindow->addPaintListener(this);
+ mxWindow->addMouseListener(this);
+ mxWindow->addMouseMotionListener(this);
+ }
+ catch (RuntimeException&)
+ {
+ }
+}
+
+
+
+
+PresenterButton::~PresenterButton (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterButton::disposing (void)
+{
+ if (mxCanvas.is())
+ {
+ Reference<lang::XComponent> xComponent (mxCanvas, UNO_QUERY);
+ mxCanvas = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ if (mxWindow.is())
+ {
+ mxWindow->removeWindowListener(this);
+ mxWindow->removePaintListener(this);
+ mxWindow->removeMouseListener(this);
+ mxWindow->removeMouseMotionListener(this);
+ Reference<lang::XComponent> xComponent (mxWindow, UNO_QUERY);
+ mxWindow = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+}
+
+
+
+
+void PresenterButton::SetCenter (const css::geometry::RealPoint2D& rLocation)
+{
+ if (mxCanvas.is())
+ {
+ Invalidate();
+
+ maCenter = rLocation;
+ mxWindow->setPosSize(
+ sal_Int32(0.5 + maCenter.X - maButtonSize.Width/2),
+ sal_Int32(0.5 + maCenter.Y - maButtonSize.Height/2),
+ maButtonSize.Width,
+ maButtonSize.Height,
+ awt::PosSize::POSSIZE);
+
+ Invalidate();
+ }
+ else
+ {
+ // The button can not be painted but we can at least store the new center.
+ maCenter = rLocation;
+ }
+}
+
+
+
+
+void PresenterButton::SetCanvas (
+ const css::uno::Reference<css::rendering::XCanvas>& rxParentCanvas,
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow)
+{
+ if (mxCanvas.is())
+ {
+ Reference<lang::XComponent> xComponent (mxCanvas, UNO_QUERY);
+ mxCanvas = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ if (mxPresenterHelper.is() && rxParentCanvas.is() && rxParentWindow.is())
+ {
+ mxCanvas = mxPresenterHelper->createSharedCanvas (
+ Reference<rendering::XSpriteCanvas>(rxParentCanvas, UNO_QUERY),
+ rxParentWindow,
+ rxParentCanvas,
+ rxParentWindow,
+ mxWindow);
+ if (mxCanvas.is())
+ {
+ SetupButtonBitmaps();
+ SetCenter(maCenter);
+ }
+ }
+}
+
+
+
+
+css::geometry::IntegerSize2D PresenterButton::GetSize (void)
+{
+ if (maButtonSize.Width < 0)
+ CalculateButtonSize();
+ return maButtonSize;
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterButton::windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+
+void SAL_CALL PresenterButton::windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+void SAL_CALL PresenterButton::windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+void SAL_CALL PresenterButton::windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterButton::windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ if (mxWindow.is() && mxCanvas.is())
+ {
+ Reference<rendering::XBitmap> xBitmap;
+ if (meState == PresenterBitmapDescriptor::MouseOver)
+ xBitmap = mxMouseOverBitmap;
+ else
+ xBitmap = mxNormalBitmap;
+ if ( ! xBitmap.is())
+ return;
+
+ rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+ rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ PresenterGeometryHelper::CreatePolygon(rEvent.UpdateRect, mxCanvas->getDevice()),
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ mxCanvas->drawBitmap(xBitmap, aViewState, aRenderState);
+
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+ }
+}
+
+
+
+
+//----- XMouseListener --------------------------------------------------------
+
+void SAL_CALL PresenterButton::mousePressed (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+
+ meState = PresenterBitmapDescriptor::ButtonDown;
+}
+
+
+
+
+void SAL_CALL PresenterButton::mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+
+ if (meState == PresenterBitmapDescriptor::ButtonDown)
+ {
+ OSL_ASSERT(mpPresenterController.get()!=NULL);
+ mpPresenterController->DispatchUnoCommand(msAction);
+
+ meState = PresenterBitmapDescriptor::Normal;
+ Invalidate();
+ }
+}
+
+
+
+
+void SAL_CALL PresenterButton::mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+ meState = PresenterBitmapDescriptor::MouseOver;
+ Invalidate();
+}
+
+
+
+
+void SAL_CALL PresenterButton::mouseExited (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+ meState = PresenterBitmapDescriptor::Normal;
+ Invalidate();
+}
+
+
+
+
+
+//----- XMouseMotionListener --------------------------------------------------
+
+void SAL_CALL PresenterButton::mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+void SAL_CALL PresenterButton::mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL PresenterButton::disposing (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ if (rEvent.Source == mxWindow)
+ mxWindow = NULL;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+css::geometry::IntegerSize2D PresenterButton::CalculateButtonSize (void)
+{
+ if (mpFont.get()!=NULL && !mpFont->mxFont.is() && mxCanvas.is())
+ mpFont->PrepareFont(mxCanvas);
+ if (mpFont.get()==NULL || !mpFont->mxFont.is())
+ return geometry::IntegerSize2D(-1,-1);
+
+ geometry::RealSize2D aTextSize (PresenterCanvasHelper::GetTextSize(mpFont->mxFont,msText));
+
+ return geometry::IntegerSize2D (
+ sal_Int32(0.5 + aTextSize.Width + 2*gnHorizontalBorder),
+ sal_Int32(0.5 + aTextSize.Height + 2*gnVerticalBorder));
+}
+
+
+
+
+void PresenterButton::RenderButton (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const geometry::IntegerSize2D& rSize,
+ const PresenterTheme::SharedFontDescriptor& rpFont,
+ const PresenterBitmapDescriptor::Mode eMode,
+ const SharedBitmapDescriptor& rpLeft,
+ const SharedBitmapDescriptor& rpCenter,
+ const SharedBitmapDescriptor& rpRight)
+{
+ if ( ! rxCanvas.is())
+ return;
+
+ const awt::Rectangle aBox(0,0, rSize.Width, rSize.Height);
+
+ PresenterUIPainter::PaintHorizontalBitmapComposite (
+ rxCanvas,
+ aBox,
+ aBox,
+ GetBitmap(rpLeft, eMode),
+ GetBitmap(rpCenter, eMode),
+ GetBitmap(rpRight, eMode));
+
+ if (rpFont.get()==NULL || ! rpFont->mxFont.is())
+ return;
+
+ const rendering::StringContext aContext (msText, 0, msText.getLength());
+ const Reference<rendering::XTextLayout> xLayout (
+ rpFont->mxFont->createTextLayout(aContext,rendering::TextDirection::WEAK_LEFT_TO_RIGHT,0));
+ const geometry::RealRectangle2D aTextBBox (xLayout->queryTextBounds());
+
+ rendering::RenderState aRenderState (geometry::AffineMatrix2D(1,0,0, 0,1,0), NULL,
+ Sequence<double>(4), rendering::CompositeOperation::SOURCE);
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, rpFont->mnColor);
+ aRenderState.AffineTransform.m02 = (rSize.Width - aTextBBox.X2 + aTextBBox.X1)/2;
+ aRenderState.AffineTransform.m12 = (rSize.Height - aTextBBox.Y2 + aTextBBox.Y1)/2 - aTextBBox.Y1;
+
+ rxCanvas->drawText(
+ aContext,
+ rpFont->mxFont,
+ rendering::ViewState(geometry::AffineMatrix2D(1,0,0, 0,1,0), NULL),
+ aRenderState,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT);
+}
+
+
+
+
+void PresenterButton::Invalidate (void)
+{
+ mpPresenterController->GetPaintManager()->Invalidate(mxWindow);
+}
+
+
+
+
+Reference<rendering::XBitmap> PresenterButton::GetBitmap (
+ const SharedBitmapDescriptor& mpIcon,
+ const PresenterBitmapDescriptor::Mode eMode)
+{
+ if (mpIcon.get() != NULL)
+ return mpIcon->GetBitmap(eMode);
+ else
+ {
+ OSL_ASSERT(mpIcon.get()!=NULL);
+ return NULL;
+ }
+}
+
+
+
+
+void PresenterButton::SetupButtonBitmaps (void)
+{
+ if ( ! mxCanvas.is())
+ return;
+ if ( ! mxCanvas->getDevice().is())
+ return;
+
+ // Get the bitmaps for the button border.
+ SharedBitmapDescriptor pLeftBitmap (mpTheme->GetBitmap(A2S("ButtonFrameLeft")));
+ SharedBitmapDescriptor pCenterBitmap(mpTheme->GetBitmap(A2S("ButtonFrameCenter")));
+ SharedBitmapDescriptor pRightBitmap(mpTheme->GetBitmap(A2S("ButtonFrameRight")));
+
+ maButtonSize = CalculateButtonSize();
+
+ if (maButtonSize.Height<=0 && maButtonSize.Width<= 0)
+ return;
+
+ mxNormalBitmap = mxCanvas->getDevice()->createCompatibleAlphaBitmap(maButtonSize);
+ Reference<rendering::XCanvas> xCanvas (mxNormalBitmap, UNO_QUERY);
+ if (xCanvas.is())
+ RenderButton(
+ xCanvas,
+ maButtonSize,
+ mpFont,
+ PresenterBitmapDescriptor::Normal,
+ pLeftBitmap,
+ pCenterBitmap,
+ pRightBitmap);
+
+ mxMouseOverBitmap = mxCanvas->getDevice()->createCompatibleAlphaBitmap(maButtonSize);
+ xCanvas = Reference<rendering::XCanvas>(mxMouseOverBitmap, UNO_QUERY);
+ if (mpMouseOverFont.get()!=NULL && !mpMouseOverFont->mxFont.is() && mxCanvas.is())
+ mpMouseOverFont->PrepareFont(mxCanvas);
+ if (xCanvas.is())
+ RenderButton(
+ xCanvas,
+ maButtonSize,
+ mpMouseOverFont,
+ PresenterBitmapDescriptor::MouseOver,
+ pLeftBitmap,
+ pCenterBitmap,
+ pRightBitmap);
+}
+
+
+
+
+Reference<beans::XPropertySet> PresenterButton::GetConfigurationProperties (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const OUString& rsConfgurationName)
+{
+ PresenterConfigurationAccess aConfiguration (
+ rxComponentContext,
+ PresenterConfigurationAccess::msPresenterScreenRootName,
+ PresenterConfigurationAccess::READ_ONLY);
+ return Reference<beans::XPropertySet>(
+ PresenterConfigurationAccess::Find (
+ Reference<container::XNameAccess>(
+ aConfiguration.GetConfigurationNode(A2S("PresenterScreenSettings/Buttons")),
+ UNO_QUERY),
+ ::boost::bind(&PresenterConfigurationAccess::IsStringPropertyEqual,
+ rsConfgurationName,
+ A2S("Name"),
+ _2)),
+ UNO_QUERY);
+}
+
+
+
+
+void PresenterButton::ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterButton object has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+} } // end of namespace sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterButton.hxx b/sdext/source/presenter/PresenterButton.hxx
new file mode 100644
index 000000000000..b952a9bfa77c
--- /dev/null
+++ b/sdext/source/presenter/PresenterButton.hxx
@@ -0,0 +1,188 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_BUTTON_HXX
+#define SDEXT_PRESENTER_PRESENTER_BUTTON_HXX
+
+#include "PresenterBitmapContainer.hxx"
+#include "PresenterTheme.hxx"
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/rendering/XBitmap.hpp>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase4.hxx>
+#include <boost/noncopyable.hpp>
+#include <rtl/ref.hxx>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterController;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper4 <
+ css::awt::XWindowListener,
+ css::awt::XPaintListener,
+ css::awt::XMouseListener,
+ css::awt::XMouseMotionListener
+ > PresenterButtonInterfaceBase;
+}
+
+/** Button for the presenter screen. It displays a text surrounded by a
+ frame.
+*/
+class PresenterButton
+ : private ::boost::noncopyable,
+ private ::cppu::BaseMutex,
+ public PresenterButtonInterfaceBase
+{
+public:
+ static ::rtl::Reference<PresenterButton> Create (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme,
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const css::uno::Reference<css::rendering::XCanvas>& rxParentCanvas,
+ const ::rtl::OUString& rsConfigurationName);
+ ~PresenterButton (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ void SetCenter (const css::geometry::RealPoint2D& rLocation);
+ void SetCanvas (
+ const css::uno::Reference<css::rendering::XCanvas>& rxParentCanvas,
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow);
+ css::geometry::IntegerSize2D GetSize (void);
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseListener
+
+ virtual void SAL_CALL mousePressed (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseExited (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+
+ // XMouseMotionListener
+
+ virtual void SAL_CALL mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // lang::XEventListener
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+private:
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ ::boost::shared_ptr<PresenterTheme> mpTheme;
+ css::uno::Reference<css::awt::XWindow> mxWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
+ const ::rtl::OUString msText;
+ const PresenterTheme::SharedFontDescriptor mpFont;
+ const PresenterTheme::SharedFontDescriptor mpMouseOverFont;
+ const ::rtl::OUString msAction;
+ css::geometry::RealPoint2D maCenter;
+ css::geometry::IntegerSize2D maButtonSize;
+ PresenterBitmapDescriptor::Mode meState;
+ css::uno::Reference<css::rendering::XBitmap> mxNormalBitmap;
+ css::uno::Reference<css::rendering::XBitmap> mxMouseOverBitmap;
+
+ PresenterButton (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme,
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const PresenterTheme::SharedFontDescriptor& rFont,
+ const PresenterTheme::SharedFontDescriptor& rMouseOverFont,
+ const ::rtl::OUString& rxText,
+ const ::rtl::OUString& rxAction);
+ void RenderButton (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::geometry::IntegerSize2D& rSize,
+ const PresenterTheme::SharedFontDescriptor& rFont,
+ const PresenterBitmapDescriptor::Mode eMode,
+ const SharedBitmapDescriptor& rpLeft,
+ const SharedBitmapDescriptor& rpCenter,
+ const SharedBitmapDescriptor& rpRight);
+ css::geometry::IntegerSize2D CalculateButtonSize (void);
+ void Invalidate (void);
+ css::uno::Reference<css::rendering::XBitmap> GetBitmap (
+ const SharedBitmapDescriptor& mpIcon,
+ const PresenterBitmapDescriptor::Mode eMode);
+ void SetupButtonBitmaps (void);
+ static css::uno::Reference<css::beans::XPropertySet> GetConfigurationProperties (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const ::rtl::OUString& rsConfgurationName);
+
+ void ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException);
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterCanvasHelper.cxx b/sdext/source/presenter/PresenterCanvasHelper.cxx
new file mode 100644
index 000000000000..f783b381a6e4
--- /dev/null
+++ b/sdext/source/presenter/PresenterCanvasHelper.cxx
@@ -0,0 +1,331 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterCanvasHelper.hxx"
+
+#include "PresenterController.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+#include <com/sun/star/rendering/TexturingMode.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+namespace sdext { namespace presenter {
+
+PresenterCanvasHelper::PresenterCanvasHelper (void)
+ : maDefaultViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL),
+ maDefaultRenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE)
+{
+}
+
+
+
+
+PresenterCanvasHelper::~PresenterCanvasHelper (void)
+{
+}
+
+
+
+
+void PresenterCanvasHelper::Paint (
+ const SharedBitmapDescriptor& rpBitmap,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::awt::Rectangle& rOuterBoundingBox,
+ const css::awt::Rectangle& rContentBoundingBox) const
+{
+ PaintRectangle(rpBitmap,rxCanvas,rRepaintBox,rOuterBoundingBox,rContentBoundingBox,
+ maDefaultViewState, maDefaultRenderState);
+}
+
+
+
+
+void PresenterCanvasHelper::PaintRectangle (
+ const SharedBitmapDescriptor& rpBitmap,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::awt::Rectangle& rOuterBoundingBox,
+ const css::awt::Rectangle& rContentBoundingBox,
+ const css::rendering::ViewState& rDefaultViewState,
+ const css::rendering::RenderState& rDefaultRenderState)
+{
+ if (rpBitmap.get() == NULL)
+ return;
+
+ if ( ! rxCanvas.is() || ! rxCanvas->getDevice().is())
+ return;
+
+ // Create a clip polypolygon that has the content box as hole.
+ ::std::vector<awt::Rectangle> aRectangles;
+ aRectangles.reserve(2);
+ aRectangles.push_back(
+ PresenterGeometryHelper::Intersection(rRepaintBox, rOuterBoundingBox));
+ if (rContentBoundingBox.Width > 0 && rContentBoundingBox.Height > 0)
+ aRectangles.push_back(
+ PresenterGeometryHelper::Intersection(rRepaintBox, rContentBoundingBox));
+ Reference<rendering::XPolyPolygon2D> xPolyPolygon (
+ PresenterGeometryHelper::CreatePolygon(
+ aRectangles,
+ rxCanvas->getDevice()));
+ if ( ! xPolyPolygon.is())
+ return;
+ xPolyPolygon->setFillRule(rendering::FillRule_EVEN_ODD);
+
+ if (rpBitmap->GetNormalBitmap().is())
+ {
+ if (rpBitmap->meHorizontalTexturingMode == PresenterBitmapDescriptor::Repeat
+ || rpBitmap->meVerticalTexturingMode == PresenterBitmapDescriptor::Repeat)
+ {
+ PaintTiledBitmap(
+ Reference<rendering::XBitmap>(rpBitmap->GetNormalBitmap(), UNO_QUERY),
+ rxCanvas,
+ rRepaintBox,
+ xPolyPolygon,
+ rContentBoundingBox,
+ rDefaultViewState,
+ rDefaultRenderState);
+ }
+ else
+ {
+ PaintBitmap(
+ Reference<rendering::XBitmap>(rpBitmap->GetNormalBitmap(), UNO_QUERY),
+ awt::Point(rOuterBoundingBox.X, rOuterBoundingBox.Y),
+ rxCanvas,
+ rRepaintBox,
+ xPolyPolygon,
+ rDefaultViewState,
+ rDefaultRenderState);
+ }
+ }
+ else
+ {
+ PaintColor(
+ rpBitmap->maReplacementColor,
+ rxCanvas,
+ rRepaintBox,
+ xPolyPolygon,
+ rDefaultViewState,
+ rDefaultRenderState);
+ }
+}
+
+
+
+
+void PresenterCanvasHelper::PaintTiledBitmap (
+ const css::uno::Reference<css::rendering::XBitmap>& rxTexture,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::uno::Reference<css::rendering::XPolyPolygon2D>& rxPolygon,
+ const css::awt::Rectangle& rHole,
+ const css::rendering::ViewState& rDefaultViewState,
+ const css::rendering::RenderState& rDefaultRenderState)
+{
+ if ( ! rxCanvas.is() || ! rxCanvas->getDevice().is())
+ return;
+
+ if ( ! rxTexture.is())
+ return;
+
+ if ( ! rxPolygon.is())
+ return;
+
+ rendering::ViewState aViewState (rDefaultViewState);
+ aViewState.Clip = rxPolygon;
+
+ // Create a local render state at which the location of the bitmap is
+ // set.
+ rendering::RenderState aRenderState (rDefaultRenderState);
+
+
+ // Tile the bitmap over the repaint box.
+ const geometry::IntegerSize2D aBitmapSize (rxTexture->getSize());
+ const sal_Int32 nLeft = (rRepaintBox.X / aBitmapSize.Width) * aBitmapSize.Width;
+ const sal_Int32 nTop = (rRepaintBox.Y / aBitmapSize.Height) * aBitmapSize.Height;
+ const sal_Int32 nRight = ((rRepaintBox.X + rRepaintBox.Width - 1 + aBitmapSize.Width - 1)
+ / aBitmapSize.Width) * aBitmapSize.Width;
+ const sal_Int32 nBottom = ((rRepaintBox.Y + rRepaintBox.Height - 1 + aBitmapSize.Height - 1)
+ / aBitmapSize.Height) * aBitmapSize.Height;
+
+ for (sal_Int32 nY=nTop; nY<=nBottom; nY+=aBitmapSize.Height)
+ for (sal_Int32 nX=nLeft; nX<=nRight; nX+=aBitmapSize.Width)
+ {
+ if (PresenterGeometryHelper::IsInside(
+ awt::Rectangle(nX,nY,aBitmapSize.Width,aBitmapSize.Height),
+ rHole))
+ {
+ continue;
+ }
+ aRenderState.AffineTransform.m02 = nX;
+ aRenderState.AffineTransform.m12 = nY;
+ rxCanvas->drawBitmap(
+ rxTexture,
+ aViewState,
+ aRenderState);
+ }
+}
+
+
+
+
+void PresenterCanvasHelper::PaintBitmap (
+ const css::uno::Reference<css::rendering::XBitmap>& rxBitmap,
+ const awt::Point& rLocation,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::uno::Reference<css::rendering::XPolyPolygon2D>& rxPolygon,
+ const css::rendering::ViewState& rDefaultViewState,
+ const css::rendering::RenderState& rDefaultRenderState)
+{
+ if ( ! rxCanvas.is() || ! rxCanvas->getDevice().is())
+ return;
+
+ if ( ! rxBitmap.is())
+ return;
+
+ if ( ! rxPolygon.is())
+ return;
+
+ // Set the repaint box as clip rectangle at the view state.
+ rendering::ViewState aViewState (rDefaultViewState);
+ aViewState.Clip = PresenterGeometryHelper::CreatePolygon(rRepaintBox, rxCanvas->getDevice());
+
+
+ // Setup the rendering state so that the bitmap is painted top left in
+ // the polygon bounding box.
+ rendering::RenderState aRenderState (rDefaultRenderState);
+ aRenderState.AffineTransform = geometry::AffineMatrix2D(1,0, rLocation.X, 0,1,rLocation.Y);
+ aRenderState.Clip = rxPolygon;
+
+ rxCanvas->drawBitmap(
+ rxBitmap,
+ aViewState,
+ aRenderState);
+}
+
+
+
+
+void PresenterCanvasHelper::PaintColor (
+ const css::util::Color nColor,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::uno::Reference<css::rendering::XPolyPolygon2D>& rxPolygon,
+ const css::rendering::ViewState& rDefaultViewState,
+ const css::rendering::RenderState& rDefaultRenderState)
+{
+ if ( ! rxCanvas.is() || ! rxCanvas->getDevice().is())
+ return;
+
+ if ( ! rxPolygon.is())
+ return;
+
+ // Set the repaint box as clip rectangle at the view state.
+ rendering::ViewState aViewState (rDefaultViewState);
+ aViewState.Clip = PresenterGeometryHelper::CreatePolygon(rRepaintBox, rxCanvas->getDevice());
+
+
+ // Setup the rendering state to use the given color.
+ rendering::RenderState aRenderState (rDefaultRenderState);
+ SetDeviceColor(aRenderState, nColor);
+
+ rxCanvas->fillPolyPolygon(
+ rxPolygon,
+ aViewState,
+ aRenderState);
+}
+
+
+
+
+void PresenterCanvasHelper::SetDeviceColor(
+ rendering::RenderState& rRenderState,
+ const util::Color aColor)
+{
+ // Other component counts then 4 (RGBA) are not accepted (anymore).
+
+ OSL_ASSERT(rRenderState.DeviceColor.getLength() == 4);
+ if (rRenderState.DeviceColor.getLength() == 4)
+ {
+ rRenderState.DeviceColor[0] = ((aColor >> 16) & 0x0ff) / 255.0;
+ rRenderState.DeviceColor[1] = ((aColor >> 8) & 0x0ff) / 255.0;
+ rRenderState.DeviceColor[2] = ((aColor >> 0) & 0x0ff) / 255.0;
+ rRenderState.DeviceColor[3] = 1.0 - ((aColor >> 24) & 0x0ff) / 255.0;
+ }
+}
+
+
+
+
+css::geometry::RealRectangle2D PresenterCanvasHelper::GetTextBoundingBox (
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const ::rtl::OUString& rsText,
+ const sal_Int8 nTextDirection)
+{
+ if (rxFont.is() && rsText.getLength() > 0)
+ {
+ rendering::StringContext aContext (rsText, 0, rsText.getLength());
+ Reference<rendering::XTextLayout> xLayout (
+ rxFont->createTextLayout(aContext, nTextDirection, 0));
+ return xLayout->queryTextBounds();
+ }
+ else
+ {
+ return geometry::RealRectangle2D(0,0,0,0);
+ }
+}
+
+
+
+
+css::geometry::RealSize2D PresenterCanvasHelper::GetTextSize (
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const ::rtl::OUString& rsText,
+ const sal_Int8 nTextDirection)
+{
+ const geometry::RealRectangle2D aTextBBox (GetTextBoundingBox(rxFont, rsText, nTextDirection));
+ return css::geometry::RealSize2D(aTextBBox.X2 - aTextBBox.X1, aTextBBox.Y2 - aTextBBox.Y1);
+}
+
+
+} } // end of namespace sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterCanvasHelper.hxx b/sdext/source/presenter/PresenterCanvasHelper.hxx
new file mode 100644
index 000000000000..58dde30788e6
--- /dev/null
+++ b/sdext/source/presenter/PresenterCanvasHelper.hxx
@@ -0,0 +1,122 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_CANVAS_HELPER_HXX
+#define SDEXT_PRESENTER_PRESENTER_CANVAS_HELPER_HXX
+
+#include "PresenterTheme.hxx"
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/rendering/XCanvasFont.hpp>
+#include <com/sun/star/rendering/XPolyPolygon2D.hpp>
+#include <rtl/ref.hxx>
+#include <boost/noncopyable.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterController;
+
+/** Collection of functions to ease the life of a canvas user.
+*/
+class PresenterCanvasHelper
+ : ::boost::noncopyable
+{
+public:
+ PresenterCanvasHelper (void);
+ ~PresenterCanvasHelper (void);
+
+ void Paint (
+ const SharedBitmapDescriptor& rpBitmap,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::awt::Rectangle& rBackgroundBoundingBox,
+ const css::awt::Rectangle& rContentBoundingBox) const;
+
+ static void PaintRectangle (
+ const SharedBitmapDescriptor& rpBitmap,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::awt::Rectangle& rBackgroundBoundingBox,
+ const css::awt::Rectangle& rContentBoundingBox,
+ const css::rendering::ViewState& rDefaultViewState,
+ const css::rendering::RenderState& rDefaultRenderState);
+
+ static void SetDeviceColor(
+ css::rendering::RenderState& rRenderState,
+ const css::util::Color aColor);
+
+ static css::geometry::RealRectangle2D GetTextBoundingBox (
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const ::rtl::OUString& rsText,
+ const sal_Int8 = css::rendering::TextDirection::WEAK_LEFT_TO_RIGHT);
+
+ static css::geometry::RealSize2D GetTextSize (
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const ::rtl::OUString& rsText,
+ const sal_Int8 = css::rendering::TextDirection::WEAK_LEFT_TO_RIGHT);
+
+private:
+ const css::rendering::ViewState maDefaultViewState;
+ const css::rendering::RenderState maDefaultRenderState;
+
+ static void PaintTiledBitmap (
+ const css::uno::Reference<css::rendering::XBitmap>& rxTexture,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::uno::Reference<css::rendering::XPolyPolygon2D>& rxPolygon,
+ const css::awt::Rectangle& rHole,
+ const css::rendering::ViewState& rDefaultViewState,
+ const css::rendering::RenderState& rDefaultRenderState);
+
+ static void PaintBitmap (
+ const css::uno::Reference<css::rendering::XBitmap>& rxBitmap,
+ const css::awt::Point& rLocation,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::uno::Reference<css::rendering::XPolyPolygon2D>& rxPolygon,
+ const css::rendering::ViewState& rDefaultViewState,
+ const css::rendering::RenderState& rDefaultRenderState);
+
+ static void PaintColor (
+ const css::util::Color nColor,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::uno::Reference<css::rendering::XPolyPolygon2D>& rxPolygon,
+ const css::rendering::ViewState& rDefaultViewState,
+ const css::rendering::RenderState& rDefaultRenderState);
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterClock.cxx b/sdext/source/presenter/PresenterClock.cxx
new file mode 100644
index 000000000000..1d14b6473e20
--- /dev/null
+++ b/sdext/source/presenter/PresenterClock.cxx
@@ -0,0 +1,1445 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterClock.hxx"
+#include "PresenterComponent.hxx"
+#include "PresenterConfigurationAccess.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include <com/sun/star/awt/InvalidateStyle.hpp>
+#include <com/sun/star/awt/MouseButton.hpp>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/deployment/XPackageInformationProvider.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/PathCapType.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+#include <com/sun/star/rendering/XCanvasFont.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <osl/mutex.hxx>
+#include <osl/time.h>
+#include <rtl/ref.hxx>
+#include <salhelper/timer.hxx>
+#include <boost/bind.hpp>
+#include <cmath>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+namespace sdext { namespace presenter {
+
+
+/** Wrapper around a library timer.
+*/
+class PresenterClock::Timer : public salhelper::Timer
+{
+public:
+ explicit Timer (const ::rtl::Reference<PresenterClock>& rpClock);
+ virtual ~Timer (void);
+
+ void Stop (void);
+
+protected:
+ virtual void SAL_CALL onShot (void);
+
+private:
+ ::rtl::Reference<PresenterClock> mpClock;
+};
+
+
+
+
+namespace {
+ bool GetDateTime (oslDateTime& rDateTime);
+
+ class BitmapDescriptor
+ {
+ public:
+ Reference<rendering::XBitmap> mxBitmap;
+ awt::Point maOffset;
+ Reference<rendering::XBitmap> mxScaledBitmap;
+ geometry::RealPoint2D maScaledOffset;
+ };
+}
+
+
+
+
+class PresenterClock::Painter
+{
+public:
+ virtual void Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const rendering::RenderState& rRenderState,
+ const util::Color& rBackgroundColor,
+ const sal_Int32 nHour,
+ const sal_Int32 nMinute,
+ const sal_Int32 nSecond,
+ const bool bShowSeconds) = 0;
+ virtual void Resize (const awt::Size& rSize) = 0;
+};
+
+
+
+
+namespace {
+ class AnalogDefaultPainter : public PresenterClock::Painter
+ {
+ public:
+ AnalogDefaultPainter (void);
+ virtual ~AnalogDefaultPainter (void) {}
+ virtual void Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const rendering::RenderState& rRenderState,
+ const util::Color& rBackgroundColor,
+ const sal_Int32 nHour,
+ const sal_Int32 nMinute,
+ const sal_Int32 nSecond,
+ const bool bShowSeconds);
+ virtual void Resize (const awt::Size& rSize);
+ private:
+ geometry::RealPoint2D maCenter;
+ double mnOuterRadius;
+ awt::Size maSize;
+ Reference<rendering::XBitmap> mxBitmap;
+
+ /** Relative length (with respect to radius) from center to the tip of
+ the hand.
+ */
+ static const double mnRelativeHourHandLength;
+ /** Relative length (with respect to radius) from center to the
+ oposing end of the tip of the hand.
+ */
+ static const double mnRelativeHourHandLength2;
+ static const double mnRelativeHourHandWidth;
+ static const double mnRelativeMinuteHandLength;
+ static const double mnRelativeMinuteHandLength2;
+ static const double mnRelativeMinuteHandWidth;
+ static const double mnRelativeSecondHandLength;
+ static const double mnRelativeSecondHandLength2;
+ static const double mnRelativeSecondHandWidth;
+
+ void PaintAngledLine (
+ const double nAngle,
+ const double nInnerRadius,
+ const double nOuterRadius,
+ const double nStrokeWidth,
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const rendering::RenderState& rRenderState);
+ };
+
+
+ class AnalogBitmapPainter : public PresenterClock::Painter
+ {
+ public:
+ AnalogBitmapPainter(
+ const Reference<XComponentContext>& rxContext,
+ const OUString& rsThemeName);
+ virtual ~AnalogBitmapPainter (void) {}
+ virtual void Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const rendering::RenderState& rRenderState,
+ const util::Color& rBackgroundColor,
+ const sal_Int32 nHour,
+ const sal_Int32 nMinute,
+ const sal_Int32 nSecond,
+ const bool bShowSeconds);
+ virtual void Resize (const awt::Size& rSize);
+ private:
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ const OUString msThemeName;
+ bool mbThemeLoaded;
+ bool mbThemeLoadingFailed;
+ geometry::RealPoint2D maCenter;
+ double mnOuterRadius;
+ BitmapDescriptor maFace;
+ BitmapDescriptor maMinuteHand;
+ BitmapDescriptor maHourHand;
+
+ void PrepareBitmaps (const Reference<rendering::XCanvas>& rxCanvas);
+ Reference<container::XNameAccess> GetTheme (
+ PresenterConfigurationAccess& rConfiguration);
+ bool ThemeNameComparator (
+ const ::rtl::OUString& rsKey,
+ const Reference<container::XNameAccess>& rxCandidate,
+ const ::rtl::OUString& rsCurrentThemeName);
+ void LoadBitmaps (
+ PresenterConfigurationAccess& rConfiguration,
+ const Reference<container::XNameAccess>& rxNameAccess,
+ const Reference<rendering::XCanvas>& rxCanvas);
+ void LoadBitmap (
+ const OUString& rsKey,
+ const ::std::vector<Any>& rValues,
+ const OUString& rsBitmapPath,
+ const Reference<container::XNameAccess>& rxBitmapLoader);
+ void ScaleBitmaps (void);
+ };
+
+
+ class DigitalDefaultPainter : public PresenterClock::Painter
+ {
+ public:
+ DigitalDefaultPainter (
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const Reference<XResourceId>& rxViewId);
+ virtual ~DigitalDefaultPainter (void);
+
+ virtual void Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const rendering::RenderState& rRenderState,
+ const util::Color& rBackgroundColor,
+ const sal_Int32 nHour,
+ const sal_Int32 nMinute,
+ const sal_Int32 nSecond,
+ const bool bShowSeconds);
+ virtual void Resize (const awt::Size& rSize);
+
+ private:
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ bool mbIs24HourFormat;
+ bool mbIsAdaptFontSize;
+ Reference<rendering::XCanvasFont> mxFont;
+ awt::Size maWindowSize;
+ OUString msViewURL;
+
+ void CreateFont (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const bool bIsShowSeconds);
+ };
+
+
+} // end of anonymous namespace
+
+
+
+
+//===== PresenterClock =================================================================
+
+::rtl::Reference<PresenterClock> PresenterClock::Create (
+ const Reference<XComponentContext>& rxContext,
+ const Reference<XResourceId>& rxViewId,
+ const Reference<frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+{
+ ::rtl::Reference<PresenterClock> pClock (new PresenterClock(
+ rxContext,
+ rxViewId,
+ rxController,
+ rpPresenterController));
+ pClock->LateInit();
+ return pClock;
+}
+
+
+
+
+PresenterClock::PresenterClock (
+ const Reference<XComponentContext>& rxContext,
+ const Reference<XResourceId>& rxViewId,
+ const Reference<frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterClockInterfaceBase(m_aMutex),
+ mxComponentContext(rxContext),
+ mxViewId(rxViewId),
+ mxWindow(),
+ mxCanvas(),
+ mxPane(),
+ mpPresenterController(rpPresenterController),
+ mbIsResizePending(true),
+ maViewState(),
+ maRenderState(),
+ mpTimer(),
+ mpClockPainter(),
+ mpClockPainter2(),
+ mnMode(1),
+ mnHour(-1),
+ mnMinute(-1),
+ mnSecond(-1),
+ mbIsShowSeconds(true)
+{
+ SetMode(mnMode);
+
+ maViewState.AffineTransform = geometry::AffineMatrix2D(1,0,0, 0,1,0);
+ maRenderState.AffineTransform = geometry::AffineMatrix2D(1,0,0, 0,1,0);
+ maRenderState.DeviceColor = Sequence<double>(4);
+ PresenterCanvasHelper::SetDeviceColor(maRenderState, util::Color(0x00000000));
+
+ try
+ {
+
+ Reference<XControllerManager> xCM (rxController, UNO_QUERY_THROW);
+ Reference<XConfigurationController> xCC (xCM->getConfigurationController(), UNO_QUERY_THROW);
+ mxPane = Reference<XPane>(xCC->getResource(rxViewId->getAnchor()), UNO_QUERY_THROW);
+
+ mxWindow = mxPane->getWindow();
+ if (mxWindow.is())
+ {
+ mxWindow->addPaintListener(this);
+ mxWindow->addWindowListener(this);
+ mxWindow->addMouseListener(this);
+ Reference<awt::XWindowPeer> xPeer (mxWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->setBackground(util::Color(0xff000000));
+ mxWindow->setVisible(sal_True);
+ }
+
+ Resize();
+ }
+ catch (RuntimeException&)
+ {
+ disposing();
+ throw;
+ }
+}
+
+
+
+
+PresenterClock::~PresenterClock (void)
+{
+}
+
+
+
+
+void PresenterClock::LateInit (void)
+{
+ mpTimer = new Timer(this);
+}
+
+
+
+
+void SAL_CALL PresenterClock::disposing (void)
+{
+ if (mpTimer != NULL)
+ {
+ mpTimer->Stop();
+ }
+ if (mxWindow.is())
+ {
+ mxWindow->removePaintListener(this);
+ mxWindow->removeWindowListener(this);
+ mxWindow->removeMouseListener(this);
+ mxWindow = NULL;
+ }
+ mxCanvas = NULL;
+ mxViewId = NULL;
+}
+
+
+
+
+void PresenterClock::UpdateTime (void)
+{
+ // Get current time and check whether it is different from last time.
+ oslDateTime aDateTime;
+ if ( ! GetDateTime(aDateTime))
+ return;
+ if (aDateTime.Hours != mnHour
+ || aDateTime.Minutes != mnMinute
+ || aDateTime.Seconds != mnSecond)
+ {
+ mnHour = aDateTime.Hours % 24;
+ mnMinute = aDateTime.Minutes % 60;
+ mnSecond = aDateTime.Seconds % 60;
+
+ Reference<awt::XWindowPeer> xPeer (mxWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->invalidate(awt::InvalidateStyle::NOERASE |
+ awt::InvalidateStyle::UPDATE);
+ }
+}
+
+
+
+
+//----- lang::XEventListener -------------------------------------------------
+
+void SAL_CALL PresenterClock::disposing (const lang::EventObject& rEventObject)
+ throw (RuntimeException)
+{
+ if (rEventObject.Source == mxWindow)
+ {
+ mxWindow = NULL;
+ if (mpTimer != NULL)
+ mpTimer->Stop();
+ }
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterClock::windowPaint (const awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ Paint(rEvent.UpdateRect);
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterClock::windowResized (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ mbIsResizePending = true;
+}
+
+
+
+
+void SAL_CALL PresenterClock::windowMoved (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ mbIsResizePending = true;
+}
+
+
+
+
+void SAL_CALL PresenterClock::windowShown (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ mbIsResizePending = true;
+}
+
+
+
+
+void SAL_CALL PresenterClock::windowHidden (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XMouseListener --------------------------------------------------------
+
+void SAL_CALL PresenterClock::mousePressed (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ if (rEvent.Buttons == awt::MouseButton::LEFT)
+ {
+ SetMode(mnMode+1);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterClock::mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterClock::mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterClock::mouseExited (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XResourceId -----------------------------------------------------------
+
+Reference<XResourceId> SAL_CALL PresenterClock::getResourceId (void)
+ throw (RuntimeException)
+{
+ return mxViewId;
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterClock::isAnchorOnly (void)
+ throw (RuntimeException)
+{
+ return false;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterClock::Resize (void)
+{
+ if (mxPane.is())
+ mxCanvas = Reference<rendering::XCanvas>(mxPane->getCanvas(), UNO_QUERY);
+ if (mxWindow.is() && mxCanvas.is())
+ {
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ const awt::Size aWindowSize(aWindowBox.Width,aWindowBox.Height);
+ if (mpClockPainter.get() != NULL)
+ mpClockPainter->Resize(aWindowSize);
+ if (mpClockPainter2.get() != NULL)
+ mpClockPainter2->Resize(aWindowSize);
+ mbIsResizePending = false;
+ }
+}
+
+
+
+
+void PresenterClock::Paint (const awt::Rectangle& rUpdateBox)
+{
+ if ( ! mxCanvas.is() && mxPane.is())
+ mxCanvas = Reference<rendering::XCanvas>(mxPane->getCanvas(), UNO_QUERY);
+ if ( ! mxWindow.is()
+ || ! mxCanvas.is()
+ || ! mxCanvas->getDevice().is())
+ {
+ return;
+ }
+
+ try
+ {
+ if (mbIsResizePending)
+ Resize();
+
+ Reference<rendering::XPolyPolygon2D> xUpdatePolygon (
+ PresenterGeometryHelper::CreatePolygon(rUpdateBox, mxCanvas->getDevice()));
+
+ Clear(xUpdatePolygon);
+
+ if (mpClockPainter.get() != NULL)
+ mpClockPainter->Paint(mxCanvas,
+ maViewState,
+ maRenderState,
+ mpPresenterController->GetViewBackgroundColor(mxViewId->getResourceURL()),
+ mnHour,
+ mnMinute,
+ mnSecond,
+ mbIsShowSeconds);
+
+ if (mpClockPainter2.get() != NULL)
+ mpClockPainter2->Paint(
+ mxCanvas,
+ maViewState,
+ maRenderState,
+ mpPresenterController->GetViewBackgroundColor(mxViewId->getResourceURL()),
+ mnHour,
+ mnMinute,
+ mnSecond,
+ mbIsShowSeconds);
+ }
+ catch (RuntimeException& e)
+ {
+ (void)e;
+ }
+
+ // Make the back buffer visible.
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+}
+
+
+
+
+void PresenterClock::Clear (const Reference<rendering::XPolyPolygon2D>& rxUpdatePolygon)
+{
+ rendering::RenderState aRenderState = maRenderState;
+ const sal_Int32 nColor (
+ mpPresenterController->GetViewBackgroundColor(mxViewId->getResourceURL()));
+ aRenderState.DeviceColor[0] = ((nColor&0x00ff0000) >> 16) / 255.0;
+ aRenderState.DeviceColor[1] = ((nColor&0x0000ff00) >> 8) / 255.0;
+ aRenderState.DeviceColor[2] = ((nColor&0x000000ff) >> 0) / 255.0;
+
+ if (rxUpdatePolygon.is())
+ mxCanvas->fillPolyPolygon(
+ rxUpdatePolygon,
+ maViewState,
+ aRenderState);
+}
+
+
+
+
+void PresenterClock::SetMode (const sal_Int32 nMode)
+{
+ mnMode = nMode % 3;
+
+ switch (mnMode)
+ {
+ case 0:
+ mpClockPainter.reset(
+ new AnalogBitmapPainter(
+ mxComponentContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("ClockTheme"))));
+ mpClockPainter2.reset();
+ break;
+
+ case 1:
+ mpClockPainter.reset();
+ mpClockPainter2.reset(new AnalogDefaultPainter());
+ break;
+
+ case 2:
+ mpClockPainter.reset();
+ mpClockPainter2.reset(new DigitalDefaultPainter(mpPresenterController, mxViewId));
+ break;
+
+ case 3:
+ mpClockPainter.reset(
+ new AnalogBitmapPainter(
+ mxComponentContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("ClockTheme"))));
+ mpClockPainter2.reset(new AnalogDefaultPainter());
+ break;
+ }
+ Resize();
+}
+
+
+
+
+void PresenterClock::ThrowIfDisposed (void)
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterClock object has already been disposed")),
+ static_cast<uno::XWeak*>(this));
+ }
+}
+
+
+
+
+//===== Timer =================================================================
+
+PresenterClock::Timer::Timer (const ::rtl::Reference<PresenterClock>& rpClock)
+ : salhelper::Timer(salhelper::TTimeValue(10), salhelper::TTimeValue(100/*ms*/)),
+ mpClock(rpClock)
+{
+ acquire();
+ start();
+}
+
+
+
+
+PresenterClock::Timer::~Timer (void)
+{
+ if (mpClock.is())
+ Stop();
+}
+
+
+
+
+void PresenterClock::Timer::Stop (void)
+{
+ mpClock = NULL;
+ stop();
+ release();
+}
+
+
+
+
+void SAL_CALL PresenterClock::Timer::onShot (void)
+{
+ if (mpClock.get() != NULL)
+ mpClock->UpdateTime();
+}
+
+
+
+namespace {
+
+//=============================================================================
+
+bool GetDateTime (oslDateTime& rDateTime)
+{
+ TimeValue aSystemTime;
+ TimeValue aLocalTime;
+ if (osl_getSystemTime(&aSystemTime))
+ if (osl_getLocalTimeFromSystemTime(&aSystemTime, &aLocalTime))
+ if (osl_getDateTimeFromTimeValue(&aLocalTime, &rDateTime))
+ return true;
+ return false;
+}
+
+
+
+
+//===== AnalogDefaultPainter ==================================================
+
+const double AnalogDefaultPainter::mnRelativeHourHandLength = 0.65;
+const double AnalogDefaultPainter::mnRelativeHourHandLength2 (-0.1);
+const double AnalogDefaultPainter::mnRelativeHourHandWidth (0.055);
+const double AnalogDefaultPainter::mnRelativeMinuteHandLength (-0.2);
+const double AnalogDefaultPainter::mnRelativeMinuteHandLength2 (0.85);
+const double AnalogDefaultPainter::mnRelativeMinuteHandWidth (0.025);
+const double AnalogDefaultPainter::mnRelativeSecondHandLength (-0.25);
+const double AnalogDefaultPainter::mnRelativeSecondHandLength2 (0.95);
+const double AnalogDefaultPainter::mnRelativeSecondHandWidth (0.015);
+
+AnalogDefaultPainter::AnalogDefaultPainter (void)
+ : maCenter(0,0),
+ mnOuterRadius(0),
+ maSize(0,0),
+ mxBitmap()
+{
+}
+
+
+
+
+void AnalogDefaultPainter::Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const rendering::RenderState& rRenderState,
+ const util::Color& rBackgroundColor,
+ const sal_Int32 nHour,
+ const sal_Int32 nMinute,
+ const sal_Int32 nSecond,
+ const bool bShowSeconds)
+{
+ double nInnerRadius (0);
+ double nStrokeWidth (0.1);
+ const double nClockSize (2*mnOuterRadius);
+
+ // Some antialiasing is created by painting into a bitmap twice the
+ // screen size and then scaling it down.
+ const sal_Int32 nSuperSampleFactor (2);
+ if ( ! mxBitmap.is())
+ {
+ mxBitmap = (rxCanvas->getDevice()->createCompatibleBitmap(
+ geometry::IntegerSize2D(
+ maSize.Width*nSuperSampleFactor,
+ maSize.Height*nSuperSampleFactor)));
+ }
+ Reference<rendering::XCanvas> xBitmapCanvas (mxBitmap, UNO_QUERY);
+ rendering::RenderState aRenderState(rRenderState);
+ aRenderState.AffineTransform.m00 = nSuperSampleFactor;
+ aRenderState.AffineTransform.m11 = nSuperSampleFactor;
+
+ // Clear the background.
+ aRenderState.DeviceColor[0] = ((rBackgroundColor&0x00ff0000) >> 16) / 255.0;
+ aRenderState.DeviceColor[1] = ((rBackgroundColor&0x0000ff00) >> 8) / 255.0;
+ aRenderState.DeviceColor[2] = ((rBackgroundColor&0x000000ff) >> 0) / 255.0;
+ Reference<rendering::XPolyPolygon2D> xPolygon (
+ PresenterGeometryHelper::CreatePolygon(
+ awt::Rectangle(0,0,maSize.Width,maSize.Height),
+ xBitmapCanvas->getDevice()));
+ if (xPolygon.is())
+ xBitmapCanvas->fillPolyPolygon(xPolygon, rViewState, aRenderState);
+
+ // Clock face and clock hands are painted in black.
+ aRenderState.DeviceColor[0] = 0;
+ aRenderState.DeviceColor[1] = 0;
+ aRenderState.DeviceColor[2] = 0;
+
+ // Paint the clock face.
+ for (sal_Int32 nHourMark=0; nHourMark<12; ++nHourMark)
+ {
+ if (nHourMark%3 == 0)
+ {
+ nInnerRadius = 0.7 * mnOuterRadius;
+ nStrokeWidth = 0.05 * nClockSize;
+ }
+ else
+ {
+ nInnerRadius = 0.8 * mnOuterRadius;
+ nStrokeWidth = 0.03 * nClockSize;
+ }
+
+ const double nAngle (nHourMark * 2 * M_PI / 12);
+ PaintAngledLine(nAngle, nInnerRadius, mnOuterRadius, nStrokeWidth,
+ xBitmapCanvas, rViewState, aRenderState);
+ }
+
+ // Paint the hour hand.
+ const double nHoursAngle (((nHour%12)+nMinute/60.0) * 2 * M_PI / 12);
+ PaintAngledLine(nHoursAngle,
+ mnRelativeHourHandLength2*mnOuterRadius,
+ mnRelativeHourHandLength*mnOuterRadius,
+ mnRelativeHourHandWidth*nClockSize,
+ xBitmapCanvas, rViewState, aRenderState);
+
+ // Paint the minute hand.
+ const double nMinutesAngle ((nMinute+nSecond/60.0) * 2 * M_PI / 60);
+ PaintAngledLine(nMinutesAngle,
+ mnRelativeMinuteHandLength2*mnOuterRadius,
+ mnRelativeMinuteHandLength*mnOuterRadius,
+ mnRelativeMinuteHandWidth*nClockSize,
+ xBitmapCanvas, rViewState, aRenderState);
+
+ // Optionally paint the second hand.
+ if (bShowSeconds)
+ {
+ const double nSecondsAngle (nSecond * 2 * M_PI / 60);
+ PaintAngledLine(nSecondsAngle,
+ mnRelativeSecondHandLength2*mnOuterRadius,
+ mnRelativeSecondHandLength*mnOuterRadius,
+ mnRelativeSecondHandWidth*nClockSize,
+ xBitmapCanvas, rViewState, aRenderState);
+ }
+
+ aRenderState.AffineTransform.m00 = 1.0 / nSuperSampleFactor;
+ aRenderState.AffineTransform.m11 = 1.0 / nSuperSampleFactor;
+ rxCanvas->drawBitmap(mxBitmap,rViewState,aRenderState);
+}
+
+
+
+
+void AnalogDefaultPainter::PaintAngledLine (
+ const double nAngle,
+ const double nInnerRadius,
+ const double nOuterRadius,
+ const double nStrokeWidth,
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const rendering::RenderState& rRenderState)
+{
+ if ( ! rxCanvas.is())
+ return;
+
+ rendering::StrokeAttributes aStrokeAttributes;
+ aStrokeAttributes.StrokeWidth = nStrokeWidth;
+ aStrokeAttributes.StartCapType = rendering::PathCapType::SQUARE;
+ aStrokeAttributes.EndCapType = rendering::PathCapType::SQUARE;
+ aStrokeAttributes.StartCapType = rendering::PathCapType::BUTT;
+ aStrokeAttributes.EndCapType = rendering::PathCapType::BUTT;
+ const double nCos (cos(nAngle - M_PI/2));
+ const double nSin (sin(nAngle - M_PI/2));
+
+ Sequence<Sequence<geometry::RealPoint2D> > aPoints(1);
+ aPoints[0] = Sequence<geometry::RealPoint2D>(2);
+ aPoints[0][0] = geometry::RealPoint2D(
+ maCenter.X + nInnerRadius*nCos + 0.5,
+ maCenter.Y + nInnerRadius*nSin + 0.5);
+ aPoints[0][1] = geometry::RealPoint2D(
+ maCenter.X + nOuterRadius*nCos + 0.5,
+ maCenter.Y + nOuterRadius*nSin + 0.5);
+
+ Reference<rendering::XPolyPolygon2D> xLine (
+ rxCanvas->getDevice()->createCompatibleLinePolyPolygon(aPoints),
+ UNO_QUERY);
+ if ( ! xLine.is())
+ return;
+ rxCanvas->strokePolyPolygon(
+ xLine,
+ rViewState,
+ rRenderState,
+ aStrokeAttributes);
+}
+
+
+
+
+void AnalogDefaultPainter::Resize (const awt::Size& rWindowSize)
+{
+ maSize = rWindowSize;
+ maCenter = geometry::RealPoint2D(rWindowSize.Width/2.0, rWindowSize.Height/2.0);
+ mnOuterRadius = ::std::min(rWindowSize.Width, rWindowSize.Height) / 2.0 - 2;
+ mxBitmap = NULL;
+}
+
+
+
+
+//===== AnalogBitmapPainter ===================================================
+
+AnalogBitmapPainter::AnalogBitmapPainter (
+ const Reference<XComponentContext>& rxContext,
+ const OUString& rsThemeName)
+ : mxComponentContext(rxContext),
+ msThemeName(rsThemeName),
+ mbThemeLoaded(false),
+ mbThemeLoadingFailed(false),
+ maCenter(),
+ mnOuterRadius(),
+ maFace(),
+ maMinuteHand(),
+ maHourHand()
+{
+}
+
+
+
+
+void AnalogBitmapPainter::Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const rendering::RenderState& rRenderState,
+ const util::Color& rBackgroundColor,
+ const sal_Int32 nHour,
+ const sal_Int32 nMinute,
+ const sal_Int32 nSecond,
+ const bool bShowSeconds)
+{
+ (void)rBackgroundColor;
+ (void)nSecond;
+ (void)bShowSeconds;
+
+ if ( ! rxCanvas.is())
+ return;
+
+ rendering::RenderState aRenderState = rRenderState;
+
+ try
+ {
+ PrepareBitmaps(rxCanvas);
+
+ if (maFace.mxScaledBitmap.is())
+ {
+ aRenderState.AffineTransform = geometry::AffineMatrix2D(
+ 1,0, maCenter.X - maFace.maScaledOffset.X,
+ 0,1, maCenter.Y - maFace.maScaledOffset.Y);
+ rxCanvas->drawBitmap(maFace.mxScaledBitmap, rViewState, aRenderState);
+ }
+
+ if (maMinuteHand.mxScaledBitmap.is())
+ {
+ const double nMinuteAngle ((nMinute+nSecond/60.0) * 2.0 * M_PI / 60.0);
+ const double nCos (cos(nMinuteAngle - M_PI/2));
+ const double nSin (sin(nMinuteAngle - M_PI/2));
+ aRenderState.AffineTransform = geometry::AffineMatrix2D(
+ nCos,
+ -nSin,
+ -maMinuteHand.maScaledOffset.X*nCos
+ + maMinuteHand.maScaledOffset.Y*nSin+maCenter.X,
+ nSin,
+ nCos,
+ -maMinuteHand.maScaledOffset.X*nSin
+ - maMinuteHand.maScaledOffset.Y*nCos+maCenter.Y);
+ rxCanvas->drawBitmap(maMinuteHand.mxScaledBitmap, rViewState, aRenderState);
+ }
+
+ if (maHourHand.mxScaledBitmap.is())
+ {
+ const double nHoursAngle ((nHour%12+nMinute/60.0) * 2.0 * M_PI / 12.0);
+ const double nCos (cos(nHoursAngle - M_PI/2));
+ const double nSin (sin(nHoursAngle - M_PI/2));
+ aRenderState.AffineTransform = geometry::AffineMatrix2D(
+ nCos,
+ -nSin,
+ -maHourHand.maScaledOffset.X*nCos+maHourHand.maScaledOffset.Y*nSin+maCenter.X,
+ nSin,
+ nCos,
+ -maHourHand.maScaledOffset.X*nSin-maHourHand.maScaledOffset.Y*nCos+maCenter.Y);
+ rxCanvas->drawBitmap(maHourHand.mxScaledBitmap, rViewState, aRenderState);
+ }
+ }
+ catch(beans::UnknownPropertyException&)
+ {
+ }
+ catch(RuntimeException&)
+ {
+ }
+}
+
+
+
+
+void AnalogBitmapPainter::Resize (const awt::Size& rWindowSize)
+{
+ maCenter = geometry::RealPoint2D(rWindowSize.Width/2.0, rWindowSize.Height/2.0);
+ mnOuterRadius = ::std::min(rWindowSize.Width, rWindowSize.Height) / 2.0 - 2;
+ maFace.mxScaledBitmap = NULL;
+ maHourHand.mxScaledBitmap = NULL;
+ maMinuteHand.mxScaledBitmap = NULL;
+}
+
+
+
+
+void AnalogBitmapPainter::PrepareBitmaps (const Reference<rendering::XCanvas>& rxCanvas)
+{
+ if (mbThemeLoadingFailed)
+ {
+ // Theme loading has failed previously. Do not try a second time.
+ return;
+ }
+ if ( ! rxCanvas.is())
+ {
+ // No canvas => bitmaps can neither be loaded, transformed into the
+ // right format, nor can they be painted.
+ return;
+ }
+
+ if ( ! mbThemeLoaded)
+ {
+ mbThemeLoaded = true;
+
+ // Get access to the clock bitmaps in the configuration.
+ PresenterConfigurationAccess aConfiguration (
+ mxComponentContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.extension.PresenterScreen")),
+ PresenterConfigurationAccess::READ_ONLY);
+
+ Reference<container::XNameAccess> xTheme (GetTheme(aConfiguration));
+ if (xTheme.is())
+ LoadBitmaps(aConfiguration, xTheme, rxCanvas);
+ else
+ mbThemeLoadingFailed = true;
+ }
+
+ ScaleBitmaps();
+}
+
+
+
+
+Reference<container::XNameAccess> AnalogBitmapPainter::GetTheme (
+ PresenterConfigurationAccess& rConfiguration)
+{
+ Reference<container::XNameAccess> xTheme;
+
+ // Get root of clock themes.
+ Reference<container::XHierarchicalNameAccess> xClock (
+ rConfiguration.GetConfigurationNode(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterScreenSettings/AnalogBitmapClock"))),
+ UNO_QUERY);
+
+ // Determine the name of the theme to use.
+ OUString sCurrentThemeName (RTL_CONSTASCII_USTRINGPARAM("DefaultTheme"));
+ rConfiguration.GetConfigurationNode(
+ xClock,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("CurrentTheme"))) >>= sCurrentThemeName;
+
+ // Load the clock theme.
+ Reference<container::XNameAccess> xThemes (
+ rConfiguration.GetConfigurationNode(
+ xClock,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Themes"))),
+ UNO_QUERY);
+ if (xThemes.is())
+ {
+ xTheme = Reference<container::XNameAccess>(
+ PresenterConfigurationAccess::Find(
+ xThemes,
+ ::boost::bind(&AnalogBitmapPainter::ThemeNameComparator,
+ this, _1, _2, sCurrentThemeName)),
+ UNO_QUERY);
+ }
+
+ return xTheme;
+}
+
+
+
+
+bool AnalogBitmapPainter::ThemeNameComparator (
+ const OUString& rsKey,
+ const Reference<container::XNameAccess>& rxCandidate,
+ const OUString& rsCurrentThemeName)
+{
+ (void)rsKey;
+ if (rxCandidate.is())
+ {
+ OUString sThemeName;
+ if (rxCandidate->getByName(OUString(RTL_CONSTASCII_USTRINGPARAM("ThemeName"))) >>= sThemeName)
+ {
+ return sThemeName == rsCurrentThemeName;
+ }
+ }
+ return false;
+}
+
+
+
+
+
+void AnalogBitmapPainter::LoadBitmaps (
+ PresenterConfigurationAccess& rConfiguration,
+ const Reference<container::XNameAccess>& rxClockTheme,
+ const Reference<rendering::XCanvas>& rxCanvas)
+{
+ (void)rConfiguration;
+
+ // Get base path to bitmaps.
+ Reference<deployment::XPackageInformationProvider> xInformationProvider (
+ mxComponentContext->getValueByName(OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "/singletons/com.sun.star.deployment.PackageInformationProvider"))),
+ UNO_QUERY);
+ OUString sLocation;
+ if (xInformationProvider.is())
+ sLocation = xInformationProvider->getPackageLocation(gsExtensionIdentifier);
+ sLocation += OUString(RTL_CONSTASCII_USTRINGPARAM("/"));
+
+ // Create the bitmap loader.
+ Reference<lang::XMultiComponentFactory> xFactory (
+ mxComponentContext->getServiceManager(), UNO_QUERY);
+ if ( ! xFactory.is())
+ return;
+ Sequence<Any> aArguments(1);
+ aArguments[0] <<= rxCanvas;
+ Reference<container::XNameAccess> xBitmapLoader(
+ xFactory->createInstanceWithArgumentsAndContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.PresenterWorkaroundService")),
+ aArguments,
+ mxComponentContext),
+ UNO_QUERY);
+ if ( ! xBitmapLoader.is())
+ return;
+
+
+ // Iterate over all entries in the bitmap list and load the bitmaps.
+ Reference<container::XNameAccess> xBitmaps (
+ rxClockTheme->getByName(OUString(RTL_CONSTASCII_USTRINGPARAM("Bitmaps"))),
+ UNO_QUERY);
+ ::std::vector<rtl::OUString> aBitmapProperties (3);
+ aBitmapProperties[0] = OUString(RTL_CONSTASCII_USTRINGPARAM("FileName"));
+ aBitmapProperties[1] = OUString(RTL_CONSTASCII_USTRINGPARAM("XOffset"));
+ aBitmapProperties[2] = OUString(RTL_CONSTASCII_USTRINGPARAM("YOffset"));
+ PresenterConfigurationAccess::ForAll(
+ xBitmaps,
+ aBitmapProperties,
+ ::boost::bind(&AnalogBitmapPainter::LoadBitmap,
+ this,
+ _1,
+ _2,
+ sLocation,
+ xBitmapLoader));
+}
+
+
+
+
+void AnalogBitmapPainter::LoadBitmap (
+ const OUString& rsKey,
+ const ::std::vector<Any>& rValues,
+ const OUString& rsBitmapPath,
+ const Reference<container::XNameAccess>& rxBitmapLoader)
+{
+ if (rValues.size() == 3)
+ {
+ BitmapDescriptor* pDescriptor = NULL;
+ if (rsKey == OUString(RTL_CONSTASCII_USTRINGPARAM("Face")))
+ pDescriptor = &maFace;
+ else if (rsKey == OUString(RTL_CONSTASCII_USTRINGPARAM("HourHand")))
+ pDescriptor = &maHourHand;
+ else if (rsKey == OUString(RTL_CONSTASCII_USTRINGPARAM("MinuteHand")))
+ pDescriptor = &maMinuteHand;
+
+ if (pDescriptor == NULL)
+ return;
+
+ OUString sFileName;
+ if ( ! (rValues[0] >>= sFileName))
+ return;
+
+ rValues[1] >>= pDescriptor->maOffset.X;
+ rValues[2] >>= pDescriptor->maOffset.Y;
+
+ pDescriptor->mxBitmap = Reference<rendering::XBitmap>(
+ rxBitmapLoader->getByName(rsBitmapPath+sFileName), UNO_QUERY);
+
+ if ( ! pDescriptor->mxBitmap.is())
+ mbThemeLoadingFailed = true;
+ }
+}
+
+
+
+
+void AnalogBitmapPainter::ScaleBitmaps (void)
+{
+ if (mbThemeLoadingFailed)
+ return;
+ if ( ! maFace.mxBitmap.is())
+ return;
+
+ const geometry::IntegerSize2D aFaceSize (maFace.mxBitmap->getSize());
+ const sal_Int32 nSize = std::max(aFaceSize.Width, aFaceSize.Height);
+ const double nScale = mnOuterRadius*2 / nSize;
+
+ BitmapDescriptor* aDescriptors[3] = { &maFace, &maHourHand, &maMinuteHand };
+ for (int nIndex=0; nIndex<3; ++nIndex)
+ {
+ BitmapDescriptor& rDescriptor (*aDescriptors[nIndex]);
+ if ( ! rDescriptor.mxScaledBitmap.is() && rDescriptor.mxBitmap.is())
+ {
+ const geometry::IntegerSize2D aBitmapSize (rDescriptor.mxBitmap->getSize());
+ rDescriptor.mxScaledBitmap = rDescriptor.mxBitmap->getScaledBitmap(
+ geometry::RealSize2D(aBitmapSize.Width*nScale, aBitmapSize.Height*nScale),
+ sal_False);
+ rDescriptor.maScaledOffset = geometry::RealPoint2D(
+ rDescriptor.maOffset.X * nScale,
+ rDescriptor.maOffset.Y * nScale);
+ }
+ }
+}
+
+
+
+
+//===== DigitalDefaultPainter =================================================
+
+DigitalDefaultPainter::DigitalDefaultPainter (
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const Reference<XResourceId>& rxViewId)
+ : mpPresenterController(rpPresenterController),
+ mbIs24HourFormat(false),
+ mbIsAdaptFontSize(true),
+ mxFont(),
+ maWindowSize(0,0),
+ msViewURL(rxViewId.is() ? rxViewId->getResourceURL() : OUString())
+{
+}
+
+
+
+
+DigitalDefaultPainter::~DigitalDefaultPainter (void)
+{
+}
+
+
+
+
+void DigitalDefaultPainter::Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const rendering::RenderState& rRenderState,
+ const util::Color& rBackgroundColor,
+ const sal_Int32 nHour,
+ const sal_Int32 nMinute,
+ const sal_Int32 nSecond,
+ const bool bIsShowSeconds)
+{
+ (void)rBackgroundColor;
+ (void)rRenderState;
+
+ if ( ! mxFont.is())
+ CreateFont(rxCanvas,bIsShowSeconds);
+ if ( ! mxFont.is())
+ return;
+
+ OUString sText;
+
+ if (mbIs24HourFormat)
+ sText = OUString::valueOf(nHour);
+ else
+ {
+ sText = OUString::valueOf(nHour>12 ? nHour-12 : nHour);
+ }
+ sText += OUString(RTL_CONSTASCII_USTRINGPARAM(":"));
+ const OUString sMinutes (OUString::valueOf(nMinute));
+ switch (sMinutes.getLength())
+ {
+ case 1 :
+ sText += OUString(RTL_CONSTASCII_USTRINGPARAM("0")) + sMinutes;
+ break;
+ case 2:
+ sText += sMinutes;
+ break;
+
+ default:
+ return;
+ }
+ if (bIsShowSeconds)
+ {
+ sText += OUString(RTL_CONSTASCII_USTRINGPARAM(":"));
+ const OUString sSeconds (OUString::valueOf(nSecond));
+ switch (sSeconds.getLength())
+ {
+ case 1 :
+ sText += OUString(RTL_CONSTASCII_USTRINGPARAM("0")) + sSeconds;
+ break;
+ case 2:
+ sText += sSeconds;
+ break;
+
+ default:
+ return;
+ }
+ }
+
+ rendering::StringContext aContext (
+ sText,
+ 0,
+ sText.getLength());
+ Reference<rendering::XTextLayout> xLayout (mxFont->createTextLayout(
+ aContext,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT,
+ 0));
+ if ( ! xLayout.is())
+ return;
+ geometry::RealRectangle2D aBox (xLayout->queryTextBounds());
+
+
+ rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ util::Color aFontColor (mpPresenterController->GetViewFontColor(msViewURL));
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, aFontColor);
+ aRenderState.AffineTransform.m02
+ = (maWindowSize.Width - (aBox.X2-aBox.X1+1)) / 2 - aBox.X1;
+ aRenderState.AffineTransform.m12
+ = (maWindowSize.Height - (aBox.Y2-aBox.Y1+1)) / 2 - aBox.Y1;
+ rxCanvas->drawText(
+ aContext,
+ mxFont,
+ rViewState,
+ aRenderState,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT);
+}
+
+
+
+
+void DigitalDefaultPainter::Resize (const awt::Size& rSize)
+{
+ if (maWindowSize.Width != rSize.Width || maWindowSize.Height != rSize.Height)
+ {
+ maWindowSize = rSize;
+ if (mbIsAdaptFontSize)
+ mxFont = NULL;
+ }
+}
+
+
+
+
+void DigitalDefaultPainter::CreateFont (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const bool bIsShowSeconds)
+{
+ if (rxCanvas.is()
+ && rxCanvas->getDevice().is()
+ && maWindowSize.Width>0
+ && maWindowSize.Height>0)
+ {
+ // Create a time template for determinging the right font size.
+ // Assume that 0 is the widest digit or that all digits have the
+ // same width.
+ OUString sTimeTemplate;
+ // For the case that not all digits have the same width, create
+ // different templates for 12 and 24 hour mode.
+ if (mbIs24HourFormat)
+ sTimeTemplate = OUString(RTL_CONSTASCII_USTRINGPARAM("20"));
+ else
+ sTimeTemplate = OUString(RTL_CONSTASCII_USTRINGPARAM("10"));
+ if (bIsShowSeconds)
+ sTimeTemplate += OUString(RTL_CONSTASCII_USTRINGPARAM(":00:00"));
+ else
+ sTimeTemplate += OUString(RTL_CONSTASCII_USTRINGPARAM(":00"));
+
+ rendering::StringContext aContext (
+ sTimeTemplate,
+ 0,
+ sTimeTemplate.getLength());
+
+ // When the font size is adapted to the window size (as large as
+ // possible without overlapping) then that is done in a four step
+ // process:
+ // 1. Create a font in a default size, e.g. 10pt.
+ // 2. Determine a scale factor from enlarging the text bounding box
+ // to maximal size inside the window.
+ // 3. Create a new font by scaling the default size with the factor
+ // calculated in step 2.
+ // 4. Text may be rendered differently in different sizes.
+ // Therefore repeat step 2 and 3 once. More iterations may lead to
+ // even better results but probably not to visible differences.
+ rendering::FontRequest aFontRequest (mpPresenterController->GetViewFontRequest(msViewURL));
+ // TODO: use font from view style from configuration
+ aFontRequest.CellSize = 10;
+
+ for (sal_Int32 nLoop=0; nLoop<3; ++nLoop)
+ {
+ mxFont = rxCanvas->createFont(
+ aFontRequest,
+ Sequence<beans::PropertyValue>(),
+ geometry::Matrix2D(1,0,0,1));
+ if (mxFont.is())
+ {
+ Reference<rendering::XTextLayout> xLayout (mxFont->createTextLayout(
+ aContext,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT,
+ 0));
+
+ if ( ! xLayout.is())
+ break;
+
+ geometry::RealRectangle2D aBox (xLayout->queryTextBounds());
+ if (aBox.X2<=aBox.X1 || aBox.Y2<=aBox.Y1)
+ break;
+ const double nHorizontalFactor = maWindowSize.Width / (aBox.X2-aBox.X1+1);
+ const double nVerticalFactor = maWindowSize.Height / (aBox.Y2-aBox.Y1+1);
+ aFontRequest.CellSize *= ::std::min(nHorizontalFactor,nVerticalFactor);
+ }
+ }
+ }
+}
+
+
+} // end of anonymous namespace
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterClock.hxx b/sdext/source/presenter/PresenterClock.hxx
new file mode 100644
index 000000000000..352663309b75
--- /dev/null
+++ b/sdext/source/presenter/PresenterClock.hxx
@@ -0,0 +1,202 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_CLOCK_HXX
+#define SDEXT_PRESENTER_CLOCK_HXX
+
+#include "PresenterController.hxx"
+
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase4.hxx>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XResourceId.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/rendering/XPolyPolygon2D.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <osl/thread.hxx>
+#include <rtl/ref.hxx>
+#include <boost/scoped_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace {
+ typedef cppu::WeakComponentImplHelper4<
+ css::awt::XPaintListener,
+ css::awt::XWindowListener,
+ css::awt::XMouseListener,
+ css::drawing::framework::XView
+ > PresenterClockInterfaceBase;
+}
+
+namespace sdext { namespace presenter {
+
+
+/** A clock that displays the current time. This class is work in
+ progress. Future extensions may include
+ other times like time since presentation started or remaining time.
+ Painting of the clock is done by the inner Painer class which includes
+ at the moment a simple analog and a simple digital clock.
+*/
+class PresenterClock
+ : private ::cppu::BaseMutex,
+ public PresenterClockInterfaceBase
+{
+public:
+ static ::rtl::Reference<PresenterClock> Create (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+
+ virtual void SAL_CALL disposing (void);
+
+ /** Callback for an external timer or thread that initiates updates when
+ the time changes (seconds or minutes).
+ */
+ void UpdateTime (void);
+
+ /** An internally used base class for different painters.
+ */
+ class Painter;
+
+
+ // lang::XEventListener
+
+ virtual void SAL_CALL
+ disposing (const css::lang::EventObject& rEventObject)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseListener
+
+ virtual void SAL_CALL mousePressed (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseExited (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XResourceId
+
+ virtual css::uno::Reference<css::drawing::framework::XResourceId> SAL_CALL getResourceId (void)
+ throw (css::uno::RuntimeException);
+
+ virtual sal_Bool SAL_CALL isAnchorOnly (void)
+ throw (com::sun::star::uno::RuntimeException);
+
+private:
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxViewId;
+ css::uno::Reference<css::awt::XWindow> mxWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ css::uno::Reference<css::drawing::framework::XPane> mxPane;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ bool mbIsResizePending;
+ css::rendering::ViewState maViewState;
+ css::rendering::RenderState maRenderState;
+ /** A Timer is used for sampling the current time and schedule repaints
+ when the minute or second (when these are displayed) values have changed.
+ */
+ class Timer;
+ Timer* mpTimer;
+ ::boost::scoped_ptr<Painter> mpClockPainter;
+ /**
+ This is used for debugging to show one clock atop another to compare
+ the output of the painters.
+ */
+ ::boost::scoped_ptr<Painter> mpClockPainter2;
+ int mnMode;
+ sal_Int32 mnHour;
+ sal_Int32 mnMinute;
+ sal_Int32 mnSecond;
+
+ bool mbIsShowSeconds;
+
+ /** Use the static Create() method for creating a new PresenterClock
+ object.
+ */
+ PresenterClock (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterClock (void);
+
+ void LateInit (void);
+ void Resize (void);
+ void Paint (const css::awt::Rectangle& rUpdateRectangle);
+ css::uno::Reference<css::rendering::XPolyPolygon2D> CreatePolygon (
+ const css::awt::Rectangle& rBox);
+ void Clear (const css::uno::Reference<css::rendering::XPolyPolygon2D>& rxUpdatePolygon);
+ void SetMode (sal_Int32 nMode);
+
+ /** This method throws a DisposedException when the object has already been
+ disposed.
+ */
+ void ThrowIfDisposed (void)
+ throw (css::lang::DisposedException);
+};
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterComponent.cxx b/sdext/source/presenter/PresenterComponent.cxx
new file mode 100644
index 000000000000..d59a5b5dd0b4
--- /dev/null
+++ b/sdext/source/presenter/PresenterComponent.cxx
@@ -0,0 +1,141 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterComponent.hxx"
+#include "cppuhelper/factory.hxx"
+#include "cppuhelper/implementationentry.hxx"
+#include <com/sun/star/deployment/DeploymentException.hpp>
+#include <com/sun/star/deployment/XPackageInformationProvider.hpp>
+
+#include "PresenterExtensionIdentifier.hxx"
+#include "PresenterProtocolHandler.hxx"
+#include "PresenterScreen.hxx"
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace cppu;
+using namespace osl;
+using ::rtl::OUString;
+
+
+
+namespace sdext { namespace presenter {
+
+static OUString gsBasePath;
+
+::rtl::OUString PresenterComponent::GetBasePath (
+ const Reference<XComponentContext>& rxComponentContext)
+{
+ return GetBasePath(rxComponentContext, gsExtensionIdentifier);
+}
+
+
+
+
+::rtl::OUString PresenterComponent::GetBasePath (
+ const Reference<XComponentContext>& rxComponentContext,
+ const OUString& rsExtensionIdentifier)
+{
+ if (gsBasePath.getLength() == 0)
+ {
+ // Determine the base path of the bitmaps.
+ Reference<deployment::XPackageInformationProvider> xInformationProvider (
+ rxComponentContext->getValueByName(
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "/singletons/com.sun.star.deployment.PackageInformationProvider"))),
+ UNO_QUERY);
+ if (xInformationProvider.is())
+ {
+ try
+ {
+ gsBasePath = xInformationProvider->getPackageLocation(rsExtensionIdentifier)
+ + OUString(RTL_CONSTASCII_USTRINGPARAM("/"));
+ }
+ catch(deployment::DeploymentException&)
+ {
+ }
+ }
+ }
+
+ return gsBasePath;
+}
+
+
+
+rtl_StandardModuleCount g_moduleCount = MODULE_COUNT_INIT;
+
+static struct ImplementationEntry gServiceEntries[] =
+{
+ {
+ PresenterProtocolHandler::Create,
+ PresenterProtocolHandler::getImplementationName_static,
+ PresenterProtocolHandler::getSupportedServiceNames_static,
+ createSingleComponentFactory, &g_moduleCount.modCnt, 0
+ },
+ {
+ PresenterScreenJob::Create,
+ PresenterScreenJob::getImplementationName_static,
+ PresenterScreenJob::getSupportedServiceNames_static,
+ createSingleComponentFactory, 0, 0
+ },
+ { 0, 0, 0, 0, 0, 0 }
+};
+
+
+
+
+extern "C"
+{
+ sal_Bool SAL_CALL component_canUnload( TimeValue *pTime )
+ {
+ return g_moduleCount.canUnload( &g_moduleCount , pTime );
+ }
+
+ sal_Bool SAL_CALL component_writeInfo(
+ void * pServiceManager, void * pRegistryKey )
+ {
+ return component_writeInfoHelper(pServiceManager, pRegistryKey, gServiceEntries);
+ }
+
+
+
+
+ SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
+ const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
+ {
+ return component_getFactoryHelper( pImplName, pServiceManager, pRegistryKey , gServiceEntries);
+ }
+
+}
+
+} } // end of namespace sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterComponent.hxx b/sdext/source/presenter/PresenterComponent.hxx
new file mode 100644
index 000000000000..4334d53f081d
--- /dev/null
+++ b/sdext/source/presenter/PresenterComponent.hxx
@@ -0,0 +1,58 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_COMPONENT_HXX
+#define SDEXT_PRESENTER_COMPONENT_HXX
+
+#include <com/sun/star/uno/XComponentContext.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+/** This string is replaced automatically by the makefile during the
+ building of this extension.
+*/
+class PresenterComponent
+{
+public:
+ const static ::rtl::OUString gsExtensionIdentifier;
+
+ static ::rtl::OUString GetBasePath (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext);
+ static ::rtl::OUString GetBasePath (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const ::rtl::OUString& rsExtensionIdentifier);
+};
+
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterConfigurationAccess.cxx b/sdext/source/presenter/PresenterConfigurationAccess.cxx
new file mode 100644
index 000000000000..acba65b233a9
--- /dev/null
+++ b/sdext/source/presenter/PresenterConfigurationAccess.cxx
@@ -0,0 +1,412 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterConfigurationAccess.hxx"
+
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
+#include <com/sun/star/util/XChangesBatch.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace sdext { namespace presenter {
+
+const ::rtl::OUString PresenterConfigurationAccess::msPresenterScreenRootName =
+ A2S("/org.openoffice.Office.extension.PresenterScreen/");
+
+PresenterConfigurationAccess::PresenterConfigurationAccess (
+ const Reference<XComponentContext>& rxContext,
+ const OUString& rsRootName,
+ WriteMode eMode)
+ : mxRoot(),
+ maNode()
+{
+ try
+ {
+ Reference<lang::XMultiComponentFactory> xFactory (rxContext->getServiceManager());
+ if (xFactory.is())
+ {
+ Sequence<Any> aCreationArguments(3);
+ aCreationArguments[0] = makeAny(beans::PropertyValue(
+ A2S("nodepath"),
+ 0,
+ makeAny(rsRootName),
+ beans::PropertyState_DIRECT_VALUE));
+ aCreationArguments[1] = makeAny(beans::PropertyValue(
+ A2S("depth"),
+ 0,
+ makeAny((sal_Int32)-1),
+ beans::PropertyState_DIRECT_VALUE));
+ aCreationArguments[2] = makeAny(beans::PropertyValue(
+ A2S("lazywrite"),
+ 0,
+ makeAny(true),
+ beans::PropertyState_DIRECT_VALUE));
+
+ OUString sAccessService;
+ if (eMode == READ_ONLY)
+ sAccessService = A2S("com.sun.star.configuration.ConfigurationAccess");
+ else
+ sAccessService = A2S("com.sun.star.configuration.ConfigurationUpdateAccess");
+
+ Reference<lang::XMultiServiceFactory> xProvider (
+ xFactory->createInstanceWithContext(
+ A2S("com.sun.star.configuration.ConfigurationProvider"),
+ rxContext),
+ UNO_QUERY_THROW);
+ mxRoot = xProvider->createInstanceWithArguments(
+ sAccessService, aCreationArguments);
+ maNode <<= mxRoot;
+ }
+ }
+ catch (Exception& rException)
+ {
+ OSL_TRACE ("caught exception while opening configuration: %s",
+ ::rtl::OUStringToOString(rException.Message,
+ RTL_TEXTENCODING_UTF8).getStr());
+ }
+}
+
+
+
+
+PresenterConfigurationAccess::~PresenterConfigurationAccess (void)
+{
+}
+
+
+
+
+bool PresenterConfigurationAccess::IsValid (void) const
+{
+ return mxRoot.is();
+}
+
+
+
+
+Any PresenterConfigurationAccess::GetConfigurationNode (const OUString& sPathToNode)
+{
+ return GetConfigurationNode(
+ Reference<container::XHierarchicalNameAccess>(mxRoot, UNO_QUERY),
+ sPathToNode);
+}
+
+
+
+
+Reference<beans::XPropertySet> PresenterConfigurationAccess::GetNodeProperties (
+ const OUString& sPathToNode)
+{
+ return GetNodeProperties(
+ Reference<container::XHierarchicalNameAccess>(mxRoot, UNO_QUERY),
+ sPathToNode);
+}
+
+
+
+
+bool PresenterConfigurationAccess::GoToChild (const ::rtl::OUString& rsPathToNode)
+{
+ if ( ! IsValid())
+ return false;
+
+ Reference<container::XHierarchicalNameAccess> xNode (maNode, UNO_QUERY);
+ if (xNode.is())
+ {
+ maNode = GetConfigurationNode(
+ Reference<container::XHierarchicalNameAccess>(maNode, UNO_QUERY),
+ rsPathToNode);
+ if (Reference<XInterface>(maNode, UNO_QUERY).is())
+ return true;
+ }
+
+ mxRoot = NULL;
+ return false;
+}
+
+
+
+
+bool PresenterConfigurationAccess::GoToChild (const Predicate& rPredicate)
+{
+ if ( ! IsValid())
+ return false;
+
+ maNode = Find(Reference<container::XNameAccess>(maNode,UNO_QUERY), rPredicate);
+ if (Reference<XInterface>(maNode, UNO_QUERY).is())
+ return true;
+
+ mxRoot = NULL;
+ return false;
+}
+
+
+
+
+bool PresenterConfigurationAccess::SetProperty (
+ const ::rtl::OUString& rsPropertyName,
+ const Any& rValue)
+{
+ Reference<beans::XPropertySet> xProperties (maNode, UNO_QUERY);
+ if (xProperties.is())
+ {
+ xProperties->setPropertyValue(rsPropertyName, rValue);
+ return true;
+ }
+ else
+ return false;
+}
+
+
+
+
+Any PresenterConfigurationAccess::GetConfigurationNode (
+ const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
+ const OUString& sPathToNode)
+{
+ if (sPathToNode.getLength() == 0)
+ return Any(rxNode);
+
+ try
+ {
+ if (rxNode.is())
+ {
+ return rxNode->getByHierarchicalName(sPathToNode);
+ }
+ }
+ catch (Exception& rException)
+ {
+ OSL_TRACE ("caught exception while getting configuration node %s: %s",
+ ::rtl::OUStringToOString(sPathToNode, RTL_TEXTENCODING_UTF8).getStr(),
+ ::rtl::OUStringToOString(rException.Message, RTL_TEXTENCODING_UTF8).getStr());
+ }
+
+ return Any();
+}
+
+
+
+
+Reference<beans::XPropertySet> PresenterConfigurationAccess::GetNodeProperties (
+ const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
+ const ::rtl::OUString& rsPathToNode)
+{
+ return Reference<beans::XPropertySet>(GetConfigurationNode(rxNode, rsPathToNode), UNO_QUERY);
+}
+
+
+
+
+void PresenterConfigurationAccess::CommitChanges (void)
+{
+ Reference<util::XChangesBatch> xConfiguration (mxRoot, UNO_QUERY);
+ if (xConfiguration.is())
+ xConfiguration->commitChanges();
+}
+
+
+
+
+Any PresenterConfigurationAccess::GetValue (const rtl::OUString& sKey)
+{
+ Reference<container::XNameAccess> xAccess (GetConfigurationNode(sKey), UNO_QUERY);
+ if (xAccess.is())
+ {
+ return xAccess->getByName(sKey);
+ }
+ else
+ {
+ return Any();
+ }
+}
+
+
+
+
+void PresenterConfigurationAccess::ForAll (
+ const Reference<container::XNameAccess>& rxContainer,
+ const ::std::vector<OUString>& rArguments,
+ const ItemProcessor& rProcessor)
+{
+ if (rxContainer.is())
+ {
+ ::std::vector<Any> aValues(rArguments.size());
+ Sequence<OUString> aKeys (rxContainer->getElementNames());
+ for (sal_Int32 nItemIndex=0; nItemIndex<aKeys.getLength(); ++nItemIndex)
+ {
+ bool bHasAllValues (true);
+ const OUString& rsKey (aKeys[nItemIndex]);
+ Reference<container::XNameAccess> xSetItem (rxContainer->getByName(rsKey), UNO_QUERY);
+ Reference<beans::XPropertySet> xSet (xSetItem, UNO_QUERY);
+ OSL_ASSERT(xSet.is());
+ if (xSetItem.is())
+ {
+ // Get from the current item of the container the children
+ // that match the names in the rArguments list.
+ for (sal_uInt32 nValueIndex=0; nValueIndex<aValues.size(); ++nValueIndex)
+ {
+ if ( ! xSetItem->hasByName(rArguments[nValueIndex]))
+ bHasAllValues = false;
+ else
+ aValues[nValueIndex] = xSetItem->getByName(rArguments[nValueIndex]);
+ }
+ }
+ else
+ bHasAllValues = false;
+ if (bHasAllValues)
+ rProcessor(rsKey,aValues);
+ }
+ }
+}
+
+
+
+
+void PresenterConfigurationAccess::ForAll (
+ const Reference<container::XNameAccess>& rxContainer,
+ const PropertySetProcessor& rProcessor)
+{
+ if (rxContainer.is())
+ {
+ Sequence<OUString> aKeys (rxContainer->getElementNames());
+ for (sal_Int32 nItemIndex=0; nItemIndex<aKeys.getLength(); ++nItemIndex)
+ {
+ const OUString& rsKey (aKeys[nItemIndex]);
+ Reference<beans::XPropertySet> xSet (rxContainer->getByName(rsKey), UNO_QUERY);
+ if (xSet.is())
+ rProcessor(rsKey, xSet);
+ }
+ }
+}
+
+
+
+
+void PresenterConfigurationAccess::FillList(
+ const Reference<container::XNameAccess>& rxContainer,
+ const ::rtl::OUString& rsArgument,
+ ::std::vector<OUString>& rList)
+{
+ try
+ {
+ if (rxContainer.is())
+ {
+ Sequence<OUString> aKeys (rxContainer->getElementNames());
+ rList.resize(aKeys.getLength());
+ for (sal_Int32 nItemIndex=0; nItemIndex<aKeys.getLength(); ++nItemIndex)
+ {
+ Reference<container::XNameAccess> xSetItem (
+ rxContainer->getByName(aKeys[nItemIndex]), UNO_QUERY);
+ if (xSetItem.is())
+ {
+ xSetItem->getByName(rsArgument) >>= rList[nItemIndex];
+ }
+ }
+ }
+ }
+ catch (RuntimeException&)
+ {}
+}
+
+
+
+
+Any PresenterConfigurationAccess::Find (
+ const Reference<container::XNameAccess>& rxContainer,
+ const Predicate& rPredicate)
+{
+ if (rxContainer.is())
+ {
+ Sequence<OUString> aKeys (rxContainer->getElementNames());
+ for (sal_Int32 nItemIndex=0; nItemIndex<aKeys.getLength(); ++nItemIndex)
+ {
+ Reference<beans::XPropertySet> xProperties (
+ rxContainer->getByName(aKeys[nItemIndex]),
+ UNO_QUERY);
+ if (xProperties.is())
+ if (rPredicate(aKeys[nItemIndex], xProperties))
+ return Any(xProperties);
+ }
+ }
+ return Any();
+}
+
+
+
+
+bool PresenterConfigurationAccess::IsStringPropertyEqual (
+ const ::rtl::OUString& rsValue,
+ const ::rtl::OUString& rsPropertyName,
+ const css::uno::Reference<css::beans::XPropertySet>& rxNode)
+{
+ OUString sValue;
+ if (GetProperty(rxNode, rsPropertyName) >>= sValue)
+ return sValue == rsValue;
+ else
+ return false;
+}
+
+
+
+
+Any PresenterConfigurationAccess::GetProperty (
+ const Reference<beans::XPropertySet>& rxProperties,
+ const OUString& rsKey)
+{
+ OSL_ASSERT(rxProperties.is());
+ if ( ! rxProperties.is())
+ return Any();
+ try
+ {
+ Reference<beans::XPropertySetInfo> xInfo (rxProperties->getPropertySetInfo());
+ if (xInfo.is())
+ if ( ! xInfo->hasPropertyByName(rsKey))
+ return Any();
+ return rxProperties->getPropertyValue(rsKey);
+ }
+ catch (beans::UnknownPropertyException&)
+ {
+ }
+ return Any();
+}
+
+
+
+
+} } // end of namespace sdext::tools
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterConfigurationAccess.hxx b/sdext/source/presenter/PresenterConfigurationAccess.hxx
new file mode 100644
index 000000000000..81f1130e696b
--- /dev/null
+++ b/sdext/source/presenter/PresenterConfigurationAccess.hxx
@@ -0,0 +1,208 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_CONFIGURATION_ACCESS_HXX
+#define SDEXT_PRESENTER_CONFIGURATION_ACCESS_HXX
+
+#include <rtl/ustring.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <vector>
+#include <boost/function.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+/** This class gives access to the configuration. Create an object of this
+ class for one node of the configuration. This will be the root node.
+ From this one you can use this class in two ways.
+
+ <p>In a stateless mode (with exception of the root node) you can use static
+ methods for obtaining child nodes, get values from properties at leaf
+ nodes and iterate over children of inner nodes.</p>
+
+ <p>In a stateful mode use non-static methods like GoToChild() to
+ navigate to children.</p>
+
+ <p>Note to call CommitChanges() after making changes to
+ PresenterConfigurationAccess object that was opened in READ_WRITE mode.</p>
+*/
+class PresenterConfigurationAccess
+{
+public:
+ enum WriteMode { READ_WRITE, READ_ONLY };
+ typedef ::boost::function<bool(
+ const ::rtl::OUString&,
+ const css::uno::Reference<css::beans::XPropertySet>&)> Predicate;
+ static const ::rtl::OUString msPresenterScreenRootName;
+
+ /** Create a new object to access the configuration entries below the
+ given root.
+ @param rsRootName
+ Name of the root. You can use msPresenterScreenRootName to
+ access the configuration of the presenter screen.
+ @param eMode
+ This flag specifies whether to give read-write or read-only
+ access.
+ */
+ PresenterConfigurationAccess(
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::OUString& rsRootName,
+ WriteMode eMode);
+
+ ~PresenterConfigurationAccess (void);
+
+ /** Return a configuration node below the root of the called object.
+ @param rsPathToNode
+ The relative path from the root (as given the constructor) to the node.
+ */
+ css::uno::Any GetConfigurationNode (
+ const ::rtl::OUString& rsPathToNode);
+ css::uno::Reference<css::beans::XPropertySet> GetNodeProperties (
+ const ::rtl::OUString& rsPathToNode);
+
+ /** Return <TRUE/> when opening the configuration (via creating a new
+ PresenterConfigurationAccess object) or previous calls to
+ GoToChild() left the called PresenterConfigurationAccess object in a
+ valid state.
+ */
+ bool IsValid (void) const;
+
+ /** Move the focused node to the (possibly indirect) child specified by the given path.
+ */
+ bool GoToChild (const ::rtl::OUString& rsPathToNode);
+
+ /** Move the focused node to the first direct child that fulfills the the given predicate.
+ */
+ bool GoToChild (const Predicate& rPredicate);
+
+ /** Modify the property child of the currently focused node. Keep in
+ mind to call CommitChanges() to write the change back to the
+ configuration.
+ */
+ bool SetProperty (const ::rtl::OUString& rsPropertyName, const css::uno::Any& rValue);
+
+ /** Return a configuration node below the given node.
+ @param rxNode
+ The node that acts as root to the given relative path.
+ @param rsPathToNode
+ The relative path from the given node to the requested node.
+ When this string is empty then rxNode is returned.
+ @return
+ The type of the returned node varies with the requested node.
+ It is empty when the node was not found.
+ */
+ static css::uno::Any GetConfigurationNode (
+ const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
+ const ::rtl::OUString& rsPathToNode);
+
+ static css::uno::Reference<css::beans::XPropertySet> GetNodeProperties (
+ const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
+ const ::rtl::OUString& rsPathToNode);
+
+ /** Write any changes that have been made back to the configuration.
+ This call is ignored when the called ConfigurationAccess object was
+ not create with read-write mode.
+ */
+ void CommitChanges (void);
+
+ css::uno::Any GetValue (const rtl::OUString& sKey);
+
+ typedef ::boost::function<void(
+ const ::rtl::OUString&,
+ const ::std::vector<css::uno::Any>&) > ItemProcessor;
+ typedef ::boost::function<void(
+ const ::rtl::OUString&,
+ const ::css::uno::Reference<css::beans::XPropertySet>&) > PropertySetProcessor;
+
+ /** Execute a functor for all elements of the given container.
+ @param rxContainer
+ The container is a XNameAccess to a list of the configuration.
+ This can be a node returned by GetConfigurationNode().
+ @param rArguments
+ The functor is called with arguments that are children of each
+ element of the container. The set of children is specified this
+ list.
+ @param rFunctor
+ The functor to be executed for some or all of the elements in
+ the given container.
+ */
+ static void ForAll (
+ const css::uno::Reference<css::container::XNameAccess>& rxContainer,
+ const ::std::vector<rtl::OUString>& rArguments,
+ const ItemProcessor& rProcessor);
+ static void ForAll (
+ const css::uno::Reference<css::container::XNameAccess>& rxContainer,
+ const PropertySetProcessor& rProcessor);
+
+ /** Fill a list with the string contents of all sub-elements in the given container.
+ @param rxContainer
+ The container is a XNameAccess to a list of the configuration.
+ This can be a node returned by GetConfigurationNode().
+ @param rsArgument
+ This specifies which string children of the elements in the
+ container are to be inserted into the list. The specified child
+ has to be of type string.
+ @param rList
+ The list to be filled.
+ */
+ static void FillList(
+ const css::uno::Reference<css::container::XNameAccess>& rxContainer,
+ const ::rtl::OUString& rsArgument,
+ ::std::vector<rtl::OUString>& rList);
+
+ static css::uno::Any Find (
+ const css::uno::Reference<css::container::XNameAccess>& rxContainer,
+ const Predicate& rPredicate);
+
+ static bool IsStringPropertyEqual (
+ const ::rtl::OUString& rsValue,
+ const ::rtl::OUString& rsPropertyName,
+ const css::uno::Reference<css::beans::XPropertySet>& rxNode);
+
+ /** This method wraps a call to getPropertyValue() and returns an empty
+ Any instead of throwing an exception when the property does not
+ exist.
+ */
+ static css::uno::Any GetProperty (
+ const css::uno::Reference<css::beans::XPropertySet>& rxProperties,
+ const ::rtl::OUString& rsKey);
+
+private:
+ css::uno::Reference<css::uno::XInterface> mxRoot;
+ css::uno::Any maNode;
+};
+
+} } // end of namespace sdext::tools
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterController.cxx b/sdext/source/presenter/PresenterController.cxx
new file mode 100644
index 000000000000..d37f0d966db8
--- /dev/null
+++ b/sdext/source/presenter/PresenterController.cxx
@@ -0,0 +1,1380 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterController.hxx"
+
+#include "PresenterAccessibility.hxx"
+#include "PresenterAnimator.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterCurrentSlideObserver.hxx"
+#include "PresenterFrameworkObserver.hxx"
+#include "PresenterHelper.hxx"
+#include "PresenterNotesView.hxx"
+#include "PresenterPaintManager.hxx"
+#include "PresenterPaneAnimator.hxx"
+#include "PresenterPaneBase.hxx"
+#include "PresenterPaneContainer.hxx"
+#include "PresenterPaneBorderPainter.hxx"
+#include "PresenterTheme.hxx"
+#include "PresenterViewFactory.hxx"
+#include "PresenterWindowManager.hxx"
+
+#include <com/sun/star/accessibility/AccessibleRole.hpp>
+#include <com/sun/star/accessibility/XAccessible.hpp>
+#include <com/sun/star/awt/Key.hpp>
+#include <com/sun/star/awt/KeyModifier.hpp>
+#include <com/sun/star/awt/MouseButton.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/drawing/XDrawView.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/framework/ResourceActivationMode.hpp>
+#include <com/sun/star/drawing/framework/ResourceId.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/frame/FrameSearchFlag.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/presentation/XPresentation.hpp>
+#include <com/sun/star/presentation/XPresentationSupplier.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+
+#include <rtl/ustrbuf.hxx>
+#include <boost/bind.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::presentation;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+using ::rtl::OUStringBuffer;
+
+namespace {
+ const sal_Int32 ResourceActivationEventType = 0;
+ const sal_Int32 ResourceDeactivationEventType = 1;
+ const sal_Int32 ConfigurationUpdateEndEventType = 2;
+}
+
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+
+namespace sdext { namespace presenter {
+
+PresenterController::InstanceContainer PresenterController::maInstances;
+
+::rtl::Reference<PresenterController> PresenterController::Instance (
+ const css::uno::Reference<css::frame::XFrame>& rxFrame)
+{
+ InstanceContainer::const_iterator iInstance (maInstances.find(rxFrame));
+ if (iInstance != maInstances.end())
+ return iInstance->second;
+ else
+ return ::rtl::Reference<PresenterController>();
+}
+
+
+
+
+PresenterController::PresenterController (
+ const Reference<XComponentContext>& rxContext,
+ const Reference<frame::XController>& rxController,
+ const Reference<presentation::XSlideShowController>& rxSlideShowController,
+ const rtl::Reference<PresenterPaneContainer>& rpPaneContainer,
+ const Reference<XResourceId>& rxMainPaneId)
+ : PresenterControllerInterfaceBase(m_aMutex),
+ mxComponentContext(rxContext),
+ mxController(rxController),
+ mxConfigurationController(),
+ mxSlideShowController(rxSlideShowController),
+ mxMainPaneId(rxMainPaneId),
+ mpPaneContainer(rpPaneContainer),
+ mnCurrentSlideIndex(-1),
+ mxCurrentSlide(),
+ mxNextSlide(),
+ mpWindowManager(new PresenterWindowManager(rxContext,mpPaneContainer,this)),
+ mpCurrentPaneAnimation(),
+ mnWindowBackgroundColor(0x00ffffff),
+ mpTheme(),
+ mxMainWindow(),
+ mpPaneBorderPainter(),
+ mpAnimator(new PresenterAnimator()),
+ mpCanvasHelper(new PresenterCanvasHelper()),
+ mxPresenterHelper(),
+ mpPaintManager(),
+ mnPendingSlideNumber(-1),
+ mxUrlTransformer(),
+ mpAccessibleObject(),
+ mbIsAccessibilityActive(false)
+{
+ OSL_ASSERT(mxController.is());
+
+ if ( ! mxSlideShowController.is())
+ throw new lang::IllegalArgumentException(
+ A2S("missing slide show controller"),
+ static_cast<XWeak*>(this),
+ 2);
+
+ new PresenterCurrentSlideObserver(this,rxSlideShowController);
+
+ // Listen for configuration changes.
+ Reference<XControllerManager> xCM (mxController, UNO_QUERY_THROW);
+ mxConfigurationController = xCM->getConfigurationController();
+ if (mxConfigurationController.is())
+ {
+ mxConfigurationController->addConfigurationChangeListener(
+ this,
+ A2S("ResourceActivation"),
+ Any(ResourceActivationEventType));
+ mxConfigurationController->addConfigurationChangeListener(
+ this,
+ A2S("ResourceDeactivation"),
+ Any(ResourceDeactivationEventType));
+ mxConfigurationController->addConfigurationChangeListener(
+ this,
+ A2S("ConfigurationUpdateEnd"),
+ Any(ConfigurationUpdateEndEventType));
+ }
+
+ // Listen for the frame being activated.
+ Reference<frame::XFrame> xFrame (mxController->getFrame());
+ if (xFrame.is())
+ xFrame->addFrameActionListener(this);
+
+ // Create the border painter.
+ mpPaneBorderPainter = new PresenterPaneBorderPainter(rxContext);
+ mpWindowManager->SetPaneBorderPainter(mpPaneBorderPainter);
+
+ // Create an object that is able to load the bitmaps in a format that is
+ // supported by the canvas.
+ Reference<lang::XMultiComponentFactory> xFactory (
+ rxContext->getServiceManager(), UNO_QUERY);
+ if ( ! xFactory.is())
+ return;
+ mxPresenterHelper = Reference<drawing::XPresenterHelper>(
+ xFactory->createInstanceWithContext(
+ A2S("com.sun.star.drawing.PresenterHelper"),
+ rxContext),
+ UNO_QUERY_THROW);
+
+ if (mxSlideShowController.is())
+ {
+ mxSlideShowController->activate();
+ Reference<beans::XPropertySet> xProperties (mxSlideShowController, UNO_QUERY);
+ if (xProperties.is())
+ {
+ Reference<awt::XWindow> xWindow (
+ xProperties->getPropertyValue(A2S("ParentWindow")), UNO_QUERY);
+ if (xWindow.is())
+ xWindow->addKeyListener(this);
+ }
+ }
+
+ UpdateCurrentSlide(0);
+
+ maInstances[mxController->getFrame()] = this;
+
+ // Create a URLTransformer.
+ if (xFactory.is())
+ {
+ mxUrlTransformer = Reference<util::XURLTransformer>(
+ xFactory->createInstanceWithContext(
+ A2S("com.sun.star.util.URLTransformer"),
+ mxComponentContext),
+ UNO_QUERY);
+ }
+}
+
+
+
+
+PresenterController::~PresenterController (void)
+{
+}
+
+
+
+
+void PresenterController::disposing (void)
+{
+ maInstances.erase(mxController->getFrame());
+
+ if (mxMainWindow.is())
+ {
+ mxMainWindow->removeKeyListener(this);
+ mxMainWindow->removeFocusListener(this);
+ mxMainWindow->removeMouseListener(this);
+ mxMainWindow->removeMouseMotionListener(this);
+ mxMainWindow = NULL;
+ }
+ if (mxConfigurationController.is())
+ mxConfigurationController->removeConfigurationChangeListener(this);
+
+ Reference<XComponent> xWindowManagerComponent (
+ static_cast<XWeak*>(mpWindowManager.get()), UNO_QUERY);
+ mpWindowManager = NULL;
+ if (xWindowManagerComponent.is())
+ xWindowManagerComponent->dispose();
+
+ if (mxController.is())
+ {
+ Reference<frame::XFrame> xFrame (mxController->getFrame());
+ if (xFrame.is())
+ xFrame->removeFrameActionListener(this);
+ mxController = NULL;
+ }
+
+ mxComponentContext = NULL;
+ mxConfigurationController = NULL;
+ mxSlideShowController = NULL;
+ mxMainPaneId = NULL;
+ mpPaneContainer = NULL;
+ mnCurrentSlideIndex = -1;
+ mxCurrentSlide = NULL;
+ mxNextSlide = NULL;
+ mpCurrentPaneAnimation.reset();
+ mpTheme.reset();
+ {
+ Reference<lang::XComponent> xComponent (
+ static_cast<XWeak*>(mpPaneBorderPainter.get()), UNO_QUERY);
+ mpPaneBorderPainter = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ mpAnimator.reset();
+ mpCanvasHelper.reset();
+ {
+ Reference<lang::XComponent> xComponent (mxPresenterHelper, UNO_QUERY);
+ mxPresenterHelper = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ mpPaintManager.reset();
+ mnPendingSlideNumber = -1;
+ {
+ Reference<lang::XComponent> xComponent (mxUrlTransformer, UNO_QUERY);
+ mxUrlTransformer = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+}
+
+
+
+
+void PresenterController::UpdateCurrentSlide (const sal_Int32 nOffset)
+{
+ GetSlides(nOffset);
+ UpdatePaneTitles();
+ UpdateViews();
+
+ // Update the accessibility object.
+ if (IsAccessibilityActive())
+ {
+ sal_Int32 nSlideCount (0);
+ Reference<container::XIndexAccess> xIndexAccess(mxSlideShowController, UNO_QUERY);
+ if (xIndexAccess.is())
+ nSlideCount = xIndexAccess->getCount();
+ mpAccessibleObject->NotifyCurrentSlideChange(mnCurrentSlideIndex, nSlideCount);
+ }
+}
+
+
+
+
+void PresenterController::GetSlides (const sal_Int32 nOffset)
+{
+ if ( ! mxSlideShowController.is())
+ return;
+
+ // Get the current slide from the slide show controller.
+ mxCurrentSlide = NULL;
+ Reference<container::XIndexAccess> xIndexAccess(mxSlideShowController, UNO_QUERY);
+ sal_Int32 nSlideIndex = -1;
+ try
+ {
+ nSlideIndex = mxSlideShowController->getCurrentSlideIndex() + nOffset;
+ if (mxSlideShowController->isPaused())
+ nSlideIndex = -1;
+
+ if (xIndexAccess.is() && nSlideIndex>=0)
+ {
+ if (nSlideIndex < xIndexAccess->getCount())
+ {
+ mnCurrentSlideIndex = nSlideIndex;
+ mxCurrentSlide = Reference<drawing::XDrawPage>(
+ xIndexAccess->getByIndex(nSlideIndex), UNO_QUERY);
+ }
+ }
+ }
+ catch (RuntimeException&)
+ {
+ }
+
+ // Get the next slide.
+ mxNextSlide = NULL;
+ try
+ {
+ const sal_Int32 nNextSlideIndex (mxSlideShowController->getNextSlideIndex()+nOffset);
+ if (nNextSlideIndex >= 0)
+ {
+ if (xIndexAccess.is())
+ {
+ if (nNextSlideIndex < xIndexAccess->getCount())
+ mxNextSlide = Reference<drawing::XDrawPage>(
+ xIndexAccess->getByIndex(nNextSlideIndex), UNO_QUERY);
+ }
+ }
+ }
+ catch (RuntimeException&)
+ {
+ }
+}
+
+
+
+
+void PresenterController::UpdatePaneTitles (void)
+{
+ if ( ! mxSlideShowController.is())
+ return;
+
+ // Get placeholders and their values.
+ const OUString sCurrentSlideNumberPlaceholder (A2S("CURRENT_SLIDE_NUMBER"));
+ const OUString sCurrentSlideNamePlaceholder (A2S("CURRENT_SLIDE_NAME"));
+ const OUString sSlideCountPlaceholder (A2S("SLIDE_COUNT"));
+
+ // Get string for slide count.
+ OUString sSlideCount (A2S("---"));
+ Reference<container::XIndexAccess> xIndexAccess(mxSlideShowController, UNO_QUERY);
+ if (xIndexAccess.is())
+ sSlideCount = OUString::valueOf(xIndexAccess->getCount());
+
+ // Get string for current slide index.
+ OUString sCurrentSlideNumber (OUString::valueOf(mnCurrentSlideIndex + 1));
+
+ // Get name of the current slide.
+ OUString sCurrentSlideName;
+ Reference<container::XNamed> xNamedSlide (mxCurrentSlide, UNO_QUERY);
+ if (xNamedSlide.is())
+ sCurrentSlideName = xNamedSlide->getName();
+ Reference<beans::XPropertySet> xSlideProperties (mxCurrentSlide, UNO_QUERY);
+ if (xSlideProperties.is())
+ {
+ try
+ {
+ OUString sName;
+ if (xSlideProperties->getPropertyValue(A2S("LinkDisplayName")) >>= sName)
+ {
+ // Find out whether the name of the current slide has been
+ // automatically created or has been set by the user.
+ if (sName != sCurrentSlideName)
+ sCurrentSlideName = sName;
+ }
+ }
+ catch (beans::UnknownPropertyException&)
+ {
+ }
+ }
+
+ // Replace the placeholders with their current values.
+ PresenterPaneContainer::PaneList::const_iterator iPane;
+ for (iPane=mpPaneContainer->maPanes.begin(); iPane!=mpPaneContainer->maPanes.end(); ++iPane)
+ {
+ OSL_ASSERT((*iPane).get() != NULL);
+
+ OUString sTemplate (IsAccessibilityActive()
+ ? (*iPane)->msAccessibleTitleTemplate
+ : (*iPane)->msTitleTemplate);
+ if (sTemplate.getLength() <= 0)
+ continue;
+
+ OUStringBuffer sResult;
+ sResult.ensureCapacity(sTemplate.getLength());
+
+ sal_Int32 nIndex (0);
+ while (true)
+ {
+ sal_Int32 nStartIndex = sTemplate.indexOf('%', nIndex);
+ if (nStartIndex < 0)
+ {
+ // Add the remaining part of the string.
+ sResult.append(sTemplate.copy(nIndex, sTemplate.getLength()-nIndex));
+ break;
+ }
+ else
+ {
+ // Add the part preceding the next %.
+ sResult.append(sTemplate.copy(nIndex, nStartIndex-nIndex));
+
+ // Get the placeholder
+ ++nIndex;
+ ++nStartIndex;
+ const sal_Int32 nEndIndex (sTemplate.indexOf('%', nStartIndex+1));
+ const OUString sPlaceholder (sTemplate.copy(nStartIndex, nEndIndex-nStartIndex));
+ nIndex = nEndIndex+1;
+
+ // Replace the placeholder with its current value.
+ if (sPlaceholder == sCurrentSlideNumberPlaceholder)
+ sResult.append(sCurrentSlideNumber);
+ else if (sPlaceholder == sCurrentSlideNamePlaceholder)
+ sResult.append(sCurrentSlideName);
+ else if (sPlaceholder == sSlideCountPlaceholder)
+ sResult.append(sSlideCount);
+ }
+ }
+
+ (*iPane)->msTitle = sResult.makeStringAndClear();
+ if ((*iPane)->mxPane.is())
+ (*iPane)->mxPane->SetTitle((*iPane)->msTitle);
+ }
+}
+
+
+
+
+void PresenterController::UpdateViews (void)
+{
+ // Tell all views about the slides they should display.
+ PresenterPaneContainer::PaneList::const_iterator iPane;
+ for (iPane=mpPaneContainer->maPanes.begin(); iPane!=mpPaneContainer->maPanes.end(); ++iPane)
+ {
+ Reference<drawing::XDrawView> xDrawView ((*iPane)->mxView, UNO_QUERY);
+ if (xDrawView.is())
+ xDrawView->setCurrentPage(mxCurrentSlide);
+ }
+}
+
+
+
+
+SharedBitmapDescriptor
+ PresenterController::GetViewBackground (const ::rtl::OUString& rsViewURL) const
+{
+ if (mpTheme.get() != NULL)
+ {
+ const OUString sStyleName (mpTheme->GetStyleName(rsViewURL));
+ return mpTheme->GetBitmap(sStyleName, A2S("Background"));
+ }
+ return SharedBitmapDescriptor();
+}
+
+
+
+
+PresenterTheme::SharedFontDescriptor
+ PresenterController::GetViewFont (const ::rtl::OUString& rsViewURL) const
+{
+ if (mpTheme.get() != NULL)
+ {
+ const OUString sStyleName (mpTheme->GetStyleName(rsViewURL));
+ return mpTheme->GetFont(sStyleName);
+ }
+ return PresenterTheme::SharedFontDescriptor();
+}
+
+
+
+
+::boost::shared_ptr<PresenterTheme> PresenterController::GetTheme (void) const
+{
+ return mpTheme;
+}
+
+
+
+
+::rtl::Reference<PresenterWindowManager> PresenterController::GetWindowManager (void) const
+{
+ return mpWindowManager;
+}
+
+
+
+
+Reference<presentation::XSlideShowController>
+ PresenterController::GetSlideShowController(void) const
+{
+ return mxSlideShowController;
+}
+
+
+
+
+rtl::Reference<PresenterPaneContainer> PresenterController::GetPaneContainer (void) const
+{
+ return mpPaneContainer;
+}
+
+
+
+
+::rtl::Reference<PresenterPaneBorderPainter> PresenterController::GetPaneBorderPainter (void) const
+{
+ return mpPaneBorderPainter;
+}
+
+
+
+
+::boost::shared_ptr<PresenterAnimator> PresenterController::GetAnimator (void) const
+{
+ return mpAnimator;
+}
+
+
+
+
+::boost::shared_ptr<PresenterCanvasHelper> PresenterController::GetCanvasHelper (void) const
+{
+ return mpCanvasHelper;
+}
+
+
+
+
+Reference<drawing::XPresenterHelper> PresenterController::GetPresenterHelper (void) const
+{
+ return mxPresenterHelper;
+}
+
+
+
+
+::boost::shared_ptr<PresenterPaintManager> PresenterController::GetPaintManager (void) const
+{
+ return mpPaintManager;
+}
+
+
+
+
+void PresenterController::HideSlideSorter (void)
+{
+ if (mpCurrentPaneAnimation.get() != NULL)
+ {
+ mpCurrentPaneAnimation->HidePane();
+ mpCurrentPaneAnimation.reset();
+ }
+}
+
+
+
+
+void PresenterController::ShowView (const OUString& rsViewURL)
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindViewURL(rsViewURL));
+ if (pDescriptor.get() != NULL)
+ {
+ pDescriptor->mbIsActive = true;
+ mxConfigurationController->requestResourceActivation(
+ pDescriptor->mxPaneId,
+ ResourceActivationMode_ADD);
+ mxConfigurationController->requestResourceActivation(
+ ResourceId::createWithAnchor(
+ mxComponentContext,
+ rsViewURL,
+ pDescriptor->mxPaneId),
+ ResourceActivationMode_REPLACE);
+ }
+}
+
+
+
+
+void PresenterController::HideView (const OUString& rsViewURL)
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindViewURL(rsViewURL));
+ if (pDescriptor.get() != NULL)
+ {
+ mxConfigurationController->requestResourceDeactivation(
+ ResourceId::createWithAnchor(
+ mxComponentContext,
+ rsViewURL,
+ pDescriptor->mxPaneId));
+ }
+}
+
+
+
+
+bool PresenterController::IsViewVisible (const OUString& rsViewURL) const
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindViewURL(rsViewURL));
+ if (pDescriptor.get() != NULL)
+ {
+ return mxConfigurationController->getResource(
+ ResourceId::createWithAnchor(
+ mxComponentContext,
+ rsViewURL,
+ pDescriptor->mxPaneId)).is();
+ }
+ return false;
+}
+
+
+
+
+void PresenterController::DispatchUnoCommand (const OUString& rsCommand) const
+{
+ if ( ! mxUrlTransformer.is())
+ return;
+
+ util::URL aURL;
+ aURL.Complete = rsCommand;
+ mxUrlTransformer->parseStrict(aURL);
+
+ Reference<frame::XDispatch> xDispatch (GetDispatch(aURL));
+ if ( ! xDispatch.is())
+ return;
+
+ xDispatch->dispatch(aURL, Sequence<beans::PropertyValue>());
+}
+
+
+
+
+Reference<css::frame::XDispatch> PresenterController::GetDispatch (const util::URL& rURL) const
+{
+ if ( ! mxController.is())
+ return NULL;
+
+ Reference<frame::XDispatchProvider> xDispatchProvider (mxController->getFrame(), UNO_QUERY);
+ if ( ! xDispatchProvider.is())
+ return NULL;
+
+ return xDispatchProvider->queryDispatch(
+ rURL,
+ OUString(),
+ frame::FrameSearchFlag::SELF);
+}
+
+
+
+
+util::URL PresenterController::CreateURLFromString (const ::rtl::OUString& rsURL) const
+{
+ util::URL aURL;
+
+ if (mxUrlTransformer.is())
+ {
+ aURL.Complete = rsURL;
+ mxUrlTransformer->parseStrict(aURL);
+ }
+
+ return aURL;
+}
+
+
+
+
+Reference<drawing::framework::XConfigurationController>
+ PresenterController::GetConfigurationController (void) const
+{
+ return mxConfigurationController;
+}
+
+
+
+
+Reference<drawing::XDrawPage> PresenterController::GetCurrentSlide (void) const
+{
+ return mxCurrentSlide;
+}
+
+
+
+
+::rtl::Reference<PresenterAccessible> PresenterController::GetAccessible (void) const
+{
+ return mpAccessibleObject;
+}
+
+
+
+
+void PresenterController::SetAccessibilityActiveState (const bool bIsActive)
+{
+ if ( mbIsAccessibilityActive != bIsActive)
+ {
+ mbIsAccessibilityActive = bIsActive;
+ UpdatePaneTitles();
+ }
+}
+
+
+
+
+bool PresenterController::IsAccessibilityActive (void) const
+{
+ return mbIsAccessibilityActive;
+}
+
+
+
+
+void PresenterController::HandleMouseClick (const awt::MouseEvent& rEvent)
+{
+ if (mxSlideShowController.is())
+ {
+ switch (rEvent.Buttons)
+ {
+ case awt::MouseButton::LEFT:
+ if (rEvent.Modifiers == awt::KeyModifier::MOD2)
+ mxSlideShowController->gotoNextSlide();
+ else
+ mxSlideShowController->gotoNextEffect();
+ break;
+
+ case awt::MouseButton::RIGHT:
+ mxSlideShowController->gotoPreviousSlide();
+ break;
+
+ default:
+ // Other or multiple buttons.
+ break;
+ }
+ }
+}
+
+
+
+
+void PresenterController::RequestViews (
+ const bool bIsSlideSorterActive,
+ const bool bIsNotesViewActive,
+ const bool bIsHelpViewActive)
+{
+ PresenterPaneContainer::PaneList::const_iterator iPane;
+ PresenterPaneContainer::PaneList::const_iterator iEnd (mpPaneContainer->maPanes.end());
+ for (iPane=mpPaneContainer->maPanes.begin(); iPane!=iEnd; ++iPane)
+ {
+ bool bActivate (true);
+ const OUString sViewURL ((*iPane)->msViewURL);
+ if (sViewURL == PresenterViewFactory::msNotesViewURL)
+ {
+ bActivate = bIsNotesViewActive && !bIsSlideSorterActive && !bIsHelpViewActive;
+ }
+ else if (sViewURL == PresenterViewFactory::msSlideSorterURL)
+ {
+ bActivate = bIsSlideSorterActive;
+ }
+ else if (sViewURL == PresenterViewFactory::msCurrentSlidePreviewViewURL
+ || sViewURL == PresenterViewFactory::msNextSlidePreviewViewURL)
+ {
+ bActivate = !bIsSlideSorterActive && ! bIsHelpViewActive;
+ }
+ else if (sViewURL == PresenterViewFactory::msToolBarViewURL)
+ {
+ bActivate = true;
+ }
+ else if (sViewURL == PresenterViewFactory::msHelpViewURL)
+ {
+ bActivate = bIsHelpViewActive;
+ }
+
+ if (bActivate)
+ ShowView(sViewURL);
+ else
+ HideView(sViewURL);
+ }
+}
+
+
+
+
+//----- XConfigurationChangeListener ------------------------------------------
+
+void SAL_CALL PresenterController::notifyConfigurationChange (
+ const ConfigurationChangeEvent& rEvent)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ sal_Int32 nType (0);
+ if ( ! (rEvent.UserData >>= nType))
+ return;
+
+ switch (nType)
+ {
+ case ResourceActivationEventType:
+ if (rEvent.ResourceId->compareTo(mxMainPaneId) == 0)
+ {
+ InitializeMainPane(Reference<XPane>(rEvent.ResourceObject,UNO_QUERY));
+ }
+ else if (rEvent.ResourceId->isBoundTo(mxMainPaneId,AnchorBindingMode_DIRECT))
+ {
+ // A pane bound to the main pane has been created and is
+ // stored in the pane container.
+ Reference<XPane> xPane (rEvent.ResourceObject,UNO_QUERY);
+ if (xPane.is())
+ {
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindPaneId(xPane->getResourceId()));
+
+ // When there is a call out anchor location set then tell the
+ // window about it.
+ if (pDescriptor->mbHasCalloutAnchor)
+ pDescriptor->mxPane->SetCalloutAnchor(
+ pDescriptor->maCalloutAnchorLocation);
+ }
+ }
+ else if (rEvent.ResourceId->isBoundTo(mxMainPaneId,AnchorBindingMode_INDIRECT))
+ {
+ // A view bound to one of the panes has been created and is
+ // stored in the pane container along with its pane.
+ Reference<XView> xView (rEvent.ResourceObject,UNO_QUERY);
+ if (xView.is())
+ {
+ SharedBitmapDescriptor pViewBackground(
+ GetViewBackground(xView->getResourceId()->getResourceURL()));
+ mpPaneContainer->StoreView(xView, pViewBackground);
+ UpdateViews();
+ mpWindowManager->NotifyViewCreation(xView);
+ }
+ }
+ break;
+
+ case ResourceDeactivationEventType:
+ if (rEvent.ResourceId->isBoundTo(mxMainPaneId,AnchorBindingMode_INDIRECT))
+ {
+ // If this is a view then remove it from the pane container.
+ Reference<XView> xView (rEvent.ResourceObject,UNO_QUERY);
+ if (xView.is())
+ {
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor(
+ mpPaneContainer->RemoveView(xView));
+
+ // A possibly opaque view has been removed. Update()
+ // updates the clip polygon.
+ mpWindowManager->Update();
+ // Request the repainting of the area previously
+ // occupied by the view.
+ if (pDescriptor.get() != NULL)
+ GetPaintManager()->Invalidate(pDescriptor->mxBorderWindow);
+ }
+ }
+ break;
+
+ case ConfigurationUpdateEndEventType:
+ if (IsAccessibilityActive())
+ {
+ mpAccessibleObject->UpdateAccessibilityHierarchy();
+ UpdateCurrentSlide(0);
+ }
+ break;
+ }
+}
+
+
+
+
+//----- XEventListener --------------------------------------------------------
+
+void SAL_CALL PresenterController::disposing (
+ const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ if (rEvent.Source == mxController)
+ mxController = NULL;
+ else if (rEvent.Source == mxConfigurationController)
+ mxConfigurationController = NULL;
+ else if (rEvent.Source == mxSlideShowController)
+ mxSlideShowController = NULL;
+ else if (rEvent.Source == mxMainWindow)
+ mxMainWindow = NULL;
+}
+
+
+
+
+//----- XFrameActionListener --------------------------------------------------
+
+void SAL_CALL PresenterController::frameAction (
+ const frame::FrameActionEvent& rEvent)
+ throw (RuntimeException)
+{
+ if (rEvent.Action == frame::FrameAction_FRAME_ACTIVATED)
+ {
+ if (mxSlideShowController.is())
+ mxSlideShowController->activate();
+ }
+}
+
+
+
+
+//----- XKeyListener ----------------------------------------------------------
+
+void SAL_CALL PresenterController::keyPressed (const awt::KeyEvent& rEvent)
+ throw (RuntimeException)
+{
+ // Tell all views about the unhandled key event.
+ PresenterPaneContainer::PaneList::const_iterator iPane;
+ for (iPane=mpPaneContainer->maPanes.begin(); iPane!=mpPaneContainer->maPanes.end(); ++iPane)
+ {
+ if ( ! (*iPane)->mbIsActive)
+ continue;
+
+ Reference<awt::XKeyListener> xKeyListener ((*iPane)->mxView, UNO_QUERY);
+ if (xKeyListener.is())
+ xKeyListener->keyPressed(rEvent);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterController::keyReleased (const awt::KeyEvent& rEvent)
+ throw (RuntimeException)
+{
+ if (rEvent.Source != mxMainWindow)
+ return;
+
+ switch (rEvent.KeyCode)
+ {
+ case awt::Key::ESCAPE:
+ case awt::Key::SUBTRACT:
+ {
+ if( mxController.is() )
+ {
+ Reference< XPresentationSupplier > xPS( mxController->getModel(), UNO_QUERY );
+ if( xPS.is() )
+ {
+ Reference< XPresentation > xP( xPS->getPresentation() );
+ if( xP.is() )
+ xP->end();
+ }
+ }
+ }
+ break;
+
+ case awt::Key::PAGEDOWN:
+ if (mxSlideShowController.is())
+ {
+ if (rEvent.Modifiers == awt::KeyModifier::MOD2)
+ mxSlideShowController->gotoNextSlide();
+ else
+ mxSlideShowController->gotoNextEffect();
+ }
+ break;
+
+ case awt::Key::RIGHT:
+ case awt::Key::SPACE:
+ case awt::Key::DOWN:
+ case awt::Key::N:
+ if (mxSlideShowController.is())
+ {
+ mxSlideShowController->gotoNextEffect();
+ }
+ break;
+
+ case awt::Key::PAGEUP:
+ if (mxSlideShowController.is())
+ {
+ if (rEvent.Modifiers == awt::KeyModifier::MOD2)
+ mxSlideShowController->gotoPreviousSlide();
+ else
+ mxSlideShowController->gotoPreviousEffect();
+ }
+ break;
+
+ case awt::Key::LEFT:
+ case awt::Key::UP:
+ case awt::Key::P:
+ case awt::Key::BACKSPACE:
+ if (mxSlideShowController.is())
+ {
+ mxSlideShowController->gotoPreviousEffect();
+ }
+ break;
+
+ case awt::Key::HOME:
+ if (mxSlideShowController.is())
+ {
+ mxSlideShowController->gotoFirstSlide();
+ }
+ break;
+
+ case awt::Key::END:
+ if (mxSlideShowController.is())
+ {
+ mxSlideShowController->gotoLastSlide();
+ }
+ break;
+
+ case awt::Key::W:
+ case awt::Key::COMMA:
+ if (mxSlideShowController.is())
+ {
+ if (mxSlideShowController->isPaused())
+ mxSlideShowController->resume();
+ else
+ mxSlideShowController->blankScreen(0x00ffffff);
+ }
+ break;
+
+ case awt::Key::B:
+ case awt::Key::POINT:
+ if (mxSlideShowController.is())
+ {
+ if (mxSlideShowController->isPaused())
+ mxSlideShowController->resume();
+ else
+ mxSlideShowController->blankScreen(0x00000000);
+ }
+ break;
+
+ case awt::Key::NUM0:
+ case awt::Key::NUM1:
+ case awt::Key::NUM2:
+ case awt::Key::NUM3:
+ case awt::Key::NUM4:
+ case awt::Key::NUM5:
+ case awt::Key::NUM6:
+ case awt::Key::NUM7:
+ case awt::Key::NUM8:
+ case awt::Key::NUM9:
+ HandleNumericKeyPress(rEvent.KeyCode-awt::Key::NUM0, rEvent.Modifiers);
+ break;
+
+ case awt::Key::RETURN:
+ if (mnPendingSlideNumber > 0)
+ {
+ if (mxSlideShowController.is())
+ mxSlideShowController->gotoSlideIndex(mnPendingSlideNumber - 1);
+ mnPendingSlideNumber = -1;
+ }
+ else
+ {
+ if (mxSlideShowController.is())
+ mxSlideShowController->gotoNextEffect();
+ }
+
+ break;
+
+ case awt::Key::F1:
+ // Toggle the help view.
+ if (mpWindowManager.get() != NULL)
+ {
+ if (mpWindowManager->GetViewMode() != PresenterWindowManager::VM_Help)
+ mpWindowManager->SetViewMode(PresenterWindowManager::VM_Help);
+ else
+ mpWindowManager->SetHelpViewState(false);
+ }
+
+ break;
+
+ default:
+ // Tell all views about the unhandled key event.
+ PresenterPaneContainer::PaneList::const_iterator iPane;
+ for (iPane=mpPaneContainer->maPanes.begin(); iPane!=mpPaneContainer->maPanes.end(); ++iPane)
+ {
+ if ( ! (*iPane)->mbIsActive)
+ continue;
+
+ Reference<awt::XKeyListener> xKeyListener ((*iPane)->mxView, UNO_QUERY);
+ if (xKeyListener.is())
+ xKeyListener->keyReleased(rEvent);
+ }
+ break;
+ }
+}
+
+
+
+
+void PresenterController::HandleNumericKeyPress (
+ const sal_Int32 nKey,
+ const sal_Int32 nModifiers)
+{
+ switch (nModifiers)
+ {
+ case 0:
+ if (mnPendingSlideNumber == -1)
+ mnPendingSlideNumber = 0;
+ UpdatePendingSlideNumber(mnPendingSlideNumber * 10 + nKey);
+ break;
+
+ case awt::KeyModifier::MOD1:
+ // Ctrl-1, Ctrl-2, and Ctrl-3 are used to switch between views
+ // (slide view, notes view, normal)
+ mnPendingSlideNumber = -1;
+ if (mpWindowManager.get() == NULL)
+ return;
+ switch(nKey)
+ {
+ case 1:
+ mpWindowManager->SetViewMode(PresenterWindowManager::VM_Standard);
+ break;
+ case 2:
+ mpWindowManager->SetViewMode(PresenterWindowManager::VM_Notes);
+ break;
+ case 3:
+ mpWindowManager->SetViewMode(PresenterWindowManager::VM_SlideOverview);
+ break;
+ default:
+ // Ignore unsupported key.
+ break;
+ }
+
+ default:
+ // Ignore unsupported modifiers.
+ break;
+ }
+}
+
+
+
+
+//----- XFocusListener --------------------------------------------------------
+
+void SAL_CALL PresenterController::focusGained (const css::awt::FocusEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterController::focusLost (const css::awt::FocusEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XMouseListener --------------------------------------------------------
+
+void SAL_CALL PresenterController::mousePressed (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+ if (mxMainWindow.is())
+ mxMainWindow->setFocus();
+}
+
+
+
+
+void SAL_CALL PresenterController::mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterController::mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterController::mouseExited (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XMouseMotionListener --------------------------------------------------
+
+void SAL_CALL PresenterController::mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterController::mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterController::InitializeMainPane (const Reference<XPane>& rxPane)
+{
+ if ( ! rxPane.is())
+ return;
+
+ mpAccessibleObject = new PresenterAccessible(
+ mxComponentContext,
+ this,
+ rxPane);
+
+ LoadTheme(rxPane);
+
+ // Main pane has been created and is now observed by the window
+ // manager.
+ mpWindowManager->SetParentPane(rxPane);
+ mpWindowManager->SetTheme(mpTheme);
+
+ if (mpPaneBorderPainter.get() != NULL)
+ mpPaneBorderPainter->SetTheme(mpTheme);
+
+ // Add key listener
+ mxMainWindow = rxPane->getWindow();
+ if (mxMainWindow.is())
+ {
+ mxMainWindow->addKeyListener(this);
+ mxMainWindow->addFocusListener(this);
+ mxMainWindow->addMouseListener(this);
+ mxMainWindow->addMouseMotionListener(this);
+ }
+ Reference<XPane2> xPane2 (rxPane, UNO_QUERY);
+ if (xPane2.is())
+ xPane2->setVisible(sal_True);
+
+ mpPaintManager.reset(new PresenterPaintManager(mxMainWindow, mxPresenterHelper, mpPaneContainer));
+
+ mxCanvas = Reference<rendering::XSpriteCanvas>(rxPane->getCanvas(), UNO_QUERY);
+
+ if (mxSlideShowController.is())
+ mxSlideShowController->activate();
+
+ UpdateCurrentSlide(0);
+}
+
+
+
+
+void PresenterController::LoadTheme (const Reference<XPane>& rxPane)
+{
+ // Create (load) the current theme.
+ if (rxPane.is())
+ mpTheme.reset(new PresenterTheme(mxComponentContext, OUString(), rxPane->getCanvas()));
+}
+
+
+
+
+double PresenterController::GetSlideAspectRatio (void) const
+{
+ double nSlideAspectRatio (28.0/21.0);
+
+ try
+ {
+ if (mxController.is())
+ {
+ Reference<drawing::XDrawPagesSupplier> xSlideSupplier (
+ mxController->getModel(), UNO_QUERY_THROW);
+ Reference<drawing::XDrawPages> xSlides (xSlideSupplier->getDrawPages());
+ if (xSlides.is() && xSlides->getCount()>0)
+ {
+ Reference<beans::XPropertySet> xProperties(xSlides->getByIndex(0),UNO_QUERY_THROW);
+ sal_Int32 nWidth (28000);
+ sal_Int32 nHeight (21000);
+ if ((xProperties->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("Width"))) >>= nWidth)
+ && (xProperties->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("Height"))) >>= nHeight)
+ && nHeight > 0)
+ {
+ nSlideAspectRatio = double(nWidth) / double(nHeight);
+ }
+ }
+ }
+ }
+ catch (RuntimeException&)
+ {
+ OSL_ASSERT(false);
+ }
+
+ return nSlideAspectRatio;
+}
+
+
+
+
+void PresenterController::UpdatePendingSlideNumber (const sal_Int32 nPendingSlideNumber)
+{
+ mnPendingSlideNumber = nPendingSlideNumber;
+
+ if (mpTheme.get() == NULL)
+ return;
+
+ if ( ! mxMainWindow.is())
+ return;
+
+ PresenterTheme::SharedFontDescriptor pFont (
+ mpTheme->GetFont(A2S("PendingSlideNumberFont")));
+ if (pFont.get() == NULL)
+ return;
+
+ pFont->PrepareFont(Reference<rendering::XCanvas>(mxCanvas, UNO_QUERY));
+ if ( ! pFont->mxFont.is())
+ return;
+
+ const OUString sText (OUString::valueOf(mnPendingSlideNumber));
+ rendering::StringContext aContext (sText, 0, sText.getLength());
+ Reference<rendering::XTextLayout> xLayout (
+ pFont->mxFont->createTextLayout(
+ aContext,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT,
+ 0));
+}
+
+
+
+
+void PresenterController::ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterController object has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterController.hxx b/sdext/source/presenter/PresenterController.hxx
new file mode 100644
index 000000000000..b0fe117a47b0
--- /dev/null
+++ b/sdext/source/presenter/PresenterController.hxx
@@ -0,0 +1,270 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_CONTROLLER_HXX
+#define SDEXT_PRESENTER_CONTROLLER_HXX
+
+#include "PresenterAccessibility.hxx"
+#include "PresenterPaneContainer.hxx"
+#include "PresenterTheme.hxx"
+#include "PresenterSprite.hxx"
+#include <cppuhelper/compbase6.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/awt/XFocusListener.hpp>
+#include <com/sun/star/awt/XKeyListener.hpp>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/presentation/XSlideShowController.hpp>
+#include <com/sun/star/presentation/XSlideShowListener.hpp>
+#include <com/sun/star/frame/XFrameActionListener.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationChangeListener.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <com/sun/star/util/XURLTransformer.hpp>
+#include <rtl/ref.hxx>
+#include <map>
+#include <vector>
+#include <boost/function.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/scoped_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterAnimator;
+class PresenterCanvasHelper;
+class PresenterPaintManager;
+class PresenterPaneAnimator;
+class PresenterPaneContainer;
+class PresenterPaneBorderPainter;
+class PresenterTheme;
+class PresenterWindowManager;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper6 <
+ css::drawing::framework::XConfigurationChangeListener,
+ css::frame::XFrameActionListener,
+ css::awt::XKeyListener,
+ css::awt::XFocusListener,
+ css::awt::XMouseListener,
+ css::awt::XMouseMotionListener
+ > PresenterControllerInterfaceBase;
+}
+
+
+/** The controller of the presenter screen is responsible for telling the
+ individual views which slides to show. Additionally it provides access
+ to frequently used values of the current theme.
+*/
+class PresenterController
+ : protected ::cppu::BaseMutex,
+ public PresenterControllerInterfaceBase
+{
+public:
+ static ::rtl::Reference<PresenterController> Instance (
+ const css::uno::Reference<css::frame::XFrame>& rxFrame);
+
+ PresenterController (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const css::uno::Reference<css::presentation::XSlideShowController>& rxSlideShowController,
+ const rtl::Reference<PresenterPaneContainer>& rpPaneContainer,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxMainPaneId);
+ ~PresenterController (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ void UpdateCurrentSlide (const sal_Int32 nOffset);
+
+ SharedBitmapDescriptor
+ GetViewBackground (const ::rtl::OUString& rsViewURL) const;
+ PresenterTheme::SharedFontDescriptor
+ GetViewFont (const ::rtl::OUString& rsViewURL) const;
+ ::boost::shared_ptr<PresenterTheme> GetTheme (void) const;
+ ::rtl::Reference<PresenterWindowManager> GetWindowManager (void) const;
+ css::uno::Reference<css::presentation::XSlideShowController>
+ GetSlideShowController (void) const;
+ rtl::Reference<PresenterPaneContainer> GetPaneContainer (void) const;
+ ::rtl::Reference<PresenterPaneBorderPainter> GetPaneBorderPainter (void) const;
+ ::boost::shared_ptr<PresenterAnimator> GetAnimator (void) const;
+ ::boost::shared_ptr<PresenterCanvasHelper> GetCanvasHelper (void) const;
+ css::uno::Reference<css::drawing::XPresenterHelper> GetPresenterHelper (void) const;
+ ::boost::shared_ptr<PresenterPaintManager> GetPaintManager (void) const;
+ void HideSlideSorter (void);
+ double GetSlideAspectRatio (void) const;
+ void ShowView (const ::rtl::OUString& rsViewURL);
+ void HideView (const ::rtl::OUString& rsViewURL);
+ bool IsViewVisible (const ::rtl::OUString& rsViewURL) const;
+ void DispatchUnoCommand (const ::rtl::OUString& rsCommand) const;
+ css::uno::Reference<css::frame::XDispatch> GetDispatch (
+ const css::util::URL& rURL) const;
+ css::util::URL CreateURLFromString (const ::rtl::OUString& rsURL) const;
+ css::uno::Reference<css::drawing::framework::XConfigurationController>
+ GetConfigurationController (void) const;
+ css::uno::Reference<css::drawing::XDrawPage> GetCurrentSlide (void) const;
+ ::rtl::Reference<PresenterAccessible> GetAccessible (void) const;
+ void SetAccessibilityActiveState (const bool bIsActive);
+ bool IsAccessibilityActive (void) const;
+
+ void HandleMouseClick (const css::awt::MouseEvent& rEvent);
+ void UpdatePaneTitles (void);
+
+ /** Request activation or deactivation of (some of) the views according
+ to the given parameters.
+ */
+ void RequestViews (
+ const bool bIsSlideSorterActive,
+ const bool bIsNotesViewActive,
+ const bool bIsHelpViewActive);
+
+ // XConfigurationChangeListener
+
+ virtual void SAL_CALL notifyConfigurationChange (
+ const com::sun::star::drawing::framework::ConfigurationChangeEvent& rEvent)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+ // XEventListener
+
+ virtual void SAL_CALL disposing (
+ const com::sun::star::lang::EventObject& rEvent)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+ // XFrameActionListener
+
+ virtual void SAL_CALL frameAction (
+ const css::frame::FrameActionEvent& rEvent)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+ // XKeyListener
+
+ virtual void SAL_CALL keyPressed (const css::awt::KeyEvent& rEvent)
+ throw (css::uno::RuntimeException);
+ virtual void SAL_CALL keyReleased (const css::awt::KeyEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XFocusListener
+
+ virtual void SAL_CALL focusGained (const css::awt::FocusEvent& rEvent)
+ throw (css::uno::RuntimeException);
+ virtual void SAL_CALL focusLost (const css::awt::FocusEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseListener
+
+ virtual void SAL_CALL mousePressed (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseExited (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseMotionListener
+
+ virtual void SAL_CALL mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+private:
+ typedef ::std::map<css::uno::Reference<css::frame::XFrame>,rtl::Reference<PresenterController> > InstanceContainer;
+ static InstanceContainer maInstances;
+
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ css::uno::Reference<css::rendering::XSpriteCanvas> mxCanvas;
+ css::uno::Reference<css::frame::XController> mxController;
+ css::uno::Reference<css::drawing::framework::XConfigurationController>
+ mxConfigurationController;
+ css::uno::Reference<css::presentation::XSlideShowController> mxSlideShowController;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxMainPaneId;
+ rtl::Reference<PresenterPaneContainer> mpPaneContainer;
+ sal_Int32 mnCurrentSlideIndex;
+ css::uno::Reference<css::drawing::XDrawPage> mxCurrentSlide;
+ css::uno::Reference<css::drawing::XDrawPage> mxNextSlide;
+ ::rtl::Reference<PresenterWindowManager> mpWindowManager;
+ ::boost::shared_ptr<PresenterPaneAnimator> mpCurrentPaneAnimation;
+ sal_Int32 mnWindowBackgroundColor;
+ ::boost::shared_ptr<PresenterTheme> mpTheme;
+ css::uno::Reference<css::awt::XWindow> mxMainWindow;
+ ::rtl::Reference<PresenterPaneBorderPainter> mpPaneBorderPainter;
+ ::boost::shared_ptr<PresenterAnimator> mpAnimator;
+ ::boost::shared_ptr<PresenterCanvasHelper> mpCanvasHelper;
+ css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
+ ::boost::shared_ptr<PresenterPaintManager> mpPaintManager;
+ sal_Int32 mnPendingSlideNumber;
+ css::uno::Reference<css::util::XURLTransformer> mxUrlTransformer;
+ ::rtl::Reference<PresenterAccessible> mpAccessibleObject;
+ bool mbIsAccessibilityActive;
+
+ void InitializePresenterScreen (void);
+ void InitializeSlideShowView (const css::uno::Reference<css::uno::XInterface>& rxView);
+ void GetSlides (const sal_Int32 nOffset);
+ void UpdateViews (void);
+ void InitializeMainPane (const css::uno::Reference<css::drawing::framework::XPane>& rxPane);
+ void LoadTheme (const css::uno::Reference<css::drawing::framework::XPane>& rxPane);
+ void UpdatePendingSlideNumber (const sal_Int32 nPendingSlideNumber);
+
+ /** This method is called when the user pressed one of the numerical
+ keys. Depending on the modifier, numeric keys switch to another
+ slide (no modifier), or change to another view (Ctrl modifier).
+ @param nKey
+ Numeric value that is printed on the pressed key. For example
+ pressing the key '4' will result in the value 4, not the ASCII
+ code (0x34?).
+ @param nModifiers
+ The modifier bit field as provided by the key up event.
+ */
+ void HandleNumericKeyPress (const sal_Int32 nKey, const sal_Int32 nModifiers);
+
+ void ThrowIfDisposed (void) const throw (::com::sun::star::lang::DisposedException);
+};
+
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterCurrentSlideObserver.cxx b/sdext/source/presenter/PresenterCurrentSlideObserver.cxx
new file mode 100644
index 000000000000..90e55b219390
--- /dev/null
+++ b/sdext/source/presenter/PresenterCurrentSlideObserver.cxx
@@ -0,0 +1,157 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterCurrentSlideObserver.hxx"
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using ::rtl::OUString;
+
+namespace sdext { namespace presenter {
+
+//===== PresenterCurrentSlideObserver =========================================
+
+PresenterCurrentSlideObserver::PresenterCurrentSlideObserver (
+ const ::rtl::Reference<PresenterController>& rxPresenterController,
+ const Reference<presentation::XSlideShowController>& rxSlideShowController)
+ : PresenterCurrentSlideObserverInterfaceBase(m_aMutex),
+ mpPresenterController(rxPresenterController),
+ mxSlideShowController(rxSlideShowController)
+{
+ if( mpPresenterController.is() )
+ {
+ mpPresenterController->addEventListener(this);
+ }
+
+ if( mxSlideShowController.is() )
+ {
+ // Listen for events from the slide show controller.
+ mxSlideShowController->addSlideShowListener(static_cast<XSlideShowListener*>(this));
+ }
+}
+
+PresenterCurrentSlideObserver::~PresenterCurrentSlideObserver (void)
+{
+}
+
+void SAL_CALL PresenterCurrentSlideObserver::disposing (void)
+{
+ // Disconnect form the slide show controller.
+ if(mxSlideShowController.is())
+ {
+ mxSlideShowController->removeSlideShowListener(static_cast<XSlideShowListener*>(this));
+ mxSlideShowController = NULL;
+ }
+}
+
+//----- XSlideShowListener ----------------------------------------------------
+
+void SAL_CALL PresenterCurrentSlideObserver::beginEvent (
+ const Reference<animations::XAnimationNode>& rNode)
+ throw (css::uno::RuntimeException)
+{
+ (void)rNode;
+}
+
+void SAL_CALL PresenterCurrentSlideObserver::endEvent (
+ const Reference<animations::XAnimationNode>& rNode)
+ throw(css::uno::RuntimeException)
+{
+ (void)rNode;
+}
+
+void SAL_CALL PresenterCurrentSlideObserver::repeat (
+ const css::uno::Reference<css::animations::XAnimationNode>& rNode,
+ sal_Int32)
+ throw (com::sun::star::uno::RuntimeException)
+{
+ (void)rNode;
+}
+
+void SAL_CALL PresenterCurrentSlideObserver::paused (void)
+ throw (com::sun::star::uno::RuntimeException)
+{
+}
+
+void SAL_CALL PresenterCurrentSlideObserver::resumed (void)
+ throw (css::uno::RuntimeException)
+{
+}
+
+void SAL_CALL PresenterCurrentSlideObserver::slideEnded (sal_Bool bReverse)
+ throw (css::uno::RuntimeException)
+{
+ // Determine whether the new current slide (the one after the one that
+ // just ended) is the slide past the last slide in the presentation,
+ // i.e. the one that says something like "click to end presentation...".
+ if (mxSlideShowController.is() && !bReverse)
+ if (mxSlideShowController->getNextSlideIndex() < 0)
+ if( mpPresenterController.is() )
+ mpPresenterController->UpdateCurrentSlide(+1);
+}
+
+void SAL_CALL PresenterCurrentSlideObserver::hyperLinkClicked (const rtl::OUString &)
+ throw (css::uno::RuntimeException)
+{
+}
+
+void SAL_CALL PresenterCurrentSlideObserver::slideTransitionStarted (void)
+ throw (css::uno::RuntimeException)
+{
+ if( mpPresenterController.is() )
+ mpPresenterController->UpdateCurrentSlide(0);
+}
+
+void SAL_CALL PresenterCurrentSlideObserver::slideTransitionEnded (void)
+ throw (css::uno::RuntimeException)
+{
+}
+
+void SAL_CALL PresenterCurrentSlideObserver::slideAnimationsEnded (void)
+ throw (css::uno::RuntimeException)
+{
+}
+
+//----- XEventListener --------------------------------------------------------
+
+void SAL_CALL PresenterCurrentSlideObserver::disposing (
+ const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ if (rEvent.Source == Reference<XInterface>(static_cast<XWeak*>(mpPresenterController.get())))
+ dispose();
+ else if (rEvent.Source == mxSlideShowController)
+ mxSlideShowController = NULL;
+}
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterCurrentSlideObserver.hxx b/sdext/source/presenter/PresenterCurrentSlideObserver.hxx
new file mode 100644
index 000000000000..fc9a5fe18b7a
--- /dev/null
+++ b/sdext/source/presenter/PresenterCurrentSlideObserver.hxx
@@ -0,0 +1,98 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_CURRENT_SLIDE_OBSERVER
+#define SDEXT_PRESENTER_CURRENT_SLIDE_OBSERVER
+
+#include "PresenterController.hxx"
+#include <com/sun/star/presentation/XSlideShow.hpp>
+#include <com/sun/star/presentation/XSlideShowController.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <rtl/ref.hxx>
+#include <salhelper/timer.hxx>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper1 <
+ css::presentation::XSlideShowListener
+ > PresenterCurrentSlideObserverInterfaceBase;
+}
+
+/** Check periodically the slide show controller and the
+ frame::XController whether the current slide has changed. If so,
+ then inform the presenter controller about it.
+
+ Objects of this class have their own lifetime control and destroy
+ themselves when the presenter controller is diposed.
+*/
+class PresenterCurrentSlideObserver
+ : protected ::cppu::BaseMutex,
+ public PresenterCurrentSlideObserverInterfaceBase
+{
+public:
+ PresenterCurrentSlideObserver (
+ const ::rtl::Reference<PresenterController>& rxPresenterController,
+ const css::uno::Reference<css::presentation::XSlideShowController>& rxSlideShowController);
+ virtual ~PresenterCurrentSlideObserver (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ // XSlideShowListener
+ virtual void SAL_CALL paused( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL resumed( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL slideTransitionStarted( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL slideTransitionEnded( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL slideAnimationsEnded( ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL slideEnded(sal_Bool bReverse) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL hyperLinkClicked( const ::rtl::OUString& hyperLink ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XAnimationListener
+ virtual void SAL_CALL beginEvent( const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& Node ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL endEvent( const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& Node ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL repeat( const ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode >& Node, ::sal_Int32 Repeat ) throw (::com::sun::star::uno::RuntimeException);
+
+ // XEventListener
+ virtual void SAL_CALL disposing (
+ const com::sun::star::lang::EventObject& rEvent)
+ throw (com::sun::star::uno::RuntimeException);
+
+private:
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::presentation::XSlideShowController> mxSlideShowController;
+};
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterExtensionIdentifier.txx b/sdext/source/presenter/PresenterExtensionIdentifier.txx
new file mode 100644
index 000000000000..e505fd092bba
--- /dev/null
+++ b/sdext/source/presenter/PresenterExtensionIdentifier.txx
@@ -0,0 +1,41 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_EXTENSION_IDENTIFIER_HXX
+#define SDEXT_PRESENTER_EXTENSION_IDENTIFIER_HXX
+
+namespace sdext { namespace presenter {
+
+/** The UPDATE_IDENTIFIER part of the string below is replaced by the
+ makefile.mk with the actual, platform specific, extension identifier.
+*/
+const ::rtl::OUString PresenterComponent::gsExtensionIdentifier(
+ RTL_CONSTASCII_USTRINGPARAM("com.sun.PresenterScreen-UPDATED_PLATFORM"));
+
+} }
+
+#endif
diff --git a/sdext/source/presenter/PresenterFrameworkObserver.cxx b/sdext/source/presenter/PresenterFrameworkObserver.cxx
new file mode 100644
index 000000000000..3142d7606fb2
--- /dev/null
+++ b/sdext/source/presenter/PresenterFrameworkObserver.cxx
@@ -0,0 +1,216 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterFrameworkObserver.hxx"
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <boost/bind.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace sdext { namespace presenter {
+
+PresenterFrameworkObserver::PresenterFrameworkObserver (
+ const css::uno::Reference<css::drawing::framework::XConfigurationController>&rxController,
+ const OUString& rsEventName,
+ const Predicate& rPredicate,
+ const Action& rAction)
+ : PresenterFrameworkObserverInterfaceBase(m_aMutex),
+ mxConfigurationController(rxController),
+ maPredicate(rPredicate),
+ maAction(rAction)
+{
+ if ( ! mxConfigurationController.is())
+ throw lang::IllegalArgumentException();
+
+ if (mxConfigurationController->hasPendingRequests())
+ {
+ if (rsEventName.getLength() > 0)
+ {
+ mxConfigurationController->addConfigurationChangeListener(
+ this,
+ rsEventName,
+ Any());
+ }
+ mxConfigurationController->addConfigurationChangeListener(
+ this,
+ A2S("ConfigurationUpdateEnd"),
+ Any());
+ }
+ else
+ {
+ rAction(maPredicate());
+ }
+}
+
+
+
+
+PresenterFrameworkObserver::~PresenterFrameworkObserver (void)
+{
+}
+
+
+
+
+void PresenterFrameworkObserver::RunOnResourceActivation (
+ const css::uno::Reference<css::drawing::framework::XConfigurationController>&rxController,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxResourceId,
+ const Action& rAction)
+{
+ new PresenterFrameworkObserver(
+ rxController,
+ A2S("ResourceActivation"),
+ ::boost::bind(&PresenterFrameworkObserver::HasResource, rxController, rxResourceId),
+ rAction);
+}
+
+
+
+
+void PresenterFrameworkObserver::RunOnUpdateEnd (
+ const css::uno::Reference<css::drawing::framework::XConfigurationController>&rxController,
+ const Action& rAction)
+{
+ new PresenterFrameworkObserver(
+ rxController,
+ OUString(),
+ &PresenterFrameworkObserver::True,
+ rAction);
+}
+
+
+
+
+bool PresenterFrameworkObserver::HasResource (
+ const css::uno::Reference<css::drawing::framework::XConfigurationController>&rxController,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxResourceId)
+{
+ return rxController.is() && rxController->getResource(rxResourceId).is();
+}
+
+
+
+
+bool PresenterFrameworkObserver::True (void)
+{
+ return true;
+}
+
+
+
+
+bool PresenterFrameworkObserver::False (void)
+{
+ return false;
+}
+
+
+
+
+void SAL_CALL PresenterFrameworkObserver::disposing (void)
+{
+ if ( ! maAction.empty())
+ maAction(false);
+ Shutdown();
+}
+
+
+
+
+void PresenterFrameworkObserver::Shutdown (void)
+{
+ maAction = Action();
+ maPredicate = Predicate();
+
+ if (mxConfigurationController != NULL)
+ {
+ mxConfigurationController->removeConfigurationChangeListener(this);
+ mxConfigurationController = NULL;
+ }
+}
+
+
+
+
+void SAL_CALL PresenterFrameworkObserver::disposing (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ if ( ! rEvent.Source.is())
+ return;
+
+ if (rEvent.Source == mxConfigurationController)
+ {
+ mxConfigurationController = NULL;
+ if ( ! maAction.empty())
+ maAction(false);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterFrameworkObserver::notifyConfigurationChange (
+ const ConfigurationChangeEvent& rEvent)
+ throw (RuntimeException)
+{
+ bool bDispose(false);
+
+ Action aAction (maAction);
+ Predicate aPredicate (maPredicate);
+ if (rEvent.Type.equals(A2S("ConfigurationUpdateEnd")))
+ {
+ Shutdown();
+ aAction(aPredicate);
+ bDispose = true;
+ }
+ else if (aPredicate())
+ {
+ Shutdown();
+ aAction(true);
+ bDispose = true;
+ }
+
+ if (bDispose)
+ {
+ maAction.clear();
+ dispose();
+ }
+}
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterFrameworkObserver.hxx b/sdext/source/presenter/PresenterFrameworkObserver.hxx
new file mode 100644
index 000000000000..422055830d6e
--- /dev/null
+++ b/sdext/source/presenter/PresenterFrameworkObserver.hxx
@@ -0,0 +1,133 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_FRAMEWORK_OBSERVER_HXX
+#define SDEXT_PRESENTER_PRESENTER_FRAMEWORK_OBSERVER_HXX
+
+#include <com/sun/star/drawing/framework/XConfigurationChangeListener.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase1.hxx>
+#include <boost/function.hpp>
+#include <boost/noncopyable.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+
+typedef ::cppu::WeakComponentImplHelper1 <
+ ::com::sun::star::drawing::framework::XConfigurationChangeListener
+ > PresenterFrameworkObserverInterfaceBase;
+
+/** Watch the drawing framework for changes and run callbacks when a certain
+ change takes place.
+*/
+class PresenterFrameworkObserver
+ : private ::boost::noncopyable,
+ private ::cppu::BaseMutex,
+ public PresenterFrameworkObserverInterfaceBase
+{
+public:
+ typedef ::boost::function<bool(void)> Predicate;
+ typedef ::boost::function<void(bool)> Action;
+
+ /** Register an action callback to be run when the specified resource is
+ activated. The action may be called synchronously when the resource
+ is already active or asynchronously when the resource is actived in
+ the future.
+ @param rxController
+ The controller gives access to the drawing framework.
+ @param rxResourceId
+ The id of the resource to watch for activation.
+ @param rAction
+ The callback that is called when the resource is activated.
+ */
+ static void RunOnResourceActivation (
+ const css::uno::Reference<css::drawing::framework::XConfigurationController>&rxController,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxResourceId,
+ const Action& rAction);
+ static void RunOnUpdateEnd (
+ const css::uno::Reference<css::drawing::framework::XConfigurationController>&rxController,
+ const Action& rAction);
+
+ virtual void SAL_CALL disposing (void);
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+ virtual void SAL_CALL notifyConfigurationChange (
+ const css::drawing::framework::ConfigurationChangeEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+private:
+ ::rtl::OUString msEventType;
+ ::css::uno::Reference<css::drawing::framework::XConfigurationController> mxConfigurationController;
+ Predicate maPredicate;
+ Action maAction;
+
+ /** Create a new PresenterFrameworkObserver object.
+ @param rsEventName
+ An event name other than ConfigurationUpdateEnd. When the
+ observer shall only listen for ConfigurationUpdateEnd then pass
+ an empty name.
+ @param rPredicate
+ This functor tests whether the action is to be executed or not.
+ @param rAction
+ The functor to execute when the predicate returns true,
+ e.g. when some resource has been created.
+ */
+ PresenterFrameworkObserver (
+ const css::uno::Reference<css::drawing::framework::XConfigurationController>&rxController,
+ const ::rtl::OUString& rsEventName,
+ const Predicate& rPredicate,
+ const Action& rAction);
+ virtual ~PresenterFrameworkObserver (void);
+
+ void Shutdown (void);
+
+ /** Predicate that returns true when the specified resource is active
+ with respect to the given configuration controller.
+ */
+ static bool HasResource (
+ const css::uno::Reference<css::drawing::framework::XConfigurationController>&rxController,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxResourceId);
+
+ /** Predicate that always returns true.
+ */
+ static bool True (void);
+
+ /** Predicate that always returns false.
+ */
+ static bool False (void);
+};
+
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterGeometryHelper.cxx b/sdext/source/presenter/PresenterGeometryHelper.cxx
new file mode 100644
index 000000000000..2fdc0ea004ea
--- /dev/null
+++ b/sdext/source/presenter/PresenterGeometryHelper.cxx
@@ -0,0 +1,337 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterGeometryHelper.hxx"
+
+#include <math.h>
+#include <algorithm>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+namespace {
+
+sal_Int32 Right (const awt::Rectangle& rBox)
+{
+ return rBox.X + rBox.Width - 1;
+}
+
+sal_Int32 Bottom (const awt::Rectangle& rBox)
+{
+ return rBox.Y + rBox.Height - 1;
+}
+
+sal_Int32 Width (const sal_Int32 nLeft, const sal_Int32 nRight)
+{
+ return nRight - nLeft + 1;
+}
+
+sal_Int32 Height (const sal_Int32 nTop, const sal_Int32 nBottom)
+{
+ return nBottom - nTop + 1;
+}
+
+
+} // end of anonymous namespace
+
+
+
+namespace sdext { namespace presenter {
+
+sal_Int32 PresenterGeometryHelper::Floor (const double nValue)
+{
+ return sal::static_int_cast<sal_Int32>(floor(nValue));
+}
+
+
+
+
+sal_Int32 PresenterGeometryHelper::Ceil (const double nValue)
+{
+ return sal::static_int_cast<sal_Int32>(ceil(nValue));
+}
+
+
+
+
+sal_Int32 PresenterGeometryHelper::Round (const double nValue)
+{
+ return sal::static_int_cast<sal_Int32>(floor(0.5 + nValue));
+}
+
+
+
+
+awt::Rectangle PresenterGeometryHelper::ConvertRectangle (
+ const geometry::RealRectangle2D& rBox)
+{
+ const sal_Int32 nLeft (Floor(rBox.X1));
+ const sal_Int32 nTop (Floor(rBox.Y1));
+ const sal_Int32 nRight (Ceil(rBox.X2));
+ const sal_Int32 nBottom (Ceil(rBox.Y2));
+ return awt::Rectangle (nLeft,nTop,nRight-nLeft,nBottom-nTop);
+}
+
+
+
+
+awt::Rectangle PresenterGeometryHelper::ConvertRectangleWithConstantSize (
+ const geometry::RealRectangle2D& rBox)
+{
+ return awt::Rectangle (
+ Round(rBox.X1),
+ Round(rBox.Y1),
+ Round(rBox.X2 - rBox.X1),
+ Round(rBox.Y2 - rBox.Y1));
+}
+
+
+
+
+geometry::RealRectangle2D PresenterGeometryHelper::ConvertRectangle (
+ const css::awt::Rectangle& rBox)
+{
+ return geometry::RealRectangle2D(
+ rBox.X,
+ rBox.Y,
+ rBox.X + rBox.Width,
+ rBox.Y + rBox.Height);
+}
+
+
+
+
+awt::Rectangle PresenterGeometryHelper::TranslateRectangle (
+ const css::awt::Rectangle& rBox,
+ const sal_Int32 nXOffset,
+ const sal_Int32 nYOffset)
+{
+ return awt::Rectangle(rBox.X + nXOffset, rBox.Y + nYOffset, rBox.Width, rBox.Height);
+}
+
+
+
+
+awt::Rectangle PresenterGeometryHelper::Intersection (
+ const css::awt::Rectangle& rBox1,
+ const css::awt::Rectangle& rBox2)
+{
+ const sal_Int32 nLeft (::std::max(rBox1.X, rBox2.X));
+ const sal_Int32 nTop (::std::max(rBox1.Y, rBox2.Y));
+ const sal_Int32 nRight (::std::min(Right(rBox1), Right(rBox2)));
+ const sal_Int32 nBottom (::std::min(Bottom(rBox1), Bottom(rBox2)));
+ if (nLeft >= nRight || nTop >= nBottom)
+ return awt::Rectangle();
+ else
+ return awt::Rectangle(nLeft,nTop, Width(nLeft,nRight), Height(nTop,nBottom));
+}
+
+
+
+
+geometry::RealRectangle2D PresenterGeometryHelper::Intersection (
+ const geometry::RealRectangle2D& rBox1,
+ const geometry::RealRectangle2D& rBox2)
+{
+ const double nLeft (::std::max(rBox1.X1, rBox2.X1));
+ const double nTop (::std::max(rBox1.Y1, rBox2.Y1));
+ const double nRight (::std::min(rBox1.X2, rBox2.X2));
+ const double nBottom (::std::min(rBox1.Y2, rBox2.Y2));
+ if (nLeft >= nRight || nTop >= nBottom)
+ return geometry::RealRectangle2D(0,0,0,0);
+ else
+ return geometry::RealRectangle2D(nLeft,nTop, nRight, nBottom);
+}
+
+
+
+
+bool PresenterGeometryHelper::IsInside (
+ const css::geometry::RealRectangle2D& rBox,
+ const css::geometry::RealPoint2D& rPoint)
+{
+ return rBox.X1 <= rPoint.X
+ && rBox.Y1 <= rPoint.Y
+ && rBox.X2 >= rPoint.X
+ && rBox.Y2 >= rPoint.Y;
+}
+
+
+
+
+bool PresenterGeometryHelper::IsInside (
+ const css::awt::Rectangle& rBox1,
+ const css::awt::Rectangle& rBox2)
+{
+ return rBox1.X >= rBox2.X
+ && rBox1.Y >= rBox2.Y
+ && rBox1.X+rBox1.Width <= rBox2.X+rBox2.Width
+ && rBox1.Y+rBox1.Height <= rBox2.Y+rBox2.Height;
+}
+
+
+
+
+awt::Rectangle PresenterGeometryHelper::Union (
+ const css::awt::Rectangle& rBox1,
+ const css::awt::Rectangle& rBox2)
+{
+ if (rBox1.Width<=0 || rBox1.Height<=0)
+ return rBox2;
+ else if (rBox2.Width<=0 || rBox2.Height<=0)
+ return rBox1;
+
+ const sal_Int32 nLeft (::std::min(rBox1.X, rBox2.X));
+ const sal_Int32 nTop (::std::min(rBox1.Y, rBox2.Y));
+ const sal_Int32 nRight (::std::max(Right(rBox1), Right(rBox2)));
+ const sal_Int32 nBottom (::std::max(Bottom(rBox1), Bottom(rBox2)));
+ if (nLeft >= nRight || nTop >= nBottom)
+ return awt::Rectangle();
+ else
+ return awt::Rectangle(nLeft,nTop, Width(nLeft,nRight), Height(nTop,nBottom));
+}
+
+
+
+
+geometry::RealRectangle2D PresenterGeometryHelper::Union (
+ const geometry::RealRectangle2D& rBox1,
+ const geometry::RealRectangle2D& rBox2)
+{
+ const double nLeft (::std::min(rBox1.X1, rBox2.X1));
+ const double nTop (::std::min(rBox1.Y1, rBox2.Y1));
+ const double nRight (::std::max(rBox1.X2, rBox2.X2));
+ const double nBottom (::std::max(rBox1.Y2, rBox2.Y2));
+ if (nLeft >= nRight || nTop >= nBottom)
+ return geometry::RealRectangle2D(0,0,0,0);
+ else
+ return geometry::RealRectangle2D(nLeft,nTop, nRight, nBottom);
+}
+
+
+
+
+bool PresenterGeometryHelper::AreRectanglesDisjoint (
+ const css::awt::Rectangle& rBox1,
+ const css::awt::Rectangle& rBox2)
+{
+ return rBox1.X+rBox1.Width <= rBox2.X
+ || rBox1.Y+rBox1.Height <= rBox2.Y
+ || rBox1.X >= rBox2.X+rBox2.Width
+ || rBox1.Y >= rBox2.Y+rBox2.Height;
+}
+
+
+
+
+Reference<rendering::XPolyPolygon2D> PresenterGeometryHelper::CreatePolygon(
+ const awt::Rectangle& rBox,
+ const Reference<rendering::XGraphicDevice>& rxDevice)
+{
+ if ( ! rxDevice.is())
+ return NULL;
+
+ Sequence<Sequence<geometry::RealPoint2D> > aPoints(1);
+ aPoints[0] = Sequence<geometry::RealPoint2D>(4);
+ aPoints[0][0] = geometry::RealPoint2D(rBox.X, rBox.Y);
+ aPoints[0][1] = geometry::RealPoint2D(rBox.X, rBox.Y+rBox.Height);
+ aPoints[0][2] = geometry::RealPoint2D(rBox.X+rBox.Width, rBox.Y+rBox.Height);
+ aPoints[0][3] = geometry::RealPoint2D(rBox.X+rBox.Width, rBox.Y);
+ Reference<rendering::XLinePolyPolygon2D> xPolygon (
+ rxDevice->createCompatibleLinePolyPolygon(aPoints));
+ Reference<rendering::XPolyPolygon2D> xRectangle (xPolygon, UNO_QUERY);
+ if (xRectangle.is())
+ xRectangle->setClosed(0, sal_True);
+
+ return xRectangle;
+}
+
+
+
+
+Reference<rendering::XPolyPolygon2D> PresenterGeometryHelper::CreatePolygon(
+ const geometry::RealRectangle2D& rBox,
+ const Reference<rendering::XGraphicDevice>& rxDevice)
+{
+ if ( ! rxDevice.is())
+ return NULL;
+
+ Sequence<Sequence<geometry::RealPoint2D> > aPoints(1);
+ aPoints[0] = Sequence<geometry::RealPoint2D>(4);
+ aPoints[0][0] = geometry::RealPoint2D(rBox.X1, rBox.Y1);
+ aPoints[0][1] = geometry::RealPoint2D(rBox.X1, rBox.Y2);
+ aPoints[0][2] = geometry::RealPoint2D(rBox.X2, rBox.Y2);
+ aPoints[0][3] = geometry::RealPoint2D(rBox.X2, rBox.Y1);
+ Reference<rendering::XLinePolyPolygon2D> xPolygon (
+ rxDevice->createCompatibleLinePolyPolygon(aPoints));
+ Reference<rendering::XPolyPolygon2D> xRectangle (xPolygon, UNO_QUERY);
+ if (xRectangle.is())
+ xRectangle->setClosed(0, sal_True);
+
+ return xRectangle;
+}
+
+
+
+
+Reference<rendering::XPolyPolygon2D> PresenterGeometryHelper::CreatePolygon(
+ const ::std::vector<css::awt::Rectangle>& rBoxes,
+ const Reference<rendering::XGraphicDevice>& rxDevice)
+{
+ if ( ! rxDevice.is())
+ return NULL;
+
+ const sal_Int32 nCount (rBoxes.size());
+ Sequence<Sequence<geometry::RealPoint2D> > aPoints(nCount);
+ for (sal_Int32 nIndex=0; nIndex<nCount; ++nIndex)
+ {
+ const awt::Rectangle& rBox (rBoxes[nIndex]);
+ aPoints[nIndex] = Sequence<geometry::RealPoint2D>(4);
+ aPoints[nIndex][0] = geometry::RealPoint2D(rBox.X, rBox.Y);
+ aPoints[nIndex][1] = geometry::RealPoint2D(rBox.X, rBox.Y+rBox.Height);
+ aPoints[nIndex][2] = geometry::RealPoint2D(rBox.X+rBox.Width, rBox.Y+rBox.Height);
+ aPoints[nIndex][3] = geometry::RealPoint2D(rBox.X+rBox.Width, rBox.Y);
+ }
+
+ Reference<rendering::XLinePolyPolygon2D> xPolygon (
+ rxDevice->createCompatibleLinePolyPolygon(aPoints));
+ Reference<rendering::XPolyPolygon2D> xRectangle (xPolygon, UNO_QUERY);
+ if (xRectangle.is())
+ for (sal_Int32 nIndex=0; nIndex<nCount; ++nIndex)
+ xRectangle->setClosed(nIndex, sal_True);
+
+ return xRectangle;
+}
+
+
+} }
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterGeometryHelper.hxx b/sdext/source/presenter/PresenterGeometryHelper.hxx
new file mode 100644
index 000000000000..b5901a68fd8d
--- /dev/null
+++ b/sdext/source/presenter/PresenterGeometryHelper.hxx
@@ -0,0 +1,134 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_GEOMETRY_HELPER_HXX
+#define SDEXT_PRESENTER_PRESENTER_GEOMETRY_HELPER_HXX
+
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/rendering/XGraphicDevice.hpp>
+#include <com/sun/star/rendering/XPolyPolygon2D.hpp>
+#include <com/sun/star/geometry/RealRectangle2D.hpp>
+#include <vector>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+/** Collection of geometry related convenience functions.
+*/
+class PresenterGeometryHelper
+{
+public:
+ static sal_Int32 Round (const double nValue);
+ static sal_Int32 Floor (const double nValue);
+ static sal_Int32 Ceil (const double nValue);
+
+ /** Return the bounding box with integer coordinates of the given
+ rectangle. Note that due to different rounding of the left/top and
+ the right/bottom border the width of the resulting rectangle may
+ differ for different positions but constant width and height.
+ */
+ static css::awt::Rectangle ConvertRectangle (
+ const css::geometry::RealRectangle2D& rBox);
+
+ /** Convert the given rectangle to integer coordinates so that width and
+ height remain constant when only the position changes.
+ */
+ static css::awt::Rectangle ConvertRectangleWithConstantSize (
+ const css::geometry::RealRectangle2D& rBox);
+
+ static css::geometry::RealRectangle2D ConvertRectangle (
+ const css::awt::Rectangle& rBox);
+
+ // static css::awt::Size ConvertSize (
+ // const css::geometry::RealSize2D& rSize);
+
+ static css::awt::Rectangle TranslateRectangle (
+ const css::awt::Rectangle& rBox,
+ const sal_Int32 nXOffset,
+ const sal_Int32 nYOffset);
+
+ static css::awt::Rectangle Intersection (
+ const css::awt::Rectangle& rBox1,
+ const css::awt::Rectangle& rBox2);
+
+ static css::geometry::RealRectangle2D Intersection (
+ const css::geometry::RealRectangle2D& rBox1,
+ const css::geometry::RealRectangle2D& rBox2);
+
+ static bool IsInside (
+ const css::geometry::RealRectangle2D& rBox,
+ const css::geometry::RealPoint2D& rPoint);
+
+ /** Return whether rBox1 is completly inside rBox2.
+ */
+ static bool IsInside (
+ const css::awt::Rectangle& rBox1,
+ const css::awt::Rectangle& rBox2);
+
+ static css::awt::Rectangle Union (
+ const css::awt::Rectangle& rBox1,
+ const css::awt::Rectangle& rBox2);
+
+ static css::geometry::RealRectangle2D Union (
+ const css::geometry::RealRectangle2D& rBox1,
+ const css::geometry::RealRectangle2D& rBox2);
+
+ static bool AreRectanglesDisjoint (
+ const css::awt::Rectangle& rBox1,
+ const css::awt::Rectangle& rBox2);
+
+ static css::uno::Reference<css::rendering::XPolyPolygon2D> CreatePolygon(
+ const css::awt::Rectangle& rBox,
+ const css::uno::Reference<css::rendering::XGraphicDevice>& rxDevice);
+
+ static css::uno::Reference<css::rendering::XPolyPolygon2D> CreatePolygon(
+ const css::geometry::RealRectangle2D& rBox,
+ const css::uno::Reference<css::rendering::XGraphicDevice>& rxDevice);
+
+ static css::uno::Reference<css::rendering::XPolyPolygon2D> CreatePolygon(
+ const ::std::vector<css::awt::Rectangle>& rBoxes,
+ const css::uno::Reference<css::rendering::XGraphicDevice>& rxDevice);
+
+ /** Create a polygon for a rounded rectangle.
+ */
+ /* static css::uno::Reference<css::rendering::XPolyPolygon2D> CreatePolygon(
+ const css::awt::Rectangle& rBox,
+ const double nRadius,
+ const css::uno::Reference<css::rendering::XGraphicDevice>&
+ rxDevice);
+ */
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterHelpView.cxx b/sdext/source/presenter/PresenterHelpView.cxx
new file mode 100644
index 000000000000..d8e3a6c0ac5c
--- /dev/null
+++ b/sdext/source/presenter/PresenterHelpView.cxx
@@ -0,0 +1,825 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterHelpView.hxx"
+#include "PresenterButton.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterHelper.hxx"
+#include "PresenterWindowManager.hxx"
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <algorithm>
+#include <vector>
+#include <boost/bind.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+using ::std::vector;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+
+namespace sdext { namespace presenter {
+
+namespace {
+ const static sal_Int32 gnHorizontalGap (20);
+ const static sal_Int32 gnVerticalBorder (30);
+ const static sal_Int32 gnVerticalButtonPadding (12);
+
+ class LineDescriptor
+ {
+ public:
+ LineDescriptor(void);
+ void AddPart (
+ const OUString& rsLine,
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont);
+ bool IsEmpty (void) const;
+
+ OUString msLine;
+ geometry::RealSize2D maSize;
+ double mnVerticalOffset;
+
+ void CalculateSize (const css::uno::Reference<css::rendering::XCanvasFont>& rxFont);
+ };
+
+ class LineDescriptorList
+ {
+ public:
+ LineDescriptorList (
+ const OUString& rsText,
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const sal_Int32 nMaximalWidth);
+
+ void Update (
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const sal_Int32 nMaximalWidth);
+
+ double Paint(
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const geometry::RealRectangle2D& rBBox,
+ const bool bFlushLeft,
+ const rendering::ViewState& rViewState,
+ rendering::RenderState& rRenderState,
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont) const;
+ double GetHeight (void) const;
+
+ private:
+ const OUString msText;
+ ::boost::shared_ptr<vector<LineDescriptor> > mpLineDescriptors;
+
+ void SplitText (const ::rtl::OUString& rsText, vector<rtl::OUString>& rTextParts);
+ void FormatText (
+ const vector<rtl::OUString>& rTextParts,
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const sal_Int32 nMaximalWidth);
+ };
+
+ class Block
+ {
+ public:
+ Block (const Block& rBlock);
+ Block (
+ const OUString& rsLeftText,
+ const OUString& rsRightText,
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const sal_Int32 nMaximalWidth);
+ void Update (
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const sal_Int32 nMaximalWidth);
+
+ LineDescriptorList maLeft;
+ LineDescriptorList maRight;
+ };
+} // end of anonymous namespace
+
+class PresenterHelpView::TextContainer : public vector<boost::shared_ptr<Block> >
+{
+};
+
+
+PresenterHelpView::PresenterHelpView (
+ const Reference<uno::XComponentContext>& rxContext,
+ const Reference<XResourceId>& rxViewId,
+ const Reference<frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterHelpViewInterfaceBase(m_aMutex),
+ mxComponentContext(rxContext),
+ mxViewId(rxViewId),
+ mxPane(),
+ mxWindow(),
+ mxCanvas(),
+ mpPresenterController(rpPresenterController),
+ mpFont(),
+ mpTextContainer(),
+ mpCloseButton(),
+ mnSeparatorY(0),
+ mnMaximalWidth(0)
+{
+ try
+ {
+ // Get the content window via the pane anchor.
+ Reference<XControllerManager> xCM (rxController, UNO_QUERY_THROW);
+ Reference<XConfigurationController> xCC (
+ xCM->getConfigurationController(), UNO_QUERY_THROW);
+ mxPane = Reference<XPane>(xCC->getResource(rxViewId->getAnchor()), UNO_QUERY_THROW);
+
+ mxWindow = mxPane->getWindow();
+ ProvideCanvas();
+
+ mxWindow->addWindowListener(this);
+ mxWindow->addPaintListener(this);
+ Reference<awt::XWindowPeer> xPeer (mxWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->setBackground(util::Color(0xff000000));
+ mxWindow->setVisible(sal_True);
+
+ if (mpPresenterController.is())
+ {
+ mpFont = mpPresenterController->GetViewFont(mxViewId->getResourceURL());
+ if (mpFont.get() != NULL)
+ {
+ mpFont->PrepareFont(mxCanvas);
+ }
+ }
+
+ // Create the close button.
+ mpCloseButton = PresenterButton::Create(
+ mxComponentContext,
+ mpPresenterController,
+ mpPresenterController->GetTheme(),
+ mxWindow,
+ mxCanvas,
+ A2S("HelpViewCloser"));
+
+ ReadHelpStrings();
+ Resize();
+ }
+ catch (RuntimeException&)
+ {
+ mxViewId = NULL;
+ mxWindow = NULL;
+ throw;
+ }
+}
+
+
+
+
+PresenterHelpView::~PresenterHelpView (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterHelpView::disposing (void)
+{
+ mxViewId = NULL;
+
+ if (mpCloseButton.is())
+ {
+ Reference<lang::XComponent> xComponent (
+ static_cast<XWeak*>(mpCloseButton.get()), UNO_QUERY);
+ mpCloseButton = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ if (mxWindow.is())
+ {
+ mxWindow->removeWindowListener(this);
+ mxWindow->removePaintListener(this);
+ }
+}
+
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL PresenterHelpView::disposing (const lang::EventObject& rEventObject)
+ throw (RuntimeException)
+{
+ if (rEventObject.Source == mxCanvas)
+ {
+ mxCanvas = NULL;
+ }
+ else if (rEventObject.Source == mxWindow)
+ {
+ mxWindow = NULL;
+ dispose();
+ }
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterHelpView::windowResized (const awt::WindowEvent& rEvent)
+ throw (uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+ Resize();
+}
+
+
+
+
+void SAL_CALL PresenterHelpView::windowMoved (const awt::WindowEvent& rEvent)
+ throw (uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+void SAL_CALL PresenterHelpView::windowShown (const lang::EventObject& rEvent)
+ throw (uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+ Resize();
+}
+
+
+
+
+void SAL_CALL PresenterHelpView::windowHidden (const lang::EventObject& rEvent)
+ throw (uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterHelpView::windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ Paint(rEvent.UpdateRect);
+}
+
+
+
+
+void PresenterHelpView::Paint (const awt::Rectangle& rUpdateBox)
+{
+ ProvideCanvas();
+ if ( ! mxCanvas.is())
+ return;
+
+ // Clear background.
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ mpPresenterController->GetCanvasHelper()->Paint(
+ mpPresenterController->GetViewBackground(mxViewId->getResourceURL()),
+ Reference<rendering::XCanvas>(mxCanvas, UNO_QUERY),
+ rUpdateBox,
+ awt::Rectangle(0,0,aWindowBox.Width,aWindowBox.Height),
+ awt::Rectangle());
+
+ // Paint vertical divider.
+
+ rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ PresenterGeometryHelper::CreatePolygon(rUpdateBox, mxCanvas->getDevice()));
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, mpFont->mnColor);
+
+ mxCanvas->drawLine(
+ geometry::RealPoint2D(aWindowBox.Width/2, gnVerticalBorder),
+ geometry::RealPoint2D(aWindowBox.Width/2, mnSeparatorY - gnVerticalBorder),
+ aViewState,
+ aRenderState);
+
+ // Paint the horizontal separator.
+ mxCanvas->drawLine(
+ geometry::RealPoint2D(0, mnSeparatorY),
+ geometry::RealPoint2D(aWindowBox.Width, mnSeparatorY),
+ aViewState,
+ aRenderState);
+
+ // Paint text.
+ double nY (gnVerticalBorder);
+ TextContainer::const_iterator iBlock (mpTextContainer->begin());
+ TextContainer::const_iterator iBlockEnd (mpTextContainer->end());
+ for ( ; iBlock!=iBlockEnd; ++iBlock)
+ {
+ const double nLeftHeight (
+ (*iBlock)->maLeft.Paint(mxCanvas,
+ geometry::RealRectangle2D(
+ gnHorizontalGap,
+ nY,
+ aWindowBox.Width/2 - gnHorizontalGap,
+ aWindowBox.Height - gnVerticalBorder),
+ false,
+ aViewState,
+ aRenderState,
+ mpFont->mxFont));
+ const double nRightHeight (
+ (*iBlock)->maRight.Paint(mxCanvas,
+ geometry::RealRectangle2D(
+ aWindowBox.Width/2 + gnHorizontalGap,
+ nY,
+ aWindowBox.Width - gnHorizontalGap,
+ aWindowBox.Height - gnVerticalBorder),
+ true,
+ aViewState,
+ aRenderState,
+ mpFont->mxFont));
+ nY += ::std::max(nLeftHeight,nRightHeight);
+ }
+
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+}
+
+
+
+
+void PresenterHelpView::ReadHelpStrings (void)
+{
+ mpTextContainer.reset(new TextContainer());
+ PresenterConfigurationAccess aConfiguration (
+ mxComponentContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_ONLY);
+ Reference<container::XNameAccess> xStrings (
+ aConfiguration.GetConfigurationNode(A2S("PresenterScreenSettings/HelpView/HelpStrings")),
+ UNO_QUERY);
+ PresenterConfigurationAccess::ForAll(
+ xStrings,
+ ::boost::bind(&PresenterHelpView::ProcessString, this, _2));
+}
+
+
+
+
+void PresenterHelpView::ProcessString (
+ const Reference<beans::XPropertySet>& rsProperties)
+{
+ if ( ! rsProperties.is())
+ return;
+
+ OUString sLeftText;
+ PresenterConfigurationAccess::GetProperty(rsProperties, A2S("Left")) >>= sLeftText;
+ OUString sRightText;
+ PresenterConfigurationAccess::GetProperty(rsProperties, A2S("Right")) >>= sRightText;
+
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ mpTextContainer->push_back(
+ ::boost::shared_ptr<Block>(
+ new Block(sLeftText, sRightText, mpFont->mxFont, mnMaximalWidth)));
+}
+
+
+
+
+void PresenterHelpView::CheckFontSize (void)
+{
+ if (mpFont.get() == NULL)
+ return;
+
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ if (aWindowBox.Width<=0 || aWindowBox.Height<=0)
+ return;
+
+ sal_Int32 nBestSize (6);
+
+ // Scaling down and then reformatting can cause the text to be too large
+ // still. So do this again and again until the text size is
+ // small enough. Restrict the number of loops.
+ for (int nLoopCount=0; nLoopCount<5; ++nLoopCount)
+ {
+ double nY (gnVerticalBorder);
+ TextContainer::iterator iBlock (mpTextContainer->begin());
+ TextContainer::const_iterator iBlockEnd (mpTextContainer->end());
+ for ( ; iBlock!=iBlockEnd; ++iBlock)
+ nY += ::std::max(
+ (*iBlock)->maLeft.GetHeight(),
+ (*iBlock)->maRight.GetHeight());
+
+ const double nHeightDifference (nY - (aWindowBox.Height-gnVerticalBorder));
+ if (nHeightDifference <= 0 && nHeightDifference > -50)
+ {
+ // We have found a good font size that is large and leaves not
+ // too much space below the help text.
+ return;
+ }
+
+ // Font is too large. Make it smaller.
+
+ // Use a simple linear transformation to calculate initial guess of
+ // a size that lets all help text be shown inside the window.
+ const double nScale (double(aWindowBox.Height-gnVerticalBorder) / nY);
+ if (nScale > 0.95 && nScale <1.05)
+ break;
+
+ sal_Int32 nFontSizeGuess (::std::max(sal_Int32(1),sal_Int32(mpFont->mnSize * nScale)));
+ if (nHeightDifference<0 && mpFont->mnSize>nBestSize)
+ nBestSize = mpFont->mnSize;
+ mpFont->mnSize = nFontSizeGuess;
+ mpFont->mxFont = NULL;
+ mpFont->PrepareFont(mxCanvas);
+
+ // Reformat blocks.
+ for (iBlock=mpTextContainer->begin(); iBlock!=iBlockEnd; ++iBlock)
+ (*iBlock)->Update(mpFont->mxFont, mnMaximalWidth);
+ }
+
+ if (nBestSize != mpFont->mnSize)
+ {
+ mpFont->mnSize = nBestSize;
+ mpFont->mxFont = NULL;
+ mpFont->PrepareFont(mxCanvas);
+
+ // Reformat blocks.
+ for (TextContainer::iterator
+ iBlock (mpTextContainer->begin()),
+ iEnd (mpTextContainer->end());
+ iBlock!=iEnd;
+ ++iBlock)
+ {
+ (*iBlock)->Update(mpFont->mxFont, mnMaximalWidth);
+ }
+ }
+}
+
+
+
+
+//----- XResourceId -----------------------------------------------------------
+
+Reference<XResourceId> SAL_CALL PresenterHelpView::getResourceId (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ return mxViewId;
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterHelpView::isAnchorOnly (void)
+ throw (RuntimeException)
+{
+ return false;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterHelpView::ProvideCanvas (void)
+{
+ if ( ! mxCanvas.is() && mxPane.is())
+ {
+ mxCanvas = mxPane->getCanvas();
+ if ( ! mxCanvas.is())
+ return;
+ Reference<lang::XComponent> xComponent (mxCanvas, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->addEventListener(static_cast<awt::XPaintListener*>(this));
+
+ if (mpCloseButton.is())
+ mpCloseButton->SetCanvas(mxCanvas, mxWindow);
+ }
+}
+
+
+
+
+void PresenterHelpView::Resize (void)
+{
+ if (mpCloseButton.get() != NULL && mxWindow.is())
+ {
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ mnMaximalWidth = (mxWindow->getPosSize().Width - 4*gnHorizontalGap) / 2;
+
+ // Place vertical separator.
+ mnSeparatorY = aWindowBox.Height
+ - mpCloseButton->GetSize().Height - gnVerticalButtonPadding;
+
+ mpCloseButton->SetCenter(geometry::RealPoint2D(
+ aWindowBox.Width/2,
+ aWindowBox.Height - mpCloseButton->GetSize().Height/2));
+
+ CheckFontSize();
+ }
+}
+
+
+
+
+void PresenterHelpView::ThrowIfDisposed (void)
+ throw (lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterHelpView has been already disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+
+
+//===== LineDescritor =========================================================
+
+namespace {
+
+LineDescriptor::LineDescriptor (void)
+ : msLine(),
+ maSize(0,0),
+ mnVerticalOffset(0)
+{
+}
+
+
+
+
+void LineDescriptor::AddPart (
+ const OUString& rsLine,
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont)
+{
+ msLine += rsLine;
+
+ CalculateSize(rxFont);
+}
+
+
+
+
+bool LineDescriptor::IsEmpty (void) const
+{
+ return msLine.getLength()==0;
+}
+
+
+
+
+void LineDescriptor::CalculateSize (
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont)
+{
+ OSL_ASSERT(rxFont.is());
+
+ rendering::StringContext aContext (msLine, 0, msLine.getLength());
+ Reference<rendering::XTextLayout> xLayout (
+ rxFont->createTextLayout(aContext, rendering::TextDirection::WEAK_LEFT_TO_RIGHT, 0));
+ const geometry::RealRectangle2D aTextBBox (xLayout->queryTextBounds());
+ maSize = css::geometry::RealSize2D(aTextBBox.X2 - aTextBBox.X1, aTextBBox.Y2 - aTextBBox.Y1);
+ mnVerticalOffset = aTextBBox.Y2;
+}
+
+} // end of anonymous namespace
+
+
+
+
+//===== LineDescriptorList ====================================================
+
+namespace {
+
+LineDescriptorList::LineDescriptorList (
+ const OUString& rsText,
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const sal_Int32 nMaximalWidth)
+ : msText(rsText)
+{
+ Update(rxFont, nMaximalWidth);
+}
+
+
+
+
+double LineDescriptorList::Paint(
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const geometry::RealRectangle2D& rBBox,
+ const bool bFlushLeft,
+ const rendering::ViewState& rViewState,
+ rendering::RenderState& rRenderState,
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont) const
+{
+ if ( ! rxCanvas.is())
+ return 0;
+
+ double nY (rBBox.Y1);
+ vector<LineDescriptor>::const_iterator iLine (mpLineDescriptors->begin());
+ vector<LineDescriptor>::const_iterator iEnd (mpLineDescriptors->end());
+ for ( ; iLine!=iEnd; ++iLine)
+ {
+ double nX (rBBox.X1);
+ if ( ! bFlushLeft)
+ nX = rBBox.X2 - iLine->maSize.Width;
+ rRenderState.AffineTransform.m02 = nX;
+ rRenderState.AffineTransform.m12 = nY + iLine->maSize.Height - iLine->mnVerticalOffset;
+
+ const rendering::StringContext aContext (iLine->msLine, 0, iLine->msLine.getLength());
+
+ rxCanvas->drawText (
+ aContext,
+ rxFont,
+ rViewState,
+ rRenderState,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT);
+
+ nY += iLine->maSize.Height * 1.2;
+ }
+
+ return nY - rBBox.Y1;
+}
+
+
+
+
+double LineDescriptorList::GetHeight (void) const
+{
+ double nHeight (0);
+ vector<LineDescriptor>::const_iterator iLine (mpLineDescriptors->begin());
+ vector<LineDescriptor>::const_iterator iEnd (mpLineDescriptors->end());
+ for ( ; iLine!=iEnd; ++iLine)
+ nHeight += iLine->maSize.Height * 1.2;
+
+ return nHeight;
+}
+
+
+
+
+void LineDescriptorList::Update (
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const sal_Int32 nMaximalWidth)
+{
+ vector<OUString> aTextParts;
+ SplitText(msText, aTextParts);
+ FormatText(aTextParts, rxFont, nMaximalWidth);
+}
+
+
+
+
+void LineDescriptorList::SplitText (
+ const OUString& rsText,
+ vector<OUString>& rTextParts)
+{
+ const sal_Char cQuote ('\'');
+ const sal_Char cSeparator (',');
+
+ sal_Int32 nIndex (0);
+ sal_Int32 nStart (0);
+ sal_Int32 nLength (rsText.getLength());
+ bool bIsQuoted (false);
+ while (nIndex < nLength)
+ {
+ const sal_Int32 nQuoteIndex (rsText.indexOf(cQuote, nIndex));
+ const sal_Int32 nSeparatorIndex (rsText.indexOf(cSeparator, nIndex));
+ if (nQuoteIndex>=0 && (nSeparatorIndex==-1 || nQuoteIndex<nSeparatorIndex))
+ {
+ bIsQuoted = !bIsQuoted;
+ nIndex = nQuoteIndex+1;
+ continue;
+ }
+
+ const sal_Int32 nNextIndex = nSeparatorIndex;
+ if (nNextIndex < 0)
+ {
+ break;
+ }
+ else if ( ! bIsQuoted)
+ {
+ rTextParts.push_back(rsText.copy(nStart, nNextIndex-nStart));
+ nStart = nNextIndex + 1;
+ }
+ nIndex = nNextIndex+1;
+ }
+ if (nStart < nLength)
+ rTextParts.push_back(rsText.copy(nStart, nLength-nStart));
+}
+
+
+
+
+void LineDescriptorList::FormatText (
+ const vector<OUString>& rTextParts,
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const sal_Int32 nMaximalWidth)
+{
+ LineDescriptor aLineDescriptor;
+
+ mpLineDescriptors.reset(new vector<LineDescriptor>());
+
+ vector<OUString>::const_iterator iPart (rTextParts.begin());
+ vector<OUString>::const_iterator iEnd (rTextParts.end());
+ for ( ; iPart!=iEnd; ++iPart)
+ {
+ if (aLineDescriptor.IsEmpty())
+ {
+ // Avoid empty lines.
+ aLineDescriptor.AddPart(*iPart, rxFont);
+ }
+ else if (PresenterCanvasHelper::GetTextSize(
+ rxFont, aLineDescriptor.msLine+A2S(", ")+*iPart).Width > nMaximalWidth)
+ {
+ aLineDescriptor.AddPart(A2S(","), rxFont);
+ mpLineDescriptors->push_back(aLineDescriptor);
+ aLineDescriptor = LineDescriptor();
+ aLineDescriptor.AddPart(*iPart, rxFont);
+ }
+ else
+ {
+ aLineDescriptor.AddPart(A2S(", ")+*iPart, rxFont);
+ }
+ }
+ if ( ! aLineDescriptor.IsEmpty())
+ {
+ mpLineDescriptors->push_back(aLineDescriptor);
+ }
+}
+
+
+} // end of anonymous namespace
+
+
+
+
+//===== Block =================================================================
+
+namespace {
+
+Block::Block (
+ const OUString& rsLeftText,
+ const OUString& rsRightText,
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const sal_Int32 nMaximalWidth)
+ : maLeft(rsLeftText, rxFont, nMaximalWidth),
+ maRight(rsRightText, rxFont, nMaximalWidth)
+{
+}
+
+
+
+void Block::Update (
+ const css::uno::Reference<css::rendering::XCanvasFont>& rxFont,
+ const sal_Int32 nMaximalWidth)
+{
+ maLeft.Update(rxFont, nMaximalWidth);
+ maRight.Update(rxFont, nMaximalWidth);
+}
+
+} // end of anonymous namespace
+
+} } // end of namespace ::sdext::presenter
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterHelpView.hxx b/sdext/source/presenter/PresenterHelpView.hxx
new file mode 100644
index 000000000000..2d5e0efdcfc2
--- /dev/null
+++ b/sdext/source/presenter/PresenterHelpView.hxx
@@ -0,0 +1,146 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_HELP_VIEW_HXX
+#define SDEXT_PRESENTER_HELP_VIEW_HXX
+
+#include "PresenterController.hxx"
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase3.hxx>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/drawing/framework/XResourceId.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace {
+ typedef cppu::WeakComponentImplHelper3<
+ css::drawing::framework::XView,
+ css::awt::XWindowListener,
+ css::awt::XPaintListener
+ > PresenterHelpViewInterfaceBase;
+}
+
+namespace sdext { namespace presenter {
+
+class PresenterButton;
+
+/** Show help text that describes the defined keys.
+*/
+class PresenterHelpView
+ : private ::cppu::BaseMutex,
+ public PresenterHelpViewInterfaceBase
+{
+public:
+ explicit PresenterHelpView (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterHelpView (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ // lang::XEventListener
+
+ virtual void SAL_CALL
+ disposing (const css::lang::EventObject& rEventObject)
+ throw (css::uno::RuntimeException);
+
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XResourceId
+
+ virtual css::uno::Reference<css::drawing::framework::XResourceId> SAL_CALL getResourceId (void)
+ throw (css::uno::RuntimeException);
+
+ virtual sal_Bool SAL_CALL isAnchorOnly (void)
+ throw (com::sun::star::uno::RuntimeException);
+
+private:
+ class TextContainer;
+
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxViewId;
+ css::uno::Reference<css::drawing::framework::XPane> mxPane;
+ css::uno::Reference<css::awt::XWindow> mxWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ PresenterTheme::SharedFontDescriptor mpFont;
+ ::boost::scoped_ptr<TextContainer> mpTextContainer;
+ ::rtl::Reference<PresenterButton> mpCloseButton;
+ sal_Int32 mnSeparatorY;
+ sal_Int32 mnMaximalWidth;
+
+ void ProvideCanvas (void);
+ void Resize (void);
+ void Paint (const css::awt::Rectangle& rRedrawArea);
+ void ReadHelpStrings (void);
+ void ProcessString (
+ const css::uno::Reference<css::beans::XPropertySet>& rsProperties);
+
+ /** Find a font size, so that all text can be displayed at the same
+ time.
+ */
+ void CheckFontSize (void);
+
+ /** This method throws a DisposedException when the object has already been
+ disposed.
+ */
+ void ThrowIfDisposed (void)
+ throw (css::lang::DisposedException);
+};
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterHelper.cxx b/sdext/source/presenter/PresenterHelper.cxx
new file mode 100644
index 000000000000..13338aefb212
--- /dev/null
+++ b/sdext/source/presenter/PresenterHelper.cxx
@@ -0,0 +1,96 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterHelper.hxx"
+
+#include <com/sun/star/graphic/XGraphicProvider.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/presentation/XPresentationSupplier.hpp>
+#include <com/sun/star/presentation/XPresentation2.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::presentation;
+using ::rtl::OUString;
+
+namespace sdext { namespace presenter {
+
+const OUString PresenterHelper::msPaneURLPrefix(
+ RTL_CONSTASCII_USTRINGPARAM("private:resource/pane/"));
+const OUString PresenterHelper::msCenterPaneURL(
+ msPaneURLPrefix + OUString(RTL_CONSTASCII_USTRINGPARAM("CenterPane")));
+const OUString PresenterHelper::msFullScreenPaneURL(
+ msPaneURLPrefix + OUString(RTL_CONSTASCII_USTRINGPARAM("FullScreenPane")));
+
+const OUString PresenterHelper::msViewURLPrefix(
+ RTL_CONSTASCII_USTRINGPARAM("private:resource/view/"));
+const OUString PresenterHelper::msPresenterScreenURL(
+ msViewURLPrefix + OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterScreen")));
+const OUString PresenterHelper::msSlideSorterURL(
+ msViewURLPrefix + OUString(RTL_CONSTASCII_USTRINGPARAM("SlideSorter")));
+
+const OUString PresenterHelper::msResourceActivationEvent(
+ RTL_CONSTASCII_USTRINGPARAM("ResourceActivation"));
+const OUString PresenterHelper::msResourceDeactivationEvent(
+ RTL_CONSTASCII_USTRINGPARAM("ResourceDeactivation"));
+
+const OUString PresenterHelper::msDefaultPaneStyle (
+ RTL_CONSTASCII_USTRINGPARAM("DefaultPaneStyle"));
+const OUString PresenterHelper::msDefaultViewStyle (
+ RTL_CONSTASCII_USTRINGPARAM("DefaultViewStyle"));
+
+
+Reference<presentation::XSlideShowController> PresenterHelper::GetSlideShowController (
+ const Reference<frame::XController>& rxController)
+{
+ Reference<presentation::XSlideShowController> xSlideShowController;
+
+ if( rxController.is() ) try
+ {
+ Reference<XPresentationSupplier> xPS ( rxController->getModel(), UNO_QUERY_THROW);
+
+ Reference<XPresentation2> xPresentation(xPS->getPresentation(), UNO_QUERY_THROW);
+
+ xSlideShowController = xPresentation->getController();
+ }
+ catch(RuntimeException&)
+ {
+ }
+
+ return xSlideShowController;
+}
+
+
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterHelper.hxx b/sdext/source/presenter/PresenterHelper.hxx
new file mode 100644
index 000000000000..75f4cbdd9f0c
--- /dev/null
+++ b/sdext/source/presenter/PresenterHelper.hxx
@@ -0,0 +1,80 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_VIEW_HELPER_HXX
+#define SDEXT_PRESENTER_VIEW_HELPER_HXX
+
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/presentation/XSlideShowController.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <boost/noncopyable.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+/** Collection of helper functions that do not fit in anywhere else.
+ Provide access to frequently used strings of the drawing framework.
+*/
+class PresenterHelper
+ : ::boost::noncopyable
+{
+public:
+ static const ::rtl::OUString msPaneURLPrefix;
+ static const ::rtl::OUString msCenterPaneURL;
+ static const ::rtl::OUString msFullScreenPaneURL;
+
+ static const ::rtl::OUString msViewURLPrefix;
+ static const ::rtl::OUString msPresenterScreenURL;
+ static const ::rtl::OUString msSlideSorterURL;
+
+ static const ::rtl::OUString msResourceActivationEvent;
+ static const ::rtl::OUString msResourceDeactivationEvent;
+
+ static const ::rtl::OUString msDefaultPaneStyle;
+ static const ::rtl::OUString msDefaultViewStyle;
+
+ /** Return the slide show controller of a running presentation that has
+ the same document as the given framework controller.
+ @return
+ When no presentation is running this method returns an empty reference.
+ */
+ static css::uno::Reference<css::presentation::XSlideShowController> GetSlideShowController (
+ const css::uno::Reference<css::frame::XController>& rxController);
+
+private:
+ PresenterHelper (void);
+ ~PresenterHelper (void);
+};
+
+} } // end of namespace presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterNotesView.cxx b/sdext/source/presenter/PresenterNotesView.cxx
new file mode 100644
index 000000000000..9cbf93543ef5
--- /dev/null
+++ b/sdext/source/presenter/PresenterNotesView.cxx
@@ -0,0 +1,810 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterNotesView.hxx"
+#include "PresenterButton.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterPaintManager.hxx"
+#include "PresenterScrollBar.hxx"
+#include "PresenterTextView.hxx"
+#include <com/sun/star/accessibility/AccessibleTextType.hpp>
+#include <com/sun/star/awt/Key.hpp>
+#include <com/sun/star/awt/KeyModifier.hpp>
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/presentation/XPresentationPage.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+#include <com/sun/star/text/XTextRange.hpp>
+#include <com/sun/star/util/XChangesBatch.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <boost/bind.hpp>
+#include <set>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+static const sal_Int32 gnSpaceBelowSeparator (10);
+static const sal_Int32 gnSpaceAboveSeparator (10);
+static const sal_Int32 gnPartHeight (128);
+/** Maximal size of memory used for bitmaps which show the notes text.
+*/
+static const sal_Int32 gnMaximalCacheSize (8*1024*1024);
+static const double gnLineScrollFactor (1.2);
+
+namespace sdext { namespace presenter {
+
+//===== PresenterNotesView ====================================================
+
+PresenterNotesView::PresenterNotesView (
+ const Reference<XComponentContext>& rxComponentContext,
+ const Reference<XResourceId>& rxViewId,
+ const Reference<frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterNotesViewInterfaceBase(m_aMutex),
+ mxViewId(rxViewId),
+ mpPresenterController(rpPresenterController),
+ mxCanvas(),
+ mxCurrentNotesPage(),
+ mpScrollBar(),
+ mxToolBarWindow(),
+ mxToolBarCanvas(),
+ mpToolBar(),
+ mpCloseButton(),
+ maSeparatorColor(0xffffff),
+ mnSeparatorYLocation(0),
+ maTextBoundingBox(),
+ mpBackground(),
+ mnTop(0),
+ mpFont(),
+ mpTextView()
+{
+ try
+ {
+ Reference<XControllerManager> xCM (rxController, UNO_QUERY_THROW);
+ Reference<XConfigurationController> xCC (xCM->getConfigurationController(), UNO_QUERY_THROW);
+ Reference<XPane> xPane (xCC->getResource(rxViewId->getAnchor()), UNO_QUERY_THROW);
+
+ mxParentWindow = xPane->getWindow();
+ mxCanvas = xPane->getCanvas();
+ mpTextView.reset(new PresenterTextView(
+ rxComponentContext,
+ mxCanvas,
+ mpPresenterController->GetPaintManager()->GetInvalidator(mxParentWindow)));
+
+ const OUString sResourceURL (mxViewId->getResourceURL());
+ mpFont.reset(new PresenterTheme::FontDescriptor(
+ rpPresenterController->GetViewFont(sResourceURL)));
+ maSeparatorColor = mpFont->mnColor;
+ mpTextView->SetFont(mpFont);
+
+ CreateToolBar(rxComponentContext, rpPresenterController);
+
+ mpCloseButton = PresenterButton::Create(
+ rxComponentContext,
+ mpPresenterController,
+ mpPresenterController->GetTheme(),
+ mxParentWindow,
+ mxCanvas,
+ A2S("NotesViewCloser"));
+
+ if (mxParentWindow.is())
+ {
+ mxParentWindow->addWindowListener(this);
+ mxParentWindow->addPaintListener(this);
+ mxParentWindow->addKeyListener(this);
+ mxParentWindow->setVisible(sal_True);
+ }
+
+ mpScrollBar = new PresenterVerticalScrollBar(
+ rxComponentContext,
+ mxParentWindow,
+ mpPresenterController->GetPaintManager(),
+ ::boost::bind(&PresenterNotesView::SetTop, this, _1));
+ mpScrollBar->SetBackground(
+ mpPresenterController->GetViewBackground(mxViewId->getResourceURL()));
+
+ mpScrollBar->SetCanvas(mxCanvas);
+
+ Layout();
+ }
+ catch (RuntimeException&)
+ {
+ PresenterNotesView::disposing();
+ throw;
+ }
+}
+
+
+
+
+PresenterNotesView::~PresenterNotesView (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterNotesView::disposing (void)
+{
+ if (mxParentWindow.is())
+ {
+ mxParentWindow->removeWindowListener(this);
+ mxParentWindow->removePaintListener(this);
+ mxParentWindow->removeKeyListener(this);
+ mxParentWindow = NULL;
+ }
+
+ // Dispose tool bar.
+ {
+ Reference<XComponent> xComponent (static_cast<XWeak*>(mpToolBar.get()), UNO_QUERY);
+ mpToolBar = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ {
+ Reference<XComponent> xComponent (mxToolBarCanvas, UNO_QUERY);
+ mxToolBarCanvas = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ {
+ Reference<XComponent> xComponent (mxToolBarWindow, UNO_QUERY);
+ mxToolBarWindow = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ // Dispose close button
+ {
+ Reference<XComponent> xComponent (static_cast<XWeak*>(mpCloseButton.get()), UNO_QUERY);
+ mpCloseButton = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ // Create the tool bar.
+
+ mpScrollBar = NULL;
+
+ mxViewId = NULL;
+}
+
+
+
+
+void PresenterNotesView::CreateToolBar (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+{
+ if (rpPresenterController.get() == NULL)
+ return;
+
+ Reference<drawing::XPresenterHelper> xPresenterHelper (
+ rpPresenterController->GetPresenterHelper());
+ if ( ! xPresenterHelper.is())
+ return;
+
+ // Create a new window as container of the tool bar.
+ mxToolBarWindow = xPresenterHelper->createWindow(
+ mxParentWindow,
+ sal_False,
+ sal_True,
+ sal_False,
+ sal_False);
+ mxToolBarCanvas = xPresenterHelper->createSharedCanvas (
+ Reference<rendering::XSpriteCanvas>(mxCanvas, UNO_QUERY),
+ mxParentWindow,
+ mxCanvas,
+ mxParentWindow,
+ mxToolBarWindow);
+
+ // Create the tool bar.
+ mpToolBar = new PresenterToolBar(
+ rxContext,
+ mxToolBarWindow,
+ mxToolBarCanvas,
+ rpPresenterController,
+ PresenterToolBar::Left);
+ mpToolBar->Initialize(
+ A2S("PresenterScreenSettings/ToolBars/NotesToolBar"));
+}
+
+
+
+
+void PresenterNotesView::SetSlide (const Reference<drawing::XDrawPage>& rxNotesPage)
+{
+ static const ::rtl::OUString sNotesShapeName (
+ A2S("com.sun.star.presentation.NotesShape"));
+ static const ::rtl::OUString sTextShapeName (
+ A2S("com.sun.star.drawing.TextShape"));
+
+ Reference<container::XIndexAccess> xIndexAccess (rxNotesPage, UNO_QUERY);
+ if (xIndexAccess.is())
+ {
+ ::rtl::OUString sText;
+
+ // Iterate over all shapes and find the one that holds the text.
+ sal_Int32 nCount (xIndexAccess->getCount());
+ for (sal_Int32 nIndex=0; nIndex<nCount; ++nIndex)
+ {
+
+ Reference<lang::XServiceName> xServiceName (
+ xIndexAccess->getByIndex(nIndex), UNO_QUERY);
+ if (xServiceName.is()
+ && xServiceName->getServiceName().equals(sNotesShapeName))
+ {
+ Reference<text::XTextRange> xText (xServiceName, UNO_QUERY);
+ if (xText.is())
+ {
+ sText += xText->getString();
+ }
+ }
+ else
+ {
+ Reference<drawing::XShapeDescriptor> xShapeDescriptor (
+ xIndexAccess->getByIndex(nIndex), UNO_QUERY);
+ if (xShapeDescriptor.is())
+ {
+ ::rtl::OUString sType (xShapeDescriptor->getShapeType());
+ if (sType.equals(sNotesShapeName) || sType.equals(sTextShapeName))
+ {
+ Reference<text::XTextRange> xText (
+ xIndexAccess->getByIndex(nIndex), UNO_QUERY);
+ if (xText.is())
+ {
+ sText += xText->getString();
+ mpTextView->SetText(Reference<text::XText>(xText, UNO_QUERY));
+ }
+ }
+ }
+ }
+ }
+
+ Layout();
+
+ if (mpScrollBar.get() != NULL)
+ {
+ mpScrollBar->SetThumbPosition(0, false);
+ UpdateScrollBar();
+ }
+
+ Invalidate();
+ }
+}
+
+
+
+
+//----- lang::XEventListener -------------------------------------------------
+
+void SAL_CALL PresenterNotesView::disposing (const lang::EventObject& rEventObject)
+ throw (RuntimeException)
+{
+ if (rEventObject.Source == mxParentWindow)
+ mxParentWindow = NULL;
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterNotesView::windowResized (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ Layout();
+}
+
+
+
+
+void SAL_CALL PresenterNotesView::windowMoved (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterNotesView::windowShown (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterNotesView::windowHidden (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterNotesView::windowPaint (const awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if ( ! mbIsPresenterViewActive)
+ return;
+
+ ::osl::MutexGuard aSolarGuard (::osl::Mutex::getGlobalMutex());
+ Paint(rEvent.UpdateRect);
+}
+
+
+
+
+//----- XResourceId -----------------------------------------------------------
+
+Reference<XResourceId> SAL_CALL PresenterNotesView::getResourceId (void)
+ throw (RuntimeException)
+{
+ return mxViewId;
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterNotesView::isAnchorOnly (void)
+ throw (RuntimeException)
+{
+ return false;
+}
+
+
+
+
+//----- XDrawView -------------------------------------------------------------
+
+void SAL_CALL PresenterNotesView::setCurrentPage (const Reference<drawing::XDrawPage>& rxSlide)
+ throw (RuntimeException)
+{
+ // Get the associated notes page.
+ mxCurrentNotesPage = NULL;
+ try
+ {
+ Reference<presentation::XPresentationPage> xPresentationPage(rxSlide, UNO_QUERY);
+ if (xPresentationPage.is())
+ mxCurrentNotesPage = xPresentationPage->getNotesPage();
+ }
+ catch (RuntimeException&)
+ {
+ }
+
+ SetSlide(mxCurrentNotesPage);
+}
+
+
+
+
+Reference<drawing::XDrawPage> SAL_CALL PresenterNotesView::getCurrentPage (void)
+ throw (RuntimeException)
+{
+ return NULL;
+}
+
+
+
+
+//----- XKeyListener ----------------------------------------------------------
+
+void SAL_CALL PresenterNotesView::keyPressed (const awt::KeyEvent& rEvent)
+ throw (RuntimeException)
+{
+ switch (rEvent.KeyCode)
+ {
+ case awt::Key::A:
+ Scroll(-gnLineScrollFactor * mpFont->mnSize);
+ break;
+
+ case awt::Key::Y:
+ case awt::Key::Z:
+ Scroll(+gnLineScrollFactor * mpFont->mnSize);
+ break;
+
+ case awt::Key::S:
+ ChangeFontSize(-1);
+ break;
+
+ case awt::Key::G:
+ ChangeFontSize(+1);
+ break;
+
+ case awt::Key::H:
+ if (mpTextView)
+ mpTextView->MoveCaret(
+ -1,
+ (rEvent.Modifiers == awt::KeyModifier::SHIFT)
+ ? cssa::AccessibleTextType::CHARACTER
+ : cssa::AccessibleTextType::WORD);
+ break;
+
+ case awt::Key::L:
+ if (mpTextView)
+ mpTextView->MoveCaret(
+ +1,
+ (rEvent.Modifiers == awt::KeyModifier::SHIFT)
+ ? cssa::AccessibleTextType::CHARACTER
+ : cssa::AccessibleTextType::WORD);
+ break;
+ }
+}
+
+
+
+
+void SAL_CALL PresenterNotesView::keyReleased (const awt::KeyEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterNotesView::Layout (void)
+{
+ if ( ! mxParentWindow.is())
+ return;
+
+ awt::Rectangle aWindowBox (mxParentWindow->getPosSize());
+ geometry::RealRectangle2D aNewTextBoundingBox (0,0,aWindowBox.Width, aWindowBox.Height);
+
+ // Size the tool bar and the horizontal separator above it.
+ if (mxToolBarWindow.is())
+ {
+ const geometry::RealSize2D aToolBarSize (mpToolBar->GetMinimalSize());
+ const sal_Int32 nToolBarHeight = sal_Int32(aToolBarSize.Height + 0.5);
+ mxToolBarWindow->setPosSize(0, aWindowBox.Height - nToolBarHeight,
+ sal_Int32(aToolBarSize.Width + 0.5), nToolBarHeight,
+ awt::PosSize::POSSIZE);
+ aNewTextBoundingBox.Y2 -= nToolBarHeight;
+
+ mnSeparatorYLocation = aWindowBox.Height - nToolBarHeight - gnSpaceBelowSeparator;
+ aNewTextBoundingBox.Y2 = mnSeparatorYLocation - gnSpaceAboveSeparator;
+
+ // Place the close button.
+ if (mpCloseButton.get() != NULL)
+ mpCloseButton->SetCenter(geometry::RealPoint2D(
+ (aWindowBox.Width + aToolBarSize.Width) / 2,
+ aWindowBox.Height - aToolBarSize.Height/2));
+ }
+
+ // Check whether the vertical scroll bar is necessary.
+ if (mpScrollBar.get() != NULL)
+ {
+ bool bShowVerticalScrollbar (false);
+ try
+ {
+ const double nTextBoxHeight (aNewTextBoundingBox.Y2 - aNewTextBoundingBox.Y1);
+ const double nHeight (mpTextView->GetTotalTextHeight());
+ if (nHeight > nTextBoxHeight)
+ {
+ bShowVerticalScrollbar = true;
+ aNewTextBoundingBox.X2 -= mpScrollBar->GetSize();
+ }
+ mpScrollBar->SetTotalSize(nHeight);
+ }
+ catch(beans::UnknownPropertyException&)
+ {
+ OSL_ASSERT(false);
+ }
+
+ mpScrollBar->SetVisible(bShowVerticalScrollbar);
+ mpScrollBar->SetPosSize(
+ geometry::RealRectangle2D(
+ aNewTextBoundingBox.X2,
+ aNewTextBoundingBox.X1,
+ aNewTextBoundingBox.X2 + mpScrollBar->GetSize(),
+ aNewTextBoundingBox.Y2));
+ if ( ! bShowVerticalScrollbar)
+ mpScrollBar->SetThumbPosition(0, false);
+
+ UpdateScrollBar();
+ }
+
+ // Has the text area has changed it position or size?
+ if (aNewTextBoundingBox.X1 != maTextBoundingBox.X1
+ || aNewTextBoundingBox.Y1 != maTextBoundingBox.Y1
+ || aNewTextBoundingBox.X2 != maTextBoundingBox.X2
+ || aNewTextBoundingBox.Y2 != maTextBoundingBox.Y2)
+ {
+ maTextBoundingBox = aNewTextBoundingBox;
+
+ mpTextView->SetLocation(
+ geometry::RealPoint2D(
+ aNewTextBoundingBox.X1,
+ aNewTextBoundingBox.Y1));
+ mpTextView->SetSize(
+ geometry::RealSize2D(
+ aNewTextBoundingBox.X2 - aNewTextBoundingBox.X1,
+ aNewTextBoundingBox.Y2 - aNewTextBoundingBox.Y1));
+ }
+}
+
+
+
+
+void PresenterNotesView::Paint (const awt::Rectangle& rUpdateBox)
+{
+ if ( ! mxParentWindow.is())
+ return;
+ if ( ! mxCanvas.is())
+ return;
+
+ if (mpBackground.get() == NULL)
+ mpBackground = mpPresenterController->GetViewBackground(mxViewId->getResourceURL());
+
+ if (rUpdateBox.Y < maTextBoundingBox.Y2
+ && rUpdateBox.X < maTextBoundingBox.X2)
+ {
+ PaintText(rUpdateBox);
+ }
+
+ mpTextView->Paint(rUpdateBox);
+
+ if (rUpdateBox.Y + rUpdateBox.Height > maTextBoundingBox.Y2)
+ {
+ PaintToolBar(rUpdateBox);
+ }
+}
+
+
+
+
+void PresenterNotesView::PaintToolBar (const awt::Rectangle& rUpdateBox)
+{
+ awt::Rectangle aWindowBox (mxParentWindow->getPosSize());
+
+ rendering::ViewState aViewState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+ rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ if (mpBackground.get() != NULL)
+ {
+ // Paint the background.
+ mpPresenterController->GetCanvasHelper()->Paint(
+ mpBackground,
+ mxCanvas,
+ rUpdateBox,
+ awt::Rectangle(0,sal_Int32(maTextBoundingBox.Y2),aWindowBox.Width,aWindowBox.Height),
+ awt::Rectangle());
+ }
+
+ // Paint the horizontal separator.
+ OSL_ASSERT(mxViewId.is());
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, maSeparatorColor);
+
+ mxCanvas->drawLine(
+ geometry::RealPoint2D(0,mnSeparatorYLocation),
+ geometry::RealPoint2D(aWindowBox.Width,mnSeparatorYLocation),
+ aViewState,
+ aRenderState);
+}
+
+
+
+
+void PresenterNotesView::PaintText (const awt::Rectangle& rUpdateBox)
+{
+ const awt::Rectangle aBox (PresenterGeometryHelper::Intersection(rUpdateBox,
+ PresenterGeometryHelper::ConvertRectangle(maTextBoundingBox)));
+
+ if (aBox.Width <= 0 || aBox.Height <= 0)
+ return;
+
+ rendering::ViewState aViewState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ PresenterGeometryHelper::CreatePolygon(aBox, mxCanvas->getDevice()));
+ rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(3),
+ rendering::CompositeOperation::SOURCE);
+
+ if (mpBackground.get() != NULL)
+ {
+ // Paint the background.
+ mpPresenterController->GetCanvasHelper()->Paint(
+ mpBackground,
+ mxCanvas,
+ rUpdateBox,
+ aBox,
+ awt::Rectangle());
+ }
+
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+}
+
+
+
+
+void PresenterNotesView::Invalidate (void)
+{
+ mpPresenterController->GetPaintManager()->Invalidate(
+ mxParentWindow,
+ PresenterGeometryHelper::ConvertRectangle(maTextBoundingBox));
+}
+
+
+
+
+void PresenterNotesView::Scroll (const double rnDistance)
+{
+ try
+ {
+ mnTop += rnDistance;
+ mpTextView->SetOffset(0, mnTop);
+
+ UpdateScrollBar();
+ Invalidate();
+ }
+ catch (beans::UnknownPropertyException&)
+ {}
+}
+
+
+
+
+void PresenterNotesView::SetTop (const double nTop)
+{
+ try
+ {
+ mnTop = nTop;
+ mpTextView->SetOffset(0, mnTop);
+
+ UpdateScrollBar();
+ Invalidate();
+ }
+ catch (beans::UnknownPropertyException&)
+ {}
+}
+
+
+
+
+void PresenterNotesView::ChangeFontSize (const sal_Int32 nSizeChange)
+{
+ const sal_Int32 nNewSize (mpFont->mnSize + nSizeChange);
+ if (nNewSize > 5)
+ {
+ mpFont->mnSize = nNewSize;
+ mpFont->mxFont = NULL;
+ mpTextView->SetFont(mpFont);
+
+ Layout();
+ UpdateScrollBar();
+ Invalidate();
+
+ // Write the new font size to the configuration to make it persistent.
+ try
+ {
+ const OUString sStyleName (mpPresenterController->GetTheme()->GetStyleName(
+ mxViewId->getResourceURL()));
+ ::boost::shared_ptr<PresenterConfigurationAccess> pConfiguration (
+ mpPresenterController->GetTheme()->GetNodeForViewStyle(
+ sStyleName,
+ PresenterConfigurationAccess::READ_WRITE));
+ if (pConfiguration.get()==NULL || ! pConfiguration->IsValid())
+ return;
+
+ pConfiguration->GoToChild(A2S("Font"));
+ pConfiguration->SetProperty(A2S("Size"), Any((sal_Int32)(nNewSize+0.5)));
+ pConfiguration->CommitChanges();
+ }
+ catch (Exception&)
+ {
+ OSL_ASSERT(false);
+ }
+ }
+}
+
+
+
+
+::boost::shared_ptr<PresenterTextView> PresenterNotesView::GetTextView (void) const
+{
+ return mpTextView;
+}
+
+
+
+
+void PresenterNotesView::UpdateScrollBar (void)
+{
+ if (mpScrollBar.get() != NULL)
+ {
+ try
+ {
+ mpScrollBar->SetTotalSize(mpTextView->GetTotalTextHeight());
+ }
+ catch(beans::UnknownPropertyException&)
+ {
+ OSL_ASSERT(false);
+ }
+
+ mpScrollBar->SetLineHeight(mpFont->mnSize*1.2);
+ mpScrollBar->SetThumbPosition(mnTop, false);
+
+ mpScrollBar->SetThumbSize(maTextBoundingBox.Y2 - maTextBoundingBox.Y1);
+ mpScrollBar->CheckValues();
+ }
+}
+
+
+
+
+void PresenterNotesView::ThrowIfDisposed (void)
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ A2S("PresenterNotesView object has already been disposed"),
+ static_cast<uno::XWeak*>(this));
+ }
+}
+
+
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterNotesView.hxx b/sdext/source/presenter/PresenterNotesView.hxx
new file mode 100644
index 000000000000..282f86465dc6
--- /dev/null
+++ b/sdext/source/presenter/PresenterNotesView.hxx
@@ -0,0 +1,200 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_NOTES_VIEW2_HXX
+#define SDEXT_PRESENTER_NOTES_VIEW2_HXX
+
+#include "PresenterController.hxx"
+#include "PresenterToolBar.hxx"
+#include "PresenterViewFactory.hxx"
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase5.hxx>
+#include <com/sun/star/awt/ActionEvent.hpp>
+#include <com/sun/star/awt/XActionListener.hpp>
+#include <com/sun/star/awt/XButton.hpp>
+#include <com/sun/star/awt/XControl.hpp>
+#include <com/sun/star/awt/XTextComponent.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/drawing/XDrawView.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/drawing/framework/XResourceId.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <rtl/ref.hxx>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace {
+ typedef cppu::WeakComponentImplHelper5<
+ css::awt::XWindowListener,
+ css::awt::XPaintListener,
+ css::drawing::framework::XView,
+ css::drawing::XDrawView,
+ css::awt::XKeyListener
+ > PresenterNotesViewInterfaceBase;
+}
+
+namespace sdext { namespace presenter {
+
+class PresenterButton;
+class PresenterScrollBar;
+class PresenterTextView;
+
+
+/** A drawing framework view of the notes of a slide. At the moment this is
+ a simple text view that does not show the original formatting of the
+ notes text.
+*/
+class PresenterNotesView
+ : private ::cppu::BaseMutex,
+ public PresenterNotesViewInterfaceBase,
+ public CachablePresenterView
+{
+public:
+ explicit PresenterNotesView (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterNotesView (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ /** Typically called from setCurrentSlide() with the notes page that is
+ associed with the slide given to setCurrentSlide().
+
+ Iterates over all text shapes on the given notes page and diplays
+ the concatenated text of these.
+ */
+ void SetSlide (
+ const css::uno::Reference<css::drawing::XDrawPage>& rxNotesPage);
+
+ void ChangeFontSize (const sal_Int32 nSizeChange);
+
+ ::boost::shared_ptr<PresenterTextView> GetTextView (void) const;
+
+
+ // lang::XEventListener
+
+ virtual void SAL_CALL
+ disposing (const css::lang::EventObject& rEventObject)
+ throw (css::uno::RuntimeException);
+
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XResourceId
+
+ virtual css::uno::Reference<css::drawing::framework::XResourceId> SAL_CALL getResourceId (void)
+ throw (css::uno::RuntimeException);
+
+ virtual sal_Bool SAL_CALL isAnchorOnly (void)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+ // XDrawView
+
+ virtual void SAL_CALL setCurrentPage (
+ const css::uno::Reference<css::drawing::XDrawPage>& rxSlide)
+ throw (css::uno::RuntimeException);
+
+ virtual css::uno::Reference<css::drawing::XDrawPage> SAL_CALL getCurrentPage (void)
+ throw (css::uno::RuntimeException);
+
+
+ // XKeyListener
+
+ virtual void SAL_CALL keyPressed (const css::awt::KeyEvent& rEvent)
+ throw (css::uno::RuntimeException);
+ virtual void SAL_CALL keyReleased (const css::awt::KeyEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+private:
+ css::uno::Reference<css::drawing::framework::XResourceId> mxViewId;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::awt::XWindow> mxParentWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ css::uno::Reference<css::drawing::XDrawPage> mxCurrentNotesPage;
+ ::rtl::Reference<PresenterScrollBar> mpScrollBar;
+ css::uno::Reference<css::awt::XWindow> mxToolBarWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxToolBarCanvas;
+ ::rtl::Reference<PresenterToolBar> mpToolBar;
+ ::rtl::Reference<PresenterButton> mpCloseButton;
+ css::util::Color maSeparatorColor;
+ sal_Int32 mnSeparatorYLocation;
+ css::geometry::RealRectangle2D maTextBoundingBox;
+ SharedBitmapDescriptor mpBackground;
+ double mnTop;
+ PresenterTheme::SharedFontDescriptor mpFont;
+ ::boost::shared_ptr<PresenterTextView> mpTextView;
+
+ void CreateToolBar (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ void Layout (void);
+ void Paint (const css::awt::Rectangle& rUpdateBox);
+ void PaintToolBar (const css::awt::Rectangle& rUpdateBox);
+ void PaintText (const css::awt::Rectangle& rUpdateBox);
+ void Invalidate (void);
+ void Scroll (const double nDistance);
+ void SetTop (const double nTop);
+ void UpdateScrollBar (void);
+ void MoveCaret (const sal_Int32 nDistance);
+
+ /** This method throws a DisposedException when the object has already been
+ disposed.
+ */
+ void ThrowIfDisposed (void)
+ throw (css::lang::DisposedException);
+};
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaintManager.cxx b/sdext/source/presenter/PresenterPaintManager.cxx
new file mode 100644
index 000000000000..e934130d9ec2
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaintManager.cxx
@@ -0,0 +1,178 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterPaintManager.hxx"
+
+#include "PresenterPaneContainer.hxx"
+#include <com/sun/star/awt/InvalidateStyle.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <boost/bind.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+namespace sdext { namespace presenter {
+
+PresenterPaintManager::PresenterPaintManager (
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const css::uno::Reference<css::drawing::XPresenterHelper>& rxPresenterHelper,
+ const rtl::Reference<PresenterPaneContainer>& rpPaneContainer)
+ : mxParentWindow(rxParentWindow),
+ mxParentWindowPeer(rxParentWindow, UNO_QUERY),
+ mxPresenterHelper(rxPresenterHelper),
+ mpPaneContainer(rpPaneContainer)
+{
+}
+
+
+
+
+::boost::function<void(const css::awt::Rectangle& rRepaintBox)>
+ PresenterPaintManager::GetInvalidator (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const bool bSynchronous)
+{
+ return ::boost::bind(
+ static_cast<void (PresenterPaintManager::*)(
+ const css::uno::Reference<css::awt::XWindow>&,
+ const css::awt::Rectangle&,
+ const bool)>(&PresenterPaintManager::Invalidate),
+ this,
+ rxWindow,
+ _1,
+ bSynchronous);
+}
+
+
+
+
+void PresenterPaintManager::Invalidate (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const bool bSynchronous)
+{
+ sal_Int16 nInvalidateMode (awt::InvalidateStyle::CHILDREN);
+ if (bSynchronous)
+ nInvalidateMode |= awt::InvalidateStyle::UPDATE;
+
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor(
+ mpPaneContainer->FindContentWindow(rxWindow));
+ if (pDescriptor.get()==NULL || ! pDescriptor->mbIsOpaque)
+ nInvalidateMode |= awt::InvalidateStyle::TRANSPARENT;
+ else
+ nInvalidateMode |= awt::InvalidateStyle::NOTRANSPARENT;
+
+ Invalidate(rxWindow, nInvalidateMode);
+}
+
+
+
+
+void PresenterPaintManager::Invalidate (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const sal_Int16 nInvalidateFlags)
+{
+ if ((nInvalidateFlags & awt::InvalidateStyle::TRANSPARENT) != 0)
+ {
+ // Window is transparent and parent window(s) have to be painted as
+ // well. Invalidate the parent explicitly.
+ if (mxPresenterHelper.is() && mxParentWindowPeer.is())
+ {
+ const awt::Rectangle aBBox (
+ mxPresenterHelper->getWindowExtentsRelative(rxWindow, mxParentWindow));
+ mxParentWindowPeer->invalidateRect(aBBox, nInvalidateFlags);
+ }
+ }
+ else
+ {
+ Reference<awt::XWindowPeer> xPeer (rxWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->invalidate(nInvalidateFlags);
+ }
+}
+
+
+
+
+void PresenterPaintManager::Invalidate (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const css::awt::Rectangle& rRepaintBox,
+ const bool bSynchronous)
+{
+ sal_Int16 nInvalidateMode (awt::InvalidateStyle::CHILDREN);
+ if (bSynchronous)
+ nInvalidateMode |= awt::InvalidateStyle::UPDATE;
+
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor(
+ mpPaneContainer->FindContentWindow(rxWindow));
+ if (pDescriptor.get()==NULL || ! pDescriptor->mbIsOpaque)
+ nInvalidateMode |= awt::InvalidateStyle::TRANSPARENT;
+ else
+ nInvalidateMode |= awt::InvalidateStyle::NOTRANSPARENT;
+
+ Invalidate(rxWindow, rRepaintBox, nInvalidateMode);
+}
+
+
+
+
+void PresenterPaintManager::Invalidate (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const css::awt::Rectangle& rRepaintBox,
+ const sal_Int16 nInvalidateFlags)
+{
+ if ((nInvalidateFlags & awt::InvalidateStyle::TRANSPARENT) != 0)
+ {
+ // Window is transparent and parent window(s) have to be painted as
+ // well. Invalidate the parent explicitly.
+ if (mxPresenterHelper.is() && mxParentWindowPeer.is())
+ {
+ const awt::Rectangle aBBox (
+ mxPresenterHelper->getWindowExtentsRelative(rxWindow, mxParentWindow));
+ mxParentWindowPeer->invalidateRect(
+ awt::Rectangle(
+ rRepaintBox.X + aBBox.X,
+ rRepaintBox.Y + aBBox.Y,
+ rRepaintBox.Width,
+ rRepaintBox.Height),
+ nInvalidateFlags);
+ }
+ }
+ else
+ {
+ Reference<awt::XWindowPeer> xPeer (rxWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->invalidateRect(rRepaintBox, nInvalidateFlags);
+ }
+}
+
+} }
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaintManager.hxx b/sdext/source/presenter/PresenterPaintManager.hxx
new file mode 100644
index 000000000000..421edbeb171b
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaintManager.hxx
@@ -0,0 +1,99 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_PAINT_MANAGER_HXX
+#define SDEXT_PRESENTER_PRESENTER_PAINT_MANAGER_HXX
+
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <rtl/ref.hxx>
+#include <boost/function.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterPaneContainer;
+
+/** Synchronize painting of windows and canvases. At the moment there is
+ just some processing of invalidate calls.
+ This could be extended to process incoming windowPaint() calls.
+*/
+class PresenterPaintManager
+{
+public:
+ /** Create paint manager with the window that is the top node in the
+ local window hierarchy.
+ */
+ PresenterPaintManager (
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const css::uno::Reference<css::drawing::XPresenterHelper>& rxPresenterHelper,
+ const rtl::Reference<PresenterPaneContainer>& rpPaneContainer);
+
+ ::boost::function<void(const css::awt::Rectangle& rRepaintBox)>
+ GetInvalidator (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const bool bSynchronous = false);
+
+ /** Request a repaint of the whole window.
+ @param rxWindow
+ May be the parent window or one of its descendents.
+ */
+ void Invalidate (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const bool bSynchronous = false);
+ void Invalidate (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const sal_Int16 nInvalidateFlags);
+
+ /** Request a repaint of a part of a window.
+ @param rxWindow
+ May be the parent window or one of its descendents.
+ */
+ void Invalidate (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const css::awt::Rectangle& rRepaintBox,
+ const bool bSynchronous = false);
+ void Invalidate (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const css::awt::Rectangle& rRepaintBox,
+ const sal_Int16 nInvalidateFlags);
+
+private:
+ css::uno::Reference<css::awt::XWindow> mxParentWindow;
+ css::uno::Reference<css::awt::XWindowPeer> mxParentWindowPeer;
+ css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
+ ::rtl::Reference<PresenterPaneContainer> mpPaneContainer;
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPane.cxx b/sdext/source/presenter/PresenterPane.cxx
new file mode 100644
index 000000000000..096e5615fcbe
--- /dev/null
+++ b/sdext/source/presenter/PresenterPane.cxx
@@ -0,0 +1,237 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterPane.hxx"
+#include "PresenterController.hxx"
+#include "PresenterPaintManager.hxx"
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/lang/XMultiComponentFactory.hpp>
+#include <com/sun/star/drawing/CanvasFeature.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <osl/mutex.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+namespace sdext { namespace presenter {
+
+//===== PresenterPane =========================================================
+
+PresenterPane::PresenterPane (
+ const Reference<XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterPaneBase(rxContext, rpPresenterController),
+ maBoundingBox()
+{
+ Reference<lang::XMultiComponentFactory> xFactory (
+ mxComponentContext->getServiceManager(), UNO_QUERY_THROW);
+ mxPresenterHelper = Reference<drawing::XPresenterHelper>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.PresenterHelper")),
+ mxComponentContext),
+ UNO_QUERY_THROW);
+}
+
+
+
+
+PresenterPane::~PresenterPane (void)
+{
+}
+
+
+
+
+//----- XPane -----------------------------------------------------------------
+
+Reference<awt::XWindow> SAL_CALL PresenterPane::getWindow (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ return mxContentWindow;
+}
+
+
+
+
+Reference<rendering::XCanvas> SAL_CALL PresenterPane::getCanvas (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ return mxContentCanvas;
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterPane::windowResized (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ PresenterPaneBase::windowResized(rEvent);
+
+ Invalidate(maBoundingBox);
+
+ LayoutContextWindow();
+ ToTop();
+
+ UpdateBoundingBox();
+ Invalidate(maBoundingBox);
+}
+
+
+
+
+
+void SAL_CALL PresenterPane::windowMoved (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ PresenterPaneBase::windowMoved(rEvent);
+
+ Invalidate(maBoundingBox);
+
+ ToTop();
+
+ UpdateBoundingBox();
+ Invalidate(maBoundingBox);
+}
+
+
+
+
+void SAL_CALL PresenterPane::windowShown (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ PresenterPaneBase::windowShown(rEvent);
+
+ ToTop();
+
+ if (mxContentWindow.is())
+ {
+ LayoutContextWindow();
+ mxContentWindow->setVisible(sal_True);
+ }
+
+ UpdateBoundingBox();
+ Invalidate(maBoundingBox);
+}
+
+
+
+
+void SAL_CALL PresenterPane::windowHidden (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ PresenterPaneBase::windowHidden(rEvent);
+
+ if (mxContentWindow.is())
+ mxContentWindow->setVisible(sal_False);
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterPane::windowPaint (const awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+
+ PaintBorder(rEvent.UpdateRect);
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+
+void PresenterPane::CreateCanvases (
+ const Reference<awt::XWindow>& rxParentWindow,
+ const Reference<rendering::XSpriteCanvas>& rxParentCanvas)
+{
+ if ( ! mxPresenterHelper.is())
+ return;
+ if ( ! rxParentWindow.is())
+ return;
+ if ( ! rxParentCanvas.is())
+ return;
+
+ mxBorderCanvas = mxPresenterHelper->createSharedCanvas(
+ rxParentCanvas,
+ rxParentWindow,
+ Reference<rendering::XCanvas>(rxParentCanvas, UNO_QUERY),
+ rxParentWindow,
+ mxBorderWindow);
+ mxContentCanvas = mxPresenterHelper->createSharedCanvas(
+ rxParentCanvas,
+ rxParentWindow,
+ Reference<rendering::XCanvas>(rxParentCanvas, UNO_QUERY),
+ rxParentWindow,
+ mxContentWindow);
+
+ PaintBorder(mxBorderWindow->getPosSize());
+}
+
+
+
+
+void PresenterPane::Invalidate (const css::awt::Rectangle& rRepaintBox)
+{
+ // Invalidate the parent window to be able to invalidate an area outside
+ // the current window area.
+ mpPresenterController->GetPaintManager()->Invalidate(mxParentWindow, rRepaintBox);
+}
+
+
+
+
+void PresenterPane::UpdateBoundingBox (void)
+{
+ if (mxBorderWindow.is() && IsVisible())
+ maBoundingBox = mxBorderWindow->getPosSize();
+ else
+ maBoundingBox = awt::Rectangle();
+}
+
+
+} } // end of namespace ::sd::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPane.hxx b/sdext/source/presenter/PresenterPane.hxx
new file mode 100644
index 000000000000..303bb0c6f5ed
--- /dev/null
+++ b/sdext/source/presenter/PresenterPane.hxx
@@ -0,0 +1,121 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SD_PRESENTER_PRESENTER_PANE_HXX
+#define SD_PRESENTER_PRESENTER_PANE_HXX
+
+#include "PresenterPaneBase.hxx"
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XPaneBorderPainter.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <rtl/ref.hxx>
+#include <boost/noncopyable.hpp>
+
+namespace css = ::com::sun::star;
+
+
+namespace sdext { namespace presenter {
+
+/** Pane used by the presenter screen. Pane objects are stored in the
+ PresenterPaneContainer. Sizes and positions are controlled
+ by the PresenterWindowManager. Interactive positioning and resizing is
+ managed by the PresenterPaneBorderManager. Borders around panes are
+ painted by the PresenterPaneBorderPainter.
+*/
+class PresenterPane : public PresenterPaneBase
+{
+public:
+ PresenterPane (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterPane (void);
+
+ static ::rtl::OUString getImplementationName_static (void);
+ static css::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static (void);
+ static css::uno::Reference<css::uno::XInterface> Create(
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext)
+ SAL_THROW((css::uno::Exception));
+
+
+ // XPane
+
+ css::uno::Reference<css::awt::XWindow> SAL_CALL getWindow (void)
+ throw (css::uno::RuntimeException);
+
+ css::uno::Reference<css::rendering::XCanvas> SAL_CALL getCanvas (void)
+ throw (css::uno::RuntimeException);
+
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+private:
+ /** Store the bounding box so that when the window is resized or moved
+ we still know the old position and size.
+ */
+ css::awt::Rectangle maBoundingBox;
+
+ virtual void CreateCanvases (
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const css::uno::Reference<css::rendering::XSpriteCanvas>& rxParentCanvas);
+
+ void Invalidate (
+ const css::awt::Rectangle& rRepaintBox);
+ void UpdateBoundingBox (void);
+};
+
+} } // end of namespace ::sd::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneAnimator.cxx b/sdext/source/presenter/PresenterPaneAnimator.cxx
new file mode 100644
index 000000000000..f3864045b768
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneAnimator.cxx
@@ -0,0 +1,1426 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterPaneAnimator.hxx"
+
+#include "PresenterAnimation.hxx"
+#include "PresenterAnimator.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterController.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterPaintManager.hxx"
+#include "PresenterPaneContainer.hxx"
+#include "PresenterPaneFactory.hxx"
+#include "PresenterSprite.hxx"
+#include "PresenterSpritePane.hxx"
+#include "PresenterWindowManager.hxx"
+
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <boost/bind.hpp>
+#include <boost/bind/protect.hpp>
+#include <boost/enable_shared_from_this.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+using ::std::vector;
+
+namespace sdext { namespace presenter {
+
+namespace {
+
+ class PaneGroup;
+
+ class PresenterPaneAnimatorBase
+ : public ::boost::enable_shared_from_this<PresenterPaneAnimatorBase>,
+ public PresenterPaneAnimator
+ {
+ public:
+ PresenterPaneAnimatorBase (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions);
+ virtual ~PresenterPaneAnimatorBase (void);
+
+ typedef ::std::vector< ::boost::function<void()> > EndOperators;
+
+ void ActivatePanes (void);
+ void ActivatePane (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId);
+ void RestoreFrozenWindows (void);
+ void FreezePanes (const Reference<rendering::XSpriteCanvas>& rxCanvas);
+
+ protected:
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ ::rtl::Reference<PresenterPaneContainer> mpPaneContainer;
+ ::rtl::Reference<PresenterWindowManager> mpWindowManager;
+ ::std::vector< ::boost::shared_ptr<PaneGroup> > maPaneGroups;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxCenterPaneId;
+ bool mbDoAnimation;
+ EndActions maShowEndActions;
+ EndActions maHideEndActions;
+
+ void DeactivatePanes (void);
+ void ResizePane (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const geometry::RealRectangle2D& rBox);
+ void DeactivatePane (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId);
+ };
+
+
+ class UnfoldInCenterAnimator : public PresenterPaneAnimatorBase
+ {
+ public:
+ UnfoldInCenterAnimator (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions);
+
+ virtual ~UnfoldInCenterAnimator (void);
+
+ virtual void ShowPane (void);
+
+ virtual void HidePane (void);
+
+ private:
+ geometry::RealRectangle2D maCenterPaneBox;
+
+ void SetupPaneGroups (void);
+ geometry::RealRectangle2D MovePanesAway (
+ const css::geometry::RealRectangle2D& rFreeCenterArea);
+ };
+
+
+ class MoveInFromBottomAnimator : public PresenterPaneAnimatorBase
+ {
+ public:
+ MoveInFromBottomAnimator(
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions);
+ virtual ~MoveInFromBottomAnimator (void);
+
+ virtual void ShowPane (void);
+ virtual void HidePane (void);
+
+ private:
+ ::boost::shared_ptr<PresenterSprite> maNewPaneSprite;
+ geometry::RealRectangle2D maCenterPaneBox;
+
+ void CreateShowAnimation (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const EndOperators& rpEndOperators,
+ const css::uno::Reference<css::rendering::XSpriteCanvas>& rxSpriteCanvas,
+ const bool bAnimate,
+ const css::geometry::RealPoint2D& rStartLocation,
+ const css::geometry::RealPoint2D& rEndLocation);
+ };
+
+
+ class TransparentOverlayAnimator : public PresenterPaneAnimatorBase
+ {
+ public:
+ TransparentOverlayAnimator(
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions);
+ virtual ~TransparentOverlayAnimator (void);
+
+ virtual void ShowPane (void);
+ virtual void HidePane (void);
+
+ private:
+ PresenterSprite maBackgroundSprite;
+ void CreateBackgroundSprite (void);
+ };
+
+
+ class PaneDescriptor
+ {
+ public:
+ PresenterPaneContainer::SharedPaneDescriptor mpPaneDescriptor;
+
+ PaneDescriptor (const PresenterPaneContainer::SharedPaneDescriptor& rpDescriptor);
+ void Restore (void) const;
+ private:
+ double mnLeft;
+ double mnTop;
+ double mnRight;
+ double mnBottom;
+ };
+
+ class MultiAnimation : public PresenterAnimation
+ {
+ public:
+ typedef ::boost::function<void(double)> Animation;
+ MultiAnimation (const sal_uInt32 nDuration);
+ void AddAnimation (const Animation& rAnimation);
+ virtual void Run (const double nProgress, const sal_uInt64 nCurrentTime);
+ private:
+ vector<Animation> maAnimations;
+ };
+
+
+ class PaneGroup
+ {
+ public:
+ PaneGroup (void);
+ ~PaneGroup (void);
+ void AddPane (const PresenterPaneContainer::SharedPaneDescriptor& rpPane);
+ void CreateSubstitution (const Reference<rendering::XSpriteCanvas>& rxCanvas);
+ void ThawPanes (void);
+ void Restore (void);
+ ::boost::shared_ptr<PresenterSprite> GetSubstitution (void) const;
+ css::geometry::RealRectangle2D GetOriginalBoundingBox (void) const;
+ css::geometry::RealRectangle2D GetCurrentBoundingBox (void) const;
+ void MovePanes (
+ const double nXOffset,
+ const double nYOffset,
+ const ::rtl::Reference<PresenterWindowManager>& rpWindowManager);
+ void ActivatePanes (void);
+ void DeactivatePanes (void);
+ void HidePanes (void);
+ void ShowPanes (void);
+
+ private:
+ vector<PaneDescriptor> maPanes;
+ awt::Rectangle maOriginalBoundingBox;
+ css::geometry::RealRectangle2D maCurrentBoundingBox;
+ ::boost::shared_ptr<PresenterSprite> mpSubstitution;
+
+ };
+ typedef ::boost::shared_ptr<PaneGroup> SharedPaneGroup;
+
+ void InterpolatePosition (
+ const ::boost::function<void(geometry::RealPoint2D)>& rSetter,
+ double nP,
+ const geometry::RealPoint2D rInitialBox,
+ const geometry::RealPoint2D rFinalBox);
+
+ template<typename T>
+ void InterpolateValue (
+ const ::boost::function<void(T)>& rSetter,
+ double nP,
+ const T aInitialValue,
+ const T aFinalValue);
+
+ void SpriteTransform(
+ const rtl::Reference<PresenterPaneContainer>& rpPaneContainer,
+ const Reference<XResourceId>& rxPaneId,
+ const Reference<awt::XWindow>& rxSpriteOwnerWindow,
+ const ::boost::shared_ptr<PresenterPaintManager>& rpPaintManager,
+ const bool bAppear,
+ const double nX,
+ const double nInitialTop,
+ const double nFinalTop,
+ const double nP);
+
+ void SpritePaneMove (
+ const rtl::Reference<PresenterPaneContainer>& rpPaneContainer,
+ const Reference<XResourceId>& rxPaneId,
+ const geometry::RealPoint2D& rLocation);
+
+ geometry::RealPoint2D GetLocation (const geometry::RealRectangle2D& rBox);
+ geometry::RealSize2D GetSize (const geometry::RealRectangle2D& rBox);
+
+
+} // end of anonymous namespace
+
+
+
+
+//=============================================================================
+
+
+::boost::shared_ptr<PresenterPaneAnimator> CreateUnfoldInCenterAnimator (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions)
+{
+ return ::boost::shared_ptr<PresenterPaneAnimator>(
+ new UnfoldInCenterAnimator(rxPaneId, rpPresenterController, bAnimate,
+ rShowEndActions, rEndEndActions));
+}
+
+
+
+
+::boost::shared_ptr<PresenterPaneAnimator> CreateMoveInFromBottomAnimator (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions)
+{
+ return ::boost::shared_ptr<PresenterPaneAnimator>(
+ new MoveInFromBottomAnimator(rxPaneId, rpPresenterController, bAnimate,
+ rShowEndActions, rEndEndActions));
+}
+
+
+
+
+::boost::shared_ptr<PresenterPaneAnimator> CreateTransparentOverlay (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions)
+{
+ return ::boost::shared_ptr<PresenterPaneAnimator>(
+ new TransparentOverlayAnimator(rxPaneId, rpPresenterController, bAnimate,
+ rShowEndActions, rEndEndActions));
+}
+
+
+
+
+//===== PresenterPaneAnimator =================================================
+
+namespace {
+
+PresenterPaneAnimatorBase::PresenterPaneAnimatorBase (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rHideEndActions)
+ : mpPresenterController(rpPresenterController),
+ mpPaneContainer(rpPresenterController->GetPaneContainer()),
+ mpWindowManager(rpPresenterController->GetWindowManager()),
+ maPaneGroups(),
+ mxCenterPaneId(rxPaneId),
+ mbDoAnimation(bAnimate),
+ maShowEndActions(rShowEndActions),
+ maHideEndActions(rHideEndActions)
+{
+}
+
+
+
+
+PresenterPaneAnimatorBase::~PresenterPaneAnimatorBase (void)
+{
+}
+
+
+
+
+void PresenterPaneAnimatorBase::FreezePanes (const Reference<rendering::XSpriteCanvas>& rxCanvas)
+{
+ ::std::vector<SharedPaneGroup>::const_iterator iGroup;
+ for (iGroup=maPaneGroups.begin(); iGroup!=maPaneGroups.end(); ++iGroup)
+ {
+ (*iGroup)->CreateSubstitution(rxCanvas);
+ (*iGroup)->GetSubstitution()->MoveTo(GetLocation((*iGroup)->GetOriginalBoundingBox()));
+ }
+}
+
+
+
+
+void PresenterPaneAnimatorBase::ActivatePanes (void)
+{
+ ActivatePane(mxCenterPaneId);
+
+ ::std::vector<SharedPaneGroup>::const_iterator iGroup;
+ for (iGroup=maPaneGroups.begin(); iGroup!=maPaneGroups.end(); ++iGroup)
+ {
+ (*iGroup)->ShowPanes();
+ (*iGroup)->ActivatePanes();
+ (*iGroup)->GetSubstitution()->Hide();
+ }
+
+ mpWindowManager->Update();
+}
+
+
+
+
+void PresenterPaneAnimatorBase::DeactivatePanes (void)
+{
+ ::std::vector<SharedPaneGroup>::const_iterator iGroup;
+ for (iGroup=maPaneGroups.begin(); iGroup!=maPaneGroups.end(); ++iGroup)
+ {
+ (*iGroup)->GetSubstitution()->Show();
+ (*iGroup)->DeactivatePanes();
+ (*iGroup)->HidePanes();
+ }
+
+ mpWindowManager->Update();
+}
+
+
+
+
+void PresenterPaneAnimatorBase::ResizePane (
+ const Reference<drawing::framework::XResourceId>& rxPaneId,
+ const geometry::RealRectangle2D& rBox)
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindPaneId(rxPaneId));
+ if (pDescriptor.get() != NULL)
+ {
+ mpWindowManager->SetPanePosSizeAbsolute (
+ rxPaneId->getResourceURL(),
+ rBox.X1,
+ rBox.Y1,
+ rBox.X2-rBox.X1,
+ rBox.Y2-rBox.Y1);
+ mpWindowManager->Layout();
+ if ( ! pDescriptor->maSpriteProvider.empty())
+ {
+ pDescriptor->maSpriteProvider()->Resize(GetSize(rBox));
+ }
+ }
+}
+
+
+
+
+void PresenterPaneAnimatorBase::RestoreFrozenWindows (void)
+{
+ ::std::vector<SharedPaneGroup>::const_iterator iGroup;
+ for (iGroup=maPaneGroups.begin(); iGroup!=maPaneGroups.end(); ++iGroup)
+ {
+ (*iGroup)->Restore();
+ (*iGroup)->ShowPanes();
+ (*iGroup)->ActivatePanes();
+ (*iGroup)->GetSubstitution()->Hide();
+ }
+ maPaneGroups.clear();
+
+ ActivatePane(mxCenterPaneId);
+
+ mpWindowManager->Update();
+}
+
+
+
+
+void PresenterPaneAnimatorBase::ActivatePane (
+ const Reference<drawing::framework::XResourceId>& rxPaneId)
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindPaneId(rxPaneId));
+ if (pDescriptor.get() != NULL)
+ pDescriptor->SetActivationState(true);
+}
+
+
+
+
+void PresenterPaneAnimatorBase::DeactivatePane (
+ const Reference<drawing::framework::XResourceId>& rxPaneId)
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindPaneId(rxPaneId));
+ if (pDescriptor.get() != NULL)
+ pDescriptor->SetActivationState(false);
+}
+
+
+
+
+//===== UnfoldInCenterAnimator ================================================
+
+UnfoldInCenterAnimator::UnfoldInCenterAnimator (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions)
+ : PresenterPaneAnimatorBase(rxPaneId, rpPresenterController, bAnimate,
+ rShowEndActions, rEndEndActions)
+{
+}
+
+
+
+
+UnfoldInCenterAnimator::~UnfoldInCenterAnimator (void)
+{
+}
+
+
+
+
+void UnfoldInCenterAnimator::ShowPane (void)
+{
+ OSL_ASSERT(mpWindowManager.get()!=NULL);
+
+ Reference<awt::XWindow> xParentWindow (mpWindowManager->GetParentWindow(), UNO_QUERY);
+ if ( ! xParentWindow.is())
+ return;
+
+ Reference<rendering::XSpriteCanvas> xCanvas (mpWindowManager->GetParentCanvas(), UNO_QUERY);
+ if ( ! xCanvas.is())
+ return;
+
+ Reference<rendering::XBitmap> xParentBitmap (xCanvas, UNO_QUERY);
+ if ( ! xParentBitmap.is())
+ return;
+
+ Reference<rendering::XGraphicDevice> xDevice(xCanvas->getDevice());
+ if ( ! xDevice.is())
+ return;
+
+ awt::Rectangle aWindowBox (xParentWindow->getPosSize());
+
+ // Create two pane groups that will be moved together. One contains the
+ // notes view, the other group contains all other panes.
+ SetupPaneGroups();
+
+ // Setup the places where the two pane groups are moved to.
+ maCenterPaneBox
+ = MovePanesAway(geometry::RealRectangle2D(0,200,aWindowBox.Width, aWindowBox.Height-200));
+
+ // Setup the final size of the new pane so that it fits into the space
+ // between the two pane groups.
+ ResizePane(mxCenterPaneId, maCenterPaneBox);
+
+ // Avoid that the center pane updates its previews while being animated.
+ DeactivatePane(mxCenterPaneId);
+
+ // Replace the pane groups with sprites that look like the panes but can
+ // be moved around much faster.
+ FreezePanes(xCanvas);
+
+ // The vertical center of the new pane.
+ const double nY0 ((maPaneGroups[0]->GetOriginalBoundingBox().Y2
+ + maPaneGroups[1]->GetOriginalBoundingBox().Y1) / 2);
+
+ // Make sure that the new pane is painted once before the animation starts.
+ SpriteTransform(
+ mpPaneContainer,
+ mxCenterPaneId,
+ xParentWindow,
+ mpPresenterController->GetPaintManager(),
+ true,
+ maCenterPaneBox.X1,
+ nY0,
+ maCenterPaneBox.Y1,
+ 0);
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindPaneId(mxCenterPaneId));
+ if (pDescriptor.get() != NULL)
+ {
+ mpPresenterController->GetPaintManager()->Invalidate(
+ pDescriptor->mxBorderWindow,
+ true);
+ }
+
+ // Animate the upper and lower window bitmaps.
+ ::boost::shared_ptr<MultiAnimation> pMultiAnimation (
+ new MultiAnimation(mbDoAnimation ? 500 : 0));
+
+ // Animate the pane group sprites to be moved up or down.
+ vector<SharedPaneGroup>::const_iterator iGroup;
+ for (iGroup=maPaneGroups.begin(); iGroup!=maPaneGroups.end(); ++iGroup)
+ {
+ pMultiAnimation->AddAnimation(
+ ::boost::bind(
+ InterpolatePosition,
+ ::boost::protect(::boost::bind(
+ &PresenterSprite::MoveTo, (*iGroup)->GetSubstitution(), _1)),
+ _1,
+ GetLocation((*iGroup)->GetOriginalBoundingBox()),
+ GetLocation((*iGroup)->GetCurrentBoundingBox())));
+ }
+
+ // Animate the new center pane to expand.
+ pMultiAnimation->AddAnimation(
+ ::boost::bind(
+ SpriteTransform,
+ mpPaneContainer,
+ mxCenterPaneId,
+ xParentWindow,
+ mpPresenterController->GetPaintManager(),
+ true,
+ maCenterPaneBox.X1,
+ nY0,
+ maCenterPaneBox.Y1,
+ _1));
+
+ // Call updateScreen after each animation step.
+ if (xCanvas.is())
+ pMultiAnimation->AddAnimation(
+ ::boost::bind(&rendering::XSpriteCanvas::updateScreen, xCanvas, sal_False));
+
+ // Activate the panes when the animation is over.
+ pMultiAnimation->AddEndCallback(
+ ::boost::bind(&PresenterPaneAnimatorBase::ActivatePanes, shared_from_this()));
+ EndActions::const_iterator iAction;
+ for (iAction=maShowEndActions.begin(); iAction!=maShowEndActions.end(); ++iAction)
+ pMultiAnimation->AddEndCallback(*iAction);
+
+ // Start the animation.
+ ::boost::shared_ptr<PresenterAnimator> pAnimator (mpPresenterController->GetAnimator());
+ OSL_ASSERT(pAnimator.get()!=NULL);
+ pAnimator->AddAnimation(SharedPresenterAnimation(pMultiAnimation));
+
+ mpWindowManager->Update();
+}
+
+
+
+
+void UnfoldInCenterAnimator::HidePane (void)
+{
+ OSL_ASSERT(mpWindowManager.get()!=NULL);
+
+ Reference<awt::XWindow> xParentWindow (mpWindowManager->GetParentWindow(), UNO_QUERY);
+ if ( ! xParentWindow.is())
+ return;
+
+ DeactivatePanes();
+ DeactivatePane(mxCenterPaneId);
+
+ ::boost::shared_ptr<PresenterAnimator> pAnimator (mpPresenterController->GetAnimator());
+ const awt::Rectangle aWindowBox (xParentWindow->getPosSize());
+ const rendering::ViewState aViewState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+ const rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ // Animate the uppder and lower window bitmaps.
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mpWindowManager->GetParentCanvas(), UNO_QUERY);
+ ::boost::shared_ptr<MultiAnimation> pMultiAnimation (new MultiAnimation(mbDoAnimation ? 500 : 1));
+
+ vector<SharedPaneGroup>::const_iterator iGroup;
+ for (iGroup=maPaneGroups.begin(); iGroup!=maPaneGroups.end(); ++iGroup)
+ {
+ pMultiAnimation->AddAnimation(
+ ::boost::bind(
+ InterpolatePosition,
+ ::boost::protect(::boost::bind(
+ &PresenterSprite::MoveTo, (*iGroup)->GetSubstitution(), _1)),
+ _1,
+ GetLocation((*iGroup)->GetCurrentBoundingBox()),
+ GetLocation((*iGroup)->GetOriginalBoundingBox())));
+ }
+
+ // Animate the new center pane to collapse.
+ const double nY0 ((maPaneGroups[0]->GetOriginalBoundingBox().Y2
+ + maPaneGroups[1]->GetOriginalBoundingBox().Y1) / 2);
+ pMultiAnimation->AddAnimation(
+ ::boost::bind(
+ SpriteTransform,
+ mpPaneContainer,
+ mxCenterPaneId,
+ xParentWindow,
+ mpPresenterController->GetPaintManager(),
+ false,
+ maCenterPaneBox.X1,
+ nY0,
+ maCenterPaneBox.Y1,
+ _1));
+
+ if (mbDoAnimation)
+ {
+ pMultiAnimation->AddAnimation(
+ ::boost::bind(&rendering::XSpriteCanvas::updateScreen, xSpriteCanvas, sal_False));
+ }
+ pMultiAnimation->AddEndCallback(
+ ::boost::bind(&PresenterPaneAnimatorBase::RestoreFrozenWindows, shared_from_this()));
+ EndActions::const_iterator iAction;
+ for (iAction=maHideEndActions.begin(); iAction!=maHideEndActions.end(); ++iAction)
+ pMultiAnimation->AddEndCallback(*iAction);
+
+ pAnimator->AddAnimation(SharedPresenterAnimation(pMultiAnimation));
+}
+
+
+
+
+void UnfoldInCenterAnimator::SetupPaneGroups (void)
+{
+ maPaneGroups.clear();
+
+ // Setup the upper pane group.
+ SharedPaneGroup pUpperPanes (new PaneGroup());
+ pUpperPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msCurrentSlidePreviewPaneURL));
+ pUpperPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msNextSlidePreviewPaneURL));
+ pUpperPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msToolBarPaneURL));
+ pUpperPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msHelpPaneURL));
+ maPaneGroups.push_back(pUpperPanes);
+
+ // Setup the lower pane group.
+ SharedPaneGroup pLowerPanes (new PaneGroup());
+ pLowerPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msNotesPaneURL));
+ maPaneGroups.push_back(pLowerPanes);
+}
+
+
+
+
+geometry::RealRectangle2D UnfoldInCenterAnimator::MovePanesAway (
+ const geometry::RealRectangle2D& rFreeCenterArea)
+{
+ SharedPaneGroup aUpperPanes = maPaneGroups[0];
+ SharedPaneGroup aLowerPanes = maPaneGroups[1];
+
+ // Move upper pane group out of the way.
+ const double nTop (rFreeCenterArea.Y1);
+ const double nUpperVerticalOffset (nTop - aUpperPanes->GetOriginalBoundingBox().Y2);
+ aUpperPanes->MovePanes(0, nUpperVerticalOffset, mpWindowManager);
+
+ // Move lower pane group out of the way.
+ const double nBottom (rFreeCenterArea.Y2);
+ const double nLowerVerticalOffset (nBottom - aLowerPanes->GetOriginalBoundingBox().Y1);
+ aLowerPanes->MovePanes(0, nLowerVerticalOffset, mpWindowManager);
+
+ return geometry::RealRectangle2D(
+ ::std::min(
+ aUpperPanes->GetOriginalBoundingBox().X1,
+ aLowerPanes->GetOriginalBoundingBox().X1),
+ nTop+20,
+ ::std::max(
+ aUpperPanes->GetOriginalBoundingBox().X2,
+ aLowerPanes->GetOriginalBoundingBox().X2),
+ nBottom-20);
+}
+
+
+
+
+//===== MoveInFromBottomAnimator ==============================================
+
+MoveInFromBottomAnimator::MoveInFromBottomAnimator (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions)
+ : PresenterPaneAnimatorBase(rxPaneId, rpPresenterController, bAnimate,
+ rShowEndActions, rEndEndActions),
+ maNewPaneSprite()
+{
+}
+
+
+
+
+MoveInFromBottomAnimator::~MoveInFromBottomAnimator (void)
+{
+}
+
+
+
+
+void MoveInFromBottomAnimator::ShowPane (void)
+{
+ OSL_ASSERT(mpWindowManager.get()!=NULL);
+
+ Reference<awt::XWindow> xParentWindow (mpWindowManager->GetParentWindow(), UNO_QUERY);
+ if ( ! xParentWindow.is())
+ return;
+
+ Reference<rendering::XSpriteCanvas> xCanvas (mpWindowManager->GetParentCanvas(), UNO_QUERY);
+ if ( ! xCanvas.is())
+ return;
+
+ Reference<rendering::XBitmap> xParentBitmap (xCanvas, UNO_QUERY);
+ if ( ! xParentBitmap.is())
+ return;
+
+ Reference<rendering::XGraphicDevice> xDevice(xCanvas->getDevice());
+ if ( ! xDevice.is())
+ return;
+
+ awt::Rectangle aWindowBox (xParentWindow->getPosSize());
+
+ // Create a pane group that just contains the notes view.
+ SharedPaneGroup pLowerPanes (new PaneGroup());
+ pLowerPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msNotesPaneURL));
+ maPaneGroups.push_back(pLowerPanes);
+
+ // Deactivate the panes that will take place in the animation.
+ pLowerPanes->DeactivatePanes();
+ DeactivatePane(mxCenterPaneId);
+
+ // Set the size of the new pane.
+ maCenterPaneBox = pLowerPanes->GetOriginalBoundingBox();
+ ResizePane(mxCenterPaneId, maCenterPaneBox);
+
+ geometry::RealPoint2D aStartLocation (maCenterPaneBox.X1, aWindowBox.Height);
+ geometry::RealPoint2D aEndLocation (maCenterPaneBox.X1, maCenterPaneBox.Y1);
+
+ // Get the sprite of the new pane, make it visible and move it to the
+ // start location.
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindPaneId(mxCenterPaneId));
+ if (pDescriptor.get() != NULL)
+ {
+ if (pDescriptor->mxBorderWindow.is())
+ pDescriptor->mxBorderWindow->setVisible(sal_True);
+
+ maNewPaneSprite = pDescriptor->maSpriteProvider();
+ if (maNewPaneSprite.get() != NULL)
+ {
+ maNewPaneSprite->MoveTo(aStartLocation);
+ maNewPaneSprite->Show();
+ }
+ xCanvas->updateScreen(sal_False);
+ }
+
+ CreateShowAnimation(
+ mxCenterPaneId,
+ maShowEndActions,
+ xCanvas,
+ mbDoAnimation,
+ aStartLocation,
+ aEndLocation);
+
+ mpWindowManager->Update();
+}
+
+
+
+
+void MoveInFromBottomAnimator::HidePane (void)
+{
+ OSL_ASSERT(mpWindowManager.get()!=NULL);
+
+ Reference<awt::XWindow> xParentWindow (mpWindowManager->GetParentWindow(), UNO_QUERY);
+ if ( ! xParentWindow.is())
+ return;
+
+ Reference<rendering::XSpriteCanvas> xCanvas (mpWindowManager->GetParentCanvas(), UNO_QUERY);
+ if ( ! xCanvas.is())
+ return;
+
+ DeactivatePanes();
+ DeactivatePane(mxCenterPaneId);
+
+ SharedPaneGroup aPanes (maPaneGroups[0]);
+
+ aPanes->ShowPanes();
+
+ ::boost::shared_ptr<MultiAnimation> pMultiAnimation (
+ new MultiAnimation(mbDoAnimation ? 500 : 0));
+ awt::Rectangle aWindowBox (xParentWindow->getPosSize());
+
+ // Animate the new center pane to collapse.
+ pMultiAnimation->AddAnimation(
+ ::boost::bind(
+ InterpolatePosition,
+ ::boost::protect(::boost::bind(&SpritePaneMove, mpPaneContainer, mxCenterPaneId, _1)),
+ _1,
+ geometry::RealPoint2D(maCenterPaneBox.X1, maCenterPaneBox.Y1),
+ geometry::RealPoint2D(maCenterPaneBox.X1, aWindowBox.Height)));
+
+ if (mbDoAnimation)
+ {
+ pMultiAnimation->AddAnimation(
+ ::boost::bind(&rendering::XSpriteCanvas::updateScreen, xCanvas, sal_False));
+ }
+ pMultiAnimation->AddEndCallback(
+ ::boost::bind(&PresenterPaneAnimatorBase::RestoreFrozenWindows, shared_from_this()));
+ EndActions::const_iterator iAction;
+ for (iAction=maHideEndActions.begin(); iAction!=maHideEndActions.end(); ++iAction)
+ pMultiAnimation->AddEndCallback(*iAction);
+
+ ::boost::shared_ptr<PresenterAnimator> pAnimator (mpPresenterController->GetAnimator());
+ pAnimator->AddAnimation(SharedPresenterAnimation(pMultiAnimation));
+}
+
+
+
+
+void MoveInFromBottomAnimator::CreateShowAnimation (
+ const Reference<drawing::framework::XResourceId>& rxPaneId,
+ const EndOperators& rEndOperators,
+ const Reference<rendering::XSpriteCanvas>& rxSpriteCanvas,
+ const bool bAnimate,
+ const geometry::RealPoint2D& rStartLocation,
+ const geometry::RealPoint2D& rEndLocation)
+{
+ // Animate the uppder and lower window bitmaps.
+ ::boost::shared_ptr<MultiAnimation> pMultiAnimation (new MultiAnimation(bAnimate ? 500 : 0));
+
+ // Animate new pane to move in from the buttom.
+ pMultiAnimation->AddAnimation(
+ ::boost::bind(
+ InterpolatePosition,
+ ::boost::protect(::boost::bind(&SpritePaneMove, mpPaneContainer, rxPaneId, _1)),
+ _1,
+ rStartLocation,
+ rEndLocation));
+
+ // Call updateScreen after each animation step.
+ if (rxSpriteCanvas.is())
+ pMultiAnimation->AddAnimation(
+ ::boost::bind(&rendering::XSpriteCanvas::updateScreen, rxSpriteCanvas, sal_False));
+
+ // Activate the panes when the animation is over.
+ pMultiAnimation->AddEndCallback(
+ ::boost::bind(&PaneGroup::HidePanes, maPaneGroups[0]));
+ pMultiAnimation->AddEndCallback(
+ ::boost::bind(&PresenterPaneAnimatorBase::ActivatePane, shared_from_this(), mxCenterPaneId));
+ EndActions::const_iterator iAction;
+ for (iAction=rEndOperators.begin(); iAction!=rEndOperators.end(); ++iAction)
+ pMultiAnimation->AddEndCallback(*iAction);
+
+ // Start the animation.
+ ::boost::shared_ptr<PresenterAnimator> pAnimator (mpPresenterController->GetAnimator());
+ OSL_ASSERT(pAnimator.get()!=NULL);
+ pAnimator->AddAnimation(SharedPresenterAnimation(pMultiAnimation));
+}
+
+
+
+
+
+//===== TransparentOverlayAnimator ============================================
+
+TransparentOverlayAnimator::TransparentOverlayAnimator (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions)
+ : PresenterPaneAnimatorBase(
+ rxPaneId,
+ rpPresenterController,
+ bAnimate,
+ rShowEndActions,
+ rEndEndActions),
+ maBackgroundSprite()
+{
+}
+
+
+
+
+TransparentOverlayAnimator::~TransparentOverlayAnimator (void)
+{
+}
+
+
+
+
+void TransparentOverlayAnimator::ShowPane (void)
+{
+ EndActions::const_iterator iAction;
+ for (iAction=maShowEndActions.begin(); iAction!=maShowEndActions.end(); ++iAction)
+ (*iAction)();
+
+ CreateBackgroundSprite();
+
+ Reference<awt::XWindow> xParentWindow (mpWindowManager->GetParentWindow(), UNO_QUERY);
+ if (xParentWindow.is())
+ {
+ const awt::Rectangle aWindowBox (xParentWindow->getPosSize());
+ SharedPaneGroup pAllPanes (new PaneGroup());
+ pAllPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msCurrentSlidePreviewPaneURL));
+ pAllPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msNextSlidePreviewPaneURL));
+ pAllPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msToolBarPaneURL));
+ pAllPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msHelpPaneURL));
+ pAllPanes->AddPane(mpPaneContainer->FindPaneURL(
+ PresenterPaneFactory::msNotesPaneURL));
+ maPaneGroups.push_back(pAllPanes);
+ pAllPanes->DeactivatePanes();
+ mpWindowManager->Update();
+ }
+
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindPaneId(mxCenterPaneId));
+ if (pDescriptor.get() != NULL)
+ {
+ PresenterSpritePane* pPane = dynamic_cast<PresenterSpritePane*>(
+ pDescriptor->mxPane.get());
+ if (pPane != NULL)
+ pPane->ShowTransparentBorder();
+
+ pDescriptor->SetActivationState(true);
+ if (pDescriptor->mxBorderWindow.is())
+ pDescriptor->mxBorderWindow->setVisible(sal_True);
+ }
+}
+
+
+
+
+void TransparentOverlayAnimator::HidePane (void)
+{
+ maPaneGroups[0]->ActivatePanes();
+ EndActions::const_iterator iAction;
+ for (iAction=maHideEndActions.begin(); iAction!=maHideEndActions.end(); ++iAction)
+ (*iAction)();
+ mpWindowManager->Update();
+}
+
+
+
+
+void TransparentOverlayAnimator::CreateBackgroundSprite (void)
+{
+ Reference<awt::XWindow> xParentWindow (mpWindowManager->GetParentWindow(), UNO_QUERY);
+ Reference<rendering::XSpriteCanvas> xParentCanvas (mpWindowManager->GetParentCanvas(), UNO_QUERY);
+ if (xParentWindow.is() && xParentCanvas.is())
+ {
+ const awt::Rectangle aWindowBox (xParentWindow->getPosSize());
+ maBackgroundSprite.SetFactory(xParentCanvas);
+ maBackgroundSprite.Resize(
+ geometry::RealSize2D(aWindowBox.Width, aWindowBox.Height));
+ maBackgroundSprite.MoveTo(
+ geometry::RealPoint2D(aWindowBox.X, aWindowBox.Y));
+ maBackgroundSprite.SetAlpha(0.5);
+ maBackgroundSprite.Show();
+
+ Reference<rendering::XCanvas> xCanvas (maBackgroundSprite.GetCanvas());
+
+ if (xCanvas.is())
+ {
+ rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+
+ rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, util::Color(0x80808080));
+
+ Reference<rendering::XPolyPolygon2D> xPolygon (
+ PresenterGeometryHelper::CreatePolygon(aWindowBox, xCanvas->getDevice()));
+ if (xPolygon.is())
+ xCanvas->fillPolyPolygon(
+ xPolygon,
+ aViewState,
+ aRenderState);
+ }
+ }
+}
+
+
+
+
+//===== PaneGroup =============================================================
+
+PaneGroup::PaneGroup (void)
+ : maPanes(),
+ maOriginalBoundingBox(),
+ maCurrentBoundingBox(),
+ mpSubstitution(new PresenterSprite())
+{
+}
+
+
+
+
+PaneGroup::~PaneGroup (void)
+{
+ mpSubstitution.reset();
+}
+
+
+
+
+void PaneGroup::AddPane (const PresenterPaneContainer::SharedPaneDescriptor& rpPane)
+{
+ OSL_ASSERT(rpPane.get() != NULL);
+
+ if (rpPane->mxBorderWindow.is())
+ {
+ PaneDescriptor aDescriptor (rpPane);
+ maPanes.push_back(aDescriptor);
+ maOriginalBoundingBox = PresenterGeometryHelper::Union(
+ maOriginalBoundingBox,
+ rpPane->mxBorderWindow->getPosSize());
+ }
+}
+
+
+
+
+void PaneGroup::CreateSubstitution (const Reference<rendering::XSpriteCanvas>& rxCanvas)
+{
+ // Get the bitmap of the background.
+ Reference<rendering::XBitmap> xBackgroundBitmap (rxCanvas, UNO_QUERY);
+ if ( ! xBackgroundBitmap.is())
+ return;
+
+ // Create the sprite.
+ mpSubstitution->SetFactory(rxCanvas);
+ mpSubstitution->Resize(
+ geometry::RealSize2D(maOriginalBoundingBox.Width, maOriginalBoundingBox.Height));
+
+ // Fill it with the background inside the bounding box.
+ const rendering::ViewState aViewState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+ const rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,-maOriginalBoundingBox.X, 0,1,-maOriginalBoundingBox.Y),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ Reference<rendering::XCanvas> xSpriteCanvas (mpSubstitution->GetCanvas());
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->drawBitmap(xBackgroundBitmap, aViewState, aRenderState);
+}
+
+
+
+
+void PaneGroup::Restore (void)
+{
+ vector<PaneDescriptor>::iterator iPane;
+ for (iPane=maPanes.begin(); iPane!=maPanes.end(); ++iPane)
+ {
+ iPane->Restore();
+ }
+}
+
+
+
+::boost::shared_ptr<PresenterSprite> PaneGroup::GetSubstitution (void) const
+{
+ return mpSubstitution;
+}
+
+
+
+
+geometry::RealRectangle2D PaneGroup::GetOriginalBoundingBox (void) const
+{
+ return geometry::RealRectangle2D(
+ maOriginalBoundingBox.X,
+ maOriginalBoundingBox.Y,
+ maOriginalBoundingBox.X + maOriginalBoundingBox.Width,
+ maOriginalBoundingBox.Y + maOriginalBoundingBox.Height);
+}
+
+
+
+
+geometry::RealRectangle2D PaneGroup::GetCurrentBoundingBox (void) const
+{
+ return maCurrentBoundingBox;
+}
+
+
+
+
+void PaneGroup::MovePanes (
+ const double nXOffset,
+ const double nYOffset,
+ const ::rtl::Reference<PresenterWindowManager>& rpWindowManager
+ )
+{
+ awt::Rectangle aBBox;
+ vector<PaneDescriptor>::iterator iPane;
+ for (iPane=maPanes.begin(); iPane!=maPanes.end(); ++iPane)
+ {
+ awt::Rectangle aBox (iPane->mpPaneDescriptor->mxBorderWindow->getPosSize());
+ aBox.X += sal_Int32(nXOffset);
+ aBox.Y += sal_Int32(nYOffset);
+ rpWindowManager->SetPanePosSizeAbsolute(
+ iPane->mpPaneDescriptor->mxPaneId->getResourceURL(),
+ aBox.X,
+ aBox.Y,
+ aBox.Width,
+ aBox.Height);
+ aBBox = PresenterGeometryHelper::Union(aBBox, aBox);
+ }
+ maCurrentBoundingBox = geometry::RealRectangle2D(
+ aBBox.X, aBBox.Y, aBBox.X+aBBox.Width, aBBox.Y+aBBox.Height);
+}
+
+
+
+
+void PaneGroup::ActivatePanes (void)
+{
+ vector<PaneDescriptor>::iterator iPane;
+ for (iPane=maPanes.begin(); iPane!=maPanes.end(); ++iPane)
+ {
+ iPane->mpPaneDescriptor->SetActivationState(true);
+ }
+}
+
+
+
+
+void PaneGroup::DeactivatePanes (void)
+{
+ vector<PaneDescriptor>::iterator iPane;
+ for (iPane=maPanes.begin(); iPane!=maPanes.end(); ++iPane)
+ {
+ iPane->mpPaneDescriptor->SetActivationState(false);
+ }
+}
+
+
+
+
+void PaneGroup::ShowPanes (void)
+{
+ vector<PaneDescriptor>::iterator iPane;
+ for (iPane=maPanes.begin(); iPane!=maPanes.end(); ++iPane)
+ {
+ iPane->mpPaneDescriptor->mxBorderWindow->setVisible(sal_True);
+ iPane->mpPaneDescriptor->mxContentWindow->setVisible(sal_True);
+ }
+}
+
+
+
+
+void PaneGroup::HidePanes (void)
+{
+ vector<PaneDescriptor>::iterator iPane;
+ for (iPane=maPanes.begin(); iPane!=maPanes.end(); ++iPane)
+ {
+ iPane->mpPaneDescriptor->mxBorderWindow->setVisible(sal_False);
+ iPane->mpPaneDescriptor->mxContentWindow->setVisible(sal_False);
+ }
+}
+
+
+
+
+//===== PaneDescriptor ========================================================
+
+PaneDescriptor::PaneDescriptor (const PresenterPaneContainer::SharedPaneDescriptor& rpDescriptor)
+ : mpPaneDescriptor(rpDescriptor),
+ mnLeft(rpDescriptor->mnLeft),
+ mnTop(rpDescriptor->mnTop),
+ mnRight(rpDescriptor->mnRight),
+ mnBottom(rpDescriptor->mnBottom)
+{
+}
+
+
+
+
+void PaneDescriptor::Restore (void) const
+{
+ mpPaneDescriptor->mnLeft = mnLeft;
+ mpPaneDescriptor->mnTop = mnTop;
+ mpPaneDescriptor->mnRight = mnRight;
+ mpPaneDescriptor->mnBottom = mnBottom;
+}
+
+
+
+
+//===== MultiAnimation ========================================================
+
+MultiAnimation::MultiAnimation (const sal_uInt32 nDuration)
+ : PresenterAnimation(0, nDuration, 1000/50),
+ maAnimations()
+{
+}
+
+
+
+
+void MultiAnimation::AddAnimation (const Animation& rAnimation)
+{
+ maAnimations.push_back(rAnimation);
+}
+
+
+
+
+void MultiAnimation::Run (const double nProgress, const sal_uInt64 nCurrentTime)
+{
+ (void)nCurrentTime;
+ vector<Animation>::const_iterator iAnimation (maAnimations.begin());
+ vector<Animation>::const_iterator iEnd (maAnimations.end());
+ for ( ; iAnimation!=iEnd; ++iAnimation)
+ (*iAnimation)(nProgress);
+}
+
+
+
+
+//===== functors ==============================================================
+
+void InterpolatePosition (
+ const ::boost::function<void(geometry::RealPoint2D)>& rSetter,
+ double nP,
+ const geometry::RealPoint2D rInitialBox,
+ const geometry::RealPoint2D rFinalBox)
+{
+ const double nQ (1 - nP);
+
+ OSL_TRACE("InterpolatePosition %f\n", nP);
+ rSetter(
+ geometry::RealPoint2D(
+ nQ * rInitialBox.X + nP * rFinalBox.X,
+ nQ * rInitialBox.Y + nP * rFinalBox.Y));
+}
+
+
+
+
+template<typename T>
+ void InterpolateValue (
+ const ::boost::function<void(T)>& rSetter,
+ double nP,
+ const T aInitialValue,
+ const T aFinalValue)
+{
+ const double nQ (1 - nP);
+
+ rSetter(T(nQ * aInitialValue + nP * aFinalValue));
+}
+
+
+
+
+void SpriteTransform(
+ const rtl::Reference<PresenterPaneContainer>& rpPaneContainer,
+ const Reference<XResourceId>& rxPaneId,
+ const Reference<awt::XWindow>& rxSpriteOwnerWindow,
+ const ::boost::shared_ptr<PresenterPaintManager>& rpPaintManager,
+ const bool bAppear,
+ const double nX,
+ const double nInitialTop,
+ const double nFinalTop,
+ const double nP)
+{
+ OSL_ASSERT(rpPaintManager.get()!=NULL);
+
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ rpPaneContainer->FindPaneId(rxPaneId));
+ if (pDescriptor.get() != NULL
+ && ! pDescriptor->maSpriteProvider.empty()
+ && pDescriptor->mxBorderWindow.is())
+ {
+ ::boost::shared_ptr<PresenterSprite> pSprite (pDescriptor->maSpriteProvider());
+ if (pSprite.get())
+ {
+ // There seems to be a problem with sprites not correctly
+ // invalidating the background when being transformed. As a
+ // workaround invalidate the background in the bounding box of
+ // the sprite before the transformation.
+ rpPaintManager->Invalidate(
+ rxSpriteOwnerWindow,
+ awt::Rectangle(
+ sal::static_int_cast<sal_Int32>(pSprite->GetLocation().X),
+ sal::static_int_cast<sal_Int32>(pSprite->GetLocation().Y),
+ sal::static_int_cast<sal_Int32>(pSprite->GetSize().Width),
+ sal::static_int_cast<sal_Int32>(pSprite->GetSize().Height)));
+
+ const double nYScale (bAppear ? nP : 1-nP);
+ pSprite->Transform(geometry::AffineMatrix2D(
+ 1, 0, 0,
+ 0, nYScale, 0));
+ pSprite->MoveTo(
+ geometry::RealPoint2D(nX, nYScale*nFinalTop + (1-nYScale)*nInitialTop));
+ pSprite->Show();
+
+ pDescriptor->mxBorderWindow->setVisible(sal_True);
+ }
+ }
+}
+
+
+
+
+void SpritePaneMove (
+ const rtl::Reference<PresenterPaneContainer>& rpPaneContainer,
+ const Reference<XResourceId>& rxPaneId,
+ const geometry::RealPoint2D& rLocation)
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ rpPaneContainer->FindPaneId(rxPaneId));
+ if (pDescriptor.get() != NULL
+ && ! pDescriptor->maSpriteProvider.empty()
+ && pDescriptor->mxBorderWindow.is())
+ {
+ ::boost::shared_ptr<PresenterSprite> pSprite (pDescriptor->maSpriteProvider());
+ if (pSprite.get() != NULL)
+ {
+ pDescriptor->mxBorderWindow->setVisible(sal_True);
+ pSprite->MoveTo(rLocation);
+ }
+ }
+}
+
+
+
+
+geometry::RealPoint2D GetLocation (const geometry::RealRectangle2D& rBox)
+{
+ return geometry::RealPoint2D(rBox.X1, rBox.Y1);
+}
+
+
+
+
+geometry::RealSize2D GetSize (const geometry::RealRectangle2D& rBox)
+{
+ return geometry::RealSize2D(rBox.X2-rBox.X1, rBox.Y2-rBox.Y1);
+}
+
+} // end of anonymous namespace
+
+
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneAnimator.hxx b/sdext/source/presenter/PresenterPaneAnimator.hxx
new file mode 100644
index 000000000000..1e044b4a647b
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneAnimator.hxx
@@ -0,0 +1,97 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_PANE_ANIMATOR_HXXs
+#define SDEXT_PRESENTER_PRESENTER_PANE_ANIMATOR_HXX
+
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/drawing/framework/XResourceId.hpp>
+#include <com/sun/star/geometry/RealPoint2D.hpp>
+#include <com/sun/star/rendering/XBitmap.hpp>
+#include <com/sun/star/rendering/XSprite.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <rtl/ref.hxx>
+#include <vector>
+#include <boost/function.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterController;
+class PresenterPaneContainer;
+class PresenterWindowManager;
+
+/** Base class for different types of pane animations. Each of these
+ animations either shows or hides a single pane.
+*/
+class PresenterPaneAnimator
+ : private ::boost::noncopyable
+{
+public:
+ virtual void ShowPane (void) = 0;
+ virtual void HidePane (void) = 0;
+
+protected:
+ virtual ~PresenterPaneAnimator (void) {};
+};
+
+
+typedef ::std::vector< ::boost::function<void()> > EndActions;
+
+::boost::shared_ptr<PresenterPaneAnimator> CreateUnfoldInCenterAnimator (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions);
+
+::boost::shared_ptr<PresenterPaneAnimator> CreateMoveInFromBottomAnimator (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions);
+
+::boost::shared_ptr<PresenterPaneAnimator> CreateTransparentOverlay (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const bool bAnimate,
+ const EndActions& rShowEndActions,
+ const EndActions& rEndEndActions);
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneBase.cxx b/sdext/source/presenter/PresenterPaneBase.cxx
new file mode 100644
index 000000000000..39283673c23d
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneBase.cxx
@@ -0,0 +1,561 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterPaneBase.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterController.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterPaintManager.hxx"
+#include "PresenterTextView.hxx"
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/XWindow2.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/lang/XMultiComponentFactory.hpp>
+#include <com/sun/star/drawing/CanvasFeature.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/TexturingMode.hpp>
+#include <osl/mutex.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+namespace sdext { namespace presenter {
+
+//===== PresenterPaneBase =====================================================
+
+PresenterPaneBase::PresenterPaneBase (
+ const Reference<XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterPaneBaseInterfaceBase(m_aMutex),
+ mpPresenterController(rpPresenterController),
+ mxParentWindow(),
+ mxBorderWindow(),
+ mxBorderCanvas(),
+ mxContentWindow(),
+ mxContentCanvas(),
+ mxPaneId(),
+ mxBorderPainter(),
+ mxPresenterHelper(),
+ msTitle(),
+ mxComponentContext(rxContext),
+ mpViewBackground(),
+ mbHasCallout(false),
+ maCalloutAnchor()
+{
+ if (mpPresenterController.get() != NULL)
+ mxPresenterHelper = mpPresenterController->GetPresenterHelper();
+}
+
+
+
+
+PresenterPaneBase::~PresenterPaneBase (void)
+{
+}
+
+
+
+
+void PresenterPaneBase::disposing (void)
+{
+ if (mxBorderWindow.is())
+ {
+ mxBorderWindow->removeWindowListener(this);
+ mxBorderWindow->removePaintListener(this);
+ }
+
+ {
+ Reference<XComponent> xComponent (mxContentCanvas, UNO_QUERY);
+ mxContentCanvas = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ {
+ Reference<XComponent> xComponent (mxContentWindow, UNO_QUERY);
+ mxContentWindow = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ {
+ Reference<XComponent> xComponent (mxBorderCanvas, UNO_QUERY);
+ mxBorderCanvas = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ {
+ Reference<XComponent> xComponent (mxBorderWindow, UNO_QUERY);
+ mxBorderWindow = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ mxComponentContext = NULL;
+}
+
+
+
+
+void PresenterPaneBase::SetTitle (const OUString& rsTitle)
+{
+ msTitle = rsTitle;
+
+ OSL_ASSERT(mpPresenterController.get()!=NULL);
+ OSL_ASSERT(mpPresenterController->GetPaintManager().get()!=NULL);
+
+ mpPresenterController->GetPaintManager()->Invalidate(mxBorderWindow);
+}
+
+
+
+
+::rtl::OUString PresenterPaneBase::GetTitle (void) const
+{
+ return msTitle;
+}
+
+
+
+
+Reference<drawing::framework::XPaneBorderPainter>
+ PresenterPaneBase::GetPaneBorderPainter (void) const
+{
+ return mxBorderPainter;
+}
+
+
+
+
+void PresenterPaneBase::SetCalloutAnchor (const css::awt::Point& rCalloutAnchor)
+{
+ mbHasCallout = true;
+ // Anchor is given in the coorindate system of the parent window.
+ // Transform it into the local coordinate system.
+ maCalloutAnchor = rCalloutAnchor;
+ const awt::Rectangle aBorderBox (mxBorderWindow->getPosSize());
+ maCalloutAnchor.X -= aBorderBox.X;
+ maCalloutAnchor.Y -= aBorderBox.Y;
+
+ // Move the bottom of the border window so that it goes through the
+ // callout anchor (special case for bottom callout).
+ sal_Int32 nHeight (rCalloutAnchor.Y - aBorderBox.Y);
+ if (mxBorderPainter.is() && mxPaneId.is())
+ nHeight += mxBorderPainter->getCalloutOffset(mxPaneId->getResourceURL()).Y;
+
+ if (nHeight != aBorderBox.Height)
+ {
+ mxBorderWindow->setPosSize(
+ aBorderBox.X,
+ aBorderBox.Y,
+ aBorderBox.Width,
+ nHeight,
+ awt::PosSize::HEIGHT);
+ }
+
+ mpPresenterController->GetPaintManager()->Invalidate(mxBorderWindow);
+}
+
+
+
+
+awt::Point PresenterPaneBase::GetCalloutAnchor (void) const
+{
+ return maCalloutAnchor;
+}
+
+
+
+
+::boost::shared_ptr<PresenterTextView> PresenterPaneBase::GetTextViewForTitle (void)
+{
+ ::boost::shared_ptr<PresenterTextView> pTextView(
+ new PresenterTextView(
+ mxComponentContext,
+ mxBorderCanvas));
+ pTextView->SetText(msTitle);
+ return pTextView;
+}
+
+
+
+
+//----- XInitialization -------------------------------------------------------
+
+void SAL_CALL PresenterPaneBase::initialize (const Sequence<Any>& rArguments)
+ throw (Exception, RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if ( ! mxComponentContext.is())
+ {
+ throw RuntimeException(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterSpritePane: missing component context")),
+ static_cast<XWeak*>(this));
+ }
+
+ if (rArguments.getLength() == 5 || rArguments.getLength() == 6)
+ {
+ try
+ {
+ // Get the resource id from the first argument.
+ if ( ! (rArguments[0] >>= mxPaneId))
+ {
+ throw lang::IllegalArgumentException(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterPane: invalid pane id")),
+ static_cast<XWeak*>(this),
+ 0);
+ }
+
+ if ( ! (rArguments[1] >>= mxParentWindow))
+ {
+ throw lang::IllegalArgumentException(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterPane: invalid parent window")),
+ static_cast<XWeak*>(this),
+ 1);
+ }
+
+ Reference<rendering::XSpriteCanvas> xParentCanvas;
+ if ( ! (rArguments[2] >>= xParentCanvas))
+ {
+ throw lang::IllegalArgumentException(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterPane: invalid parent canvas")),
+ static_cast<XWeak*>(this),
+ 2);
+ }
+
+ if ( ! (rArguments[3] >>= msTitle))
+ {
+ throw lang::IllegalArgumentException(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterPane: invalid title")),
+ static_cast<XWeak*>(this),
+ 3);
+ }
+
+ if ( ! (rArguments[4] >>= mxBorderPainter))
+ {
+ throw lang::IllegalArgumentException(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterPane: invalid border painter")),
+ static_cast<XWeak*>(this),
+ 4);
+ }
+
+ bool bIsWindowVisibleOnCreation (true);
+ if (rArguments.getLength()>5 && ! (rArguments[5] >>= bIsWindowVisibleOnCreation))
+ {
+ throw lang::IllegalArgumentException(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterPane: invalid window visibility flag")),
+ static_cast<XWeak*>(this),
+ 5);
+ }
+
+ CreateWindows(mxParentWindow, bIsWindowVisibleOnCreation);
+
+ if (mxBorderWindow.is())
+ {
+ mxBorderWindow->addWindowListener(this);
+ mxBorderWindow->addPaintListener(this);
+ }
+
+ CreateCanvases(mxParentWindow, xParentCanvas);
+
+ // Raise new windows.
+ ToTop();
+ }
+ catch (Exception&)
+ {
+ mxContentWindow = NULL;
+ mxComponentContext = NULL;
+ throw;
+ }
+ }
+ else
+ {
+ throw RuntimeException(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterSpritePane: invalid number of arguments")),
+ static_cast<XWeak*>(this));
+ }
+}
+
+
+
+
+//----- XResourceId -----------------------------------------------------------
+
+Reference<XResourceId> SAL_CALL PresenterPaneBase::getResourceId (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ return mxPaneId;
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterPaneBase::isAnchorOnly (void)
+ throw (RuntimeException)
+{
+ return true;
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterPaneBase::windowResized (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+
+void SAL_CALL PresenterPaneBase::windowMoved (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+void SAL_CALL PresenterPaneBase::windowShown (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+void SAL_CALL PresenterPaneBase::windowHidden (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL PresenterPaneBase::disposing (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ if (rEvent.Source == mxBorderWindow)
+ {
+ mxBorderWindow = NULL;
+ }
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+
+void PresenterPaneBase::CreateWindows (
+ const Reference<awt::XWindow>& rxParentWindow,
+ const bool bIsWindowVisibleOnCreation)
+{
+ if (mxPresenterHelper.is() && rxParentWindow.is())
+ {
+
+ mxBorderWindow = mxPresenterHelper->createWindow(
+ rxParentWindow,
+ sal_False,
+ bIsWindowVisibleOnCreation,
+ sal_False,
+ sal_False);
+ mxContentWindow = mxPresenterHelper->createWindow(
+ mxBorderWindow,
+ sal_False,
+ bIsWindowVisibleOnCreation,
+ sal_False,
+ sal_False);
+ }
+}
+
+
+
+
+Reference<awt::XWindow> PresenterPaneBase::GetBorderWindow (void) const
+{
+ return mxBorderWindow;
+}
+
+
+
+
+void PresenterPaneBase::ToTop (void)
+{
+ if (mxPresenterHelper.is())
+ mxPresenterHelper->toTop(mxContentWindow);
+}
+
+
+
+
+void PresenterPaneBase::SetBackground (const SharedBitmapDescriptor& rpBackground)
+{
+ mpViewBackground = rpBackground;
+}
+
+
+
+
+void PresenterPaneBase::PaintBorderBackground (
+ const awt::Rectangle& rBorderBox,
+ const awt::Rectangle& rUpdateBox)
+{
+ (void)rBorderBox;
+ (void)rUpdateBox;
+ /*
+ // The outer box of the border is given. We need the center and inner
+ // box as well.
+ awt::Rectangle aCenterBox (
+ mxBorderPainter->removeBorder(
+ mxPaneId->getResourceURL(),
+ rBorderBox,
+ drawing::framework::BorderType_OUTER_BORDER));
+ awt::Rectangle aInnerBox (
+ mxBorderPainter->removeBorder(
+ mxPaneId->getResourceURL(),
+ rBorderBox,
+ drawing::framework::BorderType_TOTAL_BORDER));
+ mpPresenterController->GetCanvasHelper()->Paint(
+ mpViewBackground,
+ mxBorderCanvas,
+ rUpdateBox,
+ aCenterBox,
+ aInnerBox);
+ */
+}
+
+
+
+
+void PresenterPaneBase::PaintBorder (const awt::Rectangle& rUpdateBox)
+{
+ OSL_ASSERT(mxPaneId.is());
+
+ if (mxBorderPainter.is() && mxBorderWindow.is() && mxBorderCanvas.is())
+ {
+ awt::Rectangle aBorderBox (mxBorderWindow->getPosSize());
+ awt::Rectangle aLocalBorderBox (0,0, aBorderBox.Width, aBorderBox.Height);
+
+ PaintBorderBackground(aLocalBorderBox, rUpdateBox);
+
+ if (mbHasCallout)
+ mxBorderPainter->paintBorderWithCallout(
+ mxPaneId->getResourceURL(),
+ mxBorderCanvas,
+ aLocalBorderBox,
+ rUpdateBox,
+ msTitle,
+ maCalloutAnchor);
+ else
+ mxBorderPainter->paintBorder(
+ mxPaneId->getResourceURL(),
+ mxBorderCanvas,
+ aLocalBorderBox,
+ rUpdateBox,
+ msTitle);
+ }
+}
+
+
+
+
+void PresenterPaneBase::LayoutContextWindow (void)
+{
+ OSL_ASSERT(mxPaneId.is());
+ OSL_ASSERT(mxBorderWindow.is());
+ OSL_ASSERT(mxContentWindow.is());
+ if (mxBorderPainter.is() && mxPaneId.is() && mxBorderWindow.is() && mxContentWindow.is())
+ {
+ const awt::Rectangle aBorderBox (mxBorderWindow->getPosSize());
+ const awt::Rectangle aInnerBox (mxBorderPainter->removeBorder(
+ mxPaneId->getResourceURL(),
+ aBorderBox,
+ drawing::framework::BorderType_TOTAL_BORDER));
+ mxContentWindow->setPosSize(
+ aInnerBox.X - aBorderBox.X,
+ aInnerBox.Y - aBorderBox.Y,
+ aInnerBox.Width,
+ aInnerBox.Height,
+ awt::PosSize::POSSIZE);
+ }
+}
+
+
+
+
+bool PresenterPaneBase::IsVisible (void) const
+{
+ Reference<awt::XWindow2> xWindow2 (mxBorderPainter, UNO_QUERY);
+ if (xWindow2.is())
+ return xWindow2->isVisible();
+
+ return false;
+}
+
+
+
+
+void PresenterPaneBase::ThrowIfDisposed (void)
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterPane object has already been disposed")),
+ static_cast<uno::XWeak*>(this));
+ }
+}
+
+
+
+
+} } // end of namespace ::sd::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneBase.hxx b/sdext/source/presenter/PresenterPaneBase.hxx
new file mode 100644
index 000000000000..16ea4e515299
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneBase.hxx
@@ -0,0 +1,176 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SD_PRESENTER_PRESENTER_PANE_BASE_HXX
+#define SD_PRESENTER_PRESENTER_PANE_BASE_HXX
+
+#include "PresenterTheme.hxx"
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase4.hxx>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XPaneBorderPainter.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <rtl/ref.hxx>
+#include <boost/noncopyable.hpp>
+
+namespace css = ::com::sun::star;
+namespace cssu = ::com::sun::star::uno;
+
+
+namespace sdext { namespace presenter {
+
+class PresenterController;
+class PresenterTextView;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper4 <
+ css::drawing::framework::XPane,
+ css::lang::XInitialization,
+ css::awt::XWindowListener,
+ css::awt::XPaintListener
+ > PresenterPaneBaseInterfaceBase;
+}
+
+
+/** Base class of the panes used by the presenter screen. Pane objects are
+ stored in the PresenterPaneContainer. Sizes and positions are
+ controlled by the PresenterWindowManager. Interactive positioning and
+ resizing is managed by the PresenterPaneBorderManager. Borders around
+ panes are painted by the PresenterPaneBorderPainter.
+*/
+class PresenterPaneBase
+ : protected ::cppu::BaseMutex,
+ private ::boost::noncopyable,
+ public PresenterPaneBaseInterfaceBase
+{
+public:
+ PresenterPaneBase (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterPaneBase (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ css::uno::Reference<css::awt::XWindow> GetBorderWindow (void) const;
+ void SetBackground (const SharedBitmapDescriptor& rpBackground);
+ void SetTitle (const ::rtl::OUString& rsTitle);
+ ::rtl::OUString GetTitle (void) const;
+ css::uno::Reference<css::drawing::framework::XPaneBorderPainter> GetPaneBorderPainter (void) const;
+ void SetCalloutAnchor (const css::awt::Point& rAnchorPosition);
+ css::awt::Point GetCalloutAnchor (void) const;
+
+ ::boost::shared_ptr<PresenterTextView> GetTextViewForTitle (void);
+
+ // XInitialization
+
+ virtual void SAL_CALL initialize (const css::uno::Sequence<css::uno::Any>& rArguments)
+ throw (css::uno::Exception, css::uno::RuntimeException);
+
+
+ // XResourceId
+
+ virtual css::uno::Reference<css::drawing::framework::XResourceId> SAL_CALL getResourceId (void)
+ throw (css::uno::RuntimeException);
+
+ virtual sal_Bool SAL_CALL isAnchorOnly (void)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // lang::XEventListener
+
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+protected:
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::awt::XWindow> mxParentWindow;
+ css::uno::Reference<css::awt::XWindow> mxBorderWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxBorderCanvas;
+ css::uno::Reference<css::awt::XWindow> mxContentWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxContentCanvas;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxPaneId;
+ css::uno::Reference<css::drawing::framework::XPaneBorderPainter> mxBorderPainter;
+ css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
+ ::rtl::OUString msTitle;
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ SharedBitmapDescriptor mpViewBackground;
+ bool mbHasCallout;
+ css::awt::Point maCalloutAnchor;
+
+ virtual void CreateCanvases (
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const css::uno::Reference<css::rendering::XSpriteCanvas>& rxParentCanvas) = 0;
+
+ void CreateWindows (
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const bool bIsWindowVisibleOnCreation);
+ void PaintBorderBackground (
+ const css::awt::Rectangle& rCenterBox,
+ const css::awt::Rectangle& rUpdateBox);
+ void PaintBorder (const css::awt::Rectangle& rUpdateRectangle);
+ void ToTop (void);
+ void LayoutContextWindow (void);
+ bool IsVisible (void) const;
+
+ /** This method throws a DisposedException when the object has already been
+ disposed.
+ */
+ void ThrowIfDisposed (void)
+ throw (css::lang::DisposedException);
+};
+
+} } // end of namespace ::sd::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneBorderManager.cxx b/sdext/source/presenter/PresenterPaneBorderManager.cxx
new file mode 100644
index 000000000000..6150d0ce8914
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneBorderManager.cxx
@@ -0,0 +1,585 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+// The body of this file is only used when PresenterWindowManager defines
+// the preprocessor symbol ENABLE_PANE_RESIZING, which by default is not the
+// case.
+#ifdef ENABLE_PANE_RESIZING
+
+#include "PresenterPaneBorderManager.hxx"
+#include "PresenterController.hxx"
+#include "PresenterPaintManager.hxx"
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/SystemPointer.hpp>
+#include <com/sun/star/awt/WindowAttribute.hpp>
+#include <com/sun/star/awt/WindowDescriptor.hpp>
+#include <com/sun/star/awt/WindowClass.hpp>
+#include <com/sun/star/awt/XWindow2.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/lang/XMultiComponentFactory.hpp>
+#include <cppuhelper/compbase1.hxx>
+#include <osl/mutex.hxx>
+#include <boost/weak_ptr.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using ::rtl::OUString;
+
+namespace sdext { namespace presenter {
+
+//===== Service ===============================================================
+
+
+OUString PresenterPaneBorderManager::getImplementationName_static (void)
+{
+ return OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.PresenterPaneBorderManager"));
+}
+
+
+
+
+Sequence<OUString> PresenterPaneBorderManager::getSupportedServiceNames_static (void)
+{
+ static const ::rtl::OUString sServiceName(
+ RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.PresenterPaneBorderManager"));
+ return Sequence<rtl::OUString>(&sServiceName, 1);
+}
+
+
+
+
+Reference<XInterface> PresenterPaneBorderManager::Create (const Reference<uno::XComponentContext>& rxContext)
+ SAL_THROW((css::uno::Exception))
+{
+ return Reference<XInterface>(static_cast<XWeak*>(
+ new PresenterPaneBorderManager(rxContext, NULL)));
+}
+
+
+
+
+//===== PresenterPaneBorderManager ============================================
+
+PresenterPaneBorderManager::PresenterPaneBorderManager (
+ const Reference<XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterPaneBorderManagerInterfaceBase(m_aMutex),
+ mpPresenterController(rpPresenterController),
+ mxComponentContext(rxContext),
+ mxPresenterHelper(),
+ maWindowList(),
+ mnPointerType(),
+ maDragAnchor(),
+ meDragType(Outside),
+ mxOuterDragWindow(),
+ mxInnerDragWindow(),
+ mxPointer()
+{
+ Reference<lang::XMultiComponentFactory> xFactory (rxContext->getServiceManager());
+ if (xFactory.is())
+ {
+ mxPointer = Reference<awt::XPointer>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.Pointer")),
+ rxContext),
+ UNO_QUERY_THROW);
+
+ mxPresenterHelper = Reference<drawing::XPresenterHelper>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.PresenterHelper")),
+ rxContext),
+ UNO_QUERY_THROW);
+ }
+}
+
+
+
+
+PresenterPaneBorderManager::~PresenterPaneBorderManager (void)
+{
+}
+
+
+
+
+void PresenterPaneBorderManager::disposing (void)
+{
+ WindowList::const_iterator iDescriptor;
+ for (iDescriptor=maWindowList.begin(); iDescriptor!=maWindowList.end(); ++iDescriptor)
+ {
+ iDescriptor->first->removeMouseListener(this);
+ iDescriptor->first->removeMouseMotionListener(this);
+ }
+ maWindowList.clear();
+}
+
+
+
+
+namespace {
+const static sal_Int32 mnOutside = 0;
+const static sal_Int32 mnLeft = 0x01;
+const static sal_Int32 mnHorizontalCenter = 0x02;
+const static sal_Int32 mnRight = 0x04;
+const static sal_Int32 mnTop = 0x10;
+const static sal_Int32 mnVerticalCenter = 0x20;
+const static sal_Int32 mnBottom = 0x40;
+}
+
+PresenterPaneBorderManager::BorderElement
+ PresenterPaneBorderManager::ClassifyBorderElementUnderMouse (
+ const Reference<awt::XWindow>& rxOuterWindow,
+ const Reference<awt::XWindow>& rxInnerWindow,
+ const awt::Point aPosition) const
+{
+ OSL_ASSERT(rxOuterWindow.is());
+ OSL_ASSERT(rxInnerWindow.is());
+
+ awt::Rectangle aOuterBox (rxOuterWindow->getPosSize());
+ const awt::Rectangle aInnerBox (rxInnerWindow->getPosSize());
+
+ // Coordinates of the pointer position are given in the window
+ // coordinate system. Therefore the upper left corner of the outer box
+ // is the origin.
+ aOuterBox.X = 0;
+ aOuterBox.Y = 0;
+
+ sal_Int32 nCode = 0;
+
+ // Add horizontal classification to nCode.
+ if (aPosition.X < aInnerBox.X)
+ if (aPosition.X < aOuterBox.X)
+ nCode = mnOutside;
+ else
+ nCode = mnLeft;
+ else if (aPosition.X >= aInnerBox.X+aInnerBox.Width)
+ if (aPosition.X >= aOuterBox.X+aOuterBox.Width)
+ nCode = mnOutside;
+ else
+ nCode = mnRight;
+ else
+ nCode = mnHorizontalCenter;
+
+ // Add vertical classification to nCode.
+ if (aPosition.Y < aInnerBox.Y)
+ if (aPosition.Y < aOuterBox.Y)
+ nCode |= mnOutside;
+ else
+ nCode |= mnTop;
+ else if (aPosition.Y >= aInnerBox.Y+aInnerBox.Height)
+ if (aPosition.Y >= aOuterBox.Y+aOuterBox.Height)
+ nCode |= mnOutside;
+ else
+ nCode |= mnBottom;
+ else
+ nCode |= mnVerticalCenter;
+
+ // Translate bits in nCode into BorderElement value.
+ switch (nCode)
+ {
+ case mnOutside | mnOutside:
+ case mnOutside | mnLeft:
+ case mnOutside | mnRight:
+ case mnOutside | mnHorizontalCenter:
+ case mnTop | mnOutside:
+ case mnBottom | mnOutside:
+ case mnVerticalCenter | mnOutside:
+ default:
+ return Outside;
+
+ case mnVerticalCenter | mnHorizontalCenter:
+ return Content;
+
+ case mnTop | mnLeft:
+ return TopLeft;
+
+ case mnTop | mnRight:
+ return TopRight;
+
+ case mnTop | mnHorizontalCenter:
+ return Top;
+
+ case mnBottom | mnLeft:
+ return BottomLeft;
+
+ case mnBottom | mnRight:
+ return BottomRight;
+
+ case mnBottom | mnHorizontalCenter:
+ return Bottom;
+
+ case mnVerticalCenter | mnLeft:
+ return Left;
+
+ case mnVerticalCenter | mnRight:
+ return Right;
+ }
+}
+
+
+
+
+//----- XInitialization -------------------------------------------------------
+
+void SAL_CALL PresenterPaneBorderManager::initialize (const Sequence<Any>& rArguments)
+ throw (Exception, RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if (rArguments.getLength()%2 == 1 && mxComponentContext.is())
+ {
+ try
+ {
+ mxParentWindow = Reference<awt::XWindow>(rArguments[0], UNO_QUERY_THROW);
+
+ // Get the outer and inner windows from the argument list and
+ // build a window list of it.
+ for (sal_Int32 nIndex=1; nIndex<rArguments.getLength(); nIndex+=2)
+ {
+ Reference<awt::XWindow> xOuterWindow (rArguments[nIndex], UNO_QUERY_THROW);
+ Reference<awt::XWindow> xInnerWindow (rArguments[nIndex+1], UNO_QUERY_THROW);
+
+ maWindowList.push_back(WindowDescriptor(xOuterWindow,xInnerWindow));
+
+ xOuterWindow->addMouseListener(this);
+ xOuterWindow->addMouseMotionListener(this);
+ }
+ }
+ catch (RuntimeException&)
+ {
+ PresenterPaneBorderManager::disposing();
+ throw;
+ }
+ }
+ else
+ {
+ throw RuntimeException(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterPane: invalid number of arguments")),
+ static_cast<XWeak*>(this));
+ }
+}
+
+
+
+
+//----- XMouseListener --------------------------------------------------------
+
+void SAL_CALL PresenterPaneBorderManager::mousePressed (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+
+ // Find window descriptor of the window that has been clicked.
+ WindowList::const_iterator iDescriptor;
+ for (iDescriptor=maWindowList.begin(); iDescriptor!=maWindowList.end(); ++iDescriptor)
+ if (iDescriptor->first == rEvent.Source)
+ break;
+
+ if (iDescriptor != maWindowList.end())
+ {
+ // Prepare dragging.
+ mxOuterDragWindow = iDescriptor->first;
+ mxInnerDragWindow = iDescriptor->second;
+ OSL_ASSERT(mxOuterDragWindow.is() && mxInnerDragWindow.is());
+ const awt::Rectangle aOuterBox (mxOuterDragWindow->getPosSize());
+ maDragAnchor.X = rEvent.X + aOuterBox.X;
+ maDragAnchor.Y = rEvent.Y + aOuterBox.Y;
+ meDragType = ClassifyBorderElementUnderMouse(
+ mxOuterDragWindow,
+ mxInnerDragWindow,
+ awt::Point(rEvent.X, rEvent.Y));
+ }
+}
+
+
+
+
+void SAL_CALL PresenterPaneBorderManager::mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+
+ ReleaseMouse(mxOuterDragWindow);
+ meDragType = PresenterPaneBorderManager::Outside;
+ mxOuterDragWindow = NULL;
+ mxInnerDragWindow = NULL;
+}
+
+
+
+
+void SAL_CALL PresenterPaneBorderManager::mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterPaneBorderManager::mouseExited (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+
+ ReleaseMouse(mxOuterDragWindow);
+ meDragType = PresenterPaneBorderManager::Outside;
+ mxOuterDragWindow = NULL;
+ mxInnerDragWindow = NULL;
+}
+
+
+
+
+//----- XMouseMotionListener --------------------------------------------------
+
+void SAL_CALL PresenterPaneBorderManager::mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+
+ WindowList::const_iterator iDescriptor;
+ for (iDescriptor=maWindowList.begin(); iDescriptor!=maWindowList.end(); ++iDescriptor)
+ if (iDescriptor->first == rEvent.Source)
+ break;
+ if (iDescriptor != maWindowList.end())
+ {
+ // Choose pointer shape according to position in the window border.
+ switch (ClassifyBorderElementUnderMouse(
+ iDescriptor->first,
+ iDescriptor->second,
+ awt::Point(rEvent.X,rEvent.Y)))
+ {
+ case PresenterPaneBorderManager::Top:
+ mnPointerType = awt::SystemPointer::MOVE;
+ break;
+ case PresenterPaneBorderManager::TopLeft:
+ mnPointerType = awt::SystemPointer::WINDOW_NWSIZE;
+ break;
+ case PresenterPaneBorderManager::TopRight:
+ mnPointerType = awt::SystemPointer::WINDOW_NESIZE;
+ break;
+ case PresenterPaneBorderManager::Left:
+ mnPointerType = awt::SystemPointer::WINDOW_WSIZE;
+ break;
+ case PresenterPaneBorderManager::Right:
+ mnPointerType = awt::SystemPointer::WINDOW_ESIZE;
+ break;
+ case PresenterPaneBorderManager::BottomLeft:
+ mnPointerType = awt::SystemPointer::WINDOW_SWSIZE;
+ break;
+ case PresenterPaneBorderManager::BottomRight:
+ mnPointerType = awt::SystemPointer::WINDOW_SESIZE;
+ break;
+ case PresenterPaneBorderManager::Bottom:
+ mnPointerType = awt::SystemPointer::WINDOW_SSIZE;
+ break;
+
+ case PresenterPaneBorderManager::Content:
+ case PresenterPaneBorderManager::Outside:
+ default:
+ mnPointerType = awt::SystemPointer::ARROW;
+ break;
+ }
+
+ // Make the pointer shape visible.
+ Reference<awt::XWindowPeer> xPeer (iDescriptor->first, UNO_QUERY);
+ if (xPeer.is())
+ {
+ if (mxPointer.is())
+ mxPointer->setType(mnPointerType);
+ xPeer->setPointer(mxPointer);
+ }
+ }
+}
+
+
+
+
+void SAL_CALL PresenterPaneBorderManager::mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+
+ if ( ! mxOuterDragWindow.is())
+ return;
+
+ CaptureMouse(mxOuterDragWindow);
+
+ const awt::Rectangle aOldBox (mxOuterDragWindow->getPosSize());
+ const sal_Int32 nX = rEvent.X + aOldBox.X;
+ const sal_Int32 nY = rEvent.Y + aOldBox.Y;
+ const sal_Int32 nDiffX = nX - maDragAnchor.X;
+ const sal_Int32 nDiffY = nY - maDragAnchor.Y;
+ maDragAnchor.X = nX;
+ maDragAnchor.Y = nY;
+
+ const sal_Int32 nOldRight = aOldBox.X + aOldBox.Width;
+ const sal_Int32 nOldBottom = aOldBox.Y + aOldBox.Height;
+
+ awt::Rectangle aBox (aOldBox);
+ sal_Int32 nRight = aBox.X + aBox.Width;
+ sal_Int32 nBottom = aBox.Y + aBox.Height;
+
+ // Update position and/or size according to initial pointer position
+ // inside the window border.
+ switch (meDragType)
+ {
+ case PresenterPaneBorderManager::Top:
+ aBox.X += nDiffX; aBox.Y += nDiffY;
+ nRight += nDiffX; nBottom += nDiffY;
+ break;
+ case PresenterPaneBorderManager::TopLeft:
+ aBox.X += nDiffX; aBox.Y += nDiffY;
+ break;
+ case PresenterPaneBorderManager::TopRight:
+ nRight += nDiffX; aBox.Y += nDiffY;
+ break;
+ case PresenterPaneBorderManager::Left:
+ aBox.X += nDiffX;
+ break;
+ case PresenterPaneBorderManager::Right:
+ nRight += nDiffX;
+ break;
+ case PresenterPaneBorderManager::BottomLeft:
+ aBox.X += nDiffX; nBottom += nDiffY;
+ break;
+ case PresenterPaneBorderManager::BottomRight:
+ nRight += nDiffX; nBottom += nDiffY;
+ break;
+ case PresenterPaneBorderManager::Bottom:
+ nBottom += nDiffY;
+ break;
+ default: break;
+ }
+
+ aBox.Width = nRight - aBox.X;
+ aBox.Height = nBottom - aBox.Y;
+ if (aBox.Width > 20
+ && aBox.Height > 20)
+ {
+ // Set position and/or size of the border window to the new values.
+ sal_Int16 nFlags (0);
+ if (aBox.X != aOldBox.X)
+ nFlags |= awt::PosSize::X;
+ if (aBox.Y != aOldBox.Y)
+ nFlags |= awt::PosSize::Y;
+ if (aBox.Width != aOldBox.Width)
+ nFlags |= awt::PosSize::WIDTH;
+ if (aBox.Height != aOldBox.Height)
+ nFlags |= awt::PosSize::HEIGHT;
+ mxOuterDragWindow->setPosSize(aBox.X, aBox.Y, aBox.Width, aBox.Height, nFlags);
+
+ // Invalidate that is or was covered by the border window before and
+ // after the move/resize.
+ if (mpPresenterController.get() != NULL)
+ {
+ const sal_Int32 nLeft = ::std::min(aOldBox.X,aBox.X);
+ const sal_Int32 nTop = ::std::min(aOldBox.Y,aBox.Y);
+ const sal_Int32 nWidth = ::std::max(nOldRight,nRight) - nLeft;
+ const sal_Int32 nHeight = ::std::max(nOldBottom,nBottom) - nTop;
+
+ OSL_ASSERT(mpPresenterController->GetPaintManager().get()!=NULL);
+ mpPresenterController->GetPaintManager()->Invalidate(
+ mxParentWindow,
+ ::awt::Rectangle(nLeft,nTop,nWidth-1,nHeight-1));
+ }
+ }
+}
+
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL PresenterPaneBorderManager::disposing (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ WindowList::iterator iDescriptor;
+ for (iDescriptor=maWindowList.begin(); iDescriptor!=maWindowList.end(); ++iDescriptor)
+ if (iDescriptor->first == rEvent.Source)
+ {
+ maWindowList.erase(iDescriptor);
+ break;
+ }
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+
+void PresenterPaneBorderManager::CaptureMouse (const Reference<awt::XWindow>& rxWindow)
+{
+ if (mxPresenterHelper.is())
+ mxPresenterHelper->captureMouse(rxWindow);
+}
+
+
+
+
+void PresenterPaneBorderManager::ReleaseMouse (const Reference<awt::XWindow>& rxWindow)
+{
+ if (mxPresenterHelper.is())
+ mxPresenterHelper->releaseMouse(rxWindow);
+}
+
+
+
+
+void PresenterPaneBorderManager::ThrowIfDisposed (void)
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterPaneBorderManager object has already been disposed")),
+ static_cast<uno::XWeak*>(this));
+ }
+}
+
+
+
+
+} } // end of namespace ::sd::presenter
+
+#endif // ENABLE_PANE_RESIZING
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneBorderManager.hxx b/sdext/source/presenter/PresenterPaneBorderManager.hxx
new file mode 100644
index 000000000000..b9b25f330cfa
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneBorderManager.hxx
@@ -0,0 +1,176 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_PANE_BORDER_MANAGER_HXX
+#define SDEXT_PRESENTER_PRESENTER_PANE_BORDER_MANAGER_HXX
+
+// The body of this file is only used when PresenterWindowManager defines
+// the preprocessor symbol ENABLE_PANE_RESIZING, which by default is not the
+// case.
+#ifdef ENABLE_PANE_RESIZING
+
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase3.hxx>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/awt/XGraphics.hpp>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/awt/XPointer.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <rtl/ref.hxx>
+#include <tools/svborder.hxx>
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+
+namespace sdext { namespace presenter {
+
+class PresenterController;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper3 <
+ css::lang::XInitialization,
+ css::awt::XMouseListener,
+ css::awt::XMouseMotionListener
+ > PresenterPaneBorderManagerInterfaceBase;
+}
+
+
+/** Manage the interactive moving and resizing of panes.
+*/
+class PresenterPaneBorderManager
+ : private ::boost::noncopyable,
+ protected ::cppu::BaseMutex,
+ public PresenterPaneBorderManagerInterfaceBase
+{
+public:
+ PresenterPaneBorderManager (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterPaneBorderManager (void);
+
+ virtual void SAL_CALL disposing (void);
+
+
+ static ::rtl::OUString getImplementationName_static (void);
+ static css::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static (void);
+ static css::uno::Reference<css::uno::XInterface> Create(
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext)
+ SAL_THROW((css::uno::Exception));
+
+
+ // XInitialization
+
+ virtual void SAL_CALL initialize (const css::uno::Sequence<css::uno::Any>& rArguments)
+ throw (css::uno::Exception, css::uno::RuntimeException);
+
+
+ // XMouseListener
+
+ virtual void SAL_CALL mousePressed (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseExited (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseMotionListener
+
+ virtual void SAL_CALL mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // lang::XEventListener
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+private:
+ enum BorderElement { Top, TopLeft, TopRight, Left, Right, BottomLeft, BottomRight, Bottom,
+ Content, Outside };
+
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
+ /** The parent window is stored so that it can be invalidated when one
+ of its children is resized or moved. It is assumed to be the parent
+ window of all outer windows stored in maWindowList.
+ */
+ css::uno::Reference<css::awt::XWindow> mxParentWindow;
+ typedef ::std::pair<css::uno::Reference<css::awt::XWindow>,
+ css::uno::Reference<css::awt::XWindow> > WindowDescriptor;
+ typedef ::std::vector<WindowDescriptor> WindowList;
+ WindowList maWindowList;
+
+ sal_Int32 mnPointerType;
+ css::awt::Point maDragAnchor;
+ BorderElement meDragType;
+ css::uno::Reference<css::awt::XWindow> mxOuterDragWindow;
+ css::uno::Reference<css::awt::XWindow> mxInnerDragWindow;
+ css::uno::Reference<css::awt::XPointer> mxPointer;
+
+ BorderElement ClassifyBorderElementUnderMouse (
+ const css::uno::Reference<css::awt::XWindow>& rxOuterDragWindow,
+ const css::uno::Reference<css::awt::XWindow>& rxInnerDragWindow,
+ const css::awt::Point aPosition) const;
+ void CreateWindows (const css::uno::Reference<css::awt::XWindow>& rxParentWindow);
+ void CaptureMouse (const css::uno::Reference<css::awt::XWindow>& rxWindow);
+ void ReleaseMouse (const css::uno::Reference<css::awt::XWindow>& rxWindow);
+
+ /** This method throws a DisposedException when the object has already been
+ disposed.
+ */
+ void ThrowIfDisposed (void)
+ throw (css::lang::DisposedException);
+};
+
+} } // end of namespace ::sd::presenter
+
+#endif // ENABLE_PANE_RESIZING
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneBorderPainter.cxx b/sdext/source/presenter/PresenterPaneBorderPainter.cxx
new file mode 100644
index 000000000000..7a27dda1806b
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneBorderPainter.cxx
@@ -0,0 +1,1104 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterPaneBorderPainter.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterConfigurationAccess.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterTheme.hxx"
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/SimpleFontMetric.hpp>
+#include <com/sun/star/awt/XFont.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <com/sun/star/graphic/XGraphicRenderer.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/FillRule.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+#include <com/sun/star/rendering/XIntegerBitmap.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+#include <map>
+#include <vector>
+#include <boost/shared_ptr.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using ::rtl::OUString;
+
+#define A2S(s) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)))
+
+namespace sdext { namespace presenter {
+
+namespace {
+ class BorderSize
+ {
+ public:
+ BorderSize (void);
+ BorderSize (const BorderSize& rBorderSize);
+ BorderSize& operator= (const BorderSize& rBoderSize);
+ sal_Int32 mnLeft;
+ sal_Int32 mnTop;
+ sal_Int32 mnRight;
+ sal_Int32 mnBottom;
+ };
+
+ class RendererPaneStyle
+ {
+ public:
+ RendererPaneStyle (
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme,
+ const OUString& rsStyleName);
+
+ awt::Rectangle AddBorder (
+ const awt::Rectangle& rBox,
+ drawing::framework::BorderType eBorderType) const;
+ awt::Rectangle RemoveBorder (
+ const awt::Rectangle& rBox,
+ drawing::framework::BorderType eBorderType) const;
+ const Reference<rendering::XCanvasFont> GetFont (
+ const Reference<rendering::XCanvas>& rxCanvas) const;
+
+ SharedBitmapDescriptor mpTopLeft;
+ SharedBitmapDescriptor mpTop;
+ SharedBitmapDescriptor mpTopRight;
+ SharedBitmapDescriptor mpLeft;
+ SharedBitmapDescriptor mpRight;
+ SharedBitmapDescriptor mpBottomLeft;
+ SharedBitmapDescriptor mpBottom;
+ SharedBitmapDescriptor mpBottomRight;
+ SharedBitmapDescriptor mpBottomCallout;
+ SharedBitmapDescriptor mpBackground;
+ SharedBitmapDescriptor mpEmpty;
+ PresenterTheme::SharedFontDescriptor mpFont;
+ sal_Int32 mnFontXOffset;
+ sal_Int32 mnFontYOffset;
+ enum Anchor { AnchorLeft, AnchorRight, AnchorCenter } meFontAnchor;
+ BorderSize maInnerBorderSize;
+ BorderSize maOuterBorderSize;
+ BorderSize maTotalBorderSize;
+ enum Side { Left, Top, Right, Bottom };
+ private:
+ void UpdateBorderSizes (void);
+ SharedBitmapDescriptor GetBitmap(
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme,
+ const OUString& rsStyleName,
+ const OUString& rsBitmapName);
+ };
+}
+
+
+
+class PresenterPaneBorderPainter::Renderer
+{
+public:
+ Renderer (
+ const Reference<XComponentContext>& rxContext,
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme);
+ ~Renderer (void);
+
+ void SetCanvas (const Reference<rendering::XCanvas>& rxCanvas);
+ void PaintBorder (
+ const OUString& rsTitle,
+ const awt::Rectangle& rBBox,
+ const awt::Rectangle& rUpdateBox,
+ const OUString& rsPaneURL);
+ void PaintTitle (
+ const OUString& rsTitle,
+ const ::boost::shared_ptr<RendererPaneStyle>& rpStyle,
+ const awt::Rectangle& rUpdateBox,
+ const awt::Rectangle& rOuterBox,
+ const awt::Rectangle& rInnerBox,
+ const bool bPaintBackground);
+ void SetupClipping (
+ const awt::Rectangle& rUpdateBox,
+ const awt::Rectangle& rOuterBox,
+ const OUString& rsPaneStyleName);
+ ::boost::shared_ptr<RendererPaneStyle> GetRendererPaneStyle (const OUString& rsResourceURL);
+ void SetCalloutAnchor (
+ const awt::Point& rCalloutAnchor);
+
+private:
+ ::boost::shared_ptr<PresenterTheme> mpTheme;
+ typedef ::std::map<OUString, ::boost::shared_ptr<RendererPaneStyle> > RendererPaneStyleContainer;
+ RendererPaneStyleContainer maRendererPaneStyles;
+ Reference<rendering::XCanvas> mxCanvas;
+ Reference<drawing::XPresenterHelper> mxPresenterHelper;
+ css::rendering::ViewState maViewState;
+ Reference<rendering::XPolyPolygon2D> mxViewStateClip;
+ bool mbHasCallout;
+ awt::Point maCalloutAnchor;
+
+ void PaintBitmap(
+ const awt::Rectangle& rBox,
+ const awt::Rectangle& rUpdateBox,
+ const sal_Int32 nXPosition,
+ const sal_Int32 nYPosition,
+ const sal_Int32 nStartOffset,
+ const sal_Int32 nEndOffset,
+ const bool bExpand,
+ const SharedBitmapDescriptor& rpBitmap,
+ const SharedBitmapDescriptor& rpBackgroundBitmap);
+};
+
+
+
+
+// ===== PresenterPaneBorderPainter ===========================================
+
+PresenterPaneBorderPainter::PresenterPaneBorderPainter (
+ const Reference<XComponentContext>& rxContext)
+ : PresenterPaneBorderPainterInterfaceBase(m_aMutex),
+ mxContext(rxContext),
+ mpTheme(),
+ mpRenderer()
+{
+}
+
+
+
+
+PresenterPaneBorderPainter::~PresenterPaneBorderPainter (void)
+{
+}
+
+
+
+
+//----- XPaneBorderPainter ----------------------------------------------------
+
+awt::Rectangle SAL_CALL PresenterPaneBorderPainter::addBorder (
+ const rtl::OUString& rsPaneBorderStyleName,
+ const css::awt::Rectangle& rRectangle,
+ drawing::framework::BorderType eBorderType)
+ throw(css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ ProvideTheme();
+
+ return AddBorder(rsPaneBorderStyleName, rRectangle, eBorderType);
+}
+
+
+
+
+awt::Rectangle SAL_CALL PresenterPaneBorderPainter::removeBorder (
+ const rtl::OUString& rsPaneBorderStyleName,
+ const css::awt::Rectangle& rRectangle,
+ drawing::framework::BorderType eBorderType)
+ throw(css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ ProvideTheme();
+
+ return RemoveBorder(rsPaneBorderStyleName, rRectangle, eBorderType);
+}
+
+
+
+
+void SAL_CALL PresenterPaneBorderPainter::paintBorder (
+ const rtl::OUString& rsPaneBorderStyleName,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rOuterBorderRectangle,
+ const css::awt::Rectangle& rRepaintArea,
+ const rtl::OUString& rsTitle)
+ throw(css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ // Early reject paints completely outside the repaint area.
+ if (rRepaintArea.X >= rOuterBorderRectangle.X+rOuterBorderRectangle.Width
+ || rRepaintArea.Y >= rOuterBorderRectangle.Y+rOuterBorderRectangle.Height
+ || rRepaintArea.X+rRepaintArea.Width <= rOuterBorderRectangle.X
+ || rRepaintArea.Y+rRepaintArea.Height <= rOuterBorderRectangle.Y)
+ {
+ return;
+ }
+ ProvideTheme(rxCanvas);
+
+ if (mpRenderer.get() != NULL)
+ {
+ mpRenderer->SetCanvas(rxCanvas);
+ mpRenderer->SetupClipping(
+ rRepaintArea,
+ rOuterBorderRectangle,
+ rsPaneBorderStyleName);
+ mpRenderer->PaintBorder(
+ rsTitle,
+ rOuterBorderRectangle,
+ rRepaintArea,
+ rsPaneBorderStyleName);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterPaneBorderPainter::paintBorderWithCallout (
+ const rtl::OUString& rsPaneBorderStyleName,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rOuterBorderRectangle,
+ const css::awt::Rectangle& rRepaintArea,
+ const rtl::OUString& rsTitle,
+ const css::awt::Point& rCalloutAnchor)
+ throw(css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ // Early reject paints completely outside the repaint area.
+ if (rRepaintArea.X >= rOuterBorderRectangle.X+rOuterBorderRectangle.Width
+ || rRepaintArea.Y >= rOuterBorderRectangle.Y+rOuterBorderRectangle.Height
+ || rRepaintArea.X+rRepaintArea.Width <= rOuterBorderRectangle.X
+ || rRepaintArea.Y+rRepaintArea.Height <= rOuterBorderRectangle.Y)
+ {
+ return;
+ }
+ ProvideTheme(rxCanvas);
+
+ if (mpRenderer.get() != NULL)
+ {
+ mpRenderer->SetCanvas(rxCanvas);
+ mpRenderer->SetupClipping(
+ rRepaintArea,
+ rOuterBorderRectangle,
+ rsPaneBorderStyleName);
+ mpRenderer->SetCalloutAnchor(rCalloutAnchor);
+ mpRenderer->PaintBorder(
+ rsTitle,
+ rOuterBorderRectangle,
+ rRepaintArea,
+ rsPaneBorderStyleName);
+ }
+}
+
+
+
+
+awt::Point SAL_CALL PresenterPaneBorderPainter::getCalloutOffset (
+ const rtl::OUString& rsPaneBorderStyleName)
+ throw(css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ ProvideTheme();
+ if (mpRenderer.get() != NULL)
+ {
+ const ::boost::shared_ptr<RendererPaneStyle> pRendererPaneStyle(
+ mpRenderer->GetRendererPaneStyle(rsPaneBorderStyleName));
+ if (pRendererPaneStyle.get() != NULL
+ && pRendererPaneStyle->mpBottomCallout.get() != NULL)
+ {
+ return awt::Point (
+ 0,
+ pRendererPaneStyle->mpBottomCallout->mnHeight
+ - pRendererPaneStyle->mpBottomCallout->mnYHotSpot);
+ }
+ }
+
+ return awt::Point(0,0);
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+bool PresenterPaneBorderPainter::ProvideTheme (const Reference<rendering::XCanvas>& rxCanvas)
+{
+ bool bModified (false);
+
+ if ( ! mxContext.is())
+ return false;
+
+ if (mpTheme.get() != NULL)
+ {
+ // Check if the theme already has a canvas.
+ if ( ! mpTheme->HasCanvas())
+ {
+ mpTheme->ProvideCanvas(rxCanvas);
+ bModified = true;
+ }
+ }
+ else
+ {
+ mpTheme.reset(new PresenterTheme(mxContext, OUString(), rxCanvas));
+ bModified = true;
+ }
+
+ if (mpTheme.get() != NULL && bModified)
+ {
+ if (mpRenderer.get() == NULL)
+ mpRenderer.reset(new Renderer(mxContext, mpTheme));
+ else
+ mpRenderer->SetCanvas(rxCanvas);
+ }
+
+ return bModified;
+}
+
+
+
+
+bool PresenterPaneBorderPainter::ProvideTheme (void)
+{
+ if (mpTheme.get() == NULL)
+ {
+ // Create a theme without bitmaps (no canvas => no bitmaps).
+ return ProvideTheme(NULL);
+ }
+ else
+ {
+ // When there already is a theme then without a canvas we can not
+ // add anything new.
+ return false;
+ }
+}
+
+
+
+
+bool PresenterPaneBorderPainter::HasTheme (void) const
+{
+ return mpTheme.get()!=NULL && mpRenderer.get()!=NULL;
+}
+
+
+
+
+void PresenterPaneBorderPainter::SetTheme (const ::boost::shared_ptr<PresenterTheme>& rpTheme)
+{
+ mpTheme = rpTheme;
+ if (mpRenderer.get() == NULL)
+ mpRenderer.reset(new Renderer(mxContext, mpTheme));
+}
+
+
+
+
+awt::Rectangle PresenterPaneBorderPainter::AddBorder (
+ const ::rtl::OUString& rsPaneURL,
+ const awt::Rectangle& rInnerBox,
+ const css::drawing::framework::BorderType eBorderType) const
+{
+ if (mpRenderer.get() != NULL)
+ {
+ const ::boost::shared_ptr<RendererPaneStyle> pRendererPaneStyle(mpRenderer->GetRendererPaneStyle(rsPaneURL));
+ if (pRendererPaneStyle.get() != NULL)
+ return pRendererPaneStyle->AddBorder(rInnerBox, eBorderType);
+ }
+ return rInnerBox;
+}
+
+
+
+
+awt::Rectangle PresenterPaneBorderPainter::RemoveBorder (
+ const ::rtl::OUString& rsPaneURL,
+ const css::awt::Rectangle& rOuterBox,
+ const css::drawing::framework::BorderType eBorderType) const
+{
+ if (mpRenderer.get() != NULL)
+ {
+ const ::boost::shared_ptr<RendererPaneStyle> pRendererPaneStyle(mpRenderer->GetRendererPaneStyle(rsPaneURL));
+ if (pRendererPaneStyle.get() != NULL)
+ return pRendererPaneStyle->RemoveBorder(rOuterBox, eBorderType);
+ }
+ return rOuterBox;
+}
+
+
+
+
+void PresenterPaneBorderPainter::ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterPaneBorderPainter object has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+
+
+//===== PresenterPaneBorderPainter::Renderer =====================================
+
+
+PresenterPaneBorderPainter::Renderer::Renderer (
+ const Reference<XComponentContext>& rxContext,
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme)
+ : mpTheme(rpTheme),
+ maRendererPaneStyles(),
+ mxCanvas(),
+ mxPresenterHelper(),
+ maViewState(geometry::AffineMatrix2D(1,0,0, 0,1,0), NULL),
+ mxViewStateClip(),
+ mbHasCallout(false),
+ maCalloutAnchor()
+{
+ (void)rxContext;
+
+ Reference<lang::XMultiComponentFactory> xFactory (rxContext->getServiceManager());
+ if (xFactory.is())
+ {
+ mxPresenterHelper = Reference<drawing::XPresenterHelper>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.PresenterHelper")),
+ rxContext),
+ UNO_QUERY_THROW);
+ }
+}
+
+
+
+
+PresenterPaneBorderPainter::Renderer::~Renderer (void)
+{
+}
+
+
+
+
+void PresenterPaneBorderPainter::Renderer::SetCanvas (const Reference<rendering::XCanvas>& rxCanvas)
+{
+ if (mxCanvas != rxCanvas)
+ {
+ mxCanvas = rxCanvas;
+ }
+}
+
+
+
+
+void PresenterPaneBorderPainter::Renderer::PaintBorder (
+ const OUString& rsTitle,
+ const awt::Rectangle& rBBox,
+ const awt::Rectangle& rUpdateBox,
+ const OUString& rsPaneURL)
+{
+ if ( ! mxCanvas.is())
+ return;
+
+ // Create the outer and inner border of the, ahm, border.
+ ::boost::shared_ptr<RendererPaneStyle> pStyle (GetRendererPaneStyle(rsPaneURL));
+ if (pStyle.get() == NULL)
+ return;
+
+ awt::Rectangle aOuterBox (rBBox);
+ awt::Rectangle aCenterBox (
+ pStyle->RemoveBorder(aOuterBox, drawing::framework::BorderType_OUTER_BORDER));
+ awt::Rectangle aInnerBox (
+ pStyle->RemoveBorder(aOuterBox, drawing::framework::BorderType_TOTAL_BORDER));
+
+ // Prepare references for all used bitmaps.
+ SharedBitmapDescriptor pTop (pStyle->mpTop);
+ SharedBitmapDescriptor pTopLeft (pStyle->mpTopLeft);
+ SharedBitmapDescriptor pTopRight (pStyle->mpTopRight);
+ SharedBitmapDescriptor pLeft (pStyle->mpLeft);
+ SharedBitmapDescriptor pRight (pStyle->mpRight);
+ SharedBitmapDescriptor pBottomLeft (pStyle->mpBottomLeft);
+ SharedBitmapDescriptor pBottomRight (pStyle->mpBottomRight);
+ SharedBitmapDescriptor pBottom (pStyle->mpBottom);
+ SharedBitmapDescriptor pBackground (pStyle->mpBackground);
+
+ // Paint the sides.
+ PaintBitmap(aCenterBox, rUpdateBox, 0,-1,
+ pTopLeft->mnXOffset, pTopRight->mnXOffset, true, pTop, pBackground);
+ PaintBitmap(aCenterBox, rUpdateBox, -1,0,
+ pTopLeft->mnYOffset, pBottomLeft->mnYOffset, true, pLeft, pBackground);
+ PaintBitmap(aCenterBox, rUpdateBox, +1,0,
+ pTopRight->mnYOffset, pBottomRight->mnYOffset, true, pRight, pBackground);
+ if (mbHasCallout && pStyle->mpBottomCallout->GetNormalBitmap().is())
+ {
+ const sal_Int32 nCalloutWidth (pStyle->mpBottomCallout->mnWidth);
+ sal_Int32 nCalloutX (maCalloutAnchor.X - pStyle->mpBottomCallout->mnXHotSpot
+ - (aCenterBox.X - aOuterBox.X));
+ if (nCalloutX < pBottomLeft->mnXOffset + aCenterBox.X)
+ nCalloutX = pBottomLeft->mnXOffset + aCenterBox.X;
+ if (nCalloutX > pBottomRight->mnXOffset + aCenterBox.X + aCenterBox.Width)
+ nCalloutX = pBottomRight->mnXOffset + aCenterBox.X + aCenterBox.Width;
+ // Paint bottom callout.
+ PaintBitmap(aCenterBox, rUpdateBox, 0,+1, nCalloutX,0, false, pStyle->mpBottomCallout, pBackground);
+ // Paint regular bottom bitmap left and right.
+ PaintBitmap(aCenterBox, rUpdateBox, 0,+1,
+ pBottomLeft->mnXOffset, nCalloutX-aCenterBox.Width, true, pBottom, pBackground);
+ PaintBitmap(aCenterBox, rUpdateBox, 0,+1,
+ nCalloutX+nCalloutWidth, pBottomRight->mnXOffset, true, pBottom, pBackground);
+ }
+ else
+ {
+ // Stretch the bottom bitmap over the full width.
+ PaintBitmap(aCenterBox, rUpdateBox, 0,+1,
+ pBottomLeft->mnXOffset, pBottomRight->mnXOffset, true, pBottom, pBackground);
+ }
+
+ // Paint the corners.
+ PaintBitmap(aCenterBox, rUpdateBox, -1,-1, 0,0, false, pTopLeft, pBackground);
+ PaintBitmap(aCenterBox, rUpdateBox, +1,-1, 0,0, false, pTopRight, pBackground);
+ PaintBitmap(aCenterBox, rUpdateBox, -1,+1, 0,0, false, pBottomLeft, pBackground);
+ PaintBitmap(aCenterBox, rUpdateBox, +1,+1, 0,0, false, pBottomRight, pBackground);
+
+ // Paint the title.
+ PaintTitle(rsTitle, pStyle, rUpdateBox, aOuterBox, aInnerBox, false);
+
+ // In a double buffering environment request to make the changes visible.
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+}
+
+
+
+
+void PresenterPaneBorderPainter::Renderer::PaintTitle (
+ const OUString& rsTitle,
+ const ::boost::shared_ptr<RendererPaneStyle>& rpStyle,
+ const awt::Rectangle& rUpdateBox,
+ const awt::Rectangle& rOuterBox,
+ const awt::Rectangle& rInnerBox,
+ bool bPaintBackground)
+{
+ if ( ! mxCanvas.is())
+ return;
+
+ if (rsTitle.getLength() == 0)
+ return;
+
+ Reference<rendering::XCanvasFont> xFont (rpStyle->GetFont(mxCanvas));
+ if ( ! xFont.is())
+ return;
+
+ rendering::StringContext aContext (
+ rsTitle,
+ 0,
+ rsTitle.getLength());
+ Reference<rendering::XTextLayout> xLayout (xFont->createTextLayout(
+ aContext,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT,
+ 0));
+ if ( ! xLayout.is())
+ return;
+
+ geometry::RealRectangle2D aBox (xLayout->queryTextBounds());
+ const double nTextHeight = aBox.Y2 - aBox.Y1;
+ const double nTextWidth = aBox.X2 - aBox.X1;
+ double nX = rInnerBox.X + (rInnerBox.Width - nTextWidth)/2;
+ const sal_Int32 nTitleBarHeight = rInnerBox.Y - rOuterBox.Y - 1;
+ double nY = rOuterBox.Y + (nTitleBarHeight - nTextHeight) / 2 - aBox.Y1;
+ if (nY >= rInnerBox.Y)
+ nY = rInnerBox.Y - 1;
+ switch (rpStyle->meFontAnchor)
+ {
+ default:
+ case RendererPaneStyle::AnchorLeft:
+ nX = rInnerBox.X;
+ break;
+ case RendererPaneStyle::AnchorRight:
+ nX = rInnerBox.X + rInnerBox.Width - nTextWidth;
+ break;
+ case RendererPaneStyle::AnchorCenter:
+ nX = rInnerBox.X + (rInnerBox.Width - nTextWidth)/2;
+ break;
+ }
+ nX += rpStyle->mnFontXOffset;
+ nY += rpStyle->mnFontYOffset;
+
+ if (rUpdateBox.X >= nX+nTextWidth
+ || rUpdateBox.Y >= nY+nTextHeight
+ || rUpdateBox.X+rUpdateBox.Width <= nX
+ || rUpdateBox.Y+rUpdateBox.Height <= nY)
+ {
+ return;
+ }
+
+ rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,nX, 0,1,nY),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ if (bPaintBackground)
+ {
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, util::Color(0x00ffffff));
+ Sequence<Sequence<geometry::RealPoint2D> > aPolygons(1);
+ aPolygons[0] = Sequence<geometry::RealPoint2D>(4);
+ aPolygons[0][0] = geometry::RealPoint2D(0, -nTextHeight);
+ aPolygons[0][1] = geometry::RealPoint2D(0, 0);
+ aPolygons[0][2] = geometry::RealPoint2D(nTextWidth, 0);
+ aPolygons[0][3] = geometry::RealPoint2D(nTextWidth, -nTextHeight);
+ Reference<rendering::XPolyPolygon2D> xPolygon (
+ mxCanvas->getDevice()->createCompatibleLinePolyPolygon(aPolygons), UNO_QUERY);
+ if (xPolygon.is())
+ xPolygon->setClosed(0, sal_True);
+ mxCanvas->fillPolyPolygon(
+ xPolygon,
+ maViewState,
+ aRenderState);
+ }
+ else
+ {
+ PresenterCanvasHelper::SetDeviceColor(
+ aRenderState,
+ rpStyle->mpFont->mnColor);
+
+ mxCanvas->drawText(
+ aContext,
+ xFont,
+ maViewState,
+ aRenderState,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT);
+ }
+}
+
+
+
+::boost::shared_ptr<RendererPaneStyle>
+ PresenterPaneBorderPainter::Renderer::GetRendererPaneStyle (const OUString& rsResourceURL)
+{
+ OSL_ASSERT(mpTheme.get()!=NULL);
+
+ RendererPaneStyleContainer::const_iterator iStyle (maRendererPaneStyles.find(rsResourceURL));
+ if (iStyle == maRendererPaneStyles.end())
+ {
+ OUString sPaneStyleName (RTL_CONSTASCII_USTRINGPARAM("DefaultRendererPaneStyle"));
+
+ // Get pane layout name for resource URL.
+ const OUString sStyleName (mpTheme->GetStyleName(rsResourceURL));
+ if (sStyleName.getLength() > 0)
+ sPaneStyleName = sStyleName;
+
+ // Create a new pane style object and initialize it with bitmaps.
+ ::boost::shared_ptr<RendererPaneStyle> pStyle (
+ new RendererPaneStyle(mpTheme,sPaneStyleName));
+ iStyle = maRendererPaneStyles.insert(
+ RendererPaneStyleContainer::value_type(rsResourceURL, pStyle)).first;
+ }
+ if (iStyle != maRendererPaneStyles.end())
+ return iStyle->second;
+ else
+ return ::boost::shared_ptr<RendererPaneStyle>();
+}
+
+
+
+
+void PresenterPaneBorderPainter::Renderer::SetCalloutAnchor (
+ const awt::Point& rCalloutAnchor)
+{
+ mbHasCallout = true;
+ maCalloutAnchor = rCalloutAnchor;
+}
+
+
+
+
+void PresenterPaneBorderPainter::Renderer::PaintBitmap(
+ const awt::Rectangle& rBox,
+ const awt::Rectangle& rUpdateBox,
+ const sal_Int32 nXPosition,
+ const sal_Int32 nYPosition,
+ const sal_Int32 nStartOffset,
+ const sal_Int32 nEndOffset,
+ const bool bExpand,
+ const SharedBitmapDescriptor& rpBitmap,
+ const SharedBitmapDescriptor& rpBackgroundBitmap)
+{
+ (void)rpBackgroundBitmap;
+
+ bool bUseCanvas (mxCanvas.is());
+ if ( ! bUseCanvas)
+ return;
+
+ if (rpBitmap->mnWidth<=0 || rpBitmap->mnHeight<=0)
+ return;
+
+ Reference<rendering::XBitmap> xBitmap (rpBitmap->GetNormalBitmap(), UNO_QUERY);
+ if ( ! xBitmap.is())
+ return;
+
+ // Calculate position, and for side bitmaps, the size.
+ sal_Int32 nX = 0;
+ sal_Int32 nY = 0;
+ sal_Int32 nW = rpBitmap->mnWidth;
+ sal_Int32 nH = rpBitmap->mnHeight;
+ if (nXPosition < 0)
+ {
+ nX = rBox.X - rpBitmap->mnWidth + rpBitmap->mnXOffset;
+ }
+ else if (nXPosition > 0)
+ {
+ nX = rBox.X + rBox.Width + rpBitmap->mnXOffset;
+ }
+ else
+ {
+ nX = rBox.X + nStartOffset;
+ if (bExpand)
+ nW = rBox.Width - nStartOffset + nEndOffset;
+ }
+
+ if (nYPosition < 0)
+ {
+ nY = rBox.Y - rpBitmap->mnHeight + rpBitmap->mnYOffset;
+ }
+ else if (nYPosition > 0)
+ {
+ nY = rBox.Y + rBox.Height + rpBitmap->mnYOffset;
+ }
+ else
+ {
+ nY = rBox.Y + nStartOffset;
+ if (bExpand)
+ nH = rBox.Height - nStartOffset + nEndOffset;
+ }
+
+ // Do not paint when bitmap area does not intersect with update box.
+ if (nX >= rUpdateBox.X + rUpdateBox.Width
+ || nX+nW <= rUpdateBox.X
+ || nY >= rUpdateBox.Y + rUpdateBox.Height
+ || nY+nH <= rUpdateBox.Y)
+ {
+ return;
+ }
+
+ /*
+ Reference<rendering::XBitmap> xMaskedBitmap (
+ PresenterBitmapHelper::FillMaskedWithColor (
+ mxCanvas,
+ Reference<rendering::XIntegerBitmap>(xBitmap, UNO_QUERY),
+ rBitmap.mxMaskBitmap,
+ 0x00ff0000,
+ rBackgroundBitmap.maReplacementColor));
+ if (xMaskedBitmap.is())
+ xBitmap = xMaskedBitmap;
+ else if (rBitmap.mxMaskBitmap.is() && mxPresenterHelper.is())
+ {
+ const static sal_Int32 nOutsideMaskColor (0x00ff0000);
+ Reference<rendering::XIntegerBitmap> xMask (
+ mxPresenterHelper->createMask(
+ mxCanvas,
+ rBitmap.mxMaskBitmap,
+ nOutsideMaskColor,
+ false));
+ xBitmap = mxPresenterHelper->applyBitmapMaskWithColor(
+ mxCanvas,
+ Reference<rendering::XIntegerBitmap>(xBitmap, UNO_QUERY),
+ xMask,
+ rBackgroundBitmap.maReplacementColor);
+ }
+ */
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(
+ double(nW)/rpBitmap->mnWidth, 0, nX,
+ 0, double(nH)/rpBitmap->mnHeight, nY),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::OVER);
+
+ if (xBitmap.is())
+ mxCanvas->drawBitmap(
+ xBitmap,
+ maViewState,
+ aRenderState);
+}
+
+
+
+
+void PresenterPaneBorderPainter::Renderer::SetupClipping (
+ const awt::Rectangle& rUpdateBox,
+ const awt::Rectangle& rOuterBox,
+ const OUString& rsPaneStyleName)
+{
+ mxViewStateClip = NULL;
+ maViewState.Clip = NULL;
+
+ if ( ! mxCanvas.is())
+ return;
+
+ ::boost::shared_ptr<RendererPaneStyle> pStyle (GetRendererPaneStyle(rsPaneStyleName));
+ if (pStyle.get() == NULL)
+ {
+ mxViewStateClip = PresenterGeometryHelper::CreatePolygon(
+ rUpdateBox,
+ mxCanvas->getDevice());
+ }
+ else
+ {
+ awt::Rectangle aInnerBox (
+ pStyle->RemoveBorder(rOuterBox, drawing::framework::BorderType_TOTAL_BORDER));
+ ::std::vector<awt::Rectangle> aRectangles;
+ aRectangles.push_back(PresenterGeometryHelper::Intersection(rUpdateBox, rOuterBox));
+ aRectangles.push_back(PresenterGeometryHelper::Intersection(rUpdateBox, aInnerBox));
+ mxViewStateClip = PresenterGeometryHelper::CreatePolygon(
+ aRectangles,
+ mxCanvas->getDevice());
+ if (mxViewStateClip.is())
+ mxViewStateClip->setFillRule(rendering::FillRule_EVEN_ODD);
+ }
+ maViewState.Clip = mxViewStateClip;
+}
+
+
+
+namespace {
+
+//===== BorderSize ============================================================
+
+BorderSize::BorderSize (void)
+ : mnLeft(0),
+ mnTop(0),
+ mnRight(0),
+ mnBottom(0)
+{
+}
+
+
+
+
+BorderSize::BorderSize (const BorderSize& rBorderSize)
+ : mnLeft(rBorderSize.mnLeft),
+ mnTop(rBorderSize.mnTop),
+ mnRight(rBorderSize.mnRight),
+ mnBottom(rBorderSize.mnBottom)
+{
+}
+
+
+
+
+BorderSize& BorderSize::operator= (const BorderSize& rBorderSize)
+{
+ if (&rBorderSize != this)
+ {
+ mnLeft = rBorderSize.mnLeft;
+ mnTop = rBorderSize.mnTop;
+ mnRight = rBorderSize.mnRight;
+ mnBottom = rBorderSize.mnBottom;
+ }
+ return *this;
+}
+
+
+
+
+//===== RendererPaneStyle ============================================================
+
+RendererPaneStyle::RendererPaneStyle (
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme,
+ const OUString& rsStyleName)
+ : mpTopLeft(),
+ mpTop(),
+ mpTopRight(),
+ mpLeft(),
+ mpRight(),
+ mpBottomLeft(),
+ mpBottom(),
+ mpBottomRight(),
+ mpBottomCallout(),
+ mpBackground(),
+ mpEmpty(new PresenterBitmapDescriptor()),
+ mpFont(),
+ mnFontXOffset(0),
+ mnFontYOffset(0),
+ meFontAnchor(AnchorCenter),
+ maInnerBorderSize(),
+ maOuterBorderSize(),
+ maTotalBorderSize()
+{
+ if (rpTheme.get() != NULL)
+ {
+ mpTopLeft = GetBitmap(rpTheme, rsStyleName, A2S("TopLeft"));
+ mpTop = GetBitmap(rpTheme, rsStyleName, A2S("Top"));
+ mpTopRight = GetBitmap(rpTheme, rsStyleName, A2S("TopRight"));
+ mpLeft = GetBitmap(rpTheme, rsStyleName, A2S("Left"));
+ mpRight = GetBitmap(rpTheme, rsStyleName, A2S("Right"));
+ mpBottomLeft = GetBitmap(rpTheme, rsStyleName, A2S("BottomLeft"));
+ mpBottom = GetBitmap(rpTheme, rsStyleName, A2S("Bottom"));
+ mpBottomRight = GetBitmap(rpTheme, rsStyleName, A2S("BottomRight"));
+ mpBottomCallout = GetBitmap(rpTheme, rsStyleName, A2S("BottomCallout"));
+ mpBackground = GetBitmap(rpTheme, OUString(), A2S("Background"));
+
+ // Get font description.
+ mpFont = rpTheme->GetFont(rsStyleName);
+
+ OUString sAnchor (RTL_CONSTASCII_USTRINGPARAM("Left"));
+ if (mpFont.get() != NULL)
+ {
+ sAnchor = mpFont->msAnchor;
+ mnFontXOffset = mpFont->mnXOffset;
+ mnFontYOffset = mpFont->mnYOffset;
+ }
+
+ if (sAnchor == OUString(RTL_CONSTASCII_USTRINGPARAM("Left")))
+ meFontAnchor = AnchorLeft;
+ else if (sAnchor == OUString(RTL_CONSTASCII_USTRINGPARAM("Right")))
+ meFontAnchor = AnchorRight;
+ else if (sAnchor == OUString(RTL_CONSTASCII_USTRINGPARAM("Center")))
+ meFontAnchor = AnchorCenter;
+ else
+ meFontAnchor = AnchorCenter;
+
+ // Get border sizes.
+ try
+ {
+ ::std::vector<sal_Int32> aInnerBorder (rpTheme->GetBorderSize(rsStyleName, false));
+ OSL_ASSERT(aInnerBorder.size()==4);
+ maInnerBorderSize.mnLeft = aInnerBorder[0];
+ maInnerBorderSize.mnTop = aInnerBorder[1];
+ maInnerBorderSize.mnRight = aInnerBorder[2];
+ maInnerBorderSize.mnBottom = aInnerBorder[3];
+
+ ::std::vector<sal_Int32> aOuterBorder (rpTheme->GetBorderSize(rsStyleName, true));
+ OSL_ASSERT(aOuterBorder.size()==4);
+ maOuterBorderSize.mnLeft = aOuterBorder[0];
+ maOuterBorderSize.mnTop = aOuterBorder[1];
+ maOuterBorderSize.mnRight = aOuterBorder[2];
+ maOuterBorderSize.mnBottom = aOuterBorder[3];
+ }
+ catch(beans::UnknownPropertyException&)
+ {
+ OSL_ASSERT(false);
+ }
+
+ UpdateBorderSizes();
+ }
+}
+
+
+
+
+
+awt::Rectangle RendererPaneStyle::AddBorder (
+ const awt::Rectangle& rBox,
+ const drawing::framework::BorderType eBorderType) const
+{
+ const BorderSize* pBorderSize = NULL;
+ switch (eBorderType)
+ {
+ case drawing::framework::BorderType_INNER_BORDER:
+ pBorderSize = &maInnerBorderSize;
+ break;
+ case drawing::framework::BorderType_OUTER_BORDER:
+ pBorderSize = &maOuterBorderSize;
+ break;
+ case drawing::framework::BorderType_TOTAL_BORDER:
+ pBorderSize = &maTotalBorderSize;
+ break;
+ default:
+ return rBox;
+ }
+ return awt::Rectangle (
+ rBox.X - pBorderSize->mnLeft,
+ rBox.Y - pBorderSize->mnTop,
+ rBox.Width + pBorderSize->mnLeft + pBorderSize->mnRight,
+ rBox.Height + pBorderSize->mnTop + pBorderSize->mnBottom);
+}
+
+
+
+
+awt::Rectangle RendererPaneStyle::RemoveBorder (
+ const awt::Rectangle& rBox,
+ const css::drawing::framework::BorderType eBorderType) const
+{
+ const BorderSize* pBorderSize = NULL;
+ switch (eBorderType)
+ {
+ case drawing::framework::BorderType_INNER_BORDER:
+ pBorderSize = &maInnerBorderSize;
+ break;
+ case drawing::framework::BorderType_OUTER_BORDER:
+ pBorderSize = &maOuterBorderSize;
+ break;
+ case drawing::framework::BorderType_TOTAL_BORDER:
+ pBorderSize = &maTotalBorderSize;
+ break;
+ default:
+ return rBox;
+ }
+ return awt::Rectangle (
+ rBox.X + pBorderSize->mnLeft,
+ rBox.Y + pBorderSize->mnTop,
+ rBox.Width - pBorderSize->mnLeft - pBorderSize->mnRight,
+ rBox.Height - pBorderSize->mnTop - pBorderSize->mnBottom);
+}
+
+
+
+
+const Reference<rendering::XCanvasFont> RendererPaneStyle::GetFont (
+ const Reference<rendering::XCanvas>& rxCanvas) const
+{
+ if (mpFont.get() != NULL)
+ mpFont->PrepareFont(rxCanvas);
+ return mpFont->mxFont;
+}
+
+
+
+
+void RendererPaneStyle::UpdateBorderSizes (void)
+{
+ maTotalBorderSize.mnLeft = maInnerBorderSize.mnLeft + maOuterBorderSize.mnLeft;
+ maTotalBorderSize.mnTop = maInnerBorderSize.mnTop + maOuterBorderSize.mnTop;
+ maTotalBorderSize.mnRight = maInnerBorderSize.mnRight + maOuterBorderSize.mnRight;
+ maTotalBorderSize.mnBottom = maInnerBorderSize.mnBottom + maOuterBorderSize.mnBottom;
+}
+
+
+
+
+SharedBitmapDescriptor RendererPaneStyle::GetBitmap(
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme,
+ const OUString& rsStyleName,
+ const OUString& rsBitmapName)
+{
+ SharedBitmapDescriptor pDescriptor (rpTheme->GetBitmap(rsStyleName, rsBitmapName));
+ if (pDescriptor.get() != NULL)
+ return pDescriptor;
+ else
+ return mpEmpty;
+}
+
+
+
+} // end of anonymous namespace
+
+
+} } // end of namespace ::sd::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneBorderPainter.hxx b/sdext/source/presenter/PresenterPaneBorderPainter.hxx
new file mode 100644
index 000000000000..0084d567e478
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneBorderPainter.hxx
@@ -0,0 +1,166 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_PANE_BORDER_PAINTER_HXX
+#define SDEXT_PRESENTER_PRESENTER_PANE_BORDER_PAINTER_HXX
+
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/drawing/framework/XPaneBorderPainter.hpp>
+#include <com/sun/star/graphic/XGraphicProvider.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/util/XMacroExpander.hpp>
+#include <com/sun/star/awt/XGraphics.hpp>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase1.hxx>
+#include <boost/noncopyable.hpp>
+#include <boost/scoped_ptr.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace tools {
+ class ConfigurationAccess;
+} }
+
+namespace sdext { namespace presenter {
+
+class PresenterPane;
+class PresenterTheme;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper1<
+ css::drawing::framework::XPaneBorderPainter
+ > PresenterPaneBorderPainterInterfaceBase;
+}
+
+/** This class is responsible for painting window borders of PresenterPane
+ objects.
+*/
+class PresenterPaneBorderPainter
+ : private ::boost::noncopyable,
+ protected ::cppu::BaseMutex,
+ public PresenterPaneBorderPainterInterfaceBase
+{
+public:
+ PresenterPaneBorderPainter (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+ virtual ~PresenterPaneBorderPainter (void);
+
+ /** Transform the bounding box of the window content to the outer
+ bounding box of the border that is painted around it.
+ @param rsPaneURL
+ Specifies the pane style that is used to determine the border sizes.
+ @param rInnerBox
+ The rectangle of the inner window content.
+ */
+ css::awt::Rectangle AddBorder (
+ const ::rtl::OUString& rsPaneURL,
+ const css::awt::Rectangle& rInnerBox,
+ const css::drawing::framework::BorderType eBorderType) const;
+
+ /** Transorm the outer bounding box of a window to the bounding box of
+ the inner content area.
+ @param rsPaneURL
+ Specifies the pane style that is used to determine the border sizes.
+ @param rOuterBox
+ The bounding box of the rectangle around the window.
+ @param bIsTitleVisible
+ This flag controls whether the upper part of the frame is
+ supposed to contain the window title.
+ */
+ css::awt::Rectangle RemoveBorder (
+ const ::rtl::OUString& rsPaneURL,
+ const css::awt::Rectangle& rOuterBox,
+ const css::drawing::framework::BorderType eBorderType) const;
+
+ bool HasTheme (void) const;
+
+ void SetTheme (const ::boost::shared_ptr<PresenterTheme>& rpTheme);
+
+ class Renderer;
+
+ // XPaneBorderPainter
+
+ virtual css::awt::Rectangle SAL_CALL addBorder (
+ const rtl::OUString& rsPaneBorderStyleName,
+ const css::awt::Rectangle& rRectangle,
+ css::drawing::framework::BorderType eBorderType)
+ throw(css::uno::RuntimeException);
+
+ virtual css::awt::Rectangle SAL_CALL removeBorder (
+ const rtl::OUString& rsPaneBorderStyleName,
+ const css::awt::Rectangle& rRectangle,
+ css::drawing::framework::BorderType eBorderType)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL paintBorder (
+ const rtl::OUString& rsPaneBorderStyleName,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rOuterBorderRectangle,
+ const css::awt::Rectangle& rRepaintArea,
+ const rtl::OUString& rsTitle)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL paintBorderWithCallout (
+ const rtl::OUString& rsPaneBorderStyleName,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rOuterBorderRectangle,
+ const css::awt::Rectangle& rRepaintArea,
+ const rtl::OUString& rsTitle,
+ const css::awt::Point& rCalloutAnchor)
+ throw(css::uno::RuntimeException);
+
+ virtual css::awt::Point SAL_CALL getCalloutOffset (
+ const rtl::OUString& rsPaneBorderStyleName)
+ throw(css::uno::RuntimeException);
+
+private:
+ css::uno::Reference<css::uno::XComponentContext> mxContext;
+ ::boost::shared_ptr<PresenterTheme> mpTheme;
+ ::boost::scoped_ptr<Renderer> mpRenderer;
+
+ /** When the theme for the border has not yet been loaded then try again
+ when this method is called.
+ @return
+ Returns <TRUE/> only one time when the theme is loaded and/or the
+ renderer is initialized.
+ */
+ bool ProvideTheme (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas);
+ bool ProvideTheme (void);
+
+ void ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException);
+};
+
+} } // end of namespace ::sd::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneContainer.cxx b/sdext/source/presenter/PresenterPaneContainer.cxx
new file mode 100644
index 000000000000..feb7ecb6bd02
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneContainer.cxx
@@ -0,0 +1,450 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterPaneContainer.hxx"
+#include "PresenterPaneBase.hxx"
+#include <com/sun/star/awt/XGraphics.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/drawing/framework/ResourceId.hpp>
+#include <vector>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+namespace sdext { namespace presenter {
+
+PresenterPaneContainer::PresenterPaneContainer (
+ const Reference<XComponentContext>& rxContext)
+ : PresenterPaneContainerInterfaceBase(m_aMutex),
+ maPanes(),
+ mxPresenterHelper()
+{
+ Reference<lang::XMultiComponentFactory> xFactory (rxContext->getServiceManager());
+ if (xFactory.is())
+ {
+ mxPresenterHelper = Reference<drawing::XPresenterHelper>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.PresenterHelper")),
+ rxContext),
+ UNO_QUERY_THROW);
+ }
+}
+
+
+
+
+PresenterPaneContainer::~PresenterPaneContainer (void)
+{
+}
+
+
+
+
+void PresenterPaneContainer::PreparePane (
+ const Reference<XResourceId>& rxPaneId,
+ const OUString& rsViewURL,
+ const OUString& rsTitle,
+ const OUString& rsAccessibleTitle,
+ const bool bIsOpaque,
+ const ViewInitializationFunction& rViewInitialization,
+ const double nLeft,
+ const double nTop,
+ const double nRight,
+ const double nBottom)
+{
+ if ( ! rxPaneId.is())
+ return;
+
+ SharedPaneDescriptor pPane (FindPaneURL(rxPaneId->getResourceURL()));
+ if (pPane.get() == NULL)
+ {
+ // No entry found for the given pane id. Create a new one.
+ SharedPaneDescriptor pDescriptor (new PaneDescriptor());
+ pDescriptor->mxPaneId = rxPaneId;
+ pDescriptor->msViewURL = rsViewURL;
+ pDescriptor->mxPane = NULL;
+ if (rsTitle.indexOf('%') < 0)
+ {
+ pDescriptor->msTitle = rsTitle;
+ pDescriptor->msTitleTemplate = OUString();
+ }
+ else
+ {
+ pDescriptor->msTitleTemplate = rsTitle;
+ pDescriptor->msTitle = OUString();
+ }
+ pDescriptor->msAccessibleTitleTemplate = rsAccessibleTitle;
+ pDescriptor->maViewInitialization = rViewInitialization;
+ pDescriptor->mnLeft = nLeft;
+ pDescriptor->mnTop = nTop;
+ pDescriptor->mnRight = nRight;
+ pDescriptor->mnBottom = nBottom;
+ pDescriptor->mbIsActive = true;
+ pDescriptor->mbIsOpaque = bIsOpaque;
+ pDescriptor->maSpriteProvider = PaneDescriptor::SpriteProvider();
+ pDescriptor->mbIsSprite = false;
+ pDescriptor->maCalloutAnchorLocation = awt::Point(-1,-1);
+ pDescriptor->mbHasCalloutAnchor = false;
+
+ maPanes.push_back(pDescriptor);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterPaneContainer::disposing (void)
+{
+ PaneList::iterator iPane (maPanes.begin());
+ PaneList::const_iterator iEnd (maPanes.end());
+ for ( ; iPane!=iEnd; ++iPane)
+ if ((*iPane)->mxPaneId.is())
+ RemovePane((*iPane)->mxPaneId);
+}
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor
+ PresenterPaneContainer::StorePane (const rtl::Reference<PresenterPaneBase>& rxPane)
+{
+ SharedPaneDescriptor pDescriptor;
+
+ if (rxPane.is())
+ {
+ OUString sPaneURL;
+ Reference<XResourceId> xPaneId (rxPane->getResourceId());
+ if (xPaneId.is())
+ sPaneURL = xPaneId->getResourceURL();
+
+ pDescriptor = FindPaneURL(sPaneURL);
+ if (pDescriptor.get() == NULL)
+ PreparePane(xPaneId, OUString(), OUString(), OUString(),
+ false, ViewInitializationFunction(), 0,0,0,0);
+ pDescriptor = FindPaneURL(sPaneURL);
+ if (pDescriptor.get() != NULL)
+ {
+ Reference<awt::XWindow> xWindow (rxPane->getWindow());
+ pDescriptor->mxContentWindow = xWindow;
+ pDescriptor->mxPaneId = xPaneId;
+ pDescriptor->mxPane = rxPane;
+ pDescriptor->mxPane->SetTitle(pDescriptor->msTitle);
+
+ // When there is a call out anchor location set then tell the
+ // window about it.
+ if (pDescriptor->mbHasCalloutAnchor)
+ pDescriptor->mxPane->SetCalloutAnchor(pDescriptor->maCalloutAnchorLocation);
+
+ if (xWindow.is())
+ xWindow->addEventListener(this);
+ }
+ }
+
+ return pDescriptor;
+}
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor
+ PresenterPaneContainer::StoreBorderWindow(
+ const Reference<XResourceId>& rxPaneId,
+ const Reference<awt::XWindow>& rxBorderWindow)
+{
+ // The content window may not be present. Use the resource URL of the
+ // pane id as key.
+ OUString sPaneURL;
+ if (rxPaneId.is())
+ sPaneURL = rxPaneId->getResourceURL();
+
+ SharedPaneDescriptor pDescriptor (FindPaneURL(sPaneURL));
+ if (pDescriptor.get() != NULL)
+ {
+ pDescriptor->mxBorderWindow = rxBorderWindow;
+ return pDescriptor;
+ }
+ else
+ return SharedPaneDescriptor();
+}
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor
+ PresenterPaneContainer::StoreView (
+ const Reference<XView>& rxView,
+ const SharedBitmapDescriptor& rpViewBackground)
+{
+ SharedPaneDescriptor pDescriptor;
+
+ if (rxView.is())
+ {
+ OUString sPaneURL;
+ Reference<XResourceId> xViewId (rxView->getResourceId());
+ if (xViewId.is())
+ {
+ Reference<XResourceId> xPaneId (xViewId->getAnchor());
+ if (xPaneId.is())
+ sPaneURL = xPaneId->getResourceURL();
+ }
+
+ pDescriptor = FindPaneURL(sPaneURL);
+ if (pDescriptor.get() != NULL)
+ {
+ pDescriptor->mxView = rxView;
+ pDescriptor->mpViewBackground = rpViewBackground;
+ pDescriptor->mxPane->SetBackground(rpViewBackground);
+ try
+ {
+ if ( ! pDescriptor->maViewInitialization.empty())
+ pDescriptor->maViewInitialization(rxView);
+
+ // Activate or deactivate the pane/view.
+ if ( ! pDescriptor->maActivator.empty())
+ pDescriptor->maActivator(pDescriptor->mbIsActive);
+ }
+ catch (RuntimeException&)
+ {
+ OSL_ASSERT(false);
+ }
+ }
+ }
+
+ return pDescriptor;
+}
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor
+ PresenterPaneContainer::RemovePane (const Reference<XResourceId>& rxPaneId)
+{
+ SharedPaneDescriptor pDescriptor (FindPaneId(rxPaneId));
+ if (pDescriptor.get() != NULL)
+ {
+ if (pDescriptor->mxContentWindow.is())
+ pDescriptor->mxContentWindow->removeEventListener(this);
+ pDescriptor->mxContentWindow = NULL;
+ pDescriptor->mxBorderWindow = NULL;
+ pDescriptor->mxPane = NULL;
+ pDescriptor->mxView = NULL;
+ pDescriptor->mbIsActive = false;
+ }
+ return pDescriptor;
+}
+
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor
+ PresenterPaneContainer::RemoveView (const Reference<XView>& rxView)
+{
+ SharedPaneDescriptor pDescriptor;
+
+ if (rxView.is())
+ {
+ OUString sPaneURL;
+ Reference<XResourceId> xViewId (rxView->getResourceId());
+ if (xViewId.is())
+ {
+ Reference<XResourceId> xPaneId (xViewId->getAnchor());
+ if (xPaneId.is())
+ sPaneURL = xPaneId->getResourceURL();
+ }
+
+ pDescriptor = FindPaneURL(sPaneURL);
+ if (pDescriptor.get() != NULL)
+ {
+ pDescriptor->mxView = NULL;
+ pDescriptor->mpViewBackground = SharedBitmapDescriptor();
+ }
+ }
+
+ return pDescriptor;
+}
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor PresenterPaneContainer::FindBorderWindow (
+ const Reference<awt::XWindow>& rxBorderWindow)
+{
+ PaneList::const_iterator iPane;
+ PaneList::iterator iEnd (maPanes.end());
+ for (iPane=maPanes.begin(); iPane!=iEnd; ++iPane)
+ {
+ if ((*iPane)->mxBorderWindow == rxBorderWindow)
+ return *iPane;
+ }
+ return SharedPaneDescriptor();
+}
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor PresenterPaneContainer::FindContentWindow (
+ const Reference<awt::XWindow>& rxContentWindow)
+{
+ PaneList::const_iterator iPane;
+ PaneList::iterator iEnd (maPanes.end());
+ for (iPane=maPanes.begin(); iPane!=iEnd; ++iPane)
+ {
+ if ((*iPane)->mxContentWindow == rxContentWindow)
+ return *iPane;
+ }
+ return SharedPaneDescriptor();
+}
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor PresenterPaneContainer::FindPaneURL (
+ const OUString& rsPaneURL)
+{
+ PaneList::const_iterator iPane;
+ PaneList::const_iterator iEnd (maPanes.end());
+ for (iPane=maPanes.begin(); iPane!=iEnd; ++iPane)
+ {
+ if ((*iPane)->mxPaneId->getResourceURL() == rsPaneURL)
+ return *iPane;
+ }
+ return SharedPaneDescriptor();
+}
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor PresenterPaneContainer::FindPaneId (
+ const Reference<XResourceId>& rxPaneId)
+{
+ PaneList::iterator iEnd (maPanes.end());
+
+ if ( ! rxPaneId.is())
+ return SharedPaneDescriptor();
+
+ PaneList::iterator iPane;
+ for (iPane=maPanes.begin(); iPane!=iEnd; ++iPane)
+ {
+ if (rxPaneId->compareTo((*iPane)->mxPaneId) == 0)
+ return *iPane;
+ }
+ return SharedPaneDescriptor();
+}
+
+
+
+
+PresenterPaneContainer::SharedPaneDescriptor PresenterPaneContainer::FindViewURL (
+ const OUString& rsViewURL)
+{
+ PaneList::iterator iEnd (maPanes.end());
+ PaneList::iterator iPane;
+ for (iPane=maPanes.begin(); iPane!=iEnd; ++iPane)
+ {
+ if (rsViewURL == (*iPane)->msViewURL)
+ return *iPane;
+ }
+ return SharedPaneDescriptor();
+}
+
+
+
+
+::rtl::OUString PresenterPaneContainer::GetPaneURLForViewURL (const ::rtl::OUString& rsViewURL)
+{
+ SharedPaneDescriptor pDescriptor (FindViewURL(rsViewURL));
+ if (pDescriptor.get() != NULL)
+ if (pDescriptor->mxPaneId.is())
+ return pDescriptor->mxPaneId->getResourceURL();
+ return OUString();
+}
+
+
+
+
+void PresenterPaneContainer::ToTop (const SharedPaneDescriptor& rpDescriptor)
+{
+ if (rpDescriptor.get() != NULL)
+ {
+ // Find iterator for pDescriptor.
+ PaneList::iterator iPane;
+ PaneList::iterator iEnd (maPanes.end());
+ for (iPane=maPanes.begin(); iPane!=iEnd; ++iPane)
+ if (iPane->get() == rpDescriptor.get())
+ break;
+ OSL_ASSERT(iPane!=iEnd);
+ if (iPane == iEnd)
+ return;
+
+ if (mxPresenterHelper.is())
+ mxPresenterHelper->toTop(rpDescriptor->mxBorderWindow);
+
+ maPanes.erase(iPane);
+ maPanes.push_back(rpDescriptor);
+ }
+}
+
+
+
+
+//----- XEventListener --------------------------------------------------------
+
+void SAL_CALL PresenterPaneContainer::disposing (
+ const com::sun::star::lang::EventObject& rEvent)
+ throw (com::sun::star::uno::RuntimeException)
+{
+ SharedPaneDescriptor pDescriptor (
+ FindContentWindow(Reference<awt::XWindow>(rEvent.Source, UNO_QUERY)));
+ if (pDescriptor.get() != NULL)
+ {
+ RemovePane(pDescriptor->mxPaneId);
+ }
+}
+
+
+
+
+//===== PresenterPaneContainer::PaneDescriptor ================================
+
+void PresenterPaneContainer::PaneDescriptor::SetActivationState (const bool bIsActive)
+{
+ mbIsActive = bIsActive;
+ if ( ! maActivator.empty())
+ maActivator(mbIsActive);
+}
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneContainer.hxx b/sdext/source/presenter/PresenterPaneContainer.hxx
new file mode 100644
index 000000000000..3c837ffc8a9b
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneContainer.hxx
@@ -0,0 +1,200 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PANE_CONTAINER_HXX
+#define SDEXT_PRESENTER_PANE_CONTAINER_HXX
+
+#include "PresenterTheme.hxx"
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/drawing/framework/XResourceId.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase1.hxx>
+#include <rtl/ref.hxx>
+#include <vector>
+#include <boost/function.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterPaneBase;
+class PresenterSprite;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper1 <
+ css::lang::XEventListener
+ > PresenterPaneContainerInterfaceBase;
+}
+
+/** This class could also be called PresenterPaneAndViewContainer because it
+ stores not only references to all panes that belong to the presenter
+ screen but stores the views displayed in these panes as well.
+*/
+class PresenterPaneContainer
+ : private ::boost::noncopyable,
+ private ::cppu::BaseMutex,
+ public PresenterPaneContainerInterfaceBase
+{
+public:
+ PresenterPaneContainer (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+ virtual ~PresenterPaneContainer (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ typedef ::boost::function1<void, const css::uno::Reference<css::drawing::framework::XView>&>
+ ViewInitializationFunction;
+
+ /** Each pane descriptor holds references to one pane and the view
+ displayed in this pane as well as the other information that is used
+ to manage the pane window like an XWindow reference, the title, and
+ the coordinates.
+
+ A initialization function for the view is stored as well. This
+ function is executed as soon as a view is created.
+ */
+ class PaneDescriptor
+ {
+ public:
+ typedef ::boost::function<void(bool)> Activator;
+ typedef ::boost::function<boost::shared_ptr<PresenterSprite>()> SpriteProvider;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxPaneId;
+ ::rtl::OUString msViewURL;
+ ::rtl::Reference<PresenterPaneBase> mxPane;
+ css::uno::Reference<css::drawing::framework::XView> mxView;
+ css::uno::Reference<css::awt::XWindow> mxContentWindow;
+ css::uno::Reference<css::awt::XWindow> mxBorderWindow;
+ ::rtl::OUString msTitleTemplate;
+ ::rtl::OUString msAccessibleTitleTemplate;
+ ::rtl::OUString msTitle;
+ ViewInitializationFunction maViewInitialization;
+ double mnLeft;
+ double mnTop;
+ double mnRight;
+ double mnBottom;
+ SharedBitmapDescriptor mpViewBackground;
+ bool mbIsActive;
+ bool mbNeedsClipping;
+ bool mbIsOpaque;
+ SpriteProvider maSpriteProvider;
+ bool mbIsSprite;
+ Activator maActivator;
+ css::awt::Point maCalloutAnchorLocation;
+ bool mbHasCalloutAnchor;
+
+ void SetActivationState (const bool bIsActive);
+ };
+ typedef ::boost::shared_ptr<PaneDescriptor> SharedPaneDescriptor;
+ typedef ::std::vector<SharedPaneDescriptor> PaneList;
+ PaneList maPanes;
+
+ void PreparePane (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::OUString& rsViewURL,
+ const ::rtl::OUString& rsTitle,
+ const ::rtl::OUString& rsAccessibleTitle,
+ const bool bIsOpaque,
+ const ViewInitializationFunction& rViewIntialization,
+ const double nLeft,
+ const double nTop,
+ const double nRight,
+ const double nBottom);
+
+ SharedPaneDescriptor StorePane (
+ const rtl::Reference<PresenterPaneBase>& rxPane);
+
+ SharedPaneDescriptor StoreBorderWindow(
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const css::uno::Reference<css::awt::XWindow>& rxBorderWindow);
+
+ SharedPaneDescriptor StoreView (
+ const css::uno::Reference<css::drawing::framework::XView>& rxView,
+ const SharedBitmapDescriptor& rpViewBackground);
+
+ SharedPaneDescriptor RemovePane (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId);
+
+ SharedPaneDescriptor RemoveView (
+ const css::uno::Reference<css::drawing::framework::XView>& rxView);
+
+ void CreateBorderWindow (PaneDescriptor& rDescriptor);
+
+ /** Find the pane whose border window is identical to the given border
+ window.
+ */
+ SharedPaneDescriptor FindBorderWindow (
+ const css::uno::Reference<css::awt::XWindow>& rxBorderWindow);
+
+ /** Find the pane whose border window is identical to the given content
+ window.
+ */
+ SharedPaneDescriptor FindContentWindow (
+ const css::uno::Reference<css::awt::XWindow>& rxBorderWindow);
+
+ /** Find the pane whose pane URL is identical to the given URL string.
+ */
+ SharedPaneDescriptor FindPaneURL (const ::rtl::OUString& rsPaneURL);
+
+ /** Find the pane whose resource id is identical to the given one.
+ */
+ SharedPaneDescriptor FindPaneId (const css::uno::Reference<
+ css::drawing::framework::XResourceId>& rxPaneId);
+
+ SharedPaneDescriptor FindViewURL (const ::rtl::OUString& rsViewURL);
+
+ ::rtl::OUString GetPaneURLForViewURL (const ::rtl::OUString& rsViewURL);
+
+ void ToTop (const SharedPaneDescriptor& rpDescriptor);
+
+
+ // XEventListener
+
+ virtual void SAL_CALL disposing (
+ const com::sun::star::lang::EventObject& rEvent)
+ throw (com::sun::star::uno::RuntimeException);
+
+private:
+ css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
+
+ PaneList::const_iterator FindIteratorForPaneURL (const ::rtl::OUString& rsPaneURL);
+};
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneFactory.cxx b/sdext/source/presenter/PresenterPaneFactory.cxx
new file mode 100644
index 000000000000..5d8b307398ef
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneFactory.cxx
@@ -0,0 +1,381 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterPaneFactory.hxx"
+#include "PresenterController.hxx"
+#include "PresenterPane.hxx"
+#include "PresenterPaneBorderPainter.hxx"
+#include "PresenterPaneContainer.hxx"
+#include "PresenterSpritePane.hxx"
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/drawing/framework/ResourceId.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <boost/bind.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+namespace sdext { namespace presenter {
+
+const ::rtl::OUString PresenterPaneFactory::msCurrentSlidePreviewPaneURL(
+ RTL_CONSTASCII_USTRINGPARAM("private:resource/pane/Presenter/Pane1"));
+const ::rtl::OUString PresenterPaneFactory::msNextSlidePreviewPaneURL(
+ RTL_CONSTASCII_USTRINGPARAM("private:resource/pane/Presenter/Pane2"));
+const ::rtl::OUString PresenterPaneFactory::msNotesPaneURL(
+ RTL_CONSTASCII_USTRINGPARAM("private:resource/pane/Presenter/Pane3"));
+const ::rtl::OUString PresenterPaneFactory::msToolBarPaneURL(
+ RTL_CONSTASCII_USTRINGPARAM("private:resource/pane/Presenter/Pane4"));
+const ::rtl::OUString PresenterPaneFactory::msSlideSorterPaneURL(
+ RTL_CONSTASCII_USTRINGPARAM("private:resource/pane/Presenter/Pane5"));
+const ::rtl::OUString PresenterPaneFactory::msHelpPaneURL(
+ RTL_CONSTASCII_USTRINGPARAM("private:resource/pane/Presenter/Pane6"));
+
+const ::rtl::OUString PresenterPaneFactory::msOverlayPaneURL(
+ RTL_CONSTASCII_USTRINGPARAM("private:resource/pane/Presenter/Overlay"));
+
+
+
+//===== PresenterPaneFactory ==================================================
+
+Reference<drawing::framework::XResourceFactory> PresenterPaneFactory::Create (
+ const Reference<uno::XComponentContext>& rxContext,
+ const Reference<frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+{
+ rtl::Reference<PresenterPaneFactory> pFactory (
+ new PresenterPaneFactory(rxContext,rpPresenterController));
+ pFactory->Register(rxController);
+ return Reference<drawing::framework::XResourceFactory>(
+ static_cast<XWeak*>(pFactory.get()), UNO_QUERY);
+}
+
+
+
+
+PresenterPaneFactory::PresenterPaneFactory (
+ const Reference<uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterPaneFactoryInterfaceBase(m_aMutex),
+ mxComponentContextWeak(rxContext),
+ mxConfigurationControllerWeak(),
+ mpPresenterController(rpPresenterController),
+ mpResourceCache()
+{
+}
+
+
+
+
+void PresenterPaneFactory::Register (const Reference<frame::XController>& rxController)
+{
+ Reference<XConfigurationController> xCC;
+ try
+ {
+ // Get the configuration controller.
+ Reference<XControllerManager> xCM (rxController, UNO_QUERY_THROW);
+ xCC = Reference<XConfigurationController>(xCM->getConfigurationController());
+ mxConfigurationControllerWeak = xCC;
+ if ( ! xCC.is())
+ {
+ throw RuntimeException();
+ }
+ else
+ {
+ xCC->addResourceFactory(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("private:resource/pane/Presenter/*")),
+ this);
+ }
+ }
+ catch (RuntimeException&)
+ {
+ OSL_ASSERT(false);
+ if (xCC.is())
+ xCC->removeResourceFactoryForReference(this);
+ mxConfigurationControllerWeak = WeakReference<XConfigurationController>();
+
+ throw;
+ }
+}
+
+
+
+
+PresenterPaneFactory::~PresenterPaneFactory (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterPaneFactory::disposing (void)
+ throw (RuntimeException)
+{
+ Reference<XConfigurationController> xCC (mxConfigurationControllerWeak);
+ if (xCC.is())
+ xCC->removeResourceFactoryForReference(this);
+ mxConfigurationControllerWeak = WeakReference<XConfigurationController>();
+
+ // Dispose the panes in the cache.
+ if (mpResourceCache.get() != NULL)
+ {
+ ResourceContainer::const_iterator iPane (mpResourceCache->begin());
+ ResourceContainer::const_iterator iEnd (mpResourceCache->end());
+ for ( ; iPane!=iEnd; ++iPane)
+ {
+ Reference<lang::XComponent> xPaneComponent (iPane->second, UNO_QUERY);
+ if (xPaneComponent.is())
+ xPaneComponent->dispose();
+ }
+ mpResourceCache.reset();
+ }
+}
+
+
+
+
+//----- XPaneFactory ----------------------------------------------------------
+
+Reference<XResource> SAL_CALL PresenterPaneFactory::createResource (
+ const Reference<XResourceId>& rxPaneId)
+ throw (RuntimeException, IllegalArgumentException, WrappedTargetException)
+{
+ ThrowIfDisposed();
+
+ if ( ! rxPaneId.is())
+ return NULL;
+
+ const OUString sPaneURL (rxPaneId->getResourceURL());
+ if (sPaneURL.getLength() == 0)
+ return NULL;
+
+ if (mpResourceCache.get() != NULL)
+ {
+ // Has the requested resource already been created?
+ ResourceContainer::const_iterator iResource (mpResourceCache->find(sPaneURL));
+ if (iResource != mpResourceCache->end())
+ {
+ // Yes. Mark it as active.
+ rtl::Reference<PresenterPaneContainer> pPaneContainer(
+ mpPresenterController->GetPaneContainer());
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ pPaneContainer->FindPaneURL(sPaneURL));
+ if (pDescriptor.get() != NULL)
+ {
+ pDescriptor->SetActivationState(true);
+ if (pDescriptor->mxBorderWindow.is())
+ pDescriptor->mxBorderWindow->setVisible(sal_True);
+ pPaneContainer->StorePane(pDescriptor->mxPane);
+ }
+
+ return iResource->second;
+ }
+ }
+
+ // No. Create a new one.
+ Reference<XResource> xResource = CreatePane(rxPaneId, OUString());
+ return xResource;
+}
+
+
+
+
+void SAL_CALL PresenterPaneFactory::releaseResource (const Reference<XResource>& rxResource)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if ( ! rxResource.is())
+ throw lang::IllegalArgumentException();
+
+ // Mark the pane as inactive.
+ rtl::Reference<PresenterPaneContainer> pPaneContainer(
+ mpPresenterController->GetPaneContainer());
+ const OUString sPaneURL (rxResource->getResourceId()->getResourceURL());
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ pPaneContainer->FindPaneURL(sPaneURL));
+ if (pDescriptor.get() != NULL)
+ {
+ pDescriptor->SetActivationState(false);
+ if (pDescriptor->mxBorderWindow.is())
+ pDescriptor->mxBorderWindow->setVisible(sal_False);
+
+ if (mpResourceCache.get() != NULL)
+ {
+ // Store the pane in the cache.
+ (*mpResourceCache)[sPaneURL] = rxResource;
+ }
+ else
+ {
+ // Dispose the pane.
+ Reference<lang::XComponent> xPaneComponent (rxResource, UNO_QUERY);
+ if (xPaneComponent.is())
+ xPaneComponent->dispose();
+ }
+ }
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+Reference<XResource> PresenterPaneFactory::CreatePane (
+ const Reference<XResourceId>& rxPaneId,
+ const OUString& rsTitle)
+{
+ if ( ! rxPaneId.is())
+ return NULL;
+
+ Reference<XConfigurationController> xCC (mxConfigurationControllerWeak);
+ if ( ! xCC.is())
+ return NULL;
+
+ Reference<XComponentContext> xContext (mxComponentContextWeak);
+ if ( ! xContext.is())
+ return NULL;
+
+ Reference<XPane> xParentPane (xCC->getResource(rxPaneId->getAnchor()), UNO_QUERY);
+ if ( ! xParentPane.is())
+ return NULL;
+
+ try
+ {
+ return CreatePane(
+ rxPaneId,
+ rsTitle,
+ xParentPane,
+ rxPaneId->getFullResourceURL().Arguments.compareToAscii("Sprite=1") == 0);
+ }
+ catch (Exception&)
+ {
+ OSL_ASSERT(false);
+ }
+
+ return NULL;
+}
+
+
+
+
+Reference<XResource> PresenterPaneFactory::CreatePane (
+ const Reference<XResourceId>& rxPaneId,
+ const OUString& rsTitle,
+ const Reference<drawing::framework::XPane>& rxParentPane,
+ const bool bIsSpritePane)
+{
+ Reference<XComponentContext> xContext (mxComponentContextWeak);
+ Reference<lang::XMultiComponentFactory> xFactory (
+ xContext->getServiceManager(), UNO_QUERY_THROW);
+
+ // Create a border window and canvas and store it in the pane
+ // container.
+
+ // Create the pane.
+ ::rtl::Reference<PresenterPaneBase> xPane;
+ if (bIsSpritePane)
+ {
+ xPane = ::rtl::Reference<PresenterPaneBase>(
+ new PresenterSpritePane(xContext, mpPresenterController));
+ }
+ else
+ {
+ xPane = ::rtl::Reference<PresenterPaneBase>(
+ new PresenterPane(xContext, mpPresenterController));
+ }
+
+ // Supply arguments.
+ Sequence<Any> aArguments (6);
+ aArguments[0] <<= rxPaneId;
+ aArguments[1] <<= rxParentPane->getWindow();
+ aArguments[2] <<= rxParentPane->getCanvas();
+ aArguments[3] <<= rsTitle;
+ aArguments[4] <<= Reference<drawing::framework::XPaneBorderPainter>(
+ static_cast<XWeak*>(mpPresenterController->GetPaneBorderPainter().get()),
+ UNO_QUERY);
+ aArguments[5] <<= bIsSpritePane ? false : true;
+ xPane->initialize(aArguments);
+
+ // Store pane and canvases and windows in container.
+ ::rtl::Reference<PresenterPaneContainer> pContainer (
+ mpPresenterController->GetPaneContainer());
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor(
+ pContainer->StoreBorderWindow(rxPaneId, xPane->GetBorderWindow()));
+ pContainer->StorePane(xPane);
+ if (pDescriptor.get() != NULL)
+ {
+ if (bIsSpritePane)
+ {
+ pDescriptor->maSpriteProvider = ::boost::bind(
+ &PresenterSpritePane::GetSprite,
+ dynamic_cast<PresenterSpritePane*>(xPane.get()));
+ pDescriptor->mbIsSprite = true;
+ pDescriptor->mbNeedsClipping = false;
+ }
+ else
+ {
+ pDescriptor->mbIsSprite = false;
+ pDescriptor->mbNeedsClipping = true;
+ }
+
+ // Get the window of the frame and make that visible.
+ Reference<awt::XWindow> xWindow (pDescriptor->mxBorderWindow, UNO_QUERY_THROW);
+ xWindow->setVisible(sal_True);
+ }
+
+ return Reference<XResource>(static_cast<XWeak*>(xPane.get()), UNO_QUERY_THROW);
+}
+
+
+
+
+void PresenterPaneFactory::ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterPaneFactory object has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+} } // end of namespace sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterPaneFactory.hxx b/sdext/source/presenter/PresenterPaneFactory.hxx
new file mode 100644
index 000000000000..136d47ec645b
--- /dev/null
+++ b/sdext/source/presenter/PresenterPaneFactory.hxx
@@ -0,0 +1,142 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PANE_FACTORY_HXX
+#define SDEXT_PRESENTER_PANE_FACTORY_HXX
+
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XResourceFactory.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <rtl/ref.hxx>
+#include <boost/scoped_ptr.hpp>
+#include <map>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterController;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper1 <
+ css::drawing::framework::XResourceFactory
+ > PresenterPaneFactoryInterfaceBase;
+}
+
+
+/** The PresenerPaneFactory provides a fixed set of panes.
+
+ In order to make the presener screen more easily extendable in the
+ future the set of supported panes could be made extendable on demand.
+*/
+class PresenterPaneFactory
+ : public ::cppu::BaseMutex,
+ public PresenterPaneFactoryInterfaceBase
+{
+public:
+ static const ::rtl::OUString msCurrentSlidePreviewPaneURL;
+ static const ::rtl::OUString msNextSlidePreviewPaneURL;
+ static const ::rtl::OUString msNotesPaneURL;
+ static const ::rtl::OUString msToolBarPaneURL;
+ static const ::rtl::OUString msSlideSorterPaneURL;
+ static const ::rtl::OUString msHelpPaneURL;
+ static const ::rtl::OUString msOverlayPaneURL;
+
+ /** Create a new instance of this class and register it as resource
+ factory in the drawing framework of the given controller.
+ This registration keeps it alive. When the drawing framework is
+ shut down and releases its reference to the factory then the factory
+ is destroyed.
+ */
+ static css::uno::Reference<css::drawing::framework::XResourceFactory> Create (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterPaneFactory (void);
+
+ static ::rtl::OUString getImplementationName_static (void);
+ static css::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static (void);
+ static css::uno::Reference<css::uno::XInterface> Create(
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext)
+ SAL_THROW((css::uno::Exception));
+
+ virtual void SAL_CALL disposing (void)
+ throw (css::uno::RuntimeException);
+
+ // XResourceFactory
+
+ virtual css::uno::Reference<css::drawing::framework::XResource>
+ SAL_CALL createResource (
+ const ::com::sun::star::uno::Reference<
+ com::sun::star::drawing::framework::XResourceId>& rxPaneId)
+ throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException);
+
+ virtual void SAL_CALL
+ releaseResource (
+ const ::com::sun::star::uno::Reference<com::sun::star::drawing::framework::XResource>&
+ rxPane)
+ throw (::com::sun::star::uno::RuntimeException);
+
+private:
+ css::uno::WeakReference<css::uno::XComponentContext> mxComponentContextWeak;
+ css::uno::WeakReference<css::drawing::framework::XConfigurationController>
+ mxConfigurationControllerWeak;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ typedef ::std::map<rtl::OUString, css::uno::Reference<css::drawing::framework::XResource> >
+ ResourceContainer;
+ ::boost::scoped_ptr<ResourceContainer> mpResourceCache;
+
+ PresenterPaneFactory (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+
+ void Register (const css::uno::Reference<css::frame::XController>& rxController);
+
+ css::uno::Reference<css::drawing::framework::XResource> CreatePane (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::OUString& rsTitle);
+ css::uno::Reference<css::drawing::framework::XResource> CreatePane (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const ::rtl::OUString& rsTitle,
+ const css::uno::Reference<css::drawing::framework::XPane>& rxParentPane,
+ const bool bIsSpritePane);
+
+ void ThrowIfDisposed (void) const throw (::com::sun::star::lang::DisposedException);
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterProtocolHandler.cxx b/sdext/source/presenter/PresenterProtocolHandler.cxx
new file mode 100644
index 000000000000..7c4829ac81fd
--- /dev/null
+++ b/sdext/source/presenter/PresenterProtocolHandler.cxx
@@ -0,0 +1,1004 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterProtocolHandler.hxx"
+#include "PresenterConfigurationAccess.hxx"
+#include "PresenterController.hxx"
+#include "PresenterHelper.hxx"
+#include "PresenterNotesView.hxx"
+#include "PresenterPaneContainer.hxx"
+#include "PresenterPaneFactory.hxx"
+#include "PresenterViewFactory.hxx"
+#include "PresenterWindowManager.hxx"
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/drawing/SlideSorter.hpp>
+#include <com/sun/star/drawing/framework/Configuration.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/drawing/framework/ResourceId.hpp>
+#include <com/sun/star/drawing/framework/ResourceActivationMode.hpp>
+#include <com/sun/star/presentation/XSlideShow.hpp>
+#include <com/sun/star/presentation/XSlideShowView.hpp>
+#include <com/sun/star/presentation/XPresentationSupplier.hpp>
+#include <cppuhelper/compbase2.hxx>
+#include <boost/bind.hpp>
+#include <tools/debug.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace sdext { namespace presenter {
+
+namespace {
+ const static OUString gsProtocol (A2S("vnd.com.sun.star.comp.PresenterScreen:"));
+
+ class Command
+ {
+ public:
+ virtual void Execute (void) = 0;
+ virtual bool IsEnabled (void) const = 0;
+ virtual Any GetState (void) const = 0;
+ };
+
+ class GotoPreviousSlideCommand : public Command
+ {
+ public:
+ GotoPreviousSlideCommand (
+ const rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~GotoPreviousSlideCommand (void) {}
+ virtual void Execute (void);
+ virtual bool IsEnabled (void) const;
+ virtual Any GetState (void) const;
+ private:
+ rtl::Reference<PresenterController> mpPresenterController;
+ };
+
+ class GotoNextSlideCommand : public Command
+ {
+ public:
+ GotoNextSlideCommand (
+ const rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~GotoNextSlideCommand (void) {}
+ virtual void Execute (void);
+ virtual bool IsEnabled (void) const;
+ virtual Any GetState (void) const;
+ private:
+ rtl::Reference<PresenterController> mpPresenterController;
+ };
+
+ class GotoNextEffectCommand : public Command
+ {
+ public:
+ GotoNextEffectCommand (
+ const rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~GotoNextEffectCommand (void) {}
+ virtual void Execute (void);
+ virtual bool IsEnabled (void) const;
+ virtual Any GetState (void) const;
+ private:
+ rtl::Reference<PresenterController> mpPresenterController;
+ };
+
+ class SetNotesViewCommand : public Command
+ {
+ public:
+ SetNotesViewCommand (
+ const bool bOn,
+ const rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~SetNotesViewCommand (void) {}
+ virtual void Execute (void);
+ virtual bool IsEnabled (void) const;
+ virtual Any GetState (void) const;
+ private:
+ bool mbOn;
+ rtl::Reference<PresenterController> mpPresenterController;
+ bool IsActive (const ::rtl::Reference<PresenterWindowManager>& rpWindowManager) const;
+ };
+
+ class SetSlideSorterCommand : public Command
+ {
+ public:
+ SetSlideSorterCommand (
+ const bool bOn,
+ const rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~SetSlideSorterCommand (void) {}
+ virtual void Execute (void);
+ virtual bool IsEnabled (void) const;
+ virtual Any GetState (void) const;
+ private:
+ bool mbOn;
+ rtl::Reference<PresenterController> mpPresenterController;
+ };
+
+ class SetHelpViewCommand : public Command
+ {
+ public:
+ SetHelpViewCommand (
+ const bool bOn,
+ const rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~SetHelpViewCommand (void) {}
+ virtual void Execute (void);
+ virtual bool IsEnabled (void) const;
+ virtual Any GetState (void) const;
+ private:
+ bool mbOn;
+ rtl::Reference<PresenterController> mpPresenterController;
+ };
+
+ class NotesFontSizeCommand : public Command
+ {
+ public:
+ NotesFontSizeCommand(
+ const rtl::Reference<PresenterController>& rpPresenterController,
+ const sal_Int32 nSizeChange);
+ virtual ~NotesFontSizeCommand (void) {}
+ virtual void Execute (void);
+ virtual bool IsEnabled (void) const;
+ virtual Any GetState (void) const;
+ protected:
+ ::rtl::Reference<PresenterNotesView> GetNotesView (void) const;
+ private:
+ rtl::Reference<PresenterController> mpPresenterController;
+ const sal_Int32 mnSizeChange;
+ };
+
+} // end of anonymous namespace
+
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper2 <
+ css::frame::XDispatch,
+ css::document::XEventListener
+ > PresenterDispatchInterfaceBase;
+}
+
+class PresenterProtocolHandler::Dispatch
+ : protected ::cppu::BaseMutex,
+ public PresenterDispatchInterfaceBase
+{
+public:
+ typedef void (PresenterProtocolHandler::Dispatch::* Action)(void);
+
+ /** Create a new Dispatch object. When the given command name
+ (rsURLPath) is not known then an empty reference is returned.
+ */
+ static Reference<frame::XDispatch> Create (
+ const OUString& rsURLPath,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+
+ void SAL_CALL disposing (void);
+ static Command* CreateCommand (
+ const OUString& rsURLPath,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+
+
+ // XDispatch
+ virtual void SAL_CALL dispatch(
+ const css::util::URL& aURL,
+ const css::uno::Sequence<css::beans::PropertyValue>& rArguments)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL addStatusListener(
+ const css::uno::Reference<css::frame::XStatusListener>& rxListener,
+ const css::util::URL& rURL)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL removeStatusListener (
+ const css::uno::Reference<css::frame::XStatusListener>& rxListener,
+ const css::util::URL& rURL)
+ throw(css::uno::RuntimeException);
+
+
+ // document::XEventListener
+
+ virtual void SAL_CALL notifyEvent (const css::document::EventObject& rEvent)
+ throw(css::uno::RuntimeException);
+
+
+ // lang::XEventListener
+
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw(css::uno::RuntimeException);
+
+private:
+ OUString msURLPath;
+ ::boost::scoped_ptr<Command> mpCommand;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ typedef ::std::vector<Reference<frame::XStatusListener> > StatusListenerContainer;
+ StatusListenerContainer maStatusListenerContainer;
+ bool mbIsListeningToWindowManager;
+
+ Dispatch (
+ const OUString& rsURLPath,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~Dispatch (void);
+
+ void ThrowIfDisposed (void) const throw (css::lang::DisposedException);
+};
+
+
+
+
+//----- Service ---------------------------------------------------------------
+
+OUString PresenterProtocolHandler::getImplementationName_static (void)
+{
+ return A2S("vnd.sun.star.sdext.presenter.PresenterProtocolHandler");
+}
+
+
+
+
+Sequence<OUString> PresenterProtocolHandler::getSupportedServiceNames_static (void)
+{
+ static const ::rtl::OUString sServiceName(A2S("com.sun.star.frame.ProtocolHandler"));
+ return Sequence<rtl::OUString>(&sServiceName, 1);
+}
+
+
+
+
+Reference<XInterface> PresenterProtocolHandler::Create (
+ const Reference<uno::XComponentContext>& rxContext)
+ SAL_THROW((Exception))
+{
+ return Reference<XInterface>(static_cast<XWeak*>(new PresenterProtocolHandler(rxContext)));
+}
+
+
+
+
+//===== PresenterProtocolHandler =========================================================
+
+
+PresenterProtocolHandler::PresenterProtocolHandler (const Reference<XComponentContext>& rxContext)
+ : PresenterProtocolHandlerInterfaceBase(m_aMutex)
+{
+ (void)rxContext;
+}
+
+
+
+
+PresenterProtocolHandler::~PresenterProtocolHandler (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterProtocolHandler::disposing (void)
+{
+}
+
+
+
+
+//----- XInitialize -----------------------------------------------------------
+
+void SAL_CALL PresenterProtocolHandler::initialize (const Sequence<Any>& aArguments)
+ throw (Exception, RuntimeException)
+{
+ ThrowIfDisposed();
+ if (aArguments.getLength() > 0)
+ {
+ try
+ {
+ Reference<frame::XFrame> xFrame;
+ if (aArguments[0] >>= xFrame)
+ {
+ mpPresenterController = PresenterController::Instance(xFrame);
+ }
+ }
+ catch (RuntimeException&)
+ {
+ OSL_ASSERT(false);
+ }
+ }
+}
+
+
+
+
+//----- XDispatchProvider -----------------------------------------------------
+
+Reference<frame::XDispatch> SAL_CALL PresenterProtocolHandler::queryDispatch (
+ const css::util::URL& rURL,
+ const rtl::OUString& rsTargetFrameName,
+ sal_Int32 nSearchFlags)
+ throw(RuntimeException)
+{
+ (void)rsTargetFrameName;
+ (void)nSearchFlags;
+ ThrowIfDisposed();
+
+ Reference<frame::XDispatch> xDispatch;
+
+ if (rURL.Protocol == gsProtocol)
+ {
+ xDispatch.set(Dispatch::Create(rURL.Path, mpPresenterController));
+ }
+
+ return xDispatch;
+}
+
+
+
+
+Sequence<Reference<frame::XDispatch> > SAL_CALL PresenterProtocolHandler::queryDispatches(
+ const Sequence<frame::DispatchDescriptor>& rDescriptors)
+ throw(RuntimeException)
+{
+ (void)rDescriptors;
+ ThrowIfDisposed();
+ return Sequence<Reference<frame::XDispatch> >();
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterProtocolHandler::ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterProtocolHandler object has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+
+
+//===== PresenterProtocolHandler::Dispatch ====================================
+
+Reference<frame::XDispatch> PresenterProtocolHandler::Dispatch::Create (
+ const OUString& rsURLPath,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+{
+ ::rtl::Reference<Dispatch> pDispatch (new Dispatch (rsURLPath, rpPresenterController));
+ if (pDispatch->mpCommand.get() != NULL)
+ return Reference<frame::XDispatch>(pDispatch.get());
+ else
+ return NULL;
+}
+
+
+
+
+PresenterProtocolHandler::Dispatch::Dispatch (
+ const OUString& rsURLPath,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterDispatchInterfaceBase(m_aMutex),
+ msURLPath(rsURLPath),
+ mpCommand(CreateCommand(rsURLPath, rpPresenterController)),
+ mpPresenterController(rpPresenterController),
+ maStatusListenerContainer(),
+ mbIsListeningToWindowManager(false)
+{
+ if (mpCommand.get() != NULL)
+ {
+ mpPresenterController->GetWindowManager()->AddLayoutListener(this);
+ mbIsListeningToWindowManager = true;
+ }
+}
+
+
+
+
+Command* PresenterProtocolHandler::Dispatch::CreateCommand (
+ const OUString& rsURLPath,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+{
+ if (rsURLPath.getLength() <= 5)
+ return NULL;
+ switch (rsURLPath[0])
+ {
+ case sal_Char('C') :
+ switch (rsURLPath[5])
+ {
+ case sal_Char('N'):
+ if (rsURLPath == A2S("CloseNotes"))
+ return new SetNotesViewCommand(false, rpPresenterController);
+ break;
+ case sal_Char('S'):
+ if (rsURLPath == A2S("CloseSlideSorter"))
+ return new SetSlideSorterCommand(false, rpPresenterController);
+ break;
+ case sal_Char('H'):
+ if (rsURLPath == A2S("CloseHelp"))
+ return new SetHelpViewCommand(false, rpPresenterController);
+ break;
+ }
+ break;
+ case sal_Char('G') :
+ if (rsURLPath == A2S("GrowNotesFont"))
+ return new NotesFontSizeCommand(rpPresenterController, +1);
+ break;
+
+ case sal_Char('N') :
+ switch (rsURLPath[4])
+ {
+ case sal_Char('E'):
+ if (rsURLPath == A2S("NextEffect"))
+ return new GotoNextEffectCommand(rpPresenterController);
+ case sal_Char('S'):
+ if (rsURLPath == A2S("NextSlide"))
+ return new GotoNextSlideCommand(rpPresenterController);
+ break;
+ }
+ break;
+
+ case sal_Char('P') :
+ if (rsURLPath == A2S("PrevSlide"))
+ return new GotoPreviousSlideCommand(rpPresenterController);
+ break;
+
+ case sal_Char('S') :
+ switch (rsURLPath[4])
+ {
+ case sal_Char('N'):
+ if (rsURLPath == A2S("ShowNotes"))
+ return new SetNotesViewCommand(true, rpPresenterController);
+ break;
+
+ case sal_Char('S'):
+ if (rsURLPath == A2S("ShowSlideSorter"))
+ return new SetSlideSorterCommand(true, rpPresenterController);
+ break;
+
+ case sal_Char('H'):
+ if (rsURLPath == A2S("ShowHelp"))
+ return new SetHelpViewCommand(true, rpPresenterController);
+ break;
+
+ case sal_Char('n'):
+ if (rsURLPath == A2S("ShrinkNotesFont"))
+ return new NotesFontSizeCommand(rpPresenterController, -1);
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+
+
+
+PresenterProtocolHandler::Dispatch::~Dispatch (void)
+{
+}
+
+
+
+
+void PresenterProtocolHandler::Dispatch::disposing (void)
+{
+ if (mbIsListeningToWindowManager)
+ {
+ if (mpPresenterController.get() != NULL)
+ mpPresenterController->GetWindowManager()->RemoveLayoutListener(this);
+ mbIsListeningToWindowManager = false;
+ }
+
+ msURLPath = OUString();
+ mpCommand.reset();
+}
+
+
+
+
+//----- XDispatch -------------------------------------------------------------
+
+void SAL_CALL PresenterProtocolHandler::Dispatch::dispatch(
+ const css::util::URL& rURL,
+ const css::uno::Sequence<css::beans::PropertyValue>& rArguments)
+ throw(css::uno::RuntimeException)
+{
+ (void)rArguments;
+ ThrowIfDisposed();
+
+ if (rURL.Protocol == gsProtocol
+ && rURL.Path == msURLPath)
+ {
+ if (mpCommand.get() != NULL)
+ mpCommand->Execute();
+ }
+ else
+ {
+ // We can not throw an IllegalArgumentException
+ throw RuntimeException();
+ }
+}
+
+
+
+
+void SAL_CALL PresenterProtocolHandler::Dispatch::addStatusListener(
+ const css::uno::Reference<css::frame::XStatusListener>& rxListener,
+ const css::util::URL& rURL)
+ throw(css::uno::RuntimeException)
+{
+ if (rURL.Path == msURLPath)
+ {
+ maStatusListenerContainer.push_back(rxListener);
+
+ frame::FeatureStateEvent aEvent;
+ aEvent.FeatureURL = rURL;
+ aEvent.IsEnabled = mpCommand->IsEnabled();
+ aEvent.Requery = sal_False;
+ aEvent.State = mpCommand->GetState();
+ rxListener->statusChanged(aEvent);
+ }
+ else
+ throw RuntimeException();
+}
+
+
+
+
+void SAL_CALL PresenterProtocolHandler::Dispatch::removeStatusListener (
+ const css::uno::Reference<css::frame::XStatusListener>& rxListener,
+ const css::util::URL& rURL)
+ throw(css::uno::RuntimeException)
+{
+ if (rURL.Path == msURLPath)
+ {
+ StatusListenerContainer::iterator iListener (
+ ::std::find(
+ maStatusListenerContainer.begin(),
+ maStatusListenerContainer.end(),
+ rxListener));
+ if (iListener != maStatusListenerContainer.end())
+ maStatusListenerContainer.erase(iListener);
+ }
+ else
+ throw RuntimeException();
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterProtocolHandler::Dispatch::ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterProtocolHandler::Dispatch object has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+
+
+//----- document::XEventListener ----------------------------------------------
+
+void SAL_CALL PresenterProtocolHandler::Dispatch::notifyEvent (
+ const css::document::EventObject& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+
+ mpCommand->GetState();
+}
+
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL PresenterProtocolHandler::Dispatch::disposing (const css::lang::EventObject& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ mbIsListeningToWindowManager = false;
+}
+
+
+
+
+
+//===== GotoPreviousSlideCommand ==============================================
+
+GotoPreviousSlideCommand::GotoPreviousSlideCommand (
+ const rtl::Reference<PresenterController>& rpPresenterController)
+ : mpPresenterController(rpPresenterController)
+{
+}
+
+
+
+void GotoPreviousSlideCommand::Execute (void)
+{
+ if ( ! mpPresenterController.is())
+ return;
+
+ if ( ! mpPresenterController->GetSlideShowController().is())
+ return;
+
+ mpPresenterController->GetSlideShowController()->gotoPreviousSlide();
+}
+
+
+
+
+bool GotoPreviousSlideCommand::IsEnabled (void) const
+{
+ if ( ! mpPresenterController.is())
+ return false;
+
+ if ( ! mpPresenterController->GetSlideShowController().is())
+ return false;
+
+ return mpPresenterController->GetSlideShowController()->getCurrentSlideIndex()>0;
+}
+
+
+
+
+Any GotoPreviousSlideCommand::GetState (void) const
+{
+ return Any(sal_False);
+}
+
+
+
+
+//===== GotoNextEffect ========================================================
+
+GotoNextEffectCommand::GotoNextEffectCommand (
+ const rtl::Reference<PresenterController>& rpPresenterController)
+ : mpPresenterController(rpPresenterController)
+{
+}
+
+
+
+void GotoNextEffectCommand::Execute (void)
+{
+ if ( ! mpPresenterController.is())
+ return;
+
+ if ( ! mpPresenterController->GetSlideShowController().is())
+ return;
+
+ mpPresenterController->GetSlideShowController()->gotoNextEffect();
+}
+
+
+
+
+bool GotoNextEffectCommand::IsEnabled (void) const
+{
+ // The next slide command is always enabled, even when the current slide
+ // is the last slide: from the last slide it goes to the pause slide,
+ // and from there it ends the slide show.
+ return true;
+}
+
+
+
+
+Any GotoNextEffectCommand::GetState (void) const
+{
+ return Any(sal_False);
+}
+
+
+
+
+//===== GotoNextSlide =========================================================
+
+GotoNextSlideCommand::GotoNextSlideCommand (
+ const rtl::Reference<PresenterController>& rpPresenterController)
+ : mpPresenterController(rpPresenterController)
+{
+}
+
+
+
+void GotoNextSlideCommand::Execute (void)
+{
+ if ( ! mpPresenterController.is())
+ return;
+
+ if ( ! mpPresenterController->GetSlideShowController().is())
+ return;
+
+ mpPresenterController->GetSlideShowController()->gotoNextSlide();
+}
+
+
+
+
+bool GotoNextSlideCommand::IsEnabled (void) const
+{
+ // The next slide command is always enabled, even when the current slide
+ // is the last slide: from the last slide it goes to the pause slide,
+ // and from there it ends the slide show.
+ return true;
+}
+
+
+
+
+Any GotoNextSlideCommand::GetState (void) const
+{
+ return Any(sal_False);
+}
+
+
+
+
+//===== SetNotesViewCommand ===================================================
+
+SetNotesViewCommand::SetNotesViewCommand (
+ const bool bOn,
+ const rtl::Reference<PresenterController>& rpPresenterController)
+ : mbOn(bOn),
+ mpPresenterController(rpPresenterController)
+{
+}
+
+
+
+
+void SetNotesViewCommand::Execute (void)
+{
+ if ( ! mpPresenterController.is())
+ return;
+
+ ::rtl::Reference<PresenterWindowManager> pWindowManager (
+ mpPresenterController->GetWindowManager());
+ if ( ! pWindowManager.is())
+ return;
+
+ if (mbOn)
+ pWindowManager->SetViewMode(PresenterWindowManager::VM_Notes);
+ else
+ pWindowManager->SetViewMode(PresenterWindowManager::VM_Standard);
+}
+
+
+
+
+bool SetNotesViewCommand::IsEnabled (void) const
+{
+ return true;
+}
+
+
+
+
+Any SetNotesViewCommand::GetState (void) const
+{
+ if ( ! mpPresenterController.is())
+ return Any(false);
+
+ ::rtl::Reference<PresenterWindowManager> pWindowManager (
+ mpPresenterController->GetWindowManager());
+ if ( ! pWindowManager.is())
+ return Any(false);
+
+ return Any(IsActive(pWindowManager));
+}
+
+
+
+
+bool SetNotesViewCommand::IsActive (
+ const ::rtl::Reference<PresenterWindowManager>& rpWindowManager) const
+{
+ return rpWindowManager->GetViewMode() == PresenterWindowManager::VM_Notes;
+}
+
+
+
+
+//===== SetSlideSorterCommand =================================================
+
+SetSlideSorterCommand::SetSlideSorterCommand (
+ const bool bOn,
+ const rtl::Reference<PresenterController>& rpPresenterController)
+ : mbOn(bOn),
+ mpPresenterController(rpPresenterController)
+{
+}
+
+
+
+
+void SetSlideSorterCommand::Execute (void)
+{
+ if ( ! mpPresenterController.is())
+ return;
+
+ ::rtl::Reference<PresenterWindowManager> pWindowManager (
+ mpPresenterController->GetWindowManager());
+ if ( ! pWindowManager.is())
+ return;
+
+ pWindowManager->SetSlideSorterState(mbOn);
+}
+
+
+
+
+bool SetSlideSorterCommand::IsEnabled (void) const
+{
+ return true;
+}
+
+
+
+
+Any SetSlideSorterCommand::GetState (void) const
+{
+ if ( ! mpPresenterController.is())
+ return Any(false);
+
+ ::rtl::Reference<PresenterWindowManager> pWindowManager (
+ mpPresenterController->GetWindowManager());
+ if ( ! pWindowManager.is())
+ return Any(false);
+
+ return Any(pWindowManager->GetViewMode()==PresenterWindowManager::VM_SlideOverview);
+}
+
+
+
+
+//===== SetHelpViewCommand ===================================================
+
+SetHelpViewCommand::SetHelpViewCommand (
+ const bool bOn,
+ const rtl::Reference<PresenterController>& rpPresenterController)
+ : mbOn(bOn),
+ mpPresenterController(rpPresenterController)
+{
+}
+
+
+
+
+void SetHelpViewCommand::Execute (void)
+{
+ if ( ! mpPresenterController.is())
+ return;
+
+ ::rtl::Reference<PresenterWindowManager> pWindowManager (
+ mpPresenterController->GetWindowManager());
+ if ( ! pWindowManager.is())
+ return;
+
+ pWindowManager->SetHelpViewState(mbOn);
+}
+
+
+
+
+bool SetHelpViewCommand::IsEnabled (void) const
+{
+ return true;
+}
+
+
+
+
+Any SetHelpViewCommand::GetState (void) const
+{
+ if ( ! mpPresenterController.is())
+ return Any(false);
+
+ ::rtl::Reference<PresenterWindowManager> pWindowManager (
+ mpPresenterController->GetWindowManager());
+ if ( ! pWindowManager.is())
+ return Any(false);
+
+ return Any(pWindowManager->GetViewMode()==PresenterWindowManager::VM_Help);
+}
+
+
+
+
+//===== NotesFontSizeCommand ==================================================
+
+NotesFontSizeCommand::NotesFontSizeCommand(
+ const rtl::Reference<PresenterController>& rpPresenterController,
+ const sal_Int32 nSizeChange)
+ : mpPresenterController(rpPresenterController),
+ mnSizeChange(nSizeChange)
+{
+}
+
+
+
+
+::rtl::Reference<PresenterNotesView> NotesFontSizeCommand::GetNotesView (void) const
+{
+ if (mpPresenterController.get() == NULL)
+ return NULL;
+
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPresenterController->GetPaneContainer()->FindViewURL(
+ PresenterViewFactory::msNotesViewURL));
+ if (pDescriptor.get() == NULL)
+ return NULL;
+
+ return dynamic_cast<PresenterNotesView*>(pDescriptor->mxView.get());
+}
+
+
+
+
+void NotesFontSizeCommand::Execute (void)
+{
+ ::rtl::Reference<PresenterNotesView> pView (GetNotesView());
+ if (pView.is())
+ pView->ChangeFontSize(mnSizeChange);
+}
+
+
+
+
+bool NotesFontSizeCommand::IsEnabled (void) const
+{
+ return true;
+}
+
+
+
+
+Any NotesFontSizeCommand::GetState (void) const
+{
+ return Any();
+}
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterProtocolHandler.hxx b/sdext/source/presenter/PresenterProtocolHandler.hxx
new file mode 100644
index 000000000000..2c7918e735f8
--- /dev/null
+++ b/sdext/source/presenter/PresenterProtocolHandler.hxx
@@ -0,0 +1,106 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_PROTOCOL_HANDLER_HXX
+#define SDEXT_PRESENTER_PRESENTER_PROTOCOL_HANDLER_HXX
+
+#include <cppuhelper/compbase2.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <boost/unordered_map.hpp>
+#include <rtl/ref.hxx>
+#include <boost/scoped_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper2 <
+ css::lang::XInitialization,
+ css::frame::XDispatchProvider
+ > PresenterProtocolHandlerInterfaceBase;
+}
+
+class PresenterController;
+
+class PresenterProtocolHandler
+ : protected ::cppu::BaseMutex,
+ public PresenterProtocolHandlerInterfaceBase
+{
+public:
+ PresenterProtocolHandler (const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+ virtual ~PresenterProtocolHandler (void);
+
+ void SAL_CALL disposing (void);
+
+ static ::rtl::OUString getImplementationName_static (void);
+ static css::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static (void);
+ static css::uno::Reference<css::uno::XInterface> Create(
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext)
+ SAL_THROW((css::uno::Exception));
+
+
+ // XInitialization
+
+ virtual void SAL_CALL initialize(
+ const css::uno::Sequence<css::uno::Any>& aArguments)
+ throw (css::uno::Exception, css::uno::RuntimeException);
+
+
+ // XDispatchProvider
+
+ virtual css::uno::Reference<css::frame::XDispatch > SAL_CALL
+ queryDispatch (
+ const css::util::URL& aURL,
+ const rtl::OUString& aTargetFrameName,
+ sal_Int32 nSearchFlags )
+ throw(css::uno::RuntimeException);
+
+ virtual css::uno::Sequence<css::uno::Reference<css::frame::XDispatch> > SAL_CALL
+ queryDispatches(
+ const css::uno::Sequence< css::frame::DispatchDescriptor>& rDescriptors)
+ throw(css::uno::RuntimeException);
+
+
+private:
+ class Dispatch;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+
+ void ThrowIfDisposed (void) const throw (css::lang::DisposedException);
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterScreen.cxx b/sdext/source/presenter/PresenterScreen.cxx
new file mode 100644
index 000000000000..e39e168876c6
--- /dev/null
+++ b/sdext/source/presenter/PresenterScreen.cxx
@@ -0,0 +1,930 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterScreen.hxx"
+#include "PresenterConfigurationAccess.hxx"
+#include "PresenterController.hxx"
+#include "PresenterFrameworkObserver.hxx"
+#include "PresenterHelper.hxx"
+#include "PresenterPaneContainer.hxx"
+#include "PresenterPaneFactory.hxx"
+#include "PresenterViewFactory.hxx"
+#include "PresenterWindowManager.hxx"
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/drawing/framework/Configuration.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/drawing/framework/ResourceId.hpp>
+#include <com/sun/star/drawing/framework/ResourceActivationMode.hpp>
+#include <com/sun/star/presentation/XSlideShow.hpp>
+#include <com/sun/star/presentation/XPresentation2.hpp>
+#include <com/sun/star/presentation/XPresentationSupplier.hpp>
+#include <com/sun/star/document/XEventBroadcaster.hpp>
+#include <boost/bind.hpp>
+#include <tools/debug.hxx>
+
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::presentation;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+#define A2S(s) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)))
+
+namespace sdext { namespace presenter {
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper1 <
+ css::document::XEventListener
+ > PresenterScreenListenerInterfaceBase;
+
+ /** One instance of a PresenterScreenListener is registered per Impress
+ document and waits for the full screen slide show to start and to
+ end.
+ */
+ class PresenterScreenListener
+ : private ::boost::noncopyable,
+ private ::cppu::BaseMutex,
+ public PresenterScreenListenerInterfaceBase
+ {
+ public:
+ PresenterScreenListener (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::frame::XModel2>& rxModel);
+ virtual ~PresenterScreenListener (void);
+
+ void Initialize (void);
+ virtual void SAL_CALL disposing (void);
+
+ // document::XEventListener
+
+ virtual void SAL_CALL notifyEvent( const css::document::EventObject& Event ) throw (css::uno::RuntimeException);
+
+ // XEventListener
+
+ virtual void SAL_CALL disposing ( const css::lang::EventObject& rEvent) throw (css::uno::RuntimeException);
+
+ private:
+ css::uno::Reference<css::frame::XModel2 > mxModel;
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ rtl::Reference<PresenterScreen> mpPresenterScreen;
+
+ void ThrowIfDisposed (void) const throw (::com::sun::star::lang::DisposedException);
+ };
+}
+
+
+//----- Service ---------------------------------------------------------------
+
+OUString PresenterScreenJob::getImplementationName_static (void)
+{
+ return A2S("com.sun.star.comp.Draw.framework.PresenterScreenJob");
+}
+
+
+
+
+Sequence<OUString> PresenterScreenJob::getSupportedServiceNames_static (void)
+{
+ static const ::rtl::OUString sServiceName(
+ A2S("com.sun.star.drawing.framework.PresenterScreenJob"));
+ return Sequence<rtl::OUString>(&sServiceName, 1);
+}
+
+
+
+
+Reference<XInterface> PresenterScreenJob::Create (const Reference<uno::XComponentContext>& rxContext)
+ SAL_THROW((css::uno::Exception))
+{
+ return Reference<XInterface>(static_cast<XWeak*>(new PresenterScreenJob(rxContext)));
+}
+
+
+
+
+//===== PresenterScreenJob ====================================================
+
+PresenterScreenJob::PresenterScreenJob (const Reference<XComponentContext>& rxContext)
+ : PresenterScreenJobInterfaceBase(m_aMutex),
+ mxComponentContext(rxContext)
+{
+}
+
+
+
+
+PresenterScreenJob::~PresenterScreenJob (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterScreenJob::disposing (void)
+{
+ mxComponentContext = NULL;
+}
+
+
+
+
+//----- XJob -----------------------------------------------------------
+
+Any SAL_CALL PresenterScreenJob::execute(
+ const Sequence< beans::NamedValue >& Arguments )
+ throw (lang::IllegalArgumentException, Exception, RuntimeException)
+{
+ Sequence< beans::NamedValue > lEnv;
+
+ sal_Int32 i = 0;
+ sal_Int32 c = Arguments.getLength();
+ const beans::NamedValue* p = Arguments.getConstArray();
+ for (i=0; i<c; ++i)
+ {
+ if (p[i].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Environment")))
+ {
+ p[i].Value >>= lEnv;
+ break;
+ }
+ }
+
+ Reference<frame::XModel2> xModel;
+ c = lEnv.getLength();
+ p = lEnv.getConstArray();
+ for (i=0; i<c; ++i)
+ {
+ if (p[i].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Model")))
+ {
+ p[i].Value >>= xModel;
+ break;
+ }
+ }
+
+ Reference< XServiceInfo > xInfo( xModel, UNO_QUERY );
+ if( xInfo.is() && xInfo->supportsService( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.presentation.PresentationDocument" ) ) ) )
+ {
+ // Create a new listener that waits for the full screen presentation
+ // to start and to end. It takes care of its own lifetime.
+ ::rtl::Reference<PresenterScreenListener> pListener (
+ new PresenterScreenListener(mxComponentContext, xModel));
+ pListener->Initialize();
+ }
+
+ return Any();
+}
+
+
+
+
+//===== PresenterScreenListener ===============================================
+
+namespace {
+
+PresenterScreenListener::PresenterScreenListener (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::frame::XModel2>& rxModel)
+ : PresenterScreenListenerInterfaceBase(m_aMutex),
+ mxModel(rxModel),
+ mxComponentContext(rxContext),
+ mpPresenterScreen()
+{
+}
+
+
+
+
+void PresenterScreenListener::Initialize (void)
+{
+ Reference< document::XEventListener > xDocListener(
+ static_cast< document::XEventListener* >(this), UNO_QUERY);
+ Reference< document::XEventBroadcaster > xDocBroadcaster( mxModel, UNO_QUERY );
+ if( xDocBroadcaster.is() )
+ xDocBroadcaster->addEventListener(xDocListener);
+}
+
+
+
+
+PresenterScreenListener::~PresenterScreenListener (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterScreenListener::disposing (void)
+{
+ Reference< document::XEventBroadcaster > xDocBroadcaster( mxModel, UNO_QUERY );
+ if( xDocBroadcaster.is() )
+ xDocBroadcaster->removeEventListener(
+ Reference<document::XEventListener>(
+ static_cast<document::XEventListener*>(this), UNO_QUERY));
+
+ if (mpPresenterScreen.is())
+ {
+ mpPresenterScreen->RequestShutdownPresenterScreen();
+ mpPresenterScreen = NULL;
+ }
+}
+
+
+
+
+// document::XEventListener
+
+void SAL_CALL PresenterScreenListener::notifyEvent( const css::document::EventObject& Event ) throw (css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if( Event.EventName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "OnStartPresentation" ) ) )
+ {
+ mpPresenterScreen = new PresenterScreen(mxComponentContext, mxModel);
+ mpPresenterScreen->InitializePresenterScreen();
+ }
+ else if( Event.EventName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "OnEndPresentation" ) ) )
+ {
+ if (mpPresenterScreen.is())
+ {
+ mpPresenterScreen->RequestShutdownPresenterScreen();
+ mpPresenterScreen = NULL;
+ }
+ }
+}
+
+
+
+
+// XEventListener
+
+void SAL_CALL PresenterScreenListener::disposing (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+
+ if (mpPresenterScreen.is())
+ {
+ mpPresenterScreen->RequestShutdownPresenterScreen();
+ mpPresenterScreen = NULL;
+ }
+}
+
+
+
+
+void PresenterScreenListener::ThrowIfDisposed (void) const throw (
+ ::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterScreenListener object has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+} // end of anonymous namespace
+
+
+
+
+//===== PresenterScreen =======================================================
+
+PresenterScreen::PresenterScreen (
+ const Reference<XComponentContext>& rxContext,
+ const css::uno::Reference<css::frame::XModel2>& rxModel)
+ : PresenterScreenInterfaceBase(m_aMutex),
+ mxModel(rxModel),
+ mxController(),
+ mxConfigurationControllerWeak(),
+ mxContextWeak(rxContext),
+ mxSlideShowControllerWeak(),
+ mpPresenterController(),
+ mxSlideShowViewId(),
+ mxSavedConfiguration(),
+ mpPaneContainer(),
+ mnComponentIndex(0),
+ mxPaneFactory(),
+ mxViewFactory(),
+ maViewDescriptors()
+{
+}
+
+
+
+
+PresenterScreen::~PresenterScreen (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterScreen::disposing (void)
+{
+ Reference<XConfigurationController> xCC (mxConfigurationControllerWeak);
+ if (xCC.is() && mxSavedConfiguration.is())
+ {
+ xCC->restoreConfiguration(mxSavedConfiguration);
+ }
+ mxConfigurationControllerWeak = Reference<XConfigurationController>(NULL);
+
+ Reference<lang::XComponent> xViewFactoryComponent (mxViewFactory, UNO_QUERY);
+ if (xViewFactoryComponent.is())
+ xViewFactoryComponent->dispose();
+ Reference<lang::XComponent> xPaneFactoryComponent (mxPaneFactory, UNO_QUERY);
+ if (xPaneFactoryComponent.is())
+ xPaneFactoryComponent->dispose();
+
+ mxModel = NULL;
+}
+
+
+
+
+//----- XEventListener --------------------------------------------------------
+
+void SAL_CALL PresenterScreen::disposing (const lang::EventObject& /*rEvent*/)
+ throw (RuntimeException)
+{
+ mxSlideShowControllerWeak = WeakReference<presentation::XSlideShowController>();
+ RequestShutdownPresenterScreen();
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterScreen::InitializePresenterScreen (void)
+{
+ try
+ {
+ Reference<XComponentContext> xContext (mxContextWeak);
+ mpPaneContainer =
+ new PresenterPaneContainer(Reference<XComponentContext>(xContext));
+
+ Reference<XPresentationSupplier> xPS ( mxModel, UNO_QUERY_THROW);
+ Reference<XPresentation2> xPresentation(xPS->getPresentation(), UNO_QUERY_THROW);
+ Reference<presentation::XSlideShowController> xSlideShowController( xPresentation->getController() );
+ mxSlideShowControllerWeak = xSlideShowController;
+
+ if( !xSlideShowController.is() || !xSlideShowController->isFullScreen() )
+ return;
+
+ // find first controller that is not the current controller (the one with the slideshow
+ mxController = mxModel->getCurrentController();
+ Reference< container::XEnumeration > xEnum( mxModel->getControllers() );
+ if( xEnum.is() )
+ {
+ while( xEnum->hasMoreElements() )
+ {
+ Reference< frame::XController > xC( xEnum->nextElement(), UNO_QUERY );
+ if( xC.is() && (xC != mxController) )
+ {
+ mxController = xC;
+ break;
+ }
+ }
+ }
+ // Get the XController from the first argument.
+ Reference<XControllerManager> xCM(mxController, UNO_QUERY_THROW);
+
+ Reference<XConfigurationController> xCC( xCM->getConfigurationController());
+ mxConfigurationControllerWeak = xCC;
+
+ Reference<drawing::framework::XResourceId> xMainPaneId(
+ GetMainPaneId(xPresentation));
+ // An empty reference means that the presenter screen can
+ // not or must not be displayed.
+ if ( ! xMainPaneId.is())
+ return;
+
+ if (xCC.is() && xContext.is())
+ {
+ // Store the current configuration so that we can restore it when
+ // the presenter view is deactivated.
+ mxSavedConfiguration = xCC->getRequestedConfiguration();
+ xCC->lock();
+
+ try
+ {
+ // At the moment the presenter controller is displayed in its
+ // own full screen window that is controlled by the same
+ // configuration controller as the Impress document from
+ // which the presentation was started. Therefore the main
+ // pane is actived additionally to the already existing
+ // panes and does not replace them.
+ xCC->requestResourceActivation(
+ xMainPaneId,
+ ResourceActivationMode_ADD);
+ SetupConfiguration(xContext, xMainPaneId);
+
+ mpPresenterController = new PresenterController(
+ xContext,
+ mxController,
+ xSlideShowController,
+ mpPaneContainer,
+ xMainPaneId);
+
+ // Create pane and view factories and integrate them into the
+ // drawing framework.
+ SetupPaneFactory(xContext);
+ SetupViewFactory(xContext);
+
+ mpPresenterController->GetWindowManager()->RestoreViewMode();
+ }
+ catch (RuntimeException&)
+ {
+ xCC->restoreConfiguration(mxSavedConfiguration);
+ }
+ xCC->unlock();
+ }
+ }
+ catch (Exception&)
+ {
+ }
+}
+
+
+
+
+sal_Int32 PresenterScreen::GetScreenNumber (
+ const Reference<presentation::XPresentation2>& rxPresentation) const
+{
+ // Determine the screen on which the full screen presentation is being
+ // displayed.
+ sal_Int32 nScreenNumber (0);
+ sal_Int32 nScreenCount (1);
+ try
+ {
+ Reference<beans::XPropertySet> xProperties (rxPresentation, UNO_QUERY);
+ if ( ! xProperties.is())
+ return -1;
+
+ sal_Int32 nDisplayNumber (-1);
+ if ( ! (xProperties->getPropertyValue(A2S("Display")) >>= nDisplayNumber))
+ return -1;
+
+ Reference<XComponentContext> xContext (mxContextWeak);
+ if ( ! xContext.is())
+ return -1;
+ Reference<lang::XMultiComponentFactory> xFactory (
+ xContext->getServiceManager(), UNO_QUERY);
+ if ( ! xFactory.is())
+ return -1;
+ Reference<beans::XPropertySet> xDisplayProperties (
+ xFactory->createInstanceWithContext(A2S("com.sun.star.awt.DisplayAccess"),xContext),
+ UNO_QUERY);
+ if ( ! xDisplayProperties.is())
+ return -1;
+
+ if (nDisplayNumber > 0)
+ {
+ nScreenNumber = nDisplayNumber - 1;
+ }
+ else if (nDisplayNumber == 0)
+ {
+ // A display number value of 0 indicates the primary screen.
+ // Instantiate the DisplayAccess service to find out which
+ // screen number that is.
+ if (nDisplayNumber <= 0 && xDisplayProperties.is())
+ xDisplayProperties->getPropertyValue(A2S("DefaultDisplay")) >>= nScreenNumber;
+ }
+
+ // We still have to determine the number of screens to decide
+ // whether the presenter screen may be shown at all.
+ Reference<container::XIndexAccess> xIndexAccess (xDisplayProperties, UNO_QUERY);
+ if ( ! xIndexAccess.is())
+ return -1;
+ nScreenCount = xIndexAccess->getCount();
+
+ if (nScreenCount < 2 || nDisplayNumber > nScreenCount)
+ {
+ // There is either only one screen or the full screen
+ // presentation spans all available screens. The presenter
+ // screen is shown only when a special flag in the configuration
+ // is set.
+ PresenterConfigurationAccess aConfiguration (
+ xContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_ONLY);
+ bool bStartAlways (false);
+ if (aConfiguration.GetConfigurationNode(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Presenter/StartAlways"))) >>= bStartAlways)
+ {
+ if (bStartAlways)
+ return nScreenNumber;
+ }
+ return -1;
+ }
+ }
+ catch (beans::UnknownPropertyException&)
+ {
+ OSL_ASSERT(false);
+ // For some reason we can not access the screen number. Use
+ // the default instead.
+ }
+
+ return nScreenNumber;
+}
+
+
+
+
+Reference<drawing::framework::XResourceId> PresenterScreen::GetMainPaneId (
+ const Reference<presentation::XPresentation2>& rxPresentation) const
+{
+ // A negative value means that the presentation spans all available
+ // displays. That leaves no room for the presenter.
+ const sal_Int32 nScreenNumber(GetScreenNumber(rxPresentation));
+ if (nScreenNumber < 0)
+ return NULL;
+
+ // Setup the resource id of the full screen background pane so that
+ // it is displayed on another screen than the presentation.
+ sal_Int32 nPresenterScreenNumber (1);
+ switch (nScreenNumber)
+ {
+ case 0:
+ nPresenterScreenNumber = 1;
+ break;
+
+ case 1:
+ nPresenterScreenNumber = 0;
+ break;
+
+ default:
+ // When the full screen presentation is displayed on a screen
+ // other than 0 or 1 then place the presenter on the first
+ // available screen.
+ nPresenterScreenNumber = 0;
+ break;
+ }
+
+ return ResourceId::create(
+ Reference<XComponentContext>(mxContextWeak),
+ PresenterHelper::msFullScreenPaneURL
+ +A2S("?FullScreen=true&ScreenNumber=")
+ + OUString::valueOf(nPresenterScreenNumber));
+}
+
+
+
+
+void PresenterScreen::RequestShutdownPresenterScreen (void)
+{
+ // Restore the configuration that was active before the presenter screen
+ // has been activated. Now, that the presenter screen is displayed in
+ // its own top level window this probably not necessary, but one never knows.
+ Reference<XConfigurationController> xCC (mxConfigurationControllerWeak);
+ if (xCC.is() && mxSavedConfiguration.is())
+ {
+ xCC->restoreConfiguration(mxSavedConfiguration);
+ mxSavedConfiguration = NULL;
+ }
+
+ if (xCC.is())
+ {
+ // The actual restoration of the configuration takes place
+ // asynchronously. The view and pane factories can only by disposed
+ // after that. Therefore, set up a listener and wait for the
+ // restoration.
+ rtl::Reference<PresenterScreen> pSelf (this);
+ PresenterFrameworkObserver::RunOnUpdateEnd(
+ xCC,
+ ::boost::bind(&PresenterScreen::ShutdownPresenterScreen, pSelf));
+ xCC->update();
+ }
+}
+
+
+
+
+void PresenterScreen::ShutdownPresenterScreen (void)
+{
+ Reference<lang::XComponent> xViewFactoryComponent (mxViewFactory, UNO_QUERY);
+ if (xViewFactoryComponent.is())
+ xViewFactoryComponent->dispose();
+ mxViewFactory = NULL;
+
+ Reference<lang::XComponent> xPaneFactoryComponent (mxPaneFactory, UNO_QUERY);
+ if (xPaneFactoryComponent.is())
+ xPaneFactoryComponent->dispose();
+ mxPaneFactory = NULL;
+
+ if (mpPresenterController.get() != NULL)
+ {
+ mpPresenterController->dispose();
+ mpPresenterController = rtl::Reference<PresenterController>();
+ }
+ mpPaneContainer = new PresenterPaneContainer(Reference<XComponentContext>(mxContextWeak));
+}
+
+
+
+
+void PresenterScreen::SetupPaneFactory (const Reference<XComponentContext>& rxContext)
+{
+ try
+ {
+ if ( ! mxPaneFactory.is())
+ mxPaneFactory = PresenterPaneFactory::Create(
+ rxContext,
+ mxController,
+ mpPresenterController);
+ }
+ catch (RuntimeException&)
+ {
+ OSL_ASSERT(false);
+ }
+}
+
+
+
+
+void PresenterScreen::SetupViewFactory (const Reference<XComponentContext>& rxContext)
+{
+ try
+ {
+ if ( ! mxViewFactory.is())
+ mxViewFactory = PresenterViewFactory::Create(
+ rxContext,
+ mxController,
+ mpPresenterController);
+ }
+ catch (RuntimeException&)
+ {
+ OSL_ASSERT(false);
+ }
+}
+
+
+
+
+void PresenterScreen::SetupConfiguration (
+ const Reference<XComponentContext>& rxContext,
+ const Reference<XResourceId>& rxAnchorId)
+{
+ try
+ {
+ PresenterConfigurationAccess aConfiguration (
+ rxContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.extension.PresenterScreen")),
+ PresenterConfigurationAccess::READ_ONLY);
+ maViewDescriptors.clear();
+ ProcessViewDescriptions(aConfiguration);
+ OUString sLayoutName (RTL_CONSTASCII_USTRINGPARAM("DefaultLayout"));
+ aConfiguration.GetConfigurationNode(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Presenter/CurrentLayout"))) >>= sLayoutName;
+ ProcessLayout(aConfiguration, sLayoutName, rxContext, rxAnchorId);
+ }
+ catch (RuntimeException&)
+ {
+ }
+}
+
+
+
+
+void PresenterScreen::ProcessLayout (
+ PresenterConfigurationAccess& rConfiguration,
+ const OUString& rsLayoutName,
+ const Reference<XComponentContext>& rxContext,
+ const Reference<XResourceId>& rxAnchorId)
+{
+ try
+ {
+ Reference<container::XHierarchicalNameAccess> xLayoutNode (
+ rConfiguration.GetConfigurationNode(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Presenter/Layouts/"))+rsLayoutName),
+ UNO_QUERY_THROW);
+
+ // Read the parent layout first, if one is referenced.
+ OUString sParentLayout;
+ rConfiguration.GetConfigurationNode(
+ xLayoutNode,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("ParentLayout"))) >>= sParentLayout;
+ if (sParentLayout.getLength() > 0)
+ {
+ // Prevent infinite recursion.
+ if (rsLayoutName != sParentLayout)
+ ProcessLayout(rConfiguration, sParentLayout, rxContext, rxAnchorId);
+ }
+
+ // Process the actual layout list.
+ Reference<container::XNameAccess> xList (
+ rConfiguration.GetConfigurationNode(
+ xLayoutNode,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Layout"))),
+ UNO_QUERY_THROW);
+
+ ::std::vector<rtl::OUString> aProperties (6);
+ aProperties[0] = OUString(RTL_CONSTASCII_USTRINGPARAM("PaneURL"));
+ aProperties[1] = OUString(RTL_CONSTASCII_USTRINGPARAM("ViewURL"));
+ aProperties[2] = OUString(RTL_CONSTASCII_USTRINGPARAM("RelativeX"));
+ aProperties[3] = OUString(RTL_CONSTASCII_USTRINGPARAM("RelativeY"));
+ aProperties[4] = OUString(RTL_CONSTASCII_USTRINGPARAM("RelativeWidth"));
+ aProperties[5] = OUString(RTL_CONSTASCII_USTRINGPARAM("RelativeHeight"));
+ mnComponentIndex = 1;
+ PresenterConfigurationAccess::ForAll(
+ xList,
+ aProperties,
+ ::boost::bind(&PresenterScreen::ProcessComponent, this,
+ _1,
+ _2,
+ rxContext,
+ rxAnchorId));
+ }
+ catch (RuntimeException&)
+ {
+ }
+}
+
+
+
+
+void PresenterScreen::ProcessViewDescriptions (
+ PresenterConfigurationAccess& rConfiguration)
+{
+ try
+ {
+ Reference<container::XNameAccess> xViewDescriptionsNode (
+ rConfiguration.GetConfigurationNode(A2S("Presenter/Views")),
+ UNO_QUERY_THROW);
+
+ ::std::vector<rtl::OUString> aProperties (4);
+ aProperties[0] = OUString(RTL_CONSTASCII_USTRINGPARAM("ViewURL"));
+ aProperties[1] = OUString(RTL_CONSTASCII_USTRINGPARAM("Title"));
+ aProperties[2] = OUString(RTL_CONSTASCII_USTRINGPARAM("AccessibleTitle"));
+ aProperties[3] = OUString(RTL_CONSTASCII_USTRINGPARAM("IsOpaque"));
+ mnComponentIndex = 1;
+ PresenterConfigurationAccess::ForAll(
+ xViewDescriptionsNode,
+ aProperties,
+ ::boost::bind(&PresenterScreen::ProcessViewDescription, this, _1, _2));
+ }
+ catch (RuntimeException&)
+ {
+ OSL_ASSERT(false);
+ }
+}
+
+
+
+
+void PresenterScreen::ProcessComponent (
+ const OUString& rsKey,
+ const ::std::vector<Any>& rValues,
+ const Reference<XComponentContext>& rxContext,
+ const Reference<XResourceId>& rxAnchorId)
+{
+ (void)rsKey;
+
+ if (rValues.size() != 6)
+ return;
+
+ try
+ {
+ OUString sPaneURL;
+ OUString sViewURL;
+ double nX = 0;
+ double nY = 0;
+ double nWidth = 0;
+ double nHeight = 0;
+ rValues[0] >>= sPaneURL;
+ rValues[1] >>= sViewURL;
+ rValues[2] >>= nX;
+ rValues[3] >>= nY;
+ rValues[4] >>= nWidth;
+ rValues[5] >>= nHeight;
+
+ if (nX>=0 && nY>=0 && nWidth>0 && nHeight>0)
+ {
+ SetupView(
+ rxContext,
+ rxAnchorId,
+ sPaneURL,
+ sViewURL,
+ PresenterPaneContainer::ViewInitializationFunction(),
+ nX,
+ nY,
+ nX+nWidth,
+ nY+nHeight);
+ }
+ }
+ catch (Exception& e)
+ {
+ (void)e;
+ OSL_ASSERT(false);
+ }
+}
+
+
+
+
+void PresenterScreen::ProcessViewDescription (
+ const OUString& rsKey,
+ const ::std::vector<Any>& rValues)
+{
+ (void)rsKey;
+
+ if (rValues.size() != 4)
+ return;
+
+ try
+ {
+ ViewDescriptor aViewDescriptor;
+ OUString sViewURL;
+ rValues[0] >>= sViewURL;
+ rValues[1] >>= aViewDescriptor.msTitle;
+ rValues[2] >>= aViewDescriptor.msAccessibleTitle;
+ rValues[3] >>= aViewDescriptor.mbIsOpaque;
+ if (aViewDescriptor.msAccessibleTitle.getLength()==0)
+ aViewDescriptor.msAccessibleTitle = aViewDescriptor.msTitle;
+ maViewDescriptors[sViewURL] = aViewDescriptor;
+ }
+ catch (Exception&)
+ {
+ OSL_ASSERT(false);
+ }
+}
+
+
+
+
+void PresenterScreen::SetupView(
+ const Reference<XComponentContext>& rxContext,
+ const Reference<XResourceId>& rxAnchorId,
+ const OUString& rsPaneURL,
+ const OUString& rsViewURL,
+ const PresenterPaneContainer::ViewInitializationFunction& rViewInitialization,
+ const double nLeft,
+ const double nTop,
+ const double nRight,
+ const double nBottom)
+{
+ Reference<XConfigurationController> xCC (mxConfigurationControllerWeak);
+ if (xCC.is())
+ {
+ Reference<XResourceId> xPaneId (ResourceId::createWithAnchor(rxContext,rsPaneURL,rxAnchorId));
+ // Look up the view descriptor.
+ ViewDescriptor aViewDescriptor;
+ ViewDescriptorContainer::const_iterator iDescriptor (maViewDescriptors.find(rsViewURL));
+ if (iDescriptor != maViewDescriptors.end())
+ aViewDescriptor = iDescriptor->second;
+
+ // Prepare the pane.
+ OSL_ASSERT(mpPaneContainer.get() != NULL);
+ mpPaneContainer->PreparePane(
+ xPaneId,
+ rsViewURL,
+ aViewDescriptor.msTitle,
+ aViewDescriptor.msAccessibleTitle,
+ aViewDescriptor.mbIsOpaque,
+ rViewInitialization,
+ nLeft,
+ nTop,
+ nRight,
+ nBottom);
+ }
+}
+
+
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterScreen.hxx b/sdext/source/presenter/PresenterScreen.hxx
new file mode 100644
index 000000000000..7096c9f72fe6
--- /dev/null
+++ b/sdext/source/presenter/PresenterScreen.hxx
@@ -0,0 +1,250 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_SCREEN_HXX
+#define SDEXT_PRESENTER_PRESENTER_SCREEN_HXX
+
+#include "PresenterConfigurationAccess.hxx"
+#include "PresenterPaneContainer.hxx"
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/frame/XModel2.hpp>
+#include <com/sun/star/task/XJob.hpp>
+#include <com/sun/star/document/XEventListener.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/presentation/XSlideShowController.hpp>
+#include <com/sun/star/presentation/XPresentation2.hpp>
+#include <rtl/ref.hxx>
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/scoped_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterWindowManager;
+class PresenterController;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper1 <
+ css::task::XJob
+ > PresenterScreenJobInterfaceBase;
+ typedef ::cppu::WeakComponentImplHelper1 <
+ css::lang::XEventListener
+ > PresenterScreenInterfaceBase;
+}
+
+
+
+
+/** The PresenterScreenJob service is instantiated every time a document is
+ created or loaded. In its execute() method it then filters out all
+ non-Impress documents and creates and registers a new PresenterScreen
+ object.
+*/
+class PresenterScreenJob
+ : private ::boost::noncopyable,
+ private ::cppu::BaseMutex,
+ public PresenterScreenJobInterfaceBase
+{
+public:
+ static ::rtl::OUString getImplementationName_static (void);
+ static css::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static (void);
+ static css::uno::Reference<css::uno::XInterface> Create(
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext)
+ SAL_THROW((css::uno::Exception));
+
+ virtual void SAL_CALL disposing (void);
+
+ // XJob
+
+ virtual css::uno::Any SAL_CALL execute(
+ const css::uno::Sequence<css::beans::NamedValue >& Arguments)
+ throw (css::lang::IllegalArgumentException,
+ css::uno::Exception,
+ css::uno::RuntimeException);
+
+private:
+ PresenterScreenJob (const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+ virtual ~PresenterScreenJob (void);
+
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+};
+
+
+
+
+/** This is the bootstrap class of the presenter screen. It is registered
+ as drawing framework startup service. That means that every drawing
+ framework instance creates an instance of this class.
+
+ <p>A PresenterScreen object registers itself as listener for drawing
+ framework configuration changes. It waits for the full screen marker (a
+ top level resource) to appear in the current configuration. When that
+ happens the actual presenter screen is initialized. A new
+ PresenterController is created and takes over the task of controlling
+ the presenter screen.</p>
+*/
+class PresenterScreen
+ : private ::boost::noncopyable,
+ private ::cppu::BaseMutex,
+ public PresenterScreenInterfaceBase
+{
+public:
+ PresenterScreen (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::frame::XModel2>& rxModel);
+ virtual ~PresenterScreen (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ /** Make the presenter screen visible.
+ */
+ void InitializePresenterScreen (void);
+
+ /** Do not call ShutdownPresenterScreen() directly. Call
+ RequestShutdownPresenterScreen() instead. It will issue an
+ asynchronous call to ShutdownPresenterScreen() when that is safe.
+ */
+ void RequestShutdownPresenterScreen (void);
+
+
+ // XEventListener
+
+ virtual void SAL_CALL disposing ( const css::lang::EventObject& rEvent) throw (css::uno::RuntimeException);
+
+private:
+ css::uno::Reference<css::frame::XModel2 > mxModel;
+ css::uno::Reference<css::frame::XController> mxController;
+ css::uno::WeakReference<css::drawing::framework::XConfigurationController>
+ mxConfigurationControllerWeak;
+ css::uno::WeakReference<css::uno::XComponentContext> mxContextWeak;
+ css::uno::WeakReference<css::presentation::XSlideShowController> mxSlideShowControllerWeak;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxSlideShowViewId;
+ css::uno::Reference<css::drawing::framework::XConfiguration> mxSavedConfiguration;
+ ::rtl::Reference<PresenterPaneContainer> mpPaneContainer;
+ sal_Int32 mnComponentIndex;
+ css::uno::Reference<css::drawing::framework::XResourceFactory> mxPaneFactory;
+ css::uno::Reference<css::drawing::framework::XResourceFactory> mxViewFactory;
+
+ class ViewDescriptor
+ {
+ public:
+ ::rtl::OUString msTitle;
+ ::rtl::OUString msAccessibleTitle;
+ bool mbIsOpaque;
+ };
+ typedef ::std::map<rtl::OUString,ViewDescriptor> ViewDescriptorContainer;
+ ViewDescriptorContainer maViewDescriptors;
+
+
+ void ShutdownPresenterScreen (void);
+
+ /** Create and initialize the factory for presenter view specific panes.
+ */
+ void SetupPaneFactory (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+
+ /** Create and initialize the factory for presenter view specific views.
+ */
+ void SetupViewFactory (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+
+ /** Read the current layout from the configuration and call
+ ProcessLayout to bring it on to the screen.
+ */
+ void SetupConfiguration (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxAnchorId);
+
+ /** Read one layout from the configuration and make resource activation
+ requests to bring it on to the screen. When one layout references a
+ parent layout then this method calls itself recursively.
+ */
+ void ProcessLayout (
+ PresenterConfigurationAccess& rConfiguration,
+ const ::rtl::OUString& rsLayoutName,
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxAnchorId);
+
+ /** Called by ProcessLayout for a single entry of a Layouts
+ configuration list.
+ */
+ void ProcessComponent (
+ const ::rtl::OUString& rsKey,
+ const ::std::vector<css::uno::Any>& rValues,
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxAnchorId);
+
+ /** Read the view descriptions from the configuration.
+ */
+ void ProcessViewDescriptions (
+ PresenterConfigurationAccess& rConfiguration);
+
+ /** Called by ProcessViewDescriptions for a single entry.
+ */
+ void ProcessViewDescription (
+ const ::rtl::OUString& rsKey,
+ const ::std::vector<css::uno::Any>& rValues);
+
+ void SetupView (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxAnchorId,
+ const ::rtl::OUString& rsPaneURL,
+ const ::rtl::OUString& rsViewURL,
+ const PresenterPaneContainer::ViewInitializationFunction& rViewInitialization,
+ const double nLeft,
+ const double nTop,
+ const double nRight,
+ const double nBottom);
+
+ /** Return the screen number on which to display the presenter screen.
+ @return
+ Returns -1 when the presenter screen can or shall not be
+ displayed.
+ */
+ sal_Int32 GetScreenNumber (
+ const css::uno::Reference<css::presentation::XPresentation2>& rxPresentation) const;
+
+ /** Create a resource id for the full screen background pane so that it
+ is displayed on another screen than the full screen presentation.
+ */
+ css::uno::Reference<css::drawing::framework::XResourceId> GetMainPaneId (
+ const css::uno::Reference<css::presentation::XPresentation2>& rxPresentation) const;
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterScrollBar.cxx b/sdext/source/presenter/PresenterScrollBar.cxx
new file mode 100644
index 000000000000..7b78acaed7aa
--- /dev/null
+++ b/sdext/source/presenter/PresenterScrollBar.cxx
@@ -0,0 +1,1348 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterScrollBar.hxx"
+#include "PresenterBitmapContainer.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterComponent.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterPaintManager.hxx"
+#include "PresenterTimer.hxx"
+#include "PresenterUIPainter.hxx"
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/WindowAttribute.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/awt/XToolkit.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/TexturingMode.hpp>
+#include <com/sun/star/rendering/XPolyPolygon2D.hpp>
+#include <boost/bind.hpp>
+#include <boost/enable_shared_from_this.hpp>
+#include <boost/weak_ptr.hpp>
+#include <math.h>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+const static double gnScrollBarGap (10);
+
+namespace sdext { namespace presenter {
+
+//===== PresenterScrollBar::MousePressRepeater ================================
+
+class PresenterScrollBar::MousePressRepeater
+ : public ::boost::enable_shared_from_this<MousePressRepeater>
+{
+public:
+ MousePressRepeater (const ::rtl::Reference<PresenterScrollBar>& rpScrollBar);
+ void Dispose (void);
+ void Start (const PresenterScrollBar::Area& reArea);
+ void Stop (void);
+ void SetMouseArea (const PresenterScrollBar::Area& reArea);
+
+private:
+ void Callback (const TimeValue& rCurrentTime);
+ void Execute (void);
+
+ sal_Int32 mnMousePressRepeaterTaskId;
+ ::rtl::Reference<PresenterScrollBar> mpScrollBar;
+ PresenterScrollBar::Area meMouseArea;
+};
+
+
+
+
+//===== PresenterScrollBar ====================================================
+
+boost::weak_ptr<PresenterBitmapContainer> PresenterScrollBar::mpSharedBitmaps;
+
+PresenterScrollBar::PresenterScrollBar (
+ const Reference<XComponentContext>& rxComponentContext,
+ const Reference<awt::XWindow>& rxParentWindow,
+ const ::boost::shared_ptr<PresenterPaintManager>& rpPaintManager,
+ const ::boost::function<void(double)>& rThumbMotionListener)
+ : PresenterScrollBarInterfaceBase(m_aMutex),
+ mxComponentContext(rxComponentContext),
+ mxParentWindow(rxParentWindow),
+ mxWindow(),
+ mxCanvas(),
+ mxPresenterHelper(),
+ mpPaintManager(rpPaintManager),
+ mnThumbPosition(0),
+ mnTotalSize(0),
+ mnThumbSize(0),
+ mnLineHeight(10),
+ maDragAnchor(-1,-1),
+ maThumbMotionListener(rThumbMotionListener),
+ meButtonDownArea(None),
+ meMouseMoveArea(None),
+ mbIsNotificationActive(false),
+ mpBitmaps(),
+ mpPrevButtonDescriptor(),
+ mpNextButtonDescriptor(),
+ mpPagerStartDescriptor(),
+ mpPagerCenterDescriptor(),
+ mpPagerEndDescriptor(),
+ mpThumbStartDescriptor(),
+ mpThumbCenterDescriptor(),
+ mpThumbEndDescriptor(),
+ mpMousePressRepeater(new MousePressRepeater(this)),
+ mpBackgroundBitmap(),
+ mpCanvasHelper(new PresenterCanvasHelper())
+{
+ try
+ {
+ Reference<lang::XMultiComponentFactory> xFactory (rxComponentContext->getServiceManager());
+ if ( ! xFactory.is())
+ throw RuntimeException();
+
+ mxPresenterHelper = Reference<drawing::XPresenterHelper>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.PresenterHelper")),
+ rxComponentContext),
+ UNO_QUERY_THROW);
+
+ if (mxPresenterHelper.is())
+ mxWindow = mxPresenterHelper->createWindow(rxParentWindow,
+ sal_False,
+ sal_False,
+ sal_False,
+ sal_False);
+
+ // Make the background transparent. The slide show paints its own background.
+ Reference<awt::XWindowPeer> xPeer (mxWindow, UNO_QUERY_THROW);
+ if (xPeer.is())
+ {
+ xPeer->setBackground(0xff000000);
+ }
+
+ mxWindow->setVisible(sal_True);
+ mxWindow->addWindowListener(this);
+ mxWindow->addPaintListener(this);
+ mxWindow->addMouseListener(this);
+ mxWindow->addMouseMotionListener(this);
+ }
+ catch (RuntimeException&)
+ {
+ }
+}
+
+
+
+
+PresenterScrollBar::~PresenterScrollBar (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterScrollBar::disposing (void)
+{
+ mpMousePressRepeater->Dispose();
+
+ if (mxWindow.is())
+ {
+ mxWindow->removeWindowListener(this);
+ mxWindow->removePaintListener(this);
+ mxWindow->removeMouseListener(this);
+ mxWindow->removeMouseMotionListener(this);
+
+ Reference<lang::XComponent> xComponent (mxWindow, UNO_QUERY);
+ mxWindow = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ mpBitmaps.reset();
+}
+
+
+
+
+void PresenterScrollBar::SetVisible (const bool bIsVisible)
+{
+ if (mxWindow.is())
+ mxWindow->setVisible(bIsVisible);
+}
+
+
+
+
+void PresenterScrollBar::SetPosSize (const css::geometry::RealRectangle2D& rBox)
+{
+ if (mxWindow.is())
+ {
+ mxWindow->setPosSize(
+ sal_Int32(floor(rBox.X1)),
+ sal_Int32(ceil(rBox.Y1)),
+ sal_Int32(ceil(rBox.X2-rBox.X1)),
+ sal_Int32(floor(rBox.Y2-rBox.Y1)),
+ awt::PosSize::POSSIZE);
+ UpdateBorders();
+ }
+}
+
+
+
+
+void PresenterScrollBar::SetThumbPosition (
+ double nPosition,
+ const bool bAsynchronousUpdate)
+{
+ SetThumbPosition(nPosition, bAsynchronousUpdate, true, true);
+}
+
+
+
+
+void PresenterScrollBar::SetThumbPosition (
+ double nPosition,
+ const bool bAsynchronousUpdate,
+ const bool bValidate,
+ const bool bNotify)
+{
+ if (bValidate)
+ nPosition = ValidateThumbPosition(nPosition);
+
+ if (nPosition != mnThumbPosition && ! mbIsNotificationActive)
+ {
+ mnThumbPosition = nPosition;
+
+ UpdateBorders();
+ Repaint(GetRectangle(Total), bAsynchronousUpdate);
+ if (bNotify)
+ NotifyThumbPositionChange();
+ }
+}
+
+
+
+
+double PresenterScrollBar::GetThumbPosition (void) const
+{
+ return mnThumbPosition;
+}
+
+
+
+
+void PresenterScrollBar::SetTotalSize (const double nTotalSize)
+{
+ if (mnTotalSize != nTotalSize)
+ {
+ mnTotalSize = nTotalSize + 1;
+ UpdateBorders();
+ Repaint(GetRectangle(Total), false);
+ }
+}
+
+
+
+
+double PresenterScrollBar::GetTotalSize (void) const
+{
+ return mnTotalSize;
+}
+
+
+
+
+void PresenterScrollBar::SetThumbSize (const double nThumbSize)
+{
+ OSL_ASSERT(nThumbSize>=0);
+ if (mnThumbSize != nThumbSize)
+ {
+ mnThumbSize = nThumbSize;
+ UpdateBorders();
+ Repaint(GetRectangle(Total), false);
+ }
+}
+
+
+
+
+double PresenterScrollBar::GetThumbSize (void) const
+{
+ return mnThumbSize;
+}
+
+
+
+
+void PresenterScrollBar::SetLineHeight (const double nLineHeight)
+{
+ mnLineHeight = nLineHeight;
+}
+
+
+
+
+double PresenterScrollBar::GetLineHeight (void) const
+{
+ return mnLineHeight;
+}
+
+
+
+
+void PresenterScrollBar::SetCanvas (const Reference<css::rendering::XCanvas>& rxCanvas)
+{
+ if (mxCanvas != rxCanvas)
+ {
+ mxCanvas = rxCanvas;
+ if (mxCanvas.is())
+ {
+ if (mpBitmaps.get()==NULL)
+ {
+ if (mpSharedBitmaps.expired())
+ {
+ try
+ {
+ mpBitmaps.reset(new PresenterBitmapContainer(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterScreenSettings/ScrollBar/Bitmaps")),
+ ::boost::shared_ptr<PresenterBitmapContainer>(),
+ mxComponentContext,
+ mxCanvas,
+ PresenterComponent::GetBasePath(mxComponentContext)));
+ mpSharedBitmaps = mpBitmaps;
+ }
+ catch(Exception&)
+ {
+ OSL_ASSERT(false);
+ }
+ }
+ else
+ mpBitmaps = ::boost::shared_ptr<PresenterBitmapContainer>(mpSharedBitmaps);
+ UpdateBitmaps();
+ UpdateBorders();
+ }
+
+ Repaint(GetRectangle(Total), false);
+ }
+ }
+}
+
+
+
+
+void PresenterScrollBar::SetBackground (const SharedBitmapDescriptor& rpBackgroundBitmap)
+{
+ mpBackgroundBitmap = rpBackgroundBitmap;
+}
+
+
+
+void PresenterScrollBar::CheckValues (void)
+{
+ mnThumbPosition = ValidateThumbPosition(mnThumbPosition);
+}
+
+
+
+
+double PresenterScrollBar::ValidateThumbPosition (double nPosition)
+{
+ if (nPosition + mnThumbSize > mnTotalSize)
+ nPosition = mnTotalSize - mnThumbSize;
+ if (nPosition < 0)
+ nPosition = 0;
+ return nPosition;
+}
+
+
+
+
+void PresenterScrollBar::Paint (
+ const awt::Rectangle& rUpdateBox,
+ const bool bNoClip)
+{
+ if ( ! mxCanvas.is() || ! mxWindow.is())
+ {
+ OSL_ASSERT(mxCanvas.is());
+ OSL_ASSERT(mxWindow.is());
+ return;
+ }
+
+ if ( ! bNoClip)
+ {
+ if (PresenterGeometryHelper::AreRectanglesDisjoint (rUpdateBox, mxWindow->getPosSize()))
+ return;
+ }
+
+ PaintBackground(rUpdateBox);
+ PaintComposite(rUpdateBox, PagerUp,
+ mpPagerStartDescriptor, mpPagerCenterDescriptor, SharedBitmapDescriptor());
+ PaintComposite(rUpdateBox, PagerDown,
+ SharedBitmapDescriptor(), mpPagerCenterDescriptor, mpPagerEndDescriptor);
+ PaintComposite(rUpdateBox, Thumb,
+ mpThumbStartDescriptor, mpThumbCenterDescriptor, mpThumbEndDescriptor);
+ PaintBitmap(rUpdateBox, PrevButton, mpPrevButtonDescriptor);
+ PaintBitmap(rUpdateBox, NextButton, mpNextButtonDescriptor);
+
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+}
+
+
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterScrollBar::windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+
+void SAL_CALL PresenterScrollBar::windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterScrollBar::windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterScrollBar::windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterScrollBar::windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ if (mxWindow.is())
+ {
+ awt::Rectangle aRepaintBox (rEvent.UpdateRect);
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ aRepaintBox.X += aWindowBox.X;
+ aRepaintBox.Y += aWindowBox.Y;
+ Paint(aRepaintBox);
+
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+ }
+}
+
+
+
+
+//----- XMouseListener --------------------------------------------------------
+
+void SAL_CALL PresenterScrollBar::mousePressed (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ maDragAnchor.X = rEvent.X;
+ maDragAnchor.Y = rEvent.Y;
+ meButtonDownArea = GetArea(rEvent.X, rEvent.Y);
+
+ mpMousePressRepeater->Start(meButtonDownArea);
+}
+
+
+
+
+void SAL_CALL PresenterScrollBar::mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+
+ mpMousePressRepeater->Stop();
+
+ if (mxPresenterHelper.is())
+ mxPresenterHelper->releaseMouse(mxWindow);
+}
+
+
+
+
+void SAL_CALL PresenterScrollBar::mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterScrollBar::mouseExited (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ if (meMouseMoveArea != None)
+ {
+ const Area eOldMouseMoveArea (meMouseMoveArea);
+ meMouseMoveArea = None;
+ Repaint(GetRectangle(eOldMouseMoveArea), true);
+ }
+ meButtonDownArea = None;
+ meMouseMoveArea = None;
+
+ mpMousePressRepeater->Stop();
+}
+
+
+
+
+
+//----- XMouseMotionListener --------------------------------------------------
+
+void SAL_CALL PresenterScrollBar::mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ const Area eArea (GetArea(rEvent.X, rEvent.Y));
+ if (eArea != meMouseMoveArea)
+ {
+ const Area eOldMouseMoveArea (meMouseMoveArea);
+ meMouseMoveArea = eArea;
+ if (eOldMouseMoveArea != None)
+ Repaint(GetRectangle(eOldMouseMoveArea), meMouseMoveArea==None);
+ if (meMouseMoveArea != None)
+ Repaint(GetRectangle(meMouseMoveArea), true);
+ }
+ mpMousePressRepeater->SetMouseArea(eArea);
+}
+
+
+
+
+void SAL_CALL PresenterScrollBar::mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ if (meButtonDownArea != Thumb)
+ return;
+
+ mpMousePressRepeater->Stop();
+
+ if (mxPresenterHelper.is())
+ mxPresenterHelper->captureMouse(mxWindow);
+
+ const double nDragDistance (GetDragDistance(rEvent.X,rEvent.Y));
+ UpdateDragAnchor(nDragDistance);
+ if (nDragDistance != 0)
+ {
+ SetThumbPosition(mnThumbPosition + nDragDistance, false, true, true);
+ }
+}
+
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL PresenterScrollBar::disposing (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ if (rEvent.Source == mxWindow)
+ mxWindow = NULL;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+geometry::RealRectangle2D PresenterScrollBar::GetRectangle (const Area eArea) const
+{
+ OSL_ASSERT(eArea>=0 && eArea<__AreaCount__);
+
+ return maBox[eArea];
+}
+
+
+
+
+void PresenterScrollBar::Repaint (
+ const geometry::RealRectangle2D aBox,
+ const bool bAsynchronousUpdate)
+{
+ if (mpPaintManager.get() != NULL)
+ mpPaintManager->Invalidate(
+ mxWindow,
+ PresenterGeometryHelper::ConvertRectangle(aBox),
+ bAsynchronousUpdate);
+}
+
+
+
+
+void PresenterScrollBar::PaintBackground(
+ const css::awt::Rectangle& rUpdateBox)
+{
+ if (mpBackgroundBitmap.get() == NULL)
+ return;
+
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ mpCanvasHelper->Paint(
+ mpBackgroundBitmap,
+ mxCanvas,
+ rUpdateBox,
+ aWindowBox,
+ awt::Rectangle());
+}
+
+
+
+
+void PresenterScrollBar::PaintBitmap(
+ const css::awt::Rectangle& rUpdateBox,
+ const Area eArea,
+ const SharedBitmapDescriptor& rpBitmaps)
+{
+ const geometry::RealRectangle2D aLocalBox (GetRectangle(eArea));
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ geometry::RealRectangle2D aBox (aLocalBox);
+ aBox.X1 += aWindowBox.X;
+ aBox.Y1 += aWindowBox.Y;
+ aBox.X2 += aWindowBox.X;
+ aBox.Y2 += aWindowBox.Y;
+
+ Reference<rendering::XBitmap> xBitmap (GetBitmap(eArea,rpBitmaps));
+
+ if (xBitmap.is())
+ {
+ Reference<rendering::XPolyPolygon2D> xClipPolygon (
+ PresenterGeometryHelper::CreatePolygon(
+ PresenterGeometryHelper::Intersection(rUpdateBox,
+ PresenterGeometryHelper::ConvertRectangle(aBox)),
+ mxCanvas->getDevice()));
+
+ const rendering::ViewState aViewState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ xClipPolygon);
+
+ const geometry::IntegerSize2D aBitmapSize (xBitmap->getSize());
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(
+ 1,0,aBox.X1 + (aBox.X2-aBox.X1 - aBitmapSize.Width)/2,
+ 0,1,aBox.Y1 + (aBox.Y2-aBox.Y1 - aBitmapSize.Height)/2),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ mxCanvas->drawBitmap(
+ xBitmap,
+ aViewState,
+ aRenderState);
+ }
+}
+
+
+
+
+void PresenterScrollBar::NotifyThumbPositionChange (void)
+{
+ if ( ! mbIsNotificationActive)
+ {
+ mbIsNotificationActive = true;
+
+ try
+ {
+ maThumbMotionListener(mnThumbPosition);
+ }
+ catch (Exception&)
+ {
+ }
+
+ mbIsNotificationActive = false;
+ }
+}
+
+
+
+
+PresenterScrollBar::Area PresenterScrollBar::GetArea (const double nX, const double nY) const
+{
+ const geometry::RealPoint2D aPoint(nX, nY);
+
+ if (PresenterGeometryHelper::IsInside(GetRectangle(Pager), aPoint))
+ {
+ if (PresenterGeometryHelper::IsInside(GetRectangle(Thumb), aPoint))
+ return Thumb;
+ else if (PresenterGeometryHelper::IsInside(GetRectangle(PagerUp), aPoint))
+ return PagerUp;
+ else if (PresenterGeometryHelper::IsInside(GetRectangle(PagerDown), aPoint))
+ return PagerDown;
+ }
+ else if (PresenterGeometryHelper::IsInside(GetRectangle(PrevButton), aPoint))
+ return PrevButton;
+ else if (PresenterGeometryHelper::IsInside(GetRectangle(NextButton), aPoint))
+ return NextButton;
+
+ return None;
+}
+
+
+
+
+void PresenterScrollBar::UpdateWidthOrHeight (
+ sal_Int32& rSize,
+ const SharedBitmapDescriptor& rpDescriptor)
+{
+ if (rpDescriptor.get() != NULL)
+ {
+ Reference<rendering::XBitmap> xBitmap (rpDescriptor->GetNormalBitmap());
+ if (xBitmap.is())
+ {
+ const geometry::IntegerSize2D aBitmapSize (xBitmap->getSize());
+ const sal_Int32 nBitmapSize = (sal_Int32)GetMinor(aBitmapSize.Width, aBitmapSize.Height);
+ if (nBitmapSize > rSize)
+ rSize = nBitmapSize;
+ }
+ }
+}
+
+
+
+
+css::uno::Reference<css::rendering::XBitmap> PresenterScrollBar::GetBitmap (
+ const Area eArea,
+ const SharedBitmapDescriptor& rpBitmaps) const
+{
+ if (rpBitmaps.get() == NULL)
+ return NULL;
+ else
+ return rpBitmaps->GetBitmap(GetBitmapMode(eArea));
+}
+
+
+
+
+PresenterBitmapContainer::BitmapDescriptor::Mode PresenterScrollBar::GetBitmapMode (
+ const Area eArea) const
+{
+ if (IsDisabled(eArea))
+ return PresenterBitmapContainer::BitmapDescriptor::Disabled;
+ else if (eArea == meMouseMoveArea)
+ return PresenterBitmapContainer::BitmapDescriptor::MouseOver;
+ else
+ return PresenterBitmapContainer::BitmapDescriptor::Normal;
+}
+
+
+
+
+bool PresenterScrollBar::IsDisabled (const Area eArea) const
+{
+ OSL_ASSERT(eArea>=0 && eArea<__AreaCount__);
+
+ return ! maEnabledState[eArea];
+}
+
+
+
+
+//===== PresenterVerticalScrollBar ============================================
+
+PresenterVerticalScrollBar::PresenterVerticalScrollBar (
+ const Reference<XComponentContext>& rxComponentContext,
+ const Reference<awt::XWindow>& rxParentWindow,
+ const ::boost::shared_ptr<PresenterPaintManager>& rpPaintManager,
+ const ::boost::function<void(double)>& rThumbMotionListener)
+ : PresenterScrollBar(rxComponentContext, rxParentWindow, rpPaintManager, rThumbMotionListener),
+ mnScrollBarWidth(0)
+{
+}
+
+
+
+
+PresenterVerticalScrollBar::~PresenterVerticalScrollBar (void)
+{
+}
+
+
+
+
+double PresenterVerticalScrollBar::GetDragDistance (const sal_Int32 nX, const sal_Int32 nY) const
+{
+ (void)nX;
+ const double nDistance (nY - maDragAnchor.Y);
+ if (nDistance == 0)
+ return 0;
+ else
+ {
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ const double nBarWidth (aWindowBox.Width);
+ const double nPagerHeight (aWindowBox.Height - 2*nBarWidth);
+ const double nDragDistance (mnTotalSize / nPagerHeight * nDistance);
+ if (nDragDistance + mnThumbPosition < 0)
+ return -mnThumbPosition;
+ else if (mnThumbPosition + nDragDistance > mnTotalSize-mnThumbSize)
+ return mnTotalSize-mnThumbSize-mnThumbPosition;
+ else
+ return nDragDistance;
+ }
+}
+
+
+
+
+void PresenterVerticalScrollBar::UpdateDragAnchor (const double nDragDistance)
+{
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ const double nBarWidth (aWindowBox.Width);
+ const double nPagerHeight (aWindowBox.Height - 2*nBarWidth);
+ maDragAnchor.Y += nDragDistance * nPagerHeight / mnTotalSize;
+}
+
+
+
+
+sal_Int32 PresenterVerticalScrollBar::GetSize (void) const
+{
+ return mnScrollBarWidth;
+}
+
+
+
+
+geometry::RealPoint2D PresenterVerticalScrollBar::GetPoint (
+ const double nMajor, const double nMinor) const
+{
+ return geometry::RealPoint2D(nMinor, nMajor);
+}
+
+
+
+
+double PresenterVerticalScrollBar::GetMajor (const double nX, const double nY) const
+{
+ (void)nX;
+ return nY;
+}
+
+
+
+
+double PresenterVerticalScrollBar::GetMinor (const double nX, const double nY) const
+{
+ (void)nY;
+ return nX;
+}
+
+
+
+
+void PresenterVerticalScrollBar::UpdateBorders (void)
+{
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ double nBottom = aWindowBox.Height;
+
+ if (mpNextButtonDescriptor.get() != NULL)
+ {
+ Reference<rendering::XBitmap> xBitmap (mpNextButtonDescriptor->GetNormalBitmap());
+ if (xBitmap.is())
+ {
+ geometry::IntegerSize2D aSize (xBitmap->getSize());
+ maBox[NextButton] = geometry::RealRectangle2D(
+ 0, nBottom - aSize.Height, aWindowBox.Width, nBottom);
+ nBottom -= aSize.Height + gnScrollBarGap;
+ }
+ }
+ if (mpPrevButtonDescriptor.get() != NULL)
+ {
+ Reference<rendering::XBitmap> xBitmap (mpPrevButtonDescriptor->GetNormalBitmap());
+ if (xBitmap.is())
+ {
+ geometry::IntegerSize2D aSize (xBitmap->getSize());
+ maBox[PrevButton] = geometry::RealRectangle2D(
+ 0, nBottom - aSize.Height, aWindowBox.Width, nBottom);
+ nBottom -= aSize.Height + gnScrollBarGap;
+ }
+ }
+ const double nPagerHeight (nBottom);
+ maBox[Pager] = geometry::RealRectangle2D(
+ 0,0, aWindowBox.Width, nBottom);
+ if (mnTotalSize < 1)
+ {
+ maBox[Thumb] = maBox[Pager];
+
+ // Set up the enabled/disabled states.
+ maEnabledState[PrevButton] = false;
+ maEnabledState[PagerUp] = false;
+ maEnabledState[NextButton] = false;
+ maEnabledState[PagerDown] = false;
+ maEnabledState[Thumb] = false;
+ }
+ else
+ {
+ const double nThumbSize = ::std::min(mnThumbSize,mnTotalSize);
+ const double nThumbPosition = ::std::min(::std::max(0.0,mnThumbPosition), mnTotalSize - nThumbSize);
+ maBox[Thumb] = geometry::RealRectangle2D(
+ 0, nThumbPosition / mnTotalSize * nPagerHeight,
+ aWindowBox.Width,
+ (nThumbPosition+nThumbSize) / mnTotalSize * nPagerHeight);
+
+ // Set up the enabled/disabled states.
+ maEnabledState[PrevButton] = nThumbPosition>0;
+ maEnabledState[PagerUp] = nThumbPosition>0;
+ maEnabledState[NextButton] = nThumbPosition+nThumbSize < mnTotalSize;
+ maEnabledState[PagerDown] = nThumbPosition+nThumbSize < mnTotalSize;
+ maEnabledState[Thumb] = nThumbSize < mnTotalSize;
+ }
+ maBox[PagerUp] = geometry::RealRectangle2D(
+ maBox[Pager].X1, maBox[Pager].Y1, maBox[Pager].X2, maBox[Thumb].Y1-1);
+ maBox[PagerDown] = geometry::RealRectangle2D(
+ maBox[Pager].X1, maBox[Thumb].Y2+1, maBox[Pager].X2, maBox[Pager].Y2);
+ maBox[Total] = PresenterGeometryHelper::Union(
+ PresenterGeometryHelper::Union(maBox[PrevButton], maBox[NextButton]),
+ maBox[Pager]);
+}
+
+
+
+
+void PresenterVerticalScrollBar::UpdateBitmaps (void)
+{
+ if (mpBitmaps.get() != NULL)
+ {
+ mpPrevButtonDescriptor = mpBitmaps->GetBitmap(A2S("Up"));
+ mpNextButtonDescriptor = mpBitmaps->GetBitmap(A2S("Down"));
+ mpPagerStartDescriptor = mpBitmaps->GetBitmap(A2S("PagerTop"));
+ mpPagerCenterDescriptor = mpBitmaps->GetBitmap(A2S("PagerVertical"));
+ mpPagerEndDescriptor = mpBitmaps->GetBitmap(A2S("PagerBottom"));
+ mpThumbStartDescriptor = mpBitmaps->GetBitmap(A2S("ThumbTop"));
+ mpThumbCenterDescriptor = mpBitmaps->GetBitmap(A2S("ThumbVertical"));
+ mpThumbEndDescriptor = mpBitmaps->GetBitmap(A2S("ThumbBottom"));
+
+ mnScrollBarWidth = 0;
+ UpdateWidthOrHeight(mnScrollBarWidth, mpPrevButtonDescriptor);
+ UpdateWidthOrHeight(mnScrollBarWidth, mpNextButtonDescriptor);
+ UpdateWidthOrHeight(mnScrollBarWidth, mpPagerStartDescriptor);
+ UpdateWidthOrHeight(mnScrollBarWidth, mpPagerCenterDescriptor);
+ UpdateWidthOrHeight(mnScrollBarWidth, mpPagerEndDescriptor);
+ UpdateWidthOrHeight(mnScrollBarWidth, mpThumbStartDescriptor);
+ UpdateWidthOrHeight(mnScrollBarWidth, mpThumbCenterDescriptor);
+ UpdateWidthOrHeight(mnScrollBarWidth, mpThumbEndDescriptor);
+ if (mnScrollBarWidth == 0)
+ mnScrollBarWidth = 20;
+ }
+}
+
+
+
+
+void PresenterVerticalScrollBar::PaintComposite(
+ const css::awt::Rectangle& rUpdateBox,
+ const Area eArea,
+ const SharedBitmapDescriptor& rpStartBitmaps,
+ const SharedBitmapDescriptor& rpCenterBitmaps,
+ const SharedBitmapDescriptor& rpEndBitmaps)
+{
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ geometry::RealRectangle2D aBox (GetRectangle(eArea));
+ aBox.X1 += aWindowBox.X;
+ aBox.Y1 += aWindowBox.Y;
+ aBox.X2 += aWindowBox.X;
+ aBox.Y2 += aWindowBox.Y;
+
+ // Get bitmaps and sizes.
+
+ PresenterUIPainter::PaintVerticalBitmapComposite(
+ mxCanvas,
+ rUpdateBox,
+ (eArea == Thumb
+ ? PresenterGeometryHelper::ConvertRectangleWithConstantSize(aBox)
+ : PresenterGeometryHelper::ConvertRectangle(aBox)),
+ GetBitmap(eArea, rpStartBitmaps),
+ GetBitmap(eArea, rpCenterBitmaps),
+ GetBitmap(eArea, rpEndBitmaps));
+}
+
+
+
+
+//===== PresenterHorizontalScrollBar ============================================
+
+PresenterHorizontalScrollBar::PresenterHorizontalScrollBar (
+ const Reference<XComponentContext>& rxComponentContext,
+ const Reference<awt::XWindow>& rxParentWindow,
+ const ::boost::shared_ptr<PresenterPaintManager>& rpPaintManager,
+ const ::boost::function<void(double)>& rThumbMotionListener)
+ : PresenterScrollBar(rxComponentContext, rxParentWindow, rpPaintManager, rThumbMotionListener),
+ mnScrollBarHeight(0)
+{
+}
+
+
+
+
+PresenterHorizontalScrollBar::~PresenterHorizontalScrollBar (void)
+{
+}
+
+
+
+
+double PresenterHorizontalScrollBar::GetDragDistance (const sal_Int32 nX, const sal_Int32 nY) const
+{
+ (void)nY;
+ const double nDistance (nX - maDragAnchor.X);
+ if (nDistance == 0)
+ return 0;
+ else
+ {
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ const double nBarHeight (aWindowBox.Height);
+ const double nPagerWidth (aWindowBox.Width - 2*nBarHeight);
+ const double nDragDistance (mnTotalSize / nPagerWidth * nDistance);
+ if (nDragDistance + mnThumbPosition < 0)
+ return -mnThumbPosition;
+ else if (mnThumbPosition + nDragDistance > mnTotalSize-mnThumbSize)
+ return mnTotalSize-mnThumbSize-mnThumbPosition;
+ else
+ return nDragDistance;
+ }
+}
+
+
+
+
+void PresenterHorizontalScrollBar::UpdateDragAnchor (const double nDragDistance)
+{
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ const double nBarHeight (aWindowBox.Height);
+ const double nPagerWidth (aWindowBox.Width - 2*nBarHeight);
+ maDragAnchor.X += nDragDistance * nPagerWidth / mnTotalSize;
+}
+
+
+
+
+sal_Int32 PresenterHorizontalScrollBar::GetSize (void) const
+{
+ return mnScrollBarHeight;
+}
+
+
+
+
+
+geometry::RealPoint2D PresenterHorizontalScrollBar::GetPoint (
+ const double nMajor, const double nMinor) const
+{
+ return geometry::RealPoint2D(nMajor, nMinor);
+}
+
+
+
+
+double PresenterHorizontalScrollBar::GetMajor (const double nX, const double nY) const
+{
+ (void)nY;
+ return nX;
+}
+
+
+
+
+double PresenterHorizontalScrollBar::GetMinor (const double nX, const double nY) const
+{
+ (void)nX;
+ return nY;
+}
+
+
+
+
+void PresenterHorizontalScrollBar::UpdateBorders (void)
+{
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ double nRight = aWindowBox.Width;
+ const double nGap (2);
+
+ if (mpNextButtonDescriptor.get() != NULL)
+ {
+ Reference<rendering::XBitmap> xBitmap (mpNextButtonDescriptor->GetNormalBitmap());
+ if (xBitmap.is())
+ {
+ geometry::IntegerSize2D aSize (xBitmap->getSize());
+ maBox[NextButton] = geometry::RealRectangle2D(
+ nRight - aSize.Width,0, nRight, aWindowBox.Height);
+ nRight -= aSize.Width + nGap;
+ }
+ }
+ if (mpPrevButtonDescriptor.get() != NULL)
+ {
+ Reference<rendering::XBitmap> xBitmap (mpPrevButtonDescriptor->GetNormalBitmap());
+ if (xBitmap.is())
+ {
+ geometry::IntegerSize2D aSize (xBitmap->getSize());
+ maBox[PrevButton] = geometry::RealRectangle2D(
+ nRight - aSize.Width,0, nRight, aWindowBox.Height);
+ nRight -= aSize.Width + nGap;
+ }
+ }
+
+ const double nPagerWidth (nRight);
+ maBox[Pager] = geometry::RealRectangle2D(
+ 0,0, nRight, aWindowBox.Height);
+ if (mnTotalSize == 0)
+ {
+ maBox[Thumb] = maBox[Pager];
+
+ // Set up the enabled/disabled states.
+ maEnabledState[PrevButton] = false;
+ maEnabledState[PagerUp] = false;
+ maEnabledState[NextButton] = false;
+ maEnabledState[PagerDown] = false;
+ maEnabledState[Thumb] = false;
+ }
+ else
+ {
+ const double nThumbSize = ::std::min(mnThumbSize,mnTotalSize);
+ const double nThumbPosition = ::std::min(::std::max(0.0,mnThumbPosition), mnTotalSize - nThumbSize);
+ maBox[Thumb] = geometry::RealRectangle2D(
+ (nThumbPosition) / mnTotalSize * nPagerWidth, 0,
+ (nThumbPosition+nThumbSize) / mnTotalSize * nPagerWidth, aWindowBox.Height);
+
+ // Set up the enabled/disabled states.
+ maEnabledState[PrevButton] = nThumbPosition>0;
+ maEnabledState[PagerUp] = nThumbPosition>0;
+ maEnabledState[NextButton] = nThumbPosition+nThumbSize < mnTotalSize;
+ maEnabledState[PagerDown] = nThumbPosition+nThumbSize < mnTotalSize;
+ maEnabledState[Thumb] = nThumbSize < mnTotalSize;
+ }
+ maBox[PagerUp] = geometry::RealRectangle2D(
+ maBox[Pager].X1, maBox[Pager].Y1, maBox[Thumb].X1-1, maBox[Pager].Y2);
+ maBox[PagerDown] = geometry::RealRectangle2D(
+ maBox[Thumb].X2+1, maBox[Pager].Y1, maBox[Pager].X2, maBox[Pager].Y2);
+ maBox[Total] = PresenterGeometryHelper::Union(
+ PresenterGeometryHelper::Union(maBox[PrevButton], maBox[NextButton]),
+ maBox[Pager]);
+}
+
+
+
+
+void PresenterHorizontalScrollBar::UpdateBitmaps (void)
+{
+ if (mpBitmaps.get() != NULL)
+ {
+ mpPrevButtonDescriptor = mpBitmaps->GetBitmap(A2S("Left"));
+ mpNextButtonDescriptor = mpBitmaps->GetBitmap(A2S("Right"));
+ mpPagerStartDescriptor = mpBitmaps->GetBitmap(A2S("PagerLeft"));
+ mpPagerCenterDescriptor = mpBitmaps->GetBitmap(A2S("PagerHorizontal"));
+ mpPagerEndDescriptor = mpBitmaps->GetBitmap(A2S("PagerRight"));
+ mpThumbStartDescriptor = mpBitmaps->GetBitmap(A2S("ThumbLeft"));
+ mpThumbCenterDescriptor = mpBitmaps->GetBitmap(A2S("ThumbHorizontal"));
+ mpThumbEndDescriptor = mpBitmaps->GetBitmap(A2S("ThumbRight"));
+
+ mnScrollBarHeight = 0;
+ UpdateWidthOrHeight(mnScrollBarHeight, mpPrevButtonDescriptor);
+ UpdateWidthOrHeight(mnScrollBarHeight, mpNextButtonDescriptor);
+ UpdateWidthOrHeight(mnScrollBarHeight, mpPagerStartDescriptor);
+ UpdateWidthOrHeight(mnScrollBarHeight, mpPagerCenterDescriptor);
+ UpdateWidthOrHeight(mnScrollBarHeight, mpPagerEndDescriptor);
+ UpdateWidthOrHeight(mnScrollBarHeight, mpThumbStartDescriptor);
+ UpdateWidthOrHeight(mnScrollBarHeight, mpThumbCenterDescriptor);
+ UpdateWidthOrHeight(mnScrollBarHeight, mpThumbEndDescriptor);
+ if (mnScrollBarHeight == 0)
+ mnScrollBarHeight = 20;
+ }
+}
+
+
+
+void PresenterHorizontalScrollBar::PaintComposite(
+ const css::awt::Rectangle& rUpdateBox,
+ const Area eArea,
+ const SharedBitmapDescriptor& rpStartBitmaps,
+ const SharedBitmapDescriptor& rpCenterBitmaps,
+ const SharedBitmapDescriptor& rpEndBitmaps)
+{
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ geometry::RealRectangle2D aBox (GetRectangle(eArea));
+ aBox.X1 += aWindowBox.X;
+ aBox.Y1 += aWindowBox.Y;
+ aBox.X2 += aWindowBox.X;
+ aBox.Y2 += aWindowBox.Y;
+
+ PresenterUIPainter::PaintHorizontalBitmapComposite(
+ mxCanvas,
+ rUpdateBox,
+ PresenterGeometryHelper::ConvertRectangle(aBox),
+ GetBitmap(eArea, rpStartBitmaps),
+ GetBitmap(eArea, rpCenterBitmaps),
+ GetBitmap(eArea, rpEndBitmaps));
+}
+
+
+
+
+//===== PresenterScrollBar::MousePressRepeater ================================
+
+PresenterScrollBar::MousePressRepeater::MousePressRepeater (
+ const ::rtl::Reference<PresenterScrollBar>& rpScrollBar)
+ : mnMousePressRepeaterTaskId(PresenterTimer::NotAValidTaskId),
+ mpScrollBar(rpScrollBar),
+ meMouseArea(PresenterScrollBar::None)
+{
+}
+
+
+
+
+void PresenterScrollBar::MousePressRepeater::Dispose (void)
+{
+ Stop();
+ mpScrollBar = NULL;
+}
+
+
+
+
+void PresenterScrollBar::MousePressRepeater::Start (const PresenterScrollBar::Area& reArea)
+{
+ meMouseArea = reArea;
+
+ if (mnMousePressRepeaterTaskId == PresenterTimer::NotAValidTaskId)
+ {
+ // Execute key press operation at least this one time.
+ Execute();
+
+ // Schedule repeated executions.
+ mnMousePressRepeaterTaskId = PresenterTimer::ScheduleRepeatedTask (
+ ::boost::bind(&PresenterScrollBar::MousePressRepeater::Callback, shared_from_this(), _1),
+ 500000000,
+ 250000000);
+ }
+ else
+ {
+ // There is already an active repeating task.
+ }
+}
+
+
+
+
+void PresenterScrollBar::MousePressRepeater::Stop (void)
+{
+ if (mnMousePressRepeaterTaskId != PresenterTimer::NotAValidTaskId)
+ {
+ const sal_Int32 nTaskId (mnMousePressRepeaterTaskId);
+ mnMousePressRepeaterTaskId = PresenterTimer::NotAValidTaskId;
+ PresenterTimer::CancelTask(nTaskId);
+ }
+}
+
+
+
+
+void PresenterScrollBar::MousePressRepeater::SetMouseArea(const PresenterScrollBar::Area& reArea)
+{
+ if (meMouseArea != reArea)
+ {
+ if (mnMousePressRepeaterTaskId != PresenterTimer::NotAValidTaskId)
+ {
+ Stop();
+ }
+ }
+}
+
+
+
+
+void PresenterScrollBar::MousePressRepeater::Callback (const TimeValue& rCurrentTime)
+{
+ (void)rCurrentTime;
+
+ if (mpScrollBar.get() == NULL)
+ {
+ Stop();
+ return;
+ }
+
+ Execute();
+}
+
+
+
+
+void PresenterScrollBar::MousePressRepeater::Execute (void)
+{
+ const double nThumbPosition (mpScrollBar->GetThumbPosition());
+ switch (meMouseArea)
+ {
+ case PrevButton:
+ mpScrollBar->SetThumbPosition(nThumbPosition - mpScrollBar->GetLineHeight(), true);
+ break;
+
+ case NextButton:
+ mpScrollBar->SetThumbPosition(nThumbPosition + mpScrollBar->GetLineHeight(), true);
+ break;
+
+ case PagerUp:
+ mpScrollBar->SetThumbPosition(nThumbPosition - mpScrollBar->GetThumbSize()*0.8, true);
+ break;
+
+ case PagerDown:
+ mpScrollBar->SetThumbPosition(nThumbPosition + mpScrollBar->GetThumbSize()*0.8, true);
+ break;
+
+ default:
+ break;
+ }
+}
+
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterScrollBar.hxx b/sdext/source/presenter/PresenterScrollBar.hxx
new file mode 100644
index 000000000000..bd2462387078
--- /dev/null
+++ b/sdext/source/presenter/PresenterScrollBar.hxx
@@ -0,0 +1,340 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_SCROLL_BAR_HXX
+#define SDEXT_PRESENTER_PRESENTER_SCROLL_BAR_HXX
+
+#include "PresenterBitmapContainer.hxx"
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase4.hxx>
+#include <boost/function.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterCanvasHelper;
+class PresenterPaintManager;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper4 <
+ css::awt::XWindowListener,
+ css::awt::XPaintListener,
+ css::awt::XMouseListener,
+ css::awt::XMouseMotionListener
+ > PresenterScrollBarInterfaceBase;
+}
+
+/** Base class of horizontal and vertical scroll bars.
+*/
+class PresenterScrollBar
+ : private ::boost::noncopyable,
+ private ::cppu::BaseMutex,
+ public PresenterScrollBarInterfaceBase
+{
+public:
+ typedef ::boost::function<void(double)> ThumbMotionListener;
+ virtual ~PresenterScrollBar (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ void SetVisible (const bool bIsVisible);
+
+ /** Set the bounding box of the scroll bar.
+ */
+ void SetPosSize (const css::geometry::RealRectangle2D& rBox);
+
+ /** Set the position of the movable thumb.
+ @param nPosition
+ A value between 0 and the last value given to SetTotalSize()
+ minus the last value given to SetThumbSize().
+ */
+ void SetThumbPosition (
+ double nPosition,
+ const bool bAsynchronousRepaint);
+
+ double GetThumbPosition (void) const;
+
+ /** Set the upper border of the slider range.
+ */
+ void SetTotalSize (const double nTotalSize);
+
+ double GetTotalSize (void) const;
+
+ /** Set the size of the movable thumb.
+ @param nThumbSize
+ A value not larger than the last value given to SetTotalSize().
+ */
+ void SetThumbSize (const double nThumbSize);
+ double GetThumbSize (void) const;
+
+ void SetLineHeight (const double nLineHeight);
+ double GetLineHeight (void) const;
+
+ /** Set the canvas that is used for painting the scroll bar.
+ */
+ void SetCanvas (const css::uno::Reference<css::rendering::XCanvas>& rxCanvas);
+
+ void SetBackground (const SharedBitmapDescriptor& rpBackgroundBitmap);
+
+ /** Call this after changing total size or thumb position or size to
+ move the thumb to a valid position.
+ */
+ void CheckValues (void);
+
+ /** On some occasions it is necessary to trigger the painting of a
+ scrollbar from the outside.
+ */
+ virtual void Paint (
+ const css::awt::Rectangle& rUpdateBox,
+ bool bNoClip = false);
+
+ virtual sal_Int32 GetSize (void) const = 0;
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseListener
+
+ virtual void SAL_CALL mousePressed (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseExited (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+
+ // XMouseMotionListener
+
+ virtual void SAL_CALL mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // lang::XEventListener
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ enum Area { Total, Pager, Thumb, PagerUp, PagerDown, PrevButton, NextButton, None,
+ __AreaCount__ = None };
+
+protected:
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ css::uno::Reference<css::awt::XWindow> mxParentWindow;
+ css::uno::Reference<css::awt::XWindow> mxWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
+ ::boost::shared_ptr<PresenterPaintManager> mpPaintManager;
+ double mnThumbPosition;
+ double mnTotalSize;
+ double mnThumbSize;
+ double mnLineHeight;
+ css::geometry::RealPoint2D maDragAnchor;
+ ::boost::function<void(double)> maThumbMotionListener;
+ Area meButtonDownArea;
+ Area meMouseMoveArea;
+ css::geometry::RealRectangle2D maBox[__AreaCount__];
+ bool mbIsNotificationActive;
+ static boost::weak_ptr<PresenterBitmapContainer> mpSharedBitmaps;
+ boost::shared_ptr<PresenterBitmapContainer> mpBitmaps;
+ SharedBitmapDescriptor mpPrevButtonDescriptor;
+ SharedBitmapDescriptor mpNextButtonDescriptor;
+ SharedBitmapDescriptor mpPagerStartDescriptor;
+ SharedBitmapDescriptor mpPagerCenterDescriptor;
+ SharedBitmapDescriptor mpPagerEndDescriptor;
+ SharedBitmapDescriptor mpThumbStartDescriptor;
+ SharedBitmapDescriptor mpThumbCenterDescriptor;
+ SharedBitmapDescriptor mpThumbEndDescriptor;
+ bool maEnabledState[__AreaCount__];
+
+ virtual css::geometry::RealRectangle2D GetRectangle (const Area eArea) const;
+ virtual double GetDragDistance (const sal_Int32 nX, const sal_Int32 nY) const = 0;
+ virtual void UpdateDragAnchor (const double nDragDistance) = 0;
+ virtual css::geometry::RealPoint2D GetPoint (const double nMajor, const double nMinor) const = 0;
+ virtual double GetMajor (const double nX, const double nY) const = 0;
+ virtual double GetMinor (const double nX, const double nY) const = 0;
+ virtual void UpdateBorders (void) = 0;
+ virtual void UpdateBitmaps (void) = 0;
+ virtual void PaintComposite(
+ const css::awt::Rectangle& rRepaintBox,
+ const Area eArea,
+ const SharedBitmapDescriptor& rpStartBitmaps,
+ const SharedBitmapDescriptor& rpCenterBitmaps,
+ const SharedBitmapDescriptor& rpEndBitmaps) = 0;
+
+ PresenterScrollBar (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const ::boost::shared_ptr<PresenterPaintManager>& rpPaintManager,
+ const ::boost::function<void(double)>& rThumbMotionListener);
+
+ void Repaint (
+ const css::geometry::RealRectangle2D aBox,
+ const bool bAsynchronous);
+ void PaintBackground (
+ const css::awt::Rectangle& rRepaintBox);
+ void PaintBitmap(
+ const css::awt::Rectangle& rRepaintBox,
+ const Area eArea,
+ const SharedBitmapDescriptor& rpBitmaps);
+ void NotifyThumbPositionChange (void);
+ void UpdateWidthOrHeight (sal_Int32& rSize,
+ const SharedBitmapDescriptor& rpDescriptor);
+ css::uno::Reference<css::rendering::XBitmap> GetBitmap (
+ const Area eArea,
+ const SharedBitmapDescriptor& rpBitmaps) const;
+ PresenterBitmapContainer::BitmapDescriptor::Mode GetBitmapMode (
+ const Area eArea) const;
+ bool IsDisabled (const Area eArea) const;
+ double ValidateThumbPosition (double nPosition);
+ void SetThumbPosition (
+ double nPosition,
+ const bool bAsynchronousRepaint,
+ const bool bValidate,
+ const bool bNotify);
+
+private:
+ class MousePressRepeater;
+ ::boost::shared_ptr<MousePressRepeater> mpMousePressRepeater;
+ SharedBitmapDescriptor mpBackgroundBitmap;
+ ::boost::scoped_ptr<PresenterCanvasHelper> mpCanvasHelper;
+
+ Area GetArea (const double nX, const double nY) const;
+};
+
+
+
+
+/** A vertical scroll bar.
+*/
+class PresenterVerticalScrollBar : public PresenterScrollBar
+{
+public:
+ PresenterVerticalScrollBar (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const ::boost::shared_ptr<PresenterPaintManager>& rpPaintManager,
+ const ::boost::function<void(double)>& rThumbMotionListener);
+ virtual ~PresenterVerticalScrollBar (void);
+ virtual sal_Int32 GetSize (void) const;
+
+protected:
+ virtual double GetDragDistance (const sal_Int32 nX, const sal_Int32 nY) const;
+ virtual void UpdateDragAnchor (const double nDragDistance);
+ virtual css::geometry::RealPoint2D GetPoint (const double nMajor, const double nMinor) const;
+ virtual double GetMinor (const double nX, const double nY) const;
+ virtual double GetMajor (const double nX, const double nY) const;
+ virtual void UpdateBorders (void);
+ virtual void UpdateBitmaps (void);
+ virtual void PaintComposite(
+ const css::awt::Rectangle& rRepaintBox,
+ const Area eArea,
+ const SharedBitmapDescriptor& rpStartBitmaps,
+ const SharedBitmapDescriptor& rpCenterBitmaps,
+ const SharedBitmapDescriptor& rpEndBitmaps);
+
+private:
+ sal_Int32 mnScrollBarWidth;
+};
+
+
+
+
+/** A horizontal scroll bar.
+*/
+class PresenterHorizontalScrollBar : public PresenterScrollBar
+{
+public:
+ PresenterHorizontalScrollBar (
+ const css::uno::Reference<css::uno::XComponentContext>& rxComponentContext,
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const ::boost::shared_ptr<PresenterPaintManager>& rpPaintManager,
+ const ::boost::function<void(double)>& rThumbMotionListener);
+ virtual ~PresenterHorizontalScrollBar (void);
+ virtual sal_Int32 GetSize (void) const;
+
+protected:
+ virtual double GetDragDistance (const sal_Int32 nX, const sal_Int32 nY) const;
+ virtual void UpdateDragAnchor (const double nDragDistance);
+ virtual css::geometry::RealPoint2D GetPoint (const double nMajor, const double nMinor) const;
+ virtual double GetMinor (const double nX, const double nY) const;
+ virtual double GetMajor (const double nX, const double nY) const;
+ virtual void UpdateBorders (void);
+ virtual void UpdateBitmaps (void);
+ virtual void PaintComposite(
+ const css::awt::Rectangle& rRepaintBox,
+ const Area eArea,
+ const SharedBitmapDescriptor& rpStartBitmaps,
+ const SharedBitmapDescriptor& rpCenterBitmaps,
+ const SharedBitmapDescriptor& rpEndBitmaps);
+
+private:
+ sal_Int32 mnScrollBarHeight;
+};
+
+
+
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterSlidePreview.cxx b/sdext/source/presenter/PresenterSlidePreview.cxx
new file mode 100644
index 000000000000..ce5c23a82829
--- /dev/null
+++ b/sdext/source/presenter/PresenterSlidePreview.cxx
@@ -0,0 +1,429 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterSlidePreview.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterPaintManager.hxx"
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+namespace
+{
+ // Use a super sample factor greater than 1 to achive a poor mans
+ // antialiasing effect for slide previews.
+ const sal_Int16 gnSuperSampleFactor = 2;
+}
+
+namespace sdext { namespace presenter {
+
+//===== PresenterSlidePreview =================================================
+
+PresenterSlidePreview::PresenterSlidePreview (
+ const Reference<XComponentContext>& rxContext,
+ const Reference<XResourceId>& rxViewId,
+ const Reference<XPane>& rxAnchorPane,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterSlidePreviewInterfaceBase(m_aMutex),
+ mpPresenterController(rpPresenterController),
+ mxPane(rxAnchorPane),
+ mxViewId(rxViewId),
+ mxPreviewRenderer(),
+ mxPreview(),
+ mxCurrentSlide(),
+ mnSlideAspectRatio(28.0 / 21.0),
+ mxWindow(),
+ mxCanvas()
+{
+ if ( ! rxContext.is()
+ || ! rxViewId.is()
+ || ! rxAnchorPane.is()
+ || ! rpPresenterController.is())
+ {
+ throw RuntimeException(
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterSlidePreview can not be constructed due to empty argument")),
+ static_cast<XWeak*>(this));
+ }
+
+ mxWindow = rxAnchorPane->getWindow();
+ mxCanvas = rxAnchorPane->getCanvas();
+
+ if (mxWindow.is())
+ {
+ mxWindow->addWindowListener(this);
+ mxWindow->addPaintListener(this);
+
+ Reference<awt::XWindowPeer> xPeer (mxWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->setBackground(util::Color(0xff000000));
+
+ mxWindow->setVisible(sal_True);
+ }
+
+ if (mpPresenterController.get() != NULL)
+ mnSlideAspectRatio = mpPresenterController->GetSlideAspectRatio();
+
+ Reference<lang::XMultiComponentFactory> xFactory (rxContext->getServiceManager(), UNO_QUERY);
+ if (xFactory.is())
+ mxPreviewRenderer = Reference<drawing::XSlideRenderer>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.SlideRenderer")),
+ rxContext),
+ UNO_QUERY);
+
+ Resize();
+}
+
+
+
+
+PresenterSlidePreview::~PresenterSlidePreview (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterSlidePreview::disposing (void)
+{
+ if (mxWindow.is())
+ {
+ mxWindow->removeWindowListener(this);
+ mxWindow->removePaintListener(this);
+ mxWindow = NULL;
+ mxCanvas = NULL;
+ }
+
+ Reference<lang::XComponent> xComponent (mxPreviewRenderer, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+}
+
+
+
+
+//----- XResourceId -----------------------------------------------------------
+
+Reference<XResourceId> SAL_CALL PresenterSlidePreview::getResourceId (void)
+ throw (RuntimeException)
+{
+ return mxViewId;
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterSlidePreview::isAnchorOnly (void)
+ throw (RuntimeException)
+{
+ return false;
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterSlidePreview::windowResized (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+ Resize();
+}
+
+
+
+
+
+void SAL_CALL PresenterSlidePreview::windowMoved (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterSlidePreview::windowShown (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+ Resize();
+}
+
+
+
+
+void SAL_CALL PresenterSlidePreview::windowHidden (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterSlidePreview::windowPaint (const awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+ if (mxWindow.is())
+ Paint(awt::Rectangle(
+ rEvent.UpdateRect.X,
+ rEvent.UpdateRect.Y,
+ rEvent.UpdateRect.Width,
+ rEvent.UpdateRect.Height));
+}
+
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL PresenterSlidePreview::disposing (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ if (rEvent.Source == mxWindow)
+ {
+ mxWindow = NULL;
+ mxCanvas = NULL;
+ mxPreview = NULL;
+ }
+}
+
+
+
+
+//----- XDrawView -------------------------------------------------------------
+
+void SAL_CALL PresenterSlidePreview::setCurrentPage (const Reference<drawing::XDrawPage>& rxSlide)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+ SetSlide(rxSlide);
+}
+
+
+
+
+Reference<drawing::XDrawPage> SAL_CALL PresenterSlidePreview::getCurrentPage (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ return NULL;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterSlidePreview::SetSlide (const Reference<drawing::XDrawPage>& rxPage)
+{
+ mxCurrentSlide = rxPage;
+ mxPreview = NULL;
+
+ Reference<beans::XPropertySet> xPropertySet (mxCurrentSlide, UNO_QUERY);
+ if (xPropertySet.is())
+ {
+ awt::Size aSlideSize;
+ try
+ {
+ xPropertySet->getPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Width"))) >>= aSlideSize.Width;
+ xPropertySet->getPropertyValue(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("Height"))) >>= aSlideSize.Height;
+ }
+ catch (beans::UnknownPropertyException&)
+ {
+ OSL_ASSERT(false);
+ }
+ }
+
+ // The preview is not transparent, therefore only this window, not its
+ // parent, has to be invalidated.
+ mpPresenterController->GetPaintManager()->Invalidate(mxWindow);
+}
+
+
+
+
+void PresenterSlidePreview::Paint (const awt::Rectangle& rBoundingBox)
+{
+ (void)rBoundingBox;
+ if ( ! mxWindow.is())
+ return;
+ if ( ! mxCanvas.is())
+ return;
+ if ( ! mxPreviewRenderer.is())
+ return;
+
+ // Make sure that a preview in the correct size exists.
+ awt::Rectangle aWindowBox (mxWindow->getPosSize());
+
+ if ( ! mxPreview.is() && mxCurrentSlide.is())
+ {
+ // Create a new preview bitmap.
+ mxPreview = mxPreviewRenderer->createPreviewForCanvas(
+ mxCurrentSlide,
+ awt::Size(aWindowBox.Width, aWindowBox.Height),
+ gnSuperSampleFactor,
+ mxCanvas);
+ }
+
+ // Determine the bounding box of the preview.
+ awt::Rectangle aPreviewBox;
+ if (mxPreview.is())
+ {
+ const geometry::IntegerSize2D aPreviewSize (mxPreview->getSize());
+ aPreviewBox = awt::Rectangle(
+ (aWindowBox.Width - aPreviewSize.Width)/2,
+ (aWindowBox.Height - aPreviewSize.Height)/2,
+ aPreviewSize.Width,
+ aPreviewSize.Height);
+ }
+ else
+ {
+ if (mnSlideAspectRatio > 0)
+ {
+ const awt::Size aPreviewSize (mxPreviewRenderer->calculatePreviewSize(
+ mnSlideAspectRatio,awt::Size(aWindowBox.Width, aWindowBox.Height)));
+ aPreviewBox = awt::Rectangle(
+ (aWindowBox.Width - aPreviewSize.Width)/2,
+ (aWindowBox.Height - aPreviewSize.Height)/2,
+ aPreviewSize.Width,
+ aPreviewSize.Height);
+ }
+ }
+
+ // Paint the background.
+ mpPresenterController->GetCanvasHelper()->Paint(
+ mpPresenterController->GetViewBackground(mxViewId->getResourceURL()),
+ mxCanvas,
+ rBoundingBox,
+ awt::Rectangle(0,0,aWindowBox.Width,aWindowBox.Height),
+ aPreviewBox);
+
+ // Paint the preview.
+ const rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+
+ Sequence<double> aBackgroundColor(4);
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1, 0, aPreviewBox.X, 0, 1, aPreviewBox.Y),
+ NULL,
+ aBackgroundColor,
+ rendering::CompositeOperation::SOURCE);
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, 0x00000000);
+ if (mxPreview.is())
+ {
+ mxCanvas->drawBitmap(mxPreview, aViewState, aRenderState);
+ }
+ else
+ {
+ if (mnSlideAspectRatio > 0)
+ {
+ Reference<rendering::XPolyPolygon2D> xPolygon (
+ PresenterGeometryHelper::CreatePolygon(aPreviewBox, mxCanvas->getDevice()));
+ if (xPolygon.is())
+ mxCanvas->fillPolyPolygon(xPolygon, aViewState, aRenderState);
+ }
+ }
+
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+}
+
+
+
+
+void PresenterSlidePreview::Resize (void)
+{
+ if (mxPreviewRenderer.is() && mxPreview.is())
+ {
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ const awt::Size aNewPreviewSize (mxPreviewRenderer->calculatePreviewSize(
+ mnSlideAspectRatio,
+ awt::Size(aWindowBox.Width, aWindowBox.Height)));
+ const geometry::IntegerSize2D aPreviewSize (mxPreview->getSize());
+ if (aNewPreviewSize.Width==aPreviewSize.Width
+ && aNewPreviewSize.Height==aPreviewSize.Height)
+ {
+ // The size of the window may have changed but the preview would
+ // be painted in the same size (but not necessarily at the same
+ // position.)
+ return;
+ }
+ }
+ SetSlide(mxCurrentSlide);
+}
+
+
+
+
+void PresenterSlidePreview::ThrowIfDisposed (void)
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (PresenterSlidePreviewInterfaceBase::rBHelper.bDisposed || PresenterSlidePreviewInterfaceBase::rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterSlidePreview object has already been disposed")),
+ static_cast<uno::XWeak*>(this));
+ }
+}
+
+
+} } // end of namespace ::sd::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterSlidePreview.hxx b/sdext/source/presenter/PresenterSlidePreview.hxx
new file mode 100644
index 000000000000..57b9f9794b95
--- /dev/null
+++ b/sdext/source/presenter/PresenterSlidePreview.hxx
@@ -0,0 +1,176 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_SLIDE_PREVIEW_HXX
+#define SDEXT_PRESENTER_SLIDE_PREVIEW_HXX
+
+#include "PresenterController.hxx"
+
+#include <boost/noncopyable.hpp>
+#include <com/sun/star/awt/XBitmap.hpp>
+#include <com/sun/star/awt/XDisplayBitmap.hpp>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/drawing/XDrawView.hpp>
+#include <com/sun/star/drawing/XSlideRenderer.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/lang/DisposedException.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase4.hxx>
+#include <rtl/ref.hxx>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper4 <
+ css::drawing::framework::XView,
+ css::drawing::XDrawView,
+ css::awt::XPaintListener,
+ css::awt::XWindowListener
+ > PresenterSlidePreviewInterfaceBase;
+}
+
+
+/** Static preview of a slide. Typically used for the preview of the next
+ slide.
+ This implementation shows a preview of the slide given to the
+ setCurrentSlide. For showing the next slide the PresenterViewFactory
+ uses a derived class that overloads the setCurrentSlide() method.
+*/
+class PresenterSlidePreview
+ : private ::boost::noncopyable,
+ private ::cppu::BaseMutex,
+ public PresenterSlidePreviewInterfaceBase
+{
+public:
+ PresenterSlidePreview (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::drawing::framework::XPane>& rxAnchorPane,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterSlidePreview (void);
+ virtual void SAL_CALL disposing (void);
+
+
+ // XResourceId
+
+ virtual css::uno::Reference<css::drawing::framework::XResourceId> SAL_CALL getResourceId (void)
+ throw (css::uno::RuntimeException);
+
+ virtual sal_Bool SAL_CALL isAnchorOnly (void)
+ throw (com::sun::star::uno::RuntimeException);
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // lang::XEventListener
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XDrawView
+
+ virtual void SAL_CALL setCurrentPage (
+ const css::uno::Reference<css::drawing::XDrawPage>& rxSlide)
+ throw (css::uno::RuntimeException);
+
+ virtual css::uno::Reference<css::drawing::XDrawPage> SAL_CALL getCurrentPage (void)
+ throw (css::uno::RuntimeException);
+
+protected:
+ ::rtl::Reference<PresenterController> mpPresenterController;
+
+private:
+ css::uno::Reference<css::drawing::framework::XPane> mxPane;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxViewId;
+ css::uno::Reference<css::drawing::XSlideRenderer> mxPreviewRenderer;
+
+ /** This Image holds the preview of the current slide. After resize
+ requests the image may be empty. This results eventually in a call
+ to ProvideSlide() in order to created a preview in the correct new
+ size.
+ */
+ css::uno::Reference<css::rendering::XBitmap> mxPreview;
+
+ /** The current slide for which a preview is displayed. This may or
+ may not be the same as the current slide of the PresenterView.
+ */
+ css::uno::Reference<css::drawing::XDrawPage> mxCurrentSlide;
+ double mnSlideAspectRatio;
+
+ css::uno::Reference<css::awt::XWindow> mxWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+
+ /** Set the given slide as the current slide of the called PresenterSlidePreview
+ object.
+ */
+ void SetSlide (const css::uno::Reference<css::drawing::XDrawPage>& rxPage);
+
+ /** Paint the preview of the current slide centered in the window of the
+ anchor pane.
+ */
+ void Paint (const css::awt::Rectangle& rBoundingBox);
+
+ /** React to a resize of the anchor pane.
+ */
+ void Resize (void);
+
+ /** This method throws a DisposedException when the object has already been
+ disposed.
+ */
+ void ThrowIfDisposed (void) throw (css::lang::DisposedException);
+};
+
+} } // end of namespace ::sd::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterSlideShowView.cxx b/sdext/source/presenter/PresenterSlideShowView.cxx
new file mode 100644
index 000000000000..312b07f5fda8
--- /dev/null
+++ b/sdext/source/presenter/PresenterSlideShowView.cxx
@@ -0,0 +1,1159 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterSlideShowView.hxx"
+
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterHelper.hxx"
+#include "PresenterPaneContainer.hxx"
+#include <com/sun/star/awt/InvalidateStyle.hpp>
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/WindowAttribute.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/XWindow2.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/CanvasFeature.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+#include <com/sun/star/rendering/TexturingMode.hpp>
+#include <osl/mutex.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace sdext { namespace presenter {
+
+//===== PresenterSlideShowView ================================================
+
+PresenterSlideShowView::PresenterSlideShowView (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterSlideShowViewInterfaceBase(m_aMutex),
+ mxComponentContext(rxContext),
+ mpPresenterController(rpPresenterController),
+ mxViewId(rxViewId),
+ mxController(rxController),
+ mxSlideShowController(PresenterHelper::GetSlideShowController(rxController)),
+ mxSlideShow(),
+ mxCanvas(),
+ mxViewCanvas(),
+ mxPointer(),
+ mxWindow(),
+ mxViewWindow(),
+ mxTopPane(),
+ mxPresenterHelper(),
+ mxBackgroundPolygon1(),
+ mxBackgroundPolygon2(),
+ mbIsViewAdded(false),
+ mnPageAspectRatio(28.0/21.0),
+ maBroadcaster(m_aMutex),
+ mpBackground(),
+ mbIsInModifyNotification(false),
+ mbIsForcedPaintPending(false),
+ mbIsPaintPending(true),
+ msClickToExitPresentationText(),
+ msClickToExitPresentationTitle(),
+ msTitleTemplate(),
+ mbIsEndSlideVisible(false),
+ mxCurrentSlide()
+{
+ if (mpPresenterController.get() != NULL)
+ {
+ mnPageAspectRatio = mpPresenterController->GetSlideAspectRatio();
+ mpBackground = mpPresenterController->GetViewBackground(mxViewId->getResourceURL());
+ }
+}
+
+
+
+void PresenterSlideShowView::LateInit (void)
+{
+ mxSlideShow = Reference<presentation::XSlideShow> (
+ mxSlideShowController->getSlideShow(), UNO_QUERY_THROW);
+ Reference<lang::XComponent> xSlideShowComponent (mxSlideShow, UNO_QUERY);
+ if (xSlideShowComponent.is())
+ xSlideShowComponent->addEventListener(static_cast<awt::XWindowListener*>(this));
+
+ Reference<lang::XMultiComponentFactory> xFactory (
+ mxComponentContext->getServiceManager(), UNO_QUERY_THROW);
+ mxPresenterHelper.set (xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.PresenterHelper")),
+ mxComponentContext),
+ UNO_QUERY_THROW);
+
+ // Use view id and controller to retrieve window and canvas from
+ // configuration controller.
+ Reference<XControllerManager> xCM (mxController, UNO_QUERY_THROW);
+ Reference<XConfigurationController> xCC (xCM->getConfigurationController());
+
+ if (xCC.is())
+ {
+ mxTopPane.set(xCC->getResource(mxViewId->getAnchor()->getAnchor()), UNO_QUERY);
+
+ Reference<XPane> xPane (xCC->getResource(mxViewId->getAnchor()), UNO_QUERY_THROW);
+
+ mxWindow = xPane->getWindow();
+ mxCanvas = xPane->getCanvas();
+
+ if (mxWindow.is())
+ {
+ mxWindow->addPaintListener(this);
+ mxWindow->addWindowListener(this);
+ }
+
+ // The window does not have to paint a background. We do
+ // that ourself.
+ Reference<awt::XWindowPeer> xPeer (mxWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->setBackground(util::Color(0xff000000));
+ }
+
+ // Create a window for the actual slide show view. It is places
+ // centered and with maximal size inside the pane.
+ mxViewWindow = CreateViewWindow(mxWindow);
+
+ mxViewCanvas = CreateViewCanvas(mxViewWindow);
+
+ if (mxViewWindow.is())
+ {
+ // Register listeners at window.
+ mxViewWindow->addPaintListener(this);
+ mxViewWindow->addMouseListener(this);
+ mxViewWindow->addMouseMotionListener(this);
+ }
+
+ if (mxViewWindow.is())
+ Resize();
+
+ if (mxWindow.is())
+ mxWindow->setVisible(sal_True);
+
+ // Add the new slide show view to the slide show.
+ if (mxSlideShow.is() && ! mbIsViewAdded)
+ {
+ Reference<presentation::XSlideShowView> xView (this);
+ mxSlideShow->addView(xView);
+ // Prevent embeded sounds being played twice at the same time by
+ // disabling sound for the new slide show view.
+ beans::PropertyValue aProperty;
+ aProperty.Name = A2S("IsSoundEnabled");
+ Sequence<Any> aValues (2);
+ aValues[0] <<= xView;
+ aValues[1] <<= sal_False;
+ aProperty.Value <<= aValues;
+ mxSlideShow->setProperty(aProperty);
+ mbIsViewAdded = true;
+ }
+
+ // Read text for one past last slide.
+ PresenterConfigurationAccess aConfiguration (
+ mxComponentContext,
+ PresenterConfigurationAccess::msPresenterScreenRootName,
+ PresenterConfigurationAccess::READ_ONLY);
+ aConfiguration.GetConfigurationNode(
+ A2S("Presenter/Views/CurrentSlidePreview/"
+ "Strings/ClickToExitPresentationText/String"))
+ >>= msClickToExitPresentationText;
+ aConfiguration.GetConfigurationNode(
+ A2S("Presenter/Views/CurrentSlidePreview/"
+ "Strings/ClickToExitPresentationTitle/String"))
+ >>= msClickToExitPresentationTitle;
+}
+
+
+
+
+PresenterSlideShowView::~PresenterSlideShowView (void)
+{
+}
+
+
+
+
+void PresenterSlideShowView::disposing (void)
+{
+ // Tell all listeners that we are disposed.
+ lang::EventObject aEvent;
+ aEvent.Source = static_cast<XWeak*>(this);
+
+ ::cppu::OInterfaceContainerHelper* pIterator
+ = maBroadcaster.getContainer(getCppuType((Reference<lang::XEventListener>*)NULL));
+ if (pIterator != NULL)
+ pIterator->disposeAndClear(aEvent);
+
+ // Do this for
+ // XPaintListener, XModifyListener,XMouseListener,XMouseMotionListener,XWindowListener?
+
+ if (mxWindow.is())
+ {
+ mxWindow->removePaintListener(this);
+ mxWindow->removeMouseListener(this);
+ mxWindow->removeMouseMotionListener(this);
+ mxWindow->removeWindowListener(this);
+ mxWindow = NULL;
+ }
+ mxSlideShowController = NULL;
+ mxSlideShow = NULL;
+ if (mxViewCanvas.is())
+ {
+ Reference<XComponent> xComponent (mxViewCanvas, UNO_QUERY);
+ mxViewCanvas = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ if (mxViewWindow.is())
+ {
+ Reference<XComponent> xComponent (mxViewWindow, UNO_QUERY);
+ mxViewWindow = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ if (mxPointer.is())
+ {
+ Reference<XComponent> xComponent (mxPointer, UNO_QUERY);
+ mxPointer = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ if (mxBackgroundPolygon1.is())
+ {
+ Reference<XComponent> xComponent (mxBackgroundPolygon1, UNO_QUERY);
+ mxBackgroundPolygon1 = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ if (mxBackgroundPolygon2.is())
+ {
+ Reference<XComponent> xComponent (mxBackgroundPolygon2, UNO_QUERY);
+ mxBackgroundPolygon2 = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ mxComponentContext = NULL;
+ mpPresenterController = NULL;
+ mxViewId = NULL;
+ mxController = NULL;
+ mxCanvas = NULL;
+ mpBackground.reset();
+ msClickToExitPresentationText = OUString();
+ msClickToExitPresentationTitle = OUString();
+ msTitleTemplate = OUString();
+ mxCurrentSlide = NULL;
+}
+
+
+
+
+//----- XDrawView -------------------------------------------------------------
+
+void SAL_CALL PresenterSlideShowView::setCurrentPage (
+ const css::uno::Reference<css::drawing::XDrawPage>& rxSlide)
+ throw (css::uno::RuntimeException)
+{
+ mxCurrentSlide = rxSlide;
+ if (mpPresenterController.get() != NULL
+ && mxSlideShowController.is()
+ && ! mpPresenterController->GetCurrentSlide().is()
+ && ! mxSlideShowController->isPaused())
+ {
+ mbIsEndSlideVisible = true;
+ Reference<awt::XWindowPeer> xPeer (mxViewWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->invalidate(awt::InvalidateStyle::NOTRANSPARENT);
+
+ // For the end slide we use a special title, without the (n of m)
+ // part. Save the title template for the case that the user goes
+ // backwards.
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPresenterController->GetPaneContainer()->FindViewURL(mxViewId->getResourceURL()));
+ if (pDescriptor.get() != NULL)
+ {
+ msTitleTemplate = pDescriptor->msTitleTemplate;
+ pDescriptor->msTitleTemplate = msClickToExitPresentationTitle;
+ mpPresenterController->UpdatePaneTitles();
+ }
+ }
+ else if (mbIsEndSlideVisible)
+ {
+ mbIsEndSlideVisible = false;
+
+ // Restore the title template.
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPresenterController->GetPaneContainer()->FindViewURL(mxViewId->getResourceURL()));
+ if (pDescriptor.get() != NULL)
+ {
+ pDescriptor->msTitleTemplate = msTitleTemplate;
+ pDescriptor->msTitle = OUString();
+ mpPresenterController->UpdatePaneTitles();
+ }
+ }
+}
+
+
+
+
+css::uno::Reference<css::drawing::XDrawPage> SAL_CALL PresenterSlideShowView::getCurrentPage (void)
+ throw (css::uno::RuntimeException)
+{
+ return mxCurrentSlide;
+}
+
+
+
+
+//----- CachablePresenterView -------------------------------------------------
+
+void PresenterSlideShowView::ReleaseView (void)
+{
+ if (mxSlideShow.is() && mbIsViewAdded)
+ {
+ mxSlideShow->removeView(this);
+ mbIsViewAdded = false;
+ }
+}
+
+
+
+
+//----- XSlideShowView --------------------------------------------------------
+
+Reference<rendering::XSpriteCanvas> SAL_CALL PresenterSlideShowView::getCanvas (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ return Reference<rendering::XSpriteCanvas>(mxViewCanvas, UNO_QUERY);
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::clear (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ mbIsForcedPaintPending = false;
+ mbIsPaintPending = false;
+
+ if (mxViewCanvas.is() && mxViewWindow.is())
+ {
+ // Create a polygon for the window outline.
+ awt::Rectangle aViewWindowBox (mxViewWindow->getPosSize());
+ Reference<rendering::XPolyPolygon2D> xPolygon (PresenterGeometryHelper::CreatePolygon(
+ awt::Rectangle(0,0, aViewWindowBox.Width,aViewWindowBox.Height),
+ mxViewCanvas->getDevice()));
+
+ rendering::ViewState aViewState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+ double aColor[3] = {0,0,0};
+ rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(aColor,4),
+ rendering::CompositeOperation::SOURCE);
+ mxViewCanvas->fillPolyPolygon(xPolygon, aViewState, aRenderState);
+ }
+}
+
+
+
+
+geometry::AffineMatrix2D SAL_CALL PresenterSlideShowView::getTransformation (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if (mxViewWindow.is())
+ {
+ // When the mbIsInModifyNotification is set then a slightly modifed
+ // version of the transformation is returned in order to get past
+ // optimizations the avoid updates when the transformation is
+ // unchanged (when the window size changes then due to the constant
+ // aspect ratio the size of the preview may remain the same while
+ // the position changes. The position, however, is repesented by
+ // the position of the view window. This transformation is given
+ // relative to the view window and therefore does not contain the
+ // position.)
+ const awt::Rectangle aWindowBox = mxViewWindow->getPosSize();
+ return geometry::AffineMatrix2D(
+ aWindowBox.Width-1, 0, (mbIsInModifyNotification ? 1 : 0),
+ 0, aWindowBox.Height-1, 0);
+ }
+ else
+ {
+ return geometry::AffineMatrix2D(1,0,0, 0,1,0);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::addTransformationChangedListener(
+ const Reference<util::XModifyListener>& rxListener)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ maBroadcaster.addListener(
+ getCppuType((Reference<util::XModifyListener>*)NULL),
+ rxListener);
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::removeTransformationChangedListener(
+ const Reference<util::XModifyListener>& rxListener)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ maBroadcaster.removeListener(
+ getCppuType((Reference<util::XModifyListener>*)NULL),
+ rxListener);
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::addPaintListener(
+ const Reference<awt::XPaintListener>& rxListener)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ maBroadcaster.addListener(
+ getCppuType((Reference<awt::XPaintListener>*)NULL),
+ rxListener);
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::removePaintListener(
+ const Reference<awt::XPaintListener>& rxListener)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ maBroadcaster.removeListener(
+ getCppuType((Reference<awt::XPaintListener>*)NULL),
+ rxListener);
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::addMouseListener(
+ const Reference<awt::XMouseListener>& rxListener)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ maBroadcaster.addListener(
+ getCppuType((Reference<awt::XMouseListener>*)NULL),
+ rxListener);
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::removeMouseListener(
+ const Reference<awt::XMouseListener>& rxListener)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ maBroadcaster.removeListener(
+ getCppuType((Reference<awt::XMouseListener>*)NULL),
+ rxListener);
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::addMouseMotionListener(
+ const Reference<awt::XMouseMotionListener>& rxListener)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ maBroadcaster.addListener(
+ getCppuType((Reference<awt::XMouseMotionListener>*)NULL),
+ rxListener);
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::removeMouseMotionListener(
+ const Reference<awt::XMouseMotionListener>& rxListener)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ maBroadcaster.removeListener(
+ getCppuType((Reference<awt::XMouseMotionListener>*)NULL),
+ rxListener);
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::setMouseCursor(::sal_Int16 nPointerShape)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ // Create a pointer when it does not yet exist.
+ if ( ! mxPointer.is())
+ {
+ Reference<lang::XMultiServiceFactory> xFactory (
+ mxComponentContext, UNO_QUERY);
+ if (xFactory.is())
+ mxPointer = Reference<awt::XPointer>(
+ xFactory->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.Pointer"))),
+ UNO_QUERY);
+ }
+
+ // Set the pointer to the given shape and the window(peer) to the
+ // pointer.
+ Reference<awt::XWindowPeer> xPeer (mxViewWindow, UNO_QUERY);
+ if (mxPointer.is() && xPeer.is())
+ {
+ mxPointer->setType(nPointerShape);
+ xPeer->setPointer(mxPointer);
+ }
+}
+
+
+
+awt::Rectangle SAL_CALL PresenterSlideShowView::getCanvasArea( ) throw (RuntimeException)
+{
+ if( mxViewWindow.is() && mxTopPane.is() )
+ return mxPresenterHelper->getWindowExtentsRelative( mxViewWindow, mxTopPane->getWindow() );
+
+ awt::Rectangle aRectangle;
+
+ aRectangle.X = aRectangle.Y = aRectangle.Width = aRectangle.Height = 0;
+
+ return aRectangle;
+}
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL PresenterSlideShowView::disposing (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ if (rEvent.Source == mxViewWindow)
+ mxViewWindow = NULL;
+ else if (rEvent.Source == mxSlideShow)
+ mxSlideShow = NULL;
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterSlideShowView::windowPaint (const awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ // Deactivated views must not be painted.
+ if ( ! mbIsPresenterViewActive)
+ return;
+
+ awt::Rectangle aViewWindowBox (mxViewWindow->getPosSize());
+ if (aViewWindowBox.Width <= 0 || aViewWindowBox.Height <= 0)
+ return;
+
+ if (rEvent.Source == mxWindow)
+ PaintOuterWindow(rEvent.UpdateRect);
+ else if (mbIsEndSlideVisible)
+ PaintEndSlide(rEvent.UpdateRect);
+ else
+ PaintInnerWindow(rEvent);
+}
+
+
+
+
+//----- XMouseListener --------------------------------------------------------
+
+void SAL_CALL PresenterSlideShowView::mousePressed (const awt::MouseEvent& rEvent)
+ throw (RuntimeException)
+{
+ awt::MouseEvent aEvent (rEvent);
+ aEvent.Source = static_cast<XWeak*>(this);
+ ::cppu::OInterfaceContainerHelper* pIterator
+ = maBroadcaster.getContainer(getCppuType((Reference<awt::XMouseListener>*)NULL));
+ if (pIterator != NULL)
+ {
+ pIterator->notifyEach(&awt::XMouseListener::mousePressed, aEvent);
+ }
+
+ // Only when the end slide is displayed we forward the mouse event to
+ // the PresenterController so that it switches to the next slide and
+ // ends the presentation.
+ if (mbIsEndSlideVisible)
+ if (mpPresenterController.get() != NULL)
+ mpPresenterController->HandleMouseClick(rEvent);
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::mouseReleased (const awt::MouseEvent& rEvent)
+ throw (RuntimeException)
+{
+ awt::MouseEvent aEvent (rEvent);
+ aEvent.Source = static_cast<XWeak*>(this);
+ ::cppu::OInterfaceContainerHelper* pIterator
+ = maBroadcaster.getContainer(getCppuType((Reference<awt::XMouseListener>*)NULL));
+ if (pIterator != NULL)
+ {
+ pIterator->notifyEach(&awt::XMouseListener::mouseReleased, aEvent);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::mouseEntered (const awt::MouseEvent& rEvent)
+ throw (RuntimeException)
+{
+ awt::MouseEvent aEvent (rEvent);
+ aEvent.Source = static_cast<XWeak*>(this);
+ ::cppu::OInterfaceContainerHelper* pIterator
+ = maBroadcaster.getContainer(getCppuType((Reference<awt::XMouseListener>*)NULL));
+ if (pIterator != NULL)
+ {
+ pIterator->notifyEach(&awt::XMouseListener::mouseEntered, aEvent);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::mouseExited (const awt::MouseEvent& rEvent)
+ throw (RuntimeException)
+{
+ awt::MouseEvent aEvent (rEvent);
+ aEvent.Source = static_cast<XWeak*>(this);
+ ::cppu::OInterfaceContainerHelper* pIterator
+ = maBroadcaster.getContainer(getCppuType((Reference<awt::XMouseListener>*)NULL));
+ if (pIterator != NULL)
+ {
+ pIterator->notifyEach(&awt::XMouseListener::mouseExited, aEvent);
+ }
+}
+
+
+
+
+//----- XMouseMotionListener --------------------------------------------------
+
+void SAL_CALL PresenterSlideShowView::mouseDragged (const awt::MouseEvent& rEvent)
+ throw (RuntimeException)
+{
+ awt::MouseEvent aEvent (rEvent);
+ aEvent.Source = static_cast<XWeak*>(this);
+ ::cppu::OInterfaceContainerHelper* pIterator
+ = maBroadcaster.getContainer(getCppuType((Reference<awt::XMouseMotionListener>*)NULL));
+ if (pIterator != NULL)
+ {
+ pIterator->notifyEach(&awt::XMouseMotionListener::mouseDragged, aEvent);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::mouseMoved (const awt::MouseEvent& rEvent)
+ throw (RuntimeException)
+{
+ awt::MouseEvent aEvent (rEvent);
+ aEvent.Source = static_cast<XWeak*>(this);
+ ::cppu::OInterfaceContainerHelper* pIterator
+ = maBroadcaster.getContainer(getCppuType((Reference<awt::XMouseMotionListener>*)NULL));
+ if (pIterator != NULL)
+ {
+ pIterator->notifyEach(&awt::XMouseMotionListener::mouseMoved, aEvent);
+ }
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterSlideShowView::windowResized (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+
+ Resize();
+}
+
+
+
+
+
+void SAL_CALL PresenterSlideShowView::windowMoved (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ if ( ! mbIsPaintPending)
+ mbIsForcedPaintPending = true;
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::windowShown (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ Resize();
+}
+
+
+
+
+void SAL_CALL PresenterSlideShowView::windowHidden (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XView -----------------------------------------------------------------
+
+Reference<XResourceId> SAL_CALL PresenterSlideShowView::getResourceId (void)
+ throw(RuntimeException)
+{
+ return mxViewId;
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterSlideShowView::isAnchorOnly (void)
+ throw (RuntimeException)
+{
+ return false;
+}
+
+
+
+
+//----- CachablePresenterView -------------------------------------------------
+
+void PresenterSlideShowView::ActivatePresenterView (void)
+{
+ if (mxSlideShow.is() && ! mbIsViewAdded)
+ {
+ mxSlideShow->addView(this);
+ mbIsViewAdded = true;
+ }
+}
+
+
+
+
+void PresenterSlideShowView::DeactivatePresenterView (void)
+{
+ if (mxSlideShow.is() && mbIsViewAdded)
+ {
+ mxSlideShow->removeView(this);
+ mbIsViewAdded = false;
+ }
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterSlideShowView::PaintOuterWindow (const awt::Rectangle& rRepaintBox)
+{
+ if ( ! mxCanvas.is())
+ return;
+
+ if (mpBackground.get() == NULL)
+ return;
+
+ const rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ PresenterGeometryHelper::CreatePolygon(rRepaintBox, mxCanvas->getDevice()));
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ Reference<rendering::XBitmap> xBackgroundBitmap (mpBackground->GetNormalBitmap());
+ if (xBackgroundBitmap.is())
+ {
+ Sequence<rendering::Texture> aTextures (1);
+ const geometry::IntegerSize2D aBitmapSize(xBackgroundBitmap->getSize());
+ aTextures[0] = rendering::Texture (
+ geometry::AffineMatrix2D(
+ aBitmapSize.Width,0,0,
+ 0,aBitmapSize.Height,0),
+ 1,
+ 0,
+ xBackgroundBitmap,
+ NULL,
+ NULL,
+ rendering::StrokeAttributes(),
+ rendering::TexturingMode::REPEAT,
+ rendering::TexturingMode::REPEAT);
+
+ if (mxBackgroundPolygon1.is())
+ mxCanvas->fillTexturedPolyPolygon(
+ mxBackgroundPolygon1,
+ aViewState,
+ aRenderState,
+ aTextures);
+ if (mxBackgroundPolygon2.is())
+ mxCanvas->fillTexturedPolyPolygon(
+ mxBackgroundPolygon2,
+ aViewState,
+ aRenderState,
+ aTextures);
+ }
+ else
+ {
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, mpBackground->maReplacementColor);
+
+ if (mxBackgroundPolygon1.is())
+ mxCanvas->fillPolyPolygon(mxBackgroundPolygon1, aViewState, aRenderState);
+ if (mxBackgroundPolygon2.is())
+ mxCanvas->fillPolyPolygon(mxBackgroundPolygon2, aViewState, aRenderState);
+ }
+}
+
+
+
+
+void PresenterSlideShowView::PaintEndSlide (const awt::Rectangle& rRepaintBox)
+{
+ if ( ! mxCanvas.is())
+ return;
+
+ const rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ PresenterGeometryHelper::CreatePolygon(rRepaintBox, mxCanvas->getDevice()));
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, util::Color(0x00000000));
+ mxCanvas->fillPolyPolygon(
+ PresenterGeometryHelper::CreatePolygon(mxViewWindow->getPosSize(), mxCanvas->getDevice()),
+ aViewState,
+ aRenderState);
+
+ do
+ {
+ if (mpPresenterController.get() == NULL)
+ break;
+ ::boost::shared_ptr<PresenterTheme> pTheme (mpPresenterController->GetTheme());
+ if (pTheme.get() == NULL)
+ break;
+
+ const OUString sViewStyle (pTheme->GetStyleName(mxViewId->getResourceURL()));
+ PresenterTheme::SharedFontDescriptor pFont (pTheme->GetFont(sViewStyle));
+ if (pFont.get() == NULL)
+ break;
+
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, util::Color(0x00ffffff));
+ aRenderState.AffineTransform.m02 = 20;
+ aRenderState.AffineTransform.m12 = 40;
+ const rendering::StringContext aContext (
+ msClickToExitPresentationText, 0, msClickToExitPresentationText.getLength());
+ pFont->PrepareFont(mxCanvas);
+ mxCanvas->drawText(
+ aContext,
+ pFont->mxFont,
+ aViewState,
+ aRenderState,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT);
+ }
+ while (false);
+
+ // Finally, in double buffered environments, request the changes to be
+ // made visible.
+ Reference<rendering::XSpriteCanvas> mxSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (mxSpriteCanvas.is())
+ mxSpriteCanvas->updateScreen(sal_True);
+}
+
+
+
+
+void PresenterSlideShowView::PaintInnerWindow (const awt::PaintEvent& rEvent)
+{
+ // Forward window paint to listeners.
+ awt::PaintEvent aEvent (rEvent);
+ aEvent.Source = static_cast<XWeak*>(this);
+ ::cppu::OInterfaceContainerHelper* pIterator
+ = maBroadcaster.getContainer(getCppuType((Reference<awt::XPaintListener>*)NULL));
+ if (pIterator != NULL)
+ {
+ pIterator->notifyEach(&awt::XPaintListener::windowPaint, aEvent);
+ }
+
+ if (mbIsForcedPaintPending)
+ ForceRepaint();
+
+ // Finally, in double buffered environments, request the changes to be
+ // made visible.
+ Reference<rendering::XSpriteCanvas> mxSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (mxSpriteCanvas.is())
+ mxSpriteCanvas->updateScreen(sal_True);
+}
+
+
+
+
+Reference<awt::XWindow> PresenterSlideShowView::CreateViewWindow (
+ const Reference<awt::XWindow>& rxParentWindow) const
+{
+ Reference<awt::XWindow> xViewWindow;
+ try
+ {
+ Reference<lang::XMultiComponentFactory> xFactory (mxComponentContext->getServiceManager());
+ if ( ! xFactory.is())
+ return xViewWindow;
+
+ Reference<awt::XToolkit> xToolkit (
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.Toolkit")),
+ mxComponentContext),
+ UNO_QUERY_THROW);
+ awt::WindowDescriptor aWindowDescriptor (
+ awt::WindowClass_CONTAINER,
+ OUString(),
+ Reference<awt::XWindowPeer>(rxParentWindow,UNO_QUERY_THROW),
+ -1, // parent index not available
+ awt::Rectangle(0,0,10,10),
+ awt::WindowAttribute::SIZEABLE
+ | awt::WindowAttribute::MOVEABLE
+ | awt::WindowAttribute::NODECORATION);
+ xViewWindow = Reference<awt::XWindow>(
+ xToolkit->createWindow(aWindowDescriptor),UNO_QUERY_THROW);
+
+ // Make the background transparent. The slide show paints its own background.
+ Reference<awt::XWindowPeer> xPeer (xViewWindow, UNO_QUERY_THROW);
+ if (xPeer.is())
+ {
+ xPeer->setBackground(0xff000000);
+ }
+
+ xViewWindow->setVisible(sal_True);
+ }
+ catch (RuntimeException&)
+ {
+ }
+ return xViewWindow;
+}
+
+
+
+
+Reference<rendering::XCanvas> PresenterSlideShowView::CreateViewCanvas (
+ const Reference<awt::XWindow>& rxViewWindow) const
+{
+ // Create a canvas for the view window.
+ return mxPresenterHelper->createSharedCanvas(
+ Reference<rendering::XSpriteCanvas>(mxTopPane->getCanvas(), UNO_QUERY),
+ mxTopPane->getWindow(),
+ mxTopPane->getCanvas(),
+ mxTopPane->getWindow(),
+ rxViewWindow);
+}
+
+
+
+
+void PresenterSlideShowView::Resize (void)
+{
+ if ( ! mxWindow.is() || ! mxViewWindow.is())
+ return;
+
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ awt::Rectangle aViewWindowBox;
+ if (aWindowBox.Height > 0)
+ {
+ const double nWindowAspectRatio (
+ double(aWindowBox.Width) / double(aWindowBox.Height));
+ if (nWindowAspectRatio > mnPageAspectRatio)
+ {
+ // Slides will be painted with the full parent window height.
+ aViewWindowBox.Width = sal_Int32(aWindowBox.Height * mnPageAspectRatio + 0.5);
+ aViewWindowBox.Height = aWindowBox.Height;
+ aViewWindowBox.X = (aWindowBox.Width - aViewWindowBox.Width) / 2;
+ aViewWindowBox.Y = 0;
+ }
+ else
+ {
+ // Slides will be painted with the full parent window width.
+ aViewWindowBox.Width = aWindowBox.Width;
+ aViewWindowBox.Height = sal_Int32(aWindowBox.Width / mnPageAspectRatio + 0.5);
+ aViewWindowBox.X = 0;
+ aViewWindowBox.Y = (aWindowBox.Height - aViewWindowBox.Height) / 2;
+ }
+ mxViewWindow->setPosSize(
+ aViewWindowBox.X,
+ aViewWindowBox.Y,
+ aViewWindowBox.Width,
+ aViewWindowBox.Height,
+ awt::PosSize::POSSIZE);
+ }
+
+ // Clear the background polygon so that on the next paint it is created
+ // for the new size.
+ CreateBackgroundPolygons();
+
+ // Notify listeners that the transformation that maps the view into the
+ // window has changed.
+ lang::EventObject aEvent (static_cast<XWeak*>(this));
+ ::cppu::OInterfaceContainerHelper* pIterator
+ = maBroadcaster.getContainer(getCppuType((Reference<util::XModifyListener>*)NULL));
+ if (pIterator != NULL)
+ {
+ pIterator->notifyEach(&util::XModifyListener::modified, aEvent);
+ }
+
+ // Due to constant aspect ratio resizing may lead a preview that changes
+ // its position but not its size. This invalidates the back buffer and
+ // we have to enforce a complete repaint.
+ if ( ! mbIsPaintPending)
+ mbIsForcedPaintPending = true;
+}
+
+
+
+
+void PresenterSlideShowView::ForceRepaint (void)
+{
+ if (mxSlideShow.is() && mbIsViewAdded)
+ {
+ mxSlideShow->removeView(this);
+ mxSlideShow->addView(this);
+ }
+}
+
+
+
+
+void PresenterSlideShowView::CreateBackgroundPolygons (void)
+{
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ const awt::Rectangle aViewWindowBox (mxViewWindow->getPosSize());
+ if (aWindowBox.Height == aViewWindowBox.Height && aWindowBox.Width == aViewWindowBox.Width)
+ {
+ mxBackgroundPolygon1 = NULL;
+ mxBackgroundPolygon2 = NULL;
+ }
+ else if (aWindowBox.Height == aViewWindowBox.Height)
+ {
+ // Paint two boxes to the left and right of the view window.
+ mxBackgroundPolygon1 = PresenterGeometryHelper::CreatePolygon(
+ awt::Rectangle(
+ 0,
+ 0,
+ aViewWindowBox.X,
+ aWindowBox.Height),
+ mxCanvas->getDevice());
+ mxBackgroundPolygon2 = PresenterGeometryHelper::CreatePolygon(
+ awt::Rectangle(
+ aViewWindowBox.X + aViewWindowBox.Width,
+ 0,
+ aWindowBox.Width - aViewWindowBox.X - aViewWindowBox.Width,
+ aWindowBox.Height),
+ mxCanvas->getDevice());
+ }
+ else
+ {
+ // Paint two boxes above and below the view window.
+ mxBackgroundPolygon1 = PresenterGeometryHelper::CreatePolygon(
+ awt::Rectangle(
+ 0,
+ 0,
+ aWindowBox.Width,
+ aViewWindowBox.Y),
+ mxCanvas->getDevice());
+ mxBackgroundPolygon2 = PresenterGeometryHelper::CreatePolygon(
+ awt::Rectangle(
+ 0,
+ aViewWindowBox.Y + aViewWindowBox.Height,
+ aWindowBox.Width,
+ aWindowBox.Height - aViewWindowBox.Y - aViewWindowBox.Height),
+ mxCanvas->getDevice());
+ }
+}
+
+
+
+
+void PresenterSlideShowView::ThrowIfDisposed (void)
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM("PresenterSlideShowView object has already been disposed")),
+ static_cast<uno::XWeak*>(this));
+ }
+}
+
+
+} } // end of namespace ::sd::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterSlideShowView.hxx b/sdext/source/presenter/PresenterSlideShowView.hxx
new file mode 100644
index 000000000000..bb91fb5e136c
--- /dev/null
+++ b/sdext/source/presenter/PresenterSlideShowView.hxx
@@ -0,0 +1,300 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_SLIDE_SHOW_VIEW_HXX
+#define SDEXT_PRESENTER_SLIDE_SHOW_VIEW_HXX
+
+#include "PresenterViewFactory.hxx"
+#include <com/sun/star/presentation/XSlideShowView.hpp>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/awt/XPointer.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/drawing/XDrawView.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XResourceId.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/presentation/XSlideShowController.hpp>
+#include <com/sun/star/rendering/XPolyPolygon2D.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <cppuhelper/compbase7.hxx>
+#include <cppuhelper/interfacecontainer.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <boost/noncopyable.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+namespace {
+ typedef cppu::WeakComponentImplHelper7<
+ css::presentation::XSlideShowView,
+ css::awt::XPaintListener,
+ css::awt::XMouseListener,
+ css::awt::XMouseMotionListener,
+ css::awt::XWindowListener,
+ css::drawing::framework::XView,
+ css::drawing::XDrawView
+ > PresenterSlideShowViewInterfaceBase;
+}
+
+/** Life view in a secondary windo of a full screen slide show.
+*/
+class PresenterSlideShowView
+ : private ::boost::noncopyable,
+ protected ::cppu::BaseMutex,
+ public PresenterSlideShowViewInterfaceBase,
+ public CachablePresenterView
+{
+public:
+ PresenterSlideShowView (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterSlideShowView (void);
+
+ void LateInit (void);
+ virtual void SAL_CALL disposing (void);
+
+
+ // CachablePresenterView
+
+ virtual void ReleaseView (void);
+
+
+ // XSlideShowView
+
+ virtual css::uno::Reference<
+ css::rendering::XSpriteCanvas > SAL_CALL getCanvas (void)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL clear (void)
+ throw (css::uno::RuntimeException);
+
+ virtual css::geometry::AffineMatrix2D SAL_CALL getTransformation (void)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL addTransformationChangedListener(
+ const css::uno::Reference<
+ css::util::XModifyListener >& xListener)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL removeTransformationChangedListener(
+ const css::uno::Reference<
+ css::util::XModifyListener >& xListener)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL addPaintListener(
+ const css::uno::Reference<
+ css::awt::XPaintListener >& xListener)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL removePaintListener(
+ const css::uno::Reference<
+ css::awt::XPaintListener >& xListener)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL addMouseListener(
+ const css::uno::Reference<
+ css::awt::XMouseListener >& xListener)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL removeMouseListener(
+ const css::uno::Reference<
+ css::awt::XMouseListener >& xListener)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL addMouseMotionListener(
+ const css::uno::Reference<
+ css::awt::XMouseMotionListener >& xListener)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL removeMouseMotionListener(
+ const css::uno::Reference<
+ css::awt::XMouseMotionListener >& xListener)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL setMouseCursor(::sal_Int16 nPointerShape)
+ throw (css::uno::RuntimeException);
+
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCanvasArea( )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // lang::XEventListener
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseListener
+ virtual void SAL_CALL mousePressed (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseExited (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseMotionListener
+
+ virtual void SAL_CALL mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XView
+
+ virtual css::uno::Reference<css::drawing::framework::XResourceId> SAL_CALL
+ getResourceId (void)
+ throw(css::uno::RuntimeException);
+
+ virtual sal_Bool SAL_CALL isAnchorOnly (void)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+ // XDrawView
+
+ virtual void SAL_CALL setCurrentPage (
+ const css::uno::Reference<css::drawing::XDrawPage>& rxSlide)
+ throw (css::uno::RuntimeException);
+
+ virtual css::uno::Reference<css::drawing::XDrawPage> SAL_CALL getCurrentPage (void)
+ throw (css::uno::RuntimeException);
+
+
+ // CachablePresenterView
+
+ virtual void ActivatePresenterView (void);
+
+ virtual void DeactivatePresenterView (void);
+
+private:
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxViewId;
+ css::uno::Reference<css::frame::XController> mxController;
+ css::uno::Reference<css::presentation::XSlideShowController> mxSlideShowController;
+ css::uno::Reference<css::presentation::XSlideShow> mxSlideShow;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ css::uno::Reference<css::rendering::XCanvas> mxViewCanvas;
+ css::uno::Reference<css::awt::XPointer> mxPointer;
+ css::uno::Reference<css::awt::XWindow> mxWindow;
+ css::uno::Reference<css::awt::XWindow> mxViewWindow;
+ css::uno::Reference<css::drawing::framework::XPane> mxTopPane;
+ css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
+ css::uno::Reference<css::rendering::XPolyPolygon2D> mxBackgroundPolygon1;
+ css::uno::Reference<css::rendering::XPolyPolygon2D> mxBackgroundPolygon2;
+ bool mbIsViewAdded;
+
+ /** Aspect ratio of the current slide.
+ */
+ double mnPageAspectRatio;
+
+ /** This broadcast helper is used to notify listeners registed to a
+ SlideShowView object.
+ */
+ ::cppu::OBroadcastHelper maBroadcaster;
+
+ SharedBitmapDescriptor mpBackground;
+
+ bool mbIsInModifyNotification;
+ bool mbIsForcedPaintPending;
+ bool mbIsPaintPending;
+ ::rtl::OUString msClickToExitPresentationText;
+ ::rtl::OUString msClickToExitPresentationTitle;
+ ::rtl::OUString msTitleTemplate;
+ bool mbIsEndSlideVisible;
+ css::uno::Reference<css::drawing::XDrawPage> mxCurrentSlide;
+
+ /** Create the window into which the slide show will render its
+ content. This window has the correct aspect ratio and is displayed centered
+ and as large as possible in its parent window.
+ */
+ css::uno::Reference<css::awt::XWindow> CreateViewWindow (
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow) const;
+ css::uno::Reference<css::rendering::XCanvas> CreateViewCanvas (
+ const css::uno::Reference<css::awt::XWindow>& rxWindow) const;
+
+ void Resize (void);
+
+ void PaintOuterWindow (const css::awt::Rectangle& rRepaintBox);
+ void PaintInnerWindow (const css::awt::PaintEvent& rEvent);
+ void PaintEndSlide (const css::awt::Rectangle& rRepaintBox);
+
+ /** The slide show relies on the back buffer of the canvas not being
+ modified. With a shared canvas there are times when that can not be
+ guaranteed.
+ Call this method when the back buffer may have changed its content,
+ like when the window has been moved but not resized.
+ */
+ void ForceRepaint (void);
+
+ void CreateBackgroundPolygons (void);
+
+ /** This method throws a DisposedException when the object has already been
+ disposed.
+ */
+ void ThrowIfDisposed (void)
+ throw (css::lang::DisposedException);
+};
+
+} } // end of namespace ::sd::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterSlideSorter.cxx b/sdext/source/presenter/PresenterSlideSorter.cxx
new file mode 100644
index 000000000000..3fe9051949c1
--- /dev/null
+++ b/sdext/source/presenter/PresenterSlideSorter.cxx
@@ -0,0 +1,2324 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterSlideSorter.hxx"
+#include "PresenterButton.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterComponent.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterHelper.hxx"
+#include "PresenterPaintManager.hxx"
+#include "PresenterPaneBase.hxx"
+#include "PresenterScrollBar.hxx"
+#include "PresenterUIPainter.hxx"
+#include "PresenterWindowManager.hxx"
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/drawing/XSlideSorterBase.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+#include <com/sun/star/rendering/XPolyPolygon2D.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <algorithm>
+#include <math.h>
+#include <boost/bind.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace {
+ const static sal_Int32 gnVerticalGap (10);
+ const static sal_Int32 gnVerticalBorder (10);
+ const static sal_Int32 gnHorizontalGap (10);
+ const static sal_Int32 gnHorizontalBorder (10);
+
+ const static double gnMinimalPreviewWidth (200);
+ const static double gnPreferredPreviewWidth (300);
+ const static double gnMaximalPreviewWidth (400);
+ const static sal_Int32 gnPreferredColumnCount (6);
+ const static double gnMinimalHorizontalPreviewGap(15);
+ const static double gnPreferredHorizontalPreviewGap(25);
+ const static double gnMaximalHorizontalPreviewGap(50);
+ const static double gnMinimalVerticalPreviewGap(15);
+ const static double gnPreferredVerticalPreviewGap(25);
+ const static double gnMaximalVerticalPreviewGap(50);
+
+ const static sal_Int32 gnHorizontalLabelBorder (3);
+ const static sal_Int32 gnHorizontalLabelPadding (5);
+
+ const static sal_Int32 gnVerticalButtonPadding (gnVerticalGap);
+}
+
+namespace sdext { namespace presenter {
+
+namespace {
+ sal_Int32 round (const double nValue) { return sal::static_int_cast<sal_Int32>(0.5 + nValue); }
+ sal_Int32 floor (const double nValue) { return sal::static_int_cast<sal_Int32>(nValue); }
+}
+
+
+
+//===== PresenterSlideSorter::Layout ==========================================
+
+class PresenterSlideSorter::Layout
+{
+public:
+ enum Orientation { Horizontal, Vertical };
+ Layout (
+ const Orientation eOrientation,
+ const ::rtl::Reference<PresenterScrollBar>& rpHorizontalScrollBar,
+ const ::rtl::Reference<PresenterScrollBar>& rpVerticalScrollBar);
+
+ void Update (const geometry::RealRectangle2D& rBoundingBox, const double nSlideAspectRatio);
+ void SetupVisibleArea (void);
+ void UpdateScrollBars (void);
+ bool IsScrollBarNeeded (const sal_Int32 nSlideCount);
+ geometry::RealPoint2D GetLocalPosition (const geometry::RealPoint2D& rWindowPoint) const;
+ geometry::RealPoint2D GetWindowPosition(const geometry::RealPoint2D& rLocalPoint) const;
+ sal_Int32 GetColumn (const geometry::RealPoint2D& rLocalPoint,
+ const bool bReturnInvalidValue = false) const;
+ sal_Int32 GetRow (const geometry::RealPoint2D& rLocalPoint,
+ const bool bReturnInvalidValue = false) const;
+ sal_Int32 GetSlideIndexForPosition (const css::geometry::RealPoint2D& rPoint) const;
+ css::geometry::RealPoint2D GetPoint (
+ const sal_Int32 nSlideIndex,
+ const sal_Int32 nRelativeHorizontalPosition,
+ const sal_Int32 nRelativeVerticalPosition) const;
+ css::awt::Rectangle GetBoundingBox (const sal_Int32 nSlideIndex) const;
+ void ForAllVisibleSlides (const ::boost::function<void(sal_Int32)>& rAction);
+ sal_Int32 GetFirstVisibleSlideIndex (void) const;
+ sal_Int32 GetLastVisibleSlideIndex (void) const;
+ bool SetHorizontalOffset (const double nOffset);
+ bool SetVerticalOffset (const double nOffset);
+ Orientation GetOrientation (void) const;
+
+ css::geometry::RealRectangle2D maBoundingBox;
+ css::geometry::IntegerSize2D maPreviewSize;
+ sal_Int32 mnHorizontalOffset;
+ sal_Int32 mnVerticalOffset;
+ sal_Int32 mnHorizontalGap;
+ sal_Int32 mnVerticalGap;
+ sal_Int32 mnHorizontalBorder;
+ sal_Int32 mnVerticalBorder;
+ sal_Int32 mnRowCount;
+ sal_Int32 mnColumnCount;
+ sal_Int32 mnSlideCount;
+ sal_Int32 mnSlideIndexAtMouse;
+ sal_Int32 mnFirstVisibleColumn;
+ sal_Int32 mnLastVisibleColumn;
+ sal_Int32 mnFirstVisibleRow;
+ sal_Int32 mnLastVisibleRow;
+
+private:
+ Orientation meOrientation;
+ ::rtl::Reference<PresenterScrollBar> mpHorizontalScrollBar;
+ ::rtl::Reference<PresenterScrollBar> mpVerticalScrollBar;
+
+ sal_Int32 GetIndex (const sal_Int32 nRow, const sal_Int32 nColumn) const;
+ sal_Int32 GetRow (const sal_Int32 nSlideIndex) const;
+ sal_Int32 GetColumn (const sal_Int32 nSlideIndex) const;
+};
+
+
+
+
+//==== PresenterSlideSorter::MouseOverManager =================================
+
+class PresenterSlideSorter::MouseOverManager
+ : ::boost::noncopyable
+{
+public:
+ MouseOverManager (
+ const Reference<container::XIndexAccess>& rxSlides,
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme,
+ const Reference<awt::XWindow>& rxInvalidateTarget,
+ const ::boost::shared_ptr<PresenterPaintManager>& rpPaintManager);
+ ~MouseOverManager (void);
+
+ void Paint (
+ const sal_Int32 nSlideIndex,
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const Reference<rendering::XPolyPolygon2D>& rxClip);
+
+ void SetSlide (
+ const sal_Int32 nSlideIndex,
+ const awt::Rectangle& rBox);
+
+private:
+ Reference<rendering::XCanvas> mxCanvas;
+ const Reference<container::XIndexAccess> mxSlides;
+ SharedBitmapDescriptor mpLeftLabelBitmap;
+ SharedBitmapDescriptor mpCenterLabelBitmap;
+ SharedBitmapDescriptor mpRightLabelBitmap;
+ PresenterTheme::SharedFontDescriptor mpFont;
+ sal_Int32 mnSlideIndex;
+ awt::Rectangle maSlideBoundingBox;
+ OUString msText;
+ Reference<rendering::XBitmap> mxBitmap;
+ Reference<awt::XWindow> mxInvalidateTarget;
+ ::boost::shared_ptr<PresenterPaintManager> mpPaintManager;
+
+ void SetCanvas (
+ const Reference<rendering::XCanvas>& rxCanvas);
+ /** Create a bitmap that shows the given text and is not wider than the
+ given maximal width.
+ */
+ Reference<rendering::XBitmap> CreateBitmap (
+ const OUString& rsText,
+ const sal_Int32 nMaximalWidth) const;
+ void Invalidate (void);
+ geometry::IntegerSize2D CalculateLabelSize (
+ const OUString& rsText) const;
+ OUString GetFittingText (const OUString& rsText, const double nMaximalWidth) const;
+ void PaintButtonBackground (
+ const Reference<rendering::XBitmapCanvas>& rxCanvas,
+ const geometry::IntegerSize2D& rSize) const;
+};
+
+
+
+
+//==== PresenterSlideSorter::CurrentSlideFrameRenderer ========================
+
+class PresenterSlideSorter::CurrentSlideFrameRenderer
+{
+public:
+ CurrentSlideFrameRenderer (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas);
+ ~CurrentSlideFrameRenderer (void);
+
+ void PaintCurrentSlideFrame (
+ const awt::Rectangle& rSlideBoundingBox,
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const geometry::RealRectangle2D& rClipBox);
+
+ /** Enlarge the given rectangle to include the current slide indicator.
+ */
+ awt::Rectangle GetBoundingBox (
+ const awt::Rectangle& rSlideBoundingBox);
+
+private:
+ SharedBitmapDescriptor mpTopLeft;
+ SharedBitmapDescriptor mpTop;
+ SharedBitmapDescriptor mpTopRight;
+ SharedBitmapDescriptor mpLeft;
+ SharedBitmapDescriptor mpRight;
+ SharedBitmapDescriptor mpBottomLeft;
+ SharedBitmapDescriptor mpBottom;
+ SharedBitmapDescriptor mpBottomRight;
+ sal_Int32 mnTopFrameSize;
+ sal_Int32 mnLeftFrameSize;
+ sal_Int32 mnRightFrameSize;
+ sal_Int32 mnBottomFrameSize;
+
+ void PaintBitmapOnce(
+ const css::uno::Reference<css::rendering::XBitmap>& rxBitmap,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const Reference<rendering::XPolyPolygon2D>& rxClip,
+ const double nX,
+ const double nY);
+ void PaintBitmapTiled(
+ const css::uno::Reference<css::rendering::XBitmap>& rxBitmap,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const geometry::RealRectangle2D& rClipBox,
+ const double nX,
+ const double nY,
+ const double nWidth,
+ const double nHeight);
+};
+
+
+
+
+//===== PresenterSlideSorter ==================================================
+
+PresenterSlideSorter::PresenterSlideSorter (
+ const Reference<uno::XComponentContext>& rxContext,
+ const Reference<XResourceId>& rxViewId,
+ const Reference<frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterSlideSorterInterfaceBase(m_aMutex),
+ mxComponentContext(rxContext),
+ mxViewId(rxViewId),
+ mxPane(),
+ mxCanvas(),
+ mxWindow(),
+ mpPresenterController(rpPresenterController),
+ mxSlideShowController(mpPresenterController->GetSlideShowController()),
+ mxPreviewCache(),
+ mbIsPaintPending(true),
+ mbIsLayoutPending(true),
+ mpLayout(),
+ mpHorizontalScrollBar(),
+ mpVerticalScrollBar(),
+ mpCloseButton(),
+ mpMouseOverManager(),
+ mnSlideIndexMousePressed(-1),
+ mnCurrentSlideIndex(-1),
+ mnSeparatorY(0),
+ maSeparatorColor(0x00ffffff),
+ maCloseButtonCenter(),
+ maCurrentSlideFrameBoundingBox(),
+ mpCurrentSlideFrameRenderer(),
+ mxPreviewFrame()
+{
+ if ( ! rxContext.is()
+ || ! rxViewId.is()
+ || ! rxController.is()
+ || rpPresenterController.get()==NULL)
+ {
+ throw lang::IllegalArgumentException();
+ }
+
+ if ( ! mxSlideShowController.is())
+ throw RuntimeException();
+
+ try
+ {
+ // Get pane and window.
+ Reference<XControllerManager> xCM (rxController, UNO_QUERY_THROW);
+ Reference<XConfigurationController> xCC (
+ xCM->getConfigurationController(), UNO_QUERY_THROW);
+ Reference<lang::XMultiComponentFactory> xFactory (
+ mxComponentContext->getServiceManager(), UNO_QUERY_THROW);
+
+ mxPane = Reference<XPane>(xCC->getResource(rxViewId->getAnchor()), UNO_QUERY_THROW);
+ mxWindow = mxPane->getWindow();
+
+ // Add window listener.
+ mxWindow->addWindowListener(this);
+ mxWindow->addPaintListener(this);
+ mxWindow->addMouseListener(this);
+ mxWindow->addMouseMotionListener(this);
+ mxWindow->setVisible(sal_True);
+
+ // Remember the current slide.
+ mnCurrentSlideIndex = mxSlideShowController->getCurrentSlideIndex();
+
+ // Set the orientation.
+ const bool bIsVertical (true);
+
+ // Create the scroll bar.
+ if (bIsVertical)
+ mpVerticalScrollBar = ::rtl::Reference<PresenterScrollBar>(
+ new PresenterVerticalScrollBar(
+ rxContext,
+ mxWindow,
+ mpPresenterController->GetPaintManager(),
+ ::boost::bind(&PresenterSlideSorter::SetVerticalOffset,this,_1)));
+ else
+ mpHorizontalScrollBar = ::rtl::Reference<PresenterScrollBar>(
+ new PresenterHorizontalScrollBar(
+ rxContext,
+ mxWindow,
+ mpPresenterController->GetPaintManager(),
+ ::boost::bind(&PresenterSlideSorter::SetHorizontalOffset,this,_1)));
+ mpCloseButton = PresenterButton::Create(
+ rxContext,
+ mpPresenterController,
+ mpPresenterController->GetTheme(),
+ mxWindow,
+ mxCanvas,
+ A2S("SlideSorterCloser"));
+
+ if (mpPresenterController->GetTheme().get() != NULL)
+ {
+ PresenterTheme::SharedFontDescriptor pFont (
+ mpPresenterController->GetTheme()->GetFont(A2S("ButtonFont")));
+ if (pFont.get() != NULL)
+ maSeparatorColor = pFont->mnColor;
+ }
+
+ // Create the layout.
+ mpLayout.reset(new Layout(
+ Layout::Vertical,
+ mpHorizontalScrollBar,
+ mpVerticalScrollBar));
+
+ // Create the preview cache.
+ mxPreviewCache = Reference<drawing::XSlidePreviewCache>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.PresenterPreviewCache")),
+ mxComponentContext),
+ UNO_QUERY_THROW);
+ Reference<container::XIndexAccess> xSlides (mxSlideShowController, UNO_QUERY);
+ mxPreviewCache->setDocumentSlides(xSlides, rxController->getModel());
+ mxPreviewCache->addPreviewCreationNotifyListener(this);
+ if (xSlides.is())
+ {
+ mpLayout->mnSlideCount = xSlides->getCount();
+ }
+
+ // Create the mouse over manager.
+ mpMouseOverManager.reset(new MouseOverManager(
+ Reference<container::XIndexAccess>(mxSlideShowController, UNO_QUERY),
+ mpPresenterController->GetTheme(),
+ mxWindow,
+ mpPresenterController->GetPaintManager()));
+
+ // Listen for changes of the current slide.
+ Reference<beans::XPropertySet> xControllerProperties (rxController, UNO_QUERY_THROW);
+ xControllerProperties->addPropertyChangeListener(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("CurrentPage")),
+ this);
+
+ // Move the current slide in the center of the window.
+ const awt::Rectangle aCurrentSlideBBox (mpLayout->GetBoundingBox(mnCurrentSlideIndex));
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ SetHorizontalOffset(aCurrentSlideBBox.X - aWindowBox.Width/2.0);
+ }
+ catch (RuntimeException&)
+ {
+ disposing();
+ throw;
+ }
+}
+
+
+
+
+PresenterSlideSorter::~PresenterSlideSorter (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterSlideSorter::disposing (void)
+{
+ mxComponentContext = NULL;
+ mxViewId = NULL;
+ mxPane = NULL;
+
+ if (mpVerticalScrollBar.is())
+ {
+ Reference<lang::XComponent> xComponent (
+ static_cast<XWeak*>(mpVerticalScrollBar.get()), UNO_QUERY);
+ mpVerticalScrollBar = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ if (mpHorizontalScrollBar.is())
+ {
+ Reference<lang::XComponent> xComponent (
+ static_cast<XWeak*>(mpHorizontalScrollBar.get()), UNO_QUERY);
+ mpHorizontalScrollBar = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ if (mpCloseButton.is())
+ {
+ Reference<lang::XComponent> xComponent (
+ static_cast<XWeak*>(mpCloseButton.get()), UNO_QUERY);
+ mpCloseButton = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ if (mxCanvas.is())
+ {
+ Reference<lang::XComponent> xComponent (mxCanvas, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->removeEventListener(static_cast<awt::XWindowListener*>(this));
+ mxCanvas = NULL;
+ }
+ mpPresenterController = NULL;
+ mxSlideShowController = NULL;
+ mpLayout.reset();
+ mpMouseOverManager.reset();
+
+ if (mxPreviewCache.is())
+ {
+ mxPreviewCache->removePreviewCreationNotifyListener(this);
+
+ Reference<XComponent> xComponent (mxPreviewCache, UNO_QUERY);
+ mxPreviewCache = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+
+ if (mxWindow.is())
+ {
+ mxWindow->removeWindowListener(this);
+ mxWindow->removePaintListener(this);
+ mxWindow->removeMouseListener(this);
+ mxWindow->removeMouseMotionListener(this);
+ }
+}
+
+
+
+
+void PresenterSlideSorter::SetActiveState (const bool bIsActive)
+{
+ (void)bIsActive;
+}
+
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL PresenterSlideSorter::disposing (const lang::EventObject& rEventObject)
+ throw (RuntimeException)
+{
+ if (rEventObject.Source == mxWindow)
+ {
+ mxWindow = NULL;
+ dispose();
+ }
+ else if (rEventObject.Source == mxPreviewCache)
+ {
+ mxPreviewCache = NULL;
+ dispose();
+ }
+ else if (rEventObject.Source == mxCanvas)
+ {
+ mxCanvas = NULL;
+ if (mpHorizontalScrollBar.is())
+ mpHorizontalScrollBar->SetCanvas(NULL);
+ mbIsLayoutPending = true;
+ mbIsPaintPending = true;
+
+ mpPresenterController->GetPaintManager()->Invalidate(mxWindow);
+ }
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterSlideSorter::windowResized (const awt::WindowEvent& rEvent)
+ throw (uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+ mbIsLayoutPending = true;
+ mpPresenterController->GetPaintManager()->Invalidate(mxWindow);
+}
+
+
+
+
+void SAL_CALL PresenterSlideSorter::windowMoved (const awt::WindowEvent& rEvent)
+ throw (uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+void SAL_CALL PresenterSlideSorter::windowShown (const lang::EventObject& rEvent)
+ throw (uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+ mbIsLayoutPending = true;
+ mpPresenterController->GetPaintManager()->Invalidate(mxWindow);
+}
+
+
+
+
+void SAL_CALL PresenterSlideSorter::windowHidden (const lang::EventObject& rEvent)
+ throw (uno::RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterSlideSorter::windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+
+ // Deactivated views must not be painted.
+ if ( ! mbIsPresenterViewActive)
+ return;
+
+ Paint(rEvent.UpdateRect);
+
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+}
+
+
+
+
+//----- XMouseListener --------------------------------------------------------
+
+void SAL_CALL PresenterSlideSorter::mousePressed (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ const geometry::RealPoint2D aPosition (rEvent.X, rEvent.Y);
+ mnSlideIndexMousePressed = mpLayout->GetSlideIndexForPosition(aPosition);
+}
+
+
+
+
+void SAL_CALL PresenterSlideSorter::mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ const geometry::RealPoint2D aPosition (rEvent.X, rEvent.Y);
+ const sal_Int32 nSlideIndex (mpLayout->GetSlideIndexForPosition(aPosition));
+
+ if (nSlideIndex == mnSlideIndexMousePressed && mnSlideIndexMousePressed >= 0)
+ {
+ switch (rEvent.ClickCount)
+ {
+ case 1:
+ default:
+ GotoSlide(nSlideIndex);
+ break;
+
+ case 2:
+ OSL_ASSERT(mpPresenterController.get()!=NULL);
+ OSL_ASSERT(mpPresenterController->GetWindowManager().get()!=NULL);
+ mpPresenterController->GetWindowManager()->SetSlideSorterState(false);
+ GotoSlide(nSlideIndex);
+ break;
+ }
+ }
+}
+
+
+
+
+void SAL_CALL PresenterSlideSorter::mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterSlideSorter::mouseExited (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ mnSlideIndexMousePressed = -1;
+ if (mpMouseOverManager.get() != NULL)
+ mpMouseOverManager->SetSlide(mnSlideIndexMousePressed, awt::Rectangle(0,0,0,0));
+}
+
+
+
+
+//----- XMouseMotionListener --------------------------------------------------
+
+void SAL_CALL PresenterSlideSorter::mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ if (mpMouseOverManager.get() != NULL)
+ {
+ const geometry::RealPoint2D aPosition (rEvent.X, rEvent.Y);
+ sal_Int32 nSlideIndex (mpLayout->GetSlideIndexForPosition(aPosition));
+
+ if (nSlideIndex < 0)
+ mnSlideIndexMousePressed = -1;
+
+ if (nSlideIndex < 0)
+ {
+ mpMouseOverManager->SetSlide(nSlideIndex, awt::Rectangle(0,0,0,0));
+ }
+ else
+ {
+ mpMouseOverManager->SetSlide(
+ nSlideIndex,
+ mpLayout->GetBoundingBox(nSlideIndex));
+ }
+ }
+}
+
+
+
+
+void SAL_CALL PresenterSlideSorter::mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XResourceId -----------------------------------------------------------
+
+Reference<XResourceId> SAL_CALL PresenterSlideSorter::getResourceId (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ return mxViewId;
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterSlideSorter::isAnchorOnly (void)
+ throw (RuntimeException)
+{
+ return false;
+}
+
+
+
+
+//----- XPropertyChangeListener -----------------------------------------------
+
+void SAL_CALL PresenterSlideSorter::propertyChange (
+ const css::beans::PropertyChangeEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XSlidePreviewCacheListener --------------------------------------------
+
+void SAL_CALL PresenterSlideSorter::notifyPreviewCreation (
+ sal_Int32 nSlideIndex)
+ throw(css::uno::RuntimeException)
+{
+ OSL_ASSERT(mpLayout.get()!=NULL);
+
+ awt::Rectangle aBBox (mpLayout->GetBoundingBox(nSlideIndex));
+ mpPresenterController->GetPaintManager()->Invalidate(mxWindow, aBBox, true);
+}
+
+
+
+
+//----- XDrawView -------------------------------------------------------------
+
+void SAL_CALL PresenterSlideSorter::setCurrentPage (const Reference<drawing::XDrawPage>& rxSlide)
+ throw (RuntimeException)
+{
+ (void)rxSlide;
+
+ ThrowIfDisposed();
+ ::osl::MutexGuard aGuard (::osl::Mutex::getGlobalMutex());
+
+ if (mxSlideShowController.is())
+ {
+ const sal_Int32 nNewCurrentSlideIndex (mxSlideShowController->getCurrentSlideIndex());
+ if (nNewCurrentSlideIndex != mnCurrentSlideIndex)
+ {
+ mnCurrentSlideIndex = nNewCurrentSlideIndex;
+
+ // Request a repaint of the previous current slide to hide its
+ // current slide indicator.
+ mpPresenterController->GetPaintManager()->Invalidate(
+ mxWindow,
+ maCurrentSlideFrameBoundingBox);
+
+ // Request a repaint of the new current slide to show its
+ // current slide indicator.
+ maCurrentSlideFrameBoundingBox = mpCurrentSlideFrameRenderer->GetBoundingBox(
+ mpLayout->GetBoundingBox(mnCurrentSlideIndex));
+ mpPresenterController->GetPaintManager()->Invalidate(
+ mxWindow,
+ maCurrentSlideFrameBoundingBox);
+ }
+ }
+}
+
+
+
+
+Reference<drawing::XDrawPage> SAL_CALL PresenterSlideSorter::getCurrentPage (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ return NULL;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterSlideSorter::UpdateLayout (void)
+{
+ if ( ! mxWindow.is())
+ return;
+
+ mbIsLayoutPending = false;
+ mbIsPaintPending = true;
+
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ awt::Rectangle aCenterBox (aWindowBox);
+ sal_Int32 nLeftBorderWidth (aWindowBox.X);
+
+ // Get border width.
+ PresenterPaneContainer::SharedPaneDescriptor pPane (
+ mpPresenterController->GetPaneContainer()->FindViewURL(
+ mxViewId->getResourceURL()));
+ do
+ {
+ if (pPane.get() == NULL)
+ break;
+ if ( ! pPane->mxPane.is())
+ break;
+
+ Reference<drawing::framework::XPaneBorderPainter> xBorderPainter (
+ pPane->mxPane->GetPaneBorderPainter());
+ if ( ! xBorderPainter.is())
+ break;
+ aCenterBox = xBorderPainter->addBorder (
+ mxViewId->getAnchor()->getResourceURL(),
+ awt::Rectangle(0, 0, aWindowBox.Width, aWindowBox.Height),
+ drawing::framework::BorderType_INNER_BORDER);
+ }
+ while(false);
+
+ // Place vertical separator.
+ mnSeparatorY = aWindowBox.Height - mpCloseButton->GetSize().Height - gnVerticalButtonPadding;
+
+ PlaceCloseButton(pPane, aWindowBox, nLeftBorderWidth);
+
+ geometry::RealRectangle2D aUpperBox(
+ gnHorizontalBorder,
+ gnVerticalBorder,
+ aWindowBox.Width - 2*gnHorizontalBorder,
+ mnSeparatorY - gnVerticalGap);
+
+ // Determine whether the scroll bar has to be displayed.
+ aUpperBox = PlaceScrollBars(aUpperBox);
+
+ mpLayout->Update(aUpperBox, GetSlideAspectRatio());
+ mpLayout->SetupVisibleArea();
+ mpLayout->UpdateScrollBars();
+
+ // Tell the preview cache about some of the values.
+ mxPreviewCache->setPreviewSize(mpLayout->maPreviewSize);
+ mxPreviewCache->setVisibleRange(
+ mpLayout->GetFirstVisibleSlideIndex(),
+ mpLayout->GetLastVisibleSlideIndex());
+
+ // Clear the frame polygon so that it is re-created on the next paint.
+ mxPreviewFrame = NULL;
+}
+
+
+
+
+geometry::RealRectangle2D PresenterSlideSorter::PlaceScrollBars (
+ const geometry::RealRectangle2D& rUpperBox)
+{
+ mpLayout->Update(rUpperBox, GetSlideAspectRatio());
+ bool bIsScrollBarNeeded (false);
+ Reference<container::XIndexAccess> xSlides (mxSlideShowController, UNO_QUERY_THROW);
+ if (xSlides.is())
+ bIsScrollBarNeeded = mpLayout->IsScrollBarNeeded(xSlides->getCount());
+
+ if (mpLayout->GetOrientation() == Layout::Vertical)
+ {
+ if (mpVerticalScrollBar.get() != NULL)
+ {
+ if (bIsScrollBarNeeded)
+ {
+ // Place vertical scroll bar at right border.
+ mpVerticalScrollBar->SetPosSize(geometry::RealRectangle2D(
+ rUpperBox.X2 - mpVerticalScrollBar->GetSize(),
+ rUpperBox.Y1,
+ rUpperBox.X2,
+ rUpperBox.Y2));
+ mpVerticalScrollBar->SetVisible(true);
+
+ // Reduce area covered by the scroll bar from the available
+ // space.
+ return geometry::RealRectangle2D(
+ rUpperBox.X1,
+ rUpperBox.Y1,
+ rUpperBox.X2 - mpVerticalScrollBar->GetSize() - gnHorizontalGap,
+ rUpperBox.Y2);
+ }
+ else
+ mpVerticalScrollBar->SetVisible(false);
+ }
+ }
+ else
+ {
+ if (mpHorizontalScrollBar.get() != NULL)
+ {
+ if (bIsScrollBarNeeded)
+ {
+ // Place horixontal scroll bar at the bottom.
+ mpHorizontalScrollBar->SetPosSize(geometry::RealRectangle2D(
+ rUpperBox.X1,
+ rUpperBox.Y2 - mpHorizontalScrollBar->GetSize(),
+ rUpperBox.X2,
+ rUpperBox.Y2));
+ mpHorizontalScrollBar->SetVisible(true);
+
+ // Reduce area covered by the scroll bar from the available
+ // space.
+ return geometry::RealRectangle2D(
+ rUpperBox.X1,
+ rUpperBox.Y1,
+ rUpperBox.X2,
+ rUpperBox.Y2 - mpHorizontalScrollBar->GetSize() - gnVerticalGap);
+ }
+ else
+ mpHorizontalScrollBar->SetVisible(false);
+ }
+ }
+
+ return rUpperBox;
+}
+
+
+
+
+void PresenterSlideSorter::PlaceCloseButton (
+ const PresenterPaneContainer::SharedPaneDescriptor& rpPane,
+ const awt::Rectangle& rCenterBox,
+ const sal_Int32 nLeftBorderWidth)
+{
+ // Place button. When the callout is near the center then the button is
+ // centered over the callout. Otherwise it is centered with respect to
+ // the whole window.
+ sal_Int32 nCloseButtonCenter (rCenterBox.Width/2);
+ if (rpPane.get() != NULL && rpPane->mxPane.is())
+ {
+ const sal_Int32 nCalloutCenter (rpPane->mxPane->GetCalloutAnchor().X - nLeftBorderWidth);
+ const sal_Int32 nDistanceFromWindowCenter (abs(nCalloutCenter - rCenterBox.Width/2));
+ const sal_Int32 nButtonWidth (mpCloseButton->GetSize().Width);
+ const static sal_Int32 nMaxDistanceForCalloutCentering (nButtonWidth * 2);
+ if (nDistanceFromWindowCenter < nMaxDistanceForCalloutCentering)
+ {
+ if (nCalloutCenter < nButtonWidth/2)
+ nCloseButtonCenter = nButtonWidth/2;
+ else if (nCalloutCenter > rCenterBox.Width-nButtonWidth/2)
+ nCloseButtonCenter = rCenterBox.Width-nButtonWidth/2;
+ else
+ nCloseButtonCenter = nCalloutCenter;
+ }
+ }
+ mpCloseButton->SetCenter(geometry::RealPoint2D(
+ nCloseButtonCenter,
+ rCenterBox.Height - mpCloseButton->GetSize().Height/ 2));
+}
+
+
+
+
+void PresenterSlideSorter::ClearBackground (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const awt::Rectangle& rUpdateBox)
+{
+ OSL_ASSERT(rxCanvas.is());
+
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ mpPresenterController->GetCanvasHelper()->Paint(
+ mpPresenterController->GetViewBackground(mxViewId->getResourceURL()),
+ rxCanvas,
+ rUpdateBox,
+ awt::Rectangle(0,0,aWindowBox.Width,aWindowBox.Height),
+ awt::Rectangle());
+}
+
+
+
+
+double PresenterSlideSorter::GetSlideAspectRatio (void) const
+{
+ double nSlideAspectRatio (28.0/21.0);
+
+ try
+ {
+ Reference<container::XIndexAccess> xSlides(mxSlideShowController, UNO_QUERY_THROW);
+ if (mxSlideShowController.is() && xSlides->getCount()>0)
+ {
+ Reference<beans::XPropertySet> xProperties(xSlides->getByIndex(0),UNO_QUERY_THROW);
+ sal_Int32 nWidth (28000);
+ sal_Int32 nHeight (21000);
+ if ((xProperties->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("Width"))) >>= nWidth)
+ && (xProperties->getPropertyValue(OUString(RTL_CONSTASCII_USTRINGPARAM("Height"))) >>= nHeight)
+ && nHeight > 0)
+ {
+ nSlideAspectRatio = double(nWidth) / double(nHeight);
+ }
+ }
+ }
+ catch (RuntimeException&)
+ {
+ OSL_ASSERT(false);
+ }
+
+ return nSlideAspectRatio;
+}
+
+
+
+
+Reference<rendering::XBitmap> PresenterSlideSorter::GetPreview (const sal_Int32 nSlideIndex)
+{
+ if (nSlideIndex < 0 || nSlideIndex>=mpLayout->mnSlideCount)
+ return NULL;
+ else if (mxPane.is())
+ return mxPreviewCache->getSlidePreview(nSlideIndex, mxPane->getCanvas());
+ else
+ return NULL;
+}
+
+
+
+
+void PresenterSlideSorter::PaintPreview (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rUpdateBox,
+ const sal_Int32 nSlideIndex)
+{
+ OSL_ASSERT(rxCanvas.is());
+
+ geometry::IntegerSize2D aSize (mpLayout->maPreviewSize);
+
+ if (PresenterGeometryHelper::AreRectanglesDisjoint(
+ rUpdateBox,
+ mpLayout->GetBoundingBox(nSlideIndex)))
+ {
+ return;
+ }
+
+ Reference<rendering::XBitmap> xPreview (GetPreview(nSlideIndex));
+
+ const geometry::RealPoint2D aTopLeft (
+ mpLayout->GetWindowPosition(
+ mpLayout->GetPoint(nSlideIndex, -1, -1)));
+
+ // Create clip rectangle as intersection of the current update area and
+ // the bounding box of all previews.
+ geometry::RealRectangle2D aBoundingBox (mpLayout->maBoundingBox);
+ aBoundingBox.Y2 += 1;
+ const geometry::RealRectangle2D aClipBox (
+ PresenterGeometryHelper::Intersection(
+ PresenterGeometryHelper::ConvertRectangle(rUpdateBox),
+ aBoundingBox));
+ Reference<rendering::XPolyPolygon2D> xClip (
+ PresenterGeometryHelper::CreatePolygon(aClipBox, rxCanvas->getDevice()));
+
+ const rendering::ViewState aViewState (geometry::AffineMatrix2D(1,0,0, 0,1,0), xClip);
+
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(
+ 1, 0, aTopLeft.X,
+ 0, 1, aTopLeft.Y),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+
+ // Emphasize the current slide.
+ if (nSlideIndex == mnCurrentSlideIndex)
+ {
+ if (mpCurrentSlideFrameRenderer.get() != NULL)
+ {
+ const awt::Rectangle aSlideBoundingBox(
+ sal::static_int_cast<sal_Int32>(0.5 + aTopLeft.X),
+ sal::static_int_cast<sal_Int32>(0.5 + aTopLeft.Y),
+ aSize.Width,
+ aSize.Height);
+ maCurrentSlideFrameBoundingBox
+ = mpCurrentSlideFrameRenderer->GetBoundingBox(aSlideBoundingBox);
+ mpCurrentSlideFrameRenderer->PaintCurrentSlideFrame (
+ aSlideBoundingBox,
+ mxCanvas,
+ aClipBox);
+ }
+ }
+
+ // Paint the preview.
+ if (xPreview.is())
+ {
+ aSize = xPreview->getSize();
+ if (aSize.Width > 0 && aSize.Height > 0)
+ {
+ rxCanvas->drawBitmap(xPreview, aViewState, aRenderState);
+ }
+ }
+
+ // Create a polygon that is used to paint a frame around previews. Its
+ // coordinates are chosen in the local coordinate system of a preview.
+ if ( ! mxPreviewFrame.is())
+ mxPreviewFrame = PresenterGeometryHelper::CreatePolygon(
+ awt::Rectangle(-1, -1, aSize.Width+2, aSize.Height+2),
+ rxCanvas->getDevice());
+
+ // Paint a border around the preview.
+ if (mxPreviewFrame.is())
+ {
+ const geometry::RealRectangle2D aBox (0, 0, aSize.Width, aSize.Height);
+ const util::Color aFrameColor (0x00000000);
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, aFrameColor);
+ rxCanvas->drawPolyPolygon(mxPreviewFrame, aViewState, aRenderState);
+ }
+
+ // Paint mouse over effect.
+ mpMouseOverManager->Paint(nSlideIndex, mxCanvas, xClip);
+}
+
+
+
+
+void PresenterSlideSorter::Paint (const awt::Rectangle& rUpdateBox)
+{
+ const bool bCanvasChanged ( ! mxCanvas.is());
+ if ( ! ProvideCanvas())
+ return;
+
+ if (mpLayout->mnRowCount<=0 || mpLayout->mnColumnCount<=0)
+ {
+ OSL_ASSERT(mpLayout->mnRowCount>0 || mpLayout->mnColumnCount>0);
+ return;
+ }
+
+ mbIsPaintPending = false;
+
+ ClearBackground(mxCanvas, rUpdateBox);
+
+ // Give the canvas to the controls.
+ if (bCanvasChanged)
+ {
+ if (mpHorizontalScrollBar.is())
+ mpHorizontalScrollBar->SetCanvas(mxCanvas);
+ if (mpVerticalScrollBar.is())
+ mpVerticalScrollBar->SetCanvas(mxCanvas);
+ if (mpCloseButton.is())
+ mpCloseButton->SetCanvas(mxCanvas, mxWindow);
+ }
+
+ // Now that the controls have a canvas we can do the layouting.
+ if (mbIsLayoutPending)
+ UpdateLayout();
+
+ // Paint the horizontal separator.
+ rendering::RenderState aRenderState (geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL, Sequence<double>(4), rendering::CompositeOperation::SOURCE);
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, maSeparatorColor);
+ mxCanvas->drawLine(
+ geometry::RealPoint2D(0, mnSeparatorY),
+ geometry::RealPoint2D(mxWindow->getPosSize().Width, mnSeparatorY),
+ rendering::ViewState(geometry::AffineMatrix2D(1,0,0, 0,1,0), NULL),
+ aRenderState);
+
+ // Paint the slides.
+ if ( ! PresenterGeometryHelper::AreRectanglesDisjoint(
+ rUpdateBox,
+ PresenterGeometryHelper::ConvertRectangle(mpLayout->maBoundingBox)))
+ {
+ mpLayout->ForAllVisibleSlides(
+ ::boost::bind(&PresenterSlideSorter::PaintPreview, this, mxCanvas, rUpdateBox, _1));
+ }
+
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+}
+
+
+
+
+void PresenterSlideSorter::SetHorizontalOffset (const double nXOffset)
+{
+ if (mpLayout->SetHorizontalOffset(nXOffset))
+ {
+ mxPreviewCache->setVisibleRange(
+ mpLayout->GetFirstVisibleSlideIndex(),
+ mpLayout->GetLastVisibleSlideIndex());
+
+ mpPresenterController->GetPaintManager()->Invalidate(mxWindow);
+ }
+}
+
+
+
+
+void PresenterSlideSorter::SetVerticalOffset (const double nYOffset)
+{
+ if (mpLayout->SetVerticalOffset(nYOffset))
+ {
+ mxPreviewCache->setVisibleRange(
+ mpLayout->GetFirstVisibleSlideIndex(),
+ mpLayout->GetLastVisibleSlideIndex());
+
+ mpPresenterController->GetPaintManager()->Invalidate(mxWindow);
+ }
+}
+
+
+
+
+void PresenterSlideSorter::GotoSlide (const sal_Int32 nSlideIndex)
+{
+ mxSlideShowController->gotoSlideIndex(nSlideIndex);
+ mpPresenterController->HideSlideSorter();
+}
+
+
+
+
+bool PresenterSlideSorter::ProvideCanvas (void)
+{
+ if ( ! mxCanvas.is())
+ {
+ if (mxPane.is())
+ mxCanvas = mxPane->getCanvas();
+
+ // Register as event listener so that we are informed when the
+ // canvas is disposed (and we have to fetch another one).
+ Reference<lang::XComponent> xComponent (mxCanvas, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->addEventListener(static_cast<awt::XWindowListener*>(this));
+
+ // Tell the scrollbar about the canvas.
+ if (mpHorizontalScrollBar.is())
+ mpHorizontalScrollBar->SetCanvas(mxCanvas);
+
+ mpCurrentSlideFrameRenderer.reset(
+ new CurrentSlideFrameRenderer(mxComponentContext, mxCanvas));
+ }
+ return mxCanvas.is();
+}
+
+
+
+
+void PresenterSlideSorter::ThrowIfDisposed (void)
+ throw (lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterSlideSorter has been already disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+
+
+//===== PresenterSlideSorter::Layout ==========================================
+
+PresenterSlideSorter::Layout::Layout (
+ const Orientation eOrientation,
+ const ::rtl::Reference<PresenterScrollBar>& rpHorizontalScrollBar,
+ const ::rtl::Reference<PresenterScrollBar>& rpVerticalScrollBar)
+ : maBoundingBox(),
+ maPreviewSize(),
+ mnHorizontalOffset(0),
+ mnVerticalOffset(0),
+ mnHorizontalGap(0),
+ mnVerticalGap(0),
+ mnHorizontalBorder(0),
+ mnVerticalBorder(0),
+ mnRowCount(1),
+ mnColumnCount(1),
+ mnSlideCount(0),
+ mnSlideIndexAtMouse(-1),
+ mnFirstVisibleColumn(-1),
+ mnLastVisibleColumn(-1),
+ mnFirstVisibleRow(-1),
+ mnLastVisibleRow(-1),
+ meOrientation(eOrientation),
+ mpHorizontalScrollBar(rpHorizontalScrollBar),
+ mpVerticalScrollBar(rpVerticalScrollBar)
+{
+}
+
+
+
+
+void PresenterSlideSorter::Layout::Update (
+ const geometry::RealRectangle2D& rBoundingBox,
+ const double nSlideAspectRatio)
+{
+ maBoundingBox = rBoundingBox;
+
+ mnHorizontalBorder = gnHorizontalBorder;
+ mnVerticalBorder = gnVerticalBorder;
+
+ const double nWidth (rBoundingBox.X2 - rBoundingBox.X1 - 2*mnHorizontalBorder);
+ const double nHeight (rBoundingBox.Y2 - rBoundingBox.Y1 - 2*mnVerticalBorder);
+ if (nWidth<=0 || nHeight<=0)
+ return;
+
+ double nPreviewWidth;
+
+ // Determine column count, preview width, and horizontal gap (borders
+ // are half the gap). Try to use the preferred values. Try more to
+ // stay in the valid intervalls. This last constraint may be not
+ // fullfilled in some cases.
+ const double nElementWidth = nWidth / gnPreferredColumnCount;
+ if (nElementWidth < gnMinimalPreviewWidth + gnMinimalHorizontalPreviewGap)
+ {
+ // The preferred column count is too large.
+ // Can we use the preferred preview width?
+ if (nWidth - gnMinimalHorizontalPreviewGap >= gnPreferredPreviewWidth)
+ {
+ // Yes.
+ nPreviewWidth = gnPreferredPreviewWidth;
+ mnColumnCount = floor((nWidth+gnPreferredHorizontalPreviewGap)
+ / (nPreviewWidth+gnPreferredHorizontalPreviewGap));
+ mnHorizontalGap = round((nWidth - mnColumnCount*nPreviewWidth) / mnColumnCount);
+ }
+ else
+ {
+ // No. Set the column count to 1 and adapt preview width and
+ // gap.
+ mnColumnCount = 1;
+ mnHorizontalGap = floor(gnMinimalHorizontalPreviewGap);
+ if (nWidth - gnMinimalHorizontalPreviewGap >= gnPreferredPreviewWidth)
+ nPreviewWidth = nWidth - gnMinimalHorizontalPreviewGap;
+ else
+ nPreviewWidth = ::std::max(gnMinimalPreviewWidth, nWidth-mnHorizontalGap);
+ }
+ }
+ else if (nElementWidth > gnMaximalPreviewWidth + gnMaximalHorizontalPreviewGap)
+ {
+ // The preferred column count is too small.
+ nPreviewWidth = gnPreferredPreviewWidth;
+ mnColumnCount = floor((nWidth+gnPreferredHorizontalPreviewGap)
+ / (nPreviewWidth+gnPreferredHorizontalPreviewGap));
+ mnHorizontalGap = round((nWidth - mnColumnCount*nPreviewWidth) / mnColumnCount);
+ }
+ else
+ {
+ // The preferred column count is possible. Determine gap and
+ // preview width.
+ mnColumnCount = gnPreferredColumnCount;
+ if (nElementWidth - gnPreferredPreviewWidth < gnMinimalHorizontalPreviewGap)
+ {
+ // Use the minimal gap and adapt the preview width.
+ mnHorizontalGap = floor(gnMinimalHorizontalPreviewGap);
+ nPreviewWidth = (nWidth - mnColumnCount*mnHorizontalGap) / mnColumnCount;
+ }
+ else if (nElementWidth - gnPreferredPreviewWidth <= gnMaximalHorizontalPreviewGap)
+ {
+ // Use the maximal gap and adapt the preview width.
+ mnHorizontalGap = round(gnMaximalHorizontalPreviewGap);
+ nPreviewWidth = (nWidth - mnColumnCount*mnHorizontalGap) / mnColumnCount;
+ }
+ else
+ {
+ // Use the preferred preview width and adapt the gap.
+ nPreviewWidth = gnPreferredPreviewWidth;
+ mnHorizontalGap = round((nWidth - mnColumnCount*nPreviewWidth) / mnColumnCount);
+ }
+ }
+
+ // Now determine the row count, preview height, and vertical gap.
+ const double nPreviewHeight = nPreviewWidth / nSlideAspectRatio;
+ mnRowCount = ::std::max(
+ sal_Int32(1),
+ sal_Int32(ceil((nHeight+gnPreferredVerticalPreviewGap)
+ / (nPreviewHeight + gnPreferredVerticalPreviewGap))));
+ mnVerticalGap = round(gnPreferredVerticalPreviewGap);
+
+ maPreviewSize = geometry::IntegerSize2D(floor(nPreviewWidth), floor(nPreviewHeight));
+
+ // Reset the offset.
+ if (meOrientation == Horizontal)
+ {
+ mnVerticalOffset = round(-(nHeight
+ - mnRowCount*maPreviewSize.Height - (mnRowCount-1)*mnVerticalGap)
+ / 2);
+ mnHorizontalOffset = 0;
+ }
+ else
+ {
+ mnVerticalOffset = 0;
+ mnHorizontalOffset = round(-(nWidth
+ - mnColumnCount*maPreviewSize.Width
+ - (mnColumnCount-1)*mnHorizontalGap)
+ / 2);
+ }
+}
+
+
+
+
+void PresenterSlideSorter::Layout::SetupVisibleArea (void)
+{
+ geometry::RealPoint2D aPoint (GetLocalPosition(
+ geometry::RealPoint2D(maBoundingBox.X1, maBoundingBox.Y1)));
+ if (meOrientation == Horizontal)
+ {
+ mnFirstVisibleColumn = ::std::max(sal_Int32(0), GetColumn(aPoint));
+ mnFirstVisibleRow = 0;
+ }
+ else
+ {
+ mnFirstVisibleColumn = 0;
+ mnFirstVisibleRow = ::std::max(sal_Int32(0), GetRow(aPoint));
+ }
+
+ aPoint = GetLocalPosition(geometry::RealPoint2D( maBoundingBox.X2, maBoundingBox.Y2));
+ if (meOrientation == Horizontal)
+ {
+ mnLastVisibleColumn = GetColumn(aPoint, true);
+ mnLastVisibleRow = mnRowCount - 1;
+ }
+ else
+ {
+ mnLastVisibleColumn = mnColumnCount - 1;
+ mnLastVisibleRow = GetRow(aPoint, true);
+ }
+}
+
+
+
+
+bool PresenterSlideSorter::Layout::IsScrollBarNeeded (const sal_Int32 nSlideCount)
+{
+ geometry::RealPoint2D aBottomRight;
+ if (GetOrientation() == Layout::Vertical)
+ aBottomRight = GetPoint(
+ mnColumnCount * (GetRow(nSlideCount)+1) - 1, +1, +1);
+ else
+ aBottomRight = GetPoint(
+ mnRowCount * (GetColumn(nSlideCount)+1) - 1, +1, +1);
+ return aBottomRight.X > maBoundingBox.X2-maBoundingBox.X1
+ || aBottomRight.Y > maBoundingBox.Y2-maBoundingBox.Y1;
+}
+
+
+
+
+geometry::RealPoint2D PresenterSlideSorter::Layout::GetLocalPosition(
+ const geometry::RealPoint2D& rWindowPoint) const
+{
+ return css::geometry::RealPoint2D(
+ rWindowPoint.X - maBoundingBox.X1 + mnHorizontalOffset,
+ rWindowPoint.Y - maBoundingBox.Y1 + mnVerticalOffset);
+}
+
+
+
+
+geometry::RealPoint2D PresenterSlideSorter::Layout::GetWindowPosition(
+ const geometry::RealPoint2D& rLocalPoint) const
+{
+ return css::geometry::RealPoint2D(
+ rLocalPoint.X - mnHorizontalOffset + maBoundingBox.X1,
+ rLocalPoint.Y - mnVerticalOffset + maBoundingBox.Y1);
+}
+
+
+
+
+sal_Int32 PresenterSlideSorter::Layout::GetColumn (
+ const css::geometry::RealPoint2D& rLocalPoint,
+ const bool bReturnInvalidValue) const
+{
+ const sal_Int32 nColumn(floor(
+ (rLocalPoint.X + mnHorizontalGap/2.0) / (maPreviewSize.Width+mnHorizontalGap)));
+ if (bReturnInvalidValue
+ || (nColumn>=mnFirstVisibleColumn && nColumn<=mnLastVisibleColumn))
+ {
+ return nColumn;
+ }
+ else
+ return -1;
+}
+
+
+
+
+sal_Int32 PresenterSlideSorter::Layout::GetRow (
+ const css::geometry::RealPoint2D& rLocalPoint,
+ const bool bReturnInvalidValue) const
+{
+ const sal_Int32 nRow (floor(
+ (rLocalPoint.Y + mnVerticalGap/2.0) / (maPreviewSize.Height+mnVerticalGap)));
+ if (bReturnInvalidValue
+ || (nRow>=mnFirstVisibleRow && nRow<=mnLastVisibleRow))
+ {
+ return nRow;
+ }
+ else
+ return -1;
+}
+
+
+
+
+sal_Int32 PresenterSlideSorter::Layout::GetSlideIndexForPosition (
+ const css::geometry::RealPoint2D& rWindowPoint) const
+{
+ if ( ! PresenterGeometryHelper::IsInside(maBoundingBox, rWindowPoint))
+ return -1;
+
+ const css::geometry::RealPoint2D aLocalPosition (GetLocalPosition(rWindowPoint));
+ const sal_Int32 nColumn (GetColumn(aLocalPosition));
+ const sal_Int32 nRow (GetRow(aLocalPosition));
+
+ if (nColumn < 0 || nRow < 0)
+ return -1;
+ else
+ {
+ sal_Int32 nIndex (GetIndex(nRow, nColumn));
+ if (nIndex >= mnSlideCount)
+ return -1;
+ else
+ return nIndex;
+ }
+}
+
+
+
+
+geometry::RealPoint2D PresenterSlideSorter::Layout::GetPoint (
+ const sal_Int32 nSlideIndex,
+ const sal_Int32 nRelativeHorizontalPosition,
+ const sal_Int32 nRelativeVerticalPosition) const
+{
+ sal_Int32 nColumn (GetColumn(nSlideIndex));
+ sal_Int32 nRow (GetRow(nSlideIndex));
+
+ geometry::RealPoint2D aPosition (
+ mnHorizontalBorder + nColumn*(maPreviewSize.Width+mnHorizontalGap),
+ mnVerticalBorder + nRow*(maPreviewSize.Height+mnVerticalGap));
+
+ if (nRelativeHorizontalPosition >= 0)
+ {
+ if (nRelativeHorizontalPosition > 0)
+ aPosition.X += maPreviewSize.Width;
+ else
+ aPosition.X += maPreviewSize.Width / 2.0;
+ }
+ if (nRelativeVerticalPosition >= 0)
+ {
+ if (nRelativeVerticalPosition > 0)
+ aPosition.Y += maPreviewSize.Height;
+ else
+ aPosition.Y += maPreviewSize.Height / 2.0;
+ }
+
+ return aPosition;
+}
+
+
+
+
+awt::Rectangle PresenterSlideSorter::Layout::GetBoundingBox (const sal_Int32 nSlideIndex) const
+{
+ const geometry::RealPoint2D aWindowPosition(GetWindowPosition(GetPoint(nSlideIndex, -1, -1)));
+ return PresenterGeometryHelper::ConvertRectangle(
+ geometry::RealRectangle2D(
+ aWindowPosition.X,
+ aWindowPosition.Y,
+ aWindowPosition.X + maPreviewSize.Width,
+ aWindowPosition.Y + maPreviewSize.Height));
+}
+
+
+
+
+void PresenterSlideSorter::Layout::ForAllVisibleSlides (const ::boost::function<void(sal_Int32)>& rAction)
+{
+ for (sal_Int32 nRow=mnFirstVisibleRow; nRow<=mnLastVisibleRow; ++nRow)
+ {
+ for (sal_Int32 nColumn=mnFirstVisibleColumn; nColumn<=mnLastVisibleColumn; ++nColumn)
+ {
+ const sal_Int32 nSlideIndex (GetIndex(nRow, nColumn));
+ if (nSlideIndex >= mnSlideCount)
+ return;
+ rAction(nSlideIndex);
+ }
+ }
+}
+
+
+
+
+sal_Int32 PresenterSlideSorter::Layout::GetFirstVisibleSlideIndex (void) const
+{
+ return GetIndex(mnFirstVisibleRow, mnFirstVisibleColumn);
+}
+
+
+
+
+sal_Int32 PresenterSlideSorter::Layout::GetLastVisibleSlideIndex (void) const
+{
+ return ::std::min(
+ GetIndex(mnLastVisibleRow, mnLastVisibleColumn),
+ mnSlideCount);
+}
+
+
+
+
+bool PresenterSlideSorter::Layout::SetHorizontalOffset (const double nOffset)
+{
+ if (mnHorizontalOffset != nOffset)
+ {
+ mnHorizontalOffset = round(nOffset);
+ SetupVisibleArea();
+ UpdateScrollBars();
+ return true;
+ }
+ else
+ return false;
+}
+
+
+
+
+bool PresenterSlideSorter::Layout::SetVerticalOffset (const double nOffset)
+{
+ if (mnVerticalOffset != nOffset)
+ {
+ mnVerticalOffset = round(nOffset);
+ SetupVisibleArea();
+ UpdateScrollBars();
+ return true;
+ }
+ else
+ return false;
+}
+
+
+
+
+PresenterSlideSorter::Layout::Orientation
+ PresenterSlideSorter::Layout::GetOrientation (void) const
+{
+ return meOrientation;
+}
+
+
+
+
+void PresenterSlideSorter::Layout::UpdateScrollBars (void)
+{
+ sal_Int32 nTotalColumnCount (0);
+ sal_Int32 nTotalRowCount (0);
+ if (meOrientation == Horizontal)
+ {
+ nTotalColumnCount = sal_Int32(ceil(double(mnSlideCount) / double(mnRowCount)));
+ nTotalRowCount = mnRowCount;
+ }
+ else
+ {
+ nTotalColumnCount = mnColumnCount;
+ nTotalRowCount = sal_Int32(ceil(double(mnSlideCount) / double(mnColumnCount)));
+ }
+
+ if (mpHorizontalScrollBar.get() != NULL)
+ {
+ mpHorizontalScrollBar->SetTotalSize(
+ nTotalColumnCount * maPreviewSize.Width
+ + (nTotalColumnCount-1) * mnHorizontalGap
+ + 2*mnHorizontalBorder);
+ mpHorizontalScrollBar->SetThumbPosition(mnHorizontalOffset, false);
+ mpHorizontalScrollBar->SetThumbSize(maBoundingBox.X2 - maBoundingBox.X1 + 1);
+ mpHorizontalScrollBar->SetLineHeight(maPreviewSize.Width);
+ }
+ if (mpVerticalScrollBar.get() != NULL)
+ {
+ mpVerticalScrollBar->SetTotalSize(
+ nTotalRowCount * maPreviewSize.Height
+ + (nTotalRowCount-1) * mnVerticalGap
+ + 2*mnVerticalGap);
+ mpVerticalScrollBar->SetThumbPosition(mnVerticalOffset, false);
+ mpVerticalScrollBar->SetThumbSize(maBoundingBox.Y2 - maBoundingBox.Y1 + 1);
+ mpVerticalScrollBar->SetLineHeight(maPreviewSize.Height);
+ }
+
+
+
+ // No place yet for the vertical scroll bar.
+}
+
+
+
+
+sal_Int32 PresenterSlideSorter::Layout::GetIndex (
+ const sal_Int32 nRow,
+ const sal_Int32 nColumn) const
+{
+ if (meOrientation == Horizontal)
+ return nColumn * mnRowCount + nRow;
+ else
+ return nRow * mnColumnCount + nColumn;
+}
+
+
+
+
+sal_Int32 PresenterSlideSorter::Layout::GetRow (const sal_Int32 nSlideIndex) const
+{
+ if (meOrientation == Horizontal)
+ return nSlideIndex % mnRowCount;
+ else
+ return nSlideIndex / mnColumnCount;
+}
+
+
+
+
+sal_Int32 PresenterSlideSorter::Layout::GetColumn (const sal_Int32 nSlideIndex) const
+{
+ if (meOrientation == Horizontal)
+ return nSlideIndex / mnRowCount;
+ else
+ return nSlideIndex % mnColumnCount;
+}
+
+
+
+
+//===== PresenterSlideSorter::MouseOverManager ================================
+
+PresenterSlideSorter::MouseOverManager::MouseOverManager (
+ const Reference<container::XIndexAccess>& rxSlides,
+ const ::boost::shared_ptr<PresenterTheme>& rpTheme,
+ const Reference<awt::XWindow>& rxInvalidateTarget,
+ const ::boost::shared_ptr<PresenterPaintManager>& rpPaintManager)
+ : mxCanvas(),
+ mxSlides(rxSlides),
+ mpLeftLabelBitmap(),
+ mpCenterLabelBitmap(),
+ mpRightLabelBitmap(),
+ mpFont(),
+ mnSlideIndex(-1),
+ maSlideBoundingBox(),
+ mxInvalidateTarget(rxInvalidateTarget),
+ mpPaintManager(rpPaintManager)
+{
+ if (rpTheme.get()!=NULL)
+ {
+ ::boost::shared_ptr<PresenterBitmapContainer> pBitmaps (rpTheme->GetBitmapContainer());
+ if (pBitmaps.get() != NULL)
+ {
+ mpLeftLabelBitmap = pBitmaps->GetBitmap(A2S("LabelLeft"));
+ mpCenterLabelBitmap = pBitmaps->GetBitmap(A2S("LabelCenter"));
+ mpRightLabelBitmap = pBitmaps->GetBitmap(A2S("LabelRight"));
+ }
+
+ mpFont = rpTheme->GetFont(A2S("SlideSorterLabelFont"));
+ }
+}
+
+
+
+
+PresenterSlideSorter::MouseOverManager::~MouseOverManager (void)
+{
+}
+
+
+
+
+void PresenterSlideSorter::MouseOverManager::Paint (
+ const sal_Int32 nSlideIndex,
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const Reference<rendering::XPolyPolygon2D>& rxClip)
+{
+ if (nSlideIndex != mnSlideIndex)
+ return;
+
+ if (mxCanvas != rxCanvas)
+ SetCanvas(rxCanvas);
+ if (rxCanvas != NULL)
+ {
+ if ( ! mxBitmap.is())
+ mxBitmap = CreateBitmap(msText, maSlideBoundingBox.Width);
+ if (mxBitmap.is())
+ {
+ geometry::IntegerSize2D aSize (mxBitmap->getSize());
+ const double nXOffset (maSlideBoundingBox.X
+ + (maSlideBoundingBox.Width - aSize.Width) / 2.0);
+ const double nYOffset (maSlideBoundingBox.Y
+ + (maSlideBoundingBox.Height - aSize.Height) / 2.0);
+ rxCanvas->drawBitmap(
+ mxBitmap,
+ rendering::ViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ rxClip),
+ rendering::RenderState(
+ geometry::AffineMatrix2D(1,0,nXOffset, 0,1,nYOffset),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE));
+ }
+ }
+}
+
+
+
+
+void PresenterSlideSorter::MouseOverManager::SetCanvas (
+ const Reference<rendering::XCanvas>& rxCanvas)
+{
+ mxCanvas = rxCanvas;
+ if (mpFont.get() != NULL)
+ mpFont->PrepareFont(Reference<rendering::XCanvas>(mxCanvas, UNO_QUERY));
+}
+
+
+
+
+void PresenterSlideSorter::MouseOverManager::SetSlide (
+ const sal_Int32 nSlideIndex,
+ const awt::Rectangle& rBox)
+{
+ if (mnSlideIndex == nSlideIndex)
+ return;
+
+ mnSlideIndex = -1;
+ Invalidate();
+
+ maSlideBoundingBox = rBox;
+ mnSlideIndex = nSlideIndex;
+
+ if (nSlideIndex >= 0)
+ {
+ if (mxSlides.get() != NULL)
+ {
+ msText = OUString();
+
+ Reference<beans::XPropertySet> xSlideProperties(mxSlides->getByIndex(nSlideIndex), UNO_QUERY);
+ if (xSlideProperties.is())
+ xSlideProperties->getPropertyValue(A2S("LinkDisplayName")) >>= msText;
+
+ if (msText.getLength() == 0)
+ msText = A2S("Slide ") + OUString::valueOf(nSlideIndex + 1);
+ }
+ }
+ else
+ {
+ msText = OUString();
+ }
+ mxBitmap = NULL;
+
+ Invalidate();
+}
+
+
+
+
+Reference<rendering::XBitmap> PresenterSlideSorter::MouseOverManager::CreateBitmap (
+ const OUString& rsText,
+ const sal_Int32 nMaximalWidth) const
+{
+ if ( ! mxCanvas.is())
+ return NULL;
+
+ if (mpFont.get()==NULL || !mpFont->mxFont.is())
+ return NULL;
+
+ // Long text has to be shortened.
+ const OUString sText (GetFittingText(rsText, nMaximalWidth
+ - 2*gnHorizontalLabelBorder
+ - 2*gnHorizontalLabelPadding));
+
+ // Determine the size of the label. Its height is defined by the
+ // bitmaps that are used to paints its background. The width is defined
+ // by the text.
+ geometry::IntegerSize2D aLabelSize (CalculateLabelSize(sText));
+
+ // Create a new bitmap that will contain the complete label.
+ Reference<rendering::XBitmap> xBitmap (
+ mxCanvas->getDevice()->createCompatibleAlphaBitmap(aLabelSize));
+
+ if ( ! xBitmap.is())
+ return NULL;
+
+ Reference<rendering::XBitmapCanvas> xBitmapCanvas (xBitmap, UNO_QUERY);
+ if ( ! xBitmapCanvas.is())
+ return NULL;
+
+ // Paint the background.
+ PaintButtonBackground(xBitmapCanvas, aLabelSize);
+
+ // Paint the text.
+ if (sText.getLength() > 0)
+ {
+
+ const rendering::StringContext aContext (sText, 0, sText.getLength());
+ const Reference<rendering::XTextLayout> xLayout (mpFont->mxFont->createTextLayout(
+ aContext, rendering::TextDirection::WEAK_LEFT_TO_RIGHT,0));
+ const geometry::RealRectangle2D aTextBBox (xLayout->queryTextBounds());
+
+ const double nXOffset = (aLabelSize.Width - aTextBBox.X2 + aTextBBox.X1) / 2;
+ const double nYOffset = aLabelSize.Height
+ - (aLabelSize.Height - aTextBBox.Y2 + aTextBBox.Y1)/2 - aTextBBox.Y2;
+
+ const rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,nXOffset, 0,1,nYOffset),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, mpFont->mnColor);
+
+ xBitmapCanvas->drawText(
+ aContext,
+ mpFont->mxFont,
+ aViewState,
+ aRenderState,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT);
+ }
+
+ return xBitmap;
+}
+
+
+
+
+OUString PresenterSlideSorter::MouseOverManager::GetFittingText (
+ const OUString& rsText,
+ const double nMaximalWidth) const
+{
+ const double nTextWidth (
+ PresenterCanvasHelper::GetTextSize(mpFont->mxFont, rsText).Width);
+ if (nTextWidth > nMaximalWidth)
+ {
+ // Text is too wide. Shorten it by removing characters from the end
+ // and replacing them by ellipses.
+
+ // Guess a start value of the final string length.
+ double nBestWidth (0);
+ OUString sBestCandidate;
+ sal_Int32 nLength (round(rsText.getLength() * nMaximalWidth / nTextWidth));
+ const OUString sEllipses (A2S("..."));
+ while (true)
+ {
+ const OUString sCandidate (rsText.copy(0,nLength) + sEllipses);
+ const double nWidth (
+ PresenterCanvasHelper::GetTextSize(mpFont->mxFont, sCandidate).Width);
+ if (nWidth > nMaximalWidth)
+ {
+ // Candidate still too wide, shorten it.
+ nLength -= 1;
+ if (nLength <= 0)
+ break;
+ }
+ else if (nWidth < nMaximalWidth)
+ {
+ // Candidate short enough.
+ if (nWidth > nBestWidth)
+ {
+ // Best length so far.
+ sBestCandidate = sCandidate;
+ nBestWidth = nWidth;
+ nLength += 1;
+ if (nLength >= rsText.getLength())
+ break;
+ }
+ else
+ break;
+ }
+ else
+ {
+ // Candidate is exactly as long as it may be. Use it
+ // without looking any further.
+ sBestCandidate = sCandidate;
+ break;
+ }
+ }
+ return sBestCandidate;
+ }
+ else
+ return rsText;
+}
+
+
+
+
+geometry::IntegerSize2D PresenterSlideSorter::MouseOverManager::CalculateLabelSize (
+ const OUString& rsText) const
+{
+ // Height is specified by the label bitmaps.
+ sal_Int32 nHeight (32);
+ if (mpCenterLabelBitmap.get() != NULL)
+ {
+ Reference<rendering::XBitmap> xBitmap (mpCenterLabelBitmap->GetNormalBitmap());
+ if (xBitmap.is())
+ nHeight = xBitmap->getSize().Height;
+ }
+
+ // Width is specified by text width and maximal width.
+ const geometry::RealSize2D aTextSize (
+ PresenterCanvasHelper::GetTextSize(mpFont->mxFont, rsText));
+
+ const sal_Int32 nWidth (round(aTextSize.Width + 2*gnHorizontalLabelPadding));
+
+ return geometry::IntegerSize2D(nWidth, nHeight);
+}
+
+
+
+
+void PresenterSlideSorter::MouseOverManager::PaintButtonBackground (
+ const Reference<rendering::XBitmapCanvas>& rxCanvas,
+ const geometry::IntegerSize2D& rSize) const
+{
+ // Get the bitmaps for painting the label background.
+ Reference<rendering::XBitmap> xLeftLabelBitmap;
+ if (mpLeftLabelBitmap.get() != NULL)
+ xLeftLabelBitmap = mpLeftLabelBitmap->GetNormalBitmap();
+
+ Reference<rendering::XBitmap> xCenterLabelBitmap;
+ if (mpCenterLabelBitmap.get() != NULL)
+ xCenterLabelBitmap = mpCenterLabelBitmap->GetNormalBitmap();
+
+ Reference<rendering::XBitmap> xRightLabelBitmap;
+ if (mpRightLabelBitmap.get() != NULL)
+ xRightLabelBitmap = mpRightLabelBitmap->GetNormalBitmap();
+
+ PresenterUIPainter::PaintHorizontalBitmapComposite (
+ Reference<rendering::XCanvas>(rxCanvas, UNO_QUERY),
+ awt::Rectangle(0,0, rSize.Width,rSize.Height),
+ awt::Rectangle(0,0, rSize.Width,rSize.Height),
+ xLeftLabelBitmap,
+ xCenterLabelBitmap,
+ xRightLabelBitmap);
+}
+
+
+
+
+void PresenterSlideSorter::MouseOverManager::Invalidate (void)
+{
+ if (mpPaintManager.get() != NULL)
+ mpPaintManager->Invalidate(mxInvalidateTarget, maSlideBoundingBox, true);
+}
+
+
+
+
+//===== PresenterSlideSorter::CurrentSlideFrameRenderer =======================
+
+PresenterSlideSorter::CurrentSlideFrameRenderer::CurrentSlideFrameRenderer (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas)
+ : mpTopLeft(),
+ mpTop(),
+ mpTopRight(),
+ mpLeft(),
+ mpRight(),
+ mpBottomLeft(),
+ mpBottom(),
+ mpBottomRight(),
+ mnTopFrameSize(0),
+ mnLeftFrameSize(0),
+ mnRightFrameSize(0),
+ mnBottomFrameSize(0)
+{
+ PresenterConfigurationAccess aConfiguration (
+ rxContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_ONLY);
+ Reference<container::XHierarchicalNameAccess> xBitmaps (
+ aConfiguration.GetConfigurationNode(
+ A2S("PresenterScreenSettings/SlideSorter/CurrentSlideBorderBitmaps")),
+ UNO_QUERY);
+ if ( ! xBitmaps.is())
+ return;
+
+ PresenterBitmapContainer aContainer (
+ A2S("PresenterScreenSettings/SlideSorter/CurrentSlideBorderBitmaps"),
+ ::boost::shared_ptr<PresenterBitmapContainer>(),
+ rxContext,
+ rxCanvas,
+ PresenterComponent::GetBasePath(rxContext));
+
+ mpTopLeft = aContainer.GetBitmap(A2S("TopLeft"));
+ mpTop = aContainer.GetBitmap(A2S("Top"));
+ mpTopRight = aContainer.GetBitmap(A2S("TopRight"));
+ mpLeft = aContainer.GetBitmap(A2S("Left"));
+ mpRight = aContainer.GetBitmap(A2S("Right"));
+ mpBottomLeft = aContainer.GetBitmap(A2S("BottomLeft"));
+ mpBottom = aContainer.GetBitmap(A2S("Bottom"));
+ mpBottomRight = aContainer.GetBitmap(A2S("BottomRight"));
+
+ // Determine size of frame.
+ if (mpTop.get() != NULL)
+ mnTopFrameSize = mpTop->mnHeight;
+ if (mpLeft.get() != NULL)
+ mnLeftFrameSize = mpLeft->mnWidth;
+ if (mpRight.get() != NULL)
+ mnRightFrameSize = mpRight->mnWidth;
+ if (mpBottom.get() != NULL)
+ mnBottomFrameSize = mpBottom->mnHeight;
+
+ if (mpTopLeft.get() != NULL)
+ {
+ mnTopFrameSize = ::std::max(mnTopFrameSize, mpTopLeft->mnHeight);
+ mnLeftFrameSize = ::std::max(mnLeftFrameSize, mpTopLeft->mnWidth);
+ }
+ if (mpTopRight.get() != NULL)
+ {
+ mnTopFrameSize = ::std::max(mnTopFrameSize, mpTopRight->mnHeight);
+ mnRightFrameSize = ::std::max(mnRightFrameSize, mpTopRight->mnWidth);
+ }
+ if (mpBottomLeft.get() != NULL)
+ {
+ mnLeftFrameSize = ::std::max(mnLeftFrameSize, mpBottomLeft->mnWidth);
+ mnBottomFrameSize = ::std::max(mnBottomFrameSize, mpBottomLeft->mnHeight);
+ }
+ if (mpBottomRight.get() != NULL)
+ {
+ mnRightFrameSize = ::std::max(mnRightFrameSize, mpBottomRight->mnWidth);
+ mnBottomFrameSize = ::std::max(mnBottomFrameSize, mpBottomRight->mnHeight);
+ }
+}
+
+
+
+
+PresenterSlideSorter::CurrentSlideFrameRenderer::~CurrentSlideFrameRenderer (void)
+{
+}
+
+
+
+
+void PresenterSlideSorter::CurrentSlideFrameRenderer::PaintCurrentSlideFrame (
+ const awt::Rectangle& rSlideBoundingBox,
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const geometry::RealRectangle2D& rClipBox)
+{
+ if ( ! rxCanvas.is())
+ return;
+
+ const Reference<rendering::XPolyPolygon2D> xClip (
+ PresenterGeometryHelper::CreatePolygon(rClipBox, rxCanvas->getDevice()));
+
+ if (mpTop.get() != NULL)
+ {
+ PaintBitmapTiled(
+ mpTop->GetNormalBitmap(),
+ rxCanvas,
+ rClipBox,
+ rSlideBoundingBox.X,
+ rSlideBoundingBox.Y - mpTop->mnHeight,
+ rSlideBoundingBox.Width,
+ mpTop->mnHeight);
+ }
+ if (mpLeft.get() != NULL)
+ {
+ PaintBitmapTiled(
+ mpLeft->GetNormalBitmap(),
+ rxCanvas,
+ rClipBox,
+ rSlideBoundingBox.X - mpLeft->mnWidth,
+ rSlideBoundingBox.Y,
+ mpLeft->mnWidth,
+ rSlideBoundingBox.Height);
+ }
+ if (mpRight.get() != NULL)
+ {
+ PaintBitmapTiled(
+ mpRight->GetNormalBitmap(),
+ rxCanvas,
+ rClipBox,
+ rSlideBoundingBox.X + rSlideBoundingBox.Width,
+ rSlideBoundingBox.Y,
+ mpRight->mnWidth,
+ rSlideBoundingBox.Height);
+ }
+ if (mpBottom.get() != NULL)
+ {
+ PaintBitmapTiled(
+ mpBottom->GetNormalBitmap(),
+ rxCanvas,
+ rClipBox,
+ rSlideBoundingBox.X,
+ rSlideBoundingBox.Y + rSlideBoundingBox.Height,
+ rSlideBoundingBox.Width,
+ mpBottom->mnHeight);
+ }
+ if (mpTopLeft.get() != NULL)
+ {
+ PaintBitmapOnce(
+ mpTopLeft->GetNormalBitmap(),
+ rxCanvas,
+ xClip,
+ rSlideBoundingBox.X - mpTopLeft->mnWidth,
+ rSlideBoundingBox.Y - mpTopLeft->mnHeight);
+ }
+ if (mpTopRight.get() != NULL)
+ {
+ PaintBitmapOnce(
+ mpTopRight->GetNormalBitmap(),
+ rxCanvas,
+ xClip,
+ rSlideBoundingBox.X + rSlideBoundingBox.Width,
+ rSlideBoundingBox.Y - mpTopLeft->mnHeight);
+ }
+ if (mpBottomLeft.get() != NULL)
+ {
+ PaintBitmapOnce(
+ mpBottomLeft->GetNormalBitmap(),
+ rxCanvas,
+ xClip,
+ rSlideBoundingBox.X - mpBottomLeft->mnWidth,
+ rSlideBoundingBox.Y + rSlideBoundingBox.Height);
+ }
+ if (mpBottomRight.get() != NULL)
+ {
+ PaintBitmapOnce(
+ mpBottomRight->GetNormalBitmap(),
+ rxCanvas,
+ xClip,
+ rSlideBoundingBox.X + rSlideBoundingBox.Width,
+ rSlideBoundingBox.Y + rSlideBoundingBox.Height);
+ }
+}
+
+
+
+
+awt::Rectangle PresenterSlideSorter::CurrentSlideFrameRenderer::GetBoundingBox (
+ const awt::Rectangle& rSlideBoundingBox)
+{
+ return awt::Rectangle(
+ rSlideBoundingBox.X - mnLeftFrameSize,
+ rSlideBoundingBox.Y - mnTopFrameSize,
+ rSlideBoundingBox.Width + mnLeftFrameSize + mnRightFrameSize,
+ rSlideBoundingBox.Height + mnTopFrameSize + mnBottomFrameSize);
+}
+
+
+
+
+void PresenterSlideSorter::CurrentSlideFrameRenderer::PaintBitmapOnce(
+ const css::uno::Reference<css::rendering::XBitmap>& rxBitmap,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const Reference<rendering::XPolyPolygon2D>& rxClip,
+ const double nX,
+ const double nY)
+{
+ OSL_ASSERT(rxCanvas.is());
+ if ( ! rxBitmap.is())
+ return;
+
+ const rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ rxClip);
+
+ const rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(
+ 1, 0, nX,
+ 0, 1, nY),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ rxCanvas->drawBitmap(
+ rxBitmap,
+ aViewState,
+ aRenderState);
+}
+
+
+
+
+void PresenterSlideSorter::CurrentSlideFrameRenderer::PaintBitmapTiled(
+ const css::uno::Reference<css::rendering::XBitmap>& rxBitmap,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const geometry::RealRectangle2D& rClipBox,
+ const double nX0,
+ const double nY0,
+ const double nWidth,
+ const double nHeight)
+{
+ OSL_ASSERT(rxCanvas.is());
+ if ( ! rxBitmap.is())
+ return;
+
+ geometry::IntegerSize2D aSize (rxBitmap->getSize());
+
+ const rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ PresenterGeometryHelper::CreatePolygon(
+ PresenterGeometryHelper::Intersection(
+ rClipBox,
+ geometry::RealRectangle2D(nX0,nY0,nX0+nWidth,nY0+nHeight)),
+ rxCanvas->getDevice()));
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(
+ 1, 0, nX0,
+ 0, 1, nY0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ const double nX1 = nX0 + nWidth;
+ const double nY1 = nY0 + nHeight;
+ for (double nY=nY0; nY<nY1; nY+=aSize.Height)
+ for (double nX=nX0; nX<nX1; nX+=aSize.Width)
+ {
+ aRenderState.AffineTransform.m02 = nX;
+ aRenderState.AffineTransform.m12 = nY;
+ rxCanvas->drawBitmap(
+ rxBitmap,
+ aViewState,
+ aRenderState);
+ }
+}
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterSlideSorter.hxx b/sdext/source/presenter/PresenterSlideSorter.hxx
new file mode 100644
index 000000000000..e3e6ebe8c031
--- /dev/null
+++ b/sdext/source/presenter/PresenterSlideSorter.hxx
@@ -0,0 +1,236 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_SLIDE_SORTER_HXX
+#define SDEXT_PRESENTER_PRESENTER_SLIDE_SORTER_HXX
+
+#include "PresenterController.hxx"
+#include "PresenterPaneContainer.hxx"
+#include "PresenterViewFactory.hxx"
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase8.hxx>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#include <com/sun/star/drawing/XDrawView.hpp>
+#include <com/sun/star/drawing/XSlidePreviewCache.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/drawing/framework/XResourceId.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <com/sun/star/geometry/RealRectangle2D.hpp>
+#include <com/sun/star/rendering/XPolyPolygon2D.hpp>
+#include <com/sun/star/rendering/XSprite.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace {
+ typedef cppu::WeakComponentImplHelper8<
+ css::drawing::framework::XView,
+ css::awt::XWindowListener,
+ css::awt::XPaintListener,
+ css::beans::XPropertyChangeListener,
+ css::drawing::XSlidePreviewCacheListener,
+ css::awt::XMouseListener,
+ css::awt::XMouseMotionListener,
+ css::drawing::XDrawView
+ > PresenterSlideSorterInterfaceBase;
+}
+
+namespace sdext { namespace presenter {
+
+class PresenterButton;
+class PresenterScrollBar;
+
+/** A simple slide sorter for the presenter screen. It uses a preview cache
+ to create the slide previews. Painting is done via a canvas.
+*/
+class PresenterSlideSorter
+ : private ::cppu::BaseMutex,
+ public PresenterSlideSorterInterfaceBase,
+ public CachablePresenterView
+{
+public:
+ PresenterSlideSorter (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterSlideSorter (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ void SetActiveState (const bool bIsActive);
+
+
+ // lang::XEventListener
+
+ virtual void SAL_CALL
+ disposing (const css::lang::EventObject& rEventObject)
+ throw (css::uno::RuntimeException);
+
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseListener
+
+ virtual void SAL_CALL mousePressed (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseExited (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+
+ // XMouseMotionListener
+
+ virtual void SAL_CALL mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XResourceId
+
+ virtual css::uno::Reference<css::drawing::framework::XResourceId> SAL_CALL getResourceId (void)
+ throw (css::uno::RuntimeException);
+
+ virtual sal_Bool SAL_CALL isAnchorOnly (void)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+ // XPropertyChangeListener
+
+ virtual void SAL_CALL propertyChange (
+ const css::beans::PropertyChangeEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+
+ // XSlidePreviewCacheListener
+
+ virtual void SAL_CALL notifyPreviewCreation (
+ sal_Int32 nSlideIndex)
+ throw(css::uno::RuntimeException);
+
+
+ // XDrawView
+
+ virtual void SAL_CALL setCurrentPage (
+ const css::uno::Reference<css::drawing::XDrawPage>& rxSlide)
+ throw (css::uno::RuntimeException);
+
+ virtual css::uno::Reference<css::drawing::XDrawPage> SAL_CALL getCurrentPage (void)
+ throw (css::uno::RuntimeException);
+
+private:
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxViewId;
+ css::uno::Reference<css::drawing::framework::XPane> mxPane;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ css::uno::Reference<css::awt::XWindow> mxWindow;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::presentation::XSlideShowController> mxSlideShowController;
+ css::uno::Reference<css::drawing::XSlidePreviewCache> mxPreviewCache;
+ bool mbIsPaintPending;
+ bool mbIsLayoutPending;
+ class Layout;
+ ::boost::shared_ptr<Layout> mpLayout;
+ ::rtl::Reference<PresenterScrollBar> mpHorizontalScrollBar;
+ ::rtl::Reference<PresenterScrollBar> mpVerticalScrollBar;
+ ::rtl::Reference<PresenterButton> mpCloseButton;
+ class MouseOverManager;
+ ::boost::scoped_ptr<MouseOverManager> mpMouseOverManager;
+ sal_Int32 mnSlideIndexMousePressed;
+ sal_Int32 mnCurrentSlideIndex;
+ sal_Int32 mnSeparatorY;
+ css::util::Color maSeparatorColor;
+ css::awt::Point maCloseButtonCenter;
+ css::awt::Rectangle maCurrentSlideFrameBoundingBox;
+ class CurrentSlideFrameRenderer;
+ ::boost::shared_ptr<CurrentSlideFrameRenderer> mpCurrentSlideFrameRenderer;
+ css::uno::Reference<css::rendering::XPolyPolygon2D> mxPreviewFrame;
+
+ void UpdateLayout (void);
+ css::geometry::RealRectangle2D PlaceScrollBars (
+ const css::geometry::RealRectangle2D& rUpperBox);
+ void PlaceCloseButton (
+ const PresenterPaneContainer::SharedPaneDescriptor& rpPane,
+ const css::awt::Rectangle& rCenterBox,
+ const sal_Int32 nLeftFrameWidth);
+ void ClearBackground (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRedrawArea);
+ double GetSlideAspectRatio (void) const;
+ css::uno::Reference<css::rendering::XBitmap> GetPreview (const sal_Int32 nSlideIndex);
+ void PaintPreview (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rUpdateBox,
+ const sal_Int32 nSlideIndex);
+ void Paint (const css::awt::Rectangle& rUpdateBox);
+ void SetHorizontalOffset (const double nXOffset);
+ void SetVerticalOffset (const double nYOffset);
+ void GotoSlide (const sal_Int32 nSlideIndex);
+ bool ProvideCanvas (void);
+
+ /** This method throws a DisposedException when the object has already been
+ disposed.
+ */
+ void ThrowIfDisposed (void)
+ throw (css::lang::DisposedException);
+};
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterSprite.cxx b/sdext/source/presenter/PresenterSprite.cxx
new file mode 100644
index 000000000000..467fb5830dd5
--- /dev/null
+++ b/sdext/source/presenter/PresenterSprite.cxx
@@ -0,0 +1,292 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterSprite.hxx"
+
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/RenderState.hpp>
+#include <com/sun/star/rendering/ViewState.hpp>
+
+using namespace ::com::sun::star;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::UNO_QUERY;
+
+namespace sdext { namespace presenter {
+
+PresenterSprite::PresenterSprite (void)
+ : mxSpriteFactory(),
+ mxSprite(),
+ maSize(0,0),
+ maLocation(0,0),
+ maTransform(1,0,0, 0,1,0),
+ mbIsVisible(false),
+ mnPriority(0),
+ mnAlpha(1.0)
+{
+}
+
+
+
+
+PresenterSprite::~PresenterSprite (void)
+{
+ if (mxSprite.is())
+ {
+ mxSprite->hide();
+ Reference<lang::XComponent> xComponent (mxSprite, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+ mxSprite = NULL;
+ }
+}
+
+
+
+
+void PresenterSprite::SetFactory (
+ const ::css::uno::Reference<css::rendering::XSpriteCanvas>& rxSpriteFactory)
+{
+ if (mxSpriteFactory != rxSpriteFactory)
+ {
+ DisposeSprite();
+ mxSpriteFactory = rxSpriteFactory;
+ if (mbIsVisible)
+ PresenterSprite();
+ }
+}
+
+
+
+
+::css::uno::Reference<css::rendering::XCanvas> PresenterSprite::GetCanvas (void)
+{
+ ProvideSprite();
+ if (mxSprite.is())
+ return mxSprite->getContentCanvas();
+ else
+ return NULL;
+}
+
+
+
+
+void PresenterSprite::Show (void)
+{
+ mbIsVisible = true;
+ if (mxSprite.is())
+ mxSprite->show();
+ else
+ ProvideSprite();
+}
+
+
+
+
+void PresenterSprite::Hide (void)
+{
+ mbIsVisible = false;
+ if (mxSprite.is())
+ mxSprite->hide();
+}
+
+
+
+
+bool PresenterSprite::IsVisible (void) const
+{
+ return mbIsVisible;
+}
+
+
+
+
+void PresenterSprite::SetPriority (const double nPriority)
+{
+ mnPriority = nPriority;
+ if (mxSprite.is())
+ mxSprite->setPriority(mnPriority);
+}
+
+
+
+
+double PresenterSprite::GetPriority (void) const
+{
+ return mnPriority;
+}
+
+
+
+
+void PresenterSprite::Resize (const css::geometry::RealSize2D& rSize)
+{
+ maSize = rSize;
+ if (mxSprite.is())
+ DisposeSprite();
+ if (mbIsVisible)
+ ProvideSprite();
+}
+
+
+
+
+css::geometry::RealSize2D PresenterSprite::GetSize (void) const
+{
+ return maSize;
+}
+
+
+
+
+void PresenterSprite::MoveTo (const css::geometry::RealPoint2D& rLocation)
+{
+ maLocation = rLocation;
+ if (mxSprite.is())
+ mxSprite->move(
+ maLocation,
+ rendering::ViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL),
+ rendering::RenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ uno::Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE)
+ );
+}
+
+
+
+
+css::geometry::RealPoint2D PresenterSprite::GetLocation (void) const
+{
+ return maLocation;
+}
+
+
+
+
+void PresenterSprite::Transform (const css::geometry::AffineMatrix2D& rTransform)
+{
+ maTransform = rTransform;
+ if (mxSprite.is())
+ mxSprite->transform(maTransform);
+}
+
+
+
+
+css::geometry::AffineMatrix2D PresenterSprite::GetTransform (void) const
+{
+ return maTransform;
+}
+
+
+
+
+void PresenterSprite::SetAlpha (const double nAlpha)
+{
+ mnAlpha = nAlpha;
+ if (mxSprite.is())
+ mxSprite->setAlpha(mnAlpha);
+}
+
+
+
+
+double PresenterSprite::GetAlpha (void) const
+{
+ return mnAlpha;
+}
+
+
+
+
+void PresenterSprite::Update (void)
+{
+ if (mxSpriteFactory.is())
+ mxSpriteFactory->updateScreen(sal_False);
+}
+
+
+
+
+void PresenterSprite::ProvideSprite (void)
+{
+ if ( ! mxSprite.is()
+ && mxSpriteFactory.is()
+ && maSize.Width>0
+ && maSize.Height>0)
+ {
+ mxSprite = mxSpriteFactory->createCustomSprite(maSize);
+ if (mxSprite.is())
+ {
+ mxSprite->transform(maTransform);
+ mxSprite->move(maLocation,
+ rendering::ViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL),
+ rendering::RenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ uno::Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE)
+ );
+ mxSprite->setAlpha(mnAlpha);
+ mxSprite->setPriority(mnPriority);
+ if (mbIsVisible)
+ mxSprite->show();
+ }
+ }
+}
+
+
+
+
+void PresenterSprite::DisposeSprite (void)
+{
+ if (mxSprite.is())
+ {
+ mxSprite->hide();
+ Reference<lang::XComponent> xComponent (mxSprite, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+ mxSprite = NULL;
+ }
+}
+
+
+
+
+} } //end of namespace sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterSprite.hxx b/sdext/source/presenter/PresenterSprite.hxx
new file mode 100644
index 000000000000..e6be8e46ebad
--- /dev/null
+++ b/sdext/source/presenter/PresenterSprite.hxx
@@ -0,0 +1,102 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_SPRITE_HXX
+#define SDEXT_PRESENTER_PRESENTER_SPRITE_HXX
+
+#include <com/sun/star/rendering/XCustomSprite.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+#include <boost/noncopyable.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+/** A wrapper around a com::sun::star::rendering::XCustomSprite that allows
+ not only setting values like size, location, and transformation but also
+ provides read access to them.
+ It also handles the showing and hiding of a sprite. This includes not
+ to show the sprite when its size is not yet defined (results in a crash)
+ and hiding a sprite before disposing it (results in zombie sprites.)
+*/
+class PresenterSprite
+ : private ::boost::noncopyable
+{
+public:
+ PresenterSprite (void);
+ virtual ~PresenterSprite (void);
+
+ /** The given sprite canvas is used as factory to create the sprite that
+ is wrapped by objects of this class.
+ It is also used to call updateScreen() at (wrapped by the Update() method).
+ */
+ void SetFactory (
+ const ::css::uno::Reference<css::rendering::XSpriteCanvas>& rxSpriteFactory);
+
+ ::css::uno::Reference<css::rendering::XCanvas> GetCanvas (void);
+
+ void Show (void);
+ void Hide (void);
+ bool IsVisible (void) const;
+
+ void SetPriority (const double nPriority);
+ double GetPriority (void) const;
+
+ void Resize (const css::geometry::RealSize2D& rSize);
+ css::geometry::RealSize2D GetSize (void) const;
+
+ void MoveTo (const css::geometry::RealPoint2D& rLocation);
+ css::geometry::RealPoint2D GetLocation (void) const;
+
+ void Transform (const css::geometry::AffineMatrix2D& rTransform);
+ css::geometry::AffineMatrix2D GetTransform (void) const;
+
+ void SetAlpha (const double nAlpha);
+ double GetAlpha (void) const;
+
+ void Update (void);
+
+private:
+ ::css::uno::Reference<css::rendering::XSpriteCanvas> mxSpriteFactory;
+ ::css::uno::Reference<css::rendering::XCustomSprite> mxSprite;
+ css::geometry::RealSize2D maSize;
+ css::geometry::RealPoint2D maLocation;
+ css::geometry::AffineMatrix2D maTransform;
+ bool mbIsVisible;
+ double mnPriority;
+ double mnAlpha;
+
+ void ProvideSprite (void);
+ void DisposeSprite (void);
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterSpritePane.cxx b/sdext/source/presenter/PresenterSpritePane.cxx
new file mode 100644
index 000000000000..ae4866f58879
--- /dev/null
+++ b/sdext/source/presenter/PresenterSpritePane.cxx
@@ -0,0 +1,263 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterSpritePane.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include <com/sun/star/lang/XMultiComponentFactory.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <osl/mutex.hxx>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+namespace sdext { namespace presenter {
+
+//===== PresenterSpritePane =========================================================
+
+PresenterSpritePane::PresenterSpritePane (const Reference<XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterPaneBase(rxContext, rpPresenterController),
+ mxParentWindow(),
+ mxParentCanvas(),
+ mpSprite(new PresenterSprite())
+{
+ Reference<lang::XMultiComponentFactory> xFactory (
+ mxComponentContext->getServiceManager(), UNO_QUERY_THROW);
+ mxPresenterHelper = Reference<drawing::XPresenterHelper>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.PresenterHelper")),
+ mxComponentContext),
+ UNO_QUERY_THROW);
+}
+
+
+
+
+PresenterSpritePane::~PresenterSpritePane (void)
+{
+}
+
+
+
+
+void PresenterSpritePane::disposing (void)
+{
+ mpSprite->SetFactory(NULL);
+ mxParentWindow = NULL;
+ mxParentCanvas = NULL;
+ PresenterPaneBase::disposing();
+}
+
+
+
+
+//----- XPane -----------------------------------------------------------------
+
+Reference<awt::XWindow> SAL_CALL PresenterSpritePane::getWindow (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ return mxContentWindow;
+}
+
+
+
+
+Reference<rendering::XCanvas> SAL_CALL PresenterSpritePane::getCanvas (void)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if ( ! mxContentCanvas.is())
+ UpdateCanvases();
+
+ return mxContentCanvas;
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterSpritePane::windowResized (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ PresenterPaneBase::windowResized(rEvent);
+
+ mpSprite->Resize(geometry::RealSize2D(rEvent.Width, rEvent.Height));
+ LayoutContextWindow();
+ UpdateCanvases();
+}
+
+
+
+
+
+void SAL_CALL PresenterSpritePane::windowMoved (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ PresenterPaneBase::windowMoved(rEvent);
+
+ awt::Rectangle aBox (
+ mxPresenterHelper->getWindowExtentsRelative(mxBorderWindow, mxParentWindow));
+ mpSprite->MoveTo(geometry::RealPoint2D(aBox.X, aBox.Y));
+ mpSprite->Update();
+}
+
+
+
+
+void SAL_CALL PresenterSpritePane::windowShown (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ PresenterPaneBase::windowShown(rEvent);
+
+ mpSprite->Show();
+ ToTop();
+
+ if (mxContentWindow.is())
+ {
+ LayoutContextWindow();
+ mxContentWindow->setVisible(sal_True);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterSpritePane::windowHidden (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ PresenterPaneBase::windowHidden(rEvent);
+
+ mpSprite->Hide();
+ if (mxContentWindow.is())
+ mxContentWindow->setVisible(sal_False);
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterSpritePane::windowPaint (const awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ ThrowIfDisposed();
+
+ /*
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxParentCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+ */
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+
+::boost::shared_ptr<PresenterSprite> PresenterSpritePane::GetSprite (void)
+{
+ return mpSprite;
+}
+
+
+
+
+void PresenterSpritePane::ShowTransparentBorder (void)
+{
+}
+
+
+
+
+void PresenterSpritePane::UpdateCanvases (void)
+{
+ Reference<XComponent> xContentCanvasComponent (mxContentCanvas, UNO_QUERY);
+ if (xContentCanvasComponent.is())
+ {
+ if (xContentCanvasComponent.is())
+ xContentCanvasComponent->dispose();
+ }
+
+ // The border canvas is the content canvas of the sprite.
+ mxBorderCanvas = mpSprite->GetCanvas();
+
+ // The content canvas is a wrapper of the border canvas.
+ if (mxBorderCanvas.is())
+ mxContentCanvas = mxPresenterHelper->createSharedCanvas(
+ mxParentCanvas,
+ mxParentWindow,
+ mxBorderCanvas,
+ mxBorderWindow,
+ mxContentWindow);
+
+ const awt::Rectangle aWindowBox (mxBorderWindow->getPosSize());
+ PaintBorder(awt::Rectangle(0,0,aWindowBox.Width,aWindowBox.Height));
+}
+
+
+
+
+void PresenterSpritePane::CreateCanvases (
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const css::uno::Reference<css::rendering::XSpriteCanvas>& rxParentCanvas)
+{
+ OSL_ASSERT(!mxParentWindow.is() || mxParentWindow==rxParentWindow);
+ OSL_ASSERT(!mxParentCanvas.is() || mxParentCanvas==rxParentCanvas);
+ mxParentWindow = rxParentWindow;
+ mxParentCanvas = rxParentCanvas;
+
+ mpSprite->SetFactory(mxParentCanvas);
+ if (mxBorderWindow.is())
+ {
+ const awt::Rectangle aBorderBox (mxBorderWindow->getPosSize());
+ mpSprite->Resize(geometry::RealSize2D(aBorderBox.Width, aBorderBox.Height));
+ }
+
+ UpdateCanvases();
+}
+
+
+
+
+} } // end of namespace ::sd::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterSpritePane.hxx b/sdext/source/presenter/PresenterSpritePane.hxx
new file mode 100644
index 000000000000..468f531f5e87
--- /dev/null
+++ b/sdext/source/presenter/PresenterSpritePane.hxx
@@ -0,0 +1,129 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SD_PRESENTER_PRESENTER_SPRITE_PANE_HXX
+#define SD_PRESENTER_PRESENTER_SPRITE_PANE_HXX
+
+#include "PresenterPaneBase.hxx"
+#include "PresenterSprite.hxx"
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/drawing/framework/XPaneBorderPainter.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase1.hxx>
+#include <rtl/ref.hxx>
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+
+namespace sdext { namespace presenter {
+
+/** Use a sprite to display the contents and the border of a pane. Windows
+ are still used to define the locations and sizes of both the border and
+ the pane content. Note that every resize results in a disposed canvas.
+ Therefore call getCanvas in every repaint or at least after every resize.
+*/
+class PresenterSpritePane : public PresenterPaneBase
+{
+public:
+ PresenterSpritePane (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterSpritePane (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ using css::lang::XEventListener::disposing;
+
+ ::boost::shared_ptr<PresenterSprite> GetSprite (void);
+
+ static ::rtl::OUString getImplementationName_static (void);
+ static css::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static (void);
+ static css::uno::Reference<css::uno::XInterface> Create(
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext)
+ SAL_THROW((css::uno::Exception));
+
+ void ShowTransparentBorder (void);
+
+ // XPane
+
+ virtual css::uno::Reference<css::awt::XWindow> SAL_CALL getWindow (void)
+ throw (css::uno::RuntimeException);
+
+ virtual css::uno::Reference<css::rendering::XCanvas> SAL_CALL getCanvas (void)
+ throw (css::uno::RuntimeException);
+
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+private:
+ css::uno::Reference<css::awt::XWindow> mxParentWindow;
+ css::uno::Reference<css::rendering::XSpriteCanvas> mxParentCanvas;
+ ::boost::shared_ptr<PresenterSprite> mpSprite;
+
+ virtual void CreateCanvases (
+ const css::uno::Reference<css::awt::XWindow>& rxParentWindow,
+ const css::uno::Reference<css::rendering::XSpriteCanvas>& rxParentCanvas);
+ void UpdateCanvases (void);
+};
+
+} } // end of namespace ::sd::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterTextView.cxx b/sdext/source/presenter/PresenterTextView.cxx
new file mode 100644
index 000000000000..1fe02450cf9b
--- /dev/null
+++ b/sdext/source/presenter/PresenterTextView.cxx
@@ -0,0 +1,1594 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "precompiled_sdext.hxx"
+
+#include "PresenterTextView.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterTimer.hxx"
+
+#include <cmath>
+
+#include <com/sun/star/accessibility/AccessibleTextType.hpp>
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#include <com/sun/star/i18n/CharType.hpp>
+#include <com/sun/star/i18n/CharacterIteratorMode.hpp>
+#include <com/sun/star/i18n/CTLScriptType.hpp>
+#include <com/sun/star/i18n/ScriptDirection.hpp>
+#include <com/sun/star/i18n/WordType.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+#include <com/sun/star/text/WritingMode2.hpp>
+#include <boost/bind.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::accessibility;
+using namespace ::com::sun::star::uno;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+const static sal_Int64 CaretBlinkIntervall = 500 * 1000 * 1000;
+
+//#define SHOW_CHARACTER_BOXES
+
+namespace {
+ sal_Int32 Signum (const sal_Int32 nValue)
+ {
+ if (nValue < 0)
+ return -1;
+ else if (nValue > 0)
+ return +1;
+ else
+ return 0;
+ }
+}
+
+namespace sdext { namespace presenter {
+
+
+//===== PresenterTextView =====================================================
+
+PresenterTextView::PresenterTextView (
+ const Reference<XComponentContext>& rxContext,
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const ::boost::function<void(const ::css::awt::Rectangle&)>& rInvalidator)
+ : mxCanvas(rxCanvas),
+ mbDoOuput(true),
+ mxBreakIterator(),
+ mxScriptTypeDetector(),
+ maLocation(0,0),
+ maSize(0,0),
+ mpFont(),
+ maParagraphs(),
+ mpCaret(new PresenterTextCaret(
+ ::boost::bind(&PresenterTextView::GetCaretBounds, this, _1, _2),
+ rInvalidator)),
+ mnLeftOffset(0),
+ mnTopOffset(0),
+ maInvalidator(rInvalidator),
+ mbIsFormatPending(false),
+ mnCharacterCount(-1),
+ maTextChangeBroadcaster()
+{
+ Reference<lang::XMultiComponentFactory> xFactory (
+ rxContext->getServiceManager(), UNO_QUERY);
+ if ( ! xFactory.is())
+ return;
+
+ // Create the break iterator that we use to break text into lines.
+ mxBreakIterator = Reference<i18n::XBreakIterator>(
+ xFactory->createInstanceWithContext(
+ A2S("com.sun.star.i18n.BreakIterator"),
+ rxContext),
+ UNO_QUERY_THROW);
+
+ // Create the script type detector that is used to split paragraphs into
+ // portions of the same text direction.
+ mxScriptTypeDetector = Reference<i18n::XScriptTypeDetector>(
+ xFactory->createInstanceWithContext(
+ A2S("com.sun.star.i18n.ScriptTypeDetector"),
+ rxContext),
+ UNO_QUERY_THROW);
+}
+
+
+
+
+PresenterTextView::PresenterTextView (
+ const Reference<XComponentContext>& rxContext,
+ const Reference<rendering::XCanvas>& rxCanvas)
+ : mxCanvas(rxCanvas),
+ mbDoOuput(false),
+ mxBreakIterator(),
+ mxScriptTypeDetector(),
+ maLocation(0,0),
+ maSize(0,0),
+ mpFont(),
+ maParagraphs(),
+ mpCaret(new PresenterTextCaret(
+ ::boost::bind(&PresenterTextView::GetCaretBounds, this, _1, _2),
+ ::boost::function<void(const css::awt::Rectangle&)>())),
+ mnLeftOffset(0),
+ mnTopOffset(0),
+ maInvalidator(),
+ mbIsFormatPending(false),
+ mnCharacterCount(-1),
+ maTextChangeBroadcaster()
+{
+ Reference<lang::XMultiComponentFactory> xFactory (
+ rxContext->getServiceManager(), UNO_QUERY);
+ if ( ! xFactory.is())
+ return;
+
+ // Create the break iterator that we use to break text into lines.
+ mxBreakIterator = Reference<i18n::XBreakIterator>(
+ xFactory->createInstanceWithContext(
+ A2S("com.sun.star.i18n.BreakIterator"),
+ rxContext),
+ UNO_QUERY_THROW);
+
+ // Create the script type detector that is used to split paragraphs into
+ // portions of the same text direction.
+ mxScriptTypeDetector = Reference<i18n::XScriptTypeDetector>(
+ xFactory->createInstanceWithContext(
+ A2S("com.sun.star.i18n.ScriptTypeDetector"),
+ rxContext),
+ UNO_QUERY_THROW);
+}
+
+
+
+
+void PresenterTextView::SetText (const Reference<text::XText>& rxText)
+{
+ maParagraphs.clear();
+ mnCharacterCount = -1;
+
+ Reference<container::XEnumerationAccess> xParagraphAccess (rxText, UNO_QUERY);
+ if ( ! xParagraphAccess.is())
+ return;
+
+ Reference<container::XEnumeration> xParagraphs (
+ xParagraphAccess->createEnumeration() , UNO_QUERY);
+ if ( ! xParagraphs.is())
+ return;
+
+ if ( ! mpFont || ! mpFont->PrepareFont(mxCanvas))
+ return;
+
+ sal_Int32 nCharacterCount (0);
+ while (xParagraphs->hasMoreElements())
+ {
+ SharedPresenterTextParagraph pParagraph (new PresenterTextParagraph(
+ maParagraphs.size(),
+ mxBreakIterator,
+ mxScriptTypeDetector,
+ Reference<text::XTextRange>(xParagraphs->nextElement(), UNO_QUERY),
+ mpCaret));
+ pParagraph->SetupCellArray(mpFont);
+ pParagraph->SetCharacterOffset(nCharacterCount);
+ nCharacterCount += pParagraph->GetCharacterCount();
+ maParagraphs.push_back(pParagraph);
+ }
+
+ if (mpCaret)
+ mpCaret->HideCaret();
+
+ RequestFormat();
+}
+
+
+
+
+void PresenterTextView::SetText (const ::rtl::OUString& rsText)
+{
+ maParagraphs.clear();
+ mnCharacterCount = -1;
+
+ if ( ! mpFont || ! mpFont->PrepareFont(mxCanvas))
+ return;
+
+ sal_Int32 nCharacterCount (0);
+
+ SharedPresenterTextParagraph pParagraph (new PresenterTextParagraph(
+ 0,
+ mxBreakIterator,
+ mxScriptTypeDetector,
+ rsText,
+ mpCaret));
+ pParagraph->SetupCellArray(mpFont);
+ pParagraph->SetCharacterOffset(nCharacterCount);
+ nCharacterCount += pParagraph->GetCharacterCount();
+ maParagraphs.push_back(pParagraph);
+
+ if (mpCaret)
+ mpCaret->HideCaret();
+
+ RequestFormat();
+}
+
+
+
+
+void PresenterTextView::SetTextChangeBroadcaster (
+ const ::boost::function<void(void)>& rBroadcaster)
+{
+ maTextChangeBroadcaster = rBroadcaster;
+}
+
+
+
+
+void PresenterTextView::SetLocation (const css::geometry::RealPoint2D& rLocation)
+{
+ maLocation = rLocation;
+
+ for (::std::vector<SharedPresenterTextParagraph>::iterator
+ iParagraph(maParagraphs.begin()),
+ iEnd(maParagraphs.end());
+ iParagraph!=iEnd;
+ ++iParagraph)
+ {
+ (*iParagraph)->SetOrigin(
+ maLocation.X - mnLeftOffset,
+ maLocation.Y - mnTopOffset);
+ }
+}
+
+
+
+
+void PresenterTextView::SetSize (const css::geometry::RealSize2D& rSize)
+{
+ maSize = rSize;
+ RequestFormat();
+}
+
+
+
+
+double PresenterTextView::GetTotalTextHeight (void)
+{
+ double nTotalHeight (0);
+
+ if (mbIsFormatPending)
+ {
+ if ( ! mpFont->PrepareFont(mxCanvas))
+ return 0;
+ Format();
+ }
+
+ for (::std::vector<SharedPresenterTextParagraph>::iterator
+ iParagraph(maParagraphs.begin()),
+ iEnd(maParagraphs.end());
+ iParagraph!=iEnd;
+ ++iParagraph)
+ {
+ nTotalHeight += (*iParagraph)->GetTotalTextHeight();
+ }
+
+ return nTotalHeight;
+}
+
+
+
+
+void PresenterTextView::SetFont (const PresenterTheme::SharedFontDescriptor& rpFont)
+{
+ mpFont = rpFont;
+ RequestFormat();
+}
+
+
+
+
+void PresenterTextView::SetOffset(
+ const double nLeft,
+ const double nTop)
+{
+ mnLeftOffset = nLeft;
+ mnTopOffset = nTop;
+
+ // Trigger an update of the text origin stored at the individual paragraphs.
+ SetLocation(maLocation);
+}
+
+
+
+void PresenterTextView::MoveCaret (
+ const sal_Int32 nDistance,
+ const sal_Int16 nTextType)
+{
+ if ( ! mpCaret)
+ return;
+
+ // When the caret has not been visible yet then move it to the beginning
+ // of the text.
+ if (mpCaret->GetParagraphIndex() < 0)
+ {
+ mpCaret->SetPosition(0,0);
+ return;
+ }
+
+ sal_Int32 nParagraphIndex (mpCaret->GetParagraphIndex());
+ sal_Int32 nCharacterIndex (mpCaret->GetCharacterIndex());
+ switch (nTextType)
+ {
+ default:
+ case AccessibleTextType::CHARACTER:
+ nCharacterIndex += nDistance;
+ break;
+
+ case AccessibleTextType::WORD:
+ {
+ sal_Int32 nRemainingDistance (nDistance);
+ while (nRemainingDistance != 0)
+ {
+ SharedPresenterTextParagraph pParagraph (GetParagraph(nParagraphIndex));
+ if (pParagraph)
+ {
+ const sal_Int32 nDelta (Signum(nDistance));
+ nCharacterIndex = pParagraph->GetWordBoundary(nCharacterIndex, nDelta);
+ if (nCharacterIndex < 0)
+ {
+ // Go to previous or next paragraph.
+ nParagraphIndex += nDelta;
+ if (nParagraphIndex < 0)
+ {
+ nParagraphIndex = 0;
+ nCharacterIndex = 0;
+ nRemainingDistance = 0;
+ }
+ else if (sal_uInt32(nParagraphIndex) >= maParagraphs.size())
+ {
+ nParagraphIndex = maParagraphs.size()-1;
+ pParagraph = GetParagraph(nParagraphIndex);
+ if (pParagraph)
+ nCharacterIndex = pParagraph->GetCharacterCount();
+ nRemainingDistance = 0;
+ }
+ else
+ {
+ nRemainingDistance -= nDelta;
+
+ // Move caret one character to the end of
+ // the previous or the start of the next paragraph.
+ pParagraph = GetParagraph(nParagraphIndex);
+ if (pParagraph)
+ {
+ if (nDistance<0)
+ nCharacterIndex = pParagraph->GetCharacterCount();
+ else
+ nCharacterIndex = 0;
+ }
+ }
+ }
+ else
+ nRemainingDistance -= nDelta;
+ }
+ else
+ break;
+ }
+ break;
+ }
+ }
+
+ // Move the caret to the new position.
+ mpCaret->SetPosition(nParagraphIndex, nCharacterIndex);
+}
+
+
+
+
+void PresenterTextView::Paint (
+ const css::awt::Rectangle& rUpdateBox)
+{
+ if ( ! mbDoOuput)
+ return;
+ if ( ! mxCanvas.is())
+ return;
+ if ( ! mpFont->PrepareFont(mxCanvas))
+ return;
+
+ if (mbIsFormatPending)
+ Format();
+
+ // Setup the clipping rectangle. Horizontally we make it a little
+ // larger to allow characters (and the caret) to stick out of their
+ // bounding boxes. This can happen on some characters (like the
+ // uppercase J) for typographical reasons.
+ const sal_Int32 nAdditionalLeftBorder (10);
+ const sal_Int32 nAdditionalRightBorder (5);
+ double nX (maLocation.X - mnLeftOffset);
+ double nY (maLocation.Y - mnTopOffset);
+ const sal_Int32 nClipLeft (::std::max(
+ PresenterGeometryHelper::Round(maLocation.X)-nAdditionalLeftBorder, rUpdateBox.X));
+ const sal_Int32 nClipTop (::std::max(
+ PresenterGeometryHelper::Round(maLocation.Y), rUpdateBox.Y));
+ const sal_Int32 nClipRight (::std::min(
+ PresenterGeometryHelper::Round(maLocation.X+maSize.Width)+nAdditionalRightBorder, rUpdateBox.X+rUpdateBox.Width));
+ const sal_Int32 nClipBottom (::std::min(
+ PresenterGeometryHelper::Round(maLocation.Y+maSize.Height), rUpdateBox.Y+rUpdateBox.Height));
+ if (nClipLeft>=nClipRight || nClipTop>=nClipBottom)
+ return;
+
+ const awt::Rectangle aClipBox(
+ nClipLeft,
+ nClipTop,
+ nClipRight - nClipLeft,
+ nClipBottom - nClipTop);
+ Reference<rendering::XPolyPolygon2D> xClipPolygon (
+ PresenterGeometryHelper::CreatePolygon(aClipBox, mxCanvas->getDevice()));
+
+ const rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ xClipPolygon);
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,nX, 0,1,nY),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, mpFont->mnColor);
+
+ for (::std::vector<SharedPresenterTextParagraph>::const_iterator
+ iParagraph(maParagraphs.begin()),
+ iEnd(maParagraphs.end());
+ iParagraph!=iEnd;
+ ++iParagraph)
+ {
+ (*iParagraph)->Paint(
+ mxCanvas,
+ maSize,
+ mpFont,
+ aViewState,
+ aRenderState,
+ mnTopOffset,
+ nClipTop,
+ nClipBottom);
+ }
+
+ aRenderState.AffineTransform.m02 = 0;
+ aRenderState.AffineTransform.m12 = 0;
+
+#ifdef SHOW_CHARACTER_BOXES
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, 0x00808080);
+ for (sal_Int32 nParagraphIndex(0), nParagraphCount(GetParagraphCount());
+ nParagraphIndex<nParagraphCount;
+ ++nParagraphIndex)
+ {
+ const SharedPresenterTextParagraph pParagraph (GetParagraph(nParagraphIndex));
+ if ( ! pParagraph)
+ continue;
+ for (sal_Int32 nCharacterIndex(0),nCharacterCount(pParagraph->GetCharacterCount());
+ nCharacterIndex<nCharacterCount; ++nCharacterIndex)
+ {
+ const awt::Rectangle aBox (pParagraph->GetCharacterBounds(nCharacterIndex, false));
+ mxCanvas->drawPolyPolygon (
+ PresenterGeometryHelper::CreatePolygon(
+ aBox,
+ mxCanvas->getDevice()),
+ aViewState,
+ aRenderState);
+ }
+ }
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, mpFont->mnColor);
+#endif
+
+ if (mpCaret && mpCaret->IsVisible())
+ {
+ mxCanvas->fillPolyPolygon (
+ PresenterGeometryHelper::CreatePolygon(
+ mpCaret->GetBounds(),
+ mxCanvas->getDevice()),
+ aViewState,
+ aRenderState);
+ }
+}
+
+
+
+
+SharedPresenterTextCaret PresenterTextView::GetCaret (void) const
+{
+ return mpCaret;
+}
+
+
+
+
+sal_Int32 PresenterTextView::GetCharacterOffset (const sal_Int32 nParagraphIndex) const
+{
+ sal_Int32 nCharacterOffset (0);
+ for (sal_Int32 nIndex=0; nIndex<nParagraphIndex; ++nIndex)
+ nCharacterOffset += maParagraphs[nIndex]->GetCharacterCount();
+ return nCharacterOffset;
+}
+
+
+
+
+awt::Rectangle PresenterTextView::GetCaretBounds (
+ sal_Int32 nParagraphIndex,
+ const sal_Int32 nCharacterIndex) const
+{
+ SharedPresenterTextParagraph pParagraph (GetParagraph(nParagraphIndex));
+
+ if (pParagraph)
+ return pParagraph->GetCharacterBounds(nCharacterIndex, true);
+ else
+ return awt::Rectangle(0,0,0,0);
+}
+
+
+
+
+//----- private ---------------------------------------------------------------
+
+void PresenterTextView::RequestFormat (void)
+{
+ mbIsFormatPending = true;
+}
+
+
+
+
+void PresenterTextView::Format (void)
+{
+ mbIsFormatPending = false;
+
+ double nY (0);
+ for (::std::vector<SharedPresenterTextParagraph>::const_iterator
+ iParagraph(maParagraphs.begin()),
+ iEnd(maParagraphs.end());
+ iParagraph!=iEnd;
+ ++iParagraph)
+ {
+ (*iParagraph)->Format(nY, maSize.Width, mpFont);
+ nY += (*iParagraph)->GetTotalTextHeight();
+ }
+
+ if (maTextChangeBroadcaster)
+ maTextChangeBroadcaster();
+}
+
+
+
+
+sal_Int32 PresenterTextView::GetParagraphCount (void) const
+{
+ return maParagraphs.size();
+}
+
+
+
+
+SharedPresenterTextParagraph PresenterTextView::GetParagraph (
+ const sal_Int32 nParagraphIndex) const
+{
+ if (nParagraphIndex < 0)
+ return SharedPresenterTextParagraph();
+ else if (nParagraphIndex>=sal_Int32(maParagraphs.size()))
+ return SharedPresenterTextParagraph();
+ else
+ return maParagraphs[nParagraphIndex];
+}
+
+
+
+
+//===== PresenterTextParagraph ================================================
+
+PresenterTextParagraph::PresenterTextParagraph (
+ const sal_Int32 nParagraphIndex,
+ const Reference<i18n::XBreakIterator>& rxBreakIterator,
+ const Reference<i18n::XScriptTypeDetector>& rxScriptTypeDetector,
+ const Reference<text::XTextRange>& rxTextRange,
+ const SharedPresenterTextCaret& rpCaret)
+ : msParagraphText(),
+ mnParagraphIndex(nParagraphIndex),
+ mpCaret(rpCaret),
+ mxBreakIterator(rxBreakIterator),
+ mxScriptTypeDetector(rxScriptTypeDetector),
+ maLines(),
+ mnVerticalOffset(0),
+ mnXOrigin(0),
+ mnYOrigin(0),
+ mnWidth(0),
+ mnAscent(0),
+ mnDescent(0),
+ mnLineHeight(-1),
+ meAdjust(style::ParagraphAdjust_LEFT),
+ mnWritingMode (text::WritingMode2::LR_TB),
+ mnCharacterOffset(0),
+ maCells()
+{
+ if (rxTextRange.is())
+ {
+ Reference<beans::XPropertySet> xProperties (rxTextRange, UNO_QUERY);
+ lang::Locale aLocale;
+ try
+ {
+ xProperties->getPropertyValue(A2S("CharLocale")) >>= aLocale;
+ }
+ catch(beans::UnknownPropertyException&)
+ {
+ // Ignore the exception. Use the default value.
+ }
+ try
+ {
+ xProperties->getPropertyValue(A2S("ParaAdjust")) >>= meAdjust;
+ }
+ catch(beans::UnknownPropertyException&)
+ {
+ // Ignore the exception. Use the default value.
+ }
+ try
+ {
+ xProperties->getPropertyValue(A2S("WritingMode")) >>= mnWritingMode;
+ }
+ catch(beans::UnknownPropertyException&)
+ {
+ // Ignore the exception. Use the default value.
+ }
+
+ msParagraphText = rxTextRange->getString();
+ }
+}
+
+
+
+
+PresenterTextParagraph::PresenterTextParagraph (
+ const sal_Int32 nParagraphIndex,
+ const Reference<i18n::XBreakIterator>& rxBreakIterator,
+ const Reference<i18n::XScriptTypeDetector>& rxScriptTypeDetector,
+ const ::rtl::OUString& rsText,
+ const SharedPresenterTextCaret& rpCaret)
+ : msParagraphText(rsText),
+ mnParagraphIndex(nParagraphIndex),
+ mpCaret(rpCaret),
+ mxBreakIterator(rxBreakIterator),
+ mxScriptTypeDetector(rxScriptTypeDetector),
+ maLines(),
+ mnVerticalOffset(0),
+ mnXOrigin(0),
+ mnYOrigin(0),
+ mnWidth(0),
+ mnAscent(0),
+ mnDescent(0),
+ mnLineHeight(-1),
+ meAdjust(style::ParagraphAdjust_LEFT),
+ mnWritingMode (text::WritingMode2::LR_TB),
+ mnCharacterOffset(0),
+ maCells()
+{
+}
+
+
+
+
+void PresenterTextParagraph::Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const geometry::RealSize2D& rSize,
+ const PresenterTheme::SharedFontDescriptor& rpFont,
+ const rendering::ViewState& rViewState,
+ rendering::RenderState& rRenderState,
+ const double nTopOffset,
+ const double nClipTop,
+ const double nClipBottom)
+{
+ if (mnLineHeight <= 0)
+ return;
+
+ sal_Int8 nTextDirection (GetTextDirection());
+
+ const double nSavedM12 (rRenderState.AffineTransform.m12);
+
+ if ( ! IsTextReferencePointLeft())
+ rRenderState.AffineTransform.m02 += rSize.Width;
+
+
+#ifdef SHOW_CHARACTER_BOXES
+ for (sal_Int32 nIndex=0,nCount=maLines.size();
+ nIndex<nCount;
+ ++nIndex)
+ {
+ Line& rLine (maLines[nIndex]);
+ rLine.ProvideLayoutedLine(msParagraphText, rpFont, nTextDirection);
+ }
+#endif
+
+ for (sal_Int32 nIndex=0,nCount=maLines.size();
+ nIndex<nCount;
+ ++nIndex, rRenderState.AffineTransform.m12 += mnLineHeight)
+ {
+ Line& rLine (maLines[nIndex]);
+
+ // Paint only visible lines.
+ const double nLineTop = rLine.mnBaseLine - mnAscent - nTopOffset;
+ if (nLineTop + mnLineHeight< nClipTop)
+ continue;
+ else if (nLineTop > nClipBottom)
+ break;
+ rLine.ProvideLayoutedLine(msParagraphText, rpFont, nTextDirection);
+
+ rRenderState.AffineTransform.m12 = nSavedM12 + rLine.mnBaseLine;
+
+ rxCanvas->drawTextLayout (
+ rLine.mxLayoutedLine,
+ rViewState,
+ rRenderState);
+ }
+ rRenderState.AffineTransform.m12 = nSavedM12;
+
+ if ( ! IsTextReferencePointLeft())
+ rRenderState.AffineTransform.m02 -= rSize.Width;
+}
+
+
+
+
+void PresenterTextParagraph::Format (
+ const double nY,
+ const double nWidth,
+ const PresenterTheme::SharedFontDescriptor& rpFont)
+{
+ // Make sure that the text view is in a valid and sane state.
+ if ( ! mxBreakIterator.is() || ! mxScriptTypeDetector.is())
+ return;
+ if (nWidth<=0)
+ return;
+ if ( ! rpFont || ! rpFont->mxFont.is())
+ return;
+
+ sal_Int32 nPosition (0);
+
+ mnWidth = nWidth;
+ maLines.clear();
+ mnLineHeight = 0;
+ mnAscent = 0;
+ mnDescent = 0;
+ mnVerticalOffset = nY;
+ maWordBoundaries.clear();
+ maWordBoundaries.push_back(0);
+
+ const rendering::FontMetrics aMetrics (rpFont->mxFont->getFontMetrics());
+ mnAscent = aMetrics.Ascent;
+ mnDescent = aMetrics.Descent;
+ mnLineHeight = aMetrics.Ascent + aMetrics.Descent + aMetrics.ExternalLeading;
+ nPosition = 0;
+ i18n::Boundary aCurrentLine(0,0);
+ while (true)
+ {
+ const i18n::Boundary aWordBoundary = mxBreakIterator->nextWord(
+ msParagraphText,
+ nPosition,
+ lang::Locale(),
+ i18n::WordType::ANYWORD_IGNOREWHITESPACES);
+ AddWord(nWidth, aCurrentLine, aWordBoundary.startPos, rpFont);
+
+ // Remember the new word boundary for caret travelling by words.
+ // Prevent duplicates.
+ if (aWordBoundary.startPos > maWordBoundaries.back())
+ maWordBoundaries.push_back(aWordBoundary.startPos);
+
+ if (aWordBoundary.endPos>aWordBoundary.startPos)
+ AddWord(nWidth, aCurrentLine, aWordBoundary.endPos, rpFont);
+
+ if (aWordBoundary.startPos<0 || aWordBoundary.endPos<0)
+ break;
+ if (nPosition >= aWordBoundary.endPos)
+ break;
+ nPosition = aWordBoundary.endPos;
+ }
+
+ if (aCurrentLine.endPos>aCurrentLine.startPos)
+ AddLine(aCurrentLine);
+
+}
+
+
+
+
+sal_Int32 PresenterTextParagraph::GetWordBoundary(
+ const sal_Int32 nLocalCharacterIndex,
+ const sal_Int32 nDistance)
+{
+ OSL_ASSERT(nDistance==-1 || nDistance==+1);
+
+ if (nLocalCharacterIndex < 0)
+ {
+ // The caller asked for the start or end position of the paragraph.
+ if (nDistance < 0)
+ return 0;
+ else
+ return GetCharacterCount();
+ }
+
+ sal_Int32 nIndex (0);
+ for (sal_Int32 nCount (maWordBoundaries.size()); nIndex<nCount; ++nIndex)
+ {
+ if (maWordBoundaries[nIndex] >= nLocalCharacterIndex)
+ {
+ // When inside the word (not at its start or end) then
+ // first move to the start or end before going the previous or
+ // next word.
+ if (maWordBoundaries[nIndex] > nLocalCharacterIndex)
+ if (nDistance > 0)
+ --nIndex;
+ break;
+ }
+ }
+
+ nIndex += nDistance;
+
+ if (nIndex < 0)
+ return -1;
+ else if (sal_uInt32(nIndex)>=maWordBoundaries.size())
+ return -1;
+ else
+ return maWordBoundaries[nIndex];
+}
+
+
+
+
+sal_Int32 PresenterTextParagraph::GetCaretPosition (void) const
+{
+ if (mpCaret && mpCaret->GetParagraphIndex()==mnParagraphIndex)
+ return mpCaret->GetCharacterIndex();
+ else
+ return -1;
+}
+
+
+
+
+void PresenterTextParagraph::SetCaretPosition (const sal_Int32 nPosition) const
+{
+ if (mpCaret && mpCaret->GetParagraphIndex()==mnParagraphIndex)
+ return mpCaret->SetPosition(mnParagraphIndex, nPosition);
+}
+
+
+
+
+void PresenterTextParagraph::SetOrigin (const double nXOrigin, const double nYOrigin)
+{
+ mnXOrigin = nXOrigin;
+ mnYOrigin = nYOrigin;
+}
+
+
+
+
+awt::Point PresenterTextParagraph::GetRelativeLocation (void) const
+{
+ return awt::Point(
+ sal_Int32(mnXOrigin),
+ sal_Int32(mnYOrigin + mnVerticalOffset));
+}
+
+
+
+
+awt::Size PresenterTextParagraph::GetSize (void)
+{
+ return awt::Size(
+ sal_Int32(mnWidth),
+ sal_Int32(GetTotalTextHeight()));
+}
+
+
+
+
+void PresenterTextParagraph::AddWord (
+ const double nWidth,
+ i18n::Boundary& rCurrentLine,
+ const sal_Int32 nWordBoundary,
+ const PresenterTheme::SharedFontDescriptor& rpFont)
+{
+ sal_Int32 nLineStart (0);
+ if ( ! maLines.empty())
+ nLineStart = rCurrentLine.startPos;
+
+ const ::rtl::OUString sLineCandidate (
+ msParagraphText.copy(nLineStart, nWordBoundary-nLineStart));
+
+ css::geometry::RealRectangle2D aLineBox (
+ PresenterCanvasHelper::GetTextBoundingBox (
+ rpFont->mxFont,
+ sLineCandidate,
+ mnWritingMode));
+ const double nLineWidth (aLineBox.X2 - aLineBox.X1);
+
+ if (nLineWidth >= nWidth)
+ {
+ // Add new line with a single word (so far).
+ AddLine(rCurrentLine);
+ }
+ rCurrentLine.endPos = nWordBoundary;
+}
+
+
+
+
+void PresenterTextParagraph::AddLine (
+ i18n::Boundary& rCurrentLine)
+{
+ Line aLine (rCurrentLine.startPos, rCurrentLine.endPos);
+
+ // Find the start and end of the line with respect to cells.
+ if (maLines.size() > 0)
+ {
+ aLine.mnLineStartCellIndex = maLines.back().mnLineEndCellIndex;
+ aLine.mnBaseLine = maLines.back().mnBaseLine + mnLineHeight;
+ }
+ else
+ {
+ aLine.mnLineStartCellIndex = 0;
+ aLine.mnBaseLine = mnVerticalOffset + mnAscent;
+ }
+ sal_Int32 nCellIndex (aLine.mnLineStartCellIndex);
+ double nWidth (0);
+ for ( ; nCellIndex<sal_Int32(maCells.size()); ++nCellIndex)
+ {
+ const Cell& rCell (maCells[nCellIndex]);
+ if (rCell.mnCharacterIndex+rCell.mnCharacterCount > aLine.mnLineEndCharacterIndex)
+ break;
+ nWidth += rCell.mnCellWidth;
+ }
+ aLine.mnLineEndCellIndex = nCellIndex;
+ aLine.mnWidth = nWidth;
+
+ maLines.push_back(aLine);
+
+ rCurrentLine.startPos = rCurrentLine.endPos;
+}
+
+
+
+
+sal_Int32 PresenterTextParagraph::GetParagraphIndex (void) const
+{
+ return mnParagraphIndex;
+}
+
+
+
+
+double PresenterTextParagraph::GetTotalTextHeight (void)
+{
+ return maLines.size() * mnLineHeight;
+}
+
+
+
+
+sal_Int32 PresenterTextParagraph::GetCharacterOffset (void) const
+{
+ return mnCharacterOffset;
+}
+
+
+
+
+void PresenterTextParagraph::SetCharacterOffset (const sal_Int32 nCharacterOffset)
+{
+ mnCharacterOffset = nCharacterOffset;
+}
+
+
+
+
+sal_Int32 PresenterTextParagraph::GetCharacterCount (void) const
+{
+ return msParagraphText.getLength();
+}
+
+
+
+
+sal_Unicode PresenterTextParagraph::GetCharacter (
+ const sal_Int32 nGlobalCharacterIndex) const
+{
+ if (nGlobalCharacterIndex<mnCharacterOffset
+ || nGlobalCharacterIndex>=mnCharacterOffset+msParagraphText.getLength())
+ {
+ return sal_Unicode();
+ }
+ else
+ {
+ return msParagraphText.getStr()[nGlobalCharacterIndex - mnCharacterOffset];
+ }
+}
+
+
+
+
+::rtl::OUString PresenterTextParagraph::GetText (void) const
+{
+ return msParagraphText;
+}
+
+
+
+
+TextSegment PresenterTextParagraph::GetTextSegment (
+ const sal_Int32 nOffset,
+ const sal_Int32 nIndex,
+ const sal_Int16 nTextType) const
+{
+ switch(nTextType)
+ {
+ case AccessibleTextType::PARAGRAPH:
+ return TextSegment(
+ msParagraphText,
+ mnCharacterOffset,
+ mnCharacterOffset+msParagraphText.getLength());
+
+ case AccessibleTextType::SENTENCE:
+ if (mxBreakIterator.is())
+ {
+ const sal_Int32 nStart (mxBreakIterator->beginOfSentence(
+ msParagraphText, nIndex-mnCharacterOffset, lang::Locale()));
+ const sal_Int32 nEnd (mxBreakIterator->endOfSentence(
+ msParagraphText, nIndex-mnCharacterOffset, lang::Locale()));
+ if (nStart < nEnd)
+ return TextSegment(
+ msParagraphText.copy(nStart, nEnd-nStart),
+ nStart+mnCharacterOffset,
+ nEnd+mnCharacterOffset);
+ }
+ break;
+
+ case AccessibleTextType::WORD:
+ if (mxBreakIterator.is())
+ return GetWordTextSegment(nOffset, nIndex);
+ break;
+
+ case AccessibleTextType::LINE:
+ {
+ for (::std::vector<Line>::const_iterator
+ iLine(maLines.begin()),
+ iEnd(maLines.end());
+ iLine!=iEnd;
+ ++iLine)
+ {
+ if (nIndex < iLine->mnLineEndCharacterIndex)
+ {
+ return TextSegment(
+ msParagraphText.copy(
+ iLine->mnLineStartCharacterIndex,
+ iLine->mnLineEndCharacterIndex - iLine->mnLineStartCharacterIndex),
+ iLine->mnLineStartCharacterIndex,
+ iLine->mnLineEndCharacterIndex);
+ }
+ }
+ }
+ break;
+
+ // Handle GLYPH and ATTRIBUTE_RUN like CHARACTER because we can not
+ // do better at the moment.
+ case AccessibleTextType::CHARACTER:
+ case AccessibleTextType::GLYPH:
+ case AccessibleTextType::ATTRIBUTE_RUN:
+ return CreateTextSegment(nIndex+nOffset, nIndex+nOffset+1);
+ }
+
+ return TextSegment(::rtl::OUString(), 0,0);
+}
+
+
+
+
+TextSegment PresenterTextParagraph::GetWordTextSegment (
+ const sal_Int32 nOffset,
+ const sal_Int32 nIndex) const
+{
+ sal_Int32 nCurrentOffset (nOffset);
+ sal_Int32 nCurrentIndex (nIndex);
+
+ i18n::Boundary aWordBoundary;
+ if (nCurrentOffset == 0)
+ aWordBoundary = mxBreakIterator->getWordBoundary(
+ msParagraphText,
+ nIndex,
+ lang::Locale(),
+ i18n::WordType::ANYWORD_IGNOREWHITESPACES,
+ sal_True);
+ else if (nCurrentOffset < 0)
+ {
+ while (nCurrentOffset<0 && nCurrentIndex>0)
+ {
+ aWordBoundary = mxBreakIterator->previousWord(
+ msParagraphText,
+ nCurrentIndex,
+ lang::Locale(),
+ i18n::WordType::ANYWORD_IGNOREWHITESPACES);
+ nCurrentIndex = aWordBoundary.startPos;
+ ++nCurrentOffset;
+ }
+ }
+ else
+ {
+ while (nCurrentOffset>0 && nCurrentIndex<=GetCharacterCount())
+ {
+ aWordBoundary = mxBreakIterator->nextWord(
+ msParagraphText,
+ nCurrentIndex,
+ lang::Locale(),
+ i18n::WordType::ANYWORD_IGNOREWHITESPACES);
+ nCurrentIndex = aWordBoundary.endPos;
+ --nCurrentOffset;
+ }
+ }
+
+ return CreateTextSegment(aWordBoundary.startPos, aWordBoundary.endPos);
+}
+
+
+
+
+TextSegment PresenterTextParagraph::CreateTextSegment (
+ sal_Int32 nStartIndex,
+ sal_Int32 nEndIndex) const
+{
+ if (nEndIndex <= nStartIndex)
+ return TextSegment(
+ ::rtl::OUString(),
+ nStartIndex,
+ nEndIndex);
+ else
+ return TextSegment(
+ msParagraphText.copy(nStartIndex, nEndIndex-nStartIndex),
+ nStartIndex,
+ nEndIndex);
+}
+
+
+
+
+awt::Rectangle PresenterTextParagraph::GetCharacterBounds (
+ sal_Int32 nGlobalCharacterIndex,
+ const bool bCaretBox)
+{
+ // Find the line that contains the requested character and accumulate
+ // the previous line heights.
+ double nX (mnXOrigin);
+ double nY (mnYOrigin + mnVerticalOffset + mnAscent);
+ const sal_Int8 nTextDirection (GetTextDirection());
+ for (sal_Int32 nLineIndex=0,nLineCount=maLines.size();
+ nLineIndex<nLineCount;
+ ++nLineIndex, nY+=mnLineHeight)
+ {
+ Line& rLine (maLines[nLineIndex]);
+ // Skip lines before the indexed character.
+ if (nGlobalCharacterIndex >= rLine.mnLineEndCharacterIndex)
+ // When in the last line then allow the index past the last char.
+ if (nLineIndex<nLineCount-1)
+ continue;
+
+ rLine.ProvideCellBoxes();
+
+ const sal_Int32 nCellIndex (nGlobalCharacterIndex - rLine.mnLineStartCharacterIndex);
+
+ // The cell bounding box is defined relative to the origin of
+ // the current line. Therefore we have to add the absolute
+ // position of the line.
+ geometry::RealRectangle2D rCellBox (rLine.maCellBoxes[
+ ::std::min(nCellIndex, rLine.maCellBoxes.getLength()-1)]);
+
+ double nLeft = nX + rCellBox.X1;
+ double nRight = nX + rCellBox.X2;
+ if (nTextDirection == rendering::TextDirection::WEAK_RIGHT_TO_LEFT)
+ {
+ const double nOldRight (nRight);
+ nRight = rLine.mnWidth - nLeft;
+ nLeft = rLine.mnWidth - nOldRight;
+ }
+ double nTop (nY + rCellBox.Y1);
+ double nBottom (nY + rCellBox.Y2);
+ if (bCaretBox)
+ {
+ nTop = nTop - rCellBox.Y1 - mnAscent;
+ nBottom = nTop + mnLineHeight;
+ if (nCellIndex >= rLine.maCellBoxes.getLength())
+ nLeft = nRight-2;
+ if (nLeft < nX)
+ nLeft = nX;
+ nRight = nLeft+2;
+ }
+ else
+ {
+ nTop = nTop - rCellBox.Y1 - mnAscent;
+ nBottom = nTop + mnAscent + mnDescent;
+ }
+ const sal_Int32 nX1 = sal_Int32(floor(nLeft));
+ const sal_Int32 nY1 = sal_Int32(floor(nTop));
+ const sal_Int32 nX2 = sal_Int32(ceil(nRight));
+ const sal_Int32 nY2 = sal_Int32(ceil(nBottom));
+
+ return awt::Rectangle(nX1,nY1,nX2-nX1+1,nY2-nY1+1);
+ }
+
+ // We are still here. That means that the given index lies past the
+ // last character in the paragraph.
+ // Return an empty box that lies past the last character. Better than nothing.
+ return awt::Rectangle(sal_Int32(nX+0.5), sal_Int32(nY+0.5), 0, 0);
+}
+
+
+
+
+sal_Int32 PresenterTextParagraph::GetIndexAtPoint (const awt::Point& rPoint) const
+{
+ (void)rPoint;
+ return -1;
+}
+
+
+
+
+sal_Int8 PresenterTextParagraph::GetTextDirection (void) const
+{
+ // Find first portion that has a non-neutral text direction.
+ sal_Int32 nPosition (0);
+ sal_Int32 nTextLength (msParagraphText.getLength());
+ while (nPosition < nTextLength)
+ {
+ const sal_Int16 nScriptDirection (
+ mxScriptTypeDetector->getScriptDirection(
+ msParagraphText, nPosition, i18n::ScriptDirection::NEUTRAL));
+ switch (nScriptDirection)
+ {
+ case i18n::ScriptDirection::NEUTRAL:
+ // continue looping.
+ break;
+ case i18n::ScriptDirection::LEFT_TO_RIGHT:
+ return rendering::TextDirection::WEAK_LEFT_TO_RIGHT;
+
+ case i18n::ScriptDirection::RIGHT_TO_LEFT:
+ return rendering::TextDirection::WEAK_RIGHT_TO_LEFT;
+ }
+
+ nPosition = mxScriptTypeDetector->endOfScriptDirection(
+ msParagraphText, nPosition, nScriptDirection);
+ }
+
+ // All text in paragraph is neutral. Fall back on writing mode taken
+ // from the XText (which may not be properly initialized.)
+ sal_Int8 nTextDirection(rendering::TextDirection::WEAK_LEFT_TO_RIGHT);
+ switch(mnWritingMode)
+ {
+ case text::WritingMode2::LR_TB:
+ nTextDirection = rendering::TextDirection::WEAK_LEFT_TO_RIGHT;
+ break;
+
+ case text::WritingMode2::RL_TB:
+ nTextDirection = rendering::TextDirection::WEAK_RIGHT_TO_LEFT;
+ break;
+
+ default:
+ case text::WritingMode2::TB_RL:
+ case text::WritingMode2::TB_LR:
+ // Can not handle this. Use default and hope for the best.
+ break;
+ }
+ return nTextDirection;
+}
+
+
+
+
+bool PresenterTextParagraph::IsTextReferencePointLeft (void) const
+{
+ return mnWritingMode != text::WritingMode2::RL_TB;
+}
+
+
+
+
+void PresenterTextParagraph::SetupCellArray (
+ const PresenterTheme::SharedFontDescriptor& rpFont)
+{
+ maCells.clear();
+
+ if ( ! rpFont || ! rpFont->mxFont.is())
+ return;
+
+ sal_Int32 nPosition (0);
+ sal_Int32 nIndex (0);
+ const sal_Int32 nTextLength (msParagraphText.getLength());
+ const sal_Int8 nTextDirection (GetTextDirection());
+ while (nPosition < nTextLength)
+ {
+ const sal_Int32 nNewPosition (mxBreakIterator->nextCharacters(
+ msParagraphText,
+ nPosition,
+ lang::Locale(),
+ i18n::CharacterIteratorMode::SKIPCELL,
+ 1,
+ nIndex));
+
+ rendering::StringContext aContext (msParagraphText, nPosition, nNewPosition-nPosition);
+ Reference<rendering::XTextLayout> xLayout (
+ rpFont->mxFont->createTextLayout(aContext, nTextDirection, 0));
+ css::geometry::RealRectangle2D aCharacterBox (xLayout->queryTextBounds());
+
+ maCells.push_back(Cell(
+ nPosition,
+ nNewPosition-nPosition,
+ aCharacterBox.X2-aCharacterBox.X1));
+
+ nPosition = nNewPosition;
+ }
+}
+
+
+
+
+//===== PresenterTextCaret ================================================----
+
+PresenterTextCaret::PresenterTextCaret (
+ const ::boost::function<css::awt::Rectangle(const sal_Int32,const sal_Int32)>& rCharacterBoundsAccess,
+ const ::boost::function<void(const css::awt::Rectangle&)>& rInvalidator)
+ : mnParagraphIndex(-1),
+ mnCharacterIndex(-1),
+ mnCaretBlinkTaskId(0),
+ mbIsCaretVisible(false),
+ maCharacterBoundsAccess(rCharacterBoundsAccess),
+ maInvalidator(rInvalidator),
+ maBroadcaster(),
+ maCaretBounds()
+{
+}
+
+
+
+
+PresenterTextCaret::~PresenterTextCaret (void)
+{
+ HideCaret();
+}
+
+
+
+
+void PresenterTextCaret::ShowCaret (void)
+{
+ if (mnCaretBlinkTaskId == 0)
+ {
+ mnCaretBlinkTaskId = PresenterTimer::ScheduleRepeatedTask (
+ ::boost::bind(&PresenterTextCaret::InvertCaret, this),
+ CaretBlinkIntervall,
+ CaretBlinkIntervall);
+ }
+ mbIsCaretVisible = true;
+}
+
+
+
+
+void PresenterTextCaret::HideCaret (void)
+{
+ if (mnCaretBlinkTaskId != 0)
+ {
+ PresenterTimer::CancelTask(mnCaretBlinkTaskId);
+ mnCaretBlinkTaskId = 0;
+ }
+ mbIsCaretVisible = false;
+ // Reset the caret position.
+ mnParagraphIndex = -1;
+ mnCharacterIndex = -1;
+}
+
+
+
+
+sal_Int32 PresenterTextCaret::GetParagraphIndex (void) const
+{
+ return mnParagraphIndex;
+}
+
+
+
+
+sal_Int32 PresenterTextCaret::GetCharacterIndex (void) const
+{
+ return mnCharacterIndex;
+}
+
+
+
+
+void PresenterTextCaret::SetPosition (
+ const sal_Int32 nParagraphIndex,
+ const sal_Int32 nCharacterIndex)
+{
+ if (mnParagraphIndex != nParagraphIndex
+ || mnCharacterIndex != nCharacterIndex)
+ {
+ if (mnParagraphIndex >= 0)
+ maInvalidator(maCaretBounds);
+
+ const sal_Int32 nOldParagraphIndex (mnParagraphIndex);
+ const sal_Int32 nOldCharacterIndex (mnCharacterIndex);
+ mnParagraphIndex = nParagraphIndex;
+ mnCharacterIndex = nCharacterIndex;
+ maCaretBounds = maCharacterBoundsAccess(mnParagraphIndex, mnCharacterIndex);
+ if (mnParagraphIndex >= 0)
+ ShowCaret();
+ else
+ HideCaret();
+
+ if (mnParagraphIndex >= 0)
+ maInvalidator(maCaretBounds);
+
+ if (maBroadcaster)
+ maBroadcaster(
+ nOldParagraphIndex,
+ nOldCharacterIndex,
+ mnParagraphIndex,
+ mnCharacterIndex);
+
+ }
+}
+
+
+
+
+bool PresenterTextCaret::IsVisible (void) const
+{
+ return mbIsCaretVisible;
+}
+
+
+
+
+void PresenterTextCaret::SetCaretMotionBroadcaster (
+ const ::boost::function<void(sal_Int32,sal_Int32,sal_Int32,sal_Int32)>& rBroadcaster)
+{
+ maBroadcaster = rBroadcaster;
+}
+
+
+
+
+css::awt::Rectangle PresenterTextCaret::GetBounds (void) const
+{
+ return maCaretBounds;
+}
+
+
+
+
+void PresenterTextCaret::InvertCaret (void)
+{
+ mbIsCaretVisible = !mbIsCaretVisible;
+ if (mnParagraphIndex >= 0)
+ maInvalidator(maCaretBounds);
+}
+
+
+
+
+
+
+
+//===== PresenterTextParagraph::Cell ==========================================
+
+PresenterTextParagraph::Cell::Cell (
+ const sal_Int32 nCharacterIndex,
+ const sal_Int32 nCharacterCount,
+ const double nCellWidth)
+ : mnCharacterIndex(nCharacterIndex),
+ mnCharacterCount(nCharacterCount),
+ mnCellWidth(nCellWidth)
+{
+}
+
+
+
+
+//===== PresenterTextParagraph::Line ==========================================
+
+PresenterTextParagraph::Line::Line (
+ const sal_Int32 nLineStartCharacterIndex,
+ const sal_Int32 nLineEndCharacterIndex)
+ : mnLineStartCharacterIndex(nLineStartCharacterIndex),
+ mnLineEndCharacterIndex(nLineEndCharacterIndex),
+ mnLineStartCellIndex(-1), mnLineEndCellIndex(-1),
+ mxLayoutedLine(),
+ mnBaseLine(0), mnWidth(0),
+ maCellBoxes()
+{
+}
+
+
+
+
+sal_Int32 PresenterTextParagraph::Line::GetLength (void) const
+{
+ return mnLineEndCharacterIndex-mnLineStartCharacterIndex;
+}
+
+
+
+
+void PresenterTextParagraph::Line::ProvideCellBoxes (void)
+{
+ if ( ! IsEmpty() && maCellBoxes.getLength()==0)
+ {
+ if (mxLayoutedLine.is())
+ maCellBoxes = mxLayoutedLine->queryInkMeasures();
+ else
+ {
+ OSL_ASSERT(mxLayoutedLine.is());
+ }
+ }
+}
+
+
+
+
+void PresenterTextParagraph::Line::ProvideLayoutedLine (
+ const ::rtl::OUString& rsParagraphText,
+ const PresenterTheme::SharedFontDescriptor& rpFont,
+ const sal_Int8 nTextDirection)
+{
+ if ( ! mxLayoutedLine.is())
+ {
+ const rendering::StringContext aContext (
+ rsParagraphText,
+ mnLineStartCharacterIndex,
+ mnLineEndCharacterIndex - mnLineStartCharacterIndex);
+
+ mxLayoutedLine = rpFont->mxFont->createTextLayout(
+ aContext,
+ nTextDirection,
+ 0);
+ }
+}
+
+
+
+
+bool PresenterTextParagraph::Line::IsEmpty (void) const
+{
+ return mnLineStartCharacterIndex >= mnLineEndCharacterIndex;
+}
+
+
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterTextView.hxx b/sdext/source/presenter/PresenterTextView.hxx
new file mode 100644
index 000000000000..d8bf260443c1
--- /dev/null
+++ b/sdext/source/presenter/PresenterTextView.hxx
@@ -0,0 +1,322 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_TEXT_VIEW_HXX
+#define SDEXT_PRESENTER_TEXT_VIEW_HXX
+
+#include "PresenterTheme.hxx"
+#include <com/sun/star/accessibility/XAccessibleText.hpp>
+#include <com/sun/star/awt/Size.hpp>
+#include <com/sun/star/geometry/RealPoint2D.hpp>
+#include <com/sun/star/geometry/RealSize2D.hpp>
+#include <com/sun/star/i18n/XBreakIterator.hpp>
+#include <com/sun/star/i18n/XScriptTypeDetector.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/style/ParagraphAdjust.hpp>
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/basemutex.hxx>
+
+namespace css = ::com::sun::star;
+namespace cssu = ::com::sun::star::uno;
+namespace cssa = ::com::sun::star::accessibility;
+
+namespace sdext { namespace presenter {
+
+class PresenterTextCaret
+{
+public:
+ PresenterTextCaret (
+ const ::boost::function<css::awt::Rectangle(const sal_Int32,const sal_Int32)>&
+ rCharacterBoundsAccess,
+ const ::boost::function<void(const css::awt::Rectangle&)>&
+ rInvalidator);
+ ~PresenterTextCaret (void);
+
+ void ShowCaret (void);
+ void HideCaret (void);
+
+ sal_Int32 GetParagraphIndex (void) const;
+ sal_Int32 GetCharacterIndex (void) const;
+ void SetPosition (
+ const sal_Int32 nParagraphIndex,
+ const sal_Int32 nCharacterIndex);
+
+ bool IsVisible (void) const;
+
+ /** Set a (possibly empty) functor that broadcasts changes of the caret
+ position. This is used when a PresenterTextView object is set at
+ the accessibility object so that accessibility events can be sent
+ when the caret changes position.
+ */
+ void SetCaretMotionBroadcaster (
+ const ::boost::function<void(sal_Int32,sal_Int32,sal_Int32,sal_Int32)>& rBroadcaster);
+
+ css::awt::Rectangle GetBounds (void) const;
+
+private:
+ sal_Int32 mnParagraphIndex;
+ sal_Int32 mnCharacterIndex;
+ sal_Int32 mnCaretBlinkTaskId;
+ bool mbIsCaretVisible;
+ const ::boost::function<css::awt::Rectangle(const sal_Int32,const sal_Int32)> maCharacterBoundsAccess;
+ const ::boost::function<void(const css::awt::Rectangle&)> maInvalidator;
+ ::boost::function<void(sal_Int32,sal_Int32,sal_Int32,sal_Int32)> maBroadcaster;
+ css::awt::Rectangle maCaretBounds;
+
+ void InvertCaret (void);
+};
+typedef ::boost::shared_ptr<PresenterTextCaret> SharedPresenterTextCaret;
+
+
+
+
+//===== PresenterTextParagraph ================================================
+
+class PresenterTextParagraph
+{
+public:
+ PresenterTextParagraph (
+ const sal_Int32 nParagraphIndex,
+ const cssu::Reference<css::i18n::XBreakIterator>& rxBreakIterator,
+ const cssu::Reference<css::i18n::XScriptTypeDetector>& rxScriptTypeDetector,
+ const cssu::Reference<css::text::XTextRange>& rxTextRange,
+ const SharedPresenterTextCaret& rpCaret);
+ PresenterTextParagraph (
+ const sal_Int32 nParagraphIndex,
+ const cssu::Reference<css::i18n::XBreakIterator>& rxBreakIterator,
+ const cssu::Reference<css::i18n::XScriptTypeDetector>& rxScriptTypeDetector,
+ const ::rtl::OUString& rsText,
+ const SharedPresenterTextCaret& rpCaret);
+
+ void Paint (
+ const cssu::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::geometry::RealSize2D& rSize,
+ const PresenterTheme::SharedFontDescriptor& rpFont,
+ const css::rendering::ViewState& rViewState,
+ css::rendering::RenderState& rRenderState,
+ const double nTopOffset,
+ const double nClipTop,
+ const double nClipBottom);
+
+ sal_Int32 GetParagraphIndex (void) const;
+ double GetTotalTextHeight (void);
+
+ sal_Int32 GetCharacterOffset (void) const;
+ void SetCharacterOffset (const sal_Int32 nCharacterOffset);
+ sal_Int32 GetCharacterCount (void) const;
+ sal_Unicode GetCharacter (const sal_Int32 nGlobalCharacterIndex) const;
+ ::rtl::OUString GetText (void) const;
+ cssa::TextSegment GetTextSegment (
+ const sal_Int32 nOffset,
+ const sal_Int32 nGlobalCharacterIndex,
+ const sal_Int16 nTextType) const;
+ cssa::TextSegment GetWordTextSegment (
+ const sal_Int32 nOffset,
+ const sal_Int32 nIndex) const;
+ cssa::TextSegment CreateTextSegment (
+ sal_Int32 nStartIndex,
+ sal_Int32 nEndIndex) const;
+ css::awt::Rectangle GetCharacterBounds (
+ sal_Int32 nGlobalCharacterIndex,
+ const bool bCaretBox);
+ sal_Int32 GetIndexAtPoint (const css::awt::Point& rPoint) const;
+ void SetupCellArray (
+ const PresenterTheme::SharedFontDescriptor& rpFont);
+ void Format (
+ const double nY,
+ const double nWidth,
+ const PresenterTheme::SharedFontDescriptor& rpFont);
+ sal_Int32 GetWordBoundary(
+ const sal_Int32 nLocalCharacterIndex,
+ const sal_Int32 nDistance);
+ sal_Int32 GetCaretPosition (void) const;
+ void SetCaretPosition (const sal_Int32 nPosition) const;
+ void SetOrigin (const double nXOrigin, const double nYOrigin);
+ css::awt::Point GetRelativeLocation (void) const;
+ css::awt::Size GetSize (void);
+
+private:
+ ::rtl::OUString msParagraphText;
+ const sal_Int32 mnParagraphIndex;
+ SharedPresenterTextCaret mpCaret;
+
+ /** A portion of a string that encodes one unicode cell. It describes
+ number of characters in the unicode string that make up the cell and its
+ width in pixel (with respect to some configuration that is stored
+ externally or implicitly).
+ */
+ class Cell
+ {
+ public:
+ Cell (const sal_Int32 nCharacterIndex, const sal_Int32 nCharacterCount, const double nCellWidth);
+ sal_Int32 mnCharacterIndex;
+ sal_Int32 mnCharacterCount;
+ double mnCellWidth;
+ };
+
+ class Line
+ {
+ public:
+ Line (const sal_Int32 nLineStartCharacterIndex, const sal_Int32 nLineEndCharacterIndex);
+ sal_Int32 mnLineStartCharacterIndex;
+ sal_Int32 mnLineEndCharacterIndex;
+ sal_Int32 mnLineStartCellIndex;
+ sal_Int32 mnLineEndCellIndex;
+ cssu::Reference<css::rendering::XTextLayout> mxLayoutedLine;
+ double mnBaseLine;
+ double mnWidth;
+ cssu::Sequence<css::geometry::RealRectangle2D> maCellBoxes;
+
+ sal_Int32 GetLength (void) const;
+ void ProvideLayoutedLine (
+ const ::rtl::OUString& rsParagraphText,
+ const PresenterTheme::SharedFontDescriptor& rpFont,
+ const sal_Int8 nTextDirection);
+ void ProvideCellBoxes (void);
+ bool IsEmpty (void) const;
+ };
+
+
+ cssu::Reference<css::i18n::XBreakIterator> mxBreakIterator;
+ cssu::Reference<css::i18n::XScriptTypeDetector> mxScriptTypeDetector;
+ ::std::vector<Line> maLines;
+ ::std::vector<sal_Int32> maWordBoundaries;
+ // Offset of the top of the paragraph with respect to the origin of the
+ // whole text (specified by mnXOrigin and mnYOrigin).
+ double mnVerticalOffset;
+ double mnXOrigin;
+ double mnYOrigin;
+ double mnWidth;
+ double mnAscent;
+ double mnDescent;
+ double mnLineHeight;
+ css::style::ParagraphAdjust meAdjust;
+ sal_Int8 mnWritingMode;
+ /// The index of the first character in this paragraph with respect to
+ /// the whole text.
+ sal_Int32 mnCharacterOffset;
+ ::std::vector<Cell> maCells;
+
+ void AddWord (
+ const double nWidth,
+ css::i18n::Boundary& rCurrentLine,
+ const sal_Int32 nWordBoundary,
+ const PresenterTheme::SharedFontDescriptor& rpFont);
+ void AddLine (
+ css::i18n::Boundary& rCurrentLine);
+ sal_Int8 GetTextDirection (void) const;
+ bool IsTextReferencePointLeft (void) const;
+};
+typedef ::boost::shared_ptr<PresenterTextParagraph> SharedPresenterTextParagraph;
+
+
+
+
+/** A simple text view that paints text onto a given canvas.
+*/
+class PresenterTextView
+{
+public:
+
+ PresenterTextView (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const ::boost::function<void(const ::css::awt::Rectangle&)>& rInvalidator);
+ /** Create a new instance that does no output but only provides
+ geometric information to an accessibility object.
+ */
+ PresenterTextView (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas);
+
+ void SetText (const css::uno::Reference<css::text::XText>& rxText);
+ void SetText (const ::rtl::OUString& rsText);
+ void SetTextChangeBroadcaster (const ::boost::function<void(void)>& rBroadcaster);
+
+ void SetLocation (const css::geometry::RealPoint2D& rLocation);
+ void SetSize (const css::geometry::RealSize2D& rSize);
+ double GetTotalTextHeight (void);
+
+ void SetFont (const PresenterTheme::SharedFontDescriptor& rpFont);
+
+ void SetOffset (
+ const double nLeft,
+ const double nTop);
+
+ /** Move the caret forward or backward by character or by word.
+ @param nDistance
+ Should be either -1 or +1 to move caret backwards or forwards,
+ respectively.
+ @param nTextType
+ Valid values are the
+ com::sun::star::accessibility::AccessibleTextType constants.
+ */
+ void MoveCaret (
+ const sal_Int32 nDistance,
+ const sal_Int16 nTextType);
+
+ void Paint (const css::awt::Rectangle& rUpdateBox);
+
+ SharedPresenterTextCaret GetCaret (void) const;
+
+ sal_Int32 GetParagraphCount (void) const;
+ SharedPresenterTextParagraph GetParagraph (const sal_Int32 nParagraphIndex) const;
+
+private:
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ bool mbDoOuput;
+ css::uno::Reference<css::i18n::XBreakIterator> mxBreakIterator;
+ css::uno::Reference<css::i18n::XScriptTypeDetector> mxScriptTypeDetector;
+ css::geometry::RealPoint2D maLocation;
+ css::geometry::RealSize2D maSize;
+ PresenterTheme::SharedFontDescriptor mpFont;
+ ::std::vector<SharedPresenterTextParagraph> maParagraphs;
+ SharedPresenterTextCaret mpCaret;
+ double mnLeftOffset;
+ double mnTopOffset;
+ const ::boost::function<void(const ::css::awt::Rectangle&)> maInvalidator;
+ bool mbIsFormatPending;
+ sal_Int32 mnCharacterCount;
+ ::boost::function<void(void)> maTextChangeBroadcaster;
+
+ void RequestFormat (void);
+ void Format (void);
+ SharedPresenterTextParagraph GetParagraphForCharacterIndex (const sal_Int32 nCharacterIndex) const;
+ sal_Int32 GetCharacterOffset (const sal_Int32 nParagraphIndex) const;
+ css::awt::Rectangle GetCaretBounds (
+ const sal_Int32 nParagraphIndex,
+ const sal_Int32 nCharacterIndex) const;
+};
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterTheme.cxx b/sdext/source/presenter/PresenterTheme.cxx
new file mode 100644
index 000000000000..6688f7e8b679
--- /dev/null
+++ b/sdext/source/presenter/PresenterTheme.cxx
@@ -0,0 +1,1417 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterTheme.hxx"
+#include "PresenterBitmapContainer.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterComponent.hxx"
+#include "PresenterConfigurationAccess.hxx"
+#include "PresenterHelper.hxx"
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/beans/UnknownPropertyException.hpp>
+#include <com/sun/star/deployment/XPackageInformationProvider.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <com/sun/star/rendering/PanoseWeight.hpp>
+#include <com/sun/star/rendering/XBitmap.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <boost/bind.hpp>
+#include <map>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::std;
+using ::rtl::OUString;
+
+#define A2S(s) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)))
+
+namespace sdext { namespace presenter {
+
+namespace {
+
+class BorderSize
+{
+public:
+ const static sal_Int32 mnInvalidValue = -10000;
+
+ BorderSize (void) : mnLeft(mnInvalidValue),
+ mnTop(mnInvalidValue),
+ mnRight(mnInvalidValue),
+ mnBottom(mnInvalidValue) {}
+
+ sal_Int32 mnLeft;
+ sal_Int32 mnTop;
+ sal_Int32 mnRight;
+ sal_Int32 mnBottom;
+
+ vector<sal_Int32> ToVector (void)
+ {
+ vector<sal_Int32> aSequence (4);
+ aSequence[0] = mnLeft == mnInvalidValue ? 0 : mnLeft;
+ aSequence[1] = mnTop == mnInvalidValue ? 0 : mnTop;
+ aSequence[2] = mnRight == mnInvalidValue ? 0 : mnRight;
+ aSequence[3] = mnBottom == mnInvalidValue ? 0 : mnBottom;
+ return aSequence;
+ };
+
+
+ void Merge (const BorderSize& rBorderSize)
+ {
+ if (mnLeft == mnInvalidValue)
+ mnLeft = rBorderSize.mnLeft;
+ if (mnTop == mnInvalidValue)
+ mnTop = rBorderSize.mnTop;
+ if (mnRight == mnInvalidValue)
+ mnRight = rBorderSize.mnRight;
+ if (mnBottom == mnInvalidValue)
+ mnBottom = rBorderSize.mnBottom;
+ }
+};
+
+
+/** Reading a theme from the configurations is done in various classes. The
+ ReadContext gives access to frequently used objects and functions to make
+ the configuration handling easier.
+*/
+class ReadContext
+{
+public:
+ Reference<XComponentContext> mxComponentContext;
+ Reference<rendering::XCanvas> mxCanvas;
+ Reference<drawing::XPresenterHelper> mxPresenterHelper;
+ OUString msBasePath;
+
+ ReadContext (
+ const Reference<XComponentContext>& rxContext,
+ const Reference<rendering::XCanvas>& rxCanvas);
+ ~ReadContext (void);
+
+ /** Read data describing a font from the node that can be reached from
+ the given root via the given path.
+ @param rsFontPath
+ May be empty.
+ */
+ static PresenterTheme::SharedFontDescriptor ReadFont (
+ const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxTheme,
+ const ::rtl::OUString& rsFontPath,
+ const PresenterTheme::SharedFontDescriptor& rpDefault);
+ static PresenterTheme::SharedFontDescriptor ReadFont (
+ const Reference<beans::XPropertySet>& rxFontProperties,
+ const PresenterTheme::SharedFontDescriptor& rpDefault);
+
+ ::boost::shared_ptr<PresenterTheme::Theme> ReadTheme (
+ PresenterConfigurationAccess& rConfiguration,
+ const OUString& rsThemeName);
+
+ BorderSize ReadBorderSize (const Reference<container::XNameAccess>& rxNode);
+
+ void SetBitmapSourceExtension (const OUString& rsExtensionName);
+
+private:
+ Any GetByName (
+ const Reference<container::XNameAccess>& rxNode,
+ const OUString& rsName) const;
+};
+
+
+
+
+/** A PaneStyle describes how a pane is rendered.
+*/
+class PaneStyle
+{
+public:
+ PaneStyle (void);
+ ~PaneStyle (void);
+
+ const SharedBitmapDescriptor GetBitmap (const OUString& sBitmapName) const;
+
+ OUString msStyleName;
+ ::boost::shared_ptr<PaneStyle> mpParentStyle;
+ PresenterTheme::SharedFontDescriptor mpFont;
+ BorderSize maInnerBorderSize;
+ BorderSize maOuterBorderSize;
+ ::boost::shared_ptr<PresenterBitmapContainer> mpBitmaps;
+
+ PresenterTheme::SharedFontDescriptor GetFont (void) const;
+
+private:
+
+ void UpdateBorderSize (BorderSize& rBorderSize, bool bInner);
+};
+
+typedef ::boost::shared_ptr<PaneStyle> SharedPaneStyle;
+
+
+
+
+class PaneStyleContainer : vector<SharedPaneStyle>
+{
+public:
+ void Read (
+ ReadContext& rReadContext,
+ const Reference<container::XHierarchicalNameAccess>& rThemeRoot);
+
+ SharedPaneStyle GetPaneStyle (const OUString& rsStyleName) const;
+
+private:
+ void ProcessPaneStyle (
+ ReadContext& rReadContext,
+ const ::rtl::OUString& rsKey,
+ const ::std::vector<css::uno::Any>& rValues);
+};
+
+
+
+
+/** A ViewStyle describes how a view is displayed.
+*/
+class ViewStyle
+{
+public:
+ ViewStyle (void);
+ ~ViewStyle (void);
+
+ const SharedBitmapDescriptor GetBitmap (const OUString& sBitmapName) const;
+
+ PresenterTheme::SharedFontDescriptor GetFont (void) const;
+
+ OUString msStyleName;
+ ::boost::shared_ptr<ViewStyle> mpParentStyle;
+ PresenterTheme::SharedFontDescriptor mpFont;
+ ::boost::shared_ptr<PresenterBitmapContainer> mpBitmaps;
+ SharedBitmapDescriptor mpBackground;
+};
+
+typedef ::boost::shared_ptr<ViewStyle> SharedViewStyle;
+
+
+
+
+class ViewStyleContainer : vector<SharedViewStyle>
+{
+public:
+ void Read (
+ ReadContext& rReadContext,
+ const Reference<container::XHierarchicalNameAccess>& rThemeRoot);
+
+ SharedViewStyle GetViewStyle (const OUString& rsStyleName) const;
+
+private:
+ void ProcessViewStyle(
+ ReadContext& rReadContext,
+ const Reference<beans::XPropertySet>& rxProperties);
+};
+
+
+
+
+class ViewDescriptor
+{
+};
+typedef ::boost::shared_ptr<ViewDescriptor> SharedViewDescriptor;
+typedef ::std::vector<SharedViewDescriptor> ViewDescriptorContainer;
+
+
+
+class StyleAssociationContainer
+{
+public:
+ void Read (
+ ReadContext& rReadContext,
+ const Reference<container::XHierarchicalNameAccess>& rThemeRoot);
+
+ OUString GetStyleName (const OUString& rsResourceName) const;
+
+private:
+ typedef map<OUString, OUString> StyleAssociations;
+ StyleAssociations maStyleAssociations;
+
+ void ProcessStyleAssociation(
+ ReadContext& rReadContext,
+ const ::rtl::OUString& rsKey,
+ const ::std::vector<css::uno::Any>& rValues);
+};
+
+} // end of anonymous namespace
+
+
+class PresenterTheme::Theme
+{
+public:
+ Theme (
+ const OUString& rsName,
+ const Reference<container::XHierarchicalNameAccess>& rThemeRoot,
+ const OUString& rsNodeName);
+ ~Theme (void);
+
+ void Read (
+ PresenterConfigurationAccess& rConfiguration,
+ ReadContext& rReadContext);
+
+ OUString msThemeName;
+ OUString msConfigurationNodeName;
+ ::boost::shared_ptr<Theme> mpParentTheme;
+ SharedBitmapDescriptor mpBackground;
+ PaneStyleContainer maPaneStyles;
+ ViewStyleContainer maViewStyles;
+ ViewDescriptorContainer maViewDescriptors;
+ StyleAssociationContainer maStyleAssociations;
+ Reference<container::XHierarchicalNameAccess> mxThemeRoot;
+ ::boost::shared_ptr<PresenterBitmapContainer> mpIconContainer;
+ typedef map<rtl::OUString,SharedFontDescriptor> FontContainer;
+ FontContainer maFontContainer;
+
+ SharedPaneStyle GetPaneStyle (const OUString& rsStyleName) const;
+ SharedViewStyle GetViewStyle (const OUString& rsStyleName) const;
+
+private:
+ void ProcessFont(
+ ReadContext& rReadContext,
+ const OUString& rsKey,
+ const Reference<beans::XPropertySet>& rxProperties);
+};
+
+
+
+
+//===== PresenterTheme ========================================================
+
+PresenterTheme::PresenterTheme (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const rtl::OUString& rsThemeName,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas)
+ : mxContext(rxContext),
+ msThemeName(rsThemeName),
+ mpTheme(),
+ mpBitmapContainer(),
+ mxCanvas(rxCanvas)
+{
+ mpTheme = ReadTheme();
+}
+
+
+
+
+PresenterTheme::~PresenterTheme (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterTheme::disposing (void)
+{
+}
+
+
+
+
+::boost::shared_ptr<PresenterTheme::Theme> PresenterTheme::ReadTheme (void)
+{
+ ReadContext aReadContext(mxContext, mxCanvas);
+
+ PresenterConfigurationAccess aConfiguration (
+ mxContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_ONLY);
+
+ return aReadContext.ReadTheme(aConfiguration, msThemeName);
+}
+
+
+
+
+bool PresenterTheme::HasCanvas (void) const
+{
+ return mxCanvas.is();
+}
+
+
+
+
+void PresenterTheme::ProvideCanvas (const Reference<rendering::XCanvas>& rxCanvas)
+{
+ if ( ! mxCanvas.is() && rxCanvas.is())
+ {
+ mxCanvas = rxCanvas;
+ ReadTheme();
+ }
+}
+
+
+
+
+OUString PresenterTheme::GetStyleName (const ::rtl::OUString& rsResourceURL) const
+{
+ OUString sStyleName;
+ ::boost::shared_ptr<Theme> pTheme (mpTheme);
+ while (sStyleName.getLength()==0 && pTheme.get()!=NULL)
+ {
+ sStyleName = pTheme->maStyleAssociations.GetStyleName(rsResourceURL);
+ pTheme = pTheme->mpParentTheme;
+ }
+ return sStyleName;
+}
+
+
+
+
+::std::vector<sal_Int32> PresenterTheme::GetBorderSize (
+ const ::rtl::OUString& rsStyleName,
+ const bool bOuter) const
+{
+ OSL_ASSERT(mpTheme.get() != NULL);
+
+ SharedPaneStyle pPaneStyle (mpTheme->GetPaneStyle(rsStyleName));
+ if (pPaneStyle.get() != NULL)
+ if (bOuter)
+ return pPaneStyle->maOuterBorderSize.ToVector();
+ else
+ return pPaneStyle->maInnerBorderSize.ToVector();
+ else
+ {
+ return ::std::vector<sal_Int32>(4,0);
+ }
+}
+
+
+
+
+PresenterTheme::SharedFontDescriptor PresenterTheme::ReadFont (
+ const Reference<container::XHierarchicalNameAccess>& rxNode,
+ const OUString& rsFontPath,
+ const PresenterTheme::SharedFontDescriptor& rpDefault)
+{
+ return ReadContext::ReadFont(rxNode, rsFontPath, rpDefault);
+}
+
+
+
+
+bool PresenterTheme::ConvertToColor (
+ const Any& rColorSequence,
+ sal_uInt32& rColor)
+{
+ Sequence<sal_Int8> aByteSequence;
+ if (rColorSequence >>= aByteSequence)
+ {
+ const sal_Int32 nByteCount (aByteSequence.getLength());
+ const sal_uInt8* pArray = reinterpret_cast<const sal_uInt8*>(aByteSequence.getConstArray());
+ rColor = 0;
+ for (sal_Int32 nIndex=0; nIndex<nByteCount; ++nIndex)
+ {
+ rColor = (rColor << 8) | *pArray++;
+ }
+ return true;
+ }
+ else
+ return false;
+}
+
+
+
+
+::boost::shared_ptr<PresenterConfigurationAccess> PresenterTheme::GetNodeForViewStyle (
+ const ::rtl::OUString& rsStyleName,
+ const PresenterConfigurationAccess::WriteMode) const
+{
+ if (mpTheme.get() == NULL)
+ return ::boost::shared_ptr<PresenterConfigurationAccess>();
+
+ // Open configuration for writing.
+ ::boost::shared_ptr<PresenterConfigurationAccess> pConfiguration (
+ new PresenterConfigurationAccess(
+ mxContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_WRITE));
+
+ // Get configuration node for the view style container of the current
+ // theme.
+ if (pConfiguration->GoToChild(
+ A2S("Presenter/Themes/") + mpTheme->msConfigurationNodeName + A2S("/ViewStyles")))
+ {
+ pConfiguration->GoToChild(
+ ::boost::bind(&PresenterConfigurationAccess::IsStringPropertyEqual,
+ rsStyleName,
+ A2S("StyleName"),
+ _2));
+ }
+ return pConfiguration;
+}
+
+
+
+
+::rtl::OUString PresenterTheme::GetThemeName (void) const
+{
+ if (mpTheme.get() != NULL)
+ return mpTheme->msThemeName;
+ else
+ return OUString();
+}
+
+
+
+
+SharedBitmapDescriptor PresenterTheme::GetBitmap (
+ const OUString& rsStyleName,
+ const OUString& rsBitmapName) const
+{
+ if (mpTheme.get() != NULL)
+ {
+ if (rsStyleName.getLength() == 0)
+ {
+ if (rsBitmapName == A2S("Background"))
+ {
+ ::boost::shared_ptr<Theme> pTheme (mpTheme);
+ while (pTheme.get()!=NULL && pTheme->mpBackground.get()==NULL)
+ pTheme = pTheme->mpParentTheme;
+ if (pTheme.get() != NULL)
+ return pTheme->mpBackground;
+ else
+ return SharedBitmapDescriptor();
+ }
+ }
+ else
+ {
+ SharedPaneStyle pPaneStyle (mpTheme->GetPaneStyle(rsStyleName));
+ if (pPaneStyle.get() != NULL)
+ {
+ SharedBitmapDescriptor pBitmap (pPaneStyle->GetBitmap(rsBitmapName));
+ if (pBitmap.get() != NULL)
+ return pBitmap;
+ }
+
+ SharedViewStyle pViewStyle (mpTheme->GetViewStyle(rsStyleName));
+ if (pViewStyle.get() != NULL)
+ {
+ SharedBitmapDescriptor pBitmap (pViewStyle->GetBitmap(rsBitmapName));
+ if (pBitmap.get() != NULL)
+ return pBitmap;
+ }
+ }
+ }
+
+ return SharedBitmapDescriptor();
+}
+
+
+
+
+SharedBitmapDescriptor PresenterTheme::GetBitmap (
+ const OUString& rsBitmapName) const
+{
+ if (mpTheme.get() != NULL)
+ {
+ if (rsBitmapName == A2S("Background"))
+ {
+ ::boost::shared_ptr<Theme> pTheme (mpTheme);
+ while (pTheme.get()!=NULL && pTheme->mpBackground.get()==NULL)
+ pTheme = pTheme->mpParentTheme;
+ if (pTheme.get() != NULL)
+ return pTheme->mpBackground;
+ else
+ return SharedBitmapDescriptor();
+ }
+ else
+ {
+ if (mpTheme->mpIconContainer.get() != NULL)
+ return mpTheme->mpIconContainer->GetBitmap(rsBitmapName);
+ }
+ }
+
+ return SharedBitmapDescriptor();
+}
+
+
+
+
+::boost::shared_ptr<PresenterBitmapContainer> PresenterTheme::GetBitmapContainer (void) const
+{
+ if (mpTheme.get() != NULL)
+ return mpTheme->mpIconContainer;
+ else
+ return ::boost::shared_ptr<PresenterBitmapContainer>();
+}
+
+
+
+
+PresenterTheme::SharedFontDescriptor PresenterTheme::GetFont (
+ const OUString& rsStyleName) const
+{
+ if (mpTheme.get() != NULL)
+ {
+ SharedPaneStyle pPaneStyle (mpTheme->GetPaneStyle(rsStyleName));
+ if (pPaneStyle.get() != NULL)
+ return pPaneStyle->GetFont();
+
+ SharedViewStyle pViewStyle (mpTheme->GetViewStyle(rsStyleName));
+ if (pViewStyle.get() != NULL)
+ return pViewStyle->GetFont();
+
+ ::boost::shared_ptr<Theme> pTheme (mpTheme);
+ while (pTheme.get() != NULL)
+ {
+ Theme::FontContainer::const_iterator iFont (pTheme->maFontContainer.find(rsStyleName));
+ if (iFont != pTheme->maFontContainer.end())
+ return iFont->second;
+
+ pTheme = pTheme->mpParentTheme;
+ }
+ }
+
+ return SharedFontDescriptor();
+}
+
+
+
+
+//===== FontDescriptor ========================================================
+
+PresenterTheme::FontDescriptor::FontDescriptor (void)
+ : msFamilyName(),
+ msStyleName(),
+ mnSize(12),
+ mnColor(0x00000000),
+ msAnchor(OUString(RTL_CONSTASCII_USTRINGPARAM("Left"))),
+ mnXOffset(0),
+ mnYOffset(0)
+{
+}
+
+
+
+
+PresenterTheme::FontDescriptor::FontDescriptor (
+ const ::boost::shared_ptr<FontDescriptor>& rpDescriptor)
+ : msFamilyName(),
+ msStyleName(),
+ mnSize(12),
+ mnColor(0x00000000),
+ msAnchor(OUString(RTL_CONSTASCII_USTRINGPARAM("Left"))),
+ mnXOffset(0),
+ mnYOffset(0)
+{
+ if (rpDescriptor.get() != NULL)
+ {
+ msFamilyName = rpDescriptor->msFamilyName;
+ msStyleName = rpDescriptor->msStyleName;
+ mnSize = rpDescriptor->mnSize;
+ mnColor = rpDescriptor->mnColor;
+ msAnchor = rpDescriptor->msAnchor;
+ mnXOffset = rpDescriptor->mnXOffset;
+ mnYOffset = rpDescriptor->mnYOffset;
+ }
+}
+
+
+
+
+bool PresenterTheme::FontDescriptor::PrepareFont (
+ const Reference<rendering::XCanvas>& rxCanvas)
+{
+ if (mxFont.is())
+ return true;
+
+ if ( ! rxCanvas.is())
+ return false;
+
+
+ const double nCellSize (GetCellSizeForDesignSize(rxCanvas, mnSize));
+ mxFont = CreateFont(rxCanvas, nCellSize);
+
+ return mxFont.is();
+}
+
+
+
+
+Reference<rendering::XCanvasFont> PresenterTheme::FontDescriptor::CreateFont (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const double nCellSize) const
+{
+ rendering::FontRequest aFontRequest;
+ aFontRequest.FontDescription.FamilyName = msFamilyName;
+ if (msFamilyName.getLength() == 0)
+ aFontRequest.FontDescription.FamilyName = A2S("Tahoma");
+ aFontRequest.FontDescription.StyleName = msStyleName;
+ aFontRequest.CellSize = nCellSize;
+
+ // Make an attempt at translating the style name(s)into a corresponding
+ // font description.
+ if (msStyleName == A2S("Bold"))
+ aFontRequest.FontDescription.FontDescription.Weight = rendering::PanoseWeight::HEAVY;
+
+ return rxCanvas->createFont(
+ aFontRequest,
+ Sequence<beans::PropertyValue>(),
+ geometry::Matrix2D(1,0,0,1));
+}
+
+
+
+
+double PresenterTheme::FontDescriptor::GetCellSizeForDesignSize (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const double nDesignSize) const
+{
+ // Use the given design size as initial value in calculating the cell
+ // size.
+ double nCellSize (nDesignSize);
+
+ if ( ! rxCanvas.is())
+ {
+ // We need the canvas to do the conversion. Return the design size,
+ // it is the our best guess in this circumstance.
+ return nDesignSize;
+ }
+
+ Reference<rendering::XCanvasFont> xFont (CreateFont(rxCanvas, nCellSize));
+ if ( ! xFont.is())
+ return nDesignSize;
+
+ geometry::RealRectangle2D aBox (PresenterCanvasHelper::GetTextBoundingBox (xFont, A2S("X")));
+
+ const double nAscent (-aBox.Y1);
+ const double nDescent (aBox.Y2);
+ const double nScale = (nAscent+nDescent) / nAscent;
+ return nDesignSize * nScale;
+}
+
+
+
+
+//===== Theme =================================================================
+
+PresenterTheme::Theme::Theme (
+ const OUString& rsName,
+ const Reference<container::XHierarchicalNameAccess>& rxThemeRoot,
+ const OUString& rsNodeName)
+ : msThemeName(rsName),
+ msConfigurationNodeName(rsNodeName),
+ mpParentTheme(),
+ maPaneStyles(),
+ maViewStyles(),
+ maStyleAssociations(),
+ mxThemeRoot(rxThemeRoot),
+ mpIconContainer()
+{
+}
+
+
+
+
+PresenterTheme::Theme::~Theme (void)
+{
+}
+
+
+
+
+void PresenterTheme::Theme::Read (
+ PresenterConfigurationAccess& rConfiguration,
+ ReadContext& rReadContext)
+{
+ PresenterConfigurationAccess::GetConfigurationNode(mxThemeRoot, A2S("ThemeName"))
+ >>= msThemeName;
+
+ // Parent theme name.
+ OUString sParentThemeName;
+ if ((PresenterConfigurationAccess::GetConfigurationNode(mxThemeRoot, A2S("ParentTheme"))
+ >>= sParentThemeName)
+ && sParentThemeName.getLength()>0)
+ {
+ mpParentTheme = rReadContext.ReadTheme(rConfiguration, sParentThemeName);
+ }
+
+ // Read the extension that contains the bitmaps referenced in this
+ // theme.
+ OUString sBitmapSourceExtension;
+ if ((PresenterConfigurationAccess::GetConfigurationNode(
+ mxThemeRoot, A2S("BitmapSourceExtension")) >>= sBitmapSourceExtension)
+ && sBitmapSourceExtension.getLength()>0)
+ {
+ rReadContext.SetBitmapSourceExtension(sBitmapSourceExtension);
+ }
+ else
+ {
+ rReadContext.SetBitmapSourceExtension(PresenterComponent::gsExtensionIdentifier);
+ }
+
+ // Background.
+ mpBackground = PresenterBitmapContainer::LoadBitmap(
+ mxThemeRoot,
+ A2S("Background"),
+ rReadContext.mxPresenterHelper,
+ rReadContext.msBasePath,
+ rReadContext.mxCanvas,
+ SharedBitmapDescriptor());
+
+ // Style associations.
+ maStyleAssociations.Read(rReadContext, mxThemeRoot);
+
+ // Pane styles.
+ maPaneStyles.Read(rReadContext, mxThemeRoot);
+
+ // View styles.
+ maViewStyles.Read(rReadContext, mxThemeRoot);
+
+ // Read bitmaps.
+ mpIconContainer.reset(
+ new PresenterBitmapContainer(
+ Reference<container::XNameAccess>(
+ PresenterConfigurationAccess::GetConfigurationNode(mxThemeRoot, A2S("Bitmaps")),
+ UNO_QUERY),
+ mpParentTheme.get()!=NULL
+ ? mpParentTheme->mpIconContainer
+ : ::boost::shared_ptr<PresenterBitmapContainer>(),
+ rReadContext.mxComponentContext,
+ rReadContext.mxCanvas,
+ rReadContext.msBasePath));
+
+ // Read fonts.
+ Reference<container::XNameAccess> xFontNode(
+ PresenterConfigurationAccess::GetConfigurationNode(mxThemeRoot, A2S("Fonts")),
+ UNO_QUERY);
+ PresenterConfigurationAccess::ForAll(
+ xFontNode,
+ ::boost::bind(&PresenterTheme::Theme::ProcessFont,
+ this, ::boost::ref(rReadContext), _1, _2));
+}
+
+
+
+
+SharedPaneStyle PresenterTheme::Theme::GetPaneStyle (const OUString& rsStyleName) const
+{
+ SharedPaneStyle pPaneStyle (maPaneStyles.GetPaneStyle(rsStyleName));
+ if (pPaneStyle.get() != NULL)
+ return pPaneStyle;
+ else if (mpParentTheme.get() != NULL)
+ return mpParentTheme->GetPaneStyle(rsStyleName);
+ else
+ return SharedPaneStyle();
+}
+
+
+
+
+SharedViewStyle PresenterTheme::Theme::GetViewStyle (const OUString& rsStyleName) const
+{
+ SharedViewStyle pViewStyle (maViewStyles.GetViewStyle(rsStyleName));
+ if (pViewStyle.get() != NULL)
+ return pViewStyle;
+ else if (mpParentTheme.get() != NULL)
+ return mpParentTheme->GetViewStyle(rsStyleName);
+ else
+ return SharedViewStyle();
+}
+
+
+
+
+void PresenterTheme::Theme::ProcessFont(
+ ReadContext& rReadContext,
+ const OUString& rsKey,
+ const Reference<beans::XPropertySet>& rxProperties)
+{
+ (void)rReadContext;
+ maFontContainer[rsKey] = ReadContext::ReadFont(rxProperties, SharedFontDescriptor());
+}
+
+
+
+
+namespace {
+
+//===== ReadContext ===========================================================
+
+ReadContext::ReadContext (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const Reference<rendering::XCanvas>& rxCanvas)
+ : mxComponentContext(rxContext),
+ mxCanvas(rxCanvas),
+ mxPresenterHelper(),
+ msBasePath()
+{
+ Reference<lang::XMultiComponentFactory> xFactory (rxContext->getServiceManager());
+ if (xFactory.is())
+ {
+ mxPresenterHelper = Reference<drawing::XPresenterHelper>(
+ xFactory->createInstanceWithContext(
+ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.PresenterHelper")),
+ rxContext),
+ UNO_QUERY_THROW);
+ }
+
+ // Get base path to bitmaps.
+ SetBitmapSourceExtension(PresenterComponent::gsExtensionIdentifier);
+}
+
+
+
+
+ReadContext::~ReadContext (void)
+{
+}
+
+
+
+
+PresenterTheme::SharedFontDescriptor ReadContext::ReadFont (
+ const Reference<container::XHierarchicalNameAccess>& rxNode,
+ const OUString& rsFontPath,
+ const PresenterTheme::SharedFontDescriptor& rpDefault)
+{
+ if ( ! rxNode.is())
+ return PresenterTheme::SharedFontDescriptor();
+
+ try
+ {
+ Reference<container::XHierarchicalNameAccess> xFont (
+ PresenterConfigurationAccess::GetConfigurationNode(
+ rxNode,
+ rsFontPath),
+ UNO_QUERY_THROW);
+
+ Reference<beans::XPropertySet> xProperties (xFont, UNO_QUERY_THROW);
+ return ReadFont(xProperties, rpDefault);
+ }
+ catch (Exception&)
+ {
+ OSL_ASSERT(false);
+ }
+
+ return PresenterTheme::SharedFontDescriptor();
+}
+
+
+
+
+PresenterTheme::SharedFontDescriptor ReadContext::ReadFont (
+ const Reference<beans::XPropertySet>& rxProperties,
+ const PresenterTheme::SharedFontDescriptor& rpDefault)
+{
+ ::boost::shared_ptr<PresenterTheme::FontDescriptor> pDescriptor (
+ new PresenterTheme::FontDescriptor(rpDefault));
+
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("FamilyName")) >>= pDescriptor->msFamilyName;
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("Style")) >>= pDescriptor->msStyleName;
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("Size")) >>= pDescriptor->mnSize;
+ PresenterTheme::ConvertToColor(
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("Color")),
+ pDescriptor->mnColor);
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("Anchor")) >>= pDescriptor->msAnchor;
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("XOffset")) >>= pDescriptor->mnXOffset;
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("YOffset")) >>= pDescriptor->mnYOffset;
+
+ return pDescriptor;
+}
+
+
+
+
+Any ReadContext::GetByName (
+ const Reference<container::XNameAccess>& rxNode,
+ const OUString& rsName) const
+{
+ OSL_ASSERT(rxNode.is());
+ if (rxNode->hasByName(rsName))
+ return rxNode->getByName(rsName);
+ else
+ return Any();
+}
+
+
+
+
+::boost::shared_ptr<PresenterTheme::Theme> ReadContext::ReadTheme (
+ PresenterConfigurationAccess& rConfiguration,
+ const OUString& rsThemeName)
+{
+ ::boost::shared_ptr<PresenterTheme::Theme> pTheme;
+
+ OUString sCurrentThemeName (rsThemeName);
+ if (sCurrentThemeName.getLength() == 0)
+ {
+ // No theme name given. Look up the CurrentTheme property.
+ rConfiguration.GetConfigurationNode(A2S("Presenter/CurrentTheme")) >>= sCurrentThemeName;
+ if (sCurrentThemeName.getLength() == 0)
+ {
+ // Still no name. Use "DefaultTheme".
+ sCurrentThemeName = A2S("DefaultTheme");
+ }
+ }
+
+ Reference<container::XNameAccess> xThemes (
+ rConfiguration.GetConfigurationNode(A2S("Presenter/Themes")),
+ UNO_QUERY);
+ if (xThemes.is())
+ {
+ // Iterate over all themes and search the one with the given name.
+ Sequence<OUString> aKeys (xThemes->getElementNames());
+ for (sal_Int32 nItemIndex=0; nItemIndex<aKeys.getLength(); ++nItemIndex)
+ {
+ const OUString& rsKey (aKeys[nItemIndex]);
+ Reference<container::XHierarchicalNameAccess> xTheme (
+ xThemes->getByName(rsKey), UNO_QUERY);
+ if (xTheme.is())
+ {
+ OUString sThemeName;
+ PresenterConfigurationAccess::GetConfigurationNode(xTheme, A2S("ThemeName"))
+ >>= sThemeName;
+ if (sThemeName == sCurrentThemeName)
+ {
+ pTheme.reset(new PresenterTheme::Theme(sThemeName,xTheme,rsKey));
+ break;
+ }
+ }
+ }
+ }
+
+ if (pTheme.get() != NULL)
+ {
+ pTheme->Read(rConfiguration, *this);
+ }
+
+ return pTheme;
+}
+
+
+
+
+BorderSize ReadContext::ReadBorderSize (const Reference<container::XNameAccess>& rxNode)
+{
+ BorderSize aBorderSize;
+
+ if (rxNode.is())
+ {
+ GetByName(rxNode, A2S("Left")) >>= aBorderSize.mnLeft;
+ GetByName(rxNode, A2S("Top")) >>= aBorderSize.mnTop;
+ GetByName(rxNode, A2S("Right")) >>= aBorderSize.mnRight;
+ GetByName(rxNode, A2S("Bottom")) >>= aBorderSize.mnBottom;
+ }
+
+ return aBorderSize;
+}
+
+
+
+
+void ReadContext::SetBitmapSourceExtension (const OUString& rsExtensionIdentifier)
+{
+ // Get base path to bitmaps.
+ msBasePath = PresenterComponent::GetBasePath(mxComponentContext, rsExtensionIdentifier);
+}
+
+
+
+
+//===== PaneStyleContainer ====================================================
+
+void PaneStyleContainer::Read (
+ ReadContext& rReadContext,
+ const Reference<container::XHierarchicalNameAccess>& rxThemeRoot)
+{
+ Reference<container::XNameAccess> xPaneStyleList (
+ PresenterConfigurationAccess::GetConfigurationNode(
+ rxThemeRoot,
+ A2S("PaneStyles")),
+ UNO_QUERY);
+ if (xPaneStyleList.is())
+ {
+ ::std::vector<rtl::OUString> aProperties;
+ aProperties.reserve(6);
+ aProperties.push_back(A2S("StyleName"));
+ aProperties.push_back(A2S("ParentStyle"));
+ aProperties.push_back(A2S("TitleFont"));
+ aProperties.push_back(A2S("InnerBorderSize"));
+ aProperties.push_back(A2S("OuterBorderSize"));
+ aProperties.push_back(A2S("BorderBitmapList"));
+ PresenterConfigurationAccess::ForAll(
+ xPaneStyleList,
+ aProperties,
+ ::boost::bind(&PaneStyleContainer::ProcessPaneStyle,
+ this, ::boost::ref(rReadContext), _1, _2));
+ }
+}
+
+
+
+
+void PaneStyleContainer::ProcessPaneStyle(
+ ReadContext& rReadContext,
+ const OUString& rsKey,
+ const ::std::vector<Any>& rValues)
+{
+ (void)rsKey;
+
+ if (rValues.size() != 6)
+ return;
+
+ ::boost::shared_ptr<PaneStyle> pStyle (new PaneStyle());
+
+ rValues[0] >>= pStyle->msStyleName;
+
+ OUString sParentStyleName;
+ if (rValues[1] >>= sParentStyleName)
+ {
+ // Find parent style.
+ PaneStyleContainer::const_iterator iStyle;
+ for (iStyle=begin(); iStyle!=end(); ++iStyle)
+ if ((*iStyle)->msStyleName.equals(sParentStyleName))
+ {
+ pStyle->mpParentStyle = *iStyle;
+ break;
+ }
+ }
+
+ Reference<container::XHierarchicalNameAccess> xFontNode (rValues[2], UNO_QUERY);
+ pStyle->mpFont = rReadContext.ReadFont(
+ xFontNode, A2S(""), PresenterTheme::SharedFontDescriptor());
+
+ Reference<container::XNameAccess> xInnerBorderSizeNode (rValues[3], UNO_QUERY);
+ pStyle->maInnerBorderSize = rReadContext.ReadBorderSize(xInnerBorderSizeNode);
+ Reference<container::XNameAccess> xOuterBorderSizeNode (rValues[4], UNO_QUERY);
+ pStyle->maOuterBorderSize = rReadContext.ReadBorderSize(xOuterBorderSizeNode);
+
+ if (pStyle->mpParentStyle.get() != NULL)
+ {
+ pStyle->maInnerBorderSize.Merge(pStyle->mpParentStyle->maInnerBorderSize);
+ pStyle->maOuterBorderSize.Merge(pStyle->mpParentStyle->maOuterBorderSize);
+ }
+
+ if (rReadContext.mxCanvas.is())
+ {
+ Reference<container::XNameAccess> xBitmapsNode (rValues[5], UNO_QUERY);
+ pStyle->mpBitmaps.reset(new PresenterBitmapContainer(
+ xBitmapsNode,
+ pStyle->mpParentStyle.get()!=NULL
+ ? pStyle->mpParentStyle->mpBitmaps
+ : ::boost::shared_ptr<PresenterBitmapContainer>(),
+ rReadContext.mxComponentContext,
+ rReadContext.mxCanvas,
+ rReadContext.msBasePath,
+ rReadContext.mxPresenterHelper));
+ }
+
+ push_back(pStyle);
+}
+
+
+
+
+SharedPaneStyle PaneStyleContainer::GetPaneStyle (const OUString& rsStyleName) const
+{
+ const_iterator iEnd (end());
+ for (const_iterator iStyle=begin(); iStyle!=iEnd; ++iStyle)
+ if ((*iStyle)->msStyleName == rsStyleName)
+ return *iStyle;
+ return SharedPaneStyle();
+}
+
+
+
+
+//===== PaneStyle =============================================================
+
+PaneStyle::PaneStyle (void)
+ : msStyleName(),
+ mpParentStyle(),
+ mpFont(),
+ maInnerBorderSize(),
+ maOuterBorderSize(),
+ mpBitmaps()
+{
+}
+
+
+
+
+PaneStyle::~PaneStyle (void)
+{
+}
+
+
+
+
+void PaneStyle::UpdateBorderSize (BorderSize& rBorderSize, bool bInner)
+{
+ if (mpParentStyle.get() != NULL)
+ mpParentStyle->UpdateBorderSize(rBorderSize, bInner);
+
+ BorderSize& rThisBorderSize (bInner ? maInnerBorderSize : maOuterBorderSize);
+ if (rThisBorderSize.mnLeft >= 0)
+ rBorderSize.mnLeft = rThisBorderSize.mnLeft;
+ if (rThisBorderSize.mnTop >= 0)
+ rBorderSize.mnTop = rThisBorderSize.mnTop;
+ if (rThisBorderSize.mnRight >= 0)
+ rBorderSize.mnRight = rThisBorderSize.mnRight;
+ if (rThisBorderSize.mnBottom >= 0)
+ rBorderSize.mnBottom = rThisBorderSize.mnBottom;
+}
+
+
+
+
+const SharedBitmapDescriptor PaneStyle::GetBitmap (const OUString& rsBitmapName) const
+{
+ if (mpBitmaps.get() != NULL)
+ {
+ const SharedBitmapDescriptor pBitmap = mpBitmaps->GetBitmap(rsBitmapName);
+ if (pBitmap.get() != NULL)
+ return pBitmap;
+ }
+
+ if (mpParentStyle.get() != NULL)
+ return mpParentStyle->GetBitmap(rsBitmapName);
+ else
+ return SharedBitmapDescriptor();
+}
+
+
+
+
+PresenterTheme::SharedFontDescriptor PaneStyle::GetFont (void) const
+{
+ if (mpFont.get() != NULL)
+ return mpFont;
+ else if (mpParentStyle.get() != NULL)
+ return mpParentStyle->GetFont();
+ else
+ return PresenterTheme::SharedFontDescriptor();
+}
+
+
+
+
+//===== ViewStyleContainer ====================================================
+
+void ViewStyleContainer::Read (
+ ReadContext& rReadContext,
+ const Reference<container::XHierarchicalNameAccess>& rxThemeRoot)
+{
+ (void)rReadContext;
+
+ Reference<container::XNameAccess> xViewStyleList (
+ PresenterConfigurationAccess::GetConfigurationNode(
+ rxThemeRoot,
+ A2S("ViewStyles")),
+ UNO_QUERY);
+ if (xViewStyleList.is())
+ {
+ PresenterConfigurationAccess::ForAll(
+ xViewStyleList,
+ ::boost::bind(&ViewStyleContainer::ProcessViewStyle,
+ this, ::boost::ref(rReadContext), _2));
+ }
+}
+
+
+
+
+void ViewStyleContainer::ProcessViewStyle(
+ ReadContext& rReadContext,
+ const Reference<beans::XPropertySet>& rxProperties)
+{
+ ::boost::shared_ptr<ViewStyle> pStyle (new ViewStyle());
+
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("StyleName"))
+ >>= pStyle->msStyleName;
+
+ OUString sParentStyleName;
+ if (PresenterConfigurationAccess::GetProperty(rxProperties, A2S("ParentStyle"))
+ >>= sParentStyleName)
+ {
+ // Find parent style.
+ ViewStyleContainer::const_iterator iStyle;
+ for (iStyle=begin(); iStyle!=end(); ++iStyle)
+ if ((*iStyle)->msStyleName.equals(sParentStyleName))
+ {
+ pStyle->mpParentStyle = *iStyle;
+ pStyle->mpFont = (*iStyle)->mpFont;
+ pStyle->mpBackground = (*iStyle)->mpBackground;
+ break;
+ }
+ }
+
+ const OUString sPathToFont; // empty string
+ Reference<container::XHierarchicalNameAccess> xFontNode (
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("Font")), UNO_QUERY);
+ PresenterTheme::SharedFontDescriptor pFont (
+ rReadContext.ReadFont(xFontNode, sPathToFont, PresenterTheme::SharedFontDescriptor()));
+ if (pFont.get() != NULL)
+ pStyle->mpFont = pFont;
+
+ Reference<container::XHierarchicalNameAccess> xBackgroundNode (
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("Background")),
+ UNO_QUERY);
+ SharedBitmapDescriptor pBackground (PresenterBitmapContainer::LoadBitmap(
+ xBackgroundNode,
+ OUString(),
+ rReadContext.mxPresenterHelper,
+ rReadContext.msBasePath,
+ rReadContext.mxCanvas,
+ SharedBitmapDescriptor()));
+ if (pBackground.get() != NULL && pBackground->GetNormalBitmap().is())
+ pStyle->mpBackground = pBackground;
+
+ push_back(pStyle);
+}
+
+
+
+
+SharedViewStyle ViewStyleContainer::GetViewStyle (const OUString& rsStyleName) const
+{
+ const_iterator iEnd (end());
+ for (const_iterator iStyle=begin(); iStyle!=iEnd; ++iStyle)
+ if ((*iStyle)->msStyleName == rsStyleName)
+ return *iStyle;
+ return SharedViewStyle();
+}
+
+
+
+
+//===== ViewStyle =============================================================
+
+ViewStyle::ViewStyle (void)
+ : msStyleName(),
+ mpParentStyle(),
+ mpFont(),
+ mpBackground()
+{
+}
+
+
+
+
+ViewStyle::~ViewStyle (void)
+{
+}
+
+
+
+
+const SharedBitmapDescriptor ViewStyle::GetBitmap (const OUString& rsBitmapName) const
+{
+ if (rsBitmapName == A2S("Background"))
+ return mpBackground;
+ else
+ return SharedBitmapDescriptor();
+}
+
+
+
+
+PresenterTheme::SharedFontDescriptor ViewStyle::GetFont (void) const
+{
+ if (mpFont.get() != NULL)
+ return mpFont;
+ else if (mpParentStyle.get() != NULL)
+ return mpParentStyle->GetFont();
+ else
+ return PresenterTheme::SharedFontDescriptor();
+}
+
+
+
+
+//===== StyleAssociationContainer =============================================
+
+void StyleAssociationContainer::Read (
+ ReadContext& rReadContext,
+ const Reference<container::XHierarchicalNameAccess>& rxThemeRoot)
+{
+ Reference<container::XNameAccess> xStyleAssociationList (
+ PresenterConfigurationAccess::GetConfigurationNode(
+ rxThemeRoot,
+ A2S("StyleAssociations")),
+ UNO_QUERY);
+ if (xStyleAssociationList.is())
+ {
+ ::std::vector<rtl::OUString> aProperties (2);
+ aProperties[0] = A2S("ResourceURL");
+ aProperties[1] = A2S("StyleName");
+ PresenterConfigurationAccess::ForAll(
+ xStyleAssociationList,
+ aProperties,
+ ::boost::bind(&StyleAssociationContainer::ProcessStyleAssociation,
+ this, ::boost::ref(rReadContext), _1, _2));
+ }
+}
+
+
+
+
+OUString StyleAssociationContainer::GetStyleName (const OUString& rsResourceName) const
+{
+ StyleAssociations::const_iterator iAssociation (maStyleAssociations.find(rsResourceName));
+ if (iAssociation != maStyleAssociations.end())
+ return iAssociation->second;
+ else
+ return OUString();
+}
+
+
+
+
+void StyleAssociationContainer::ProcessStyleAssociation(
+ ReadContext& rReadContext,
+ const OUString& rsKey,
+ const ::std::vector<Any>& rValues)
+{
+ (void)rReadContext;
+ (void)rsKey;
+
+ if (rValues.size() != 2)
+ return;
+
+ OUString sResourceURL;
+ OUString sStyleName;
+ if ((rValues[0] >>= sResourceURL)
+ && (rValues[1] >>= sStyleName))
+ {
+ maStyleAssociations[sResourceURL] = sStyleName;
+ }
+}
+
+
+
+
+} // end of anonymous namespace
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterTheme.hxx b/sdext/source/presenter/PresenterTheme.hxx
new file mode 100644
index 000000000000..e76cabcf28d0
--- /dev/null
+++ b/sdext/source/presenter/PresenterTheme.hxx
@@ -0,0 +1,160 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_THEME_HXX
+#define SDEXT_PRESENTER_PRESENTER_THEME_HXX
+
+#include "PresenterBitmapContainer.hxx"
+#include "PresenterConfigurationAccess.hxx"
+#include "PresenterTheme.hxx"
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/rendering/XCanvasFont.hpp>
+#include <com/sun/star/rendering/XIntegerBitmap.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+/** A theme is a set of properties describing fonts, colors, and bitmaps to be used to draw
+ background, pane borders, and view content.
+
+ At the moment the properties can be accessed via the getPropertyValue() method.
+
+ For a resource URL of a pane or a view you get the name of the
+ associated PaneStyle or ViewStyle.
+
+ For the name of pane or view style suffixed with and underscore and the
+ name of configuration property, and maybe additionally suffixed by
+ another underscore and sub property name you get the associated
+ property.
+
+ Example: you want to access the top left bitmap of a pane border
+ (simplified code):
+
+ String sStyleName = getPropertyValue("private:resource/pane/Presenter/Pane1");
+ XBitmap xBitmap = getPropertyValue(sStyleName + "_TopLeftBitmap");
+
+ For the offset of the bitmap you can call
+ Point aOffset = getPropertyValue(sStyleName + "_TopLeftOffset");
+
+ This is work in progress.
+*/
+class PresenterTheme
+{
+public:
+ PresenterTheme (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const rtl::OUString& rsThemeName,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas);
+ ~PresenterTheme (void);
+
+ void SAL_CALL disposing (void);
+
+ bool HasCanvas (void) const;
+ void ProvideCanvas (const css::uno::Reference<css::rendering::XCanvas>& rxCanvas);
+
+ ::rtl::OUString GetStyleName (const ::rtl::OUString& rsResourceURL) const;
+ ::std::vector<sal_Int32> GetBorderSize (
+ const ::rtl::OUString& rsStyleName,
+ const bool bOuter) const;
+
+ class FontDescriptor;
+ class Theme;
+
+ class FontDescriptor
+ {
+ public:
+ explicit FontDescriptor (void);
+ explicit FontDescriptor (const ::boost::shared_ptr<FontDescriptor>& rpDescriptor);
+
+ ::rtl::OUString msFamilyName;
+ ::rtl::OUString msStyleName;
+ sal_Int32 mnSize;
+ sal_uInt32 mnColor;
+ ::rtl::OUString msAnchor;
+ sal_Int32 mnXOffset;
+ sal_Int32 mnYOffset;
+ css::uno::Reference<css::rendering::XCanvasFont> mxFont;
+
+ bool PrepareFont (const css::uno::Reference<css::rendering::XCanvas>& rxCanvas);
+
+ private:
+ css::uno::Reference<css::rendering::XCanvasFont> CreateFont (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const double nCellSize) const;
+ double GetCellSizeForDesignSize (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const double nDesignSize) const;
+ };
+ typedef ::boost::shared_ptr<FontDescriptor> SharedFontDescriptor;
+
+ ::rtl::OUString GetThemeName (void) const;
+
+ SharedBitmapDescriptor GetBitmap (
+ const ::rtl::OUString& rsStyleName,
+ const ::rtl::OUString& rsBitmapName) const;
+
+ SharedBitmapDescriptor GetBitmap (
+ const ::rtl::OUString& rsBitmapName) const;
+
+ ::boost::shared_ptr<PresenterBitmapContainer> GetBitmapContainer (void) const;
+
+ SharedFontDescriptor GetFont (
+ const ::rtl::OUString& rsStyleName) const;
+
+ static SharedFontDescriptor ReadFont (
+ const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode,
+ const ::rtl::OUString& rsFontPath,
+ const SharedFontDescriptor& rDefaultFount);
+
+ static bool ConvertToColor (
+ const css::uno::Any& rColorSequence,
+ sal_uInt32& rColor);
+
+ ::boost::shared_ptr<PresenterConfigurationAccess> GetNodeForViewStyle (
+ const ::rtl::OUString& rsStyleName,
+ const PresenterConfigurationAccess::WriteMode) const;
+
+private:
+ css::uno::Reference<css::uno::XComponentContext> mxContext;
+ const ::rtl::OUString msThemeName;
+ ::boost::shared_ptr<Theme> mpTheme;
+ ::boost::shared_ptr<PresenterBitmapContainer> mpBitmapContainer;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+
+ ::boost::shared_ptr<Theme> ReadTheme (void);
+};
+
+} } // end of namespace ::sd::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterTimer.cxx b/sdext/source/presenter/PresenterTimer.cxx
new file mode 100644
index 000000000000..f4a5618353c9
--- /dev/null
+++ b/sdext/source/presenter/PresenterTimer.cxx
@@ -0,0 +1,681 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterTimer.hxx"
+#include <osl/doublecheckedlocking.h>
+#include <osl/thread.hxx>
+#include <boost/bind.hpp>
+#include <boost/function.hpp>
+#include <boost/enable_shared_from_this.hpp>
+#include <set>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace sdext { namespace presenter {
+
+namespace {
+class TimerTask
+{
+public:
+ TimerTask (
+ const PresenterTimer::Task& rTask,
+ const TimeValue& rDueTime,
+ const sal_Int64 nRepeatIntervall,
+ const sal_Int32 nTaskId);
+ ~TimerTask (void) {}
+
+ PresenterTimer::Task maTask;
+ TimeValue maDueTime;
+ const sal_Int64 mnRepeatIntervall;
+ const sal_Int32 mnTaskId;
+ bool mbIsCanceled;
+};
+
+typedef ::boost::shared_ptr<TimerTask> SharedTimerTask;
+
+
+class TimerTaskComparator
+{
+public:
+ bool operator() (const SharedTimerTask& rpTask1, const SharedTimerTask& rpTask2) const
+ {
+ return rpTask1->maDueTime.Seconds < rpTask2->maDueTime.Seconds
+ || (rpTask1->maDueTime.Seconds == rpTask2->maDueTime.Seconds
+ && rpTask1->maDueTime.Nanosec < rpTask2->maDueTime.Nanosec);
+ }
+};
+
+
+
+
+/** Queue all scheduled tasks and process them when their time has come.
+*/
+class TimerScheduler
+ : public ::boost::enable_shared_from_this<TimerScheduler>,
+ public ::osl::Thread
+{
+public:
+ static ::boost::shared_ptr<TimerScheduler> Instance (void);
+ static SharedTimerTask CreateTimerTask (
+ const PresenterTimer::Task& rTask,
+ const TimeValue& rDueTime,
+ const sal_Int64 nRepeatIntervall);
+
+ void ScheduleTask (const SharedTimerTask& rpTask);
+ void CancelTask (const sal_Int32 nTaskId);
+
+ static bool GetCurrentTime (TimeValue& rCurrentTime);
+ static sal_Int64 GetTimeDifference (
+ const TimeValue& rTargetTime,
+ const TimeValue& rCurrentTime);
+ static void ConvertToTimeValue (
+ TimeValue& rTimeValue,
+ const sal_Int64 nTimeDifference);
+ static sal_Int64 ConvertFromTimeValue (
+ const TimeValue& rTimeValue);
+
+private:
+ static ::boost::shared_ptr<TimerScheduler> mpInstance;
+ static ::osl::Mutex maInstanceMutex;
+ static sal_Int32 mnTaskId;
+
+ ::osl::Mutex maTaskContainerMutex;
+ typedef ::std::set<SharedTimerTask,TimerTaskComparator> TaskContainer;
+ TaskContainer maScheduledTasks;
+ bool mbIsRunning;
+ ::osl::Mutex maCurrentTaskMutex;
+ SharedTimerTask mpCurrentTask;
+
+ static void Release (void);
+
+ TimerScheduler (void);
+ virtual ~TimerScheduler (void);
+ class Deleter {public: void operator () (TimerScheduler* pScheduler) { delete pScheduler; } };
+ friend class Deleter;
+
+ virtual void SAL_CALL run (void);
+ virtual void SAL_CALL onTerminated (void);
+};
+
+
+
+
+bool GetDateTime (oslDateTime& rDateTime);
+} // end of anonymous namespace
+
+
+//===== PresenterTimer ========================================================
+
+sal_Int32 PresenterTimer::ScheduleSingleTaskRelative (
+ const Task& rTask,
+ const sal_Int64 nDelay)
+{
+ return ScheduleRepeatedTask(rTask, nDelay, 0);
+}
+
+
+
+
+sal_Int32 PresenterTimer::ScheduleSingleTaskAbsolute (
+ const Task& rTask,
+ const TimeValue& rDueTime)
+{
+ SharedTimerTask pTask (TimerScheduler::CreateTimerTask(rTask, rDueTime, 0));
+ TimerScheduler::Instance()->ScheduleTask(pTask);
+ return pTask->mnTaskId;
+}
+
+
+
+
+sal_Int32 PresenterTimer::ScheduleRepeatedTask (
+ const Task& rTask,
+ const sal_Int64 nDelay,
+ const sal_Int64 nIntervall)
+{
+ TimeValue aCurrentTime;
+ if (TimerScheduler::GetCurrentTime(aCurrentTime))
+ {
+ TimeValue aDueTime;
+ TimerScheduler::ConvertToTimeValue(
+ aDueTime,
+ TimerScheduler::ConvertFromTimeValue (aCurrentTime) + nDelay);
+ SharedTimerTask pTask (TimerScheduler::CreateTimerTask(rTask, aDueTime, nIntervall));
+ TimerScheduler::Instance()->ScheduleTask(pTask);
+ return pTask->mnTaskId;
+ }
+
+ return NotAValidTaskId;
+}
+
+
+
+
+void PresenterTimer::CancelTask (const sal_Int32 nTaskId)
+{
+ return TimerScheduler::Instance()->CancelTask(nTaskId);
+}
+
+
+
+
+//===== TimerScheduler ========================================================
+
+::boost::shared_ptr<TimerScheduler> TimerScheduler::mpInstance;
+::osl::Mutex TimerScheduler::maInstanceMutex;
+sal_Int32 TimerScheduler::mnTaskId = PresenterTimer::NotAValidTaskId;
+
+::boost::shared_ptr<TimerScheduler> TimerScheduler::Instance (void)
+{
+ ::boost::shared_ptr<TimerScheduler> pInstance = mpInstance;
+ if (pInstance.get() == NULL)
+ {
+ ::osl::MutexGuard aGuard (maInstanceMutex);
+ pInstance = mpInstance;
+ if (pInstance.get() == NULL)
+ {
+ pInstance.reset(new TimerScheduler(), TimerScheduler::Deleter());
+ OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
+ mpInstance = pInstance;
+ }
+ }
+ else
+ {
+ OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
+ }
+ return pInstance;
+}
+
+
+
+
+void TimerScheduler::Release (void)
+{
+ ::osl::MutexGuard aGuard (maInstanceMutex);
+ mpInstance.reset();
+}
+
+
+
+
+TimerScheduler::TimerScheduler (void)
+ : maTaskContainerMutex(),
+ maScheduledTasks(),
+ mbIsRunning(false),
+ maCurrentTaskMutex(),
+ mpCurrentTask()
+{
+}
+
+
+
+
+TimerScheduler::~TimerScheduler (void)
+{
+}
+
+
+
+SharedTimerTask TimerScheduler::CreateTimerTask (
+ const PresenterTimer::Task& rTask,
+ const TimeValue& rDueTime,
+ const sal_Int64 nRepeatIntervall)
+{
+ return SharedTimerTask(new TimerTask(rTask, rDueTime, nRepeatIntervall, ++mnTaskId));
+}
+
+
+
+
+void TimerScheduler::ScheduleTask (const SharedTimerTask& rpTask)
+{
+ if (rpTask.get() == NULL)
+ return;
+ if (rpTask->mbIsCanceled)
+ return;
+
+ osl::MutexGuard aGuard (maTaskContainerMutex);
+ maScheduledTasks.insert(rpTask);
+
+ if ( ! mbIsRunning)
+ {
+ mbIsRunning = true;
+ create();
+ }
+}
+
+
+
+
+void TimerScheduler::CancelTask (const sal_Int32 nTaskId)
+{
+ // Set of scheduled tasks is sorted after their due times, not their
+ // task ids. Therefore we have to do a linear search for the task to
+ // cancel.
+ {
+ ::osl::MutexGuard aGuard (maTaskContainerMutex);
+ TaskContainer::iterator iTask (maScheduledTasks.begin());
+ TaskContainer::const_iterator iEnd (maScheduledTasks.end());
+ for ( ; iTask!=iEnd; ++iTask)
+ {
+ if ((*iTask)->mnTaskId == nTaskId)
+ {
+ maScheduledTasks.erase(iTask);
+ break;
+ }
+ }
+ }
+
+ // The task that is to be canceled may be currently about to be
+ // processed. Mark it with a flag that a) prevents a repeating task
+ // from being scheduled again and b) tries to prevent its execution.
+ if (mpCurrentTask.get() != NULL
+ && mpCurrentTask->mnTaskId == nTaskId)
+ {
+ mpCurrentTask->mbIsCanceled = true;
+ }
+
+ // When the last active task was canceled then the timer can be
+ // stopped.
+ if (maScheduledTasks.size() == 0)
+ {
+ mbIsRunning = false;
+ resume();
+ // join();
+ }
+}
+
+
+
+
+void SAL_CALL TimerScheduler::run (void)
+{
+ while (mbIsRunning)
+ {
+ // Get the current time.
+ TimeValue aCurrentTime;
+ if ( ! GetCurrentTime(aCurrentTime))
+ {
+ // We can not get the current time and thus can not schedule anything.
+ break;
+ }
+
+ // Restrict access to the maScheduledTasks member to one, mutext
+ // guarded, block.
+ SharedTimerTask pTask;
+ sal_Int64 nDifference = 0;
+ {
+ ::osl::MutexGuard aGuard (maTaskContainerMutex);
+
+ // There are no more scheduled task. Leave this loop, function and
+ // live of the TimerScheduler.
+ if (maScheduledTasks.empty())
+ break;
+
+ nDifference = GetTimeDifference(
+ (*maScheduledTasks.begin())->maDueTime,
+ aCurrentTime);
+ if (nDifference <= 0)
+ {
+ pTask = *maScheduledTasks.begin();
+ maScheduledTasks.erase(maScheduledTasks.begin());
+ }
+ }
+
+ // Acquire a reference to the current task.
+ {
+ ::osl::MutexGuard aGuard (maCurrentTaskMutex);
+ mpCurrentTask = pTask;
+ }
+
+ if (mpCurrentTask.get() == NULL)
+ {
+ // Wait until the first task becomes due.
+ TimeValue aTimeValue;
+ ConvertToTimeValue(aTimeValue, nDifference);
+ wait(aTimeValue);
+ }
+ else
+ {
+ // Execute task.
+ if ( ! mpCurrentTask->maTask.empty()
+ && ! mpCurrentTask->mbIsCanceled)
+ {
+ mpCurrentTask->maTask(aCurrentTime);
+
+ // Re-schedule repeating tasks.
+ if (mpCurrentTask->mnRepeatIntervall > 0)
+ {
+ ConvertToTimeValue(
+ mpCurrentTask->maDueTime,
+ ConvertFromTimeValue(mpCurrentTask->maDueTime)
+ + mpCurrentTask->mnRepeatIntervall);
+ ScheduleTask(mpCurrentTask);
+ }
+ }
+
+ }
+
+ // Release reference to the current task.
+ {
+ ::osl::MutexGuard aGuard (maCurrentTaskMutex);
+ mpCurrentTask.reset();
+ }
+ }
+}
+
+
+
+
+void SAL_CALL TimerScheduler::onTerminated (void)
+{
+ Release();
+}
+
+
+
+
+bool TimerScheduler::GetCurrentTime (TimeValue& rCurrentTime)
+{
+ TimeValue aSystemTime;
+ if (osl_getSystemTime(&aSystemTime))
+ return osl_getLocalTimeFromSystemTime(&aSystemTime, &rCurrentTime);
+ return false;
+}
+
+
+
+
+sal_Int64 TimerScheduler::GetTimeDifference (
+ const TimeValue& rTargetTime,
+ const TimeValue& rCurrentTime)
+{
+ return ConvertFromTimeValue(rTargetTime) - ConvertFromTimeValue(rCurrentTime);
+}
+
+
+
+
+void TimerScheduler::ConvertToTimeValue (
+ TimeValue& rTimeValue,
+ const sal_Int64 nTimeDifference)
+{
+ rTimeValue.Seconds = sal::static_int_cast<sal_Int32>(nTimeDifference / 1000000000L);
+ rTimeValue.Nanosec = sal::static_int_cast<sal_Int32>(nTimeDifference % 1000000000L);
+}
+
+
+
+
+sal_Int64 TimerScheduler::ConvertFromTimeValue (
+ const TimeValue& rTimeValue)
+{
+ return sal_Int64(rTimeValue.Seconds) * 1000000000L + rTimeValue.Nanosec;
+}
+
+
+
+
+//===== TimerTask =============================================================
+
+namespace {
+
+TimerTask::TimerTask (
+ const PresenterTimer::Task& rTask,
+ const TimeValue& rDueTime,
+ const sal_Int64 nRepeatIntervall,
+ const sal_Int32 nTaskId)
+ : maTask(rTask),
+ maDueTime(rDueTime),
+ mnRepeatIntervall(nRepeatIntervall),
+ mnTaskId(nTaskId),
+ mbIsCanceled(false)
+{
+}
+
+} // end of anonymous namespace
+
+
+
+
+//===== PresenterTimer ========================================================
+
+
+::rtl::Reference<PresenterClockTimer> PresenterClockTimer::mpInstance;
+
+::rtl::Reference<PresenterClockTimer> PresenterClockTimer::Instance (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext)
+{
+ ::osl::MutexGuard aSolarGuard (::osl::Mutex::getGlobalMutex());
+
+ ::rtl::Reference<PresenterClockTimer> pTimer;
+ if (mpInstance.is())
+ {
+ pTimer = mpInstance;
+ }
+ if ( ! pTimer.is())
+ {
+ pTimer = ::rtl::Reference<PresenterClockTimer>(new PresenterClockTimer(rxContext));
+ mpInstance = pTimer;
+ }
+ return pTimer;
+}
+
+
+
+
+PresenterClockTimer::PresenterClockTimer (const Reference<XComponentContext>& rxContext)
+ : PresenterClockTimerInterfaceBase(m_aMutex),
+ maListeners(),
+ maDateTime(),
+ mnTimerTaskId(PresenterTimer::NotAValidTaskId),
+ mbIsCallbackPending(false),
+ mxRequestCallback()
+{
+ Reference<lang::XMultiComponentFactory> xFactory (
+ rxContext->getServiceManager(), UNO_QUERY);
+ if (xFactory.is())
+ mxRequestCallback = Reference<awt::XRequestCallback>(
+ xFactory->createInstanceWithContext(
+ A2S("com.sun.star.awt.AsyncCallback"),
+ rxContext),
+ UNO_QUERY_THROW);
+}
+
+
+
+
+PresenterClockTimer::~PresenterClockTimer (void)
+{
+ if (mnTimerTaskId != PresenterTimer::NotAValidTaskId)
+ {
+ PresenterTimer::CancelTask(mnTimerTaskId);
+ mnTimerTaskId = PresenterTimer::NotAValidTaskId;
+ }
+
+ Reference<lang::XComponent> xComponent (mxRequestCallback, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+ mxRequestCallback = NULL;
+}
+
+
+
+
+void PresenterClockTimer::AddListener (const SharedListener& rListener)
+{
+ osl::MutexGuard aGuard (maMutex);
+
+ maListeners.push_back(rListener);
+
+ // Create a timer task when the first listener is added.
+ if (mnTimerTaskId==PresenterTimer::NotAValidTaskId)
+ {
+ mnTimerTaskId = PresenterTimer::ScheduleRepeatedTask(
+ ::boost::bind(&PresenterClockTimer::CheckCurrentTime, this, _1),
+ 0,
+ 250000000 /*ns*/);
+ }
+}
+
+
+
+
+void PresenterClockTimer::RemoveListener (const SharedListener& rListener)
+{
+ osl::MutexGuard aGuard (maMutex);
+
+ ListenerContainer::iterator iListener (::std::find(
+ maListeners.begin(),
+ maListeners.end(),
+ rListener));
+ if (iListener != maListeners.end())
+ maListeners.erase(iListener);
+ if (maListeners.size() == 0)
+ {
+ // We have no more clients and therefore are not interested in time changes.
+ if (mnTimerTaskId != PresenterTimer::NotAValidTaskId)
+ {
+ PresenterTimer::CancelTask(mnTimerTaskId);
+ mnTimerTaskId = PresenterTimer::NotAValidTaskId;
+ }
+ mpInstance = NULL;
+ }
+}
+
+
+
+
+oslDateTime PresenterClockTimer::GetCurrentTime (void)
+{
+ TimeValue aCurrentTime;
+ TimerScheduler::GetCurrentTime(aCurrentTime);
+ oslDateTime aDateTime;
+ osl_getDateTimeFromTimeValue(&aCurrentTime, &aDateTime);
+ return aDateTime;
+}
+
+
+
+
+sal_Int64 PresenterClockTimer::GetTimeDifference (
+ const oslDateTime& rNow,
+ const oslDateTime& rThen)
+{
+ TimeValue aNow;
+ TimeValue aThen;
+ if (osl_getTimeValueFromDateTime(const_cast<oslDateTime*>(&rNow),&aNow)
+ && osl_getTimeValueFromDateTime(const_cast<oslDateTime*>(&rThen),&aThen))
+ {
+ return TimerScheduler::GetTimeDifference(aNow, aThen);
+ }
+ else
+ return -1;
+}
+
+
+
+
+void PresenterClockTimer::CheckCurrentTime (const TimeValue& rCurrentTime)
+{
+ css::uno::Reference<css::awt::XRequestCallback> xRequestCallback;
+ css::uno::Reference<css::awt::XCallback> xCallback;
+ {
+ osl::MutexGuard aGuard (maMutex);
+
+ TimeValue aCurrentTime (rCurrentTime);
+ oslDateTime aDateTime;
+ if (osl_getDateTimeFromTimeValue(&aCurrentTime, &aDateTime))
+ {
+ if (aDateTime.Seconds != maDateTime.Seconds
+ || aDateTime.Minutes != maDateTime.Minutes
+ || aDateTime.Seconds != maDateTime.Seconds)
+ {
+ // The displayed part of the current time has changed.
+ // Prepare to call the listeners.
+ maDateTime = aDateTime;
+
+ // Schedule notification of listeners.
+ if (mxRequestCallback.is() && ! mbIsCallbackPending)
+ {
+ mbIsCallbackPending = true;
+ xRequestCallback = mxRequestCallback;
+ xCallback = this;
+ }
+ }
+ }
+ }
+ if (mxRequestCallback.is() && xCallback.is())
+ xRequestCallback->addCallback(xCallback, Any());
+}
+
+
+
+
+//----- XCallback -------------------------------------------------------------
+
+void SAL_CALL PresenterClockTimer::notify (const css::uno::Any& rUserData)
+ throw (css::uno::RuntimeException)
+{
+ (void)rUserData;
+
+ ListenerContainer aListenerCopy (maListeners);
+
+ {
+ osl::MutexGuard aGuard (maMutex);
+
+ mbIsCallbackPending = false;
+
+ ::std::copy(
+ maListeners.begin(),
+ maListeners.end(),
+ ::std::back_inserter(aListenerCopy));
+ }
+
+ if (aListenerCopy.size() > 0)
+ {
+ ListenerContainer::const_iterator iListener;
+ ListenerContainer::const_iterator iEnd (aListenerCopy.end());
+ for (iListener=aListenerCopy.begin(); iListener!=iEnd; ++iListener)
+ {
+ (*iListener)->TimeHasChanged(maDateTime);
+ }
+ }
+}
+
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterTimer.hxx b/sdext/source/presenter/PresenterTimer.hxx
new file mode 100644
index 000000000000..19d9e0637258
--- /dev/null
+++ b/sdext/source/presenter/PresenterTimer.hxx
@@ -0,0 +1,146 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_TIMER_HXX
+#define SDEXT_PRESENTER_TIMER_HXX
+
+#include <com/sun/star/awt/XCallback.hpp>
+#include <com/sun/star/awt/XRequestCallback.hpp>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase1.hxx>
+#include <osl/mutex.hxx>
+#include <osl/time.h>
+#include <rtl/ref.hxx>
+#include <sal/types.h>
+#include <boost/enable_shared_from_this.hpp>
+#include <boost/function.hpp>
+#include <vector>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterClockInternalTimer;
+
+/** The timer allows tasks to be scheduled for execution at a specified time
+ in the future.
+*/
+class PresenterTimer
+{
+public:
+ /** A task is called with the current time.
+ */
+ typedef ::boost::function<void(const TimeValue&)> Task;
+
+ static const sal_Int32 NotAValidTaskId = 0;
+
+ static sal_Int32 ScheduleSingleTaskRelative (
+ const Task& rTask,
+ const sal_Int64 nDelay);
+
+ static sal_Int32 ScheduleSingleTaskAbsolute (
+ const Task& rTask,
+ const TimeValue& rDueTime);
+
+ /** Schedule a task to be executed repeatedly. The task is executed the
+ first time after nFirst nano-seconds (1000000000 corresponds to one
+ second). After that task is executed in intervalls that are
+ nIntervall ns long until CancelTask is called.
+ */
+ static sal_Int32 ScheduleRepeatedTask (
+ const Task& rTask,
+ const sal_Int64 nFirst,
+ const sal_Int64 nIntervall);
+
+ static void CancelTask (const sal_Int32 nTaskId);
+};
+
+
+
+typedef cppu::WeakComponentImplHelper1<
+ css::awt::XCallback
+ > PresenterClockTimerInterfaceBase;
+
+/** A timer that calls its listeners, typically clocks, every second to
+ update their current time value.
+*/
+class PresenterClockTimer
+ : protected ::cppu::BaseMutex,
+ public PresenterClockTimerInterfaceBase
+{
+public:
+ class Listener { public:
+ virtual void TimeHasChanged (const oslDateTime& rCurrentTime) = 0;
+ };
+ typedef ::boost::shared_ptr<Listener> SharedListener;
+
+ static ::rtl::Reference<PresenterClockTimer> Instance (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+
+ void AddListener (const SharedListener& rListener);
+ void RemoveListener (const SharedListener& rListener);
+
+ static oslDateTime GetCurrentTime (void);
+
+ /** Return the difference between the two different times in
+ nanoseconds.
+ */
+ static sal_Int64 GetTimeDifference (const oslDateTime& rNow, const oslDateTime& rThen);
+
+ // XCallback
+
+ virtual void SAL_CALL notify (const css::uno::Any& rUserData)
+ throw (css::uno::RuntimeException);
+
+private:
+ static ::rtl::Reference<PresenterClockTimer> mpInstance;
+
+ ::osl::Mutex maMutex;
+ typedef ::std::vector<SharedListener> ListenerContainer;
+ ListenerContainer maListeners;
+ oslDateTime maDateTime;
+ sal_Int32 mnTimerTaskId;
+ bool mbIsCallbackPending;
+ css::uno::Reference<css::awt::XRequestCallback> mxRequestCallback;
+
+ PresenterClockTimer (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext);
+ ~PresenterClockTimer (void);
+
+ void CheckCurrentTime (const TimeValue& rCurrentTime);
+};
+
+
+
+
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterToolBar.cxx b/sdext/source/presenter/PresenterToolBar.cxx
new file mode 100644
index 000000000000..1eb04a8e4171
--- /dev/null
+++ b/sdext/source/presenter/PresenterToolBar.cxx
@@ -0,0 +1,2461 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterToolBar.hxx"
+
+#include "PresenterBitmapContainer.hxx"
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterComponent.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterPaintManager.hxx"
+#include "PresenterPaneBase.hxx"
+#include "PresenterPaneFactory.hxx"
+#include "PresenterTimer.hxx"
+#include "PresenterWindowManager.hxx"
+
+#include <cppuhelper/compbase2.hxx>
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/deployment/XPackageInformationProvider.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/geometry/AffineMatrix2D.hpp>
+#include <com/sun/star/lang/XServiceName.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/RenderState.hpp>
+#include <com/sun/star/rendering/TextDirection.hpp>
+#include <com/sun/star/rendering/ViewState.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+#include <com/sun/star/text/XTextRange.hpp>
+#include <com/sun/star/util/Color.hpp>
+#include <com/sun/star/util/XURLTransformer.hpp>
+#include <rtl/ustrbuf.hxx>
+#include <boost/bind.hpp>
+#include <boost/function.hpp>
+#include <boost/enable_shared_from_this.hpp>
+#include <map>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace sdext { namespace presenter {
+
+static const sal_Int32 gnGapSize (20);
+static const sal_Int32 gnMinimalSeparatorSize (20);
+static const sal_Int32 gnSeparatorInset (0);
+
+namespace {
+
+ class Text
+ {
+ public:
+ Text (void);
+ Text (const Text& rText);
+ Text (
+ const OUString& rsText,
+ const PresenterTheme::SharedFontDescriptor& rpFont);
+
+ void SetText (const OUString& rsText);
+ OUString GetText (void) const;
+ PresenterTheme::SharedFontDescriptor GetFont (void) const;
+
+ void Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const awt::Rectangle& rBoundingBox,
+ const awt::Point& rOffset);
+
+ geometry::RealRectangle2D GetBoundingBox (
+ const Reference<rendering::XCanvas>& rxCanvas);
+
+ private:
+ OUString msText;
+ PresenterTheme::SharedFontDescriptor mpFont;
+ };
+
+ class ElementMode
+ : private ::boost::noncopyable
+ {
+ public:
+ ElementMode (void);
+
+ SharedBitmapDescriptor mpIcon;
+ OUString msAction;
+ Text maText;
+
+ void ReadElementMode (
+ const Reference<beans::XPropertySet>& rxProperties,
+ const ::rtl::OUString& rsModeName,
+ ::boost::shared_ptr<ElementMode>& rpDefaultMode,
+ ::sdext::presenter::PresenterToolBar::Context& rContext);
+ };
+ typedef ::boost::shared_ptr<ElementMode> SharedElementMode;
+
+} // end of anonymous namespace
+
+
+class PresenterToolBar::Context
+ : private ::boost::noncopyable
+{
+public:
+ ::rtl::OUString msBasePath;
+ Reference<drawing::XPresenterHelper> mxPresenterHelper;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+};
+
+
+
+
+//===== PresenterToolBar::Element =============================================
+
+namespace {
+ typedef cppu::WeakComponentImplHelper2<
+ css::document::XEventListener,
+ css::frame::XStatusListener
+ > ElementInterfaceBase;
+
+ class Element
+ : private ::cppu::BaseMutex,
+ private ::boost::noncopyable,
+ public ElementInterfaceBase
+ {
+ public:
+ Element (const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+ virtual ~Element (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ virtual void SetModes (
+ const SharedElementMode& rpNormalMode,
+ const SharedElementMode& rpMouseOverMode,
+ const SharedElementMode& rpSelectedMode,
+ const SharedElementMode& rpDisabledMode);
+ virtual void CurrentSlideHasChanged (void);
+ virtual void SetLocation (const awt::Point& rLocation);
+ virtual void SetSize (const geometry::RealSize2D& rSize);
+ virtual void Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState) = 0;
+ awt::Size GetBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas);
+ awt::Rectangle GetBoundingBox (void) const;
+ virtual bool SetState (const bool bIsOver, const bool bIsPressed);
+ virtual void Invalidate (const bool bSynchronous = true);
+ virtual bool IsOutside (const awt::Rectangle& rBox);
+ virtual bool IsFilling (void) const;
+ void UpdateState (void);
+
+ OUString GetAction (void) const;
+
+ // lang::XEventListener
+
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw(css::uno::RuntimeException);
+
+ // document::XEventListener
+
+ virtual void SAL_CALL notifyEvent (const css::document::EventObject& rEvent)
+ throw(css::uno::RuntimeException);
+
+ // frame::XStatusListener
+
+ virtual void SAL_CALL statusChanged (const css::frame::FeatureStateEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ protected:
+ ::rtl::Reference<PresenterToolBar> mpToolBar;
+ awt::Point maLocation;
+ awt::Size maSize;
+ SharedElementMode mpNormal;
+ SharedElementMode mpMouseOver;
+ SharedElementMode mpSelected;
+ SharedElementMode mpDisabled;
+ SharedElementMode mpMode;
+ bool mbIsOver;
+ bool mbIsPressed;
+ bool mbIsSelected;
+
+ virtual awt::Size CreateBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas) = 0;
+
+ bool IsEnabled (void) const;
+ void SetEnabledState (const bool bIsEnabled);
+
+ private:
+ bool mbIsEnabled;
+ };
+
+} // end of anonymous namespace
+
+
+class PresenterToolBar::ElementContainerPart
+ : public ::std::vector<rtl::Reference<Element> >
+{
+};
+
+
+
+
+//===== Button ================================================================
+
+namespace {
+
+ class Button : public Element
+ {
+ public:
+ static ::rtl::Reference<Element> Create (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+
+ virtual ~Button (void);
+ virtual void SAL_CALL disposing (void);
+
+ virtual void Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState);
+
+ // lang::XEventListener
+
+ virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
+ throw(css::uno::RuntimeException);
+
+ protected:
+ virtual awt::Size CreateBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas);
+
+ private:
+ bool mbIsListenerRegistered;
+
+ Button (const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+ void Initialize (void);
+ void PaintIcon (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const sal_Int32 nTextHeight,
+ const rendering::ViewState& rViewState);
+ PresenterBitmapDescriptor::Mode GetMode (void) const;
+ };
+
+
+
+
+//===== Label =================================================================
+
+ class Label : public Element
+ {
+ public:
+ Label (const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+
+ void SetText (const OUString& rsText);
+ virtual void Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState);
+ virtual bool SetState (const bool bIsOver, const bool bIsPressed);
+
+ protected:
+ virtual awt::Size CreateBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas);
+ };
+
+
+// Some specialized controls.
+
+
+ class ProgressLabel : public Label
+ {
+ public:
+ ProgressLabel (const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+ virtual void CurrentSlideHasChanged (void);
+ };
+
+ class TimeFormatter
+ {
+ public:
+ TimeFormatter (void);
+ OUString FormatTime (const oslDateTime& rTime);
+ private:
+ bool mbIs24HourFormat;
+ bool mbIsAmPmFormat;
+ bool mbIsShowSeconds;
+ };
+
+ class TimeLabel : public Label
+ {
+ public:
+ void ConnectToTimer (void);
+ virtual void TimeHasChanged (const oslDateTime& rCurrentTime) = 0;
+ protected:
+ TimeLabel(const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+ using Element::disposing;
+ virtual void SAL_CALL disposing (void);
+ private:
+ class Listener : public PresenterClockTimer::Listener
+ {
+ public:
+ Listener (const ::rtl::Reference<TimeLabel>& rxLabel)
+ : mxLabel(rxLabel) {}
+ virtual ~Listener (void) {}
+ virtual void TimeHasChanged (const oslDateTime& rCurrentTime)
+ { if (mxLabel.is()) mxLabel->TimeHasChanged(rCurrentTime); }
+ private:
+ ::rtl::Reference<TimeLabel> mxLabel;
+ };
+ ::boost::shared_ptr<PresenterClockTimer::Listener> mpListener;
+ };
+
+ class CurrentTimeLabel : public TimeLabel
+ {
+ public:
+ static ::rtl::Reference<Element> Create (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+ virtual void SetModes (
+ const SharedElementMode& rpNormalMode,
+ const SharedElementMode& rpMouseOverMode,
+ const SharedElementMode& rpSelectedMode,
+ const SharedElementMode& rpDisabledMode);
+ private:
+ TimeFormatter maTimeFormatter;
+ CurrentTimeLabel (const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+ virtual ~CurrentTimeLabel (void);
+ virtual void TimeHasChanged (const oslDateTime& rCurrentTime);
+ };
+
+ class PresentationTimeLabel : public TimeLabel
+ {
+ public:
+ static ::rtl::Reference<Element> Create (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+ virtual void SetModes (
+ const SharedElementMode& rpNormalMode,
+ const SharedElementMode& rpMouseOverMode,
+ const SharedElementMode& rpSelectedMode,
+ const SharedElementMode& rpDisabledMode);
+ private:
+ TimeFormatter maTimeFormatter;
+ TimeValue maStartTimeValue;
+ PresentationTimeLabel (const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+ virtual ~PresentationTimeLabel (void);
+ virtual void TimeHasChanged (const oslDateTime& rCurrentTime);
+ };
+
+ class VerticalSeparator : public Element
+ {
+ public:
+ explicit VerticalSeparator (const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+ virtual void Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState);
+ virtual bool IsFilling (void) const;
+
+ protected:
+ virtual awt::Size CreateBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas);
+ };
+
+ class HorizontalSeparator : public Element
+ {
+ public:
+ explicit HorizontalSeparator (const ::rtl::Reference<PresenterToolBar>& rpToolBar);
+ virtual void Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState);
+ virtual bool IsFilling (void) const;
+
+ protected:
+ virtual awt::Size CreateBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas);
+ };
+} // end of anonymous namespace
+
+
+
+//===== PresenterToolBar ======================================================
+
+PresenterToolBar::PresenterToolBar (
+ const Reference<XComponentContext>& rxContext,
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const Anchor eAnchor)
+ : PresenterToolBarInterfaceBase(m_aMutex),
+ mxComponentContext(rxContext),
+ maElementContainer(),
+ mpCurrentContainerPart(),
+ mxWindow(rxWindow),
+ mxCanvas(rxCanvas),
+ mxSlideShowController(),
+ mxCurrentSlide(),
+ mpPresenterController(rpPresenterController),
+ mbIsLayoutPending(false),
+ meAnchor(eAnchor),
+ maBoundingBox(),
+ maMinimalSize()
+{
+}
+
+
+
+
+void PresenterToolBar::Initialize (
+ const ::rtl::OUString& rsConfigurationPath)
+{
+ try
+ {
+ CreateControls(rsConfigurationPath);
+
+ if (mxWindow.is())
+ {
+ mxWindow->addWindowListener(this);
+ mxWindow->addPaintListener(this);
+ mxWindow->addMouseListener(this);
+ mxWindow->addMouseMotionListener(this);
+
+ Reference<awt::XWindowPeer> xPeer (mxWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->setBackground(util::Color(0xff000000));
+
+ mxWindow->setVisible(sal_True);
+ }
+
+ mxSlideShowController = mpPresenterController->GetSlideShowController();
+ UpdateSlideNumber();
+ mbIsLayoutPending = true;
+ }
+ catch (RuntimeException&)
+ {
+ mpCurrentContainerPart.reset();
+ maElementContainer.clear();
+ throw;
+ }
+}
+
+
+
+
+PresenterToolBar::~PresenterToolBar (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterToolBar::disposing (void)
+{
+ if (mxWindow.is())
+ {
+ mxWindow->removeWindowListener(this);
+ mxWindow->removePaintListener(this);
+ mxWindow->removeMouseListener(this);
+ mxWindow->removeMouseMotionListener(this);
+ mxWindow = NULL;
+ }
+
+ // Dispose tool bar elements.
+ ElementContainer::iterator iPart (maElementContainer.begin());
+ ElementContainer::const_iterator iEnd (maElementContainer.end());
+ for ( ; iPart!=iEnd; ++iPart)
+ {
+ OSL_ASSERT(iPart->get()!=NULL);
+ ElementContainerPart::iterator iElement ((*iPart)->begin());
+ ElementContainerPart::const_iterator iPartEnd ((*iPart)->end());
+ for ( ; iElement!=iPartEnd; ++iElement)
+ {
+ if (iElement->get() != NULL)
+ {
+ ::rtl::Reference<Element> pElement (*iElement);
+ Reference<lang::XComponent> xComponent (
+ static_cast<XWeak*>(pElement.get()), UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ }
+ }
+
+ mpCurrentContainerPart.reset();
+ maElementContainer.clear();
+}
+
+
+
+
+void PresenterToolBar::InvalidateArea (
+ const awt::Rectangle& rRepaintBox,
+ const bool bSynchronous)
+{
+ mpPresenterController->GetPaintManager()->Invalidate(
+ mxWindow,
+ rRepaintBox,
+ bSynchronous);
+}
+
+
+
+
+sal_Int32 PresenterToolBar::GetCurrentSlideIndex (void)
+{
+ if (mxSlideShowController.is())
+ return mxSlideShowController->getCurrentSlideIndex();
+ else
+ return -1;
+}
+
+
+
+
+sal_Int32 PresenterToolBar::GetSlideCount (void)
+{
+ if (mxSlideShowController.is())
+ return mxSlideShowController->getSlideCount();
+ else
+ return 0;
+}
+
+
+
+
+void PresenterToolBar::RequestLayout (void)
+{
+ mbIsLayoutPending = true;
+
+ mpPresenterController->GetPaintManager()->Invalidate(mxWindow);
+}
+
+
+
+
+geometry::RealSize2D PresenterToolBar::GetSize (void)
+{
+ if (mbIsLayoutPending)
+ Layout(mxCanvas);
+ return geometry::RealSize2D(
+ maBoundingBox.X2 - maBoundingBox.X1,
+ maBoundingBox.Y2 - maBoundingBox.Y1);
+}
+
+
+
+
+geometry::RealSize2D PresenterToolBar::GetMinimalSize (void)
+{
+ if (mbIsLayoutPending)
+ Layout(mxCanvas);
+ return maMinimalSize;
+}
+
+
+
+
+::rtl::Reference<PresenterController> PresenterToolBar::GetPresenterController (void) const
+{
+ return mpPresenterController;
+}
+
+
+
+
+Reference<awt::XWindow> PresenterToolBar::GetWindow (void) const
+{
+ return mxWindow;
+}
+
+
+
+
+Reference<XComponentContext> PresenterToolBar::GetComponentContext (void) const
+{
+ return mxComponentContext;
+}
+
+
+
+
+//----- lang::XEventListener -------------------------------------------------
+
+void SAL_CALL PresenterToolBar::disposing (const lang::EventObject& rEventObject)
+ throw (RuntimeException)
+{
+ if (rEventObject.Source == mxWindow)
+ mxWindow = NULL;
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterToolBar::windowResized (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ mbIsLayoutPending = true;
+}
+
+
+
+
+void SAL_CALL PresenterToolBar::windowMoved (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterToolBar::windowShown (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+ mbIsLayoutPending = true;
+}
+
+
+
+
+void SAL_CALL PresenterToolBar::windowHidden (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterToolBar::windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ if ( ! mxCanvas.is())
+ return;
+
+ if ( ! mbIsPresenterViewActive)
+ return;
+
+ const rendering::ViewState aViewState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ PresenterGeometryHelper::CreatePolygon(rEvent.UpdateRect, mxCanvas->getDevice()));
+
+ if (mbIsLayoutPending)
+ Layout(mxCanvas);
+
+ Paint(rEvent.UpdateRect, aViewState);
+
+ // Make the back buffer visible.
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxCanvas, UNO_QUERY);
+ if (xSpriteCanvas.is())
+ xSpriteCanvas->updateScreen(sal_False);
+}
+
+
+
+
+//----- XMouseListener --------------------------------------------------------
+
+void SAL_CALL PresenterToolBar::mousePressed (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ CheckMouseOver(rEvent, true, true);
+}
+
+
+
+
+void SAL_CALL PresenterToolBar::mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ CheckMouseOver(rEvent, true);
+}
+
+
+
+
+void SAL_CALL PresenterToolBar::mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ CheckMouseOver(rEvent, true);
+}
+
+
+
+
+void SAL_CALL PresenterToolBar::mouseExited (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ CheckMouseOver(rEvent, false);
+}
+
+
+
+
+//----- XMouseMotionListener --------------------------------------------------
+
+void SAL_CALL PresenterToolBar::mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+
+ CheckMouseOver(rEvent, true);
+}
+
+
+
+
+void SAL_CALL PresenterToolBar::mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ (void)rEvent;
+}
+
+
+
+
+//----- XDrawView -------------------------------------------------------------
+
+void SAL_CALL PresenterToolBar::setCurrentPage (const Reference<drawing::XDrawPage>& rxSlide)
+ throw (RuntimeException)
+{
+ if (rxSlide != mxCurrentSlide)
+ {
+ mxCurrentSlide = rxSlide;
+ UpdateSlideNumber();
+ }
+}
+
+
+
+
+Reference<drawing::XDrawPage> SAL_CALL PresenterToolBar::getCurrentPage (void)
+ throw (RuntimeException)
+{
+ return mxCurrentSlide;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterToolBar::CreateControls (
+ const ::rtl::OUString& rsConfigurationPath)
+{
+ if ( ! mxWindow.is())
+ return;
+
+ // Expand the macro in the bitmap file names.
+ PresenterConfigurationAccess aConfiguration (
+ mxComponentContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_ONLY);
+
+ const OUString sBasePath (PresenterComponent::GetBasePath(mxComponentContext));
+
+ mpCurrentContainerPart.reset(new ElementContainerPart());
+ maElementContainer.clear();
+ maElementContainer.push_back(mpCurrentContainerPart);
+
+ Reference<container::XHierarchicalNameAccess> xToolBarNode (
+ aConfiguration.GetConfigurationNode(rsConfigurationPath),
+ UNO_QUERY);
+ if (xToolBarNode.is())
+ {
+ Reference<container::XNameAccess> xEntries (
+ PresenterConfigurationAccess::GetConfigurationNode(xToolBarNode, A2S("Entries")),
+ UNO_QUERY);
+ Context aContext;
+ aContext.msBasePath = sBasePath;
+ aContext.mxPresenterHelper = mpPresenterController->GetPresenterHelper();
+ aContext.mxCanvas = mxCanvas;
+ if (xEntries.is()
+ && aContext.mxPresenterHelper.is()
+ && aContext.mxCanvas.is())
+ {
+ PresenterConfigurationAccess::ForAll(
+ xEntries,
+ ::boost::bind(&PresenterToolBar::ProcessEntry, this, _2, ::boost::ref(aContext)));
+ }
+ }
+}
+
+
+
+
+void PresenterToolBar::ProcessEntry (
+ const Reference<beans::XPropertySet>& rxProperties,
+ Context& rContext)
+{
+ if ( ! rxProperties.is())
+ return;
+
+ // Type has to be present.
+ OUString sType;
+ if ( ! (PresenterConfigurationAccess::GetProperty(rxProperties, A2S("Type")) >>= sType))
+ return;
+
+ OUString sName;
+ PresenterConfigurationAccess::GetProperty(rxProperties, A2S("Name")) >>= sName;
+
+ // Read mode specific values.
+ SharedElementMode pNormalMode (new ElementMode());
+ SharedElementMode pMouseOverMode (new ElementMode());
+ SharedElementMode pSelectedMode (new ElementMode());
+ SharedElementMode pDisabledMode (new ElementMode());
+ pNormalMode->ReadElementMode(rxProperties, A2S("Normal"), pNormalMode, rContext);
+ pMouseOverMode->ReadElementMode(rxProperties, A2S("MouseOver"), pNormalMode, rContext);
+ pSelectedMode->ReadElementMode(rxProperties, A2S("Selected"), pNormalMode, rContext);
+ pDisabledMode->ReadElementMode(rxProperties, A2S("Disabled"), pNormalMode, rContext);
+
+ // Create new element.
+ ::rtl::Reference<Element> pElement;
+ if (sType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Button")))
+ pElement = Button::Create(this);
+ else if (sType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("CurrentTimeLabel")))
+ pElement = CurrentTimeLabel::Create(this);
+ else if (sType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("PresentationTimeLabel")))
+ pElement = PresentationTimeLabel::Create(this);
+ else if (sType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("VerticalSeparator")))
+ pElement = ::rtl::Reference<Element>(new VerticalSeparator(this));
+ else if (sType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("HorizontalSeparator")))
+ pElement = ::rtl::Reference<Element>(new HorizontalSeparator(this));
+ else if (sType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Label")))
+ pElement = ::rtl::Reference<Element>(new Label(this));
+ else if (sType.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ChangeOrientation")))
+ {
+ mpCurrentContainerPart.reset(new ElementContainerPart());
+ maElementContainer.push_back(mpCurrentContainerPart);
+ return;
+ }
+ if (pElement.is())
+ {
+ pElement->SetModes( pNormalMode, pMouseOverMode, pSelectedMode, pDisabledMode);
+ pElement->UpdateState();
+ if (mpCurrentContainerPart.get() != NULL)
+ mpCurrentContainerPart->push_back(pElement);
+ }
+}
+
+
+
+
+void PresenterToolBar::Layout (
+ const Reference<rendering::XCanvas>& rxCanvas)
+{
+ if (maElementContainer.size() == 0)
+ return;
+
+ mbIsLayoutPending = false;
+
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ ElementContainer::iterator iPart;
+ ElementContainer::iterator iEnd (maElementContainer.end());
+ ::std::vector<geometry::RealSize2D> aPartSizes (maElementContainer.size());
+ geometry::RealSize2D aTotalSize (0,0);
+ bool bIsHorizontal (true);
+ sal_Int32 nIndex;
+ double nTotalHorizontalGap (0);
+ sal_Int32 nGapCount (0);
+ for (iPart=maElementContainer.begin(),nIndex=0; iPart!=iEnd; ++iPart,++nIndex)
+ {
+ geometry::RealSize2D aSize (CalculatePartSize(rxCanvas, *iPart, bIsHorizontal));
+
+ // Remember the size of each part for later.
+ aPartSizes[nIndex] = aSize;
+
+ // Add gaps between elements.
+ if ((*iPart)->size()>1 && bIsHorizontal)
+ {
+ nTotalHorizontalGap += ((*iPart)->size() - 1) * gnGapSize;
+ nGapCount += (*iPart)->size()-1;
+ }
+
+ // Orientation changes for each part.
+ bIsHorizontal = !bIsHorizontal;
+ // Width is accumulated.
+ aTotalSize.Width += aSize.Width;
+ // Height is the maximum height of all parts.
+ aTotalSize.Height = ::std::max(aTotalSize.Height, aSize.Height);
+ }
+ // Add gaps between parts.
+ if (maElementContainer.size() > 1)
+ {
+ nTotalHorizontalGap += (maElementContainer.size() - 1) * gnGapSize;
+ nGapCount += maElementContainer.size()-1;
+ }
+
+ // Calculate the minimal size so that the window size of the tool bar
+ // can be adapted accordingly.
+ maMinimalSize = aTotalSize;
+ maMinimalSize.Width += nTotalHorizontalGap;
+
+ // Calculate the gaps between elements.
+ double nGapWidth (0);
+ if (nGapCount > 0)
+ {
+ if (aTotalSize.Width + nTotalHorizontalGap > aWindowBox.Width)
+ nTotalHorizontalGap = aWindowBox.Width - aTotalSize.Width;
+ nGapWidth = nTotalHorizontalGap / nGapCount;
+ }
+
+ // Determine the location of the left edge.
+ double nX (0);
+ switch (meAnchor)
+ {
+ case Left : nX = 0; break;
+ case Center: nX = (aWindowBox.Width - aTotalSize.Width - nTotalHorizontalGap) / 2; break;
+ case Right: nX = aWindowBox.Width - aTotalSize.Width - nTotalHorizontalGap; break;
+ }
+
+ // Place the parts.
+ double nY ((aWindowBox.Height - aTotalSize.Height) / 2);
+ bIsHorizontal = true;
+
+ maBoundingBox.X1 = nX;
+ maBoundingBox.Y1 = nY;
+ maBoundingBox.X2 = nX + aTotalSize.Width + nTotalHorizontalGap;
+ maBoundingBox.Y2 = nY + aTotalSize.Height;
+
+ for (iPart=maElementContainer.begin(), nIndex=0; iPart!=iEnd; ++iPart,++nIndex)
+ {
+ geometry::RealRectangle2D aBoundingBox(
+ nX, nY,
+ nX+aPartSizes[nIndex].Width, nY+aTotalSize.Height);
+
+ // Add space for gaps between elements.
+ if ((*iPart)->size() > 1)
+ if (bIsHorizontal)
+ aBoundingBox.X2 += ((*iPart)->size()-1) * nGapWidth;
+
+ LayoutPart(rxCanvas, *iPart, aBoundingBox, aPartSizes[nIndex], bIsHorizontal);
+ bIsHorizontal = !bIsHorizontal;
+ nX += aBoundingBox.X2 - aBoundingBox.X1 + nGapWidth;
+ }
+
+ // The whole window has to be repainted.
+ mpPresenterController->GetPaintManager()->Invalidate(mxWindow);
+}
+
+
+
+
+geometry::RealSize2D PresenterToolBar::CalculatePartSize (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const SharedElementContainerPart& rpPart,
+ const bool bIsHorizontal)
+{
+ geometry::RealSize2D aTotalSize (0,0);
+
+ if (mxWindow.is())
+ {
+ const awt::Rectangle aWindowBox (mxWindow->getPosSize());
+
+ // Calculate the summed width of all elements.
+ ElementContainerPart::const_iterator iElement;
+ for (iElement=rpPart->begin(); iElement!=rpPart->end(); ++iElement)
+ {
+ if (iElement->get() == NULL)
+ continue;
+
+ const awt::Size aBSize ((*iElement)->GetBoundingSize(rxCanvas));
+ if (bIsHorizontal)
+ {
+ aTotalSize.Width += aBSize.Width;
+ if (aBSize.Height > aTotalSize.Height)
+ aTotalSize.Height = aBSize.Height;
+ }
+ else
+ {
+ aTotalSize.Height += aBSize.Height;
+ if (aBSize.Width > aTotalSize.Width)
+ aTotalSize.Width = aBSize.Width;
+ }
+ }
+ }
+ return aTotalSize;
+}
+
+
+
+
+void PresenterToolBar::LayoutPart (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const SharedElementContainerPart& rpPart,
+ const geometry::RealRectangle2D& rBoundingBox,
+ const geometry::RealSize2D& rPartSize,
+ const bool bIsHorizontal)
+{
+ double nGap (0);
+ if (rpPart->size() > 1)
+ {
+ if (bIsHorizontal)
+ nGap = (rBoundingBox.X2 - rBoundingBox.X1 - rPartSize.Width) / (rpPart->size()-1);
+ else
+ nGap = (rBoundingBox.Y2 - rBoundingBox.Y1 - rPartSize.Height) / (rpPart->size()-1);
+ }
+
+ // Place the elements.
+ double nX (rBoundingBox.X1);
+ double nY (rBoundingBox.Y1);
+
+ ElementContainerPart::const_iterator iElement;
+ ElementContainerPart::const_iterator iEnd (rpPart->end());
+ for (iElement=rpPart->begin(); iElement!=iEnd; ++iElement)
+ {
+ if (iElement->get() == NULL)
+ continue;
+
+ const awt::Size aElementSize ((*iElement)->GetBoundingSize(rxCanvas));
+ if (bIsHorizontal)
+ {
+ if ((*iElement)->IsFilling())
+ {
+ nY = rBoundingBox.Y1;
+ (*iElement)->SetSize(geometry::RealSize2D(aElementSize.Width, rBoundingBox.Y2 - rBoundingBox.Y1));
+ }
+ else
+ nY = rBoundingBox.Y1 + (rBoundingBox.Y2-rBoundingBox.Y1 - aElementSize.Height) / 2;
+ (*iElement)->SetLocation(awt::Point(sal_Int32(0.5 + nX), sal_Int32(0.5 + nY)));
+ nX += aElementSize.Width + nGap;
+ }
+ else
+ {
+ if ((*iElement)->IsFilling())
+ {
+ nX = rBoundingBox.X1;
+ (*iElement)->SetSize(geometry::RealSize2D(rBoundingBox.X2 - rBoundingBox.X1, aElementSize.Height));
+ }
+ else
+ nX = rBoundingBox.X1 + (rBoundingBox.X2-rBoundingBox.X1 - aElementSize.Width) / 2;
+ (*iElement)->SetLocation(awt::Point(sal_Int32(0.5 + nX), sal_Int32(0.5 + nY)));
+ nY += aElementSize.Height + nGap;
+ }
+ }
+}
+
+
+
+
+void PresenterToolBar::Paint (
+ const awt::Rectangle& rUpdateBox,
+ const rendering::ViewState& rViewState)
+{
+ OSL_ASSERT(mxCanvas.is());
+
+ ElementContainer::iterator iPart;
+ ElementContainer::const_iterator iEnd (maElementContainer.end());
+ for (iPart=maElementContainer.begin(); iPart!=iEnd; ++iPart)
+ {
+ ElementContainerPart::iterator iElement;
+ ElementContainerPart::const_iterator iPartEnd ((*iPart)->end());
+ for (iElement=(*iPart)->begin(); iElement!=iPartEnd; ++iElement)
+ {
+ if (iElement->get() != NULL)
+ {
+ if ( ! (*iElement)->IsOutside(rUpdateBox))
+ (*iElement)->Paint(mxCanvas, rViewState);
+ }
+ }
+ }
+}
+
+
+
+
+void PresenterToolBar::UpdateSlideNumber (void)
+{
+ if( mxSlideShowController.is() )
+ {
+ ElementContainer::iterator iPart;
+ ElementContainer::const_iterator iEnd (maElementContainer.end());
+ for (iPart=maElementContainer.begin(); iPart!=iEnd; ++iPart)
+ {
+ ElementContainerPart::iterator iElement;
+ ElementContainerPart::const_iterator iPartEnd ((*iPart)->end());
+ for (iElement=(*iPart)->begin(); iElement!=iPartEnd; ++iElement)
+ {
+ if (iElement->get() != NULL)
+ (*iElement)->CurrentSlideHasChanged();
+ }
+ }
+ }
+}
+
+
+
+
+void PresenterToolBar::CheckMouseOver (
+ const css::awt::MouseEvent& rEvent,
+ const bool bOverWindow,
+ const bool bMouseDown)
+{
+ ElementContainer::iterator iPart;
+ ElementContainer::const_iterator iEnd (maElementContainer.end());
+ for (iPart=maElementContainer.begin(); iPart!=iEnd; ++iPart)
+ {
+ ElementContainerPart::iterator iElement;
+ ElementContainerPart::const_iterator iPartEnd ((*iPart)->end());
+ for (iElement=(*iPart)->begin(); iElement!=iPartEnd; ++iElement)
+ {
+ if (iElement->get() == NULL)
+ continue;
+
+ awt::Rectangle aBox ((*iElement)->GetBoundingBox());
+ const bool bIsOver = bOverWindow
+ && aBox.X <= rEvent.X
+ && aBox.Width+aBox.X-1 >= rEvent.X
+ && aBox.Y <= rEvent.Y
+ && aBox.Height+aBox.Y-1 >= rEvent.Y;
+ (*iElement)->SetState(
+ bIsOver,
+ bIsOver && rEvent.Buttons!=0 && bMouseDown && rEvent.ClickCount>0);
+ }
+ }
+}
+
+
+
+
+void PresenterToolBar::ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterToolBar has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+
+
+//===== PresenterToolBarView ==================================================
+
+PresenterToolBarView::PresenterToolBarView (
+ const Reference<XComponentContext>& rxContext,
+ const Reference<XResourceId>& rxViewId,
+ const Reference<frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterToolBarViewInterfaceBase(m_aMutex),
+ mxPane(),
+ mxViewId(rxViewId),
+ mxWindow(),
+ mxCanvas(),
+ mpPresenterController(rpPresenterController),
+ mxSlideShowController(rpPresenterController->GetSlideShowController()),
+ mpToolBar()
+{
+ try
+ {
+ Reference<XControllerManager> xCM (rxController, UNO_QUERY_THROW);
+ Reference<XConfigurationController> xCC(xCM->getConfigurationController(),UNO_QUERY_THROW);
+ mxPane = Reference<XPane>(xCC->getResource(rxViewId->getAnchor()), UNO_QUERY_THROW);
+
+ mxWindow = mxPane->getWindow();
+ mxCanvas = mxPane->getCanvas();
+
+ mpToolBar = new PresenterToolBar(
+ rxContext,
+ mxWindow,
+ mxCanvas,
+ rpPresenterController,
+ PresenterToolBar::Center);
+ mpToolBar->Initialize(A2S("PresenterScreenSettings/ToolBars/ToolBar"));
+
+ if (mxWindow.is())
+ {
+ mxWindow->addPaintListener(this);
+
+ Reference<awt::XWindowPeer> xPeer (mxWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->setBackground(util::Color(0xff000000));
+
+ mxWindow->setVisible(sal_True);
+ }
+ }
+ catch (RuntimeException&)
+ {
+ mxViewId = NULL;
+ throw;
+ }
+}
+
+
+
+
+PresenterToolBarView::~PresenterToolBarView (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterToolBarView::disposing (void)
+{
+ Reference<lang::XComponent> xComponent (static_cast<XWeak*>(mpToolBar.get()), UNO_QUERY);
+ mpToolBar = NULL;
+ if (xComponent.is())
+ xComponent->dispose();
+
+ if (mxWindow.is())
+ {
+ mxWindow->removePaintListener(this);
+ mxWindow = NULL;
+ }
+ mxCanvas = NULL;
+ mxViewId = NULL;
+ mxPane = NULL;
+ mpPresenterController = NULL;
+ mxSlideShowController = NULL;
+
+}
+
+
+
+
+::rtl::Reference<PresenterToolBar> PresenterToolBarView::GetPresenterToolBar (void) const
+{
+ return mpToolBar;
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterToolBarView::windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ awt::Rectangle aWindowBox (mxWindow->getPosSize());
+ mpPresenterController->GetCanvasHelper()->Paint(
+ mpPresenterController->GetViewBackground(mxViewId->getResourceURL()),
+ mxCanvas,
+ rEvent.UpdateRect,
+ awt::Rectangle(0,0,aWindowBox.Width, aWindowBox.Height),
+ awt::Rectangle());
+}
+
+
+
+
+//----- lang::XEventListener -------------------------------------------------
+
+void SAL_CALL PresenterToolBarView::disposing (const lang::EventObject& rEventObject)
+ throw (RuntimeException)
+{
+ if (rEventObject.Source == mxWindow)
+ mxWindow = NULL;
+}
+
+
+
+
+//----- XResourceId -----------------------------------------------------------
+
+Reference<XResourceId> SAL_CALL PresenterToolBarView::getResourceId (void)
+ throw (RuntimeException)
+{
+ return mxViewId;
+}
+
+
+
+
+sal_Bool SAL_CALL PresenterToolBarView::isAnchorOnly (void)
+ throw (RuntimeException)
+{
+ return false;
+}
+
+
+
+
+//----- XDrawView -------------------------------------------------------------
+
+void SAL_CALL PresenterToolBarView::setCurrentPage (const Reference<drawing::XDrawPage>& rxSlide)
+ throw (RuntimeException)
+{
+ Reference<drawing::XDrawView> xToolBar (static_cast<XWeak*>(mpToolBar.get()), UNO_QUERY);
+ if (xToolBar.is())
+ xToolBar->setCurrentPage(rxSlide);
+}
+
+
+
+
+Reference<drawing::XDrawPage> SAL_CALL PresenterToolBarView::getCurrentPage (void)
+ throw (RuntimeException)
+{
+ return NULL;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+void PresenterToolBarView::ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterToolBarView has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+
+
+//===== PresenterToolBar::Element =============================================
+
+namespace {
+
+Element::Element (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+ : ElementInterfaceBase(m_aMutex),
+ mpToolBar(rpToolBar),
+ maLocation(),
+ maSize(),
+ mpNormal(),
+ mpMouseOver(),
+ mpSelected(),
+ mpDisabled(),
+ mpMode(),
+ mbIsOver(false),
+ mbIsPressed(false),
+ mbIsSelected(false),
+ mbIsEnabled(true)
+{
+ if (mpToolBar.get() != NULL)
+ {
+ OSL_ASSERT(mpToolBar->GetPresenterController().is());
+ OSL_ASSERT(mpToolBar->GetPresenterController()->GetWindowManager().is());
+ }
+}
+
+
+
+
+Element::~Element (void)
+{
+}
+
+
+
+
+void Element::SetModes (
+ const SharedElementMode& rpNormalMode,
+ const SharedElementMode& rpMouseOverMode,
+ const SharedElementMode& rpSelectedMode,
+ const SharedElementMode& rpDisabledMode)
+{
+ mpNormal = rpNormalMode;
+ mpMouseOver = rpMouseOverMode;
+ mpSelected = rpSelectedMode;
+ mpDisabled = rpDisabledMode;
+ mpMode = rpNormalMode;
+}
+
+
+
+
+void Element::disposing (void)
+{
+}
+
+
+
+
+awt::Size Element::GetBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas)
+{
+ maSize = CreateBoundingSize(rxCanvas);
+ return maSize;
+}
+
+
+
+
+awt::Rectangle Element::GetBoundingBox (void) const
+{
+ return awt::Rectangle(maLocation.X,maLocation.Y, maSize.Width, maSize.Height);
+}
+
+
+
+
+void Element::CurrentSlideHasChanged (void)
+{
+ UpdateState();
+}
+
+
+
+
+void Element::SetLocation (const awt::Point& rLocation)
+{
+ maLocation = rLocation;
+}
+
+
+
+void Element::SetSize (const geometry::RealSize2D& rSize)
+{
+ maSize = awt::Size(sal_Int32(0.5+rSize.Width), sal_Int32(0.5+rSize.Height));
+}
+
+
+
+
+bool Element::SetState (
+ const bool bIsOver,
+ const bool bIsPressed)
+{
+ bool bModified (mbIsOver != bIsOver || mbIsPressed != bIsPressed);
+ bool bClicked (mbIsPressed && bIsOver && ! bIsPressed);
+
+ mbIsOver = bIsOver;
+ mbIsPressed = bIsPressed;
+
+ // When the element is disabled then ignore mouse over or selection.
+ // When the element is selected then ignore mouse over.
+ if ( ! mbIsEnabled)
+ mpMode = mpDisabled;
+ else if (mbIsSelected)
+ mpMode = mpSelected;
+ else if (mbIsOver)
+ mpMode = mpMouseOver;
+ else
+ mpMode = mpNormal;
+
+ if (bClicked && mbIsEnabled)
+ {
+ if (mpMode.get() != NULL)
+ {
+ do
+ {
+ if (mpMode->msAction.getLength() <= 0)
+ break;
+
+ if (mpToolBar.get() == NULL)
+ break;
+
+ if (mpToolBar->GetPresenterController().get() == NULL)
+ break;
+
+ mpToolBar->GetPresenterController()->DispatchUnoCommand(mpMode->msAction);
+ mpToolBar->RequestLayout();
+ }
+ while (false);
+ }
+
+ }
+ else if (bModified)
+ {
+ Invalidate();
+ }
+
+ return bModified;
+}
+
+
+
+
+void Element::Invalidate (const bool bSynchronous)
+{
+ OSL_ASSERT(mpToolBar.is());
+ mpToolBar->InvalidateArea(GetBoundingBox(), bSynchronous);
+}
+
+
+
+
+bool Element::IsOutside (const awt::Rectangle& rBox)
+{
+ if (rBox.X >= maLocation.X+maSize.Width)
+ return true;
+ else if (rBox.Y >= maLocation.Y+maSize.Height)
+ return true;
+ else if (maLocation.X >= rBox.X+rBox.Width)
+ return true;
+ else if (maLocation.Y >= rBox.Y+rBox.Height)
+ return true;
+ else
+ return false;
+}
+
+
+
+bool Element::IsEnabled (void) const
+{
+ return mbIsEnabled;
+}
+
+
+
+
+void Element::SetEnabledState (const bool bIsEnabled)
+{
+ mbIsEnabled = bIsEnabled;
+}
+
+
+
+
+bool Element::IsFilling (void) const
+{
+ return false;
+}
+
+
+
+
+void Element::UpdateState (void)
+{
+ OSL_ASSERT(mpToolBar.get() != NULL);
+ OSL_ASSERT(mpToolBar->GetPresenterController().get() != NULL);
+
+ if (mpMode.get() == NULL)
+ return;
+
+ util::URL aURL (mpToolBar->GetPresenterController()->CreateURLFromString(mpMode->msAction));
+ Reference<frame::XDispatch> xDispatch (mpToolBar->GetPresenterController()->GetDispatch(aURL));
+ if (xDispatch.is())
+ {
+ xDispatch->addStatusListener(this, aURL);
+ xDispatch->removeStatusListener(this, aURL);
+ }
+}
+
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL Element::disposing (const css::lang::EventObject& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- document::XEventListener ----------------------------------------------
+
+void SAL_CALL Element::notifyEvent (const css::document::EventObject& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ UpdateState();
+}
+
+
+
+
+//----- frame::XStatusListener ------------------------------------------------
+
+void SAL_CALL Element::statusChanged (const css::frame::FeatureStateEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ bool bIsSelected (mbIsSelected);
+ bool bIsEnabled (rEvent.IsEnabled);
+ rEvent.State >>= bIsSelected;
+
+ if (bIsSelected != mbIsSelected || bIsEnabled != mbIsEnabled)
+ {
+ mbIsEnabled = bIsEnabled;
+ mbIsSelected = bIsSelected;
+ SetState(mbIsOver, mbIsPressed);
+ mpToolBar->RequestLayout();
+ }
+}
+
+} // end of anonymous namespace
+
+
+
+
+//===== ElementMode ===========================================================
+
+namespace {
+
+ElementMode::ElementMode (void)
+ : mpIcon(),
+ msAction(),
+ maText()
+{
+}
+
+
+
+
+void ElementMode::ReadElementMode (
+ const Reference<beans::XPropertySet>& rxElementProperties,
+ const OUString& rsModeName,
+ ::boost::shared_ptr<ElementMode>& rpDefaultMode,
+ ::sdext::presenter::PresenterToolBar::Context& rContext)
+{
+ try
+ {
+ Reference<container::XHierarchicalNameAccess> xNode (
+ PresenterConfigurationAccess::GetProperty(rxElementProperties, rsModeName),
+ UNO_QUERY);
+ Reference<beans::XPropertySet> xProperties (
+ PresenterConfigurationAccess::GetNodeProperties(xNode, OUString()));
+ if ( ! xProperties.is() && rpDefaultMode.get()!=NULL)
+ {
+ // The mode is not specified. Use the given, possibly empty,
+ // default mode instead.
+ mpIcon = rpDefaultMode->mpIcon;
+ msAction = rpDefaultMode->msAction;
+ maText = rpDefaultMode->maText;
+ }
+
+ // Read action.
+ if ( ! (PresenterConfigurationAccess::GetProperty(xProperties, A2S("Action")) >>= msAction))
+ if (rpDefaultMode.get()!=NULL)
+ msAction = rpDefaultMode->msAction;
+
+ // Read text and font
+ OUString sText (rpDefaultMode.get()!=NULL ? rpDefaultMode->maText.GetText() : OUString());
+ PresenterConfigurationAccess::GetProperty(xProperties, A2S("Text")) >>= sText;
+ Reference<container::XHierarchicalNameAccess> xFontNode (
+ PresenterConfigurationAccess::GetProperty(xProperties, A2S("Font")), UNO_QUERY);
+ PresenterTheme::SharedFontDescriptor pFont (PresenterTheme::ReadFont(
+ xFontNode,
+ A2S(""),
+ rpDefaultMode.get()!=NULL
+ ? rpDefaultMode->maText.GetFont()
+ : PresenterTheme::SharedFontDescriptor()));
+ maText = Text(sText,pFont);
+
+ // Read bitmaps to display as icons.
+ Reference<container::XHierarchicalNameAccess> xIconNode (
+ PresenterConfigurationAccess::GetProperty(xProperties, A2S("Icon")), UNO_QUERY);
+ mpIcon = PresenterBitmapContainer::LoadBitmap(
+ xIconNode,
+ A2S(""),
+ rContext.mxPresenterHelper,
+ rContext.msBasePath,
+ rContext.mxCanvas,
+ rpDefaultMode.get()!=NULL ? rpDefaultMode->mpIcon : SharedBitmapDescriptor());
+ }
+ catch(Exception&)
+ {
+ OSL_ASSERT(false);
+ }
+}
+
+} // end of anonymous namespace
+
+
+
+
+//===== Button ================================================================
+
+namespace {
+
+::rtl::Reference<Element> Button::Create (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+{
+ ::rtl::Reference<Button> pElement (new Button(rpToolBar));
+ pElement->Initialize();
+ return ::rtl::Reference<Element>(pElement.get());
+}
+
+
+
+
+Button::Button (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+ : Element(rpToolBar),
+ mbIsListenerRegistered(false)
+{
+ OSL_ASSERT(mpToolBar.get() != NULL);
+ OSL_ASSERT(mpToolBar->GetPresenterController().is());
+ OSL_ASSERT(mpToolBar->GetPresenterController()->GetWindowManager().is());
+}
+
+
+
+
+Button::~Button (void)
+{
+}
+
+
+
+
+void Button::Initialize (void)
+{
+ mpToolBar->GetPresenterController()->GetWindowManager()->AddLayoutListener(this);
+ mbIsListenerRegistered = true;
+}
+
+
+
+
+void Button::disposing (void)
+{
+ OSL_ASSERT(mpToolBar.get() != NULL);
+ if (mpToolBar.get() != NULL
+ && mbIsListenerRegistered)
+ {
+ OSL_ASSERT(mpToolBar->GetPresenterController().is());
+ OSL_ASSERT(mpToolBar->GetPresenterController()->GetWindowManager().is());
+
+ mbIsListenerRegistered = false;
+ mpToolBar->GetPresenterController()->GetWindowManager()->RemoveLayoutListener(this);
+ }
+ Element::disposing();
+}
+
+
+
+
+void Button::Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState)
+{
+ OSL_ASSERT(rxCanvas.is());
+
+ if (mpMode.get() == NULL)
+ return;
+
+ if (mpMode->mpIcon.get() == NULL)
+ return;
+
+ geometry::RealRectangle2D aTextBBox (mpMode->maText.GetBoundingBox(rxCanvas));
+ sal_Int32 nTextHeight (sal::static_int_cast<sal_Int32>(0.5 + aTextBBox.Y2 - aTextBBox.Y1));
+
+ PaintIcon(rxCanvas, nTextHeight, rViewState);
+ awt::Point aOffset(0,0);
+ if ( ! IsEnabled())
+ if (mpMode->mpIcon.get() != NULL)
+ {
+ Reference<rendering::XBitmap> xBitmap (mpMode->mpIcon->GetNormalBitmap());
+ if (xBitmap.is())
+ aOffset.Y = xBitmap->getSize().Height;
+ }
+ mpMode->maText.Paint(rxCanvas, rViewState, GetBoundingBox(), aOffset);
+}
+
+
+
+
+awt::Size Button::CreateBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas)
+{
+ if (mpMode.get() == NULL)
+ return awt::Size();
+
+ geometry::RealRectangle2D aTextBBox (mpMode->maText.GetBoundingBox(rxCanvas));
+ const sal_Int32 nGap (5);
+ sal_Int32 nTextHeight (sal::static_int_cast<sal_Int32>(0.5 + aTextBBox.Y2 - aTextBBox.Y1));
+ sal_Int32 nTextWidth (sal::static_int_cast<sal_Int32>(0.5 + aTextBBox.X2 - aTextBBox.X1));
+ Reference<rendering::XBitmap> xBitmap;
+ if (mpMode->mpIcon.get() != NULL)
+ xBitmap = mpMode->mpIcon->GetNormalBitmap();
+ if (xBitmap.is())
+ {
+ geometry::IntegerSize2D aSize (xBitmap->getSize());
+ return awt::Size(
+ ::std::max(aSize.Width, sal_Int32(0.5 + aTextBBox.X2 - aTextBBox.X1)),
+ aSize.Height+ nGap + nTextHeight);
+ }
+ else
+ return awt::Size(nTextWidth,nTextHeight);
+}
+
+
+
+
+void Button::PaintIcon (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const sal_Int32 nTextHeight,
+ const rendering::ViewState& rViewState)
+{
+ if (mpMode.get() == NULL)
+ return;
+
+ Reference<rendering::XBitmap> xBitmap (mpMode->mpIcon->GetBitmap(GetMode()));
+ if (xBitmap.is())
+ {
+ const sal_Int32 nX (maLocation.X
+ + (maSize.Width-xBitmap->getSize().Width) / 2);
+ const sal_Int32 nY (maLocation.Y
+ + (maSize.Height - nTextHeight - xBitmap->getSize().Height) / 2);
+ const rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,nX, 0,1,nY),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::OVER);
+ rxCanvas->drawBitmap(xBitmap, rViewState, aRenderState);
+ }
+}
+
+
+
+
+PresenterBitmapDescriptor::Mode Button::GetMode (void) const
+{
+ if ( ! IsEnabled())
+ return PresenterBitmapDescriptor::Disabled;
+ else if (mbIsPressed)
+ return PresenterBitmapDescriptor::ButtonDown;
+ else if (mbIsOver)
+ return PresenterBitmapDescriptor::MouseOver;
+ else
+ return PresenterBitmapDescriptor::Normal;
+}
+
+
+
+
+//----- lang::XEventListener --------------------------------------------------
+
+void SAL_CALL Button::disposing (const css::lang::EventObject& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ mbIsListenerRegistered = false;
+ Element::disposing(rEvent);
+}
+
+} // end of anonymous namespace
+
+
+
+
+//===== PresenterToolBar::Label ===============================================
+
+namespace {
+
+Label::Label (const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+ : Element(rpToolBar)
+{
+}
+
+
+
+
+awt::Size Label::CreateBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas)
+{
+ if (mpMode.get() == NULL)
+ return awt::Size(0,0);
+
+ geometry::RealRectangle2D aTextBBox (mpMode->maText.GetBoundingBox(rxCanvas));
+ return awt::Size(
+ sal::static_int_cast<sal_Int32>(0.5 + aTextBBox.X2 - aTextBBox.X1),
+ sal::static_int_cast<sal_Int32>(0.5 + aTextBBox.Y2 - aTextBBox.Y1));
+}
+
+
+
+
+
+void Label::SetText (const OUString& rsText)
+{
+ OSL_ASSERT(mpToolBar.get() != NULL);
+ if (mpMode.get() == NULL)
+ return;
+
+ const bool bRequestLayout (mpMode->maText.GetText().getLength() != rsText.getLength());
+
+ mpMode->maText.SetText(rsText);
+ // Just use the character count for determing whether a layout is
+ // necessary. This is an optimization to avoid layouts every time a new
+ // time value is set on some labels.
+ if (bRequestLayout)
+ mpToolBar->RequestLayout();
+ else
+ Invalidate(false);
+}
+
+
+
+
+void Label::Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState)
+{
+ OSL_ASSERT(rxCanvas.is());
+ if (mpMode.get() == NULL)
+ return;
+
+ mpMode->maText.Paint(rxCanvas, rViewState, GetBoundingBox(), awt::Point(0,0));
+}
+
+
+
+
+bool Label::SetState (const bool bIsOver, const bool bIsPressed)
+{
+ // For labels there is no mouse over effect.
+ (void)bIsOver;
+ (void)bIsPressed;
+ return Element::SetState(false, false);
+}
+
+} // end of anonymous namespace
+
+
+
+
+//===== Text ==================================================================
+
+namespace {
+
+Text::Text (void)
+ : msText(),
+ mpFont()
+{
+}
+
+
+
+
+Text::Text (const Text& rText)
+ : msText(rText.msText),
+ mpFont(rText.mpFont)
+{
+}
+
+
+
+
+Text::Text (
+ const OUString& rsText,
+ const PresenterTheme::SharedFontDescriptor& rpFont)
+ : msText(rsText),
+ mpFont(rpFont)
+{
+}
+
+
+
+
+void Text::SetText (const OUString& rsText)
+{
+ msText = rsText;
+}
+
+
+
+
+OUString Text::GetText (void) const
+{
+ return msText;
+}
+
+
+
+
+PresenterTheme::SharedFontDescriptor Text::GetFont (void) const
+{
+ return mpFont;
+}
+
+
+
+
+void Text::Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState,
+ const awt::Rectangle& rBoundingBox,
+ const awt::Point& rOffset)
+{
+ (void)rOffset;
+ OSL_ASSERT(rxCanvas.is());
+
+ if (msText.getLength() <= 0)
+ return;
+ if (mpFont.get() == NULL)
+ return;
+
+ if ( ! mpFont->mxFont.is())
+ mpFont->PrepareFont(rxCanvas);
+ if ( ! mpFont->mxFont.is())
+ return;
+
+ rendering::StringContext aContext (msText, 0, msText.getLength());
+
+ Reference<rendering::XTextLayout> xLayout (
+ mpFont->mxFont->createTextLayout(
+ aContext,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT,
+ 0));
+
+ geometry::RealRectangle2D aBox (xLayout->queryTextBounds());
+ const double nTextWidth = aBox.X2 - aBox.X1;
+ const double nY = rBoundingBox.Y + rBoundingBox.Height - aBox.Y2;
+ const double nX = rBoundingBox.X + (rBoundingBox.Width - nTextWidth)/2;
+
+ rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,nX, 0,1,nY),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, mpFont->mnColor);
+
+ rxCanvas->drawText(
+ aContext,
+ mpFont->mxFont,
+ rViewState,
+ aRenderState,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT);
+}
+
+
+
+
+geometry::RealRectangle2D Text::GetBoundingBox (const Reference<rendering::XCanvas>& rxCanvas)
+{
+ if (mpFont.get() != NULL && msText.getLength() > 0)
+ {
+ if ( ! mpFont->mxFont.is())
+ mpFont->PrepareFont(rxCanvas);
+ if (mpFont->mxFont.is())
+ {
+ rendering::StringContext aContext (msText, 0, msText.getLength());
+ Reference<rendering::XTextLayout> xLayout (
+ mpFont->mxFont->createTextLayout(
+ aContext,
+ rendering::TextDirection::WEAK_LEFT_TO_RIGHT,
+ 0));
+ return xLayout->queryTextBounds();
+ }
+ }
+ return geometry::RealRectangle2D(0,0,0,0);
+}
+
+
+
+
+//===== ProgressLabel =========================================================
+
+ProgressLabel::ProgressLabel (const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+ : Label(rpToolBar)
+{
+ SetText(A2S("-/-"));
+}
+
+
+
+
+void ProgressLabel::CurrentSlideHasChanged (void)
+{
+ Label::CurrentSlideHasChanged();
+ OSL_ASSERT(mpToolBar.is());
+ try
+ {
+ const sal_Int32 nCurrentSlideIndex (mpToolBar->GetCurrentSlideIndex() + 1);
+ const sal_Int32 nSlideCount (mpToolBar->GetSlideCount());
+ if (nCurrentSlideIndex >= 0 && nSlideCount > 0)
+ SetText(
+ OUString::valueOf(nCurrentSlideIndex)
+ + OUString(RTL_CONSTASCII_USTRINGPARAM(" / "))
+ + OUString::valueOf(nSlideCount));
+ else
+ SetText(A2S(""));
+ Invalidate();
+ }
+ catch (RuntimeException&)
+ {
+ }
+}
+
+
+
+
+//===== TimeFormatter =========================================================
+
+TimeFormatter::TimeFormatter (void)
+ : mbIs24HourFormat(true),
+ mbIsAmPmFormat(false),
+ mbIsShowSeconds(true)
+{
+}
+
+
+
+
+OUString TimeFormatter::FormatTime (const oslDateTime& rTime)
+{
+ ::rtl::OUStringBuffer sText;
+
+ const sal_Int32 nHours (sal::static_int_cast<sal_Int32>(rTime.Hours));
+ const sal_Int32 nMinutes (sal::static_int_cast<sal_Int32>(rTime.Minutes));
+ const sal_Int32 nSeconds(sal::static_int_cast<sal_Int32>(rTime.Seconds));
+
+ // Hours
+ if (mbIs24HourFormat)
+ sText.append(OUString::valueOf(nHours));
+ else
+ sText.append(OUString::valueOf(
+ sal::static_int_cast<sal_Int32>(nHours>12 ? nHours-12 : nHours)));
+
+ sText.append(A2S(":"));
+
+ // Minutes
+ const OUString sMinutes (OUString::valueOf(nMinutes));
+ if (sMinutes.getLength() == 1)
+ sText.append(A2S("0"));
+ sText.append(sMinutes);
+
+ // Seconds
+ if (mbIsShowSeconds)
+ {
+ sText.append(A2S(":"));
+ const OUString sSeconds (OUString::valueOf(nSeconds));
+ if (sSeconds.getLength() == 1)
+ sText.append(A2S("0"));
+ sText.append(sSeconds);
+ }
+
+ if (mbIsAmPmFormat)
+ {
+ if (rTime.Hours < 12)
+ sText.append(A2S("am"));
+ else
+ sText.append(A2S("pm"));
+ }
+ return sText.makeStringAndClear();
+}
+
+
+
+
+//===== TimeLabel =============================================================
+
+TimeLabel::TimeLabel (const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+ : Label(rpToolBar),
+ mpListener()
+{
+}
+
+
+
+
+void SAL_CALL TimeLabel::disposing (void)
+{
+ PresenterClockTimer::Instance(mpToolBar->GetComponentContext())->RemoveListener(mpListener);
+ mpListener.reset();
+}
+
+
+
+
+void TimeLabel::ConnectToTimer (void)
+{
+ mpListener.reset(new Listener(this));
+ PresenterClockTimer::Instance(mpToolBar->GetComponentContext())->AddListener(mpListener);
+}
+
+
+
+
+//===== CurrentTimeLabel ======================================================
+
+::rtl::Reference<Element> CurrentTimeLabel::Create (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+{
+ ::rtl::Reference<TimeLabel> pElement(new CurrentTimeLabel(rpToolBar));
+ pElement->ConnectToTimer();
+ return ::rtl::Reference<Element>(pElement.get());
+}
+
+
+
+
+CurrentTimeLabel::~CurrentTimeLabel (void)
+{
+}
+
+
+
+
+CurrentTimeLabel::CurrentTimeLabel (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+ : TimeLabel(rpToolBar),
+ maTimeFormatter()
+{
+}
+
+
+
+
+void CurrentTimeLabel::TimeHasChanged (const oslDateTime& rCurrentTime)
+{
+ SetText(maTimeFormatter.FormatTime(rCurrentTime));
+ Invalidate(false);
+}
+
+
+
+
+void CurrentTimeLabel::SetModes (
+ const SharedElementMode& rpNormalMode,
+ const SharedElementMode& rpMouseOverMode,
+ const SharedElementMode& rpSelectedMode,
+ const SharedElementMode& rpDisabledMode)
+{
+ TimeLabel::SetModes(rpNormalMode, rpMouseOverMode, rpSelectedMode, rpDisabledMode);
+ SetText(maTimeFormatter.FormatTime(PresenterClockTimer::GetCurrentTime()));
+}
+
+
+
+
+//===== PresentationTimeLabel =================================================
+
+::rtl::Reference<Element> PresentationTimeLabel::Create (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+{
+ ::rtl::Reference<TimeLabel> pElement(new PresentationTimeLabel(rpToolBar));
+ pElement->ConnectToTimer();
+ return ::rtl::Reference<Element>(pElement.get());
+}
+
+
+
+
+PresentationTimeLabel::~PresentationTimeLabel (void)
+{
+}
+
+
+
+
+PresentationTimeLabel::PresentationTimeLabel (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+ : TimeLabel(rpToolBar),
+ maTimeFormatter(),
+ maStartTimeValue()
+{
+ maStartTimeValue.Seconds = 0;
+ maStartTimeValue.Nanosec = 0;
+}
+
+
+
+
+void PresentationTimeLabel::TimeHasChanged (const oslDateTime& rCurrentTime)
+{
+ TimeValue aCurrentTimeValue;
+ if (osl_getTimeValueFromDateTime(const_cast<oslDateTime*>(&rCurrentTime), &aCurrentTimeValue))
+ {
+ if (maStartTimeValue.Seconds==0 && maStartTimeValue.Nanosec==0)
+ {
+ // This method is called for the first time. Initialize the
+ // start time. The start time is rounded to nearest second to
+ // keep the time updates synchronized with the current time label.
+ maStartTimeValue = aCurrentTimeValue;
+ if (maStartTimeValue.Nanosec >= 500000000)
+ maStartTimeValue.Seconds += 1;
+ maStartTimeValue.Nanosec = 0;
+ }
+
+ TimeValue aElapsedTimeValue;
+ aElapsedTimeValue.Seconds = aCurrentTimeValue.Seconds - maStartTimeValue.Seconds;
+ aElapsedTimeValue.Nanosec = aCurrentTimeValue.Nanosec - maStartTimeValue.Nanosec;
+
+ oslDateTime aElapsedDateTime;
+ if (osl_getDateTimeFromTimeValue(&aElapsedTimeValue, &aElapsedDateTime))
+ {
+ SetText(maTimeFormatter.FormatTime(aElapsedDateTime));
+ Invalidate(false);
+ }
+ }
+}
+
+
+
+void PresentationTimeLabel::SetModes (
+ const SharedElementMode& rpNormalMode,
+ const SharedElementMode& rpMouseOverMode,
+ const SharedElementMode& rpSelectedMode,
+ const SharedElementMode& rpDisabledMode)
+{
+ TimeLabel::SetModes(rpNormalMode, rpMouseOverMode, rpSelectedMode, rpDisabledMode);
+
+ oslDateTime aStartDateTime;
+ if (osl_getDateTimeFromTimeValue(&maStartTimeValue, &aStartDateTime))
+ {
+ SetText(maTimeFormatter.FormatTime(aStartDateTime));
+ }
+}
+
+
+
+
+//===== VerticalSeparator =====================================================
+
+VerticalSeparator::VerticalSeparator (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+ : Element(rpToolBar)
+{
+}
+
+
+
+
+void VerticalSeparator::Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState)
+{
+ OSL_ASSERT(rxCanvas.is());
+
+ awt::Rectangle aBBox (GetBoundingBox());
+
+ rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::OVER);
+ if (mpMode.get() != NULL)
+ {
+ PresenterTheme::SharedFontDescriptor pFont (mpMode->maText.GetFont());
+ if (pFont.get() != NULL)
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, pFont->mnColor);
+ }
+
+ if (aBBox.Height >= gnMinimalSeparatorSize + 2*gnSeparatorInset)
+ {
+ aBBox.Height -= 2*gnSeparatorInset;
+ aBBox.Y += gnSeparatorInset;
+ }
+ rxCanvas->fillPolyPolygon(
+ PresenterGeometryHelper::CreatePolygon(aBBox, rxCanvas->getDevice()),
+ rViewState,
+ aRenderState);
+}
+
+
+
+
+awt::Size VerticalSeparator::CreateBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas)
+{
+ (void)rxCanvas;
+ return awt::Size(1,20);
+}
+
+
+
+
+bool VerticalSeparator::IsFilling (void) const
+{
+ return true;
+}
+
+
+
+
+//===== HorizontalSeparator ===================================================
+
+HorizontalSeparator::HorizontalSeparator (
+ const ::rtl::Reference<PresenterToolBar>& rpToolBar)
+ : Element(rpToolBar)
+{
+}
+
+
+
+
+void HorizontalSeparator::Paint (
+ const Reference<rendering::XCanvas>& rxCanvas,
+ const rendering::ViewState& rViewState)
+{
+ OSL_ASSERT(rxCanvas.is());
+
+ awt::Rectangle aBBox (GetBoundingBox());
+
+ rendering::RenderState aRenderState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::OVER);
+ if (mpMode.get() != NULL)
+ {
+ PresenterTheme::SharedFontDescriptor pFont (mpMode->maText.GetFont());
+ if (pFont.get() != NULL)
+ PresenterCanvasHelper::SetDeviceColor(aRenderState, pFont->mnColor);
+ }
+
+ if (aBBox.Width >= gnMinimalSeparatorSize+2*gnSeparatorInset)
+ {
+ aBBox.Width -= 2*gnSeparatorInset;
+ aBBox.X += gnSeparatorInset;
+ }
+ rxCanvas->fillPolyPolygon(
+ PresenterGeometryHelper::CreatePolygon(aBBox, rxCanvas->getDevice()),
+ rViewState,
+ aRenderState);
+}
+
+
+
+
+awt::Size HorizontalSeparator::CreateBoundingSize (
+ const Reference<rendering::XCanvas>& rxCanvas)
+{
+ (void)rxCanvas;
+ return awt::Size(20,1);
+}
+
+
+
+
+bool HorizontalSeparator::IsFilling (void) const
+{
+ return true;
+}
+
+
+
+
+} // end of anonymous namespace
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterToolBar.hxx b/sdext/source/presenter/PresenterToolBar.hxx
new file mode 100644
index 000000000000..d4dbf2ac1048
--- /dev/null
+++ b/sdext/source/presenter/PresenterToolBar.hxx
@@ -0,0 +1,318 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_TOOL_BAR_HXX
+#define SDEXT_PRESENTER_TOOL_BAR_HXX
+
+#include "PresenterController.hxx"
+#include "PresenterViewFactory.hxx"
+
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase3.hxx>
+#include <cppuhelper/compbase5.hxx>
+#include <com/sun/star/awt/ActionEvent.hpp>
+#include <com/sun/star/awt/XActionListener.hpp>
+#include <com/sun/star/awt/XButton.hpp>
+#include <com/sun/star/awt/XControl.hpp>
+#include <com/sun/star/awt/XControlContainer.hpp>
+#include <com/sun/star/awt/XFixedText.hpp>
+#include <com/sun/star/awt/XMouseListener.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/drawing/XDrawPage.hpp>
+#include <com/sun/star/drawing/XDrawView.hpp>
+#include <com/sun/star/drawing/XPresenterHelper.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/drawing/framework/XResourceId.hpp>
+#include <com/sun/star/frame/XController.hpp>
+#include <map>
+#include <boost/scoped_ptr.hpp>
+#include <boost/function.hpp>
+#include <boost/noncopyable.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace {
+ typedef cppu::WeakComponentImplHelper5<
+ css::awt::XWindowListener,
+ css::awt::XPaintListener,
+ css::awt::XMouseListener,
+ css::awt::XMouseMotionListener,
+ css::drawing::XDrawView
+ > PresenterToolBarInterfaceBase;
+
+ typedef cppu::WeakComponentImplHelper3<
+ css::awt::XPaintListener,
+ css::drawing::framework::XView,
+ css::drawing::XDrawView
+ > PresenterToolBarViewInterfaceBase;
+}
+
+namespace sdext { namespace presenter {
+
+/** A simple tool bar that can display bitmapped buttons and labels. At the
+ moment there are buttons for moving to the next and previous slide and
+ to the next effect. A label displayes the index of the current slide
+ and the total number of slides.
+*/
+class PresenterToolBar
+ : private ::cppu::BaseMutex,
+ private ::boost::noncopyable,
+ public PresenterToolBarInterfaceBase,
+ public CachablePresenterView
+{
+public:
+ typedef ::boost::function<void(void)> Action;
+
+ enum Anchor { Left, Center, Right };
+
+ PresenterToolBar (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::awt::XWindow>& rxWindow,
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const ::rtl::Reference<PresenterController>& rpPresenterController,
+ const Anchor eAnchor);
+ virtual ~PresenterToolBar (void);
+
+ void Initialize (
+ const ::rtl::OUString& rsConfigurationPath);
+
+ virtual void SAL_CALL disposing (void);
+
+ void InvalidateArea (
+ const css::awt::Rectangle& rRepaintBox,
+ const bool bSynchronous);
+ sal_Int32 GetSlideCount (void);
+ sal_Int32 GetCurrentSlideIndex (void);
+ void RequestLayout (void);
+ css::geometry::RealSize2D GetSize (void);
+ css::geometry::RealSize2D GetMinimalSize (void);
+ ::rtl::Reference<PresenterController> GetPresenterController (void) const;
+ css::uno::Reference<css::awt::XWindow> GetWindow (void) const;
+ css::uno::Reference<css::uno::XComponentContext> GetComponentContext (void) const;
+
+ // lang::XEventListener
+
+ virtual void SAL_CALL
+ disposing (const css::lang::EventObject& rEventObject)
+ throw (css::uno::RuntimeException);
+
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseListener
+
+ virtual void SAL_CALL mousePressed (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseExited (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseMotionListener
+
+ virtual void SAL_CALL mouseMoved (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseDragged (const css::awt::MouseEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XDrawView
+
+ virtual void SAL_CALL setCurrentPage (
+ const css::uno::Reference<css::drawing::XDrawPage>& rxSlide)
+ throw (css::uno::RuntimeException);
+
+ virtual css::uno::Reference<css::drawing::XDrawPage> SAL_CALL getCurrentPage (void)
+ throw (css::uno::RuntimeException);
+
+ class Context;
+
+private:
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+
+ class ElementContainerPart;
+ typedef ::boost::shared_ptr<ElementContainerPart> SharedElementContainerPart;
+ typedef ::std::vector<SharedElementContainerPart> ElementContainer;
+ ElementContainer maElementContainer;
+ SharedElementContainerPart mpCurrentContainerPart;
+ css::uno::Reference<css::awt::XWindow> mxWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ css::uno::Reference<css::presentation::XSlideShowController> mxSlideShowController;
+ css::uno::Reference<css::drawing::XDrawPage> mxCurrentSlide;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ bool mbIsLayoutPending;
+ const Anchor meAnchor;
+ css::geometry::RealRectangle2D maBoundingBox;
+ /** The minimal size that is necessary to display all elements without
+ overlap and with minimal gaps between them.
+ */
+ css::geometry::RealSize2D maMinimalSize;
+
+ void CreateControls (
+ const ::rtl::OUString& rsConfigurationPath);
+ void Layout (const css::uno::Reference<css::rendering::XCanvas>& rxCanvas);
+ css::geometry::RealSize2D CalculatePartSize (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const SharedElementContainerPart& rpPart,
+ const bool bIsHorizontal);
+ void LayoutPart (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const SharedElementContainerPart& rpPart,
+ const css::geometry::RealRectangle2D& rBoundingBox,
+ const css::geometry::RealSize2D& rPartSize,
+ const bool bIsHorizontal);
+ void Clear (
+ const css::awt::Rectangle& rUpdateBox,
+ const css::rendering::ViewState& rViewState);
+ void Paint (
+ const css::awt::Rectangle& rUpdateBox,
+ const css::rendering::ViewState& rViewState);
+
+ void UpdateSlideNumber (void);
+
+ void CheckMouseOver (
+ const css::awt::MouseEvent& rEvent,
+ const bool bOverWindow,
+ const bool bMouseDown=false);
+
+ void ProcessEntry (
+ const ::css::uno::Reference<css::beans::XPropertySet>& rProperties,
+ Context& rContext);
+
+ /** This method throws a DisposedException when the object has already been
+ disposed.
+ */
+ void ThrowIfDisposed (void) const
+ throw (css::lang::DisposedException);
+};
+
+
+
+
+/** View for the PresenterToolBar.
+*/
+class PresenterToolBarView
+ : private ::cppu::BaseMutex,
+ private ::boost::noncopyable,
+ public PresenterToolBarViewInterfaceBase
+{
+public:
+ explicit PresenterToolBarView (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterToolBarView (void);
+
+ virtual void SAL_CALL disposing (void);
+
+ ::rtl::Reference<PresenterToolBar> GetPresenterToolBar (void) const;
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // lang::XEventListener
+
+ virtual void SAL_CALL
+ disposing (const css::lang::EventObject& rEventObject)
+ throw (css::uno::RuntimeException);
+
+
+ // XResourceId
+
+ virtual css::uno::Reference<css::drawing::framework::XResourceId> SAL_CALL getResourceId (void)
+ throw (css::uno::RuntimeException);
+
+ virtual sal_Bool SAL_CALL isAnchorOnly (void)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+ // XDrawView
+
+ virtual void SAL_CALL setCurrentPage (
+ const css::uno::Reference<css::drawing::XDrawPage>& rxSlide)
+ throw (css::uno::RuntimeException);
+
+ virtual css::uno::Reference<css::drawing::XDrawPage> SAL_CALL getCurrentPage (void)
+ throw (css::uno::RuntimeException);
+
+private:
+ // css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ css::uno::Reference<css::drawing::framework::XPane> mxPane;
+ css::uno::Reference<css::drawing::framework::XResourceId> mxViewId;
+ css::uno::Reference<css::awt::XWindow> mxWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxCanvas;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::presentation::XSlideShowController> mxSlideShowController;
+ ::rtl::Reference<PresenterToolBar> mpToolBar;
+
+ /** This method throws a DisposedException when the object has already been
+ disposed.
+ */
+ void ThrowIfDisposed (void) const
+ throw (css::lang::DisposedException);
+};
+
+} } // end of namespace ::sdext::presenter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterUIPainter.cxx b/sdext/source/presenter/PresenterUIPainter.cxx
new file mode 100644
index 000000000000..d5a5066989d8
--- /dev/null
+++ b/sdext/source/presenter/PresenterUIPainter.cxx
@@ -0,0 +1,259 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterUIPainter.hxx"
+
+#include "PresenterCanvasHelper.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/XPolyPolygon2D.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+
+namespace sdext { namespace presenter {
+
+
+void PresenterUIPainter::PaintHorizontalBitmapComposite (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::awt::Rectangle& rBoundingBox,
+ const css::uno::Reference<css::rendering::XBitmap>& rxLeftBitmap,
+ const css::uno::Reference<css::rendering::XBitmap>& rxRepeatableCenterBitmap,
+ const css::uno::Reference<css::rendering::XBitmap>& rxRightBitmap)
+{
+ if (PresenterGeometryHelper::AreRectanglesDisjoint(rRepaintBox, rBoundingBox))
+ {
+ // The bounding box lies completly outside the repaint area.
+ // Nothing has to be repainted.
+ return;
+ }
+
+ // Get bitmap sizes.
+ geometry::IntegerSize2D aLeftBitmapSize;
+ if (rxLeftBitmap.is())
+ aLeftBitmapSize = rxLeftBitmap->getSize();
+ geometry::IntegerSize2D aCenterBitmapSize;
+ if (rxRepeatableCenterBitmap.is())
+ aCenterBitmapSize = rxRepeatableCenterBitmap->getSize();
+ geometry::IntegerSize2D aRightBitmapSize;
+ if (rxRightBitmap.is())
+ aRightBitmapSize = rxRightBitmap->getSize();
+
+ // Prepare painting.
+ rendering::ViewState aViewState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ // Paint the left bitmap once.
+ if (rxLeftBitmap.is())
+ {
+ const awt::Rectangle aLeftBoundingBox (
+ rBoundingBox.X,
+ rBoundingBox.Y,
+ ::std::min(aLeftBitmapSize.Width, rBoundingBox.Width),
+ rBoundingBox.Height);
+ aViewState.Clip = Reference<rendering::XPolyPolygon2D>(
+ PresenterGeometryHelper::CreatePolygon(
+ PresenterGeometryHelper::Intersection(rRepaintBox, aLeftBoundingBox),
+ rxCanvas->getDevice()));
+ aRenderState.AffineTransform.m02 = aLeftBoundingBox.X;
+ aRenderState.AffineTransform.m12
+ = aLeftBoundingBox.Y + (aLeftBoundingBox.Height - aLeftBitmapSize.Height) / 2;
+ rxCanvas->drawBitmap(rxLeftBitmap, aViewState, aRenderState);
+ }
+
+ // Paint the right bitmap once.
+ if (rxRightBitmap.is())
+ {
+ const awt::Rectangle aRightBoundingBox (
+ rBoundingBox.X + rBoundingBox.Width - aRightBitmapSize.Width,
+ rBoundingBox.Y,
+ ::std::min(aRightBitmapSize.Width, rBoundingBox.Width),
+ rBoundingBox.Height);
+ aViewState.Clip = Reference<rendering::XPolyPolygon2D>(
+ PresenterGeometryHelper::CreatePolygon(
+ PresenterGeometryHelper::Intersection(rRepaintBox, aRightBoundingBox),
+ rxCanvas->getDevice()));
+ aRenderState.AffineTransform.m02
+ = aRightBoundingBox.X + aRightBoundingBox.Width - aRightBitmapSize.Width;
+ aRenderState.AffineTransform.m12
+ = aRightBoundingBox.Y + (aRightBoundingBox.Height - aRightBitmapSize.Height) / 2;
+ rxCanvas->drawBitmap(rxRightBitmap, aViewState, aRenderState);
+ }
+
+ // Paint the center bitmap to fill the remaining space.
+ if (rxRepeatableCenterBitmap.is())
+ {
+ const awt::Rectangle aCenterBoundingBox (
+ rBoundingBox.X + aLeftBitmapSize.Width,
+ rBoundingBox.Y,
+ rBoundingBox.Width - aLeftBitmapSize.Width - aRightBitmapSize.Width,
+ rBoundingBox.Height);
+ if (aCenterBoundingBox.Width > 0)
+ {
+ aViewState.Clip = Reference<rendering::XPolyPolygon2D>(
+ PresenterGeometryHelper::CreatePolygon(
+ PresenterGeometryHelper::Intersection(rRepaintBox, aCenterBoundingBox),
+ rxCanvas->getDevice()));
+ sal_Int32 nX (aCenterBoundingBox.X);
+ const sal_Int32 nRight (aCenterBoundingBox.X + aCenterBoundingBox.Width - 1);
+ aRenderState.AffineTransform.m12
+ = aCenterBoundingBox.Y + (aCenterBoundingBox.Height-aCenterBitmapSize.Height) / 2;
+ while(nX <= nRight)
+ {
+ aRenderState.AffineTransform.m02 = nX;
+ rxCanvas->drawBitmap(rxRepeatableCenterBitmap, aViewState, aRenderState);
+ nX += aCenterBitmapSize.Width;
+ }
+ }
+ }
+}
+
+
+
+
+void PresenterUIPainter::PaintVerticalBitmapComposite (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::awt::Rectangle& rBoundingBox,
+ const css::uno::Reference<css::rendering::XBitmap>& rxTopBitmap,
+ const css::uno::Reference<css::rendering::XBitmap>& rxRepeatableCenterBitmap,
+ const css::uno::Reference<css::rendering::XBitmap>& rxBottomBitmap)
+{
+ if (PresenterGeometryHelper::AreRectanglesDisjoint(rRepaintBox, rBoundingBox))
+ {
+ // The bounding box lies completly outside the repaint area.
+ // Nothing has to be repainted.
+ return;
+ }
+
+ // Get bitmap sizes.
+ geometry::IntegerSize2D aTopBitmapSize;
+ if (rxTopBitmap.is())
+ aTopBitmapSize = rxTopBitmap->getSize();
+ geometry::IntegerSize2D aCenterBitmapSize;
+ if (rxRepeatableCenterBitmap.is())
+ aCenterBitmapSize = rxRepeatableCenterBitmap->getSize();
+ geometry::IntegerSize2D aBottomBitmapSize;
+ if (rxBottomBitmap.is())
+ aBottomBitmapSize = rxBottomBitmap->getSize();
+
+ // Prepare painting.
+ rendering::ViewState aViewState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ // Paint the top bitmap once.
+ if (rxTopBitmap.is())
+ {
+ const awt::Rectangle aTopBoundingBox (
+ rBoundingBox.X,
+ rBoundingBox.Y,
+ rBoundingBox.Width,
+ ::std::min(aTopBitmapSize.Height, rBoundingBox.Height));
+ aViewState.Clip = Reference<rendering::XPolyPolygon2D>(
+ PresenterGeometryHelper::CreatePolygon(
+ PresenterGeometryHelper::Intersection(rRepaintBox, aTopBoundingBox),
+ rxCanvas->getDevice()));
+ aRenderState.AffineTransform.m02
+ = aTopBoundingBox.X + (aTopBoundingBox.Width - aTopBitmapSize.Width) / 2;
+ aRenderState.AffineTransform.m12 = aTopBoundingBox.Y;
+ rxCanvas->drawBitmap(rxTopBitmap, aViewState, aRenderState);
+ }
+
+ // Paint the bottom bitmap once.
+ if (rxBottomBitmap.is())
+ {
+ const sal_Int32 nBBoxHeight (::std::min(aBottomBitmapSize.Height, rBoundingBox.Height));
+ const awt::Rectangle aBottomBoundingBox (
+ rBoundingBox.X,
+ rBoundingBox.Y + rBoundingBox.Height - nBBoxHeight,
+ rBoundingBox.Width,
+ nBBoxHeight);
+ aViewState.Clip = Reference<rendering::XPolyPolygon2D>(
+ PresenterGeometryHelper::CreatePolygon(
+ PresenterGeometryHelper::Intersection(rRepaintBox, aBottomBoundingBox),
+ rxCanvas->getDevice()));
+ aRenderState.AffineTransform.m02
+ = aBottomBoundingBox.X + (aBottomBoundingBox.Width - aBottomBitmapSize.Width) / 2;
+ aRenderState.AffineTransform.m12
+ = aBottomBoundingBox.Y + aBottomBoundingBox.Height - aBottomBitmapSize.Height;
+ rxCanvas->drawBitmap(rxBottomBitmap, aViewState, aRenderState);
+ }
+
+ // Paint the center bitmap to fill the remaining space.
+ if (rxRepeatableCenterBitmap.is())
+ {
+ const awt::Rectangle aCenterBoundingBox (
+ rBoundingBox.X,
+ rBoundingBox.Y + aTopBitmapSize.Height,
+ rBoundingBox.Width,
+ rBoundingBox.Height - aTopBitmapSize.Height - aBottomBitmapSize.Height);
+ if (aCenterBoundingBox.Height > 0)
+ {
+ aViewState.Clip = Reference<rendering::XPolyPolygon2D>(
+ PresenterGeometryHelper::CreatePolygon(
+ PresenterGeometryHelper::Intersection(rRepaintBox, aCenterBoundingBox),
+ rxCanvas->getDevice()));
+ sal_Int32 nY (aCenterBoundingBox.Y);
+ const sal_Int32 nBottom (aCenterBoundingBox.Y + aCenterBoundingBox.Height - 1);
+ aRenderState.AffineTransform.m02
+ = aCenterBoundingBox.X + (aCenterBoundingBox.Width-aCenterBitmapSize.Width) / 2;
+ while(nY <= nBottom)
+ {
+ aRenderState.AffineTransform.m12 = nY;
+ rxCanvas->drawBitmap(rxRepeatableCenterBitmap, aViewState, aRenderState);
+ nY += aCenterBitmapSize.Height;
+ }
+ }
+ }
+}
+
+
+
+
+
+} } // end of namespace sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterUIPainter.hxx b/sdext/source/presenter/PresenterUIPainter.hxx
new file mode 100644
index 000000000000..52cdd5d2f4ea
--- /dev/null
+++ b/sdext/source/presenter/PresenterUIPainter.hxx
@@ -0,0 +1,73 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_UI_PAINTER_HXX
+#define SDEXT_PRESENTER_PRESENTER_UI_PAINTER_HXX
+
+#include "PresenterTheme.hxx"
+#include <com/sun/star/awt/Rectangle.hpp>
+#include <com/sun/star/rendering/XCanvas.hpp>
+#include <com/sun/star/rendering/XBitmap.hpp>
+#include <boost/noncopyable.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+
+/** Functions for painting UI elements.
+*/
+class PresenterUIPainter
+ : ::boost::noncopyable
+{
+public:
+ PresenterUIPainter (void);
+ ~PresenterUIPainter (void);
+
+ static void PaintHorizontalBitmapComposite (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::awt::Rectangle& rBoundingBox,
+ const css::uno::Reference<css::rendering::XBitmap>& rxLeftBitmap,
+ const css::uno::Reference<css::rendering::XBitmap>& rxRepeatableCenterBitmap,
+ const css::uno::Reference<css::rendering::XBitmap>& rxRightBitmap);
+
+ static void PaintVerticalBitmapComposite (
+ const css::uno::Reference<css::rendering::XCanvas>& rxCanvas,
+ const css::awt::Rectangle& rRepaintBox,
+ const css::awt::Rectangle& rBoundingBox,
+ const css::uno::Reference<css::rendering::XBitmap>& rxTopBitmap,
+ const css::uno::Reference<css::rendering::XBitmap>& rxRepeatableCenterBitmap,
+ const css::uno::Reference<css::rendering::XBitmap>& rxBottomBitmap);
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterViewFactory.cxx b/sdext/source/presenter/PresenterViewFactory.cxx
new file mode 100644
index 000000000000..2a33a4230254
--- /dev/null
+++ b/sdext/source/presenter/PresenterViewFactory.cxx
@@ -0,0 +1,656 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#include "PresenterViewFactory.hxx"
+#include "PresenterPaneContainer.hxx"
+#include "PresenterHelper.hxx"
+#include "PresenterHelpView.hxx"
+#include "PresenterNotesView.hxx"
+#include "PresenterSlideShowView.hxx"
+#include "PresenterSlidePreview.hxx"
+#include "PresenterSlideSorter.hxx"
+#include "PresenterToolBar.hxx"
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/framework/ResourceId.hpp>
+#include <com/sun/star/drawing/framework/XControllerManager.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/XDrawPages.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/XSlideSorterBase.hpp>
+#include <com/sun/star/presentation/XSlideShow.hpp>
+#include <com/sun/star/presentation/XSlideShowView.hpp>
+#include <cppuhelper/compbase1.hxx>
+#include <boost/bind.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace sdext { namespace presenter {
+
+const ::rtl::OUString PresenterViewFactory::msCurrentSlidePreviewViewURL(
+ A2S("private:resource/view/Presenter/CurrentSlidePreview"));
+const ::rtl::OUString PresenterViewFactory::msNextSlidePreviewViewURL(
+ A2S("private:resource/view/Presenter/NextSlidePreview"));
+const ::rtl::OUString PresenterViewFactory::msNotesViewURL(
+ A2S("private:resource/view/Presenter/Notes"));
+const ::rtl::OUString PresenterViewFactory::msToolBarViewURL(
+ A2S("private:resource/view/Presenter/ToolBar"));
+const ::rtl::OUString PresenterViewFactory::msSlideSorterURL(
+ A2S("private:resource/view/Presenter/SlideSorter"));
+const ::rtl::OUString PresenterViewFactory::msHelpViewURL(
+ A2S("private:resource/view/Presenter/Help"));
+
+
+
+//===== SimpleView ============================================================
+
+namespace {
+
+typedef ::cppu::WeakComponentImplHelper1 <XView> SimpleViewInterfaceBase;
+
+class SimpleView
+ : private ::cppu::BaseMutex,
+ public SimpleViewInterfaceBase
+{
+public:
+ SimpleView (const Reference<XResourceId>& rxViewId)
+ : SimpleViewInterfaceBase(m_aMutex),mxResourceId(rxViewId) {};
+ virtual ~SimpleView (void) {};
+
+ // XView
+
+ virtual Reference<XResourceId> SAL_CALL getResourceId (void) throw (RuntimeException)
+ { return mxResourceId; };
+
+private:
+ Reference<XResourceId> mxResourceId;
+};
+
+
+
+/** By default the PresenterSlidePreview shows the preview of the current
+ slide. This adapter class makes it display the preview of the next
+ slide.
+*/
+class NextSlidePreview : public PresenterSlidePreview
+{
+public:
+ NextSlidePreview (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::drawing::framework::XPane>& rxAnchorPane,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterSlidePreview(rxContext, rxViewId, rxAnchorPane, rpPresenterController)
+ {
+ }
+ virtual ~NextSlidePreview (void) {}
+ virtual void SAL_CALL setCurrentPage (
+ const css::uno::Reference<css::drawing::XDrawPage>& rxSlide)
+ throw (css::uno::RuntimeException)
+ {
+ Reference<presentation::XSlideShowController> xSlideShowController (
+ mpPresenterController->GetSlideShowController());
+ Reference<drawing::XDrawPage> xSlide;
+ if (xSlideShowController.is())
+ {
+ const sal_Int32 nCount (xSlideShowController->getSlideCount());
+ sal_Int32 nNextSlideIndex (-1);
+ if (xSlideShowController->getCurrentSlide() == rxSlide)
+ {
+ nNextSlideIndex = xSlideShowController->getNextSlideIndex();
+ }
+ else
+ {
+ for (sal_Int32 nIndex=0; nIndex<nCount; ++nIndex)
+ {
+ if (rxSlide == Reference<drawing::XDrawPage>(
+ xSlideShowController->getSlideByIndex(nIndex), UNO_QUERY))
+ {
+ nNextSlideIndex = nIndex + 1;
+ }
+ }
+ }
+ if (nNextSlideIndex >= 0)
+ {
+ if (nNextSlideIndex < nCount)
+ {
+ xSlide = Reference<drawing::XDrawPage>(
+ xSlideShowController->getSlideByIndex(nNextSlideIndex),
+ UNO_QUERY);
+ }
+ }
+ }
+ PresenterSlidePreview::setCurrentPage(xSlide);
+ }
+};
+
+} // end of anonymous namespace
+
+
+
+
+//===== PresenterViewFactory ==============================================
+
+PresenterViewFactory::PresenterViewFactory (
+ const Reference<uno::XComponentContext>& rxContext,
+ const Reference<frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterViewFactoryInterfaceBase(m_aMutex),
+ mxComponentContext(rxContext),
+ mxConfigurationController(),
+ mxControllerWeak(rxController),
+ mpPresenterController(rpPresenterController),
+ mpResourceCache()
+{
+}
+
+
+
+
+Reference<drawing::framework::XResourceFactory> PresenterViewFactory::Create (
+ const Reference<uno::XComponentContext>& rxContext,
+ const Reference<frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+{
+ rtl::Reference<PresenterViewFactory> pFactory (
+ new PresenterViewFactory(rxContext,rxController,rpPresenterController));
+ pFactory->Register(rxController);
+ return Reference<drawing::framework::XResourceFactory>(
+ static_cast<XWeak*>(pFactory.get()), UNO_QUERY);
+}
+
+
+
+
+void PresenterViewFactory::Register (const Reference<frame::XController>& rxController)
+{
+ try
+ {
+ // Get the configuration controller.
+ Reference<XControllerManager> xCM (rxController, UNO_QUERY_THROW);
+ mxConfigurationController = xCM->getConfigurationController();
+ if ( ! mxConfigurationController.is())
+ {
+ throw RuntimeException();
+ }
+ else
+ {
+ mxConfigurationController->addResourceFactory(msCurrentSlidePreviewViewURL, this);
+ mxConfigurationController->addResourceFactory(msNextSlidePreviewViewURL, this);
+ mxConfigurationController->addResourceFactory(msNotesViewURL, this);
+ mxConfigurationController->addResourceFactory(msToolBarViewURL, this);
+ mxConfigurationController->addResourceFactory(msSlideSorterURL, this);
+ mxConfigurationController->addResourceFactory(msHelpViewURL, this);
+ }
+ }
+ catch (RuntimeException&)
+ {
+ OSL_ASSERT(false);
+ if (mxConfigurationController.is())
+ mxConfigurationController->removeResourceFactoryForReference(this);
+ mxConfigurationController = NULL;
+
+ throw;
+ }
+}
+
+
+
+
+PresenterViewFactory::~PresenterViewFactory (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterViewFactory::disposing (void)
+ throw (RuntimeException)
+{
+ if (mxConfigurationController.is())
+ mxConfigurationController->removeResourceFactoryForReference(this);
+ mxConfigurationController = NULL;
+
+ if (mpResourceCache.get() != NULL)
+ {
+ // Dispose all views in the cache.
+ ResourceContainer::const_iterator iView (mpResourceCache->begin());
+ ResourceContainer::const_iterator iEnd (mpResourceCache->end());
+ for ( ; iView!=iEnd; ++iView)
+ {
+ try
+ {
+ Reference<lang::XComponent> xComponent (iView->second.first, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ catch (lang::DisposedException&)
+ {
+ }
+ }
+ mpResourceCache.reset();
+ }
+}
+
+
+
+
+//----- XViewFactory ----------------------------------------------------------
+
+Reference<XResource> SAL_CALL PresenterViewFactory::createResource (
+ const Reference<XResourceId>& rxViewId)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ Reference<XResource> xView;
+
+ if (rxViewId.is())
+ {
+ Reference<XPane> xAnchorPane (
+ mxConfigurationController->getResource(rxViewId->getAnchor()),
+ UNO_QUERY_THROW);
+ xView = GetViewFromCache(rxViewId, xAnchorPane);
+ if (xView == NULL)
+ xView = CreateView(rxViewId, xAnchorPane);
+
+ // Activate the view.
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPresenterController->GetPaneContainer()->FindPaneId(rxViewId->getAnchor()));
+ if (pDescriptor.get() != NULL)
+ pDescriptor->SetActivationState(true);
+ }
+
+ return xView;
+}
+
+
+
+
+void SAL_CALL PresenterViewFactory::releaseResource (const Reference<XResource>& rxView)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if ( ! rxView.is())
+ return;
+
+ // Deactivate the view.
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPresenterController->GetPaneContainer()->FindPaneId(
+ rxView->getResourceId()->getAnchor()));
+ if (pDescriptor.get() != NULL)
+ pDescriptor->SetActivationState(false);
+
+ // Dispose only views that we can not put into the cache.
+ CachablePresenterView* pView = dynamic_cast<CachablePresenterView*>(rxView.get());
+ if (pView == NULL || mpResourceCache.get()==NULL)
+ {
+ try
+ {
+ if (pView != NULL)
+ pView->ReleaseView();
+ Reference<lang::XComponent> xComponent (rxView, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+ }
+ catch (lang::DisposedException&)
+ {
+ // Do not let disposed exceptions get out. It might be interpreted
+ // as coming from the factory, which would then be removed from the
+ // drawing framework.
+ }
+ }
+ else
+ {
+ // Put cachable views in the cache.
+ Reference<XResourceId> xViewId (rxView->getResourceId());
+ if (xViewId.is())
+ {
+ Reference<XPane> xAnchorPane (
+ mxConfigurationController->getResource(xViewId->getAnchor()),
+ UNO_QUERY_THROW);
+ (*mpResourceCache)[xViewId->getResourceURL()]
+ = ViewResourceDescriptor(Reference<XView>(rxView, UNO_QUERY), xAnchorPane);
+ pView->DeactivatePresenterView();
+ }
+ }
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+Reference<XResource> PresenterViewFactory::GetViewFromCache(
+ const Reference<XResourceId>& rxViewId,
+ const Reference<XPane>& rxAnchorPane) const
+{
+ if (mpResourceCache.get() == NULL)
+ return NULL;
+
+ try
+ {
+ const OUString sResourceURL (rxViewId->getResourceURL());
+
+ // Can we use a view from the cache?
+ ResourceContainer::const_iterator iView (mpResourceCache->find(sResourceURL));
+ if (iView != mpResourceCache->end())
+ {
+ // The view is in the container but it can only be used if
+ // the anchor pane is the same now as it was at creation of
+ // the view.
+ if (iView->second.second == rxAnchorPane)
+ {
+ CachablePresenterView* pView
+ = dynamic_cast<CachablePresenterView*>(iView->second.first.get());
+ if (pView != NULL)
+ pView->ActivatePresenterView();
+ return Reference<XResource>(iView->second.first, UNO_QUERY);
+ }
+
+ // Right view, wrong pane. Create a new view.
+ }
+ }
+ catch (RuntimeException&)
+ {
+ }
+ return NULL;
+}
+
+
+
+
+Reference<XResource> PresenterViewFactory::CreateView(
+ const Reference<XResourceId>& rxViewId,
+ const Reference<XPane>& rxAnchorPane)
+{
+ Reference<XView> xView;
+
+ try
+ {
+ const OUString sResourceURL (rxViewId->getResourceURL());
+
+ if (sResourceURL.equals(msCurrentSlidePreviewViewURL))
+ {
+ xView = CreateSlideShowView(rxViewId);
+ }
+ else if (sResourceURL.equals(msNotesViewURL))
+ {
+ xView = CreateNotesView(rxViewId, rxAnchorPane);
+ }
+ else if (sResourceURL.equals(msNextSlidePreviewViewURL))
+ {
+ xView = CreateSlidePreviewView(rxViewId, rxAnchorPane);
+ }
+ else if (sResourceURL.equals(msToolBarViewURL))
+ {
+ xView = CreateToolBarView(rxViewId);
+ }
+ else if (sResourceURL.equals(msSlideSorterURL))
+ {
+ xView = CreateSlideSorterView(rxViewId);
+ }
+ else if (sResourceURL.equals(msHelpViewURL))
+ {
+ xView = CreateHelpView(rxViewId);
+ }
+
+ // Activate it.
+ CachablePresenterView* pView = dynamic_cast<CachablePresenterView*>(xView.get());
+ if (pView != NULL)
+ pView->ActivatePresenterView();
+ }
+ catch (RuntimeException&)
+ {
+ xView = NULL;
+ }
+
+ return Reference<XResource>(xView, UNO_QUERY);
+}
+
+
+
+
+Reference<XView> PresenterViewFactory::CreateSlideShowView(
+ const Reference<XResourceId>& rxViewId) const
+{
+ Reference<XView> xView;
+
+ if ( ! mxConfigurationController.is())
+ return xView;
+ if ( ! mxComponentContext.is())
+ return xView;
+
+ try
+ {
+ rtl::Reference<PresenterSlideShowView> pShowView (
+ new PresenterSlideShowView(
+ mxComponentContext,
+ rxViewId,
+ Reference<frame::XController>(mxControllerWeak),
+ mpPresenterController));
+ pShowView->LateInit();
+ xView = Reference<XView>(pShowView.get());
+ }
+ catch (RuntimeException&)
+ {
+ xView = NULL;
+ }
+
+ return xView;
+}
+
+
+
+
+Reference<XView> PresenterViewFactory::CreateSlidePreviewView(
+ const Reference<XResourceId>& rxViewId,
+ const Reference<XPane>& rxAnchorPane) const
+{
+ Reference<XView> xView;
+
+ if ( ! mxConfigurationController.is())
+ return xView;
+ if ( ! mxComponentContext.is())
+ return xView;
+
+ try
+ {
+ xView = Reference<XView>(
+ static_cast<XWeak*>(new NextSlidePreview(
+ mxComponentContext,
+ rxViewId,
+ rxAnchorPane,
+ mpPresenterController)),
+ UNO_QUERY_THROW);
+ }
+ catch (RuntimeException&)
+ {
+ xView = NULL;
+ }
+
+ return xView;
+}
+
+
+
+
+Reference<XView> PresenterViewFactory::CreateToolBarView(
+ const Reference<XResourceId>& rxViewId) const
+{
+ return new PresenterToolBarView(
+ mxComponentContext,
+ rxViewId,
+ Reference<frame::XController>(mxControllerWeak),
+ mpPresenterController);
+}
+
+
+
+
+Reference<XView> PresenterViewFactory::CreateNotesView(
+ const Reference<XResourceId>& rxViewId,
+ const Reference<XPane>& rxAnchorPane) const
+{
+ (void)rxAnchorPane;
+ Reference<XView> xView;
+
+ if ( ! mxConfigurationController.is())
+ return xView;
+ if ( ! mxComponentContext.is())
+ return xView;
+
+ try
+ {
+ xView = Reference<XView>(static_cast<XWeak*>(
+ new PresenterNotesView(
+ mxComponentContext,
+ rxViewId,
+ Reference<frame::XController>(mxControllerWeak),
+ mpPresenterController)),
+ UNO_QUERY_THROW);
+ }
+ catch (RuntimeException&)
+ {
+ xView = NULL;
+ }
+
+ return xView;
+}
+
+
+
+
+Reference<XView> PresenterViewFactory::CreateSlideSorterView(
+ const Reference<XResourceId>& rxViewId) const
+{
+ Reference<XView> xView;
+
+ if ( ! mxConfigurationController.is())
+ return xView;
+ if ( ! mxComponentContext.is())
+ return xView;
+
+ try
+ {
+ rtl::Reference<PresenterSlideSorter> pView (
+ new PresenterSlideSorter(
+ mxComponentContext,
+ rxViewId,
+ Reference<frame::XController>(mxControllerWeak),
+ mpPresenterController));
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPresenterController->GetPaneContainer()->FindPaneId(rxViewId->getAnchor()));
+ if (pDescriptor.get() != NULL)
+ pDescriptor->maActivator = ::boost::bind(
+ &PresenterSlideSorter::SetActiveState, pView.get(), _1);
+ xView = pView.get();
+ }
+ catch (RuntimeException&)
+ {
+ xView = NULL;
+ }
+
+ return xView;
+}
+
+
+
+
+Reference<XView> PresenterViewFactory::CreateHelpView(
+ const Reference<XResourceId>& rxViewId) const
+{
+ return Reference<XView>(new PresenterHelpView(
+ mxComponentContext,
+ rxViewId,
+ Reference<frame::XController>(mxControllerWeak),
+ mpPresenterController));
+}
+
+
+
+
+
+void PresenterViewFactory::ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterViewFactory object has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+
+
+//===== CachablePresenterView =================================================
+
+CachablePresenterView::CachablePresenterView (void)
+ : mbIsPresenterViewActive(true)
+{
+}
+
+
+
+
+void CachablePresenterView::ActivatePresenterView (void)
+{
+ mbIsPresenterViewActive = true;
+}
+
+
+
+
+void CachablePresenterView::DeactivatePresenterView (void)
+{
+ mbIsPresenterViewActive = false;
+}
+
+
+
+
+void CachablePresenterView::ReleaseView (void)
+{
+}
+
+
+
+} }
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterViewFactory.hxx b/sdext/source/presenter/PresenterViewFactory.hxx
new file mode 100644
index 000000000000..5fab682dae8a
--- /dev/null
+++ b/sdext/source/presenter/PresenterViewFactory.hxx
@@ -0,0 +1,189 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_VIEW_FACTORY_HXX
+#define SDEXT_PRESENTER_VIEW_FACTORY_HXX
+
+#include "PresenterController.hxx"
+#include <cppuhelper/compbase1.hxx>
+#include <cppuhelper/basemutex.hxx>
+#include <com/sun/star/lang/XInitialization.hpp>
+#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
+#include <com/sun/star/drawing/framework/XResourceFactory.hpp>
+#include <com/sun/star/drawing/framework/XView.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <rtl/ref.hxx>
+#include <boost/scoped_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterPaneContainer;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper1 <
+ css::drawing::framework::XResourceFactory
+ > PresenterViewFactoryInterfaceBase;
+}
+
+/** Base class for presenter views that allows the view factory to store
+ them in a cache and reuse deactivated views.
+*/
+class CachablePresenterView
+{
+public:
+ virtual void ActivatePresenterView (void);
+
+ /** Called when the view is put into a cache. The view must not paint
+ itself while being deactive.
+ */
+ virtual void DeactivatePresenterView (void);
+
+ /** Called before the view is disposed. This gives the view the
+ oportunity to trigger actions that may lead to (synchronous)
+ callbacks that do not result in DisposedExceptions.
+ */
+ virtual void ReleaseView (void);
+
+protected:
+ bool mbIsPresenterViewActive;
+
+ CachablePresenterView (void);
+};
+
+
+
+
+/** Factory of the presenter screen specific views. The supported set of
+ views includes:
+ a life view of the current slide,
+ a static preview of the next slide,
+ the notes of the current slide,
+ a tool bar
+*/
+class PresenterViewFactory
+ : public ::cppu::BaseMutex,
+ public PresenterViewFactoryInterfaceBase
+{
+public:
+ static const ::rtl::OUString msCurrentSlidePreviewViewURL;
+ static const ::rtl::OUString msNextSlidePreviewViewURL;
+ static const ::rtl::OUString msNotesViewURL;
+ static const ::rtl::OUString msToolBarViewURL;
+ static const ::rtl::OUString msSlideSorterURL;
+ static const ::rtl::OUString msHelpViewURL;
+
+ /** Create a new instance of this class and register it as resource
+ factory in the drawing framework of the given controller.
+ This registration keeps it alive. When the drawing framework is
+ shut down and releases its reference to the factory then the factory
+ is destroyed.
+ */
+ static css::uno::Reference<css::drawing::framework::XResourceFactory> Create (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterViewFactory (void);
+
+ static ::rtl::OUString getImplementationName_static (void);
+ static css::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static (void);
+ static css::uno::Reference<css::uno::XInterface> Create(
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext)
+ SAL_THROW((css::uno::Exception));
+
+ virtual void SAL_CALL disposing (void)
+ throw (css::uno::RuntimeException);
+
+
+ // XResourceFactory
+
+ virtual css::uno::Reference<css::drawing::framework::XResource>
+ SAL_CALL createResource (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL
+ releaseResource (
+ const css::uno::Reference<css::drawing::framework::XResource>& rxPane)
+ throw (css::uno::RuntimeException);
+
+private:
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ css::uno::Reference<css::drawing::framework::XConfigurationController>
+ mxConfigurationController;
+ css::uno::WeakReference<css::frame::XController> mxControllerWeak;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ typedef ::std::pair<css::uno::Reference<css::drawing::framework::XView>,
+ css::uno::Reference<css::drawing::framework::XPane> > ViewResourceDescriptor;
+ typedef ::std::map<rtl::OUString, ViewResourceDescriptor> ResourceContainer;
+ ::boost::scoped_ptr<ResourceContainer> mpResourceCache;
+
+ PresenterViewFactory (
+ const css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const css::uno::Reference<css::frame::XController>& rxController,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+
+ void Register (const css::uno::Reference<css::frame::XController>& rxController);
+
+ css::uno::Reference<css::drawing::framework::XView> CreateSlideShowView(
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId) const;
+
+ css::uno::Reference<css::drawing::framework::XView> CreateSlidePreviewView(
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::drawing::framework::XPane>& rxPane) const;
+
+ css::uno::Reference<css::drawing::framework::XView> CreateToolBarView(
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId) const;
+
+ css::uno::Reference<css::drawing::framework::XView> CreateNotesView(
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::drawing::framework::XPane>& rxPane) const;
+
+ css::uno::Reference<css::drawing::framework::XView> CreateSlideSorterView(
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId) const;
+
+ css::uno::Reference<css::drawing::framework::XView> CreateHelpView(
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId) const;
+
+ css::uno::Reference<css::drawing::framework::XResource> GetViewFromCache (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::drawing::framework::XPane>& rxAnchorPane) const;
+ css::uno::Reference<css::drawing::framework::XResource> CreateView(
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxViewId,
+ const css::uno::Reference<css::drawing::framework::XPane>& rxAnchorPane);
+
+ void ThrowIfDisposed (void) const throw (::com::sun::star::lang::DisposedException);
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterWindowManager.cxx b/sdext/source/presenter/PresenterWindowManager.cxx
new file mode 100644
index 000000000000..466e3fe9ca25
--- /dev/null
+++ b/sdext/source/presenter/PresenterWindowManager.cxx
@@ -0,0 +1,1644 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sdext.hxx"
+
+#undef ENABLE_PANE_RESIZING
+//#define ENABLE_PANE_RESIZING
+
+#include "PresenterWindowManager.hxx"
+#include "PresenterAnimation.hxx"
+#include "PresenterAnimator.hxx"
+#include "PresenterController.hxx"
+#include "PresenterGeometryHelper.hxx"
+#include "PresenterHelper.hxx"
+#include "PresenterPaintManager.hxx"
+#include "PresenterPaneBase.hxx"
+#include "PresenterPaneBorderManager.hxx"
+#include "PresenterPaneBorderPainter.hxx"
+#include "PresenterPaneContainer.hxx"
+#include "PresenterPaneFactory.hxx"
+#include "PresenterSprite.hxx"
+#include "PresenterToolBar.hxx"
+#include "PresenterViewFactory.hxx"
+#include "PresenterTheme.hxx"
+#include <com/sun/star/awt/InvalidateStyle.hpp>
+#include <com/sun/star/awt/PosSize.hpp>
+#include <com/sun/star/awt/SystemPointer.hpp>
+#include <com/sun/star/awt/XDevice.hpp>
+#include <com/sun/star/awt/XWindow2.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
+#include <com/sun/star/awt/WindowAttribute.hpp>
+#include <com/sun/star/container/XChild.hpp>
+#include <com/sun/star/drawing/framework/ResourceId.hpp>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
+#include <com/sun/star/rendering/FillRule.hpp>
+#include <com/sun/star/rendering/PathCapType.hpp>
+#include <com/sun/star/rendering/PathJoinType.hpp>
+#include <com/sun/star/rendering/Texture.hpp>
+#include <com/sun/star/rendering/TexturingMode.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+#include <boost/bind.hpp>
+#include <boost/bind/protect.hpp>
+#include <math.h>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::drawing::framework;
+using ::rtl::OUString;
+
+#define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
+
+namespace sdext { namespace presenter {
+
+namespace {
+
+ typedef ::cppu::WeakComponentImplHelper1<
+ css::drawing::framework::XConfigurationChangeListener
+ > ModeChangeAnimationStarterInterfaceBase;
+
+ class ModeChangeAnimationStarter
+ : protected ::cppu::BaseMutex,
+ public ModeChangeAnimationStarterInterfaceBase
+ {
+ public:
+ ModeChangeAnimationStarter (
+ const Reference<drawing::framework::XConfigurationController>& rxConfigurationController,
+ const Reference<awt::XWindow>& rxWindow,
+ const Reference<rendering::XSpriteCanvas>& rxCanvas,
+ const ::boost::shared_ptr<PresenterAnimator>& rpAnimator);
+ virtual ~ModeChangeAnimationStarter (void);
+ virtual void SAL_CALL disposing (void);
+
+ // XConfigurationChangeListener
+
+ virtual void SAL_CALL notifyConfigurationChange (
+ const com::sun::star::drawing::framework::ConfigurationChangeEvent& rEvent)
+ throw (com::sun::star::uno::RuntimeException);
+
+
+ // XEventListener
+
+ virtual void SAL_CALL disposing (
+ const com::sun::star::lang::EventObject& rEvent)
+ throw (com::sun::star::uno::RuntimeException);
+
+ private:
+ Reference<drawing::framework::XConfigurationController> mxConfigurationController;
+ ::boost::shared_ptr<PresenterAnimator> mpAnimator;
+ ::boost::shared_ptr<PresenterSprite> mpSprite;
+ Reference<rendering::XSpriteCanvas> mxCanvas;
+ };
+
+}
+
+
+
+
+//===== PresenterWindowManager ================================================
+
+PresenterWindowManager::PresenterWindowManager (
+ const Reference<XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterPaneContainer>& rpPaneContainer,
+ const ::rtl::Reference<PresenterController>& rpPresenterController)
+ : PresenterWindowManagerInterfaceBase(m_aMutex),
+ mxComponentContext(rxContext),
+ mpPresenterController(rpPresenterController),
+ mxParentWindow(),
+ mxParentCanvas(),
+ mxPaneBorderManager(),
+ mpPaneBorderPainter(),
+ mpPaneContainer(rpPaneContainer),
+ mbIsLayoutPending(true),
+ mbIsLayouting(false),
+ mpTheme(),
+ mpBackgroundBitmap(),
+ mxScaledBackgroundBitmap(),
+ maPaneBackgroundColor(),
+ mxClipPolygon(),
+ meLayoutMode(LM_Generic),
+ mbIsSlideSorterActive(false),
+ mbIsHelpViewActive(false),
+ maLayoutListeners(),
+ mbIsMouseClickPending(false)
+{
+ UpdateWindowList();
+}
+
+
+
+
+PresenterWindowManager::~PresenterWindowManager (void)
+{
+}
+
+
+
+
+void SAL_CALL PresenterWindowManager::disposing (void)
+{
+ NotifyDisposing();
+
+ SetParentPane(NULL);
+
+ Reference<lang::XComponent> xComponent (mxPaneBorderManager, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+ mxPaneBorderManager = NULL;
+
+ PresenterPaneContainer::PaneList::const_iterator iPane;
+ PresenterPaneContainer::PaneList::const_iterator iEnd (mpPaneContainer->maPanes.end());
+ for (iPane=mpPaneContainer->maPanes.begin(); iPane!=iEnd; ++iPane)
+ {
+ if ((*iPane)->mxBorderWindow.is())
+ {
+ (*iPane)->mxBorderWindow->removeWindowListener(this);
+ (*iPane)->mxBorderWindow->removeFocusListener(this);
+#ifndef ENABLE_PANE_RESIZING
+ (*iPane)->mxBorderWindow->removeMouseListener(this);
+#endif
+ }
+ }
+}
+
+
+
+
+void PresenterWindowManager::SetParentPane (
+ const Reference<drawing::framework::XPane>& rxPane)
+{
+ if (mxParentWindow.is())
+ {
+ mxParentWindow->removeWindowListener(this);
+ mxParentWindow->removePaintListener(this);
+ mxParentWindow->removeMouseListener(this);
+ mxParentWindow->removeFocusListener(this);
+ }
+ mxParentWindow = NULL;
+ mxParentCanvas = NULL;
+
+ if (rxPane.is())
+ {
+ mxParentWindow = rxPane->getWindow();
+ mxParentCanvas = rxPane->getCanvas();
+ }
+ else
+ {
+ mxParentWindow = NULL;
+ }
+
+ if (mxParentWindow.is())
+ {
+ mxParentWindow->addWindowListener(this);
+ mxParentWindow->addPaintListener(this);
+ mxParentWindow->addMouseListener(this);
+ mxParentWindow->addFocusListener(this);
+
+ // We paint our own background, make that of the parent window transparent.
+ Reference<awt::XWindowPeer> xPeer (mxParentWindow, UNO_QUERY);
+ if (xPeer.is())
+ xPeer->setBackground(util::Color(0xff000000));
+ }
+}
+
+
+
+
+void PresenterWindowManager::SetTheme (const ::boost::shared_ptr<PresenterTheme>& rpTheme)
+{
+ mpTheme = rpTheme;
+
+ // Get background bitmap or background color from the theme.
+
+ if (mpTheme.get() != NULL)
+ {
+ mpBackgroundBitmap = mpTheme->GetBitmap(OUString(), A2S("Background"));
+ }
+}
+
+
+
+
+void PresenterWindowManager::NotifyPaneCreation (
+ const PresenterPaneContainer::SharedPaneDescriptor& rpDescriptor)
+{
+ if (rpDescriptor.get()==NULL)
+ {
+ OSL_ASSERT(rpDescriptor.get()!=NULL);
+ return;
+ }
+ if ( ! rpDescriptor->mxContentWindow.is())
+ {
+ OSL_ASSERT(rpDescriptor->mxContentWindow.is());
+ return;
+ }
+
+ mbIsLayoutPending = true;
+
+ Reference<awt::XWindow> xBorderWindow (rpDescriptor->mxBorderWindow);
+ OSL_ASSERT(xBorderWindow.is());
+ if (xBorderWindow.is() && ! rpDescriptor->mbIsSprite)
+ {
+ Invalidate();
+
+ xBorderWindow->addWindowListener(this);
+ xBorderWindow->addFocusListener(this);
+#ifndef ENABLE_PANE_RESIZING
+ xBorderWindow->addMouseListener(this);
+#endif
+ }
+
+ UpdateWindowList();
+ Layout();
+}
+
+
+
+
+void PresenterWindowManager::NotifyViewCreation (const Reference<XView>& rxView)
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindPaneId(rxView->getResourceId()->getAnchor()));
+ OSL_ASSERT(pDescriptor.get() != NULL);
+ if (pDescriptor.get() != NULL)
+ {
+ Layout();
+
+ mpPresenterController->GetPaintManager()->Invalidate(
+ pDescriptor->mxContentWindow,
+ (sal_Int16)(awt::InvalidateStyle::TRANSPARENT
+ | awt::InvalidateStyle::CHILDREN));
+ }
+}
+
+
+
+
+void PresenterWindowManager::SetPanePosSizeRelative (
+ const Reference<XResourceId>& rxPaneId,
+ const double nRelativeX,
+ const double nRelativeY,
+ const double nRelativeWidth,
+ const double nRelativeHeight)
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindPaneId(rxPaneId));
+ if (pDescriptor.get() != NULL)
+ {
+ pDescriptor->mnLeft = nRelativeX;
+ pDescriptor->mnTop = nRelativeY;
+ pDescriptor->mnRight = nRelativeX + nRelativeWidth;
+ pDescriptor->mnBottom = nRelativeY + nRelativeHeight;
+
+ mpPaneContainer->ToTop(pDescriptor);
+ }
+}
+
+
+
+
+void PresenterWindowManager::SetPanePosSizeAbsolute (
+ const OUString& rsPaneURL,
+ const double nX,
+ const double nY,
+ const double nWidth,
+ const double nHeight)
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindPaneURL(rsPaneURL));
+ if (pDescriptor.get() != NULL)
+ {
+ awt::Rectangle aParentBox = mxParentWindow->getPosSize();
+ if (aParentBox.Width > 0 && aParentBox.Height > 0)
+ {
+ pDescriptor->mnLeft = nX / aParentBox.Width;
+ pDescriptor->mnTop = nY / aParentBox.Height;
+ pDescriptor->mnRight = (nX + nWidth) / aParentBox.Width;
+ pDescriptor->mnBottom = (nY + nHeight) / aParentBox.Height;
+ }
+ if (pDescriptor->mxBorderWindow.is())
+ pDescriptor->mxBorderWindow->setPosSize(
+ ::sal::static_int_cast<sal_Int32>(nX),
+ ::sal::static_int_cast<sal_Int32>(nY),
+ ::sal::static_int_cast<sal_Int32>(nWidth),
+ ::sal::static_int_cast<sal_Int32>(nHeight),
+ awt::PosSize::POSSIZE);
+ }
+}
+
+
+
+
+void PresenterWindowManager::SetPaneBorderPainter (
+ const ::rtl::Reference<PresenterPaneBorderPainter>& rPainter)
+{
+ mpPaneBorderPainter = rPainter;
+}
+
+
+
+
+//----- XWindowListener -------------------------------------------------------
+
+void SAL_CALL PresenterWindowManager::windowResized (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ if (rEvent.Source == mxParentWindow)
+ {
+ Layout();
+ }
+ else
+ {
+ Reference<awt::XWindow> xWindow (rEvent.Source,UNO_QUERY);
+ if (xWindow.is())
+ {
+ UpdateWindowSize(xWindow);
+
+ // Make sure the background of a transparent window is painted.
+ mpPresenterController->GetPaintManager()->Invalidate(mxParentWindow);
+ }
+ }
+}
+
+
+
+
+void SAL_CALL PresenterWindowManager::windowMoved (const awt::WindowEvent& rEvent)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+ if (rEvent.Source != mxParentWindow)
+ {
+ Reference<awt::XWindow> xWindow (rEvent.Source,UNO_QUERY);
+ UpdateWindowSize(xWindow);
+
+ // Make sure the background of a transparent window is painted.
+ mpPresenterController->GetPaintManager()->Invalidate(xWindow);
+ }
+}
+
+
+
+
+void SAL_CALL PresenterWindowManager::windowShown (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+void SAL_CALL PresenterWindowManager::windowHidden (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ (void)rEvent;
+}
+
+
+
+
+//----- XPaintListener --------------------------------------------------------
+
+void SAL_CALL PresenterWindowManager::windowPaint (const awt::PaintEvent& rEvent)
+ throw (RuntimeException)
+{
+ ThrowIfDisposed();
+
+ if ( ! mxParentWindow.is())
+ return;
+ if ( ! mxParentCanvas.is())
+ return;
+
+ if (mpTheme.get()!=NULL)
+ {
+ try
+ {
+ if (mbIsLayoutPending)
+ Layout();
+ PaintBackground(rEvent.UpdateRect);
+ if ( ! PaintChildren(rEvent))
+ {
+ Reference<rendering::XSpriteCanvas> xSpriteCanvas (mxParentCanvas, UNO_QUERY);
+ // if (xSpriteCanvas.is())
+ // xSpriteCanvas->updateScreen(sal_False);
+ }
+ }
+ catch (RuntimeException&)
+ {
+ OSL_FAIL("paint failed!");
+ }
+ }
+}
+
+
+
+
+//----- XMouseListener --------------------------------------------------------
+
+void SAL_CALL PresenterWindowManager::mousePressed (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ mbIsMouseClickPending = true;
+}
+
+
+
+
+void SAL_CALL PresenterWindowManager::mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+#ifndef ENABLE_PANE_RESIZING
+ if (mbIsMouseClickPending)
+ {
+ mbIsMouseClickPending = false;
+ mpPresenterController->HandleMouseClick(rEvent);
+ }
+#else
+ (void)rEvent;
+#endif
+}
+
+
+
+
+void SAL_CALL PresenterWindowManager::mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ mbIsMouseClickPending = false;
+}
+
+
+
+
+void SAL_CALL PresenterWindowManager::mouseExited (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException)
+{
+ (void)rEvent;
+ mbIsMouseClickPending = false;
+}
+
+
+
+
+//----- XFocusListener --------------------------------------------------------
+
+void SAL_CALL PresenterWindowManager::focusGained (const css::awt::FocusEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ (void)rEvent;
+ OSL_TRACE("PresenterWindowManager::focusGained window %x\n",
+ rEvent.Source.get());
+}
+
+
+
+
+void SAL_CALL PresenterWindowManager::focusLost (const css::awt::FocusEvent& rEvent)
+ throw (css::uno::RuntimeException)
+{
+ ThrowIfDisposed();
+ (void)rEvent;
+}
+
+
+
+
+//----- XEventListener --------------------------------------------------------
+
+void SAL_CALL PresenterWindowManager::disposing (const lang::EventObject& rEvent)
+ throw (RuntimeException)
+{
+ if (rEvent.Source == mxParentWindow)
+ mxParentWindow = NULL;
+ else
+ {
+ Reference<awt::XWindow> xWindow (rEvent.Source, UNO_QUERY);
+ }
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+
+bool PresenterWindowManager::PaintChildren (const awt::PaintEvent& rEvent) const
+{
+ bool bChildInvalidated (false);
+
+ // Call windowPaint on all children that lie in or touch the
+ // update rectangle.
+ PresenterPaneContainer::PaneList::const_iterator iPane;
+ PresenterPaneContainer::PaneList::const_iterator iEnd (mpPaneContainer->maPanes.end());
+ for (iPane=mpPaneContainer->maPanes.begin(); iPane!=iEnd; ++iPane)
+ {
+ try
+ {
+ // Make sure that the pane shall and can be painted.
+ if ( ! (*iPane)->mbIsActive)
+ continue;
+ if ((*iPane)->mbIsSprite)
+ continue;
+ if ( ! (*iPane)->mxPane.is())
+ continue;
+ if ( ! (*iPane)->mxBorderWindow.is())
+ continue;
+ Reference<awt::XWindow> xBorderWindow ((*iPane)->mxBorderWindow);
+ if ( ! xBorderWindow.is())
+ continue;
+
+ // Get the area in which the border of the pane has to be painted.
+ const awt::Rectangle aBorderBox (xBorderWindow->getPosSize());
+ const awt::Rectangle aBorderUpdateBox(
+ PresenterGeometryHelper::Intersection(
+ rEvent.UpdateRect,
+ aBorderBox));
+ if (aBorderUpdateBox.Width<=0 || aBorderUpdateBox.Height<=0)
+ continue;
+
+ const awt::Rectangle aLocalBorderUpdateBox(
+ PresenterGeometryHelper::TranslateRectangle(
+ aBorderUpdateBox,
+ -aBorderBox.X,
+ -aBorderBox.Y));
+
+ // Invalidate the area of the content window.
+ mpPresenterController->GetPaintManager()->Invalidate(
+ xBorderWindow,
+ aLocalBorderUpdateBox,
+ sal_Int16(awt::InvalidateStyle::CHILDREN
+ | awt::InvalidateStyle::NOTRANSPARENT));
+ }
+ catch (RuntimeException&)
+ {
+ OSL_FAIL("paint children failed!");
+ }
+ }
+
+ return bChildInvalidated;
+}
+
+
+
+
+void PresenterWindowManager::SetLayoutMode (const LayoutMode eMode)
+{
+ OSL_ASSERT(mpPresenterController.get() != NULL);
+
+ if (meLayoutMode != eMode
+ || mbIsSlideSorterActive
+ || mbIsHelpViewActive)
+ {
+ meLayoutMode = eMode;
+ mbIsSlideSorterActive = false;
+ mbIsHelpViewActive = false;
+
+ mpPresenterController->RequestViews(
+ mbIsSlideSorterActive,
+ meLayoutMode==LM_Notes,
+ mbIsHelpViewActive);
+ Layout();
+ NotifyLayoutModeChange();
+ }
+}
+
+
+
+
+PresenterWindowManager::LayoutMode PresenterWindowManager::GetLayoutMode (void) const
+{
+ return meLayoutMode;
+}
+
+
+
+
+void PresenterWindowManager::SetSlideSorterState (bool bIsActive)
+{
+ if (mbIsSlideSorterActive != bIsActive)
+ {
+ mbIsSlideSorterActive = bIsActive;
+ if (mbIsSlideSorterActive)
+ mbIsHelpViewActive = false;
+ StoreViewMode(GetViewMode());
+
+ mpPresenterController->RequestViews(
+ mbIsSlideSorterActive,
+ meLayoutMode==LM_Notes,
+ mbIsHelpViewActive);
+ Layout();
+ NotifyLayoutModeChange();
+ }
+}
+
+
+
+
+bool PresenterWindowManager::IsSlideSorterActive (void) const
+{
+ return mbIsSlideSorterActive;
+}
+
+
+
+
+void PresenterWindowManager::SetHelpViewState (bool bIsActive)
+{
+ if (mbIsHelpViewActive != bIsActive)
+ {
+ mbIsHelpViewActive = bIsActive;
+ if (mbIsHelpViewActive)
+ mbIsSlideSorterActive = false;
+ StoreViewMode(GetViewMode());
+
+ mpPresenterController->RequestViews(
+ mbIsSlideSorterActive,
+ meLayoutMode==LM_Notes,
+ mbIsHelpViewActive);
+ Layout();
+ NotifyLayoutModeChange();
+ }
+}
+
+
+
+
+bool PresenterWindowManager::IsHelpViewActive (void) const
+{
+ return mbIsHelpViewActive;
+}
+
+
+
+
+void PresenterWindowManager::SetViewMode (const ViewMode eMode)
+{
+ switch (eMode)
+ {
+ case VM_Standard:
+ SetSlideSorterState(false);
+ SetHelpViewState(false);
+ SetLayoutMode(LM_Standard);
+ break;
+
+ case VM_Notes:
+ SetSlideSorterState(false);
+ SetHelpViewState(false);
+ SetLayoutMode(LM_Notes);
+ break;
+
+ case VM_SlideOverview:
+ SetHelpViewState(false);
+ SetSlideSorterState(true);
+ break;
+
+ case VM_Help:
+ SetHelpViewState(true);
+ SetSlideSorterState(false);
+ break;
+ }
+
+ StoreViewMode(eMode);
+}
+
+
+
+
+PresenterWindowManager::ViewMode PresenterWindowManager::GetViewMode (void) const
+{
+ if (mbIsHelpViewActive)
+ return VM_Help;
+ else if (mbIsSlideSorterActive)
+ return VM_SlideOverview;
+ else if (meLayoutMode == LM_Notes)
+ return VM_Notes;
+ else
+ return VM_Standard;
+}
+
+
+
+
+void PresenterWindowManager::RestoreViewMode (void)
+{
+ sal_Int32 nMode (0);
+ PresenterConfigurationAccess aConfiguration (
+ mxComponentContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_ONLY);
+ aConfiguration.GetConfigurationNode(A2S("Presenter/InitialViewMode")) >>= nMode;
+ switch (nMode)
+ {
+ default:
+ case 0:
+ SetViewMode(VM_Standard);
+ break;
+
+ case 1:
+ SetViewMode(VM_Notes);
+ break;
+
+ case 2:
+ SetViewMode(VM_SlideOverview);
+ break;
+ }
+}
+
+
+
+
+void PresenterWindowManager::StoreViewMode (const ViewMode eViewMode)
+{
+ try
+ {
+ PresenterConfigurationAccess aConfiguration (
+ mxComponentContext,
+ OUString(RTL_CONSTASCII_USTRINGPARAM("/org.openoffice.Office.extension.PresenterScreen/")),
+ PresenterConfigurationAccess::READ_WRITE);
+ aConfiguration.GoToChild(A2S("Presenter"));
+ Any aValue;
+ switch (eViewMode)
+ {
+ default:
+ case VM_Standard:
+ aValue = Any(sal_Int32(0));
+ break;
+
+ case VM_Notes:
+ aValue = Any(sal_Int32(1));
+ break;
+
+ case VM_SlideOverview:
+ aValue = Any(sal_Int32(2));
+ break;
+ }
+
+ aConfiguration.SetProperty (A2S("InitialViewMode"), aValue);
+ aConfiguration.CommitChanges();
+ }
+ catch (Exception&)
+ {
+ }
+}
+
+
+
+
+void PresenterWindowManager::AddLayoutListener (
+ const Reference<document::XEventListener>& rxListener)
+{
+ maLayoutListeners.push_back(rxListener);
+}
+
+
+
+
+void PresenterWindowManager::RemoveLayoutListener (
+ const Reference<document::XEventListener>& rxListener)
+{
+ LayoutListenerContainer::iterator iListener (maLayoutListeners.begin());
+ LayoutListenerContainer::iterator iEnd (maLayoutListeners.end());
+ for ( ; iListener!=iEnd; ++iListener)
+ {
+ if (*iListener == rxListener)
+ {
+ maLayoutListeners.erase(iListener);
+ // Assume that there are no multiple entries.
+ break;
+ }
+ }
+}
+
+
+
+
+void PresenterWindowManager::Layout (void)
+{
+ if (mxParentWindow.is() && ! mbIsLayouting)
+ {
+ mbIsLayoutPending = false;
+ mbIsLayouting = true;
+ mxScaledBackgroundBitmap = NULL;
+ mxClipPolygon = NULL;
+
+ try
+ {
+ if (mbIsSlideSorterActive)
+ LayoutSlideSorterMode();
+ else if (mbIsHelpViewActive)
+ LayoutHelpMode();
+ else
+ switch (meLayoutMode)
+ {
+ case LM_Standard:
+ default:
+ LayoutStandardMode();
+ break;
+
+ case LM_Notes:
+ LayoutNotesMode();
+ break;
+ }
+ }
+ catch (Exception&)
+ {
+ OSL_ASSERT(false);
+ throw;
+ }
+
+ mbIsLayouting = false;
+ }
+}
+
+
+
+
+void PresenterWindowManager::LayoutStandardMode (void)
+{
+ awt::Rectangle aBox = mxParentWindow->getPosSize();
+
+ const double nGoldenRatio ((1 + sqrt(5.0)) / 2);
+ const double nGap (20);
+ const double nHorizontalSlideDivide (aBox.Width / nGoldenRatio);
+ double nSlidePreviewTop (0);
+
+ // For the current slide view calculate the outer height from the outer
+ // width. This takes into acount the slide aspect ratio and thus has to
+ // go over the inner pane size.
+ PresenterPaneContainer::SharedPaneDescriptor pPane (
+ mpPaneContainer->FindPaneURL(PresenterPaneFactory::msCurrentSlidePreviewPaneURL));
+ if (pPane.get() != NULL)
+ {
+ const awt::Size aCurrentSlideOuterBox(CalculatePaneSize(
+ nHorizontalSlideDivide - 1.5*nGap,
+ PresenterPaneFactory::msCurrentSlidePreviewPaneURL));
+ nSlidePreviewTop = (aBox.Height - aCurrentSlideOuterBox.Height) / 2;
+ SetPanePosSizeAbsolute (
+ PresenterPaneFactory::msCurrentSlidePreviewPaneURL,
+ nGap,
+ nSlidePreviewTop,
+ aCurrentSlideOuterBox.Width,
+ aCurrentSlideOuterBox.Height);
+ }
+
+
+ // For the next slide view calculate the outer height from the outer
+ // width. This takes into acount the slide aspect ratio and thus has to
+ // go over the inner pane size.
+ pPane = mpPaneContainer->FindPaneURL(PresenterPaneFactory::msNextSlidePreviewPaneURL);
+ if (pPane.get() != NULL)
+ {
+ const awt::Size aNextSlideOuterBox (CalculatePaneSize(
+ aBox.Width - nHorizontalSlideDivide - 1.5*nGap,
+ PresenterPaneFactory::msNextSlidePreviewPaneURL));
+ SetPanePosSizeAbsolute (
+ PresenterPaneFactory::msNextSlidePreviewPaneURL,
+ aBox.Width - aNextSlideOuterBox.Width - nGap,
+ nSlidePreviewTop,
+ aNextSlideOuterBox.Width,
+ aNextSlideOuterBox.Height);
+ }
+
+ LayoutToolBar();
+}
+
+
+
+
+void PresenterWindowManager::LayoutNotesMode (void)
+{
+ awt::Rectangle aBox = mxParentWindow->getPosSize();
+
+ const geometry::RealRectangle2D aToolBarBox (LayoutToolBar());
+
+ const double nGoldenRatio ((1 + sqrt(5.0)) / 2);
+ const double nGap (20);
+ const double nPrimaryWidth (aBox.Width / nGoldenRatio);
+ const double nSecondaryWidth (aBox.Width - nPrimaryWidth);
+ const double nTertiaryWidth (nSecondaryWidth / nGoldenRatio);
+ double nSlidePreviewTop (0);
+ double nNotesViewBottom (aToolBarBox.Y1 - nGap);
+
+ // The notes view has no fixed aspect ratio.
+ PresenterPaneContainer::SharedPaneDescriptor pPane (
+ mpPaneContainer->FindPaneURL(PresenterPaneFactory::msNotesPaneURL));
+ if (pPane.get() != NULL)
+ {
+ const geometry::RealSize2D aNotesViewOuterSize(
+ nPrimaryWidth - 1.5*nGap + 0.5,
+ nNotesViewBottom);
+ nSlidePreviewTop = (aBox.Height
+ - aToolBarBox.Y2 + aToolBarBox.Y1 - aNotesViewOuterSize.Height) / 2;
+ SetPanePosSizeAbsolute (
+ PresenterPaneFactory::msNotesPaneURL,
+ aBox.Width - aNotesViewOuterSize.Width - nGap,
+ nSlidePreviewTop,
+ aNotesViewOuterSize.Width,
+ aNotesViewOuterSize.Height);
+ nNotesViewBottom = nSlidePreviewTop + aNotesViewOuterSize.Height;
+ }
+
+ // For the current slide view calculate the outer height from the outer
+ // width. This takes into acount the slide aspect ratio and thus has to
+ // go over the inner pane size.
+ pPane = mpPaneContainer->FindPaneURL(PresenterPaneFactory::msCurrentSlidePreviewPaneURL);
+ if (pPane.get() != NULL)
+ {
+ const awt::Size aCurrentSlideOuterBox(CalculatePaneSize(
+ nSecondaryWidth - 1.5*nGap,
+ PresenterPaneFactory::msCurrentSlidePreviewPaneURL));
+ SetPanePosSizeAbsolute (
+ PresenterPaneFactory::msCurrentSlidePreviewPaneURL,
+ nGap,
+ nSlidePreviewTop,
+ aCurrentSlideOuterBox.Width,
+ aCurrentSlideOuterBox.Height);
+ }
+
+
+ // For the next slide view calculate the outer height from the outer
+ // width. This takes into acount the slide aspect ratio and thus has to
+ // go over the inner pane size.
+ pPane = mpPaneContainer->FindPaneURL(PresenterPaneFactory::msNextSlidePreviewPaneURL);
+ if (pPane.get() != NULL)
+ {
+ const awt::Size aNextSlideOuterBox (CalculatePaneSize(
+ nTertiaryWidth,
+ PresenterPaneFactory::msNextSlidePreviewPaneURL));
+ SetPanePosSizeAbsolute (
+ PresenterPaneFactory::msNextSlidePreviewPaneURL,
+ nGap,
+ nNotesViewBottom - aNextSlideOuterBox.Height,
+ aNextSlideOuterBox.Width,
+ aNextSlideOuterBox.Height);
+ }
+}
+
+
+
+
+void PresenterWindowManager::LayoutSlideSorterMode (void)
+{
+ const geometry::RealRectangle2D aToolBarBox (LayoutToolBar());
+
+ awt::Rectangle aWindowBox = mxParentWindow->getPosSize();
+ const double nGap (20);
+ SetPanePosSizeAbsolute(
+ mpPaneContainer->GetPaneURLForViewURL(PresenterViewFactory::msSlideSorterURL),
+ nGap,
+ nGap,
+ aWindowBox.Width - 2*nGap,
+ aToolBarBox.Y1 - 2*nGap);
+}
+
+
+
+
+void PresenterWindowManager::LayoutHelpMode (void)
+{
+ const geometry::RealRectangle2D aToolBarBox (LayoutToolBar());
+
+ awt::Rectangle aWindowBox = mxParentWindow->getPosSize();
+ const double nGap (20);
+ const double nGoldenRatio ((1 + sqrt(5.0)) / 2);
+ const double nWidth = ::std::min(aWindowBox.Width - 2*nGap, aWindowBox.Width/nGoldenRatio);
+ SetPanePosSizeAbsolute(
+ mpPaneContainer->GetPaneURLForViewURL(PresenterViewFactory::msHelpViewURL),
+ (aWindowBox.Width - nWidth)/2,
+ nGap,
+ nWidth,
+ aToolBarBox.Y1 - 2*nGap);
+}
+
+
+
+
+geometry::RealRectangle2D PresenterWindowManager::LayoutToolBar (void)
+{
+ double nToolBarWidth (400);
+ double nToolBarHeight (80);
+
+ // Get access to the tool bar.
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor(
+ mpPaneContainer->FindPaneURL(PresenterPaneFactory::msToolBarPaneURL));
+ if (pDescriptor.get() != NULL)
+ {
+ PresenterToolBarView* pToolBarView
+ = dynamic_cast<PresenterToolBarView*>(pDescriptor->mxView.get());
+ if (pToolBarView != NULL && pToolBarView->GetPresenterToolBar().is())
+ {
+ geometry::RealSize2D aSize (pToolBarView->GetPresenterToolBar()->GetMinimalSize());
+
+ if (mpPaneBorderPainter.is())
+ {
+ const awt::Rectangle aBox (mpPaneBorderPainter->addBorder (
+ PresenterPaneFactory::msToolBarPaneURL,
+ awt::Rectangle(
+ 0,
+ 0,
+ PresenterGeometryHelper::Round(aSize.Width),
+ PresenterGeometryHelper::Round(aSize.Height)),
+ css::drawing::framework::BorderType_TOTAL_BORDER));
+
+ nToolBarWidth = aBox.Width;
+ nToolBarHeight = aBox.Height;
+ }
+ else
+ {
+ nToolBarWidth = aSize.Width + 20;
+ nToolBarHeight = aSize.Height + 10;
+ }
+ }
+ }
+
+ const awt::Rectangle aBox = mxParentWindow->getPosSize();
+ const double nToolBarX ((aBox.Width - nToolBarWidth) / 2);
+ const double nToolBarY (aBox.Height - nToolBarHeight);
+ SetPanePosSizeAbsolute(
+ PresenterPaneFactory::msToolBarPaneURL,
+ nToolBarX,
+ nToolBarY,
+ nToolBarWidth,
+ nToolBarHeight);
+
+ return geometry::RealRectangle2D(
+ nToolBarX,
+ nToolBarY,
+ nToolBarX + nToolBarWidth - 1,
+ nToolBarY + nToolBarHeight - 1);
+}
+
+
+
+
+awt::Size PresenterWindowManager::CalculatePaneSize (
+ const double nOuterWidth,
+ const OUString& rsPaneURL)
+{
+ // Calculate the inner width by removing the pane border.
+ awt::Rectangle aInnerBox (mpPaneBorderPainter->RemoveBorder (
+ rsPaneURL,
+ awt::Rectangle(0,0,
+ sal_Int32(nOuterWidth+0.5),sal_Int32(nOuterWidth)),
+ drawing::framework::BorderType_TOTAL_BORDER));
+
+ // Calculate the inner height with the help of the slide aspect ratio.
+ const double nCurrentSlideInnerHeight (
+ aInnerBox.Width / mpPresenterController->GetSlideAspectRatio());
+
+ // Add the pane border to get the outer box.
+ awt::Rectangle aOuterBox (mpPaneBorderPainter->AddBorder (
+ rsPaneURL,
+ awt::Rectangle(0,0,
+ aInnerBox.Width,sal_Int32(nCurrentSlideInnerHeight+0.5)),
+ drawing::framework::BorderType_TOTAL_BORDER));
+
+ return awt::Size(aOuterBox.Width, aOuterBox.Height);
+}
+
+
+
+
+void PresenterWindowManager::NotifyLayoutModeChange (void)
+{
+ document::EventObject aEvent;
+ aEvent.Source = Reference<XInterface>(static_cast<XWeak*>(this));
+
+ LayoutListenerContainer aContainerCopy (maLayoutListeners);
+ LayoutListenerContainer::iterator iListener (aContainerCopy.begin());
+ LayoutListenerContainer::iterator iEnd (aContainerCopy.end());
+ for ( ; iListener!=iEnd; ++iListener)
+ {
+ if (iListener->is())
+ {
+ try
+ {
+ (*iListener)->notifyEvent(aEvent);
+ }
+ catch (lang::DisposedException&)
+ {
+ RemoveLayoutListener(*iListener);
+ }
+ catch (RuntimeException&)
+ {
+ }
+ }
+ }
+}
+
+
+
+
+void PresenterWindowManager::NotifyDisposing (void)
+{
+ lang::EventObject aEvent;
+ aEvent.Source = static_cast<XWeak*>(this);
+
+ LayoutListenerContainer aContainer;
+ aContainer.swap(maLayoutListeners);
+ LayoutListenerContainer::iterator iListener (aContainer.begin());
+ LayoutListenerContainer::iterator iEnd (aContainer.end());
+ for ( ; iListener!=iEnd; ++iListener)
+ {
+ if (iListener->is())
+ {
+ try
+ {
+ (*iListener)->disposing(aEvent);
+ }
+ catch (lang::DisposedException&)
+ {
+ }
+ catch (RuntimeException&)
+ {
+ }
+ }
+ }
+}
+
+
+
+
+void PresenterWindowManager::LayoutUnknownMode (void)
+{
+ awt::Rectangle aBox = mxParentWindow->getPosSize();
+
+ PresenterPaneContainer::PaneList::const_iterator iPane;
+ PresenterPaneContainer::PaneList::const_iterator iEnd (mpPaneContainer->maPanes.end());
+ for (iPane=mpPaneContainer->maPanes.begin(); iPane!=iEnd; ++iPane)
+ {
+ const PresenterPaneContainer::SharedPaneDescriptor& pDescriptor (*iPane);
+ if ( ! pDescriptor->mxBorderWindow.is())
+ continue;
+
+ // Layout the border window.
+ const sal_Int32 nX = (sal_Int32)(pDescriptor->mnLeft * aBox.Width);
+ const sal_Int32 nY = (sal_Int32)(pDescriptor->mnTop * aBox.Height);
+ const sal_Int32 nWidth = (sal_Int32)(pDescriptor->mnRight * aBox.Width) - nX;
+ const sal_Int32 nHeight = (sal_Int32)(pDescriptor->mnBottom * aBox.Height) - nY;
+
+ pDescriptor->mxBorderWindow->setPosSize(
+ nX,nY,nWidth,nHeight,
+ awt::PosSize::POSSIZE);
+ }
+}
+
+
+
+
+void PresenterWindowManager::UpdateWindowSize (const Reference<awt::XWindow>& rxBorderWindow)
+{
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (
+ mpPaneContainer->FindBorderWindow(rxBorderWindow));
+ if (pDescriptor.get() != NULL)
+ {
+ mxClipPolygon = NULL;
+
+ awt::Rectangle aParentBox = mxParentWindow->getPosSize();
+ awt::Rectangle aBorderBox (pDescriptor->mxBorderWindow->getPosSize());
+
+ if ( ! mbIsLayouting)
+ {
+ const double nWidth (aParentBox.Width);
+ const double nHeight (aParentBox.Height);
+ pDescriptor->mnLeft = double(aBorderBox.X) / nWidth;
+ pDescriptor->mnTop = double(aBorderBox.Y) / nHeight;
+ pDescriptor->mnRight = double(aBorderBox.X + aBorderBox.Width) / nWidth;
+ pDescriptor->mnBottom = double(aBorderBox.Y + aBorderBox.Height) / nHeight;
+ }
+ else
+ {
+ // This update of the window size was initiated by
+ // Layout(). Therefore the window size does not have to be
+ // updated.
+ }
+
+ // ToTop is called last because it may invalidate the iterator.
+ if ( ! mbIsLayouting)
+ mpPaneContainer->ToTop(pDescriptor);
+ }
+}
+
+
+
+
+void PresenterWindowManager::PaintBackground (const awt::Rectangle& rUpdateBox)
+{
+ (void)rUpdateBox;
+ if ( ! mxParentWindow.is())
+ return;
+
+ Reference<rendering::XGraphicDevice> xDevice (mxParentCanvas->getDevice());
+ if ( ! xDevice.is())
+ return;
+
+ // Create a polygon for the background and for clipping.
+ Reference<rendering::XPolyPolygon2D> xBackgroundPolygon (
+ PresenterGeometryHelper::CreatePolygon(mxParentWindow->getPosSize(), xDevice));
+ if ( ! mxClipPolygon.is())
+ mxClipPolygon = CreateClipPolyPolygon();
+
+ // Create View- and RenderState structs.
+ const rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ PresenterGeometryHelper::CreatePolygon(rUpdateBox, xDevice));
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ mxClipPolygon,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ // Paint the background.
+ if (mpBackgroundBitmap.get() != NULL)
+ {
+ ProvideBackgroundBitmap();
+
+ if (mxScaledBackgroundBitmap.is())
+ {
+ Sequence<rendering::Texture> aTextures (1);
+ const geometry::IntegerSize2D aBitmapSize(mxScaledBackgroundBitmap->getSize());
+ aTextures[0] = rendering::Texture (
+ geometry::AffineMatrix2D(
+ aBitmapSize.Width,0,0,
+ 0,aBitmapSize.Height,0),
+ 1,
+ 0,
+ mxScaledBackgroundBitmap,
+ NULL,
+ NULL,
+ rendering::StrokeAttributes(),
+ rendering::TexturingMode::REPEAT,
+ rendering::TexturingMode::REPEAT);
+
+ mxParentCanvas->fillTexturedPolyPolygon(
+ xBackgroundPolygon,
+ aViewState,
+ aRenderState,
+ aTextures);
+ }
+ else
+ {
+ const util::Color aBackgroundColor (mpBackgroundBitmap->maReplacementColor);
+ aRenderState.DeviceColor[0] = ((aBackgroundColor >> 16) & 0x0ff) / 255.0;
+ aRenderState.DeviceColor[1] = ((aBackgroundColor >> 8) & 0x0ff) / 255.0;
+ aRenderState.DeviceColor[2] = ((aBackgroundColor >> 0) & 0x0ff) / 255.0;
+ aRenderState.DeviceColor[3] = ((aBackgroundColor >> 24) & 0x0ff) / 255.0;
+ mxParentCanvas->fillPolyPolygon(
+ xBackgroundPolygon,
+ aViewState,
+ aRenderState);
+ }
+ }
+}
+
+
+
+
+void PresenterWindowManager::ProvideBackgroundBitmap (void)
+{
+ if ( ! mxScaledBackgroundBitmap.is())
+ {
+ Reference<rendering::XBitmap> xBitmap (mpBackgroundBitmap->GetNormalBitmap());
+ if (xBitmap.is())
+ {
+ const bool bStretchVertical (mpBackgroundBitmap->meVerticalTexturingMode
+ == PresenterBitmapDescriptor::Stretch);
+ const bool bStretchHorizontal (mpBackgroundBitmap->meHorizontalTexturingMode
+ == PresenterBitmapDescriptor::Stretch);
+ if (bStretchHorizontal || bStretchVertical)
+ {
+ geometry::RealSize2D aSize;
+ if (bStretchVertical)
+ aSize.Height = mxParentWindow->getPosSize().Height;
+ else
+ aSize.Height = xBitmap->getSize().Height;
+ if (bStretchHorizontal)
+ aSize.Width = mxParentWindow->getPosSize().Width;
+ else
+ aSize.Width = xBitmap->getSize().Width;
+ mxScaledBackgroundBitmap = xBitmap->getScaledBitmap(aSize, sal_False);
+ }
+ else
+ {
+ mxScaledBackgroundBitmap
+ = Reference<rendering::XBitmap>(xBitmap, UNO_QUERY);
+ }
+ }
+ }
+}
+
+
+
+
+Reference<rendering::XPolyPolygon2D> PresenterWindowManager::CreateClipPolyPolygon (void) const
+{
+ // Create a clip polygon that includes the whole update area but has the
+ // content windows as holes.
+ const sal_Int32 nPaneCount (mpPaneContainer->maPanes.size());
+ ::std::vector<awt::Rectangle> aRectangles;
+ aRectangles.reserve(1+nPaneCount);
+ aRectangles.push_back(mxParentWindow->getPosSize());
+ PresenterPaneContainer::PaneList::const_iterator iPane;
+ PresenterPaneContainer::PaneList::const_iterator iEnd (mpPaneContainer->maPanes.end());
+ for (iPane=mpPaneContainer->maPanes.begin(); iPane!=iEnd; ++iPane)
+ {
+ PresenterPaneContainer::SharedPaneDescriptor pDescriptor (*iPane);
+ if ( ! pDescriptor->mbIsActive)
+ continue;
+ if ( ! pDescriptor->mbIsOpaque)
+ continue;
+ if ( ! pDescriptor->mxBorderWindow.is() || ! pDescriptor->mxContentWindow.is())
+ continue;
+ Reference<awt::XWindow2> xWindow (pDescriptor->mxBorderWindow, UNO_QUERY);
+ if (xWindow.is() && ! xWindow->isVisible())
+ continue;
+
+ const awt::Rectangle aOuterBorderBox (pDescriptor->mxBorderWindow->getPosSize());
+ awt::Rectangle aInnerBorderBox (pDescriptor->mxContentWindow->getPosSize());
+ aInnerBorderBox.X += aOuterBorderBox.X;
+ aInnerBorderBox.Y += aOuterBorderBox.Y;
+ aRectangles.push_back(aInnerBorderBox);
+ }
+ Reference<rendering::XPolyPolygon2D> xPolyPolygon (
+ PresenterGeometryHelper::CreatePolygon(
+ aRectangles,
+ mxParentCanvas->getDevice()));
+ if (xPolyPolygon.is())
+ xPolyPolygon->setFillRule(rendering::FillRule_EVEN_ODD);
+ return xPolyPolygon;
+}
+
+
+
+
+void PresenterWindowManager::UpdateWindowList (void)
+{
+#ifdef ENABLE_PANE_RESIZING
+ try
+ {
+ OSL_ASSERT(mxComponentContext.is());
+
+ Reference<lang::XComponent> xComponent (mxPaneBorderManager, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->dispose();
+
+ Reference<lang::XMultiComponentFactory> xFactory (mxComponentContext->getServiceManager());
+ if (xFactory.is())
+ {
+ Sequence<Any> aArguments (1 + mpPaneContainer->maPanes.size()*2);
+ sal_Int32 nIndex (0);
+ aArguments[nIndex++] = Any(mxParentWindow);
+ for (sal_uInt32 nPaneIndex=0; nPaneIndex<mpPaneContainer->maPanes.size(); ++nPaneIndex)
+ {
+ if ( ! mpPaneContainer->maPanes[nPaneIndex]->mbIsActive)
+ continue;
+
+ const Reference<awt::XWindow> xBorderWindow (
+ mpPaneContainer->maPanes[nPaneIndex]->mxBorderWindow);
+ const Reference<awt::XWindow> xContentWindow (
+ mpPaneContainer->maPanes[nPaneIndex]->mxContentWindow);
+ const Reference<awt::XWindow2> xBorderWindow2(xBorderWindow, UNO_QUERY);
+ if (xBorderWindow.is()
+ && xContentWindow.is()
+ && ( ! xBorderWindow2.is() || xBorderWindow2->isVisible()))
+ {
+ aArguments[nIndex++] = Any(xBorderWindow);
+ aArguments[nIndex++] = Any(xContentWindow);
+ }
+ }
+
+ aArguments.realloc(nIndex);
+ rtl::Reference<PresenterPaneBorderManager> pManager (
+ new PresenterPaneBorderManager (
+ mxComponentContext,
+ mpPresenterController));
+ pManager->initialize(aArguments);
+ mxPaneBorderManager = Reference<XInterface>(static_cast<XWeak*>(pManager.get()));
+ }
+ }
+ catch (RuntimeException&)
+ {
+ }
+#endif
+}
+
+
+
+
+void PresenterWindowManager::Invalidate (void)
+{
+ mpPresenterController->GetPaintManager()->Invalidate(mxParentWindow);
+}
+
+
+
+
+Reference<awt::XWindow> PresenterWindowManager::GetParentWindow (void) const
+{
+ return mxParentWindow;
+}
+
+
+
+
+Reference<rendering::XCanvas> PresenterWindowManager::GetParentCanvas (void) const
+{
+ return mxParentCanvas;
+}
+
+
+
+
+void PresenterWindowManager::Update (void)
+{
+ mxClipPolygon = NULL;
+ mbIsLayoutPending = true;
+
+ UpdateWindowList();
+ Invalidate();
+}
+
+
+
+
+void PresenterWindowManager::ThrowIfDisposed (void) const
+ throw (::com::sun::star::lang::DisposedException)
+{
+ if (rBHelper.bDisposed || rBHelper.bInDispose)
+ {
+ throw lang::DisposedException (
+ OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "PresenterWindowManager has already been disposed")),
+ const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this)));
+ }
+}
+
+
+
+namespace {
+
+//===== ModeChangeAnimation ===================================================
+
+class ModeChangeAnimation : public PresenterAnimation
+{
+public:
+ ModeChangeAnimation (
+ const ::boost::shared_ptr<PresenterSprite>& rpSprite,
+ const Reference<rendering::XSpriteCanvas>& rxCanvas)
+ : PresenterAnimation (0, 1000, 20),
+ mpSprite(rpSprite),
+ mxCanvas(rxCanvas)
+ {
+ }
+
+ virtual void Run (const double nProgress, const sal_uInt64 nCurrentTime)
+ {
+ (void)nCurrentTime;
+ mpSprite->SetAlpha(1.0 - nProgress);
+ mxCanvas->updateScreen(sal_False);
+ }
+
+private:
+ ::boost::shared_ptr<PresenterSprite> mpSprite;
+ Reference<rendering::XSpriteCanvas> mxCanvas;
+};
+
+
+
+
+ModeChangeAnimationStarter::ModeChangeAnimationStarter (
+ const Reference<drawing::framework::XConfigurationController>& rxConfigurationController,
+ const Reference<awt::XWindow>& rxWindow,
+ const Reference<rendering::XSpriteCanvas>& rxCanvas,
+ const ::boost::shared_ptr<PresenterAnimator>& rpAnimator)
+ : ModeChangeAnimationStarterInterfaceBase(m_aMutex),
+ mxConfigurationController(rxConfigurationController),
+ mpAnimator(rpAnimator),
+ mpSprite(new PresenterSprite()),
+ mxCanvas(rxCanvas)
+{
+ OSL_ASSERT(rxWindow.is());
+ OSL_ASSERT(rxCanvas.is());
+
+ // Get the bitmap of the background.
+ Reference<rendering::XBitmap> xBackgroundBitmap (rxCanvas, UNO_QUERY);
+ if ( ! xBackgroundBitmap.is())
+ return;
+
+ // Create the sprite.
+ const awt::Rectangle aWindowSize (rxWindow->getPosSize());
+ mpSprite->SetFactory(rxCanvas);
+ mpSprite->Resize(geometry::RealSize2D(aWindowSize.Width, aWindowSize.Height));
+ mpSprite->SetPriority(10);
+
+ // Fill it with the background inside the bounding box.
+ const rendering::ViewState aViewState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+ const rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL,
+ Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+ Reference<rendering::XCanvas> xSpriteCanvas (mpSprite->GetCanvas());
+ if (xSpriteCanvas.is())
+ {
+ xSpriteCanvas->drawBitmap(xBackgroundBitmap, aViewState, aRenderState);
+ mpSprite->Show();
+ }
+
+ // Register as listener to be notified when the new panes are visible
+ // and the sprite can be faded out.
+ mxConfigurationController->addConfigurationChangeListener(
+ this,
+ A2S("ConfigurationUpdateEnd"),
+ Any());
+}
+
+
+
+
+ModeChangeAnimationStarter::~ModeChangeAnimationStarter (void)
+{
+}
+
+
+
+
+void SAL_CALL ModeChangeAnimationStarter::disposing (void)
+{
+ mxConfigurationController = NULL;
+ mpAnimator.reset();
+ mpSprite.reset();
+}
+
+
+
+
+// XConfigurationChangeListener
+
+void SAL_CALL ModeChangeAnimationStarter::notifyConfigurationChange (
+ const com::sun::star::drawing::framework::ConfigurationChangeEvent& rEvent)
+ throw (com::sun::star::uno::RuntimeException)
+{
+ (void)rEvent;
+
+ // Start the actual animation.
+ mpAnimator->AddAnimation(SharedPresenterAnimation(new ModeChangeAnimation(
+ mpSprite,
+ mxCanvas)));
+
+ mxConfigurationController->removeConfigurationChangeListener(this);
+}
+
+
+
+
+// XEventListener
+
+void SAL_CALL ModeChangeAnimationStarter::disposing (
+ const com::sun::star::lang::EventObject& rEvent)
+ throw (com::sun::star::uno::RuntimeException)
+{
+ if (rEvent.Source == mxConfigurationController)
+ mxConfigurationController = NULL;
+}
+
+
+
+} // end of anonymous namespace
+
+
+} } // end of namespace ::sdext::presenter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/PresenterWindowManager.hxx b/sdext/source/presenter/PresenterWindowManager.hxx
new file mode 100644
index 000000000000..997565bf0a8c
--- /dev/null
+++ b/sdext/source/presenter/PresenterWindowManager.hxx
@@ -0,0 +1,262 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef SDEXT_PRESENTER_PRESENTER_WINDOW_MANAGER_HXX
+#define SDEXT_PRESENTER_PRESENTER_WINDOW_MANAGER_HXX
+
+#include "PresenterPaneContainer.hxx"
+#include "PresenterTheme.hxx"
+#include <com/sun/star/awt/Point.hpp>
+#include <com/sun/star/awt/XFocusListener.hpp>
+#include <com/sun/star/awt/XGraphics.hpp>
+#include <com/sun/star/awt/XMouseMotionListener.hpp>
+#include <com/sun/star/awt/XPaintListener.hpp>
+#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/XWindowListener.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/document/XEventListener.hpp>
+#include <com/sun/star/drawing/framework/XPane.hpp>
+#include <com/sun/star/rendering/XBitmap.hpp>
+#include <com/sun/star/rendering/XSprite.hpp>
+#include <com/sun/star/rendering/XSpriteCanvas.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <cppuhelper/basemutex.hxx>
+#include <cppuhelper/compbase4.hxx>
+#include <tools/gen.hxx>
+#include <rtl/ref.hxx>
+#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace css = ::com::sun::star;
+
+namespace sdext { namespace presenter {
+
+class PresenterController;
+class PresenterPaneBorderPainter;
+class PresenterTheme;
+
+namespace {
+ typedef ::cppu::WeakComponentImplHelper4<
+ css::awt::XWindowListener,
+ css::awt::XPaintListener,
+ css::awt::XMouseListener,
+ css::awt::XFocusListener
+ > PresenterWindowManagerInterfaceBase;
+}
+
+
+/** A simple manager of the positions of the panes of the presenter screen.
+ Uses relative coordinates of the four sides of each pane. Allows panes
+ to be moved or resized with the mouse.
+*/
+class PresenterWindowManager
+ : private ::boost::noncopyable,
+ protected ::cppu::BaseMutex,
+ public PresenterWindowManagerInterfaceBase
+{
+public:
+ PresenterWindowManager (
+ const ::css::uno::Reference<css::uno::XComponentContext>& rxContext,
+ const ::rtl::Reference<PresenterPaneContainer>& rpPaneContainer,
+ const ::rtl::Reference<PresenterController>& rpPresenterController);
+ virtual ~PresenterWindowManager (void);
+
+ void SAL_CALL disposing (void);
+
+ void SetParentPane (const css::uno::Reference<css::drawing::framework::XPane>& rxPane);
+ void SetTheme (const ::boost::shared_ptr<PresenterTheme>& rpTheme);
+ void NotifyPaneCreation (const PresenterPaneContainer::SharedPaneDescriptor& rpDescriptor);
+ void NotifyViewCreation (const css::uno::Reference<css::drawing::framework::XView>& rxView);
+ void SetPanePosSizeRelative (
+ const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
+ const double nRelativeX,
+ const double nRelativeY,
+ const double nRelativeWidth,
+ const double nRelativeHeight);
+ void SetPanePosSizeAbsolute (
+ const ::rtl::OUString& rsPaneURL,
+ const double nX,
+ const double nY,
+ const double nWidth,
+ const double nHeight);
+ void SetPaneBorderPainter (const ::rtl::Reference<PresenterPaneBorderPainter>& rPainter);
+ css::uno::Reference<css::awt::XWindow> GetParentWindow (void) const;
+ css::uno::Reference<css::rendering::XCanvas> GetParentCanvas (void) const;
+ void Update (void);
+ void Layout (void);
+
+ void SetSlideSorterState (bool bIsActive);
+ void SetHelpViewState (bool bIsActive);
+
+ enum LayoutMode { LM_Standard, LM_Notes, LM_Generic };
+private:
+ void SetLayoutMode (const LayoutMode eMode);
+ LayoutMode GetLayoutMode (void) const;
+
+ bool IsSlideSorterActive (void) const;
+ bool IsHelpViewActive (void) const;
+public:
+ enum ViewMode { VM_Standard, VM_Notes, VM_SlideOverview, VM_Help };
+ /** The high-level method to switch the view mode. Use this instead of
+ SetLayoutMode and Set(Help|SlideSorter)State when possible.
+ */
+ void SetViewMode (const ViewMode eMode);
+
+ ViewMode GetViewMode (void) const;
+
+ /** Restore the layout mode (or slide sorter state) from the
+ configuration.
+ */
+ void RestoreViewMode (void);
+
+ void AddLayoutListener (
+ const css::uno::Reference<css::document::XEventListener>& rxListener);
+ void RemoveLayoutListener (
+ const css::uno::Reference<css::document::XEventListener>& rxListener);
+
+ // XWindowListener
+
+ virtual void SAL_CALL windowResized (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowMoved (const css::awt::WindowEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowShown (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL windowHidden (const css::lang::EventObject& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XPaintListener
+
+ virtual void SAL_CALL windowPaint (const css::awt::PaintEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XMouseListener
+
+ virtual void SAL_CALL mousePressed (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseReleased (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseEntered (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+ virtual void SAL_CALL mouseExited (const css::awt::MouseEvent& rEvent)
+ throw(css::uno::RuntimeException);
+
+
+ // XFocusListener
+
+ virtual void SAL_CALL focusGained (const css::awt::FocusEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+ virtual void SAL_CALL focusLost (const css::awt::FocusEvent& rEvent)
+ throw (css::uno::RuntimeException);
+
+
+ // XEventListener
+
+ virtual void SAL_CALL disposing (
+ const com::sun::star::lang::EventObject& rEvent)
+ throw (com::sun::star::uno::RuntimeException);
+
+private:
+ css::uno::Reference<css::uno::XComponentContext> mxComponentContext;
+ ::rtl::Reference<PresenterController> mpPresenterController;
+ css::uno::Reference<css::awt::XWindow> mxParentWindow;
+ css::uno::Reference<css::rendering::XCanvas> mxParentCanvas;
+ css::uno::Reference<css::uno::XInterface> mxPaneBorderManager;
+ ::rtl::Reference<PresenterPaneBorderPainter> mpPaneBorderPainter;
+ ::rtl::Reference<PresenterPaneContainer> mpPaneContainer;
+ bool mbIsLayoutPending;
+ /** This flag is set to <TRUE/> while the Layout() method is being
+ executed. Prevents windowMoved() and windowResized() from changing
+ the window sizes.
+ */
+ bool mbIsLayouting;
+ ::boost::shared_ptr<PresenterTheme> mpTheme;
+ SharedBitmapDescriptor mpBackgroundBitmap;
+ css::uno::Reference<css::rendering::XBitmap> mxScaledBackgroundBitmap;
+ css::util::Color maPaneBackgroundColor;
+ css::uno::Reference<css::rendering::XPolyPolygon2D> mxClipPolygon;
+ LayoutMode meLayoutMode;
+ bool mbIsSlideSorterActive;
+ bool mbIsHelpViewActive;
+ typedef ::std::vector<css::uno::Reference<css::document::XEventListener> >
+ LayoutListenerContainer;
+ LayoutListenerContainer maLayoutListeners;
+ bool mbIsMouseClickPending;
+
+ bool PaintChildren (const css::awt::PaintEvent& rEvent) const;
+ void UpdateWindowSize (const css::uno::Reference<css::awt::XWindow>& rxBorderWindow);
+ void PaintBackground (const css::awt::Rectangle& rUpdateBox);
+ void ProvideBackgroundBitmap (void);
+ css::uno::Reference<css::rendering::XPolyPolygon2D> CreateClipPolyPolygon (void) const;
+ void ToTop ();
+
+ void UpdateWindowList (void);
+ bool ChildNeedsRepaint (
+ const css::uno::Reference<css::drawing::framework::XPane>& rxPane) const;
+
+ void Invalidate (void);
+
+ void StoreViewMode (const ViewMode eViewMode);
+
+ void LayoutStandardMode (void);
+ void LayoutNotesMode (void);
+ void LayoutUnknownMode (void);
+ void LayoutSlideSorterMode (void);
+ void LayoutHelpMode (void);
+
+ /** Layout the tool bar and return its outer bounding box.
+ */
+ css::geometry::RealRectangle2D LayoutToolBar (void);
+
+ css::awt::Size CalculatePaneSize (
+ const double nOuterWidth,
+ const ::rtl::OUString& rsPaneURL);
+
+ /** Notify changes of the layout mode and of the slide sorter state.
+ */
+ void NotifyLayoutModeChange (void);
+
+ void NotifyDisposing (void);
+
+ void ThrowIfDisposed (void) const throw (::com::sun::star::lang::DisposedException);
+};
+
+} }
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sdext/source/presenter/bitmaps/Background.png b/sdext/source/presenter/bitmaps/Background.png
new file mode 100644
index 000000000000..7b32e4ab974b
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/Background.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderActiveBottom.png b/sdext/source/presenter/bitmaps/BorderActiveBottom.png
new file mode 100644
index 000000000000..8314c9efd092
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderActiveBottom.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderActiveBottomCallout.png b/sdext/source/presenter/bitmaps/BorderActiveBottomCallout.png
new file mode 100644
index 000000000000..b7c33223a33c
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderActiveBottomCallout.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderActiveBottomLeft.png b/sdext/source/presenter/bitmaps/BorderActiveBottomLeft.png
new file mode 100644
index 000000000000..8d573e864942
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderActiveBottomLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderActiveBottomRight.png b/sdext/source/presenter/bitmaps/BorderActiveBottomRight.png
new file mode 100644
index 000000000000..35ef8e9213db
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderActiveBottomRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderActiveLeft.png b/sdext/source/presenter/bitmaps/BorderActiveLeft.png
new file mode 100644
index 000000000000..57d4a3dbbcd3
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderActiveLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderActiveRight.png b/sdext/source/presenter/bitmaps/BorderActiveRight.png
new file mode 100644
index 000000000000..9a9857190b9d
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderActiveRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderActiveTop.png b/sdext/source/presenter/bitmaps/BorderActiveTop.png
new file mode 100644
index 000000000000..e0bea9d55448
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderActiveTop.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderActiveTopLeft.png b/sdext/source/presenter/bitmaps/BorderActiveTopLeft.png
new file mode 100644
index 000000000000..62d63271fe21
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderActiveTopLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderActiveTopRight.png b/sdext/source/presenter/bitmaps/BorderActiveTopRight.png
new file mode 100644
index 000000000000..450c8e0cc5e7
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderActiveTopRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderBottom.png b/sdext/source/presenter/bitmaps/BorderBottom.png
new file mode 100644
index 000000000000..7ad2fd6c2a03
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderBottom.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderBottomLeft.png b/sdext/source/presenter/bitmaps/BorderBottomLeft.png
new file mode 100644
index 000000000000..019de149b3af
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderBottomLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderBottomRight.png b/sdext/source/presenter/bitmaps/BorderBottomRight.png
new file mode 100644
index 000000000000..82de5791c1cd
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderBottomRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderCurrentSlideBottom.png b/sdext/source/presenter/bitmaps/BorderCurrentSlideBottom.png
new file mode 100644
index 000000000000..7000bc22f6c4
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderCurrentSlideBottom.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderCurrentSlideBottomLeft.png b/sdext/source/presenter/bitmaps/BorderCurrentSlideBottomLeft.png
new file mode 100644
index 000000000000..7571c8d94b1f
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderCurrentSlideBottomLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderCurrentSlideBottomRight.png b/sdext/source/presenter/bitmaps/BorderCurrentSlideBottomRight.png
new file mode 100644
index 000000000000..c0af63ff58b8
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderCurrentSlideBottomRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderCurrentSlideLeft.png b/sdext/source/presenter/bitmaps/BorderCurrentSlideLeft.png
new file mode 100644
index 000000000000..7000bc22f6c4
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderCurrentSlideLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderCurrentSlideRight.png b/sdext/source/presenter/bitmaps/BorderCurrentSlideRight.png
new file mode 100644
index 000000000000..7000bc22f6c4
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderCurrentSlideRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderCurrentSlideTop.png b/sdext/source/presenter/bitmaps/BorderCurrentSlideTop.png
new file mode 100644
index 000000000000..7000bc22f6c4
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderCurrentSlideTop.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderCurrentSlideTopLeft.png b/sdext/source/presenter/bitmaps/BorderCurrentSlideTopLeft.png
new file mode 100644
index 000000000000..fdfabd42ae9f
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderCurrentSlideTopLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderCurrentSlideTopRight.png b/sdext/source/presenter/bitmaps/BorderCurrentSlideTopRight.png
new file mode 100644
index 000000000000..5b4b642e9f34
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderCurrentSlideTopRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderLeft.png b/sdext/source/presenter/bitmaps/BorderLeft.png
new file mode 100644
index 000000000000..cbdb267b8789
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderRight.png b/sdext/source/presenter/bitmaps/BorderRight.png
new file mode 100644
index 000000000000..333073328ddd
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderToolbarBottom.png b/sdext/source/presenter/bitmaps/BorderToolbarBottom.png
new file mode 100644
index 000000000000..23a3bc3595aa
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderToolbarBottom.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderToolbarLeft.png b/sdext/source/presenter/bitmaps/BorderToolbarLeft.png
new file mode 100644
index 000000000000..839ab5091a8e
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderToolbarLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderToolbarRight.png b/sdext/source/presenter/bitmaps/BorderToolbarRight.png
new file mode 100644
index 000000000000..e5c4b9d25a16
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderToolbarRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderToolbarTop.png b/sdext/source/presenter/bitmaps/BorderToolbarTop.png
new file mode 100644
index 000000000000..c45b97c434cd
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderToolbarTop.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderToolbarTopLeft.png b/sdext/source/presenter/bitmaps/BorderToolbarTopLeft.png
new file mode 100644
index 000000000000..978e98a9bbc4
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderToolbarTopLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderToolbarTopRight.png b/sdext/source/presenter/bitmaps/BorderToolbarTopRight.png
new file mode 100644
index 000000000000..7dc3d98860ea
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderToolbarTopRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderTop.png b/sdext/source/presenter/bitmaps/BorderTop.png
new file mode 100644
index 000000000000..dee68e828147
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderTop.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderTopLeft.png b/sdext/source/presenter/bitmaps/BorderTopLeft.png
new file mode 100644
index 000000000000..bbec4e42be42
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderTopLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/BorderTopRight.png b/sdext/source/presenter/bitmaps/BorderTopRight.png
new file mode 100644
index 000000000000..3416b16c9e91
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/BorderTopRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonEffectNextDisabled.png b/sdext/source/presenter/bitmaps/ButtonEffectNextDisabled.png
new file mode 100644
index 000000000000..5417cf72c928
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonEffectNextDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonEffectNextMouseOver.png b/sdext/source/presenter/bitmaps/ButtonEffectNextMouseOver.png
new file mode 100644
index 000000000000..96805e392176
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonEffectNextMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonEffectNextNormal.png b/sdext/source/presenter/bitmaps/ButtonEffectNextNormal.png
new file mode 100644
index 000000000000..6dbd732e0977
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonEffectNextNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonEffectNextSelected.png b/sdext/source/presenter/bitmaps/ButtonEffectNextSelected.png
new file mode 100644
index 000000000000..eb6e6d45bb23
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonEffectNextSelected.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonFrameCenterMouseOver.png b/sdext/source/presenter/bitmaps/ButtonFrameCenterMouseOver.png
new file mode 100644
index 000000000000..b97799f1f314
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonFrameCenterMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonFrameCenterNormal.png b/sdext/source/presenter/bitmaps/ButtonFrameCenterNormal.png
new file mode 100644
index 000000000000..4cf7218f3b52
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonFrameCenterNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonFrameLeftMouseOver.png b/sdext/source/presenter/bitmaps/ButtonFrameLeftMouseOver.png
new file mode 100644
index 000000000000..1f2ab6a00cab
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonFrameLeftMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonFrameLeftNormal.png b/sdext/source/presenter/bitmaps/ButtonFrameLeftNormal.png
new file mode 100644
index 000000000000..0e92cb37d7d8
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonFrameLeftNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonFrameRightMouseOver.png b/sdext/source/presenter/bitmaps/ButtonFrameRightMouseOver.png
new file mode 100644
index 000000000000..0f49ad4f7e61
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonFrameRightMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonFrameRightNormal.png b/sdext/source/presenter/bitmaps/ButtonFrameRightNormal.png
new file mode 100644
index 000000000000..4ca69670e513
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonFrameRightNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonHelpDisabled.png b/sdext/source/presenter/bitmaps/ButtonHelpDisabled.png
new file mode 100644
index 000000000000..12f4903b6cf8
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonHelpDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonHelpMouseOver.png b/sdext/source/presenter/bitmaps/ButtonHelpMouseOver.png
new file mode 100644
index 000000000000..7bddef561f11
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonHelpMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonHelpNormal.png b/sdext/source/presenter/bitmaps/ButtonHelpNormal.png
new file mode 100644
index 000000000000..99c693215ba9
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonHelpNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonHelpSelected.png b/sdext/source/presenter/bitmaps/ButtonHelpSelected.png
new file mode 100644
index 000000000000..f162db27650e
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonHelpSelected.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonMinusDisabled.png b/sdext/source/presenter/bitmaps/ButtonMinusDisabled.png
new file mode 100644
index 000000000000..ff61106eb7ec
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonMinusDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonMinusMouseOver.png b/sdext/source/presenter/bitmaps/ButtonMinusMouseOver.png
new file mode 100644
index 000000000000..787249912b9c
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonMinusMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonMinusNormal.png b/sdext/source/presenter/bitmaps/ButtonMinusNormal.png
new file mode 100644
index 000000000000..e2d993384fef
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonMinusNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonMinusSelected.png b/sdext/source/presenter/bitmaps/ButtonMinusSelected.png
new file mode 100644
index 000000000000..5d15de3b916f
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonMinusSelected.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonNotesDisabled.png b/sdext/source/presenter/bitmaps/ButtonNotesDisabled.png
new file mode 100644
index 000000000000..09e31d26c649
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonNotesDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonNotesMouseOver.png b/sdext/source/presenter/bitmaps/ButtonNotesMouseOver.png
new file mode 100644
index 000000000000..099d6bf0f2b1
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonNotesMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonNotesNormal.png b/sdext/source/presenter/bitmaps/ButtonNotesNormal.png
new file mode 100644
index 000000000000..551392622506
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonNotesNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonNotesSelected.png b/sdext/source/presenter/bitmaps/ButtonNotesSelected.png
new file mode 100644
index 000000000000..f5494fb1c678
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonNotesSelected.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonPlusDisabled.png b/sdext/source/presenter/bitmaps/ButtonPlusDisabled.png
new file mode 100644
index 000000000000..e6ba3f3e78a7
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonPlusDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonPlusMouseOver.png b/sdext/source/presenter/bitmaps/ButtonPlusMouseOver.png
new file mode 100644
index 000000000000..9d21dc40a6eb
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonPlusMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonPlusNormal.png b/sdext/source/presenter/bitmaps/ButtonPlusNormal.png
new file mode 100644
index 000000000000..2e075c2a3a87
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonPlusNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonPlusSelected.png b/sdext/source/presenter/bitmaps/ButtonPlusSelected.png
new file mode 100644
index 000000000000..b9d6fe1ed929
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonPlusSelected.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlideNextDisabled.png b/sdext/source/presenter/bitmaps/ButtonSlideNextDisabled.png
new file mode 100644
index 000000000000..7f3bce058f4c
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlideNextDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlideNextMouseOver.png b/sdext/source/presenter/bitmaps/ButtonSlideNextMouseOver.png
new file mode 100644
index 000000000000..4dc13655965b
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlideNextMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlideNextNormal.png b/sdext/source/presenter/bitmaps/ButtonSlideNextNormal.png
new file mode 100644
index 000000000000..711b8ca8caf6
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlideNextNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlidePreviousDisabled.png b/sdext/source/presenter/bitmaps/ButtonSlidePreviousDisabled.png
new file mode 100644
index 000000000000..383780eab2cf
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlidePreviousDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlidePreviousMouseOver.png b/sdext/source/presenter/bitmaps/ButtonSlidePreviousMouseOver.png
new file mode 100644
index 000000000000..dc35c62deaf2
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlidePreviousMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlidePreviousNormal.png b/sdext/source/presenter/bitmaps/ButtonSlidePreviousNormal.png
new file mode 100644
index 000000000000..26262b4568d7
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlidePreviousNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlidePreviousSelected.png b/sdext/source/presenter/bitmaps/ButtonSlidePreviousSelected.png
new file mode 100644
index 000000000000..7274263a43f5
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlidePreviousSelected.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlideSorterDisabled.png b/sdext/source/presenter/bitmaps/ButtonSlideSorterDisabled.png
new file mode 100644
index 000000000000..ce7d4ad51514
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlideSorterDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlideSorterMouseOver.png b/sdext/source/presenter/bitmaps/ButtonSlideSorterMouseOver.png
new file mode 100644
index 000000000000..2e7f518ac9e3
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlideSorterMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlideSorterNormal.png b/sdext/source/presenter/bitmaps/ButtonSlideSorterNormal.png
new file mode 100644
index 000000000000..7aa914f41c01
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlideSorterNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ButtonSlideSorterSelected.png b/sdext/source/presenter/bitmaps/ButtonSlideSorterSelected.png
new file mode 100644
index 000000000000..143f995a004c
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ButtonSlideSorterSelected.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/LabelMouseOverCenter.png b/sdext/source/presenter/bitmaps/LabelMouseOverCenter.png
new file mode 100644
index 000000000000..6eb75d386f46
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/LabelMouseOverCenter.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/LabelMouseOverLeft.png b/sdext/source/presenter/bitmaps/LabelMouseOverLeft.png
new file mode 100644
index 000000000000..9455246332cf
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/LabelMouseOverLeft.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/LabelMouseOverRight.png b/sdext/source/presenter/bitmaps/LabelMouseOverRight.png
new file mode 100644
index 000000000000..1f972d0cebea
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/LabelMouseOverRight.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarArrowDownDisabled.png b/sdext/source/presenter/bitmaps/ScrollbarArrowDownDisabled.png
new file mode 100644
index 000000000000..4dd16272fad7
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarArrowDownDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarArrowDownMouseOver.png b/sdext/source/presenter/bitmaps/ScrollbarArrowDownMouseOver.png
new file mode 100644
index 000000000000..d1980a2a1a05
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarArrowDownMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarArrowDownNormal.png b/sdext/source/presenter/bitmaps/ScrollbarArrowDownNormal.png
new file mode 100644
index 000000000000..166f10057c11
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarArrowDownNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarArrowDownSelected.png b/sdext/source/presenter/bitmaps/ScrollbarArrowDownSelected.png
new file mode 100644
index 000000000000..21d42945ce98
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarArrowDownSelected.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarArrowUpDisabled.png b/sdext/source/presenter/bitmaps/ScrollbarArrowUpDisabled.png
new file mode 100644
index 000000000000..44f60683bc59
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarArrowUpDisabled.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarArrowUpMouseOver.png b/sdext/source/presenter/bitmaps/ScrollbarArrowUpMouseOver.png
new file mode 100644
index 000000000000..9795885632dc
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarArrowUpMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarArrowUpNormal.png b/sdext/source/presenter/bitmaps/ScrollbarArrowUpNormal.png
new file mode 100644
index 000000000000..804ced846065
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarArrowUpNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarArrowUpSelected.png b/sdext/source/presenter/bitmaps/ScrollbarArrowUpSelected.png
new file mode 100644
index 000000000000..d7be4f324f86
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarArrowUpSelected.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarPagerMiddleMouseOver.png b/sdext/source/presenter/bitmaps/ScrollbarPagerMiddleMouseOver.png
new file mode 100644
index 000000000000..84b781af9fb8
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarPagerMiddleMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarPagerMiddleNormal.png b/sdext/source/presenter/bitmaps/ScrollbarPagerMiddleNormal.png
new file mode 100644
index 000000000000..a06ba667f118
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarPagerMiddleNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarThumbBottomMouseOver.png b/sdext/source/presenter/bitmaps/ScrollbarThumbBottomMouseOver.png
new file mode 100644
index 000000000000..482f13638755
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarThumbBottomMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarThumbBottomNormal.png b/sdext/source/presenter/bitmaps/ScrollbarThumbBottomNormal.png
new file mode 100644
index 000000000000..ec46e172c134
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarThumbBottomNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarThumbMiddleMouseOver.png b/sdext/source/presenter/bitmaps/ScrollbarThumbMiddleMouseOver.png
new file mode 100644
index 000000000000..62066c24b687
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarThumbMiddleMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarThumbMiddleNormal.png b/sdext/source/presenter/bitmaps/ScrollbarThumbMiddleNormal.png
new file mode 100644
index 000000000000..c25e4edcf595
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarThumbMiddleNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarThumbTopMouseOver.png b/sdext/source/presenter/bitmaps/ScrollbarThumbTopMouseOver.png
new file mode 100644
index 000000000000..714481df996d
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarThumbTopMouseOver.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ScrollbarThumbTopNormal.png b/sdext/source/presenter/bitmaps/ScrollbarThumbTopNormal.png
new file mode 100644
index 000000000000..7e0922c74966
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ScrollbarThumbTopNormal.png
Binary files differ
diff --git a/sdext/source/presenter/bitmaps/ViewBackground.png b/sdext/source/presenter/bitmaps/ViewBackground.png
new file mode 100644
index 000000000000..ca52d8262a88
--- /dev/null
+++ b/sdext/source/presenter/bitmaps/ViewBackground.png
Binary files differ
diff --git a/sdext/source/presenter/delzip b/sdext/source/presenter/delzip
new file mode 100644
index 000000000000..636fda90bfcb
--- /dev/null
+++ b/sdext/source/presenter/delzip
@@ -0,0 +1 @@
+ECHO is OFF
diff --git a/sdext/source/presenter/description.xml b/sdext/source/presenter/description.xml
new file mode 100644
index 000000000000..85393f76e9ff
--- /dev/null
+++ b/sdext/source/presenter/description.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description
+
+ xmlns="http://openoffice.org/extensions/description/2006"
+ xmlns:dep="http://openoffice.org/extensions/description/2006"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+
+ <identifier value="com.sun.PresenterScreen-UPDATED_PLATFORM" />
+
+ <dependencies>
+ <OpenOffice.org-minimal-version value="3.3" dep:name="OpenOffice.org 3.3"/>
+ </dependencies>
+
+ <version value="1.1.0" />
+
+ <platform value="UPDATED_PLATFORM" />
+
+ <publisher>
+ <name xlink:href="http://www.oracle.com/us/products/applications/open-office" lang="en">Oracle</name>
+ </publisher>
+
+ <display-name>
+ <name lang="en">Presenter Console</name>
+ </display-name>
+
+ <icon>
+ <default xlink:href="bitmaps/extension_32.png" />
+ </icon>
+
+</description>
diff --git a/sdext/source/presenter/help/component.txt b/sdext/source/presenter/help/component.txt
new file mode 100755
index 000000000000..26a10c622fe9
--- /dev/null
+++ b/sdext/source/presenter/help/component.txt
@@ -0,0 +1,2 @@
+The Presenter Console Extension provides more control over your slide show presentation, such as the ability to see the upcoming slide, the slide notes, and a presentation timer whereas the audience see only the current slide.
+To avoid confusions by displaying a large number of presentation elements, the Presenter Console displays the elements on three different easily changeable views.
diff --git a/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/makefile.mk b/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/makefile.mk
new file mode 100644
index 000000000000..95678f13aa11
--- /dev/null
+++ b/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/makefile.mk
@@ -0,0 +1,51 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=../../../../..
+PRJNAME=sdext
+TARGET=PresenterScreenHelp
+EXTNAME=PresenterScreen
+
+PACKAGE = com.sun.PresenterScreen
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(ENABLE_PRESENTER_SCREEN)" == "NO"
+do_nothing:
+ @echo "Presenter Screen build disabled."
+.ELSE
+
+XHPFILES= \
+ presenter.xhp
+
+
+.INCLUDE : target.mk
+.INCLUDE : tg_help.mk
+
+.ENDIF
diff --git a/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp b/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp
new file mode 100644
index 000000000000..ba8f29bb497f
--- /dev/null
+++ b/sdext/source/presenter/help/en-US/com.sun.PresenterScreen/presenter.xhp
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<helpdocument version="1.0">
+
+<!--
+***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************
+ -->
+
+
+<meta>
+ <topic id="textpresenterxml" indexer="include" status="PUBLISH">
+ <title xml-lang="en-US" id="tit" l10n="NEW">@PRESENTEREXTENSIONPRODUCTNAME@ Keyboard Shortcuts</title>
+ <filename>/com.sun.PresenterScreen-PLATFORMID/presenter.xhp</filename>
+ </topic>
+ </meta>
+ <body>
+<bookmark xml-lang="en-US" branch="hid/com.sun.PresenterScreen" id="bm_id3138439" localize="false"/>
+<bookmark xml-lang="en-US" branch="index" id="bm_id0921200912285678"><bookmark_value>@PRESENTEREXTENSIONPRODUCTNAME@ shortcuts</bookmark_value>
+</bookmark>
+<paragraph xml-lang="en-US" id="hd_id0921201912165661" role="heading" level="1" l10n="NEW">@PRESENTEREXTENSIONPRODUCTNAME@ Keyboard Shortcuts</paragraph>
+ <paragraph xml-lang="en-US" id="par_id0921201912165656" role="paragraph" l10n="NEW">When running a slide show using the @PRESENTEREXTENSIONPRODUCTNAME@, you can use the following keys:</paragraph>
+ <table id="tbl_id0921200901051232">
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104028" role="tablehead" l10n="NEW">Action</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104093" role="tablehead" l10n="NEW">Key or Keys</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id092120090110418" role="tablecontent" l10n="NEW">Next slide, or next effect</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104120" role="tablecontent" l10n="NEW">Left click, right arrow, down arrow, spacebar, page down, enter, return, 'N'</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104165" role="tablecontent" l10n="NEW">Previous slide, or previous effect</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104115" role="tablecontent" l10n="NEW">Right click, left arrow, up arrow, page up, backspace, 'P'</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104164" role="tablecontent" l10n="NEW">First slide</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104148" role="tablecontent" l10n="NEW">Home</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104221" role="tablecontent" l10n="NEW">Last slide</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104277" role="tablecontent" l10n="NEW">End</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104279" role="tablecontent" l10n="NEW">Previous slide without effects</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id092120090110423" role="tablecontent" l10n="NEW">Alt+Page Up</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id092120090110427" role="tablecontent" l10n="NEW">Next slide without effects</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104261" role="tablecontent" l10n="NEW">Alt+Page Down</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104383" role="tablecontent" l10n="NEW">Black/Unblack the screen</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id092120090110431" role="tablecontent" l10n="NEW">'B', '.'</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104311" role="tablecontent" l10n="NEW">White/Unwhite the screen</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104359" role="tablecontent" l10n="NEW">'W', ','</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104336" role="tablecontent" l10n="NEW">End slide show</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104419" role="tablecontent" l10n="NEW">Esc, '-'</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104460" role="tablecontent" l10n="NEW">Go to slide number</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id092120090110440" role="tablecontent" l10n="NEW">Number followed by Enter</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104427" role="tablecontent" l10n="NEW">Grow/Shrink size of notes font</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104442" role="tablecontent" l10n="NEW">'G', 'S'</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104473" role="tablecontent" l10n="NEW">Scroll notes up/down</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id092120090110459" role="tablecontent" l10n="NEW">'A', 'Z'</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id092120090110456" role="tablecontent" l10n="NEW">Move caret in notes view backward/forward</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id092120090110457" role="tablecontent" l10n="NEW">'H', 'L'</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104566" role="tablecontent" l10n="NEW">Show the @PRESENTEREXTENSIONPRODUCTNAME@</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104544" role="tablecontent" l10n="NEW">Ctrl-'1'</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104535" role="tablecontent" l10n="NEW">Show the Presentation Notes</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104680" role="tablecontent" l10n="NEW">Ctrl-'2'</paragraph>
+ </tablecell>
+ </tablerow>
+ <tablerow>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104634" role="tablecontent" l10n="NEW">Show the Slides Overview</paragraph>
+ </tablecell>
+ <tablecell>
+ <paragraph xml-lang="en-US" id="par_id0921200901104632" role="tablecontent" l10n="NEW">Ctrl-'3'</paragraph>
+ </tablecell>
+ </tablerow>
+ </table>
+
+ </body>
+</helpdocument>
diff --git a/sdext/source/presenter/makefile.mk b/sdext/source/presenter/makefile.mk
new file mode 100644
index 000000000000..1a3c052f8095
--- /dev/null
+++ b/sdext/source/presenter/makefile.mk
@@ -0,0 +1,385 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=sdext
+TARGET=PresenterScreen
+GEN_HID=FALSE
+EXTNAME=PresenterScreen
+
+ENABLE_EXCEPTIONS=TRUE
+# survive zip dependencies
+MAXLINELENGTH:=100000
+
+# --- Settings ----------------------------------
+
+.INCLUDE : rtlbootstrap.mk
+.INCLUDE : settings.mk
+
+PACKAGE=com.sun.PresenterScreen-$(PLATFORMID)
+
+.IF "$(ENABLE_PRESENTER_SCREEN)" == "NO"
+@all:
+ @echo "Presenter Screen build disabled."
+.ELSE
+
+.IF "$(L10N_framework)"==""
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+DLLPRE=
+common_build_zip=
+
+# --- Files -------------------------------------
+
+SLOFILES= \
+ $(SLO)$/PresenterAccessibility.obj \
+ $(SLO)$/PresenterAnimation.obj \
+ $(SLO)$/PresenterAnimator.obj \
+ $(SLO)$/PresenterBitmapContainer.obj \
+ $(SLO)$/PresenterButton.obj \
+ $(SLO)$/PresenterCanvasHelper.obj \
+ $(SLO)$/PresenterConfigurationAccess.obj \
+ $(SLO)$/PresenterController.obj \
+ $(SLO)$/PresenterCurrentSlideObserver.obj \
+ $(SLO)$/PresenterFrameworkObserver.obj \
+ $(SLO)$/PresenterGeometryHelper.obj \
+ $(SLO)$/PresenterHelper.obj \
+ $(SLO)$/PresenterHelpView.obj \
+ $(SLO)$/PresenterNotesView.obj \
+ $(SLO)$/PresenterPaintManager.obj \
+ $(SLO)$/PresenterPane.obj \
+ $(SLO)$/PresenterPaneAnimator.obj \
+ $(SLO)$/PresenterPaneBase.obj \
+ $(SLO)$/PresenterPaneBorderManager.obj \
+ $(SLO)$/PresenterPaneBorderPainter.obj \
+ $(SLO)$/PresenterPaneContainer.obj \
+ $(SLO)$/PresenterPaneFactory.obj \
+ $(SLO)$/PresenterProtocolHandler.obj \
+ $(SLO)$/PresenterScreen.obj \
+ $(SLO)$/PresenterScrollBar.obj \
+ $(SLO)$/PresenterSlidePreview.obj \
+ $(SLO)$/PresenterSlideShowView.obj \
+ $(SLO)$/PresenterSlideSorter.obj \
+ $(SLO)$/PresenterSprite.obj \
+ $(SLO)$/PresenterSpritePane.obj \
+ $(SLO)$/PresenterTextView.obj \
+ $(SLO)$/PresenterTheme.obj \
+ $(SLO)$/PresenterTimer.obj \
+ $(SLO)$/PresenterToolBar.obj \
+ $(SLO)$/PresenterUIPainter.obj \
+ $(SLO)$/PresenterViewFactory.obj \
+ $(SLO)$/PresenterWindowManager.obj \
+ $(SLO)$/PresenterComponent.obj
+
+
+# --- Library -----------------------------------
+
+SHL1TARGET= $(TARGET).uno
+
+SHL1STDLIBS= $(CPPUHELPERLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+
+SHL1DEPN=
+SHL1IMPLIB= i$(SHL1TARGET)
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+SHL1VERSIONMAP=$(SOLARENV)/src/reg-component.map
+SHL1RPATH= OXT
+DEF1NAME= $(SHL1TARGET)
+
+ZIP2TARGET= presenter-screen_develop
+ZIP2DIR= $(COMMONMISC)
+ZIP2EXT= .zip
+ZIP2FLAGS=-r
+ZIP2LIST= */com.sun.PresenterScreen/*.xhp
+
+ZIP1TARGET= presenter-screen
+ZIP1DIR= $(MISC)$/$(TARGET)
+ZIP1EXT= .oxt
+ZIP1FLAGS=-r
+ZIP1LIST= *
+
+DESCRIPTION:=$(ZIP1DIR)$/description.xml
+
+.IF "$(WITH_LANG)"==""
+FIND_XCU=registry/data
+.ELSE # "$(WITH_LANG)"==""
+FIND_XCU=$(MISC)$/$(EXTNAME)_in$/merge
+.ENDIF # "$(WITH_LANG)"==""
+
+COMPONENT_FILES= \
+ $(ZIP1DIR)$/registry$/data$/org$/openoffice$/Office$/Jobs.xcu \
+ $(ZIP1DIR)$/registry$/data$/org$/openoffice$/Office$/ProtocolHandler.xcu \
+ $(ZIP1DIR)$/registry$/schema/org$/openoffice$/Office$/extension$/PresenterScreen.xcs \
+ $(ZIP1DIR)$/registry$/data/$/org$/openoffice$/Office$/extension$/PresenterScreen.xcu
+
+COMPONENT_BITMAPS= \
+ $(ZIP1DIR)$/bitmaps$/BorderTop.png \
+ $(ZIP1DIR)$/bitmaps$/BorderTopLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderTopRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderBottomLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderBottomRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderBottom.png \
+ \
+ $(ZIP1DIR)$/bitmaps$/BorderActiveTop.png \
+ $(ZIP1DIR)$/bitmaps$/BorderActiveTopLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderActiveTopRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderActiveLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderActiveRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderActiveBottomLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderActiveBottomRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderActiveBottom.png \
+ $(ZIP1DIR)$/bitmaps$/BorderActiveBottomCallout.png \
+ \
+ $(ZIP1DIR)$/bitmaps$/BorderCurrentSlideTop.png \
+ $(ZIP1DIR)$/bitmaps$/BorderCurrentSlideTopLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderCurrentSlideTopRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderCurrentSlideLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderCurrentSlideRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderCurrentSlideBottomLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderCurrentSlideBottomRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderCurrentSlideBottom.png \
+ \
+ $(ZIP1DIR)$/bitmaps$/BorderToolbarTop.png \
+ $(ZIP1DIR)$/bitmaps$/BorderToolbarTopLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderToolbarTopRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderToolbarLeft.png \
+ $(ZIP1DIR)$/bitmaps$/BorderToolbarRight.png \
+ $(ZIP1DIR)$/bitmaps$/BorderToolbarBottom.png \
+ \
+ $(ZIP1DIR)$/bitmaps$/Background.png \
+ $(ZIP1DIR)$/bitmaps$/ViewBackground.png \
+ \
+ $(ZIP1DIR)$/bitmaps$/ButtonSlidePreviousNormal.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonSlidePreviousMouseOver.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonSlidePreviousSelected.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonSlidePreviousDisabled.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonEffectNextNormal.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonEffectNextMouseOver.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonEffectNextSelected.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonEffectNextDisabled.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonNotesNormal.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonNotesMouseOver.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonNotesSelected.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonNotesDisabled.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonSlideSorterNormal.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonSlideSorterMouseOver.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonSlideSorterSelected.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonSlideSorterDisabled.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonHelpNormal.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonHelpMouseOver.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonHelpSelected.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonHelpDisabled.png \
+ \
+ $(ZIP1DIR)$/bitmaps/ScrollbarArrowUpNormal.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarArrowUpMouseOver.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarArrowUpSelected.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarArrowUpDisabled.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarArrowDownNormal.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarArrowDownMouseOver.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarArrowDownSelected.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarArrowDownDisabled.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarPagerMiddleNormal.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarPagerMiddleMouseOver.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarThumbTopNormal.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarThumbTopMouseOver.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarThumbBottomNormal.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarThumbBottomMouseOver.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarThumbMiddleNormal.png \
+ $(ZIP1DIR)$/bitmaps/ScrollbarThumbMiddleMouseOver.png \
+ \
+ $(ZIP1DIR)$/bitmaps$/ButtonPlusNormal.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonPlusMouseOver.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonPlusSelected.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonPlusDisabled.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonMinusNormal.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonMinusMouseOver.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonMinusSelected.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonMinusDisabled.png \
+ \
+ $(ZIP1DIR)$/bitmaps$/ButtonFrameLeftNormal.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonFrameCenterNormal.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonFrameRightNormal.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonFrameLeftMouseOver.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonFrameCenterMouseOver.png \
+ $(ZIP1DIR)$/bitmaps$/ButtonFrameRightMouseOver.png \
+ \
+ $(ZIP1DIR)$/bitmaps$/LabelMouseOverLeft.png \
+ $(ZIP1DIR)$/bitmaps$/LabelMouseOverCenter.png \
+ $(ZIP1DIR)$/bitmaps$/LabelMouseOverRight.png
+
+COMPONENT_IMAGES=\
+ $(ZIP1DIR)$/bitmaps$/extension_32.png
+
+COMPONENT_MANIFEST= \
+ $(ZIP1DIR)$/META-INF$/manifest.xml
+
+COMPONENT_LIBRARY= \
+ $(ZIP1DIR)$/$(TARGET).uno$(DLLPOST)
+
+PLATFORMID:=$(RTL_OS:l)_$(RTL_ARCH:l)
+
+COMPONENT_HELP= \
+ $(ZIP1DIR)$/help/component.txt \
+ $(foreach,l,$(alllangiso) $(ZIP1DIR)$/help$/$l$/com.sun.PresenterScreen-$(PLATFORMID)$/presenter.xhp)
+
+ZIP1DEPS= \
+ $(DESCRIPTION) \
+ $(COMPONENT_MANIFEST) \
+ $(COMPONENT_FILES) \
+ $(COMPONENT_BITMAPS) \
+ $(COMPONENT_IMAGES) \
+ $(COMPONENT_LIBRARY) \
+ $(COMPONENT_HELP)
+
+LINKNAME:=help
+XHPLINKSRC:=$(ZIP1DIR)/help
+
+my_XHPFILES= \
+ presenter.xhp
+
+LINKLINKFILES= \
+ $(PACKAGE)/{$(my_XHPFILES)}
+
+# --- Targets ----------------------------------
+.ENDIF # L10N_framework
+
+.INCLUDE : target.mk
+.INCLUDE : extension_helplink.mk
+
+.IF "$(L10N_framework)"==""
+$(SLO)$/PresenterComponent.obj : $(INCCOM)$/PresenterExtensionIdentifier.hxx
+
+$(INCCOM)$/PresenterExtensionIdentifier.hxx : PresenterExtensionIdentifier.txx
+ $(TYPE) $< | sed s/UPDATED_PLATFORM/$(PLATFORMID)/ > $@
+
+$(COMPONENT_MANIFEST) : $$(@:f)
+ @-$(MKDIRHIER) $(@:d)
+ +$(TYPE) $< | $(SED) "s/SHARED_EXTENSION/$(DLLPOST)/" > $@
+
+$(ZIP1DIR)$/help$/component.txt : help$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(ZIP1DIR)/help/%/com.sun.PresenterScreen-$(PLATFORMID)/presenter.xhp : $(COMMONMISC)/%/com.sun.PresenterScreen/presenter.xhp
+ @echo creating $@
+ @-$(MKDIRHIER) $(@:d)
+ $(TYPE) $< | sed "s/PLATFORMID/$(PLATFORMID)/" | sed 's/@PRESENTEREXTENSIONPRODUCTNAME@/Presenter Console/g' > $@
+
+.IF "$(ZIP1TARGETN)"!=""
+$(ZIP1TARGETN) : $(HELPLINKALLTARGETS)
+
+.ENDIF # "$(ZIP1TARGETN)"!=""
+
+$(COMPONENT_BITMAPS) : bitmaps$/$$(@:f)
+ @-$(MKDIRHIER) $(@:d)
+ +$(COPY) $< $@
+
+$(COMPONENT_IMAGES) : $(SOLARSRC)$/$(RSCDEFIMG)$/desktop$/res$/$$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(COPY) $< $@
+
+$(COMPONENT_LIBRARY) : $(DLLDEST)$/$$(@:f)
+ @-$(MKDIRHIER) $(@:d)
+ +$(COPY) $< $@
+.IF "$(OS)$(CPU)"=="WNTI" && "$(WITH_EXTENSION_INTEGRATION)"!="YES"
+ .IF "$(COM)"=="GCC"
+ $(GNUCOPY) $(SOLARBINDIR)$/mingwm10.dll $(ZIP1DIR)
+ .ELSE
+ .IF "$(PACKMS)"!=""
+ .IF "$(CCNUMVER)" <= "001399999999"
+ $(GNUCOPY) $(PACKMS)$/msvcr71.dll $(ZIP1DIR)
+ $(GNUCOPY) $(PACKMS)$/msvcp71.dll $(ZIP1DIR)
+ .ELSE
+ .IF "$(CCNUMVER)" <= "001499999999"
+ $(GNUCOPY) $(PACKMS)$/msvcr80.dll $(ZIP1DIR)
+ $(GNUCOPY) $(PACKMS)$/msvcp80.dll $(ZIP1DIR)
+ $(GNUCOPY) $(PACKMS)$/msvcm80.dll $(ZIP1DIR)
+ $(GNUCOPY) $(PACKMS)$/Microsoft.VC80.CRT.manifest $(ZIP1DIR)
+ .ELSE
+ $(GNUCOPY) $(PACKMS)$/msvcr90.dll $(ZIP1DIR)
+ $(GNUCOPY) $(PACKMS)$/msvcp90.dll $(ZIP1DIR)
+ $(GNUCOPY) $(PACKMS)$/msvcm90.dll $(ZIP1DIR)
+ $(GNUCOPY) $(PACKMS)$/Microsoft.VC90.CRT.manifest $(ZIP1DIR)
+ .ENDIF
+ .ENDIF
+ .ELSE # "$(PACKMS)"!=""
+ .IF "$(CCNUMVER)" <= "001399999999"
+ $(GNUCOPY) $(SOLARBINDIR)$/msvcr71.dll $(ZIP1DIR)
+ $(GNUCOPY) $(SOLARBINDIR)$/msvcp71.dll $(ZIP1DIR)
+ .ELSE
+ .IF "$(CCNUMVER)" <= "001499999999"
+ $(GNUCOPY) $(SOLARBINDIR)$/msvcr80.dll $(ZIP1DIR)
+ $(GNUCOPY) $(SOLARBINDIR)$/msvcp80.dll $(ZIP1DIR)
+ $(GNUCOPY) $(SOLARBINDIR)$/msvcm80.dll $(ZIP1DIR)
+ $(GNUCOPY) $(SOLARBINDIR)$/Microsoft.VC80.CRT.manifest $(ZIP1DIR)
+ .ELSE
+ $(GNUCOPY) $(SOLARBINDIR)$/msvcr90.dll $(ZIP1DIR)
+ $(GNUCOPY) $(SOLARBINDIR)$/msvcp90.dll $(ZIP1DIR)
+ $(GNUCOPY) $(SOLARBINDIR)$/msvcm90.dll $(ZIP1DIR)
+ $(GNUCOPY) $(SOLARBINDIR)$/Microsoft.VC90.CRT.manifest $(ZIP1DIR)
+ .ENDIF
+ .ENDIF
+ .ENDIF # "$(PACKMS)"!=""
+ .ENDIF #"$(COM)"=="GCC"
+.ENDIF #"$(OS)$(CPU)"=="WNTI" && "$(WITH_EXTENSION_INTEGRATION)"!="YES"
+
+
+
+$(ZIP1DIR)/%.xcu : %.xcu
+ @@-$(MKDIRHIER) $(@:d)
+ $(GNUCOPY) $< $@
+
+$(ZIP1DIR)$/%.xcs : %.xcs
+ @@-$(MKDIRHIER) $(@:d)
+ $(GNUCOPY) $< $@
+
+.INCLUDE .IGNORE : $(ZIP1DIR)_lang_track.mk
+.IF "$(LAST_WITH_LANG)"!="$(WITH_LANG)"
+PHONYDESC=.PHONY
+.ENDIF # "$(LAST_WITH_LANG)"!="$(WITH_LANG)"
+$(DESCRIPTION) $(PHONYDESC) : $$(@:f)
+ @-$(MKDIRHIER) $(@:d)
+ @echo LAST_WITH_LANG=$(WITH_LANG) > $(ZIP1DIR)_lang_track.mk
+ $(TYPE) description.xml | sed s/UPDATED_PLATFORM/$(PLATFORMID)/ > $@
+
+ALLTAR: $(MISC)/../bin/presenter-screen.oxt
+# hotfix to missing localizations
+.IF "$(WITH_LANG)"!=""
+ $(COPY) $(ZIP1DIR)_in/merge/org/openoffice/Office/extension/PresenterScreen.xcu $(ZIP1DIR)/registry/data/org/openoffice/Office/extension/
+ cd $(ZIP1DIR);zip -r -u ../../bin/presenter-screen.oxt registry/data/org/openoffice/Office/extension/PresenterScreen.xcu
+.ENDIF
+
+.ELSE
+ivo:
+ $(ECHO)
+.ENDIF # L10N_framework
+
+.ENDIF # "$(ENABLE_PRESENTER_SCREEN)" != "NO"
diff --git a/sdext/source/presenter/manifest.xml b/sdext/source/presenter/manifest.xml
new file mode 100644
index 000000000000..7466467f879f
--- /dev/null
+++ b/sdext/source/presenter/manifest.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=native"
+ manifest:full-path="PresenterScreen.unoSHARED_EXTENSION"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="registry/data/org/openoffice/Office/Jobs.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="registry/data/org/openoffice/Office/ProtocolHandler.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="registry/data/org/openoffice/Office/extension/PresenterScreen.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-schema"
+ manifest:full-path="registry/schema/org/openoffice/Office/extension/PresenterScreen.xcs"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.help"
+ manifest:full-path="help"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.package-bundle-description"
+ manifest:full-path="help/component.txt"/>
+</manifest:manifest>
diff --git a/sdext/source/presenter/registry/data/org/openoffice/Office/Jobs.xcu b/sdext/source/presenter/registry/data/org/openoffice/Office/Jobs.xcu
new file mode 100644
index 000000000000..1241a72a0243
--- /dev/null
+++ b/sdext/source/presenter/registry/data/org/openoffice/Office/Jobs.xcu
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<oor:component-data oor:name="Jobs" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="Jobs">
+ <node oor:name="onDocumentOpenedJob" oor:op="replace">
+ <prop oor:name="Service">
+ <value>com.sun.star.comp.Draw.framework.PresenterScreenJob</value>
+ </prop>
+ <prop oor:name="Context">
+ <value>com.sun.star.presentation.PresentationDocument</value>
+ </prop>
+ </node>
+ </node>
+ <node oor:name="Events">
+ <node oor:name="onDocumentOpened" oor:op="fuse">
+ <node oor:name="JobList">
+ <node oor:name="onDocumentOpenedJob" oor:op="replace"/>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/sdext/source/presenter/registry/data/org/openoffice/Office/ProtocolHandler.xcu b/sdext/source/presenter/registry/data/org/openoffice/Office/ProtocolHandler.xcu
new file mode 100644
index 000000000000..0f8369973a20
--- /dev/null
+++ b/sdext/source/presenter/registry/data/org/openoffice/Office/ProtocolHandler.xcu
@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="ProtocolHandler" oor:package="org.openoffice.Office">
+ <node oor:name="HandlerSet">
+ <node oor:name="vnd.sun.star.sdext.presenter.PresenterProtocolHandler" oor:op="replace">
+ <prop oor:name="Protocols">
+ <value>vnd.com.sun.star.comp.PresenterScreen:*</value>
+ </prop>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/sdext/source/presenter/registry/data/org/openoffice/Office/extension/PresenterScreen.xcu b/sdext/source/presenter/registry/data/org/openoffice/Office/extension/PresenterScreen.xcu
new file mode 100644
index 000000000000..22316392f807
--- /dev/null
+++ b/sdext/source/presenter/registry/data/org/openoffice/Office/extension/PresenterScreen.xcu
@@ -0,0 +1,1224 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd">
+<oor:component-data xmlns:install="http://openoffice.org/2004/installation" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:package="org.openoffice.Office.extension" oor:name="PresenterScreen">
+ <node oor:name="PresenterScreenSettings">
+ <node oor:name="ToolBars">
+ <node oor:name="ToolBar" oor:op="replace">
+ <node oor:name="Entries">
+ <node oor:name="a" oor:op="replace">
+ <prop oor:name="Name"><value>PreviousSlide</value></prop>
+ <prop oor:name="Type"><value>Button</value></prop>
+ <node oor:name="Normal">
+ <prop oor:name="Text"><value xml:lang="en-US">Previous</value></prop>
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonSlidePreviousNormal.png</value></prop>
+ </node>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:PrevSlide</value></prop>
+ <node oor:name="Font">
+ <prop oor:name="Size"><value>12</value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Color"><value>B3B7BC</value></prop>
+ <prop oor:name="Anchor"><value>Center</value></prop>
+ </node>
+ </node>
+ <node oor:name="MouseOver">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonSlidePreviousMouseOver.png</value></prop>
+ </node>
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>FFFFFF</value></prop>
+ </node>
+ </node>
+ <node oor:name="Disabled">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonSlidePreviousDisabled.png</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="b" oor:op="replace">
+ <prop oor:name="Name"><value>NextEffect</value></prop>
+ <prop oor:name="Type"><value>Button</value></prop>
+ <node oor:name="Normal">
+ <prop oor:name="Text"><value xml:lang="en-US">Next</value></prop>
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonEffectNextNormal.png</value></prop>
+ </node>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:NextEffect</value></prop>
+ <node oor:name="Font">
+ <prop oor:name="Size"><value>12</value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Color"><value>B3B7BC</value></prop>
+ <prop oor:name="Anchor"><value>Center</value></prop>
+ </node>
+ </node>
+ <node oor:name="MouseOver">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonEffectNextMouseOver.png</value></prop>
+ </node>
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>FFFFFF</value></prop>
+ </node>
+ </node>
+ <node oor:name="Disabled">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonEffectNextDisabled.png</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="c" oor:op="replace">
+ <prop oor:name="Name"><value>Notes</value></prop>
+ <prop oor:name="Type"><value>Button</value></prop>
+ <node oor:name="Normal">
+ <prop oor:name="Text"><value xml:lang="en-US">Notes</value></prop>
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonNotesNormal.png</value></prop>
+ </node>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:ShowNotes</value></prop>
+ <node oor:name="Font">
+ <prop oor:name="Size"><value>12</value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Color"><value>B3B7BC</value></prop>
+ <prop oor:name="Anchor"><value>Center</value></prop>
+ </node>
+ </node>
+ <node oor:name="MouseOver">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonNotesMouseOver.png</value></prop>
+ </node>
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>FFFFFF</value></prop>
+ </node>
+ </node>
+ <node oor:name="Selected">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonNotesSelected.png</value></prop>
+ </node>
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>FFFFFF</value></prop>
+ </node>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:CloseNotes</value></prop>
+ </node>
+ <node oor:name="Disabled">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonNotesDisabled.png</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="d" oor:op="replace">
+ <prop oor:name="Name"><value>SlideSorter</value></prop>
+ <prop oor:name="Type"><value>Button</value></prop>
+ <node oor:name="Normal">
+ <prop oor:name="Text"><value xml:lang="en-US">Slides</value></prop>
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonSlideSorterNormal.png</value></prop>
+ </node>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:ShowSlideSorter</value></prop>
+ <node oor:name="Font">
+ <prop oor:name="Size"><value>12</value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Color"><value>B3B7BC</value></prop>
+ <prop oor:name="Anchor"><value>Center</value></prop>
+ </node>
+ </node>
+ <node oor:name="MouseOver">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonSlideSorterMouseOver.png</value></prop>
+ </node>
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>FFFFFF</value></prop>
+ </node>
+ </node>
+ <node oor:name="Selected">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonSlideSorterSelected.png</value></prop>
+ </node>
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>FFFFFF</value></prop>
+ </node>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:CloseSlideSorter</value></prop>
+ </node>
+ <node oor:name="Disabled">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonSlideSorterDisabled.png</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="e" oor:op="replace">
+ <prop oor:name="Type"><value>VerticalSeparator</value></prop>
+ <node oor:name="Normal">
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>76797C</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="f" oor:op="replace">
+ <prop oor:name="Type"><value>ChangeOrientation</value></prop>
+ </node>
+ <node oor:name="g" oor:op="replace">
+ <prop oor:name="Type"><value>CurrentTimeLabel</value></prop>
+ <node oor:name="Normal">
+ <node oor:name="Font">
+ <prop oor:name="Size"><value>18</value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Color"><value>ffffff</value></prop>
+ <prop oor:name="Anchor"><value>Center</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="h" oor:op="replace">
+ <prop oor:name="Type"><value>HorizontalSeparator</value></prop>
+ <node oor:name="Normal">
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>71767a</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="i" oor:op="replace">
+ <prop oor:name="Type"><value>PresentationTimeLabel</value></prop>
+ <node oor:name="Normal">
+ <node oor:name="Font">
+ <prop oor:name="Size"><value>26</value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Color"><value>ffe969</value></prop>
+ <prop oor:name="Anchor"><value>Center</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="j" oor:op="replace">
+ <prop oor:name="Type"><value>ChangeOrientation</value></prop>
+ </node>
+ <node oor:name="k" oor:op="replace">
+ <prop oor:name="Type"><value>VerticalSeparator</value></prop>
+ <node oor:name="Normal">
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>76797C</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="l" oor:op="replace">
+ <prop oor:name="Name"><value>Help</value></prop>
+ <prop oor:name="Type"><value>Button</value></prop>
+ <node oor:name="Normal">
+ <prop oor:name="Text"><value xml:lang="en-US">Help</value></prop>
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonHelpNormal.png</value></prop>
+ </node>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:ShowHelp</value></prop>
+ <node oor:name="Font">
+ <prop oor:name="Size"><value>12</value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Color"><value>B3B7BC</value></prop>
+ <prop oor:name="Anchor"><value>Center</value></prop>
+ </node>
+ </node>
+ <node oor:name="MouseOver">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonHelpMouseOver.png</value></prop>
+ </node>
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>FFFFFF</value></prop>
+ </node>
+ </node>
+ <node oor:name="Selected">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonHelpSelected.png</value></prop>
+ </node>
+ <node oor:name="Font">
+ <prop oor:name="Color"><value>FFFFFF</value></prop>
+ </node>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:CloseHelp</value></prop>
+ </node>
+ <node oor:name="Disabled">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonHelpDisabled.png</value></prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ <node oor:name="NotesToolBar" oor:op="replace">
+ <node oor:name="Entries">
+ <node oor:name="a" oor:op="replace">
+ <prop oor:name="Name"><value>Zoom</value></prop>
+ <prop oor:name="Type"><value>Label</value></prop>
+ <node oor:name="Normal">
+ <prop oor:name="Text"><value xml:lang="en-US">Zoom</value></prop>
+ <node oor:name="Font">
+ <prop oor:name="Size"><value>14</value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Color"><value>B3B7BC</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="b" oor:op="replace">
+ <prop oor:name="Name"><value>Grow</value></prop>
+ <prop oor:name="Type"><value>Button</value></prop>
+ <node oor:name="Normal">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonPlusNormal.png</value></prop>
+ </node>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:GrowNotesFont</value></prop>
+ </node>
+ <node oor:name="MouseOver">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonPlusMouseOver.png</value></prop>
+ </node>
+ </node>
+ <node oor:name="Disabled">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonPlusDisabled.png</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="c" oor:op="replace">
+ <prop oor:name="Name"><value>Shrink</value></prop>
+ <prop oor:name="Type"><value>Button</value></prop>
+ <node oor:name="Normal">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonMinusNormal.png</value></prop>
+ </node>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:ShrinkNotesFont</value></prop>
+ </node>
+ <node oor:name="MouseOver">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonMinusMouseOver.png</value></prop>
+ </node>
+ </node>
+ <node oor:name="Disabled">
+ <node oor:name="Icon">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonMinusDisabled.png</value></prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ <node oor:name="Buttons">
+ <node oor:name="SlideSorterCloser" oor:op="replace">
+ <prop oor:name="Name"><value>SlideSorterCloser</value></prop>
+ <prop oor:name="Text">
+ <value xml:lang="en-US">Close</value>
+ </prop>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:CloseSlideSorter</value></prop>
+ </node>
+ <node oor:name="NotesViewCloser" oor:op="replace">
+ <prop oor:name="Name"><value>NotesViewCloser</value></prop>
+ <prop oor:name="Text">
+ <value xml:lang="en-US">Close</value>
+ </prop>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:CloseNotes</value></prop>
+ </node>
+ <node oor:name="HelpViewCloser" oor:op="replace">
+ <prop oor:name="Name"><value>HelpViewCloser</value></prop>
+ <prop oor:name="Text">
+ <value xml:lang="en-US">Close</value>
+ </prop>
+ <prop oor:name="Action"><value>vnd.com.sun.star.comp.PresenterScreen:CloseHelp</value></prop>
+ </node>
+ </node>
+ <node oor:name="ScrollBar">
+ <node oor:name="Bitmaps">
+ <node oor:name="up" oor:op="replace">
+ <prop oor:name="Name"><value>Up</value></prop>
+ <prop oor:name="NormalFileName"><value>bitmaps/ScrollbarArrowUpNormal.png</value></prop>
+ <prop oor:name="MouseOverFileName"><value>bitmaps/ScrollbarArrowUpMouseOver.png</value></prop>
+ <prop oor:name="DisabledFileName"><value>bitmaps/ScrollbarArrowUpDisabled.png</value></prop>
+ </node>
+ <node oor:name="down" oor:op="replace">
+ <prop oor:name="Name"><value>Down</value></prop>
+ <prop oor:name="NormalFileName"><value>bitmaps/ScrollbarArrowDownNormal.png</value></prop>
+ <prop oor:name="MouseOverFileName"><value>bitmaps/ScrollbarArrowDownMouseOver.png</value></prop>
+ <prop oor:name="DisabledFileName"><value>bitmaps/ScrollbarArrowDownDisabled.png</value></prop>
+ </node>
+ <node oor:name="pagervertical" oor:op="replace">
+ <prop oor:name="Name"><value>PagerVertical</value></prop>
+ <prop oor:name="NormalFileName"><value>bitmaps/ScrollbarPagerMiddleNormal.png</value></prop>
+ <prop oor:name="MouseOverFileName"><value>bitmaps/ScrollbarPagerMiddleMouseOver.png</value></prop>
+ </node>
+ <node oor:name="thumbtop" oor:op="replace">
+ <prop oor:name="Name"><value>ThumbTop</value></prop>
+ <prop oor:name="NormalFileName"><value>bitmaps/ScrollbarThumbTopNormal.png</value></prop>
+ <prop oor:name="MouseOverFileName"><value>bitmaps/ScrollbarThumbTopMouseOver.png</value></prop>
+ </node>
+ <node oor:name="thumbbottom" oor:op="replace">
+ <prop oor:name="Name"><value>ThumbBottom</value></prop>
+ <prop oor:name="NormalFileName"><value>bitmaps/ScrollbarThumbBottomNormal.png</value></prop>
+ <prop oor:name="MouseOverFileName"><value>bitmaps/ScrollbarThumbBottomMouseOver.png</value></prop>
+ </node>
+ <node oor:name="thumbvertical" oor:op="replace">
+ <prop oor:name="Name"><value>ThumbVertical</value></prop>
+ <prop oor:name="NormalFileName"><value>bitmaps/ScrollbarThumbMiddleNormal.png</value></prop>
+ <prop oor:name="MouseOverFileName"><value>bitmaps/ScrollbarThumbMiddleMouseOver.png</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="SlideSorter">
+ <node oor:name="BorderSize">
+ <prop oor:name="Left"><value>9</value></prop>
+ <prop oor:name="Top"><value>9</value></prop>
+ <prop oor:name="Right"><value>9</value></prop>
+ <prop oor:name="Bottom"><value>9</value></prop>
+ </node>
+ <node oor:name="CurrentSlideBorderBitmaps">
+ <node oor:name="TopLeft" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderCurrentSlideTopLeft.png</value></prop>
+ </node>
+ <node oor:name="Top" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderCurrentSlideTop.png</value></prop>
+ </node>
+ <node oor:name="TopRight" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderCurrentSlideTopRight.png</value></prop>
+ </node>
+ <node oor:name="Left" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderCurrentSlideLeft.png</value></prop>
+ </node>
+ <node oor:name="Right" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderCurrentSlideRight.png</value></prop>
+ </node>
+ <node oor:name="BottomLeft" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderCurrentSlideBottomLeft.png</value></prop>
+ </node>
+ <node oor:name="Bottom" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderCurrentSlideBottom.png</value></prop>
+ </node>
+ <node oor:name="BottomRight" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderCurrentSlideBottomRight.png</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="HelpView">
+ <node oor:name="HelpStrings">
+ <node oor:name="a" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">Left click, right or down arrow, spacebar, page down, enter, return, 'N'</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Next slide, or next effect</value>
+ </prop>
+ </node>
+ <node oor:name="b" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">Right click, left or up arrow, page up, backspace, 'P'</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Previous slide, or previous effect</value>
+ </prop>
+ </node>
+ <node oor:name="c" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ </node>
+ <node oor:name="d" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">Home</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">First slide</value>
+ </prop>
+ </node>
+ <node oor:name="e" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">End</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Last slide</value>
+ </prop>
+ </node>
+ <node oor:name="f" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ </node>
+ <node oor:name="g" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">Alt-Page Up</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Previous slide without effects</value>
+ </prop>
+ </node>
+ <node oor:name="h" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">Alt-Page Down</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Next slide without effects</value>
+ </prop>
+ </node>
+ <node oor:name="i" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ </node>
+ <node oor:name="j" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">'B', '.'</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Blacks/Unblacks the screen</value>
+ </prop>
+ </node>
+ <node oor:name="k" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">'W', ','</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Whites/Unwhites the screen</value>
+ </prop>
+ </node>
+ <node oor:name="l" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ </node>
+ <node oor:name="m" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">Esc, '-'</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">End slide show</value>
+ </prop>
+ </node>
+ <node oor:name="n" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ </node>
+ <node oor:name="o" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">Number followed by Enter</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Go to that slide</value>
+ </prop>
+ </node>
+ <node oor:name="p" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ </node>
+ <node oor:name="q" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">'G', 'S'</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Grow/Shrink size of notes font</value>
+ </prop>
+ </node>
+ <node oor:name="r" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">'A', 'Z'</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Scroll notes up/down</value>
+ </prop>
+ </node>
+ <node oor:name="s" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">'H', 'L'</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Move caret in notes view backward/forward</value>
+ </prop>
+ </node>
+ <node oor:name="t" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US"> </value>
+ </prop>
+ </node>
+ <node oor:name="u" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">Ctrl-'1'</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Shows the Presenter Console</value>
+ </prop>
+ </node>
+ <node oor:name="v" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">Ctrl-'2'</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Shows the Presentation Notes</value>
+ </prop>
+ </node>
+ <node oor:name="w" oor:op="replace">
+ <prop oor:name="Left">
+ <value xml:lang="en-US">Ctrl-'3'</value>
+ </prop>
+ <prop oor:name="Right">
+ <value xml:lang="en-US">Shows the Slides Overview</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ <node oor:name="Presenter">
+ <node oor:name="Themes">
+ <node oor:name="Theme_1" oor:op="replace">
+ <prop oor:name="ThemeName">
+ <value>DefaultTheme</value>
+ </prop>
+ <node oor:name="PaneStyles">
+ <node oor:name="PaneStyle_1" oor:op="replace">
+ <prop oor:name="StyleName">
+ <value>DefaultPaneStyle</value>
+ </prop>
+ <node oor:name="TitleFont">
+ <prop oor:name="FamilyName"><value></value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Size"><value>14</value></prop>
+ <prop oor:name="Color"><value>B3B7BC</value></prop>
+ <prop oor:name="Anchor"><value>Center</value></prop>
+ <prop oor:name="YOffset"><value>-7</value></prop>
+ </node>
+ <node oor:name="InnerBorderSize">
+ <prop oor:name="Left"><value>6</value></prop>
+ <prop oor:name="Top"><value>6</value></prop>
+ <prop oor:name="Right"><value>6</value></prop>
+ <prop oor:name="Bottom"><value>6</value></prop>
+ </node>
+ <node oor:name="OuterBorderSize">
+ <prop oor:name="Left"><value>20</value></prop>
+ <prop oor:name="Top"><value>28</value></prop>
+ <prop oor:name="Right"><value>20</value></prop>
+ <prop oor:name="Bottom"><value>29</value></prop>
+ </node>
+ <node oor:name="BorderBitmapList">
+ <node oor:name="Top" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderTop.png</value></prop>
+ <prop oor:name="YOffset"><value>6</value></prop>
+ </node>
+ <node oor:name="TopLeft" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderTopLeft.png</value></prop>
+ <prop oor:name="XOffset"><value>6</value></prop>
+ <prop oor:name="YOffset"><value>6</value></prop>
+ </node>
+ <node oor:name="TopRight" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderTopRight.png</value></prop>
+ <prop oor:name="XOffset"><value>-6</value></prop>
+ <prop oor:name="YOffset"><value>6</value></prop>
+ </node>
+ <node oor:name="Left" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderLeft.png</value></prop>
+ <prop oor:name="XOffset"><value>6</value></prop>
+ </node>
+ <node oor:name="Right" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderRight.png</value></prop>
+ <prop oor:name="XOffset"><value>-6</value></prop>
+ </node>
+ <node oor:name="BottomLeft" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderBottomLeft.png</value></prop>
+ <prop oor:name="XOffset"><value>6</value></prop>
+ <prop oor:name="YOffset"><value>-6</value></prop>
+ </node>
+ <node oor:name="BottomRight" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderBottomRight.png</value></prop>
+ <prop oor:name="XOffset"><value>-6</value></prop>
+ <prop oor:name="YOffset"><value>-6</value></prop>
+ </node>
+ <node oor:name="Bottom" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderBottom.png</value></prop>
+ <prop oor:name="YOffset"><value>-6</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="PaneStyle_2" oor:op="replace">
+ <prop oor:name="StyleName">
+ <value>ActivePaneStyle</value>
+ </prop>
+ <prop oor:name="ParentStyle">
+ <value>DefaultPaneStyle</value>
+ </prop>
+ <node oor:name="TitleFont">
+ <prop oor:name="FamilyName"><value></value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Size"><value>14</value></prop>
+ <prop oor:name="Color"><value>FFFFFF</value></prop>
+ <prop oor:name="Anchor"><value>Center</value></prop>
+ <prop oor:name="YOffset"><value>-10</value></prop>
+ </node>
+ <node oor:name="BorderBitmapList">
+ <node oor:name="Top" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderActiveTop.png</value></prop>
+ <prop oor:name="YOffset"><value>6</value></prop>
+ </node>
+ <node oor:name="TopLeft" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderActiveTopLeft.png</value></prop>
+ <prop oor:name="XOffset"><value>6</value></prop>
+ <prop oor:name="YOffset"><value>6</value></prop>
+ </node>
+ <node oor:name="TopRight" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderActiveTopRight.png</value></prop>
+ <prop oor:name="XOffset"><value>-6</value></prop>
+ <prop oor:name="YOffset"><value>6</value></prop>
+ </node>
+ <node oor:name="Left" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderActiveLeft.png</value></prop>
+ <prop oor:name="XOffset"><value>6</value></prop>
+ </node>
+ <node oor:name="Right" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderActiveRight.png</value></prop>
+ <prop oor:name="XOffset"><value>-6</value></prop>
+ </node>
+ <node oor:name="BottomLeft" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderActiveBottomLeft.png</value></prop>
+ <prop oor:name="XOffset"><value>6</value></prop>
+ <prop oor:name="YOffset"><value>-6</value></prop>
+ </node>
+ <node oor:name="BottomRight" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderActiveBottomRight.png</value></prop>
+ <prop oor:name="XOffset"><value>-6</value></prop>
+ <prop oor:name="YOffset"><value>-6</value></prop>
+ </node>
+ <node oor:name="Bottom" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderActiveBottom.png</value></prop>
+ <prop oor:name="YOffset"><value>-6</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="PaneStyle_3" oor:op="replace">
+ <prop oor:name="StyleName">
+ <value>ToolbarPaneStyle</value>
+ </prop>
+ <node oor:name="InnerBorderSize">
+ <prop oor:name="Left"><value>4</value></prop>
+ <prop oor:name="Top"><value>4</value></prop>
+ <prop oor:name="Right"><value>4</value></prop>
+ <prop oor:name="Bottom"><value>4</value></prop>
+ </node>
+ <node oor:name="OuterBorderSize">
+ <prop oor:name="Left"><value>8</value></prop>
+ <prop oor:name="Top"><value>8</value></prop>
+ <prop oor:name="Right"><value>8</value></prop>
+ <prop oor:name="Bottom"><value>0</value></prop>
+ </node>
+ <node oor:name="BorderBitmapList">
+ <node oor:name="Top" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderToolbarTop.png</value></prop>
+ <prop oor:name="YOffset"><value>4</value></prop>
+ </node>
+ <node oor:name="TopLeft" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderToolbarTopLeft.png</value></prop>
+ <prop oor:name="XOffset"><value>4</value></prop>
+ <prop oor:name="YOffset"><value>4</value></prop>
+ </node>
+ <node oor:name="TopRight" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderToolbarTopRight.png</value></prop>
+ <prop oor:name="XOffset"><value>-4</value></prop>
+ <prop oor:name="YOffset"><value>4</value></prop>
+ </node>
+ <node oor:name="Left" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderToolbarLeft.png</value></prop>
+ <prop oor:name="XOffset"><value>4</value></prop>
+ </node>
+ <node oor:name="Right" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderToolbarRight.png</value></prop>
+ <prop oor:name="XOffset"><value>-4</value></prop>
+ </node>
+ <node oor:name="BottomLeft" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderToolbarLeft.png</value></prop>
+ <prop oor:name="XOffset"><value>4</value></prop>
+ </node>
+ <node oor:name="BottomRight" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderToolbarRight.png</value></prop>
+ <prop oor:name="XOffset"><value>-4</value></prop>
+ </node>
+ <node oor:name="Bottom" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderToolbarBottom.png</value></prop>
+ <prop oor:name="YOffset"><value>-4</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="PaneStyle_4" oor:op="replace">
+ <prop oor:name="StyleName">
+ <value>ActiveBottomCalloutPaneStyle</value>
+ </prop>
+ <prop oor:name="ParentStyle">
+ <value>ActivePaneStyle</value>
+ </prop>
+ <node oor:name="OuterBorderSize">
+ <prop oor:name="Bottom"><value>52</value></prop>
+ </node>
+ <node oor:name="BorderBitmapList">
+ <node oor:name="BottomCallout" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/BorderActiveBottomCallout.png</value></prop>
+ <prop oor:name="YOffset"><value>-6</value></prop>
+ <prop oor:name="XHotSpot"><value>49</value></prop>
+ <prop oor:name="YHotSpot"><value>41</value></prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ <node oor:name="ViewStyles">
+ <node oor:name="ViewStyle_1" oor:op="replace">
+ <prop oor:name="StyleName"><value>DefaultViewStyle</value></prop>
+ <node oor:name="Font">
+ <prop oor:name="FamilyName"><value></value></prop>
+ <prop oor:name="Size"><value>20</value></prop>
+ <prop oor:name="Color"><value>FFFFFF</value>
+ </prop>
+ </node>
+ <node oor:name="Background">
+ <prop oor:name="NormalFileName"><value>bitmaps/ViewBackground.png</value></prop>
+ <prop oor:name="HorizontalTexturingMode"><value>Repeat</value></prop>
+ <prop oor:name="VerticalTexturingMode"><value>Repeat</value></prop>
+ <prop oor:name="ReplacementColor"><value>33000000</value></prop>
+ </node>
+ </node>
+ <node oor:name="ViewStyle_2" oor:op="replace">
+ <prop oor:name="StyleName"><value>NotesViewStyle</value></prop>
+ <prop oor:name="ParentStyle"><value>DefaultViewStyle</value></prop>
+ <node oor:name="Font">
+ <prop oor:name="FamilyName"><value></value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Size"><value>26</value></prop>
+ <prop oor:name="Color"><value>d1d6dc</value></prop>
+ </node>
+ </node>
+ <node oor:name="ViewStyle_3" oor:op="replace">
+ <prop oor:name="StyleName"><value>SlideSorterViewStyle</value></prop>
+ <prop oor:name="ParentStyle"><value>DefaultViewStyle</value></prop>
+ </node>
+ <node oor:name="ViewStyle_4" oor:op="replace">
+ <prop oor:name="StyleName"><value>HelpViewStyle</value></prop>
+ <prop oor:name="ParentStyle"><value>DefaultViewStyle</value></prop>
+ <node oor:name="Font">
+ <prop oor:name="FamilyName"><value></value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Size"><value>20</value></prop>
+ <prop oor:name="Color"><value>ffffff</value></prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="Background">
+ <prop oor:name="NormalFileName"><value>bitmaps/Background.png</value></prop>
+ <prop oor:name="ReplacementColor"><value>E4EFF9</value></prop>
+ <prop oor:name="HorizontalTexturingMode"><value>Repeat</value></prop>
+ <prop oor:name="VerticalTexturingMode"><value>Stretch</value></prop>
+ </node>
+ <node oor:name="Bitmaps">
+ <node oor:name="ButtonFrameLeft" oor:op="replace">
+ <prop oor:name="Name"><value>ButtonFrameLeft</value></prop>
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonFrameLeftNormal.png</value></prop>
+ <prop oor:name="MouseOverFileName"><value>bitmaps/ButtonFrameLeftMouseOver.png</value></prop>
+ <prop oor:name="YOffset"><value>2</value></prop>
+ </node>
+ <node oor:name="ButtonFrameCenter" oor:op="replace">
+ <prop oor:name="Name"><value>ButtonFrameCenter</value></prop>
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonFrameCenterNormal.png</value></prop>
+ <prop oor:name="MouseOverFileName"><value>bitmaps/ButtonFrameCenterMouseOver.png</value></prop>
+ <prop oor:name="YOffset"><value>2</value></prop>
+ </node>
+ <node oor:name="ButtonFrameRight" oor:op="replace">
+ <prop oor:name="Name"><value>ButtonFrameRight</value></prop>
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonFrameRightNormal.png</value></prop>
+ <prop oor:name="MouseOverFileName"><value>bitmaps/ButtonFrameRightMouseOver.png</value></prop>
+ <prop oor:name="YOffset"><value>2</value></prop>
+ </node>
+ <node oor:name="LabelLeft" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/LabelMouseOverLeft.png</value></prop>
+ </node>
+ <node oor:name="LabelCenter" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/LabelMouseOverCenter.png</value></prop>
+ </node>
+ <node oor:name="LabelRight" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/LabelMouseOverRight.png</value></prop>
+ </node>
+ <node oor:name="MousePointerNextEffect" oor:op="replace">
+ <prop oor:name="NormalFileName"><value>bitmaps/ButtonSlideNextNormal.png</value></prop>
+ </node>
+ </node>
+ <node oor:name="Fonts">
+ <node oor:name="ButtonFont" oor:op="replace">
+ <prop oor:name="FamilyName"><value></value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Size"><value>18</value></prop>
+ <prop oor:name="Color"><value>b3b7bc</value></prop>
+ </node>
+ <node oor:name="ButtonMouseOverFont" oor:op="replace">
+ <prop oor:name="FamilyName"><value></value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Size"><value>18</value></prop>
+ <prop oor:name="Color"><value>ffffff</value></prop>
+ </node>
+ <node oor:name="SlideSorterLabelFont" oor:op="replace">
+ <prop oor:name="FamilyName"><value></value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Size"><value>20</value></prop>
+ <prop oor:name="Color"><value>ffffff</value></prop>
+ </node>
+ <node oor:name="PendingSlideNumberFont" oor:op="replace">
+ <prop oor:name="FamilyName"><value></value></prop>
+ <prop oor:name="Style"><value>Bold</value></prop>
+ <prop oor:name="Size"><value>24</value></prop>
+ <prop oor:name="Color"><value>e02050</value></prop>
+ </node>
+ </node>
+ <node oor:name="StyleAssociations">
+ <node oor:name="PreviewPane" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/pane/Presenter/Pane1</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>ActivePaneStyle</value>
+ </prop>
+ </node>
+ <node oor:name="PreviewView" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/view/Presenter/CurrentSlidePreview</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>DefaultViewStyle</value>
+ </prop>
+ </node>
+ <node oor:name="NextSlidePreviewPane" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/pane/Presenter/Pane2</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>DefaultPaneStyle</value>
+ </prop>
+ </node>
+ <node oor:name="NextSlidePreviewView" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/view/Presenter/NextSlidePreview</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>DefaultViewStyle</value>
+ </prop>
+ </node>
+ <node oor:name="ToolBarPane" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/pane/Presenter/Pane4</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>ToolbarPaneStyle</value>
+ </prop>
+ </node>
+ <node oor:name="ToolBarView" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/view/Presenter/ToolBar</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>DefaultViewStyle</value>
+ </prop>
+ </node>
+ <node oor:name="NotesPane" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/pane/Presenter/Pane3</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>ActivePaneStyle</value>
+ </prop>
+ </node>
+ <node oor:name="NotesView" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/view/Presenter/Notes</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>NotesViewStyle</value>
+ </prop>
+ </node>
+ <node oor:name="SlideSorter" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/view/Presenter/SlideSorter</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>SlideSorterViewStyle</value>
+ </prop>
+ </node>
+ <node oor:name="OverlayPane" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/pane/Presenter/Overlay</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>ActivePaneStyle</value>
+ </prop>
+ </node>
+ <node oor:name="HelpView" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/view/Presenter/Help</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>HelpViewStyle</value>
+ </prop>
+ </node>
+ <node oor:name="HelpPane" oor:op="replace">
+ <prop oor:name="ResourceURL">
+ <value>private:resource/pane/Presenter/Pane6</value>
+ </prop>
+ <prop oor:name="StyleName">
+ <value>ActivePaneStyle</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ <node oor:name="Views">
+ <node oor:name="CurrentSlidePreview" oor:op="replace">
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/CurrentSlidePreview</value>
+ </prop>
+ <prop oor:name="Title">
+ <value xml:lang="en-US">Current Slide (%CURRENT_SLIDE_NUMBER% of %SLIDE_COUNT%)</value>
+ </prop>
+ <prop oor:name="AccessibleTitle">
+ <value xml:lang="en-US">Current Slide, %CURRENT_SLIDE_NAME%, %CURRENT_SLIDE_NUMBER% of %SLIDE_COUNT%</value>
+ </prop>
+ <prop oor:name="IsOpaque"><value>true</value></prop>
+ <node oor:name="Strings">
+ <node oor:name="ClickToExitPresentationText" oor:op="replace">
+ <prop oor:name="String">
+ <value xml:lang="en-US">Click to exit presentation...</value>
+ </prop>
+ </node>
+ <node oor:name="ClickToExitPresentationTitle" oor:op="replace">
+ <prop oor:name="String">
+ <value xml:lang="en-US">Current Slide (end)</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ <node oor:name="NextSlidePreview" oor:op="replace">
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/NextSlidePreview</value>
+ </prop>
+ <prop oor:name="Title">
+ <value xml:lang="en-US">Next Slide</value>
+ </prop>
+ <prop oor:name="IsOpaque"><value>false</value></prop>
+ </node>
+ <node oor:name="ToolBar" oor:op="replace">
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/ToolBar</value>
+ </prop>
+ <prop oor:name="IsOpaque"><value>false</value></prop>
+ </node>
+ <node oor:name="NotesView" oor:op="replace">
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/Notes</value>
+ </prop>
+ <prop oor:name="Title">
+ <value xml:lang="en-US">Notes</value>
+ </prop>
+ <prop oor:name="IsOpaque"><value>false</value></prop>
+ </node>
+ <node oor:name="SlideSorter" oor:op="replace">
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/SlideSorter</value>
+ </prop>
+ <prop oor:name="IsOpaque"><value>false</value></prop>
+ <prop oor:name="Title">
+ <value xml:lang="en-US"></value>
+ </prop>
+ <prop oor:name="AccessibleTitle">
+ <value xml:lang="en-US">Slide Overview, %CURRENT_SLIDE_NAME%, %CURRENT_SLIDE_NUMBER% of %SLIDE_COUNT%</value>
+ </prop>
+ </node>
+ <node oor:name="HelpView" oor:op="replace">
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/Help</value>
+ </prop>
+ <prop oor:name="Title">
+ <value xml:lang="en-US">Help</value>
+ </prop>
+ <prop oor:name="IsOpaque"><value>false</value></prop>
+ </node>
+ </node>
+ <node oor:name="Layouts">
+ <node oor:name="DefaultLayout" oor:op="replace">
+ <prop oor:name="LayoutName">
+ <value>DefaultLayout</value>
+ </prop>
+ <node oor:name="Layout">
+ <node oor:name="CurrentSlidePreview" oor:op="replace">
+ <prop oor:name="PaneURL">
+ <value>private:resource/pane/Presenter/Pane1</value>
+ </prop>
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/CurrentSlidePreview</value>
+ </prop>
+ <prop oor:name="RelativeX">
+ <value>0.05</value>
+ </prop>
+ <prop oor:name="RelativeY">
+ <value>0.05</value>
+ </prop>
+ <prop oor:name="RelativeWidth">
+ <value>0.50</value>
+ </prop>
+ <prop oor:name="RelativeHeight">
+ <value>0.50</value>
+ </prop>
+ </node>
+ <node oor:name="NextSlidePreview" oor:op="replace">
+ <prop oor:name="PaneURL">
+ <value>private:resource/pane/Presenter/Pane2</value>
+ </prop>
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/NextSlidePreview</value>
+ </prop>
+ <prop oor:name="RelativeX">
+ <value>0.60</value>
+ </prop>
+ <prop oor:name="RelativeY">
+ <value>0.05</value>
+ </prop>
+ <prop oor:name="RelativeWidth">
+ <value>0.35</value>
+ </prop>
+ <prop oor:name="RelativeHeight">
+ <value>0.35</value>
+ </prop>
+ </node>
+ <node oor:name="ToolBar" oor:op="replace">
+ <prop oor:name="PaneURL">
+ <value>private:resource/pane/Presenter/Pane4</value>
+ </prop>
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/ToolBar</value>
+ </prop>
+ <prop oor:name="RelativeX">
+ <value>0.60</value>
+ </prop>
+ <prop oor:name="RelativeY">
+ <value>0.45</value>
+ </prop>
+ <prop oor:name="RelativeWidth">
+ <value>0.25</value>
+ </prop>
+ <prop oor:name="RelativeHeight">
+ <value>0.1</value>
+ </prop>
+ </node>
+ <node oor:name="NotesView" oor:op="replace">
+ <prop oor:name="PaneURL">
+ <value>private:resource/pane/Presenter/Pane3</value>
+ </prop>
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/Notes</value>
+ </prop>
+ <prop oor:name="RelativeX">
+ <value>0.05</value>
+ </prop>
+ <prop oor:name="RelativeY">
+ <value>0.60</value>
+ </prop>
+ <prop oor:name="RelativeWidth">
+ <value>0.9</value>
+ </prop>
+ <prop oor:name="RelativeHeight">
+ <value>0.35</value>
+ </prop>
+ </node>
+ <node oor:name="SlideSorter" oor:op="replace">
+ <prop oor:name="PaneURL">
+ <value>private:resource/pane/Presenter/Overlay</value>
+ </prop>
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/SlideSorter</value>
+ </prop>
+ <prop oor:name="RelativeX">
+ <value>0.05</value>
+ </prop>
+ <prop oor:name="RelativeY">
+ <value>0.05</value>
+ </prop>
+ <prop oor:name="RelativeWidth">
+ <value>0.95</value>
+ </prop>
+ <prop oor:name="RelativeHeight">
+ <value>0.8</value>
+ </prop>
+ </node>
+ <node oor:name="HelpView" oor:op="replace">
+ <prop oor:name="PaneURL">
+ <value>private:resource/pane/Presenter/Pane6</value>
+ </prop>
+ <prop oor:name="ViewURL">
+ <value>private:resource/view/Presenter/Help</value>
+ </prop>
+ <prop oor:name="RelativeX">
+ <value>0.05</value>
+ </prop>
+ <prop oor:name="RelativeY">
+ <value>0.05</value>
+ </prop>
+ <prop oor:name="RelativeWidth">
+ <value>0.95</value>
+ </prop>
+ <prop oor:name="RelativeHeight">
+ <value>0.8</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ <node oor:name="Accessibility">
+ <node oor:name="Console" oor:op="replace">
+ <prop oor:name="String">
+ <value xml:lang="en-US">Presenter Console</value>
+ </prop>
+ </node>
+ <node oor:name="Preview" oor:op="replace">
+ <prop oor:name="String">
+ <value xml:lang="en-US">Current Slide Info</value>
+ </prop>
+ </node>
+ <node oor:name="Notes" oor:op="replace">
+ <prop oor:name="String">
+ <value xml:lang="en-US">Presenter Notes</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/sdext/source/presenter/registry/data/org/openoffice/Office/extension/makefile.mk b/sdext/source/presenter/registry/data/org/openoffice/Office/extension/makefile.mk
new file mode 100644
index 000000000000..d3efd284ff66
--- /dev/null
+++ b/sdext/source/presenter/registry/data/org/openoffice/Office/extension/makefile.mk
@@ -0,0 +1,51 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..$/..$/..$/..$/..
+
+PRJNAME=sdext
+TARGET=data_ooOfficeext
+PACKAGE=org.openoffice.Office.extension
+EXTENSIONNAME=PresenterScreen
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+XCSROOT=$(PRJ)$/source$/presenter
+ABSXCSROOT=$(PWD)/$(PRJ)$/source$/presenter
+
+# --- Targets ------------------------------------------------------
+
+XCUFILES= \
+ PresenterScreen.xcu
+
+MODULEFILES=
+
+LOCALIZEDFILES= \
+ PresenterScreen.xcu
+
+.INCLUDE : target.mk
diff --git a/sdext/source/presenter/registry/data/org/openoffice/Office/makefile.mk b/sdext/source/presenter/registry/data/org/openoffice/Office/makefile.mk
new file mode 100644
index 000000000000..358ffd9f59a5
--- /dev/null
+++ b/sdext/source/presenter/registry/data/org/openoffice/Office/makefile.mk
@@ -0,0 +1,48 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..$/..$/..$/..
+
+PRJNAME=sdext
+TARGET=data_ooOffice
+PACKAGE=org.openoffice.Office
+EXTNAME=presenter
+
+.INCLUDE : settings.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+# --- Targets ------------------------------------------------------
+
+XCUFILES= \
+ Jobs.xcu \
+ ProtocolHandler.xcu
+
+MODULEFILES=
+
+LOCALIZEDFILES=
+
+.INCLUDE : target.mk
diff --git a/sdext/source/presenter/registry/schema/org/openoffice/Office/extension/PresenterScreen.xcs b/sdext/source/presenter/registry/schema/org/openoffice/Office/extension/PresenterScreen.xcs
new file mode 100644
index 000000000000..deba55ab258b
--- /dev/null
+++ b/sdext/source/presenter/registry/schema/org/openoffice/Office/extension/PresenterScreen.xcs
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-schema xml:lang="en-US" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:package="org.openoffice.Office.extension" oor:name="PresenterScreen">
+ <info>
+ <author>AF</author>
+ <desc>Configuration of the Presenter Screen extension.</desc>
+ </info>
+ <import oor:component="org.openoffice.Office.Impress"></import>
+ <templates>
+ <group oor:name="BitmapDescriptor">
+ <info><desc>Describes one bitmap that can be used as button icon or to paint
+ a pane border.</desc></info>
+ <prop oor:name="Name" oor:type="xs:string">
+ <info><desc>Name of the bitmap. Used to look-up the bitmap in a container.</desc></info>
+ </prop>
+ <prop oor:name="Text" oor:type="xs:string" oor:localized="true">
+ <info><desc>Text that is displayed together with the icon.</desc></info>
+ </prop>
+ <prop oor:name="NormalFileName" oor:type="xs:string">
+ <info><desc>Relative file name to the bitmap for the normal icon.</desc></info>
+ </prop>
+ <prop oor:name="MouseOverFileName" oor:type="xs:string">
+ <info><desc>Relative file name to the bitmap for the mouse over icon.</desc></info>
+ </prop>
+ <prop oor:name="ButtonDownFileName" oor:type="xs:string">
+ <info><desc>Relative file name to the bitmap for the button down icon.</desc></info>
+ </prop>
+ <prop oor:name="DisabledFileName" oor:type="xs:string">
+ <info><desc>Relative file name to the bitmap for the icon in disabled state.</desc></info>
+ </prop>
+ <prop oor:name="SelectedFileName" oor:type="xs:string">
+ <info><desc>Relative file name to the bitmap for the icon in disabled state.</desc></info>
+ </prop>
+ <prop oor:name="MaskFileName" oor:type="xs:string">
+ <info><desc>The file name of the mask bitmap. Use red for pixel outside of
+ the border and blue for inside pixels.</desc></info>
+ <value></value>
+ </prop>
+ <prop oor:name="XOffset" oor:type="xs:int">
+ <info><desc>Horizontal offset to move the bitmap just outside the
+ window border.</desc></info>
+ <value>0</value>
+ </prop>
+ <prop oor:name="YOffset" oor:type="xs:int">
+ <info><desc>Vertical offset to move the bitmap just outside the
+ window border.</desc></info>
+ <value>0</value>
+ </prop>
+ <prop oor:name="XHotSpot" oor:type="xs:int">
+ <info><desc>Horizontal position of a hot spot.</desc></info>
+ </prop>
+ <prop oor:name="YHotSpot" oor:type="xs:int">
+ <info><desc>Vertical position of a hot spot.</desc></info>
+ </prop>
+ <prop oor:name="ReplacementColor" oor:type="xs:hexBinary">
+ <info><desc>Color that is used as replacement for the bitmap when the later
+ can for some reason not be used.</desc></info>
+ </prop>
+ <prop oor:name="HorizontalTexturingMode" oor:type="xs:string">
+ <info><desc>Horizontal texturing mode.</desc></info>
+ <constraints>
+ <enumeration oor:value="Once">
+ <info><desc>Show texture only once</desc></info>
+ </enumeration>
+ <enumeration oor:value="Repeat">
+ <info><desc>Repeat the texture</desc></info>
+ </enumeration>
+ <enumeration oor:value="Stretch">
+ <info><desc>Stretch the texture to cover the paint area</desc></info>
+ </enumeration>
+ </constraints>
+ </prop>
+ <prop oor:name="VerticalTexturingMode" oor:type="xs:string">
+ <info><desc>Vertical texturing mode.</desc></info>
+ <constraints>
+ <enumeration oor:value="Once">
+ <info><desc>Show texture only once</desc></info>
+ </enumeration>
+ <enumeration oor:value="Repeat">
+ <info><desc>Repeat the texture</desc></info>
+ </enumeration>
+ <enumeration oor:value="Stretch">
+ <info><desc>Stretch the texture to cover the paint area</desc></info>
+ </enumeration>
+ </constraints>
+ <value>Once</value>
+ </prop>
+ </group>
+ <group oor:name="ThemeBorderSize">
+ <info><desc>Four values describing the sizes of a border around a
+ rectangular area.</desc></info>
+ <prop oor:name="Left" oor:type="xs:int">
+ <info><desc>Left border size.</desc></info>
+ </prop>
+ <prop oor:name="Top" oor:type="xs:int">
+ <info><desc>Top border size.</desc></info>
+ </prop>
+ <prop oor:name="Right" oor:type="xs:int">
+ <info><desc>Right border size.</desc></info>
+ </prop>
+ <prop oor:name="Bottom" oor:type="xs:int">
+ <info><desc>Bottom border size.</desc></info>
+ </prop>
+ </group>
+ <group oor:name="Font">
+ <info><desc>Font description.</desc></info>
+ <prop oor:name="FamilyName" oor:type="xs:string">
+ <info><desc>The name of the font family.</desc></info>
+ </prop>
+ <prop oor:name="Size" oor:type="xs:int">
+ <info><desc>Font size.</desc></info>
+ </prop>
+ <prop oor:name="Style" oor:type="xs:string">
+ <info><desc>Something like "Bold" or "Italic" or "Bold Italic".</desc></info>
+ </prop>
+ <prop oor:name="Color" oor:type="xs:hexBinary">
+ <info><desc>Font color.</desc></info>
+ </prop>
+ <prop oor:name="Anchor" oor:type="xs:string">
+ <info><desc>Orientation of text. Can be left, right, or centered.</desc></info>
+ <constraints>
+ <enumeration oor:value="Left">
+ <info><desc>Flush left</desc></info>
+ </enumeration>
+ <enumeration oor:value="Right">
+ <info><desc>Flush right</desc></info>
+ </enumeration>
+ <enumeration oor:value="Center">
+ <info><desc>Centered</desc></info>
+ </enumeration>
+ </constraints>
+ </prop>
+ <prop oor:name="XOffset" oor:type="xs:int">
+ <info><desc>Horizontal offset in relation to the anchor point.</desc></info>
+ </prop>
+ <prop oor:name="YOffset" oor:type="xs:int">
+ <info><desc>Vertical offset in relation to the anchor point.</desc></info>
+ </prop>
+ </group>
+ <group oor:name="ToolBarDescription">
+ <node-ref oor:name="Font" oor:node-type="Font">
+ <info><desc>Font used for displaying the text.</desc></info>
+ </node-ref>
+ <node-ref oor:name="Icon" oor:node-type="BitmapDescriptor">
+ <info><desc>The icon to display.</desc></info>
+ </node-ref>
+ <prop oor:name="Text" oor:type="xs:string" oor:localized="true">
+ <info><desc>The text to display.</desc></info>
+ </prop>
+ <prop oor:name="Action" oor:type="xs:string">
+ <info><desc>Action to execute when a button is triggered.</desc></info>
+ </prop>
+ </group>
+ <group oor:name="ToolBarEntry">
+ <prop oor:name="Name" oor:type="xs:string">
+ <info><desc>Name of the entry. May be used to have mode dependant entries.</desc></info>
+ </prop>
+ <prop oor:name="Type" oor:type="xs:string">
+ <info><desc>Type of the entry. Examples are "Label" and "Button".</desc></info>
+ </prop>
+ <node-ref oor:name="Normal" oor:node-type="ToolBarDescription">
+ <info><desc>Description of a tool bar entry in normal mode (not selected, not mouse over)</desc></info>
+ </node-ref>
+ <node-ref oor:name="MouseOver" oor:node-type="ToolBarDescription">
+ <info><desc>Description of a tool bar entry when the mouse is over it.</desc></info>
+ </node-ref>
+ <node-ref oor:name="Selected" oor:node-type="ToolBarDescription">
+ <info><desc>Description of a tool bar entry when it is selected.</desc></info>
+ </node-ref>
+ <node-ref oor:name="Disabled" oor:node-type="ToolBarDescription">
+ <info><desc>Description of a tool bar entry when it is disabled.</desc></info>
+ </node-ref>
+ </group>
+ <group oor:name="ToolBar">
+ <info><desc>Definition of one tool bar.</desc></info>
+ <set oor:name="Entries" oor:node-type="ToolBarEntry">
+ <info><desc>Entries of the tool bars.</desc></info>
+ </set>
+ </group>
+ <group oor:name="Button">
+ <prop oor:name="Name" oor:type="xs:string">
+ <info><desc>Name of the button that is used to look up the button.</desc></info>
+ </prop>
+ <node-ref oor:name="Font" oor:node-type="Font">
+ <info><desc>Font used for displaying the text.</desc></info>
+ </node-ref>
+ <node-ref oor:name="Icon" oor:node-type="BitmapDescriptor">
+ <info><desc>The icon to display.</desc></info>
+ </node-ref>
+ <prop oor:name="Text" oor:type="xs:string" oor:localized="true">
+ <info><desc>The text to display.</desc></info>
+ </prop>
+ <prop oor:name="Action" oor:type="xs:string">
+ <info><desc>Action to execute when a button is triggered.</desc></info>
+ </prop>
+ </group>
+ <group oor:name="HelpEntry">
+ <prop oor:name="Left" oor:type="xs:string" oor:localized="true">
+ <info><desc>Typically a list of keyboard key names.</desc></info>
+ </prop>
+ <prop oor:name="Right" oor:type="xs:string" oor:localized="true">
+ <info><desc>Typically a description of the action triggered by pressing the keys on the left.</desc></info>
+ </prop>
+ </group>
+ <group oor:name="PaneStyle">
+ <info><desc>Visual properties of a pane style:
+ the border of a pane and its title font.</desc></info>
+ <prop oor:name="StyleName" oor:type="xs:string">
+ <info><desc>Name of the style. Used for referencing the style.
+ Has to be unique among pane styles and view styles
+ in one theme.</desc></info>
+ </prop>
+ <prop oor:name="ParentStyle" oor:type="xs:string">
+ <info><desc>Name of the parent style. Values not supplied in this style
+ are taken from the parent style. Empty string or missing
+ mean no parent.</desc></info>
+ <value></value>
+ </prop>
+ <node-ref oor:name="TitleFont" oor:node-type="Font">
+ <info><desc>Font used for displaying the pane title.</desc></info>
+ </node-ref>
+ <node-ref oor:name="InnerBorderSize" oor:node-type="ThemeBorderSize">
+ <info><desc>Size of the inner part of the border.</desc></info>
+ </node-ref>
+ <node-ref oor:name="OuterBorderSize" oor:node-type="ThemeBorderSize">
+ <info><desc>Size of the outer part of the border.</desc></info>
+ </node-ref>
+ <set oor:name="BorderBitmapList" oor:node-type="BitmapDescriptor">
+ <info><desc>Bitmaps that are used to paint the borders of
+ a pane.</desc></info>
+ </set>
+ </group>
+ <group oor:name="ViewStyle">
+ <info><desc>Visual properties of a view style:
+ font and backround color.</desc></info>
+ <prop oor:name="StyleName" oor:type="xs:string">
+ <info><desc>Name of the style. Used for referencing the style.
+ Has to be unique among pane styles and view styles
+ in one theme.</desc></info>
+ </prop>
+ <prop oor:name="ParentStyle" oor:type="xs:string">
+ <info><desc>Name of the parent style. Values not supplied in this style
+ are taken from the parent style. Empty string or missing
+ mean no parent.</desc></info>
+ <value></value>
+ </prop>
+ <node-ref oor:name="Font" oor:node-type="Font">
+ <info><desc>Font used for text display inside a view.</desc></info>
+ </node-ref>
+ <node-ref oor:name="Background" oor:node-type="BitmapDescriptor">
+ <info><desc>Color (or bitmap) that is used to paint the
+ background of a view.</desc></info>
+ </node-ref>
+ </group>
+ <group oor:name="Style_Association">
+ <info><desc>Association of a drawing framework resource to a
+ style of the presenter theme.</desc></info>
+ <prop oor:name="ResourceURL" oor:type="xs:string">
+ <info><desc>URL of a drawing framework resource.</desc></info>
+ </prop>
+ <prop oor:name="StyleName" oor:type="xs:string">
+ <info><desc>Name of a pane style or a view style.</desc></info>
+ </prop>
+ </group>
+ <group oor:name="PresenterString">
+ <info><desc></desc></info>
+ <prop oor:name="String" oor:type="xs:string" oor:localized="true">
+ </prop>
+ </group>
+ <group oor:name="ViewDescription">
+ <info><desc>Association of a drawing framework resource to a
+ style of the presenter theme.</desc></info>
+ <prop oor:name="ViewURL" oor:type="xs:string">
+ <info><desc>URL of a drawing framework view.</desc></info>
+ </prop>
+ <prop oor:name="StyleName" oor:type="xs:string">
+ <info><desc>Name of a view style.</desc></info>
+ </prop>
+ <prop oor:name="Title" oor:type="xs:string" oor:localized="true">
+ <info><desc>Title displayed for the component. An empty or missing
+ title means that no title is displayed.</desc></info>
+ <value></value>
+ </prop>
+ <prop oor:name="AccessibleTitle" oor:type="xs:string" oor:localized="true">
+ <info><desc>Title displayed for the component when accessibility support is active.
+ An empty or missing title means that no title is displayed.</desc></info>
+ <value></value>
+ </prop>
+ <prop oor:name="IsOpaque" oor:type="xs:boolean">
+ <info><desc>When the value is false then the background is painted before the
+ view is painted.</desc></info>
+ <value>false</value>
+ </prop>
+ <set oor:name="Strings" oor:node-type="PresenterString">
+ <info><desc>List of localizable strings used by the view.</desc></info>
+ </set>
+ </group>
+ <group oor:name="PresenterTheme">
+ <info><desc>Visual properties of the presenter view. The values in a theme
+ are hints and can be ignored.</desc></info>
+ <prop oor:name="ThemeName" oor:type="xs:string">
+ <info><desc>Name of the theme. Used for referencing the theme.
+ Has to be unique among all themes. The name of the
+ default theme is 'DefaultTheme'</desc></info>
+ </prop>
+ <prop oor:name="ParentTheme" oor:type="xs:string">
+ <info><desc>Name of the parent theme. Values not supplied in this theme
+ are taken from the parent theme. Empty string or missing
+ mean default theme.</desc></info>
+ <value></value>
+ </prop>
+ <prop oor:name="BitmapSourceExtension" oor:type="xs:string">
+ <info><desc>Name of the extension which contains the bitmaps
+ referenced by this theme.</desc></info>
+ <value></value>
+ </prop>
+ <node-ref oor:name="Background" oor:node-type="BitmapDescriptor">
+ <info><desc>Color or bitmap that is used to paint the
+ background.</desc></info>
+ </node-ref>
+ <set oor:name="PaneStyles" oor:node-type="PaneStyle">
+ <info><desc>List of pane styles.</desc></info>
+ </set>
+ <set oor:name="ViewStyles" oor:node-type="ViewStyle">
+ <info><desc>List of view styles.</desc></info>
+ </set>
+ <set oor:name="StyleAssociations" oor:node-type="Style_Association">
+ <info><desc>List of style associations.</desc></info>
+ </set>
+ <set oor:name="Bitmaps" oor:node-type="BitmapDescriptor">
+ <info><desc>List of additional bitmaps for example for buttons.</desc></info>
+ </set>
+ <set oor:name="Fonts" oor:node-type="Font">
+ <info><desc>List of additional fonts.</desc></info>
+ </set>
+ </group>
+ <group oor:name="PresenterComponentLayout">
+ <info><desc>Layout of a component of the presenter screen.</desc></info>
+ <prop oor:name="PaneURL" oor:type="xs:string">
+ <info><desc>URL of a pane resource.</desc></info>
+ </prop>
+ <prop oor:name="ViewURL" oor:type="xs:string">
+ <info><desc>URL of a view resource that is to be displayed in
+ the pane.</desc></info>
+ </prop>
+ <prop oor:name="RelativeX" oor:type="xs:double">
+ <info><desc>Relative x position in the range of [0,1].</desc></info>
+ </prop>
+ <prop oor:name="RelativeY" oor:type="xs:double">
+ <info><desc>Relative y position in the range of [0,1].</desc></info>
+ </prop>
+ <prop oor:name="RelativeWidth" oor:type="xs:double">
+ <info><desc>Relative width in the range of [0,1].</desc></info>
+ </prop>
+ <prop oor:name="RelativeHeight" oor:type="xs:double">
+ <info><desc>Relative height in the range of [0,1].</desc></info>
+ </prop>
+ </group>
+ <group oor:name="PresenterLayout">
+ <info><desc>Layout of all components of the presenter screen.</desc></info>
+ <prop oor:name="LayoutName" oor:type="xs:string">
+ <info><desc>Name of the layout. Used for referencing the layout.
+ Has to be unique among all presenter layouts.</desc></info>
+ </prop>
+ <prop oor:name="ParentLayout" oor:type="xs:string">
+ <info><desc>Name of the parent layout. Values not supplied in this layout
+ are taken from the parent layout. Missing or empty string
+ mean no parent layout.</desc></info>
+ <value></value>
+ </prop>
+ <set oor:name="Layout" oor:node-type="PresenterComponentLayout">
+ <info><desc>List of component layouts.</desc></info>
+ </set>
+ </group>
+ </templates>
+ <component>
+ <group oor:name="PresenterScreenSettings">
+ <info><desc>Settings regarding controls that are only used by the Presenter
+ Screen.</desc></info>
+ <set oor:name="ToolBars" oor:node-type="ToolBar">
+ <info><desc>Set of tool bars.</desc></info>
+ </set>
+ <set oor:name="Buttons" oor:node-type="Button">
+ <info><desc>Set of buttons.</desc></info>
+ </set>
+ <group oor:name="ScrollBar">
+ <info><desc>Settings of scroll bars.</desc></info>
+ <set oor:name="Bitmaps" oor:node-type="BitmapDescriptor">
+ <info><desc>Bitmaps of icons used for displaying the scroll bar.</desc></info>
+ </set>
+ </group>
+ <group oor:name="SlideSorter">
+ <info><desc>Settings of the slide sorter of the presenter screen.</desc></info>
+ <node-ref oor:name="BorderSize" oor:node-type="ThemeBorderSize">
+ <info><desc>Size of the border around the current slide.</desc></info>
+ </node-ref>
+ <set oor:name="CurrentSlideBorderBitmaps" oor:node-type="BitmapDescriptor">
+ <info><desc>Bitmaps that are used to paint the border around the current
+ slide.</desc></info>
+ </set>
+ </group>
+ <group oor:name="HelpView">
+ <info><desc>Settings of help view.</desc></info>
+ <set oor:name="HelpStrings" oor:node-type="HelpEntry">
+ <info><desc>List of entries displayed in the help view.</desc></info>
+ </set>
+ </group>
+ </group>
+ <group oor:name="Presenter">
+ <info><desc>General properties of the presenter view.</desc></info>
+ <prop oor:name="StartAlways" oor:type="xs:boolean">
+ <info><desc>When true then presenter screen is displayed on single screen systems
+ or when fullscreen presentation spans all screens.</desc></info>
+ <value>false</value>
+ </prop>
+ <set oor:name="Themes" oor:node-type="PresenterTheme">
+ <info><desc>List of available themes.</desc></info>
+ </set>
+ <prop oor:name="CurrentTheme" oor:type="xs:string">
+ <info><desc>Name of the current theme. An empty name or the string "DefaultTheme"
+ specify the default theme.</desc></info>
+ <value>DefaultTheme</value>
+ </prop>
+ <set oor:name="Views" oor:node-type="ViewDescription">
+ <info><desc>Description of the views.</desc></info>
+ </set>
+ <set oor:name="Layouts" oor:node-type="PresenterLayout">
+ <info><desc>List of visible presenter components.</desc></info>
+ </set>
+ <prop oor:name="CurrentLayout" oor:type="xs:string">
+ <info><desc>Name of the current layout. An empty name or the
+ string "DefaultLayout" specify the default layout.</desc></info>
+ <value>DefaultLayout</value>
+ </prop>
+ <set oor:name="Accessibility" oor:node-type="PresenterString">
+ <info><desc>Strings that are used make the presenter console accessible.</desc></info>
+ </set>
+ <prop oor:name="InitialViewMode" oor:type="xs:int">
+ <info><desc>The view mode on start up of the extension. Valid values are 0 for the Preview-only mode, 1 for the notes view, 2 for the slide overview.</desc></info>
+ <value>0</value>
+ </prop>
+ </group>
+ </component>
+</oor:component-schema>
diff --git a/sdext/util/makefile.pmk b/sdext/util/makefile.pmk
new file mode 100644
index 000000000000..0bfd6ddce0f1
--- /dev/null
+++ b/sdext/util/makefile.pmk
@@ -0,0 +1,37 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+XSLDIR=$(SOLARXMLDIR)$/processing
+XCSROOT=$(SOLARXMLDIR)
+ABSXCSROOT=$(SOLARXMLDIR)
+DTDDIR=$(SOLARXMLDIR)
+PROCESSOUT=$(MISC)$/$(EXTNAME)
+PROCESSORDIR=$(SOLARBINDIR)
+
+# no validation by inspector class
+NO_INSPECTION=TRUE
+
diff --git a/swext/makefile.pmk b/swext/makefile.pmk
new file mode 100644
index 000000000000..8e43f2f723f0
--- /dev/null
+++ b/swext/makefile.pmk
@@ -0,0 +1,37 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+XSLDIR=$(SOLARXMLDIR)$/processing
+XCSROOT=$(SOLARXMLDIR)
+ABSXCSROOT=$(SOLARXMLDIR)
+DTDDIR=$(SOLARXMLDIR)
+PROCESSOUT=$(MISC)$/$(CUSTID)
+PROCESSORDIR=$(SOLARBINDIR)
+
+# no validation by inspector class
+NO_INSPECTION=TRUE
+
diff --git a/swext/mediawiki/build.xml b/swext/mediawiki/build.xml
new file mode 100644
index 000000000000..b121985711db
--- /dev/null
+++ b/swext/mediawiki/build.xml
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************ -->
+<project default="all">
+ <target name="init">
+ <property environment="env"/>
+ <property name="ext" value="oxt"/>
+ <property name="officeroot" value="/export/home/mav/OFFICES/OOG680/m5_netbeans_pro"/>
+ <property name="office.home" value="${officeroot}"/>
+
+ <!-- fallbacks for locations, when solenv is not used -->
+ <condition property="target" value="wikiaddon">
+ <not><isset property="target"/></not>
+ </condition>
+ <condition property="out" value="./build">
+ <not><isset property="out"/></not>
+ </condition>
+ <condition property="solar.jar" value="${officeroot}/program/classes">
+ <not><isset property="solar.jar"/></not>
+ </condition>
+
+ <!-- locations used throughout the build -->
+ <property name="name" value="wiki-publisher"/>
+ <property name="dist" value="${out}/bin"/>
+ <property name="classes" value="${out}/class"/>
+ <property name="classes.test" value="${out}/class-test"/>
+ <property name="officeclasses" value="${solar.jar}"/>
+
+ <!-- build options -->
+ <property name="sourcelevel" value="1.4"/>
+ <property name="verbose" value="false"/>
+ <property name="debug" value="${antdebug}"/>
+
+ <!-- build classpath -->
+ <path id="classpath">
+ <pathelement location="${officeclasses}/juh.jar"/>
+ <pathelement location="${officeclasses}/jurt.jar"/>
+ <pathelement location="${officeclasses}/ridl.jar"/>
+ <pathelement location="${officeclasses}/unoil.jar"/>
+ <!-- 3rd party libs -->
+ <pathelement location="${commons-codec-jar}"/>
+ <pathelement location="${commons-httpclient-jar}"/>
+ <pathelement location="${commons-lang-jar}"/>
+ <pathelement location="${commons-logging-jar}"/>
+ </path>
+
+ <!-- create output directories -->
+ <mkdir dir="${classes}"/>
+ <mkdir dir="${classes.test}"/>
+ <mkdir dir="${dist}"/>
+ </target>
+
+ <target name="compile" depends="init">
+ <javac debug="${debug}" debuglevel="lines,vars,source" destdir="${classes}" classpathref="classpath"
+ source="${sourcelevel}" verbose="${verbose}">
+ <src path="src"/>
+ </javac>
+ </target>
+
+ <target name="xcucheck" depends="init">
+ <condition property="no.merge.present">
+ <not>
+ <available file="${out}/misc/${target}/merge/org/openoffice/Office/Custom/WikiExtension.xcu" type="file"/>
+ </not>
+ </condition>
+ </target>
+
+ <target name="xcumerge" depends="xcucheck, init" if="no.merge.present">
+ <copy todir="${out}/misc/${target}/merge">
+ <fileset dir="${out}/misc/${target}/registry/data" includes="**/*.xcu" casesensitive="yes"/>
+ </copy>
+ </target>
+
+ <target name="jar" depends="compile, init">
+ <jar basedir="${classes}" compress="true" jarfile="${dist}/${target}.jar">
+ <manifest>
+ <!-- FIXME: Set Class-Path correctly for the system case !-->
+ <attribute name="Class-Path" value="commons-codec-1.3.jar commons-lang-2.3.jar commons-httpclient-3.1.jar commons-logging-1.1.1.jar"/>
+ <attribute name="RegistrationClassName" value="com.sun.star.wiki.WikiEditorImpl"/>
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="tmpdir" depends="xcumerge, jar, init">
+ <copy todir="${out}/misc/${target}/package_tmp" overwrite="true" encoding="UTF-8">
+ <fileset dir="${out}/misc/${target}" includes="description.xml" casesensitive="yes"/>
+ <fileset dir="${out}/misc/${target}/registry/schema/org/openoffice/Office/Custom" includes="*.xcs" casesensitive="yes"/>
+ <fileset dir="${out}/misc/${target}/registry/data/org/openoffice/Office" includes="ProtocolHandler.xcu,Paths.xcu" casesensitive="yes"/>
+ <fileset dir="${out}/misc/${target}/merge/org/openoffice/Office/Custom" includes="*.xcu" casesensitive="yes"/>
+ <fileset dir="${out}/misc/${target}/merge/org/openoffice/Office" includes="*.xcu" casesensitive="yes"/>
+ <!-- FIXME: currently the build xcu files can not be used since the tag containing x-default attribute is thrown away, issue 99378
+ <fileset dir="${out}/misc/${target}/merge/org/openoffice/TypeDetection" includes="*.xcu" casesensitive="yes"/>
+ -->
+ <fileset dir="src/registry/data/org/openoffice/TypeDetection" includes="*.xcu" casesensitive="yes"/>
+ <fileset dir="${out}/misc/${target}" includes="help/component.txt" casesensitive="yes"/>
+ <filterset>
+ <filter token="WIKIEXTENSIONPRODUCTNAME" value="Wiki Publisher"/>
+ <filter token="WIKIEXTENSIONID" value="com.sun.wiki-publisher"/>
+ <filter token="WIKIEXTENSIONFILENAME" value="${name}"/>
+ </filterset>
+ </copy>
+ </target>
+
+ <target name="uno-package" depends="tmpdir, xcumerge, jar, init">
+ <delete file="${dist}/${name}.${ext}"/>
+ <zip destfile="${dist}/${name}.${ext}">
+ <fileset dir="${out}/misc/${target}/package_tmp" casesensitive="yes"/>
+ <fileset dir="${dist}" includes="${target}.jar" casesensitive="yes"/>
+ <fileset file="${commons-codec-jar}" casesensitive="yes"/>
+ <fileset file="${commons-httpclient-jar}" casesensitive="yes"/>
+ <fileset file="${commons-lang-jar}" casesensitive="yes"/>
+ <fileset file="${commons-logging-jar}" casesensitive="yes"/>
+ <zipfileset file="src/filter/odt2mediawiki.xsl" casesensitive="yes" fullpath="filter/odt2mediawiki.xsl"/>
+ <zipfileset file="src/filter/mediawiki.ott" casesensitive="yes" fullpath="templates/MediaWiki/mediawiki.ott"/>
+ <zipfileset dir="${solar.bin}/xslt/export/xsltml" casesensitive="yes" prefix="filter/math"/>
+ <zipfileset dir="src" includes="uno-extension-manifest.xml" casesensitive="yes" fullpath="META-INF/manifest.xml"/>
+ <zipfileset dir="dialogs" includes="**/*.xdl,**/*.xba,**/*.xlb" casesensitive="yes" prefix="WikiEditor"/>
+ <zipfileset dir="${out}/misc/${target}/help" includes="**/*.idxl/*,**/*.*_,**/*.jar" casesensitive="yes" prefix="help"/>
+ <zipfileset dir="${out}/misc/${target}/help" includes="**/*.xhp" casesensitive="yes" prefix="help"/>
+ <zipfileset dir="src" includes="THIRDPARTYLICENSEREADME.html" casesensitive="yes" prefix="license"/>
+ </zip>
+ </target>
+
+ <target name="development-package" depends="jar, init">
+ <delete file="${dist}/${target}_develop.zip"/>
+ <zip destfile="${dist}/${target}_develop.zip">
+ <zipfileset dir="${dist}" includes="${target}.jar" casesensitive="yes" filemode="664" dirmode="775"/>
+ <zipfileset dir="${out}/misc/${target}" includes="description.xml" casesensitive="yes" filemode="664" dirmode="775"/>
+ <zipfileset dir="${out}/misc/${target}/registry/schema/org/openoffice/Office/Custom" includes="*.xcs" casesensitive="yes" filemode="664" dirmode="775"/>
+ <zipfileset dir="${out}/misc/${target}/registry/data/org/openoffice/Office" includes="ProtocolHandler.xcu,Paths.xcu" casesensitive="yes" filemode="664" dirmode="775"/>
+ <zipfileset dir="${out}/misc/${target}/merge/org/openoffice/Office/Custom" includes="*.xcu" casesensitive="yes" filemode="664" dirmode="775"/>
+ <zipfileset dir="${out}/misc/${target}/merge/org/openoffice/Office" includes="*.xcu" excludes="**/ProtocolHandler.xcu,**/Paths.xcu" casesensitive="yes" filemode="664" dirmode="775"/>
+ <!-- FIXME: currently the build xcu files can not be used since the tag containing x-default attribute is thrown away, issue 99378
+ <fileset dir="${out}/misc/${target}/merge/org/openoffice/TypeDetection" includes="*.xcu" casesensitive="yes" filemode="664" dirmode="775"/>
+ -->
+ <zipfileset dir="src/registry/data/org/openoffice/TypeDetection" includes="*.xcu" casesensitive="yes" filemode="664" dirmode="775"/>
+ <zipfileset file="src/filter/odt2mediawiki.xsl" casesensitive="yes" fullpath="filter/odt2mediawiki.xsl" filemode="664" dirmode="775"/>
+ <zipfileset file="src/filter/mediawiki.ott" casesensitive="yes" fullpath="templates/MediaWiki/mediawiki.ott" filemode="664" dirmode="775"/>
+ <zipfileset dir="${out}/misc/${target}/help" includes="component.txt" casesensitive="yes" prefix="help" filemode="664" dirmode="775"/>
+ <zipfileset dir="${out}/misc/${target}_merge/help" includes="**/*.xhp" casesensitive="yes" prefix="help" filemode="664" dirmode="775"/>
+ <zipfileset dir="dialogs" includes="**/*.xdl,**/*.xba,**/*.xlb" casesensitive="yes" prefix="WikiEditor" filemode="664" dirmode="775"/>
+ <zipfileset dir="src" includes="uno-extension-manifest.xml" casesensitive="yes" fullpath="META-INF/manifest.xml" filemode="664" dirmode="775"/>
+ <zipfileset dir="src" includes="THIRDPARTYLICENSEREADME.html" casesensitive="yes" prefix="license" filemode="664" dirmode="775"/>
+ </zip>
+ </target>
+
+ <target depends="init, jar, uno-package, development-package" description="Build everything." name="all">
+ <echo message="${name} built."/>
+ </target>
+
+ <target depends="init" description="Clean all build products." name="clean">
+ <delete dir="${classes}/com/sun/star/wiki"/>
+ <delete dir="${out}/misc/${target}"/>
+ <delete dir="${dist}/${target}.jar"/>
+ <delete dir="${dist}/${name}.${ext}"/>
+ <delete dir="${dist}/${target}_develop.zip"/>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <target name="uno-deploy" description="Deploys UNO extension package" depends="uno-package">
+ <echo message="deploying UNO extension package ..."/>
+ <echo message="${office.unopkg} add -f ${uno.package.name}"/>
+ <exec executable="${office.unopkg}" dir="${office.program.dir}" failonerror="true">
+ <arg value="add"/>
+ <arg value="-f"/>
+ <arg file="${uno.package.name}"/>
+ </exec>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <target name="uno-debug" description="Debugss UNO extension package in Target Office" depends="uno-package">
+ <!-- security fail for executing this without netbeans -->
+ <fail unless="netbeans.home">This target can only run inside the NetBeans IDE.</fail>
+ <!-- start debugger and get connection address jpda.address -->
+ <nbjpdastart name="Debug Office" addressproperty="jpda.address" transport="dt_socket">
+ <classpath path="${build.classes.dir}"/>
+ <sourcepath path="${src.dir}"/>
+ </nbjpdastart>
+ <!-- register component in temporaary user installation -->
+ <echo message="debugging UNO extension package ..."/>
+ <echo message="wait until preparation is finished."/>
+ <echo message=" deploying UNO extension package for debugging ..."/>
+ <echo message=" ${office.unopkg} add -f ${uno.package.name}"/>
+ <exec executable="${office.unopkg}" dir="${office.program.dir}">
+ <arg value="add"/>
+ <arg value="-f"/>
+ <arg file="${uno.package.name}"/>
+ <env key="UserInstallation" value="${office.debug.user.directory}"/>
+ </exec>
+ <!-- start Office with debug Java and user installation -->
+ <echo message=" starting the Office with ..."/>
+ <echo message=" user installation: ${office.debug.user.directory}"/>
+ <echo message=" debug options: &quot;-Xdebug&quot; &quot;-Xrunjdwp:transport=dt_socket,address=${jpda.address}&quot;"/>
+ <echo message=" ${office.soffice}"/>
+ <echo message="preparation finished."/>
+ <exec executable="${office.soffice}" dir="${office.program.dir}" failonerror="true">
+ <env key="UserInstallation" value="${office.debug.user.directory}"/>
+ <env key="JAVA_TOOL_OPTIONS" value="&quot;-Xdebug&quot; &quot;-Xrunjdwp:transport=dt_socket,address=${jpda.address}&quot;"/>
+ </exec>
+ </target>
+</project>
diff --git a/swext/mediawiki/dialogs/EditSetting.xdl b/swext/mediawiki/dialogs/EditSetting.xdl
new file mode 100644
index 000000000000..fb5a103f5b7b
--- /dev/null
+++ b/swext/mediawiki/dialogs/EditSetting.xdl
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************ -->
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="EditSetting" dlg:tab-index="1" dlg:left="180" dlg:top="89" dlg:width="198" dlg:height="125" dlg:closeable="true" dlg:moveable="true" dlg:title="TOREPLACE" dlg:help-url="vnd.com.sun.star.wiki:account">
+ <dlg:bulletinboard>
+ <dlg:text dlg:id="UrlLabel" dlg:tab-index="3" dlg:left="6" dlg:top="22" dlg:width="50" dlg:height="8" dlg:value="URL" dlg:tabstop="false"/>
+ <dlg:textfield dlg:id="UrlField" dlg:tab-index="4" dlg:left="58" dlg:top="19" dlg:width="122" dlg:height="12" dlg:help-url="com.sun.star.wiki.MediaWiki.EditSetting.UrlField"/>
+ <dlg:textfield dlg:id="UsernameField" dlg:tab-index="6" dlg:left="58" dlg:top="52" dlg:width="122" dlg:height="12" dlg:help-url="com.sun.star.wiki.MediaWiki.EditSetting.UsernameField"/>
+ <dlg:textfield dlg:id="PasswordField" dlg:tab-index="8" dlg:left="58" dlg:top="68" dlg:width="122" dlg:height="12" dlg:help-url="com.sun.star.wiki.MediaWiki.EditSetting.PasswordField" dlg:echochar="*"/>
+ <dlg:button dlg:id="OkButton" dlg:tab-index="11" dlg:left="89" dlg:top="106" dlg:width="50" dlg:height="14" dlg:default="true" dlg:value="OK">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.UNO:OK" script:language="UNO"/>
+ </dlg:button>
+ <dlg:button dlg:id="CancelButton" dlg:tab-index="12" dlg:left="143" dlg:top="106" dlg:width="50" dlg:height="14" dlg:button-type="cancel"/>
+ <dlg:button dlg:id="HelpButton" dlg:tab-index="10" dlg:left="5" dlg:top="106" dlg:width="50" dlg:height="14" dlg:button-type="help"/>
+ <dlg:text dlg:id="UsernameLabel" dlg:tab-index="5" dlg:left="6" dlg:top="53" dlg:width="46" dlg:height="8" dlg:value="User Name" dlg:tabstop="false"/>
+ <dlg:text dlg:id="PasswordLabel" dlg:tab-index="7" dlg:left="6" dlg:top="69" dlg:width="46" dlg:height="8" dlg:value="Password" dlg:tabstop="false"/>
+ <dlg:checkbox dlg:id="SaveBox" dlg:tab-index="9" dlg:left="58" dlg:top="84" dlg:width="116" dlg:height="8" dlg:help-url="com.sun.star.wiki.MediaWiki.EditSetting.SaveBox" dlg:value="Store password" dlg:checked="false"/>
+ <dlg:fixedline dlg:id="BottomLine" dlg:tab-index="0" dlg:left="-4" dlg:top="97" dlg:width="205" dlg:height="8"/>
+ <dlg:fixedline dlg:id="AccountLine" dlg:tab-index="1" dlg:left="3" dlg:top="38" dlg:width="193" dlg:height="8" dlg:value="Account"/>
+ <dlg:fixedline dlg:id="WikiLine" dlg:tab-index="2" dlg:left="3" dlg:top="5" dlg:width="193" dlg:height="8" dlg:value="Wiki"/>
+ </dlg:bulletinboard>
+</dlg:window>
diff --git a/swext/mediawiki/dialogs/Module1.xba b/swext/mediawiki/dialogs/Module1.xba
new file mode 100644
index 000000000000..c54705ca51cd
--- /dev/null
+++ b/swext/mediawiki/dialogs/Module1.xba
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+'
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+ ************************************************************************ -->
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Module1" script:language="StarBasic">REM ***** BASIC *****
+
+Sub Main
+
+End Sub</script:module>
diff --git a/swext/mediawiki/dialogs/SendToMediaWiki.xdl b/swext/mediawiki/dialogs/SendToMediaWiki.xdl
new file mode 100644
index 000000000000..cd690c5f23ec
--- /dev/null
+++ b/swext/mediawiki/dialogs/SendToMediaWiki.xdl
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************ -->
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="SendToMediaWiki" dlg:left="62" dlg:top="57" dlg:width="242" dlg:height="164" dlg:closeable="true" dlg:moveable="true" dlg:title="TOREPLACE" dlg:help-url="vnd.com.sun.star.wiki:sendDialog">
+ <dlg:bulletinboard>
+ <dlg:text dlg:id="Label1" dlg:tab-index="0" dlg:left="5" dlg:top="8" dlg:width="65" dlg:height="10" dlg:value="MediaWiki Server"/>
+ <dlg:text dlg:id="Label2" dlg:tab-index="3" dlg:left="11" dlg:top="38" dlg:width="59" dlg:height="10" dlg:value="Title"/>
+ <dlg:text dlg:id="Label3" dlg:tab-index="5" dlg:left="11" dlg:top="57" dlg:width="59" dlg:height="10" dlg:value="Summary"/>
+ <dlg:menulist dlg:id="WikiList" dlg:tab-index="1" dlg:left="75" dlg:top="6" dlg:width="116" dlg:height="14" dlg:spin="true" dlg:help-url="com.sun.star.wiki.MediaWiki.SendToMediaWiki.WikiList">
+ <script:event script:event-name="on-itemstatechange" script:macro-name="vnd.sun.star.UNO:WikiListChange" script:language="UNO"/>
+ </dlg:menulist>
+ <dlg:combobox dlg:id="ArticleText" dlg:tab-index="4" dlg:left="75" dlg:top="36" dlg:width="160" dlg:height="14" dlg:spin="true" dlg:help-url="com.sun.star.wiki.MediaWiki.SendToMediaWiki.ArticleText">
+ <script:event script:event-name="on-textchange" script:macro-name="vnd.sun.star.UNO:ArticleTextChange" script:language="UNO"/>
+ </dlg:combobox>
+ <dlg:textfield dlg:id="CommentText" dlg:tab-index="6" dlg:left="75" dlg:top="55" dlg:width="160" dlg:height="48" dlg:multiline="true" dlg:help-url="com.sun.star.wiki.MediaWiki.SendToMediaWiki.CommentText"/>
+ <dlg:button dlg:id="AddButton" dlg:tab-index="2" dlg:left="195" dlg:top="6" dlg:width="40" dlg:height="14" dlg:value="Add..." dlg:help-url="com.sun.star.wiki.MediaWiki.SendToMediaWiki.AddButton">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.UNO:AddWiki" script:language="UNO"/>
+ </dlg:button>
+ <dlg:checkbox dlg:id="MinorCheck" dlg:tab-index="7" dlg:left="75" dlg:top="109" dlg:width="141" dlg:height="10" dlg:value="Minor edit" dlg:checked="false" dlg:help-url="com.sun.star.wiki.MediaWiki.SendToMediaWiki.MinorCheck"/>
+ <dlg:checkbox dlg:id="BrowserCheck" dlg:tab-index="8" dlg:left="75" dlg:top="122" dlg:width="141" dlg:height="10" dlg:value="Show in browser" dlg:checked="false" dlg:help-url="com.sun.star.wiki.MediaWiki.SendToMediaWiki.BrowserCheck"/>
+ <dlg:fixedline dlg:id="FixedLine1" dlg:tab-index="9" dlg:left="-2" dlg:top="138" dlg:width="246" dlg:height="4"/>
+ <dlg:button dlg:id="CancelButton" dlg:tab-index="10" dlg:left="187" dlg:top="145" dlg:width="50" dlg:height="14" dlg:button-type="cancel"/>
+ <dlg:button dlg:id="SendButton" dlg:tab-index="11" dlg:disabled="true" dlg:left="134" dlg:top="145" dlg:width="50" dlg:height="14" dlg:default="true" dlg:value="Send" dlg:help-url="com.sun.star.wiki.MediaWiki.SendToMediaWiki.SendButton">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.UNO:Send" script:language="UNO"/>
+ </dlg:button>
+ <dlg:button dlg:id="HelpButton" dlg:tab-index="12" dlg:left="5" dlg:top="145" dlg:width="50" dlg:height="14" dlg:button-type="help"/>
+ <dlg:fixedline dlg:id="FixedLine2" dlg:tab-index="13" dlg:left="5" dlg:top="25" dlg:width="234" dlg:height="6" dlg:value="MediaWiki"/>
+ </dlg:bulletinboard>
+</dlg:window>
diff --git a/swext/mediawiki/dialogs/Settings.xdl b/swext/mediawiki/dialogs/Settings.xdl
new file mode 100644
index 000000000000..adf818a95611
--- /dev/null
+++ b/swext/mediawiki/dialogs/Settings.xdl
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************ -->
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="Settings" dlg:left="142" dlg:top="89" dlg:width="260" dlg:height="185" dlg:closeable="true" dlg:withtitlebar="false" dlg:help-url="vnd.com.sun.star.wiki:settings">
+ <dlg:bulletinboard>
+ <dlg:button dlg:id="AddButton" dlg:tab-index="1" dlg:left="204" dlg:top="20" dlg:width="50" dlg:height="14" dlg:help-url="com.sun.star.wiki.MediaWiki.Settings.AddButton" dlg:value="Add...">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.UNO:Add" script:language="UNO"/>
+ </dlg:button>
+ <dlg:button dlg:id="EditButton" dlg:tab-index="2" dlg:left="204" dlg:top="36" dlg:width="50" dlg:height="14" dlg:help-url="com.sun.star.wiki.MediaWiki.Settings.EditButton" dlg:value="Edit...">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.UNO:Edit" script:language="UNO"/>
+ </dlg:button>
+ <dlg:button dlg:id="RemoveButton" dlg:tab-index="3" dlg:left="204" dlg:top="52" dlg:width="50" dlg:height="14" dlg:help-url="com.sun.star.wiki.MediaWiki.Settings.RemoveButton" dlg:value="Remove">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.UNO:Remove" script:language="UNO"/>
+ </dlg:button>
+ <dlg:menulist dlg:id="WikiList" dlg:tab-index="0" dlg:left="9" dlg:top="20" dlg:width="189" dlg:height="120" dlg:help-url="com.sun.star.wiki.MediaWiki.Settings.WikiList" dlg:multiselection="true">
+ <script:event script:event-name="on-itemstatechange" script:macro-name="vnd.sun.star.UNO:ListStatus" script:language="UNO"/>
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.UNO:ListEdit" script:language="UNO"/>
+ </dlg:menulist>
+ <dlg:fixedline dlg:id="FixedLine1" dlg:tab-index="1" dlg:left="6" dlg:top="6" dlg:width="248" dlg:height="8" dlg:help-text="" dlg:value="Wiki Publisher"/>
+ </dlg:bulletinboard>
+</dlg:window>
diff --git a/swext/mediawiki/dialogs/dialog.xlb b/swext/mediawiki/dialogs/dialog.xlb
new file mode 100644
index 000000000000..3dade31769d5
--- /dev/null
+++ b/swext/mediawiki/dialogs/dialog.xlb
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************ -->
+<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
+<library:library xmlns:library="http://openoffice.org/2000/library" library:name="WikiEditor" library:readonly="false" library:passwordprotected="false">
+ <library:element library:name="SendToMediaWiki"/>
+ <library:element library:name="Settings"/>
+ <library:element library:name="EditSetting"/>
+</library:library>
diff --git a/swext/mediawiki/dialogs/script.xlb b/swext/mediawiki/dialogs/script.xlb
new file mode 100644
index 000000000000..5ca371402a91
--- /dev/null
+++ b/swext/mediawiki/dialogs/script.xlb
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************ -->
+<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
+<library:library xmlns:library="http://openoffice.org/2000/library" library:name="WikiEditor" library:readonly="false" library:passwordprotected="false">
+ <library:element library:name="Module1"/>
+</library:library>
diff --git a/swext/mediawiki/help/component.txt b/swext/mediawiki/help/component.txt
new file mode 100755
index 000000000000..c5ac1de36066
--- /dev/null
+++ b/swext/mediawiki/help/component.txt
@@ -0,0 +1 @@
+The @WIKIEXTENSIONPRODUCTNAME@ enables you to create Wiki articles on MediaWiki servers without having to know the syntax of the MediaWiki markup language. Publish your new and existing documents transparently with the Writer to a wiki page.
diff --git a/swext/mediawiki/help/makefile.mk b/swext/mediawiki/help/makefile.mk
new file mode 100644
index 000000000000..1804ec2b668a
--- /dev/null
+++ b/swext/mediawiki/help/makefile.mk
@@ -0,0 +1,87 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=swext
+TARGET=$(PRJNAME)_help
+
+.INCLUDE : settings.mk
+
+.IF "$(WITH_LANG)"!=""
+# workaround for the problem in help, the help uses en instead of en-US
+MEDIAWIKI_LANG=$(uniq en $(alllangiso))
+aux_alllangiso:=$(MEDIAWIKI_LANG)
+.ELSE # "$(WITH_LANG)"!=""
+aux_alllangiso:=$(defaultlangiso)
+MEDIAWIKI_LANG=$(uniq en $(alllangiso))
+.ENDIF # "$(WITH_LANG)"!=""
+
+.IF "$(ENABLE_MEDIAWIKI)" != "YES"
+all:
+ @echo Building mediawiki disabled...
+.ELSE # "$(ENABLE_MEDIAWIKI)" != "YES"
+
+PACKAGE=com.sun.wiki-publisher
+
+OUT_MEDIAWIKI:=$(MISC)$/mediawiki
+
+LINKNAME:=help
+XHPLINKSRC:=$(OUT_MEDIAWIKI)/help
+
+XHPDEST=$(OUT_MEDIAWIKI)_merge/help
+
+XHPFILES= \
+ wiki.xhp\
+ wikiaccount.xhp\
+ wikiformats.xhp\
+ wikisend.xhp\
+ wikisettings.xhp
+
+LINKLINKFILES= \
+ $(PACKAGE)/{$(XHPFILES)}
+
+# define with own language set
+HLANGXHPFILES=$(foreach,i,$(XHPFILES) $(foreach,j,$(MEDIAWIKI_LANG) $(XHPDEST)$/$j$/$(PACKAGE)$/$(i:f)))
+
+.INCLUDE : target.mk
+.INCLUDE : tg_help.mk
+.INCLUDE : extension_helplink.mk
+
+ALLTAR : $(OUT_MEDIAWIKI)/help/component.txt
+
+$(OUT_MEDIAWIKI)/help/component.txt : component.txt
+ @-$(MKDIRHIER) $(@:d)
+ $(COMMAND_ECHO)$(COPY) component.txt $@
+
+$(OUT_MEDIAWIKI)/help/%.xhp : $(OUT_MEDIAWIKI)_merge/help/%.xhp
+ @-$(MKDIRHIER) $(@:d)
+ $(COMMAND_ECHO)cat $< | sed -e 's/@WIKIEXTENSIONPRODUCTNAME@/Wiki Publisher/g' | \
+ sed 's/@WIKIEXTENSIONID@/com.sun.wiki-publisher/g' | \
+ sed 's/@WIKIEXTENSIONFILENAME@/wiki-publisher/g' > $@
+
+.ENDIF # "$(ENABLE_MEDIAWIKI)" != "YES"
+
diff --git a/swext/mediawiki/help/wiki.xhp b/swext/mediawiki/help/wiki.xhp
new file mode 100644
index 000000000000..22f97274814d
--- /dev/null
+++ b/swext/mediawiki/help/wiki.xhp
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+
+<helpdocument version="1.0">
+<meta>
+<topic id="comsunstarwikiMediaWikiwikixml" indexer="include" status="PUBLISH">
+<title id="tit" xml-lang="en-US">@WIKIEXTENSIONPRODUCTNAME@</title>
+<filename>/@WIKIEXTENSIONID@/wiki.xhp</filename>
+</topic>
+<history>
+<created date="2008-02-08T12:13:25"/>
+<lastedited date="2008-02-08T14:28:08"/>
+</history>
+</meta>
+<body>
+<bookmark xml-lang="en-US" branch="hid/vnd.com.sun.star.wiki:aboutbox" id="bm_id3159252" localize="false"/>
+<bookmark xml-lang="en-US" branch="index" id="bm_id3154408"><bookmark_value>Wiki;@WIKIEXTENSIONPRODUCTNAME@</bookmark_value>
+<bookmark_value>@WIKIEXTENSIONPRODUCTNAME@</bookmark_value>
+<bookmark_value>extensions;MediaWiki</bookmark_value>
+</bookmark>
+<paragraph role="heading" id="hd_id5993530" xml-lang="en-US" level="1" l10n="NEW">@WIKIEXTENSIONPRODUCTNAME@</paragraph>
+<paragraph role="paragraph" id="par_id9647511" xml-lang="en-US" l10n="NEW"><ahelp hid=".">By using the @WIKIEXTENSIONPRODUCTNAME@ you can upload your current Writer text document to a MediaWiki server. After uploading, all Wiki users can read your document on the Wiki.</ahelp></paragraph>
+<bookmark xml-lang="en-US" branch="hid/vnd.com.sun.star.wiki:send" id="bm_id3159253" localize="false"/>
+<paragraph role="paragraph" id="par_id6468703" xml-lang="en-US" l10n="NEW"><ahelp hid=".">Choose <item type="menuitem">File - Send - To MediaWiki</item> to upload the current Writer document to a MediaWiki server.</ahelp></paragraph>
+<paragraph role="heading" id="hd_id4554582" xml-lang="en-US" level="2" l10n="NEW">System Requirements</paragraph>
+<list type="unordered">
+<listitem>
+<paragraph role="paragraph" id="par_id2597430" xml-lang="en-US" l10n="NEW">StarOffice/StarSuite 9</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id8430738" xml-lang="en-US" l10n="NEW">OpenOffice.org 3.0</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id9340495" xml-lang="en-US" l10n="NEW">Java Runtime Environment 1.4</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id7387615" xml-lang="en-US" l10n="NEW">A Wiki account on a supported <link href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</link> server</paragraph>
+</listitem>
+</list>
+<paragraph role="heading" id="hd_id8047120" xml-lang="en-US" level="2" l10n="NEW">Installing @WIKIEXTENSIONPRODUCTNAME@</paragraph>
+<paragraph role="paragraph" id="par_id4277169" xml-lang="en-US" l10n="NEW">Before you install the @WIKIEXTENSIONPRODUCTNAME@, ensure that %PRODUCTNAME uses a Java Runtime Environment (JRE). To check the status of the JRE, choose <item type="menuitem">Tools - Options - %PRODUCTNAME - Java</item>. Ensure that "Use a Java runtime environment" is marked and that a Java runtime folder is selected in the big listbox. If no JRE was activated, then activate a JRE 1.4 or later and restart %PRODUCTNAME.</paragraph>
+<paragraph role="heading" id="hd_id567339" xml-lang="en-US" level="3" l10n="NEW">To Install the @WIKIEXTENSIONPRODUCTNAME@</paragraph>
+<list type="ordered">
+<listitem>
+<paragraph role="paragraph" id="par_id1732230" xml-lang="en-US" l10n="NEW">In a Writer window, choose <item type="menuitem">Tools - Extension Manager</item>.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id4338511" xml-lang="en-US" l10n="NEW">In the Extension Manager dialog, click Add.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id5882442" xml-lang="en-US" l10n="NEW">Locate the @WIKIEXTENSIONFILENAME@.oxt file, click Open, and then click Close. </paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id4008911" xml-lang="en-US" l10n="NEW">Close %PRODUCTNAME, and close also the Quickstarter if enabled.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id265511" xml-lang="en-US" l10n="NEW">Restart the software, open a text document, then choose <item type="menuitem">Tools - Options - Internet - MediaWiki</item> to enter your Wiki settings. See "To Connect To a Wiki" below.</paragraph>
+</listitem>
+</list>
+<paragraph role="heading" id="hd_id3569444" xml-lang="en-US" level="3" l10n="NEW">To Remove the @WIKIEXTENSIONPRODUCTNAME@</paragraph>
+<list type="ordered">
+<listitem>
+<paragraph role="paragraph" id="par_id2655110" xml-lang="en-US" l10n="NEW">In a Writer window, choose <item type="menuitem">Tools - Extension Manager</item>.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id9504379" xml-lang="en-US" l10n="NEW">Click the plus sign (+) in front of My Extensions.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id8431348" xml-lang="en-US" l10n="NEW">Select the extension, click Remove, and then click Close.</paragraph>
+</listitem>
+</list>
+<paragraph role="heading" id="hd_id5316019" xml-lang="en-US" level="2" l10n="NEW">To Connect to a Wiki</paragraph>
+<paragraph role="paragraph" id="par_id2381969" xml-lang="en-US" l10n="NEW">Note: You can store your user name and password for all respective dialogs inside %PRODUCTNAME. The password will be stored in a secure way, where access is maintained by a master password. To enable the master password, choose <item type="menuitem">Tools - Options - %PRODUCTNAME - Security</item>.</paragraph>
+<paragraph role="paragraph" id="par_id3751640" xml-lang="en-US" l10n="NEW">Note: If you connect to the web using a proxy server, enter the proxy information to <item type="menuitem">Tools - Options - Internet - Proxy</item>, and restart the software.</paragraph>
+<list type="ordered">
+<listitem>
+<paragraph role="paragraph" id="par_id9533677" xml-lang="en-US" l10n="NEW">Open a Writer document, and choose <item type="menuitem">Tools - Options - Internet - MediaWiki</item>.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id368968" xml-lang="en-US" l10n="NEW">In the <link href="@WIKIEXTENSIONID@/wikisettings.xhp">Options</link> dialog, click Add.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id6962187" xml-lang="en-US" l10n="NEW">In the <link href="@WIKIEXTENSIONID@/wikiaccount.xhp">MediaWiki</link> dialog, enter the account information for the Wiki.</paragraph>
+</listitem>
+</list>
+<list type="ordered">
+<listitem>
+<paragraph role="paragraph" id="par_id5328836" xml-lang="en-US" l10n="NEW">In the URL textbox, enter the address of a Wiki that you want to connect to.</paragraph>
+<paragraph role="paragraph" id="par_id389416" xml-lang="en-US" l10n="NEW">You can copy the URL from a web browser and paste it into the textbox.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id5906552" xml-lang="en-US" l10n="NEW">In the Username box, enter your user ID for your Wiki account.</paragraph>
+<paragraph role="paragraph" id="par_id9297158" xml-lang="en-US" l10n="NEW">If the Wiki allows anonymous write access, you can leave the Username and Password boxes empty.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id8869594" xml-lang="en-US" l10n="NEW">In the Password box, enter the password for your Wiki account, then click OK.</paragraph>
+</listitem>
+</list>
+<paragraph role="paragraph" id="par_id292062" xml-lang="en-US" l10n="NEW">Optionally enable "Save password" to save the password between sessions. A master password is used to maintain access to all saved passwords. Choose <item type="menuitem">Tools - Options - %PRODUCTNAME - Security</item> to enable the master password. "Save password" is unavailable when the master password is not enabled.</paragraph>
+<paragraph role="heading" id="hd_id7044892" xml-lang="en-US" level="2" l10n="NEW">To Create a New Wiki Page</paragraph>
+<list type="ordered">
+<listitem>
+<paragraph role="paragraph" id="par_id3514206" xml-lang="en-US" l10n="NEW">Open a Writer document.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id944853" xml-lang="en-US" l10n="NEW">Write the content of the Wiki page. You can use formatting like text formats, headings, footnotes, and more. See the <link href="@WIKIEXTENSIONID@/wikiformats.xhp">list of supported formats</link>.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id4566484" xml-lang="en-US" l10n="NEW">Choose <item type="menuitem">File - Send - To MediaWiki</item>.</paragraph>
+</listitem>
+<listitem>
+<paragraph role="paragraph" id="par_id228278" xml-lang="en-US" l10n="NEW">In the <link href="@WIKIEXTENSIONID@/wikisend.xhp">Send to MediaWiki</link> dialog, specify the settings for your entry.</paragraph>
+</listitem>
+</list>
+<paragraph role="paragraph" id="par_id2564165" xml-lang="en-US" l10n="NEW">
+<emph>MediaWiki server</emph>: Select the Wiki.</paragraph>
+<paragraph role="paragraph" id="par_id5566576" xml-lang="en-US" l10n="NEW">
+<emph>Title</emph>: Type the title of your page. Type the title of an existing page to overwrite the page with your current text document. Type a new title to create a new page on the Wiki.</paragraph>
+<paragraph role="paragraph" id="par_id9688711" xml-lang="en-US" l10n="NEW">
+<emph>Summary</emph>: Enter an optional short summary of your page.</paragraph>
+<paragraph role="paragraph" id="par_id4123661" xml-lang="en-US" l10n="NEW">
+<emph>This is a minor edit</emph>: Check this box to mark the uploaded page as a minor edit of the already existing page with the same title.</paragraph>
+<paragraph role="paragraph" id="par_id452284" xml-lang="en-US" l10n="NEW">
+<emph>Show in web browser</emph>: Check this box to open your system web browser and show the uploaded Wiki page.</paragraph>
+<list type="ordered" startwith="5">
+<listitem>
+<paragraph role="paragraph" id="par_id8346812" xml-lang="en-US" l10n="NEW">Click Send.</paragraph>
+</listitem>
+</list>
+</body>
+</helpdocument>
diff --git a/swext/mediawiki/help/wikiaccount.xhp b/swext/mediawiki/help/wikiaccount.xhp
new file mode 100644
index 000000000000..8d1d57ba1d25
--- /dev/null
+++ b/swext/mediawiki/help/wikiaccount.xhp
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+
+<helpdocument version="1.0">
+<meta>
+<topic id="comsunstarwikiMediaWikiwikiaccountxml" indexer="include" status="PUBLISH">
+<title id="tit" xml-lang="en-US">MediaWiki</title>
+<filename>/@WIKIEXTENSIONID@/wikiaccount.xhp</filename>
+</topic>
+<history>
+<created date="2008-02-08T12:13:25"/>
+<lastedited date="2008-02-08T13:15:05"/>
+</history>
+</meta>
+<body>
+<bookmark branch="hid/vnd.com.sun.star.wiki:account" id="bm_id7021088" localize="false"/>
+<paragraph role="heading" id="hd_id960722" xml-lang="en-US" level="1" l10n="NEW">MediaWiki</paragraph>
+<paragraph role="paragraph" id="par_id4571672" xml-lang="en-US" l10n="NEW">Use the MediaWiki dialog to add or edit your MediaWiki account settings.</paragraph><comment>URL</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.EditSetting.UrlField" id="bm_id4558244" localize="false"/>
+<paragraph role="paragraph" id="par_id7631458" xml-lang="en-US" l10n="NEW"><ahelp hid="." visibility="hidden">Enter the URL of a MediaWiki server, starting with http://</ahelp></paragraph><comment>Username</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.EditSetting.UsernameField" id="bm_id4558245" localize="false"/>
+<paragraph role="paragraph" id="par_id7862483" xml-lang="en-US" l10n="NEW"><ahelp hid="." visibility="hidden">Enter your user name on the MediaWiki server. Leave empty for anonymous access.</ahelp></paragraph><comment>Password</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.EditSetting.PasswordField" id="bm_id4558246" localize="false"/>
+<paragraph role="paragraph" id="par_id1113010" xml-lang="en-US" l10n="NEW"><ahelp hid="." visibility="hidden">Enter your password on the MediaWiki server. Leave empty for anonymous access.</ahelp></paragraph><comment>Save password</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.EditSetting.SaveBox" id="bm_id4558247" localize="false"/>
+<paragraph role="paragraph" id="par_id656758" xml-lang="en-US" l10n="NEW"><ahelp hid="." visibility="hidden">Enable to store your password between sessions. The master password must be enabled, see <item type="menuitem">Tools - Options - %PRODUCTNAME - Security</item>.</ahelp></paragraph>
+<paragraph role="paragraph" id="par_id3112582" xml-lang="en-US" l10n="NEW">Enter the Internet address of a Wiki server in a format like http://wiki.services.openoffice.org/wiki or copy the URL from a web browser.</paragraph>
+<paragraph role="paragraph" id="par_id628070" xml-lang="en-US" l10n="NEW">If the Wiki allows anonymous access, you can leave the account text boxes empty. Else enter your user name and password.</paragraph>
+<paragraph role="paragraph" id="par_id9046601" xml-lang="en-US" l10n="NEW">If you have enabled the master password feature on the Security tab page of the Tools - Options - %PRODUCTNAME dialog, then the software can store your password and automatically insert the data where necessary. Enable the "Save password" checkbox to store your password.</paragraph>
+</body>
+</helpdocument>
diff --git a/swext/mediawiki/help/wikiformats.xhp b/swext/mediawiki/help/wikiformats.xhp
new file mode 100644
index 000000000000..fd9c98e19fae
--- /dev/null
+++ b/swext/mediawiki/help/wikiformats.xhp
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+
+<helpdocument version="1.0">
+<meta>
+<topic id="comsunstarwikiMediaWikiwikiformatsxml" indexer="include" status="PUBLISH">
+<title id="tit" xml-lang="en-US">MediaWiki Formats</title>
+<filename>/@WIKIEXTENSIONID@/wikiformats.xhp</filename>
+</topic>
+<history>
+<created date="2008-02-08T12:13:25"/>
+<lastedited date="2008-02-08T14:16:47"/>
+</history>
+</meta>
+<body>
+<bookmark branch="hid/vnd.com.sun.star.wiki:formats" id="bm_id7021088" localize="false"/>
+<paragraph role="heading" id="hd_id3743095" xml-lang="en-US" level="1" l10n="NEW">MediaWiki Formats</paragraph>
+<paragraph role="paragraph" id="par_id8654133" xml-lang="en-US" l10n="NEW">The following list gives an overview of the text formats that the @WIKIEXTENSIONPRODUCTNAME@ can upload to the Wiki server.</paragraph>
+<paragraph role="paragraph" id="par_id5630664" xml-lang="en-US" l10n="NEW">The OpenDocument format used by Writer and the WikiMedia format are quite different. Only a subset of all features can be transformed from one format to the other.</paragraph>
+<paragraph role="heading" id="hd_id7178868" xml-lang="en-US" level="2" l10n="NEW">Headings</paragraph>
+<paragraph role="paragraph" id="par_id508133" xml-lang="en-US" l10n="NEW">Apply a heading paragraph style to the headings in your Writer document. The Wiki will show the heading styles of the same outline level, formatted as defined by the Wiki engine.</paragraph>
+<paragraph role="heading" id="hd_id7217627" xml-lang="en-US" level="2" l10n="NEW">Hyperlinks</paragraph>
+<paragraph role="paragraph" id="par_id3735465" xml-lang="en-US" l10n="NEW">Native OpenDocument hyperlinks are transformed into "external" Wiki links. Therefore, the built-in linking facility of OpenDocument should only be used to create links that point to other sites outside the Wiki web. For creating Wiki links that point to other subjects of the same Wiki domain, use Wiki links.</paragraph>
+<paragraph role="heading" id="hd_id941190" xml-lang="en-US" level="2" l10n="NEW">Lists</paragraph>
+<paragraph role="paragraph" id="par_id8942838" xml-lang="en-US" l10n="NEW">Lists can reliably be exported when the whole list uses a consistent list style. Use the Numbering or Bullets icon to generate a list in Writer. If you need a list without numbering or bullets, use Format - Bullets and Numbering to define and apply the respective list style.</paragraph>
+<paragraph role="heading" id="hd_id7026886" xml-lang="en-US" level="2" l10n="NEW">Paragraphs</paragraph>
+<paragraph role="heading" id="hd_id4436475" xml-lang="en-US" level="3" l10n="NEW">Alignment</paragraph>
+<paragraph role="paragraph" id="par_id376598" xml-lang="en-US" l10n="NEW">Explicit text alignment should not be used in Wiki articles. Nevertheless, text alignment is supported for left, centered, and right alignment of text.</paragraph>
+<paragraph role="heading" id="hd_id7486190" xml-lang="en-US" level="3" l10n="NEW">Pre-formatted text</paragraph>
+<paragraph role="paragraph" id="par_id1459395" xml-lang="en-US" l10n="NEW">A paragraph style with a fixed-width font is transformed as pre-formatted text. Pre-formatted text is shown on the Wiki with a border around the text.</paragraph>
+<paragraph role="heading" id="hd_id4834131" xml-lang="en-US" level="2" l10n="NEW">Character styles</paragraph>
+<paragraph role="paragraph" id="par_id6397595" xml-lang="en-US" l10n="NEW">Character styles modify the appearance of parts of a paragraph. The transformation supports bold, italics, bold/italics, subscript and superscript. All fixed width fonts are transformed into the Wiki typewriter style.</paragraph>
+<paragraph role="heading" id="hd_id5152745" xml-lang="en-US" level="2" l10n="NEW">Footnotes</paragraph>
+<paragraph role="paragraph" id="par_id5238196" xml-lang="en-US" l10n="NEW">Note: The transformation uses the new style of footnotes with &lt;ref&gt; and &lt;references&gt; tags that requires the Cite.php extension to be installed into MediaWiki. If those tags occur as plain text in the transformation result, ask the Wiki administrator to install this extension.</paragraph>
+<paragraph role="heading" id="hd_id9405499" xml-lang="en-US" level="2" l10n="NEW">Images</paragraph>
+<paragraph role="paragraph" id="par_id3541673" xml-lang="en-US" l10n="NEW">Images cannot be exported by a transformation producing a single file of Wiki text. However, if the image is already uploaded to the target Wiki domain (e. g. WikiMedia Commons), then the transformation produces a valid image tag that includes the image. Image captions are also supported.</paragraph>
+<paragraph role="heading" id="hd_id2162236" xml-lang="en-US" level="2" l10n="NEW">Tables</paragraph>
+<paragraph role="paragraph" id="par_id3037202" xml-lang="en-US" l10n="NEW">Simple tables are supported well. Table headers are translated into corresponding Wiki style table headers. However, custom formatting of table borders, column sizes and background colors is ignored.</paragraph>
+<paragraph role="heading" id="hd_id2954496" xml-lang="en-US" level="3" l10n="NEW">Joined Cells</paragraph>
+<paragraph role="paragraph" id="par_id8253730" xml-lang="en-US" l10n="NEW">OpenDocument and especially OpenOffice.org represent tables that have joined cells that span rows as tables with nested tables. In contrast, the wiki model of table is to declare column and row spans for such joined cells. </paragraph>
+<paragraph role="paragraph" id="par_id8163090" xml-lang="en-US" l10n="NEW">If only columns of the same row are joined, the result of the transformation resembles the source document very well.</paragraph>
+<paragraph role="heading" id="hd_id425122" xml-lang="en-US" level="3" l10n="NEW">Borders</paragraph>
+<paragraph role="paragraph" id="par_id1831110" xml-lang="en-US" l10n="NEW">Irrespective of custom table styles for border and background, a table is always exported as "<emph>prettytable"</emph>, which renders in the Wiki engine with simple borders and bold header.</paragraph>
+<paragraph role="heading" id="hd_id6255073" xml-lang="en-US" level="2" l10n="NEW">Charset and special characters</paragraph>
+<paragraph role="paragraph" id="par_id8216193" xml-lang="en-US" l10n="NEW">The charset of the transformation result is fixed to UTF-8. Depending on your system, this might not be the default charset. This might cause "special characters" to look broken when viewed with default settings. However, you can switch your editor to UTF-8 encoding to fix this. If your editor does not support switching the encoding, you can display the result of the transformation in the Firefox browser and switch the encoding to UTF-8 there. Now, you can cut and paste the transformation result to your program of choice.</paragraph>
+</body>
+</helpdocument>
diff --git a/swext/mediawiki/help/wikisend.xhp b/swext/mediawiki/help/wikisend.xhp
new file mode 100644
index 000000000000..f9a5613b5184
--- /dev/null
+++ b/swext/mediawiki/help/wikisend.xhp
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+
+<helpdocument version="1.0">
+<meta>
+<topic id="comsunstarwikiMediaWikiwikisendxml" indexer="include" status="PUBLISH">
+<title id="tit" xml-lang="en-US">Send to MediaWiki</title>
+<filename>/@WIKIEXTENSIONID@/wikisend.xhp</filename>
+</topic>
+<history>
+<created date="2008-02-08T12:13:25"/>
+<lastedited date="2008-02-08T13:36:25"/>
+</history>
+</meta>
+<body>
+<bookmark branch="hid/vnd.com.sun.star.wiki:sendDialog" id="bm_id7021088" localize="false"/>
+<paragraph role="heading" id="hd_id108340" xml-lang="en-US" level="1" l10n="NEW">Send to MediaWiki</paragraph>
+<paragraph role="paragraph" id="par_id1743827" xml-lang="en-US" l10n="NEW">In the Send to MediaWiki dialog, specify the settings for your current Wiki upload.</paragraph><comment>MediaWiki server</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.SendToMediaWiki.WikiList" id="bm_id735801" localize="false"/>
+<paragraph role="paragraph" id="par_id664082" xml-lang="en-US" l10n="NEW"><ahelp hid=".">Select the MediaWiki server where you want to publish your document. Click Add to add a new server to the list.</ahelp></paragraph><comment>title</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.SendToMediaWiki.ArticleText" id="bm_id735802" localize="false"/>
+<paragraph role="paragraph" id="par_id2794885" xml-lang="en-US" l10n="NEW"><ahelp hid=".">Enter the title of your Wiki entry. This is the top heading of your Wiki entry. For a new entry, the title must be unique on this Wiki. If you enter an existing title, your upload will overwrite the existing Wiki entry.</ahelp></paragraph><comment>summary</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.SendToMediaWiki.CommentText" id="bm_id735803" localize="false"/>
+<paragraph role="paragraph" id="par_id2486342" xml-lang="en-US" l10n="NEW"><ahelp hid=".">Enter an optional short summary or comment.</ahelp> See <link href="http://meta.wikimedia.org/wiki/Help:Edit_summary">http://meta.wikimedia.org/wiki/Help:Edit_summary</link>.</paragraph>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.SendToMediaWiki.MinorCheck" id="bm_id2619708" localize="false"/>
+<paragraph role="paragraph" id="par_id823999" xml-lang="en-US" l10n="NEW">
+<emph>This is a minor edit</emph>: <ahelp hid=".">Check this box to mark the uploaded page as a minor edit of the already existing page with the same title.</ahelp></paragraph>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.SendToMediaWiki.BrowserCheck" id="bm_id1293679" localize="false"/>
+<paragraph role="paragraph" id="par_id6592913" xml-lang="en-US" l10n="NEW">
+<emph>Show in web browser</emph>: <ahelp hid=".">Check this box to open your system web browser and show the uploaded Wiki page.</ahelp></paragraph>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.SendToMediaWiki.SendButton" id="bm_id290536" localize="false"/>
+<list type="ordered" startwith="5">
+</list>
+</body>
+</helpdocument>
diff --git a/swext/mediawiki/help/wikisettings.xhp b/swext/mediawiki/help/wikisettings.xhp
new file mode 100644
index 000000000000..22611a29027a
--- /dev/null
+++ b/swext/mediawiki/help/wikisettings.xhp
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+
+<helpdocument version="1.0">
+<meta>
+<topic id="comsunstarwikiMediaWikiwikisettingsxml" indexer="include" status="PUBLISH">
+<title id="tit" xml-lang="en-US">MediaWiki Options</title>
+<filename>/@WIKIEXTENSIONID@/wikisettings.xhp</filename>
+</topic>
+<history>
+<created date="2008-02-08T12:13:25"/>
+<lastedited date="2008-02-08T12:53:38"/>
+</history>
+</meta>
+<body>
+<bookmark branch="hid/vnd.com.sun.star.wiki:settings" id="bm_id7021088" localize="false"/>
+<paragraph role="heading" id="hd_id6425672" xml-lang="en-US" level="1" l10n="NEW">MediaWiki Options</paragraph>
+<paragraph role="paragraph" id="par_id1188390" xml-lang="en-US" l10n="NEW">You can add, edit and remove MediaWiki servers. Open the dialog by <item type="menuitem">Tools - Options - Internet - MediaWiki</item>. Alternatively, choose <item type="menuitem">Tools - Extension Manager</item>, select the @WIKIEXTENSIONPRODUCTNAME@, and click the Options button.</paragraph><comment>Listbox</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.Settings.WikiList" id="bm_id6402783" localize="false"/>
+<paragraph role="paragraph" id="par_id300607" xml-lang="en-US" l10n="NEW"><ahelp hid=".">Click Add to add a new Wiki server.<br/>Select an entry and click Edit to edit the account settings.<br/>Select an entry and click Remove to remove the entry from the list.</ahelp></paragraph><comment>Add button</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.Settings.AddButton" id="bm_id6067384" localize="false"/>
+<paragraph role="paragraph" id="par_id9786065" xml-lang="en-US" l10n="NEW"><ahelp hid="." visibility="hidden">Opens the MediaWiki dialog to add a new entry to the list.</ahelp></paragraph><comment>Edit button</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.Settings.EditButton" id="bm_id6067385" localize="false"/>
+<paragraph role="paragraph" id="par_id3386333" xml-lang="en-US" l10n="NEW"><ahelp hid="." visibility="hidden">Opens the MediaWiki dialog to edit the selected entry.</ahelp></paragraph><comment>Remove button</comment>
+<bookmark xml-lang="en-US" branch="hid/com.sun.star.wiki.MediaWiki.Settings.RemoveButton" id="bm_id6067386" localize="false"/>
+<paragraph role="paragraph" id="par_id7285073" xml-lang="en-US" l10n="NEW"><ahelp hid="." visibility="hidden">Removes the selected entry from the list.</ahelp></paragraph>
+<paragraph role="paragraph" id="par_id1029084" xml-lang="en-US" l10n="NEW">When you click Add or Edit, the <link href="@WIKIEXTENSIONID@/wikiaccount.xhp">MediaWiki</link> dialog opens.</paragraph>
+</body>
+</helpdocument>
diff --git a/swext/mediawiki/makefile.mk b/swext/mediawiki/makefile.mk
new file mode 100644
index 000000000000..52d9900ab1e6
--- /dev/null
+++ b/swext/mediawiki/makefile.mk
@@ -0,0 +1,69 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..
+PRJNAME=swext
+TARGET=mediawiki
+.IF "$(L10N_framework)"==""
+.IF "$(ENABLE_MEDIAWIKI)" == "YES"
+.INCLUDE : ant.mk
+
+.IF "$(SYSTEM_APACHE_COMMONS)" != "YES"
+COMMONS_CODEC_JAR=$(SOLARVER)$/$(INPATH)$/bin$(UPDMINOREXT)$/commons-codec-1.3.jar
+COMMONS_LANG_JAR=$(SOLARVER)$/$(INPATH)$/bin$(UPDMINOREXT)$/commons-lang-2.3.jar
+COMMONS_HTTPCLIENT_JAR=$(SOLARVER)$/$(INPATH)$/bin$(UPDMINOREXT)$/commons-httpclient-3.1.jar
+COMMONS_LOGGING_JAR=$(SOLARVER)$/$(INPATH)$/bin$(UPDMINOREXT)$/commons-logging-1.1.1.jar
+.ELSE
+COMP=fix_system_commons
+.ENDIF
+
+.IF defined(debug) || defined(DEBUG)
+ANTDEBUG=true
+.ELSE
+ANTDEBUG=off
+.ENDIF
+
+ANT_FLAGS+=-Dcommons-codec-jar=$(COMMONS_CODEC_JAR) -Dcommons-lang-jar=$(COMMONS_LANG_JAR) -Dcommons-httpclient-jar=$(COMMONS_HTTPCLIENT_JAR) -Dcommons-logging-jar=$(COMMONS_LOGGING_JAR) -Dantdebug=$(ANTDEBUG)
+
+# creates two files wiki-publisher.oxt and mediawiki_develop.zip, the second one might be used in further build process
+ALLTAR: $(COMP) ANTBUILD
+
+fix_system_commons:
+ @echo "Fix Java Class-Path entry for Apache Commons libraries from system."
+ @$(SED) -r -e "s#(name=\"Class-Path\" value=\").*\"#\1file://$(COMMONS_CODEC_JAR) file://$(COMMONS_LANG_JAR) \
+file://$(COMMONS_HTTPCLIENT_JAR) file://$(COMMONS_LOGGING_JAR)\"#" -i build.xml
+ @echo "Unbundle Apache Commons libraries from Mediawiki Presentation extension."
+ @$(SED) '/file="..commons/d' -i build.xml
+
+.ELSE
+@all:
+ @echo "MediaWiki Publisher extension disabled."
+.ENDIF
+
+.ELSE
+pesudo:
+.ENDIF
diff --git a/swext/mediawiki/src/THIRDPARTYLICENSEREADME.html b/swext/mediawiki/src/THIRDPARTYLICENSEREADME.html
new file mode 100644
index 000000000000..fbd8b0bfdca0
--- /dev/null
+++ b/swext/mediawiki/src/THIRDPARTYLICENSEREADME.html
@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ <meta content="text/html; charset=iso-8859-1"
+ http-equiv="Content-Type">
+ <title>THIRDPARTYLICENSEREADME</title>
+</head>
+<body>
+DO NOT TRANSLATE OR LOCALIZE THIS DOCUMENT<br>
+<br>
+<ul id="mozToc">
+<!--mozToc h2 1 h3 2-->
+ <li><a href="#mozTocId445655">The Apache Software Foundation
+ </a>
+ <ul>
+ <li><a href="#mozTocId662146">Commons Codec
+ </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId954021">The Apache Software Foundation
+ </a>
+ <ul>
+ <li><a href="#mozTocId934893">Commons HTTP Client
+ </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId478594">The Apache Software Foundation
+ </a>
+ <ul>
+ <li><a href="#mozTocId789223">Commons Lang
+ </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId877758">The Apache Software Foundation
+ </a>
+ <ul>
+ <li><a href="#mozTocId959568">Commons Logging
+ </a></li>
+ </ul>
+ </li>
+ <li><a href="#mozTocId3503">The Apache Software
+Foundation
+ </a>
+ <ul>
+ <li><a href="#mozTocId520856">Tomcat
+ </a></li>
+ </ul>
+ </li>
+</ul>
+<br>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: Jakarta Commons Codec; Use of any of this
+software is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId445655"></a>The Apache Software
+Foundation<br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId662146"></a>Commons Codec<br>
+</h3>
+<pre> Apache License<br> Version 2.0, January 2004<br> http://www.apache.org/licenses/<br><br> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION<br><br> 1. Definitions.<br><br> "License" shall mean the terms and conditions for use, reproduction,<br> and distribution as defined by Sections 1 through 9 of this document.<br><br> "Licensor" shall mean the copyright owner or entity authorized by<br> the copyright owner that is granting the License.<br><br> "Legal Entity" shall mean the union of the acting entity and all<br> other entities that control, are controlled by, or are under common<br> control with that entity. For the purposes of this definition,<br> "control" means (i) the power, direct or indirect, to cause the<br> direction or management of such entity, whether by contract or<br> otherwise, or (ii) ownership of fifty percent (50%) or more of the<br> outstanding shares, or (iii) beneficial ownership of such entity.<br><br> "You" (or "Your") shall mean an individual or Legal Entity<br> exercising permissions granted by this License.<br><br> "Source" form shall mean the preferred form for making modifications,<br> including but not limited to software source code, documentation<br> source, and configuration files.<br><br> "Object" form shall mean any form resulting from mechanical<br> transformation or translation of a Source form, including but<br> not limited to compiled object code, generated documentation,<br> and conversions to other media types.<br><br> "Work" shall mean the work of authorship, whether in Source or<br> Object form, made available under the License, as indicated by a<br> copyright notice that is included in or attached to the work<br> (an example is provided in the Appendix below).<br><br> "Derivative Works" shall mean any work, whether in Source or Object<br> form, that is based on (or derived from) the Work and for which the<br> editorial revisions, annotations, elaborations, or other modifications<br> represent, as a whole, an original work of authorship. For the purposes<br> of this License, Derivative Works shall not include works that remain<br> separable from, or merely link (or bind by name) to the interfaces of,<br> the Work and Derivative Works thereof.<br><br> "Contribution" shall mean any work of authorship, including<br> the original version of the Work and any modifications or additions<br> to that Work or Derivative Works thereof, that is intentionally<br> submitted to Licensor for inclusion in the Work by the copyright owner<br> or by an individual or Legal Entity authorized to submit on behalf of<br> the copyright owner. For the purposes of this definition, "submitted"<br> means any form of electronic, verbal, or written communication sent<br> to the Licensor or its representatives, including but not limited to<br> communication on electronic mailing lists, source code control systems,<br> and issue tracking systems that are managed by, or on behalf of, the<br> Licensor for the purpose of discussing and improving the Work, but<br> excluding communication that is conspicuously marked or otherwise<br> designated in writing by the copyright owner as "Not a Contribution."<br><br> "Contributor" shall mean Licensor and any individual or Legal Entity<br> on behalf of whom a Contribution has been received by Licensor and<br> subsequently incorporated within the Work.<br><br> 2. Grant of Copyright License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> copyright license to reproduce, prepare Derivative Works of,<br> publicly display, publicly perform, sublicense, and distribute the<br> Work and such Derivative Works in Source or Object form.<br><br> 3. Grant of Patent License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> (except as stated in this section) patent license to make, have made,<br> use, offer to sell, sell, import, and otherwise transfer the Work,<br> where such license applies only to those patent claims licensable<br> by such Contributor that are necessarily infringed by their<br> Contribution(s) alone or by combination of their Contribution(s)<br> with the Work to which such Contribution(s) was submitted. If You<br> institute patent litigation against any entity (including a<br> cross-claim or counterclaim in a lawsuit) alleging that the Work<br> or a Contribution incorporated within the Work constitutes direct<br> or contributory patent infringement, then any patent licenses<br> granted to You under this License for that Work shall terminate<br> as of the date such litigation is filed.<br><br> 4. Redistribution. You may reproduce and distribute copies of the<br> Work or Derivative Works thereof in any medium, with or without<br> modifications, and in Source or Object form, provided that You<br> meet the following conditions:<br><br> (a) You must give any other recipients of the Work or<br> Derivative Works a copy of this License; and<br><br> (b) You must cause any modified files to carry prominent notices<br> stating that You changed the files; and<br><br> (c) You must retain, in the Source form of any Derivative Works<br> that You distribute, all copyright, patent, trademark, and<br> attribution notices from the Source form of the Work,<br> excluding those notices that do not pertain to any part of<br> the Derivative Works; and<br><br> (d) If the Work includes a "NOTICE" text file as part of its<br> distribution, then any Derivative Works that You distribute must<br> include a readable copy of the attribution notices contained<br> within such NOTICE file, excluding those notices that do not<br> pertain to any part of the Derivative Works, in at least one<br> of the following places: within a NOTICE text file distributed<br> as part of the Derivative Works; within the Source form or<br> documentation, if provided along with the Derivative Works; or,<br> within a display generated by the Derivative Works, if and<br> wherever such third-party notices normally appear. The contents<br> of the NOTICE file are for informational purposes only and<br> do not modify the License. You may add Your own attribution<br> notices within Derivative Works that You distribute, alongside<br> or as an addendum to the NOTICE text from the Work, provided<br> that such additional attribution notices cannot be construed<br> as modifying the License.<br><br> You may add Your own copyright statement to Your modifications and<br> may provide additional or different license terms and conditions<br> for use, reproduction, or distribution of Your modifications, or<br> for any such Derivative Works as a whole, provided Your use,<br> reproduction, and distribution of the Work otherwise complies with<br> the conditions stated in this License.<br><br> 5. Submission of Contributions. Unless You explicitly state otherwise,<br> any Contribution intentionally submitted for inclusion in the Work<br> by You to the Licensor shall be under the terms and conditions of<br> this License, without any additional terms or conditions.<br> Notwithstanding the above, nothing herein shall supersede or modify<br> the terms of any separate license agreement you may have executed<br> with Licensor regarding such Contributions.<br><br> 6. Trademarks. This License does not grant permission to use the trade<br> names, trademarks, service marks, or product names of the Licensor,<br> except as required for reasonable and customary use in describing the<br> origin of the Work and reproducing the content of the NOTICE file.<br><br> 7. Disclaimer of Warranty. Unless required by applicable law or<br> agreed to in writing, Licensor provides the Work (and each<br> Contributor provides its Contributions) on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or<br> implied, including, without limitation, any warranties or conditions<br> of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A<br> PARTICULAR PURPOSE. You are solely responsible for determining the<br> appropriateness of using or redistributing the Work and assume any<br> risks associated with Your exercise of permissions under this License.<br><br> 8. Limitation of Liability. In no event and under no legal theory,<br> whether in tort (including negligence), contract, or otherwise,<br> unless required by applicable law (such as deliberate and grossly<br> negligent acts) or agreed to in writing, shall any Contributor be<br> liable to You for damages, including any direct, indirect, special,<br> incidental, or consequential damages of any character arising as a<br> result of this License or out of the use or inability to use the<br> Work (including but not limited to damages for loss of goodwill,<br> work stoppage, computer failure or malfunction, or any and all<br> other commercial damages or losses), even if such Contributor<br> has been advised of the possibility of such damages.<br><br> 9. Accepting Warranty or Additional Liability. While redistributing<br> the Work or Derivative Works thereof, You may choose to offer,<br> and charge a fee for, acceptance of support, warranty, indemnity,<br> or other liability obligations and/or rights consistent with this<br> License. However, in accepting such obligations, You may act only<br> on Your own behalf and on Your sole responsibility, not on behalf<br> of any other Contributor, and only if You agree to indemnify,<br> defend, and hold each Contributor harmless for any liability<br> incurred by, or claims asserted against, such Contributor by reason<br> of your accepting any such warranty or additional liability.<br><br> END OF TERMS AND CONDITIONS<br><br> APPENDIX: How to apply the Apache License to your work.<br><br> To apply the Apache License to your work, attach the following<br> boilerplate notice, with the fields enclosed by brackets "[]"<br> replaced with your own identifying information. (Don't include<br> the brackets!) The text should be enclosed in the appropriate<br> comment syntax for the file format. We also recommend that a<br> file or class name and description of purpose be included on the<br> same "printed page" as the copyright notice for easier<br> identification within third-party archives.<br><br> Copyright [yyyy] [name of copyright owner]<br><br> Licensed under the Apache License, Version 2.0 (the "License");<br> you may not use this file except in compliance with the License.<br> You may obtain a copy of the License at<br><br> http://www.apache.org/licenses/LICENSE-2.0<br><br> Unless required by applicable law or agreed to in writing, software<br> distributed under the License is distributed on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br> See the License for the specific language governing permissions and<br> limitations under the License.<br><br></pre>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: Jakarta Commons HTTP Client 2; Use of any of
+this
+software is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId954021"></a>The Apache Software
+Foundation<br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId934893"></a>Commons HTTP Client<br>
+</h3>
+<pre> Apache License<br> Version 2.0, January 2004<br> http://www.apache.org/licenses/<br><br> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION<br><br> 1. Definitions.<br><br> "License" shall mean the terms and conditions for use, reproduction,<br> and distribution as defined by Sections 1 through 9 of this document.<br><br> "Licensor" shall mean the copyright owner or entity authorized by<br> the copyright owner that is granting the License.<br><br> "Legal Entity" shall mean the union of the acting entity and all<br> other entities that control, are controlled by, or are under common<br> control with that entity. For the purposes of this definition,<br> "control" means (i) the power, direct or indirect, to cause the<br> direction or management of such entity, whether by contract or<br> otherwise, or (ii) ownership of fifty percent (50%) or more of the<br> outstanding shares, or (iii) beneficial ownership of such entity.<br><br> "You" (or "Your") shall mean an individual or Legal Entity<br> exercising permissions granted by this License.<br><br> "Source" form shall mean the preferred form for making modifications,<br> including but not limited to software source code, documentation<br> source, and configuration files.<br><br> "Object" form shall mean any form resulting from mechanical<br> transformation or translation of a Source form, including but<br> not limited to compiled object code, generated documentation,<br> and conversions to other media types.<br><br> "Work" shall mean the work of authorship, whether in Source or<br> Object form, made available under the License, as indicated by a<br> copyright notice that is included in or attached to the work<br> (an example is provided in the Appendix below).<br><br> "Derivative Works" shall mean any work, whether in Source or Object<br> form, that is based on (or derived from) the Work and for which the<br> editorial revisions, annotations, elaborations, or other modifications<br> represent, as a whole, an original work of authorship. For the purposes<br> of this License, Derivative Works shall not include works that remain<br> separable from, or merely link (or bind by name) to the interfaces of,<br> the Work and Derivative Works thereof.<br><br> "Contribution" shall mean any work of authorship, including<br> the original version of the Work and any modifications or additions<br> to that Work or Derivative Works thereof, that is intentionally<br> submitted to Licensor for inclusion in the Work by the copyright owner<br> or by an individual or Legal Entity authorized to submit on behalf of<br> the copyright owner. For the purposes of this definition, "submitted"<br> means any form of electronic, verbal, or written communication sent<br> to the Licensor or its representatives, including but not limited to<br> communication on electronic mailing lists, source code control systems,<br> and issue tracking systems that are managed by, or on behalf of, the<br> Licensor for the purpose of discussing and improving the Work, but<br> excluding communication that is conspicuously marked or otherwise<br> designated in writing by the copyright owner as "Not a Contribution."<br><br> "Contributor" shall mean Licensor and any individual or Legal Entity<br> on behalf of whom a Contribution has been received by Licensor and<br> subsequently incorporated within the Work.<br><br> 2. Grant of Copyright License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> copyright license to reproduce, prepare Derivative Works of,<br> publicly display, publicly perform, sublicense, and distribute the<br> Work and such Derivative Works in Source or Object form.<br><br> 3. Grant of Patent License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> (except as stated in this section) patent license to make, have made,<br> use, offer to sell, sell, import, and otherwise transfer the Work,<br> where such license applies only to those patent claims licensable<br> by such Contributor that are necessarily infringed by their<br> Contribution(s) alone or by combination of their Contribution(s)<br> with the Work to which such Contribution(s) was submitted. If You<br> institute patent litigation against any entity (including a<br> cross-claim or counterclaim in a lawsuit) alleging that the Work<br> or a Contribution incorporated within the Work constitutes direct<br> or contributory patent infringement, then any patent licenses<br> granted to You under this License for that Work shall terminate<br> as of the date such litigation is filed.<br><br> 4. Redistribution. You may reproduce and distribute copies of the<br> Work or Derivative Works thereof in any medium, with or without<br> modifications, and in Source or Object form, provided that You<br> meet the following conditions:<br><br> (a) You must give any other recipients of the Work or<br> Derivative Works a copy of this License; and<br><br> (b) You must cause any modified files to carry prominent notices<br> stating that You changed the files; and<br><br> (c) You must retain, in the Source form of any Derivative Works<br> that You distribute, all copyright, patent, trademark, and<br> attribution notices from the Source form of the Work,<br> excluding those notices that do not pertain to any part of<br> the Derivative Works; and<br><br> (d) If the Work includes a "NOTICE" text file as part of its<br> distribution, then any Derivative Works that You distribute must<br> include a readable copy of the attribution notices contained<br> within such NOTICE file, excluding those notices that do not<br> pertain to any part of the Derivative Works, in at least one<br> of the following places: within a NOTICE text file distributed<br> as part of the Derivative Works; within the Source form or<br> documentation, if provided along with the Derivative Works; or,<br> within a display generated by the Derivative Works, if and<br> wherever such third-party notices normally appear. The contents<br> of the NOTICE file are for informational purposes only and<br> do not modify the License. You may add Your own attribution<br> notices within Derivative Works that You distribute, alongside<br> or as an addendum to the NOTICE text from the Work, provided<br> that such additional attribution notices cannot be construed<br> as modifying the License.<br><br> You may add Your own copyright statement to Your modifications and<br> may provide additional or different license terms and conditions<br> for use, reproduction, or distribution of Your modifications, or<br> for any such Derivative Works as a whole, provided Your use,<br> reproduction, and distribution of the Work otherwise complies with<br> the conditions stated in this License.<br><br> 5. Submission of Contributions. Unless You explicitly state otherwise,<br> any Contribution intentionally submitted for inclusion in the Work<br> by You to the Licensor shall be under the terms and conditions of<br> this License, without any additional terms or conditions.<br> Notwithstanding the above, nothing herein shall supersede or modify<br> the terms of any separate license agreement you may have executed<br> with Licensor regarding such Contributions.<br><br> 6. Trademarks. This License does not grant permission to use the trade<br> names, trademarks, service marks, or product names of the Licensor,<br> except as required for reasonable and customary use in describing the<br> origin of the Work and reproducing the content of the NOTICE file.<br><br> 7. Disclaimer of Warranty. Unless required by applicable law or<br> agreed to in writing, Licensor provides the Work (and each<br> Contributor provides its Contributions) on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or<br> implied, including, without limitation, any warranties or conditions<br> of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A<br> PARTICULAR PURPOSE. You are solely responsible for determining the<br> appropriateness of using or redistributing the Work and assume any<br> risks associated with Your exercise of permissions under this License.<br><br> 8. Limitation of Liability. In no event and under no legal theory,<br> whether in tort (including negligence), contract, or otherwise,<br> unless required by applicable law (such as deliberate and grossly<br> negligent acts) or agreed to in writing, shall any Contributor be<br> liable to You for damages, including any direct, indirect, special,<br> incidental, or consequential damages of any character arising as a<br> result of this License or out of the use or inability to use the<br> Work (including but not limited to damages for loss of goodwill,<br> work stoppage, computer failure or malfunction, or any and all<br> other commercial damages or losses), even if such Contributor<br> has been advised of the possibility of such damages.<br><br> 9. Accepting Warranty or Additional Liability. While redistributing<br> the Work or Derivative Works thereof, You may choose to offer,<br> and charge a fee for, acceptance of support, warranty, indemnity,<br> or other liability obligations and/or rights consistent with this<br> License. However, in accepting such obligations, You may act only<br> on Your own behalf and on Your sole responsibility, not on behalf<br> of any other Contributor, and only if You agree to indemnify,<br> defend, and hold each Contributor harmless for any liability<br> incurred by, or claims asserted against, such Contributor by reason<br> of your accepting any such warranty or additional liability.<br><br> END OF TERMS AND CONDITIONS<br><br> APPENDIX: How to apply the Apache License to your work.<br><br> To apply the Apache License to your work, attach the following<br> boilerplate notice, with the fields enclosed by brackets "[]"<br> replaced with your own identifying information. (Don't include<br> the brackets!) The text should be enclosed in the appropriate<br> comment syntax for the file format. We also recommend that a<br> file or class name and description of purpose be included on the<br> same "printed page" as the copyright notice for easier<br> identification within third-party archives.<br><br> Copyright [yyyy] [name of copyright owner]<br><br> Licensed under the Apache License, Version 2.0 (the "License");<br> you may not use this file except in compliance with the License.<br> You may obtain a copy of the License at<br><br> http://www.apache.org/licenses/LICENSE-2.0<br><br> Unless required by applicable law or agreed to in writing, software<br> distributed under the License is distributed on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br> See the License for the specific language governing permissions and<br> limitations under the License.<br><br></pre>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: Jakarta Commons Lang 2.1; Use of any of this
+software is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId478594"></a>The Apache Software
+Foundation<br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId789223"></a>Commons Lang<br>
+</h3>
+<pre> Apache License<br> Version 2.0, January 2004<br> http://www.apache.org/licenses/<br><br> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION<br><br> 1. Definitions.<br><br> "License" shall mean the terms and conditions for use, reproduction,<br> and distribution as defined by Sections 1 through 9 of this document.<br><br> "Licensor" shall mean the copyright owner or entity authorized by<br> the copyright owner that is granting the License.<br><br> "Legal Entity" shall mean the union of the acting entity and all<br> other entities that control, are controlled by, or are under common<br> control with that entity. For the purposes of this definition,<br> "control" means (i) the power, direct or indirect, to cause the<br> direction or management of such entity, whether by contract or<br> otherwise, or (ii) ownership of fifty percent (50%) or more of the<br> outstanding shares, or (iii) beneficial ownership of such entity.<br><br> "You" (or "Your") shall mean an individual or Legal Entity<br> exercising permissions granted by this License.<br><br> "Source" form shall mean the preferred form for making modifications,<br> including but not limited to software source code, documentation<br> source, and configuration files.<br><br> "Object" form shall mean any form resulting from mechanical<br> transformation or translation of a Source form, including but<br> not limited to compiled object code, generated documentation,<br> and conversions to other media types.<br><br> "Work" shall mean the work of authorship, whether in Source or<br> Object form, made available under the License, as indicated by a<br> copyright notice that is included in or attached to the work<br> (an example is provided in the Appendix below).<br><br> "Derivative Works" shall mean any work, whether in Source or Object<br> form, that is based on (or derived from) the Work and for which the<br> editorial revisions, annotations, elaborations, or other modifications<br> represent, as a whole, an original work of authorship. For the purposes<br> of this License, Derivative Works shall not include works that remain<br> separable from, or merely link (or bind by name) to the interfaces of,<br> the Work and Derivative Works thereof.<br><br> "Contribution" shall mean any work of authorship, including<br> the original version of the Work and any modifications or additions<br> to that Work or Derivative Works thereof, that is intentionally<br> submitted to Licensor for inclusion in the Work by the copyright owner<br> or by an individual or Legal Entity authorized to submit on behalf of<br> the copyright owner. For the purposes of this definition, "submitted"<br> means any form of electronic, verbal, or written communication sent<br> to the Licensor or its representatives, including but not limited to<br> communication on electronic mailing lists, source code control systems,<br> and issue tracking systems that are managed by, or on behalf of, the<br> Licensor for the purpose of discussing and improving the Work, but<br> excluding communication that is conspicuously marked or otherwise<br> designated in writing by the copyright owner as "Not a Contribution."<br><br> "Contributor" shall mean Licensor and any individual or Legal Entity<br> on behalf of whom a Contribution has been received by Licensor and<br> subsequently incorporated within the Work.<br><br> 2. Grant of Copyright License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> copyright license to reproduce, prepare Derivative Works of,<br> publicly display, publicly perform, sublicense, and distribute the<br> Work and such Derivative Works in Source or Object form.<br><br> 3. Grant of Patent License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> (except as stated in this section) patent license to make, have made,<br> use, offer to sell, sell, import, and otherwise transfer the Work,<br> where such license applies only to those patent claims licensable<br> by such Contributor that are necessarily infringed by their<br> Contribution(s) alone or by combination of their Contribution(s)<br> with the Work to which such Contribution(s) was submitted. If You<br> institute patent litigation against any entity (including a<br> cross-claim or counterclaim in a lawsuit) alleging that the Work<br> or a Contribution incorporated within the Work constitutes direct<br> or contributory patent infringement, then any patent licenses<br> granted to You under this License for that Work shall terminate<br> as of the date such litigation is filed.<br><br> 4. Redistribution. You may reproduce and distribute copies of the<br> Work or Derivative Works thereof in any medium, with or without<br> modifications, and in Source or Object form, provided that You<br> meet the following conditions:<br><br> (a) You must give any other recipients of the Work or<br> Derivative Works a copy of this License; and<br><br> (b) You must cause any modified files to carry prominent notices<br> stating that You changed the files; and<br><br> (c) You must retain, in the Source form of any Derivative Works<br> that You distribute, all copyright, patent, trademark, and<br> attribution notices from the Source form of the Work,<br> excluding those notices that do not pertain to any part of<br> the Derivative Works; and<br><br> (d) If the Work includes a "NOTICE" text file as part of its<br> distribution, then any Derivative Works that You distribute must<br> include a readable copy of the attribution notices contained<br> within such NOTICE file, excluding those notices that do not<br> pertain to any part of the Derivative Works, in at least one<br> of the following places: within a NOTICE text file distributed<br> as part of the Derivative Works; within the Source form or<br> documentation, if provided along with the Derivative Works; or,<br> within a display generated by the Derivative Works, if and<br> wherever such third-party notices normally appear. The contents<br> of the NOTICE file are for informational purposes only and<br> do not modify the License. You may add Your own attribution<br> notices within Derivative Works that You distribute, alongside<br> or as an addendum to the NOTICE text from the Work, provided<br> that such additional attribution notices cannot be construed<br> as modifying the License.<br><br> You may add Your own copyright statement to Your modifications and<br> may provide additional or different license terms and conditions<br> for use, reproduction, or distribution of Your modifications, or<br> for any such Derivative Works as a whole, provided Your use,<br> reproduction, and distribution of the Work otherwise complies with<br> the conditions stated in this License.<br><br> 5. Submission of Contributions. Unless You explicitly state otherwise,<br> any Contribution intentionally submitted for inclusion in the Work<br> by You to the Licensor shall be under the terms and conditions of<br> this License, without any additional terms or conditions.<br> Notwithstanding the above, nothing herein shall supersede or modify<br> the terms of any separate license agreement you may have executed<br> with Licensor regarding such Contributions.<br><br> 6. Trademarks. This License does not grant permission to use the trade<br> names, trademarks, service marks, or product names of the Licensor,<br> except as required for reasonable and customary use in describing the<br> origin of the Work and reproducing the content of the NOTICE file.<br><br> 7. Disclaimer of Warranty. Unless required by applicable law or<br> agreed to in writing, Licensor provides the Work (and each<br> Contributor provides its Contributions) on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or<br> implied, including, without limitation, any warranties or conditions<br> of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A<br> PARTICULAR PURPOSE. You are solely responsible for determining the<br> appropriateness of using or redistributing the Work and assume any<br> risks associated with Your exercise of permissions under this License.<br><br> 8. Limitation of Liability. In no event and under no legal theory,<br> whether in tort (including negligence), contract, or otherwise,<br> unless required by applicable law (such as deliberate and grossly<br> negligent acts) or agreed to in writing, shall any Contributor be<br> liable to You for damages, including any direct, indirect, special,<br> incidental, or consequential damages of any character arising as a<br> result of this License or out of the use or inability to use the<br> Work (including but not limited to damages for loss of goodwill,<br> work stoppage, computer failure or malfunction, or any and all<br> other commercial damages or losses), even if such Contributor<br> has been advised of the possibility of such damages.<br><br> 9. Accepting Warranty or Additional Liability. While redistributing<br> the Work or Derivative Works thereof, You may choose to offer,<br> and charge a fee for, acceptance of support, warranty, indemnity,<br> or other liability obligations and/or rights consistent with this<br> License. However, in accepting such obligations, You may act only<br> on Your own behalf and on Your sole responsibility, not on behalf<br> of any other Contributor, and only if You agree to indemnify,<br> defend, and hold each Contributor harmless for any liability<br> incurred by, or claims asserted against, such Contributor by reason<br> of your accepting any such warranty or additional liability.<br><br> END OF TERMS AND CONDITIONS<br><br> APPENDIX: How to apply the Apache License to your work.<br><br> To apply the Apache License to your work, attach the following<br> boilerplate notice, with the fields enclosed by brackets "[]"<br> replaced with your own identifying information. (Don't include<br> the brackets!) The text should be enclosed in the appropriate<br> comment syntax for the file format. We also recommend that a<br> file or class name and description of purpose be included on the<br> same "printed page" as the copyright notice for easier<br> identification within third-party archives.<br><br> Copyright [yyyy] [name of copyright owner]<br><br> Licensed under the Apache License, Version 2.0 (the "License");<br> you may not use this file except in compliance with the License.<br> You may obtain a copy of the License at<br><br> http://www.apache.org/licenses/LICENSE-2.0<br><br> Unless required by applicable law or agreed to in writing, software<br> distributed under the License is distributed on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br> See the License for the specific language governing permissions and<br> limitations under the License.<br><br></pre>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: Jakarta Commons Codec; Use of any of this
+software is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId877758"></a>The Apache Software
+Foundation<br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId959568"></a>Commons Logging<br>
+</h3>
+<pre> Apache License<br> Version 2.0, January 2004<br> http://www.apache.org/licenses/<br><br> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION<br><br> 1. Definitions.<br><br> "License" shall mean the terms and conditions for use, reproduction,<br> and distribution as defined by Sections 1 through 9 of this document.<br><br> "Licensor" shall mean the copyright owner or entity authorized by<br> the copyright owner that is granting the License.<br><br> "Legal Entity" shall mean the union of the acting entity and all<br> other entities that control, are controlled by, or are under common<br> control with that entity. For the purposes of this definition,<br> "control" means (i) the power, direct or indirect, to cause the<br> direction or management of such entity, whether by contract or<br> otherwise, or (ii) ownership of fifty percent (50%) or more of the<br> outstanding shares, or (iii) beneficial ownership of such entity.<br><br> "You" (or "Your") shall mean an individual or Legal Entity<br> exercising permissions granted by this License.<br><br> "Source" form shall mean the preferred form for making modifications,<br> including but not limited to software source code, documentation<br> source, and configuration files.<br><br> "Object" form shall mean any form resulting from mechanical<br> transformation or translation of a Source form, including but<br> not limited to compiled object code, generated documentation,<br> and conversions to other media types.<br><br> "Work" shall mean the work of authorship, whether in Source or<br> Object form, made available under the License, as indicated by a<br> copyright notice that is included in or attached to the work<br> (an example is provided in the Appendix below).<br><br> "Derivative Works" shall mean any work, whether in Source or Object<br> form, that is based on (or derived from) the Work and for which the<br> editorial revisions, annotations, elaborations, or other modifications<br> represent, as a whole, an original work of authorship. For the purposes<br> of this License, Derivative Works shall not include works that remain<br> separable from, or merely link (or bind by name) to the interfaces of,<br> the Work and Derivative Works thereof.<br><br> "Contribution" shall mean any work of authorship, including<br> the original version of the Work and any modifications or additions<br> to that Work or Derivative Works thereof, that is intentionally<br> submitted to Licensor for inclusion in the Work by the copyright owner<br> or by an individual or Legal Entity authorized to submit on behalf of<br> the copyright owner. For the purposes of this definition, "submitted"<br> means any form of electronic, verbal, or written communication sent<br> to the Licensor or its representatives, including but not limited to<br> communication on electronic mailing lists, source code control systems,<br> and issue tracking systems that are managed by, or on behalf of, the<br> Licensor for the purpose of discussing and improving the Work, but<br> excluding communication that is conspicuously marked or otherwise<br> designated in writing by the copyright owner as "Not a Contribution."<br><br> "Contributor" shall mean Licensor and any individual or Legal Entity<br> on behalf of whom a Contribution has been received by Licensor and<br> subsequently incorporated within the Work.<br><br> 2. Grant of Copyright License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> copyright license to reproduce, prepare Derivative Works of,<br> publicly display, publicly perform, sublicense, and distribute the<br> Work and such Derivative Works in Source or Object form.<br><br> 3. Grant of Patent License. Subject to the terms and conditions of<br> this License, each Contributor hereby grants to You a perpetual,<br> worldwide, non-exclusive, no-charge, royalty-free, irrevocable<br> (except as stated in this section) patent license to make, have made,<br> use, offer to sell, sell, import, and otherwise transfer the Work,<br> where such license applies only to those patent claims licensable<br> by such Contributor that are necessarily infringed by their<br> Contribution(s) alone or by combination of their Contribution(s)<br> with the Work to which such Contribution(s) was submitted. If You<br> institute patent litigation against any entity (including a<br> cross-claim or counterclaim in a lawsuit) alleging that the Work<br> or a Contribution incorporated within the Work constitutes direct<br> or contributory patent infringement, then any patent licenses<br> granted to You under this License for that Work shall terminate<br> as of the date such litigation is filed.<br><br> 4. Redistribution. You may reproduce and distribute copies of the<br> Work or Derivative Works thereof in any medium, with or without<br> modifications, and in Source or Object form, provided that You<br> meet the following conditions:<br><br> (a) You must give any other recipients of the Work or<br> Derivative Works a copy of this License; and<br><br> (b) You must cause any modified files to carry prominent notices<br> stating that You changed the files; and<br><br> (c) You must retain, in the Source form of any Derivative Works<br> that You distribute, all copyright, patent, trademark, and<br> attribution notices from the Source form of the Work,<br> excluding those notices that do not pertain to any part of<br> the Derivative Works; and<br><br> (d) If the Work includes a "NOTICE" text file as part of its<br> distribution, then any Derivative Works that You distribute must<br> include a readable copy of the attribution notices contained<br> within such NOTICE file, excluding those notices that do not<br> pertain to any part of the Derivative Works, in at least one<br> of the following places: within a NOTICE text file distributed<br> as part of the Derivative Works; within the Source form or<br> documentation, if provided along with the Derivative Works; or,<br> within a display generated by the Derivative Works, if and<br> wherever such third-party notices normally appear. The contents<br> of the NOTICE file are for informational purposes only and<br> do not modify the License. You may add Your own attribution<br> notices within Derivative Works that You distribute, alongside<br> or as an addendum to the NOTICE text from the Work, provided<br> that such additional attribution notices cannot be construed<br> as modifying the License.<br><br> You may add Your own copyright statement to Your modifications and<br> may provide additional or different license terms and conditions<br> for use, reproduction, or distribution of Your modifications, or<br> for any such Derivative Works as a whole, provided Your use,<br> reproduction, and distribution of the Work otherwise complies with<br> the conditions stated in this License.<br><br> 5. Submission of Contributions. Unless You explicitly state otherwise,<br> any Contribution intentionally submitted for inclusion in the Work<br> by You to the Licensor shall be under the terms and conditions of<br> this License, without any additional terms or conditions.<br> Notwithstanding the above, nothing herein shall supersede or modify<br> the terms of any separate license agreement you may have executed<br> with Licensor regarding such Contributions.<br><br> 6. Trademarks. This License does not grant permission to use the trade<br> names, trademarks, service marks, or product names of the Licensor,<br> except as required for reasonable and customary use in describing the<br> origin of the Work and reproducing the content of the NOTICE file.<br><br> 7. Disclaimer of Warranty. Unless required by applicable law or<br> agreed to in writing, Licensor provides the Work (and each<br> Contributor provides its Contributions) on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or<br> implied, including, without limitation, any warranties or conditions<br> of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A<br> PARTICULAR PURPOSE. You are solely responsible for determining the<br> appropriateness of using or redistributing the Work and assume any<br> risks associated with Your exercise of permissions under this License.<br><br> 8. Limitation of Liability. In no event and under no legal theory,<br> whether in tort (including negligence), contract, or otherwise,<br> unless required by applicable law (such as deliberate and grossly<br> negligent acts) or agreed to in writing, shall any Contributor be<br> liable to You for damages, including any direct, indirect, special,<br> incidental, or consequential damages of any character arising as a<br> result of this License or out of the use or inability to use the<br> Work (including but not limited to damages for loss of goodwill,<br> work stoppage, computer failure or malfunction, or any and all<br> other commercial damages or losses), even if such Contributor<br> has been advised of the possibility of such damages.<br><br> 9. Accepting Warranty or Additional Liability. While redistributing<br> the Work or Derivative Works thereof, You may choose to offer,<br> and charge a fee for, acceptance of support, warranty, indemnity,<br> or other liability obligations and/or rights consistent with this<br> License. However, in accepting such obligations, You may act only<br> on Your own behalf and on Your sole responsibility, not on behalf<br> of any other Contributor, and only if You agree to indemnify,<br> defend, and hold each Contributor harmless for any liability<br> incurred by, or claims asserted against, such Contributor by reason<br> of your accepting any such warranty or additional liability.<br><br> END OF TERMS AND CONDITIONS<br><br> APPENDIX: How to apply the Apache License to your work.<br><br> To apply the Apache License to your work, attach the following<br> boilerplate notice, with the fields enclosed by brackets "[]"<br> replaced with your own identifying information. (Don't include<br> the brackets!) The text should be enclosed in the appropriate<br> comment syntax for the file format. We also recommend that a<br> file or class name and description of purpose be included on the<br> same "printed page" as the copyright notice for easier<br> identification within third-party archives.<br><br> Copyright [yyyy] [name of copyright owner]<br><br> Licensed under the Apache License, Version 2.0 (the "License");<br> you may not use this file except in compliance with the License.<br> You may obtain a copy of the License at<br><br> http://www.apache.org/licenses/LICENSE-2.0<br><br> Unless required by applicable law or agreed to in writing, software<br> distributed under the License is distributed on an "AS IS" BASIS,<br> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br> See the License for the specific language governing permissions and<br> limitations under the License.<br><br></pre>
+<hr style="width: 100%; height: 2px;">The following software may be
+included in this product: Tomcat 4.0 or higher; Use of any of this
+software is governed by the terms of the license below:<br>
+<h2><a class="mozTocH2" name="mozTocId3503"></a>The Apache Software
+Foundation<br>
+</h2>
+<h3><a class="mozTocH3" name="mozTocId520856"></a>Tomcat<br>
+</h3>
+<br>
+The Apache Software License, Version 1.1
+<br>
+<br>
+Copyright (c) 2001 The Apache Software Foundation. All rights
+reserved.
+<br>
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+<br>
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer. <br>
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution. <br>
+3. The end-user documentation included with the redistribution, if any,
+must include the following acknowledgment: "This product includes
+software developed by the Apache Software Foundation
+(http://www.apache.org/)." Alternately, this acknowledgment may appear
+in the software itself, if and wherever such third-party
+acknowledgments normally appear. <br>
+4. The names "XML-RPC" and "Apache Software Foundation" must not be
+used to endorse or promote products derived from this software without
+prior written permission. For written permission, please contact
+apache@apache.org. <br>
+5. Products derived from this software may not be called "Apache", nor
+may "Apache" appear in their name, without prior written permission of
+the Apache Software Foundation. <br>
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+<br>
+====================================================================
+<br>
+This software consists of voluntary contributions made by many
+individuals on behalf of the Apache Software Foundation. For more
+information on the Apache Software Foundation, please see
+<http:>.
+<br>
+</http:>
+<br>
+</body>
+</html>
diff --git a/swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java b/swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java
new file mode 100644
index 000000000000..f91819c6bc2a
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java
@@ -0,0 +1,193 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import javax.swing.text.html.*;
+import javax.swing.text.MutableAttributeSet;
+
+public class EditPageParser extends HTMLEditorKit.ParserCallback
+{
+
+ protected String m_sEditTime = "";
+ protected String m_sEditToken = "";
+ protected String m_sLoginToken = "";
+ protected String m_sMainURL = "";
+
+ private int m_nWikiArticleHash = 0;
+ private boolean m_bHTMLStartFound = false;
+ private boolean m_bInHead = false;
+
+ protected int m_nWikiArticleStart = -1;
+ protected int m_nWikiArticleEnd = -1;
+ protected int m_nHTMLArticleStart = -1;
+ protected int m_nHTMLArticleEnd = -1;
+ protected int m_nNoArticleInd = -1;
+ protected int m_nErrorInd = -1;
+
+ /** Creates a new instance of WikiHTMLParser */
+ public EditPageParser()
+ {
+ }
+
+ public void handleComment( char[] data,int pos )
+ {
+ // insert code to handle comments
+ }
+
+ public void handleEndTag( HTML.Tag t,int pos )
+ {
+ if ( t == HTML.Tag.TEXTAREA )
+ {
+ m_nWikiArticleEnd = pos;
+ }
+ else if ( t == HTML.Tag.DIV )
+ {
+ if ( m_bHTMLStartFound )
+ {
+ m_nHTMLArticleStart = pos+6;
+ m_bHTMLStartFound = false;
+ }
+ }
+ else if ( t == HTML.Tag.HEAD )
+ {
+ m_bInHead = false;
+ }
+ }
+
+ public void handleError( String errorMsg,int pos )
+ {
+ //System.out.println( errorMsg );
+ }
+
+ public void handleSimpleTag( HTML.Tag t, MutableAttributeSet a,int pos )
+ {
+ // insert code to handle simple tags
+
+ if ( t == HTML.Tag.INPUT )
+ {
+ String sName = ( String ) a.getAttribute( HTML.Attribute.NAME );
+ if ( sName != null )
+ {
+ if ( sName.equalsIgnoreCase( "wpEdittime" ) )
+ {
+ this.m_sEditTime = ( String ) a.getAttribute( HTML.Attribute.VALUE );
+ }
+ else if ( sName.equalsIgnoreCase( "wpEditToken" ) )
+ {
+ this.m_sEditToken = ( String ) a.getAttribute( HTML.Attribute.VALUE );
+ }
+ else if ( sName.equalsIgnoreCase( "wpLoginToken" ) )
+ {
+ this.m_sLoginToken = ( String ) a.getAttribute( HTML.Attribute.VALUE );
+ }
+ }
+
+ }
+ else if ( t == HTML.Tag.LINK )
+ {
+ if ( m_bInHead )
+ {
+ String sName = ( String ) a.getAttribute( HTML.Attribute.HREF );
+ if ( sName != null )
+ {
+ int nIndexStart = sName.indexOf( "index.php" );
+ // get the main URL from the first header-link with index.php
+ // the link with "action=edit" inside is preferable
+ if ( nIndexStart>= 0
+ && ( m_sMainURL.length() == 0 || sName.indexOf( "action=edit" ) >= 0 ) )
+ {
+ m_sMainURL = sName.substring( 0, nIndexStart );
+ }
+ }
+ }
+ }
+
+ }
+
+ public void handleStartTag( HTML.Tag t, MutableAttributeSet a,int pos )
+ {
+ // insert code to handle starting tags
+ String sName = "";
+ String sId = "";
+ String sClass = "";
+
+ if ( t == HTML.Tag.HEAD )
+ {
+ m_bInHead = true;
+ }
+ if ( t == HTML.Tag.TEXTAREA )
+ {
+ sName = ( String ) a.getAttribute( HTML.Attribute.NAME );
+ if ( sName != null )
+ {
+ if ( sName.equalsIgnoreCase( "wpTextbox1" ) )
+ {
+ m_nWikiArticleHash = t.hashCode();
+ m_nWikiArticleStart = pos;
+ }
+ }
+ }
+ else if ( t == HTML.Tag.DIV )
+ {
+ sId = ( String ) a.getAttribute( HTML.Attribute.ID );
+ sClass = ( String ) a.getAttribute( HTML.Attribute.CLASS );
+ if ( sId != null )
+ {
+ if ( sId.equalsIgnoreCase( "contentSub" ) )
+ {
+ m_bHTMLStartFound = true;
+ }
+ }
+ if ( sClass != null )
+ {
+ if ( sClass.equalsIgnoreCase( "printfooter" ) )
+ {
+ m_nHTMLArticleEnd = pos;
+ }
+ else if ( sClass.equalsIgnoreCase( "noarticletext" ) )
+ {
+ m_nNoArticleInd = pos;
+ }
+ else if ( sClass.equalsIgnoreCase( "errorbox" ) )
+ {
+ m_nErrorInd = pos;
+ }
+ }
+ }
+ else if ( t == HTML.Tag.P )
+ {
+ sClass = ( String ) a.getAttribute( HTML.Attribute.CLASS );
+ if ( sClass != null && sClass.equalsIgnoreCase( "error" ) )
+ {
+ m_nErrorInd = pos;
+ }
+ }
+ }
+
+
+}
diff --git a/swext/mediawiki/src/com/sun/star/wiki/Helper.java b/swext/mediawiki/src/com/sun/star/wiki/Helper.java
new file mode 100644
index 000000000000..7ecd9ecb0e7c
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/Helper.java
@@ -0,0 +1,1153 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import com.sun.star.awt.MessageBoxButtons;
+import com.sun.star.awt.XControl;
+import com.sun.star.awt.XControlContainer;
+import com.sun.star.awt.XDialog;
+import com.sun.star.awt.XMessageBox;
+import com.sun.star.awt.XMessageBoxFactory;
+import com.sun.star.awt.XWindowPeer;
+import com.sun.star.beans.NamedValue;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.container.XContainerQuery;
+import com.sun.star.container.XEnumeration;
+import com.sun.star.container.XNameAccess;
+import com.sun.star.container.XNameContainer;
+import com.sun.star.document.XDocumentInfoSupplier;
+import com.sun.star.frame.XModel;
+import com.sun.star.frame.XModuleManager;
+import com.sun.star.io.XInputStream;
+import com.sun.star.io.XOutputStream;
+import com.sun.star.io.XSeekable;
+import com.sun.star.io.XStream;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.lang.XComponent;
+import com.sun.star.system.SystemShellExecuteFlags;
+import com.sun.star.system.XSystemShellExecute;
+import com.sun.star.task.UrlRecord;
+import com.sun.star.task.XInteractionHandler;
+import com.sun.star.task.XMasterPasswordHandling;
+import com.sun.star.task.XPasswordContainer;
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.util.XChangesBatch;
+import java.net.*;
+import java.io.*;
+import java.util.Hashtable;
+import java.util.Random;
+import javax.net.ssl.SSLException;
+import javax.swing.text.html.HTMLEditorKit;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HostConfiguration;
+import org.apache.commons.httpclient.HttpMethodBase;
+import org.apache.commons.httpclient.cookie.CookiePolicy;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.protocol.Protocol;
+import org.apache.commons.httpclient.URI;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.PostMethod;
+
+public class Helper
+{
+ public final static int GENERALSEND_ERROR = 0;
+ public final static int NOWIKIFILTER_ERROR = 1;
+ public final static int NOURLCONNECTION_ERROR = 2;
+ public final static int WRONGLOGIN_ERROR = 3;
+ public final static int INVALIDURL_ERROR = 4;
+ public final static int NOURL_ERROR = 5;
+
+ public final static int DLG_SENDTITLE = 6;
+ public final static int DLG_WIKIARTICLE = 7;
+ public final static int DLG_NO = 8;
+ public final static int DLG_OK = 9;
+ public final static int DLG_YES = 10;
+ // 11 is reserved
+ public final static int DLG_ADDBUTTON = 12;
+ public final static int DLG_EDITBUTTON = 13;
+ public final static int DLG_SENDBUTTON = 14;
+ public final static int DLG_REMOVEBUTTON = 15;
+
+ public final static int DLG_EDITSETTING_URLLABEL = 16;
+ public final static int DLG_EDITSETTING_USERNAMELABEL = 17;
+ public final static int DLG_EDITSETTING_PASSWORDLABEL = 18;
+ public final static int DLG_NEWWIKIPAGE_LABEL1 = 19;
+ public final static int DLG_SENDTOMEDIAWIKI_LABEL1 = 20;
+ public final static int DLG_SENDTOMEDIAWIKI_LABEL2 = 21;
+ public final static int DLG_SENDTOMEDIAWIKI_LABEL3 = 22;
+ public final static int DLG_SENDTOMEDIAWIKI_MINORCHECK = 23;
+ public final static int DLG_SENDTOMEDIAWIKI_BROWSERCHECK = 24;
+ public final static int UNKNOWNCERT_ERROR = 25;
+ public final static int DLG_MEDIAWIKI_TITLE = 26;
+ public final static int DLG_EDITSETTING_ACCOUNTLINE = 27;
+ public final static int DLG_EDITSETTING_WIKILINE = 28;
+ public final static int DLG_EDITSETTING_SAVEBOX = 29;
+ public final static int CANCELSENDING_ERROR = 30;
+ public final static int DLG_MEDIAWIKIEXTENSION_STRING = 31;
+ public final static int DLG_WIKIPAGEEXISTS_LABEL1 = 32;
+
+ public final static int STRINGS_NUM = 33;
+
+ private final static String[] m_pEntryNames = { "GeneralSendError",
+ "NoWikiFilter",
+ "NoConnectionToURL",
+ "WrongLogin",
+ "InvalidURL",
+ "NoURL",
+ "Dlg_SendTitle",
+ "Dlg_WikiArticle",
+ "Dlg_No",
+ "Dlg_OK",
+ "Dlg_Yes",
+ null, // reserved
+ "Dlg_AddButton",
+ "Dlg_EditButton",
+ "Dlg_SendButton",
+ "Dlg_RemoveButton",
+ "Dlg_EditSetting_UrlLabel",
+ "Dlg_EditSetting_UsernameLabel",
+ "Dlg_EditSetting_PasswordLabel",
+ "Dlg_NewWikiPage_Label1",
+ "Dlg_SendToMediaWiki_Label1",
+ "Dlg_SendToMediaWiki_Label2",
+ "Dlg_SendToMediaWiki_Label3",
+ "Dlg_SendToMediaWiki_MinorCheck",
+ "Dlg_SendToMediaWiki_BrowserCheck",
+ "UnknownCert",
+ "Dlg_MediaWiki_Title",
+ "Dlg_EditSetting_AccountLine",
+ "Dlg_EditSetting_WikiLine",
+ "Dlg_EditSetting_SaveBox",
+ "CancelSending",
+ "Dlg_MediaWiki_Extension_String",
+ "Dlg_WikiPageExists_Label1" };
+
+ private static String[] m_pConfigStrings;
+
+ private static final String sHTMLHeader = "<HTML><HEAD><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><TITLE></TITLE></HEAD><BODY>";
+ private static final String sHTMLFooter = "</BODY></HTML>";
+
+ private static Random m_aRandom;
+ private static MultiThreadedHttpConnectionManager m_aConnectionManager;
+ private static HttpClient m_aClient;
+ private static boolean m_bAllowConnection = true;
+ private static Hashtable m_aAcceptedUnknownCerts;
+
+ private static Boolean m_bShowInBrowser = null;
+
+ private static XPasswordContainer m_xPasswordContainer;
+ private static XInteractionHandler m_xInteractionHandler;
+
+ synchronized protected static String GetLocalizedString( XComponentContext xContext, int nID )
+ throws com.sun.star.uno.Exception
+ {
+ if ( nID >= STRINGS_NUM )
+ throw new com.sun.star.uno.RuntimeException();
+
+ if ( m_pConfigStrings == null )
+ {
+ XNameAccess xNameAccess = GetConfigNameAccess( xContext, "org.openoffice.Office.Custom.WikiExtension/Strings" );
+
+ String[] pStrings = new String[STRINGS_NUM];
+ for ( int nInd = 0; nInd < STRINGS_NUM; nInd++ )
+ if ( m_pEntryNames[nInd] != null )
+ pStrings[nInd] = AnyConverter.toString( xNameAccess.getByName( m_pEntryNames[nInd] ) );
+ else
+ pStrings[nInd] = "";
+
+ m_pConfigStrings = pStrings;
+ }
+
+ return m_pConfigStrings[nID];
+ }
+
+ synchronized protected static HttpClient GetHttpClient()
+ throws WikiCancelException
+ {
+ if ( !m_bAllowConnection )
+ throw new WikiCancelException();
+
+ if ( m_aConnectionManager == null )
+ m_aConnectionManager = new MultiThreadedHttpConnectionManager();
+
+ if ( m_aClient == null )
+ {
+ m_aClient = new HttpClient( m_aConnectionManager );
+ m_aClient.getParams().setParameter( "http.protocol.cookie-policy", CookiePolicy.BROWSER_COMPATIBILITY );
+ m_aClient.getParams().setParameter( "http.protocol.single-cookie-header", Boolean.TRUE );
+ m_aClient.getParams().setParameter( "http.protocol.content-charset", "UTF-8" );
+ }
+
+ return m_aClient;
+ }
+
+ synchronized protected static void AllowConnection( boolean bAllow )
+ {
+ m_bAllowConnection = bAllow;
+ if ( !bAllow && m_aConnectionManager != null )
+ {
+ m_aClient = null;
+ m_aConnectionManager.shutdown();
+ m_aConnectionManager = null;
+ }
+ }
+
+ synchronized protected static boolean IsConnectionAllowed()
+ {
+ return m_bAllowConnection;
+ }
+
+ synchronized protected static boolean GetShowInBrowserByDefault( XComponentContext xContext )
+ {
+ if ( m_bShowInBrowser == null )
+ {
+ try
+ {
+ XNameAccess xAccess = Helper.GetConfigNameAccess( xContext, "org.openoffice.Office.Custom.WikiExtension/Settings" );
+ m_bShowInBrowser = new Boolean( AnyConverter.toBoolean( xAccess.getByName( "PreselectShowBrowser" ) ) );
+ }
+ catch( com.sun.star.uno.Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ return m_bShowInBrowser.booleanValue();
+ }
+
+ synchronized protected static void SetShowInBrowserByDefault( XComponentContext xContext, boolean bValue )
+ {
+ try
+ {
+ m_bShowInBrowser = new Boolean( bValue );
+
+ XPropertySet xProps = Helper.GetConfigProps( xContext, "org.openoffice.Office.Custom.WikiExtension/Settings" );
+ xProps.setPropertyValue( "PreselectShowBrowser", new Boolean( bValue ) );
+ XChangesBatch xBatch = ( XChangesBatch ) UnoRuntime.queryInterface( XChangesBatch.class, xProps );
+ if ( xBatch != null )
+ xBatch.commitChanges();
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ synchronized protected static XPasswordContainer GetPasswordContainer( XComponentContext xContext )
+ throws com.sun.star.uno.Exception
+ {
+ if ( m_xPasswordContainer == null && xContext != null )
+ {
+ XMultiComponentFactory xFactory = xContext.getServiceManager();
+ if ( xFactory != null )
+ m_xPasswordContainer = (XPasswordContainer)UnoRuntime.queryInterface(
+ XPasswordContainer.class,
+ xFactory.createInstanceWithContext( "com.sun.star.task.PasswordContainer", xContext ) );
+ }
+
+ if ( m_xPasswordContainer == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ return m_xPasswordContainer;
+ }
+
+ synchronized protected static XInteractionHandler GetInteractionHandler( XComponentContext xContext )
+ throws com.sun.star.uno.Exception
+ {
+ if ( m_xInteractionHandler == null && xContext != null )
+ {
+ XMultiComponentFactory xFactory = xContext.getServiceManager();
+ if ( xFactory != null )
+ m_xInteractionHandler = ( XInteractionHandler )UnoRuntime.queryInterface(
+ XInteractionHandler.class,
+ xFactory.createInstanceWithContext( "com.sun.star.task.InteractionHandler", xContext ) );
+ }
+
+ if ( m_xInteractionHandler == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ return m_xInteractionHandler;
+ }
+
+ protected static Protocol GetOwnHttps( int nPort )
+ {
+ return new Protocol( "https", new WikiProtocolSocketFactory(), ( ( nPort < 0 ) ? 443 : nPort ) );
+ }
+
+ protected static String GetMainURL( String sWebPage, String sVURL )
+ {
+ String sResultURL = "";
+ try
+ {
+ StringReader aReader = new StringReader( sWebPage );
+ HTMLEditorKit.Parser aParser = GetHTMLParser();
+ EditPageParser aCallback = new EditPageParser();
+
+ aParser.parse( aReader, aCallback, true );
+ sResultURL = aCallback.m_sMainURL;
+
+ if ( !sResultURL.startsWith( "http" ) )
+ {
+ //if the url is only relative then complete it
+ URL aURL = new URL( sVURL );
+ sResultURL = aURL.getProtocol() + "://" + aURL.getHost() + sResultURL;
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ if ( sResultURL.length() == 0 )
+ {
+ // usually that should not happen
+ // workaround: try to get index.php from the provided URL
+ int nIndex = sVURL.indexOf( "index.php" );
+ if ( nIndex >= 0 )
+ sResultURL = sVURL.substring( 0, nIndex );
+ }
+
+ return sResultURL;
+ }
+
+ protected static String GetRedirectURL( String sWebPage, String sURL )
+ {
+ //scrape the HTML source and find the EditURL
+ // TODO/LATER: Use parser in future
+
+ String sResultURL = "";
+ int nInd = sWebPage.indexOf( "http-equiv=\"refresh\"" );
+ if ( nInd != -1 )
+ {
+ int nContent = sWebPage.indexOf( "content=", nInd );
+ if ( nContent > 0 )
+ {
+ int nURL = sWebPage.indexOf( "URL=", nContent );
+ if ( nURL > 0 )
+ {
+ int nEndURL = sWebPage.indexOf( "\"", nURL );
+ if ( nEndURL > 0 )
+ sResultURL = sWebPage.substring( nURL + 4, nEndURL );
+ }
+ }
+
+ try
+ {
+ URL aURL = new URL( sURL );
+ if ( !sResultURL.startsWith( aURL.getProtocol() ))
+ {
+ //if the url is only relative then complete it
+ if ( sResultURL.startsWith( "/" ) )
+ sResultURL = aURL.getProtocol() + "://" + aURL.getHost() + sResultURL;
+ else
+ sResultURL = aURL.getProtocol() + "://" + aURL.getHost() + aURL.getPath() + sResultURL;
+ }
+ }
+ catch ( MalformedURLException ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ return sResultURL;
+
+ }
+
+ protected static XInputStream SaveHTMLTemp( XComponentContext xContext, String sArticle )
+ {
+ XInputStream xResult = null;
+
+ if ( xContext != null )
+ {
+ try
+ {
+ Object oTempFile = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.io.TempFile", xContext );
+ XStream xStream = ( XStream ) UnoRuntime.queryInterface( XStream.class, oTempFile );
+ XSeekable xSeekable = ( XSeekable ) UnoRuntime.queryInterface( XSeekable.class, oTempFile );
+ if ( xStream != null && xSeekable != null )
+ {
+ XOutputStream xOutputStream = xStream.getOutputStream();
+ XInputStream xInputStream = xStream.getInputStream();
+ if ( xOutputStream != null && xInputStream != null )
+ {
+ String sHTML = sHTMLHeader.concat( sArticle );
+ sHTML = sHTML.concat( sHTMLFooter );
+ xOutputStream.writeBytes( sHTML.getBytes( "UTF-8" ) );
+ // xOutputStream.closeOutput();
+ xSeekable.seek( 0 );
+
+ xResult = xInputStream;
+ }
+ }
+ }
+ catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ return xResult;
+ }
+
+
+ protected static String CreateTempFile( XComponentContext xContext )
+ {
+ String sURL = "";
+ try
+ {
+ Object oTempFile = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.io.TempFile", xContext );
+ XPropertySet xPropertySet = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, oTempFile );
+ xPropertySet.setPropertyValue( "RemoveFile", Boolean.FALSE );
+ sURL = ( String ) xPropertySet.getPropertyValue( "Uri" );
+
+ XInputStream xInputStream = ( XInputStream ) UnoRuntime.queryInterface( XInputStream.class, oTempFile );
+ xInputStream.closeInput();
+ XOutputStream xOutputStream = ( XOutputStream ) UnoRuntime.queryInterface( XOutputStream.class, oTempFile );
+ xOutputStream.closeOutput();
+ } catch ( com.sun.star.uno.Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ return sURL;
+ }
+
+ protected static String EachLine( String sURL )
+ {
+ String sText = "";
+ try
+ {
+ URL aURL = new URL( sURL );
+ File aFile = new File( aURL.getFile() );
+ InputStreamReader aInputReader = new InputStreamReader( new FileInputStream( aFile ), "UTF-8" );
+ BufferedReader aBufReader = new BufferedReader( aInputReader );
+
+ StringBuffer aBuf = new StringBuffer();
+ String sEachLine = aBufReader.readLine();
+
+ while( sEachLine != null )
+ {
+ aBuf.append( sEachLine );
+ aBuf.append( "\n" );
+
+ sEachLine = aBufReader.readLine();
+ }
+ sText = aBuf.toString();
+ } catch ( Exception e )
+ {
+ e.printStackTrace();
+ }
+ return sText;
+ }
+
+ protected static String GetDocTitle( XModel xDoc )
+ {
+ String sTitle = "";
+ XDocumentInfoSupplier xDocInfoSup = ( XDocumentInfoSupplier ) UnoRuntime.queryInterface( XDocumentInfoSupplier.class, xDoc );
+ XPropertySet xPropSet = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, xDocInfoSup.getDocumentInfo() );
+ try
+ {
+ sTitle = ( String ) xPropSet.getPropertyValue( "Title" );
+ } catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ return sTitle;
+ }
+
+ protected static void SetDocTitle( XModel xDoc, String sTitle )
+ {
+ XDocumentInfoSupplier xDocInfoSup = ( XDocumentInfoSupplier ) UnoRuntime.queryInterface( XDocumentInfoSupplier.class, xDoc );
+ if ( xDocInfoSup != null )
+ {
+ XPropertySet xPropSet = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, xDocInfoSup.getDocumentInfo() );
+ if ( xPropSet != null )
+ {
+ try
+ {
+ xPropSet.setPropertyValue( "Title", sTitle );
+ }
+ catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+
+ protected static String GetDocServiceName( XComponentContext xContext, XModel xModel )
+ {
+ String aDocServiceName = "";
+ if ( xModel != null && xContext != null )
+ {
+ try
+ {
+ XMultiComponentFactory xFactory = xContext.getServiceManager();
+ if ( xFactory == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ Object oModuleManager = xFactory.createInstanceWithContext( "com.sun.star.frame.ModuleManager", xContext );
+ XModuleManager xModuleManager = ( XModuleManager ) UnoRuntime.queryInterface( XModuleManager.class, oModuleManager );
+ if ( xModuleManager != null )
+ aDocServiceName = xModuleManager.identify( xModel );
+ }
+ catch( java.lang.Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ return aDocServiceName;
+ }
+
+ protected static String GetFilterName( XComponentContext xContext, String aTypeName, String aDocServiceName )
+ {
+ String aFilterName = "";
+ if ( xContext != null && aTypeName != null && aTypeName.length() != 0
+ && aDocServiceName != null && aDocServiceName.length() != 0 )
+ {
+ try
+ {
+ Object oFilterFactory = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.document.FilterFactory", xContext );
+ XContainerQuery xQuery = ( XContainerQuery )UnoRuntime.queryInterface( XContainerQuery.class, oFilterFactory );
+ if ( xQuery != null )
+ {
+ NamedValue[] aRequest = new NamedValue[2];
+ aRequest[0] = new NamedValue( "Type", aTypeName );
+ aRequest[1] = new NamedValue( "DocumentService", aDocServiceName );
+
+ XEnumeration xSet = xQuery.createSubSetEnumerationByProperties( aRequest );
+ if ( xSet != null )
+ {
+ boolean bAcceptable = false;
+ while ( xSet.hasMoreElements() && !bAcceptable )
+ {
+ PropertyValue[] pFilterProps = ( PropertyValue[] )AnyConverter.toArray( xSet.nextElement() );
+ if ( pFilterProps != null )
+ {
+ int nLen = pFilterProps.length;
+ String aTmpFilter = null;
+
+ for ( int nInd = 0; nInd < nLen; nInd++ )
+ {
+ if ( pFilterProps[nInd].Name.equals( "Name" ) )
+ aTmpFilter = AnyConverter.toString( pFilterProps[nInd].Value );
+ else if ( pFilterProps[nInd].Name.equals( "Flags" ) )
+ bAcceptable = ( ( AnyConverter.toInt( pFilterProps[nInd].Value ) & 2 ) == 2 ); // must allow export
+ }
+
+ if ( bAcceptable )
+ aFilterName = aTmpFilter;
+ }
+ }
+ }
+ }
+ }
+ catch( java.lang.Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ return aFilterName;
+ }
+
+ protected static XMultiServiceFactory GetConfigurationProvider( XComponentContext xContext )
+ throws com.sun.star.uno.Exception
+ {
+ XMultiServiceFactory xConfigurationProvider = null;
+ if ( xContext != null )
+ {
+ XMultiComponentFactory xFactory = xContext.getServiceManager();
+ Object oConfigProvider = xFactory.createInstanceWithContext( "com.sun.star.configuration.ConfigurationProvider", xContext );
+ xConfigurationProvider = ( XMultiServiceFactory ) UnoRuntime.queryInterface( XMultiServiceFactory.class, oConfigProvider );
+ }
+
+ if ( xConfigurationProvider == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ return xConfigurationProvider;
+ }
+
+ protected static Object GetConfig( XComponentContext xContext, String sNodepath, boolean bWriteAccess )
+ throws com.sun.star.uno.Exception
+ {
+ if ( xContext == null || sNodepath == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ PropertyValue aVal = new PropertyValue();
+ aVal.Name = "nodepath";
+ aVal.Value = sNodepath;
+ Object[] aArgs = new Object[1];
+ aArgs[0] = aVal;
+
+ return GetConfigurationProvider( xContext ).createInstanceWithArguments(
+ ( bWriteAccess ? "com.sun.star.configuration.ConfigurationUpdateAccess"
+ : "com.sun.star.configuration.ConfigurationAccess" ),
+ aArgs );
+ }
+
+ protected static XPropertySet GetConfigProps( XComponentContext xContext, String sNodepath )
+ throws com.sun.star.uno.Exception
+ {
+ XPropertySet xProps = ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, GetConfig( xContext, sNodepath, true ) );
+ if ( xProps == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ return xProps;
+ }
+
+
+ protected static XNameContainer GetConfigNameContainer( XComponentContext xContext, String sNodepath )
+ throws com.sun.star.uno.Exception
+ {
+ XNameContainer xContainer = ( XNameContainer ) UnoRuntime.queryInterface( XNameContainer.class, GetConfig( xContext, sNodepath, true ) );
+ if ( xContainer == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ return xContainer;
+ }
+
+ protected static XNameAccess GetConfigNameAccess( XComponentContext xContext, String sNodepath )
+ throws com.sun.star.uno.Exception
+ {
+ XNameAccess xNameAccess = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, GetConfig( xContext, sNodepath, false ) );
+ if ( xNameAccess == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ return xNameAccess;
+ }
+
+ protected static void SetConfigurationProxy( HostConfiguration aHostConfig, XComponentContext xContext )
+ {
+ if ( aHostConfig == null || xContext == null )
+ return;
+
+ try
+ {
+ XNameAccess xNameAccess = GetConfigNameAccess( xContext, "org.openoffice.Inet/Settings" );
+
+ int nProxyType = AnyConverter.toInt( xNameAccess.getByName( "ooInetProxyType" ) );
+ if ( nProxyType == 0 )
+ aHostConfig.setProxyHost( null );
+ else
+ {
+ if ( nProxyType == 1 )
+ {
+ // system proxy
+ }
+ else if ( nProxyType == 2 )
+ {
+ String aProxyNameProp = "ooInetHTTPProxyName";
+ String aProxyPortProp = "ooInetHTTPProxyPort";
+
+ if ( aHostConfig.getProtocol().getScheme().equals( "https" ) )
+ {
+ aProxyNameProp = "ooInetHTTPSProxyName";
+ aProxyPortProp = "ooInetHTTPSProxyPort";
+ }
+
+ String aNoProxyList = AnyConverter.toString( xNameAccess.getByName( "ooInetNoProxy" ) );
+ String aProxyName = AnyConverter.toString( xNameAccess.getByName( aProxyNameProp ) );
+
+ int nProxyPort = 80;
+
+ Object aPortNo = xNameAccess.getByName( aProxyPortProp );
+ if ( !AnyConverter.isVoid( aPortNo ) )
+ nProxyPort = AnyConverter.toInt( aPortNo );
+
+ if ( nProxyPort == -1 )
+ nProxyPort = 80;
+
+ // TODO: check whether the URL is in the NoProxy list
+ aHostConfig.setProxy( aProxyName, nProxyPort );
+ }
+ }
+ }
+ catch( java.lang.Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ protected static void ShowURLInBrowser( XComponentContext xContext, String sURL )
+ {
+ if ( xContext != null && sURL != null && sURL.length() > 0 )
+ {
+ try
+ {
+ Object oSystemShell = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.system.SystemShellExecute", xContext );
+ XSystemShellExecute xSystemShell = (XSystemShellExecute)UnoRuntime.queryInterface( XSystemShellExecute.class, oSystemShell );
+ if ( xSystemShell != null )
+ xSystemShell.execute( sURL, "", SystemShellExecuteFlags.DEFAULTS );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ protected static void ExecuteMethod( HttpMethodBase aMethod, HostConfiguration aHostConfig, URI aURI, XComponentContext xContext, boolean bSetHost )
+ throws WikiCancelException, IOException, SSLException
+ {
+ if ( aMethod != null && aHostConfig != null && aURI != null && xContext != null )
+ {
+ if ( bSetHost )
+ {
+ aHostConfig.setHost( aURI );
+ SetConfigurationProxy( aHostConfig, xContext );
+ }
+
+ boolean bNoUnknownCertNotification = false;
+ if ( aHostConfig.getProtocol().getScheme().equals( "https" )
+ && AllowUnknownCert( xContext, aURI.getHost() ) )
+ {
+ // let unknown certificates be accepted
+ {
+ {
+ aHostConfig.setHost( aHostConfig.getHost(), ( aURI.getPort() < 0 ? 443 : aURI.getPort() ), Helper.GetOwnHttps( aURI.getPort() ) );
+ Helper.GetHttpClient().executeMethod( aHostConfig, aMethod );
+ }
+ }
+ }
+ else
+ {
+ Helper.GetHttpClient().executeMethod( aHostConfig, aMethod );
+ }
+ }
+ }
+
+ static private class HTMLParse extends HTMLEditorKit
+ {
+
+ public HTMLEditorKit.Parser getParser()
+ {
+ return super.getParser();
+ }
+ }
+
+ static protected HTMLEditorKit.Parser GetHTMLParser()
+ {
+ return new HTMLParse().getParser();
+ }
+
+ static protected boolean LoginReportsError( String sRespond )
+ {
+ boolean bResult = true;
+ if ( sRespond != null )
+ {
+ try
+ {
+ StringReader aReader = new StringReader( sRespond );
+ HTMLEditorKit.Parser aParser = GetHTMLParser();
+ EditPageParser aCallback = new EditPageParser();
+
+ aParser.parse( aReader, aCallback, true );
+ bResult = ( aCallback.m_nErrorInd >= 0 );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ return bResult;
+ }
+
+ static protected String GetLoginToken( String sLoginPage )
+ {
+ String sResult = "";
+ if ( sLoginPage != null && sLoginPage.length() > 0 )
+ {
+ try
+ {
+ StringReader aReader = new StringReader( sLoginPage );
+ HTMLEditorKit.Parser aParser = Helper.GetHTMLParser();
+ EditPageParser aCallbacks = new EditPageParser();
+
+ aParser.parse( aReader, aCallbacks, true );
+ sResult = aCallbacks.m_sLoginToken;
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ return sResult;
+ }
+
+ static protected HostConfiguration Login( URI aMainURL, String sWikiUser, String sWikiPass, XComponentContext xContext )
+ throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException
+ {
+ HostConfiguration aHostConfig = null;
+
+ if ( sWikiUser != null && sWikiPass != null && xContext != null )
+ {
+ HostConfiguration aNewHostConfig = new HostConfiguration();
+
+ URI aURI = new URI( aMainURL.toString() + "index.php?title=Special:Userlogin" );
+ GetMethod aGetCookie = new GetMethod( aURI.getEscapedPathQuery() );
+
+ ExecuteMethod( aGetCookie, aNewHostConfig, aURI, xContext, true );
+
+ int nResultCode = aGetCookie.getStatusCode();
+ String sLoginPage = null;
+ if ( nResultCode == 200 )
+ sLoginPage = aGetCookie.getResponseBodyAsString();
+
+ aGetCookie.releaseConnection();
+
+ if ( sLoginPage != null )
+ {
+ String sLoginToken = GetLoginToken( sLoginPage );
+
+ PostMethod aPost = new PostMethod();
+ URI aPostURI = new URI( aMainURL.getPath() + "index.php?title=Special:Userlogin&action=submitlogin" );
+ aPost.setPath( aPostURI.getEscapedPathQuery() );
+
+ aPost.addParameter( "wpName", sWikiUser );
+ aPost.addParameter( "wpRemember", "1" );
+ aPost.addParameter( "wpPassword", sWikiPass );
+ if ( sLoginToken.length() > 0 )
+ aPost.addParameter( "wpLoginToken", sLoginToken );
+
+ String[][] pArgs = GetSpecialArgs( xContext, aMainURL.getHost() );
+ if ( pArgs != null )
+ for ( int nArgInd = 0; nArgInd < pArgs.length; nArgInd++ )
+ if ( pArgs[nArgInd].length == 2 && pArgs[nArgInd][0] != null && pArgs[nArgInd][1] != null )
+ aPost.addParameter( pArgs[nArgInd][0], pArgs[nArgInd][1] );
+
+ ExecuteMethod( aPost, aNewHostConfig, aPostURI, xContext, false );
+
+ nResultCode = aPost.getStatusCode();
+
+ while( nResultCode >= 301 && nResultCode <= 303 || nResultCode == 307 )
+ {
+ String sRedirectURL = aPost.getResponseHeader( "Location" ).getValue();
+ aPost.releaseConnection();
+
+ aURI = new URI( sRedirectURL );
+ aPost = new PostMethod();
+ aPost.setPath( aURI.getEscapedPathQuery() );
+ ExecuteMethod( aPost, aNewHostConfig, aURI, xContext, false );
+
+ nResultCode = aPost.getStatusCode();
+ }
+
+ if ( nResultCode == 200 )
+ {
+ String sResult = aPost.getResponseBodyAsString();
+ if ( !LoginReportsError( sResult ) )
+ aHostConfig = aNewHostConfig;
+ }
+
+ aPost.releaseConnection();
+ }
+ }
+
+ return aHostConfig;
+ }
+
+ private static XControl GetControlFromDialog( XDialog xDialog, String aControlName )
+ {
+ XControl xResult = null;
+ XControlContainer xControlCont = (XControlContainer) UnoRuntime.queryInterface( XControlContainer.class, xDialog );
+
+ if ( xControlCont != null )
+ {
+ Object oControl = xControlCont.getControl( aControlName );
+ xResult = ( XControl ) UnoRuntime.queryInterface( XControl.class, oControl );
+ }
+
+ return xResult;
+ }
+
+ private static XPropertySet GetSubControlPropSet( XDialog xDialog, String aControlName )
+ {
+ XControl xControl = GetControlFromDialog( xDialog, aControlName );
+ if ( xControl != null )
+ return ( XPropertySet ) UnoRuntime.queryInterface( XPropertySet.class, xControl.getModel() );
+
+ return null;
+ }
+
+ protected static void SetControlPropInDialog( XDialog xDialog, String aControlName, String aPropName, Object aPropValue )
+ {
+ if ( xDialog != null && aControlName != null && aPropName != null && aPropValue != null )
+ {
+ try
+ {
+ XPropertySet xPropSet = GetSubControlPropSet( xDialog, aControlName );
+ if ( xPropSet != null )
+ xPropSet.setPropertyValue( aPropName, aPropValue );
+ }
+ catch ( com.sun.star.uno.Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ protected static String[] GetPasswordsForURLAndUser( XComponentContext xContext, String sURL, String sUserName )
+ {
+ String[] aResult = null;
+
+ try
+ {
+ if ( xContext != null && sURL != null && sURL.length() > 0 && sUserName != null && sUserName.length() > 0 )
+ {
+ UrlRecord aRec = GetPasswordContainer( xContext ).findForName( sURL, sUserName, GetInteractionHandler( xContext ) );
+ if ( aRec != null && aRec.UserList != null && aRec.UserList.length > 0
+ && aRec.UserList[0].UserName.equals( sUserName ) )
+ aResult = aRec.UserList[0].Passwords;
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ return aResult;
+ }
+
+ protected static boolean PasswordStoringIsAllowed( XComponentContext xContext )
+ {
+ boolean bResult = false;
+ try
+ {
+ XMasterPasswordHandling xMasterHdl = (XMasterPasswordHandling)UnoRuntime.queryInterface( XMasterPasswordHandling.class, GetPasswordContainer( xContext ) );
+ if ( xMasterHdl != null )
+ bResult = xMasterHdl.isPersistentStoringAllowed();
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ return bResult;
+ }
+
+ protected static void ShowError( XComponentContext xContext, XDialog xDialog, int nTitleID, int nErrorID, String sArg, boolean bQuery )
+ {
+ XWindowPeer xPeer = null;
+ XControl xControl = (XControl)UnoRuntime.queryInterface( XControl.class, xDialog );
+ if ( xControl != null )
+ xPeer = xControl.getPeer();
+ ShowError( xContext, xPeer, nTitleID, nErrorID, sArg, bQuery );
+ }
+
+ protected static boolean ShowError( XComponentContext xContext, XWindowPeer xParentPeer, int nTitleID, int nErrorID, String sArg, boolean bQuery )
+ {
+ boolean bResult = false;
+
+ if ( xContext != null && nErrorID >= 0 && nErrorID < STRINGS_NUM )
+ {
+ boolean bShown = false;
+
+ String sError = null;
+ String sTitle = "";
+
+ try
+ {
+ sError = GetLocalizedString( xContext, nErrorID );
+ if ( sError != null && sArg != null )
+ sError = sError.replaceAll( "\\$ARG1", sArg );
+
+ sTitle = GetLocalizedString( xContext, nTitleID );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ if ( sError == null )
+ sError = "Error: " + nErrorID;
+
+ if ( xParentPeer != null )
+ {
+ XMessageBoxFactory xMBFactory = null;
+ XMessageBox xMB = null;
+ try
+ {
+ XMultiComponentFactory xFactory = xContext.getServiceManager();
+ if ( xFactory != null )
+ xMBFactory = (XMessageBoxFactory)UnoRuntime.queryInterface(
+ XMessageBoxFactory.class,
+ xFactory.createInstanceWithContext( "com.sun.star.awt.Toolkit", xContext ) );
+
+ if ( xMBFactory != null )
+ {
+ if ( bQuery )
+ {
+ xMB = xMBFactory.createMessageBox(
+ xParentPeer,
+ new com.sun.star.awt.Rectangle(),
+ "querybox",
+ MessageBoxButtons.BUTTONS_YES_NO | MessageBoxButtons.DEFAULT_BUTTON_NO,
+ sTitle,
+ sError );
+ }
+ else
+ {
+ xMB = xMBFactory.createMessageBox(
+ xParentPeer,
+ new com.sun.star.awt.Rectangle(),
+ "errorbox",
+ MessageBoxButtons.BUTTONS_OK,
+ sTitle,
+ sError );
+ }
+ if ( xMB != null )
+ {
+ bResult = MainThreadDialogExecutor.Execute( xContext, xMB );
+ bShown = true;
+ }
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ finally
+ {
+ if ( xMB != null )
+ Dispose( xMB );
+ }
+ }
+ }
+
+ return bResult;
+ }
+
+ private static boolean AllowUnknownCert( XComponentContext xContext, String aURL )
+ {
+ try
+ {
+ XNameAccess xNameAccess = GetConfigNameAccess( xContext, "org.openoffice.Office.Custom.WikiExtension/SpecialData" );
+ if ( xNameAccess.hasByName( aURL ) )
+ {
+ XNameAccess xEntry = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, xNameAccess.getByName( aURL ) );
+ if ( xEntry != null && xEntry.hasByName( "AllowUnknownCertificate" ) )
+ return AnyConverter.toBoolean( xEntry.getByName( "AllowUnknownCertificate" ) );
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ return false;
+ }
+
+ private static String[][] GetSpecialArgs( XComponentContext xContext, String aURL )
+ {
+ try
+ {
+ XNameAccess xNameAccess = GetConfigNameAccess( xContext, "org.openoffice.Office.Custom.WikiExtension/SpecialData" );
+ if ( xNameAccess.hasByName( aURL ) )
+ {
+ XNameAccess xEntry = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, xNameAccess.getByName( aURL ) );
+ if ( xEntry != null )
+ {
+ XNameAccess xArgs = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, xEntry.getByName( "AdditionalLoginArguments" ) );
+ if ( xArgs != null )
+ {
+ String[] pNames = xArgs.getElementNames();
+ if ( pNames != null && pNames.length > 0 )
+ {
+ String[][] pResult = new String[pNames.length][2];
+ for ( int nInd = 0; nInd < pNames.length; nInd++ )
+ {
+ XNameAccess xArgument = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, xArgs.getByName( pNames[nInd] ) );
+ if ( xArgument == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ pResult[nInd][0] = pNames[nInd];
+ pResult[nInd][1] = AnyConverter.toString( xArgument.getByName( "Value" ) );
+ }
+
+ return pResult;
+ }
+ }
+ }
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ protected static boolean AllowThreadUsage( XComponentContext xContext )
+ {
+ if ( xContext != null )
+ {
+ try
+ {
+ XMultiComponentFactory xFactory = xContext.getServiceManager();
+ if ( xFactory == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ Object oCheckCallback = xFactory.createInstanceWithContext( "com.sun.star.awt.AsyncCallback", xContext );
+ return ( oCheckCallback != null );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ return false;
+ }
+
+ public static void Dispose( Object oObject )
+ {
+ if ( oObject != null )
+ {
+ try
+ {
+ XComponent xComp = (XComponent)UnoRuntime.queryInterface( XComponent.class, oObject );
+ if ( xComp != null )
+ xComp.dispose();
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+}
+
diff --git a/swext/mediawiki/src/com/sun/star/wiki/MainThreadDialogExecutor.java b/swext/mediawiki/src/com/sun/star/wiki/MainThreadDialogExecutor.java
new file mode 100644
index 000000000000..dbf849fa4ef0
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/MainThreadDialogExecutor.java
@@ -0,0 +1,176 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import com.sun.star.uno.Any;
+import com.sun.star.awt.XDialog;
+import com.sun.star.awt.XCallback;
+import com.sun.star.awt.XMessageBox;
+import com.sun.star.awt.XRequestCallback;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+
+public class MainThreadDialogExecutor implements XCallback
+{
+ private WikiDialog m_aWikiDialog;
+ private XDialog m_xDialog;
+ private XMessageBox m_xMessageBox;
+ private boolean m_bResult = false;
+ private boolean m_bCalled = false;
+ private boolean m_bClose = false;
+
+ static public boolean Show( XComponentContext xContext, WikiDialog aWikiDialog )
+ {
+ MainThreadDialogExecutor aExecutor = new MainThreadDialogExecutor( aWikiDialog );
+ return GetCallback( xContext, aExecutor );
+ }
+
+ static public boolean Execute( XComponentContext xContext, XDialog xDialog )
+ {
+ MainThreadDialogExecutor aExecutor = new MainThreadDialogExecutor( xDialog );
+ return GetCallback( xContext, aExecutor );
+ }
+
+ static public boolean Execute( XComponentContext xContext, XMessageBox xMessageBox )
+ {
+ MainThreadDialogExecutor aExecutor = new MainThreadDialogExecutor( xMessageBox );
+ return GetCallback( xContext, aExecutor );
+ }
+
+ static public boolean Close( XComponentContext xContext, XDialog xDialog )
+ {
+ MainThreadDialogExecutor aExecutor = new MainThreadDialogExecutor( xDialog, true );
+ return GetCallback( xContext, aExecutor );
+ }
+
+ static private boolean GetCallback( XComponentContext xContext, MainThreadDialogExecutor aExecutor )
+ {
+ try
+ {
+ if ( aExecutor != null )
+ {
+ String aThreadName = null;
+ Thread aCurThread = Thread.currentThread();
+ if ( aCurThread != null )
+ aThreadName = aCurThread.getName();
+
+ if ( aThreadName != null && aThreadName.equals( "com.sun.star.thread.WikiEditorSendingThread" ) )
+ {
+ // the main thread should be accessed asynchronously
+ XMultiComponentFactory xFactory = xContext.getServiceManager();
+ if ( xFactory == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ XRequestCallback xRequest = (XRequestCallback)UnoRuntime.queryInterface(
+ XRequestCallback.class,
+ xFactory.createInstanceWithContext( "com.sun.star.awt.AsyncCallback", xContext ) );
+ if ( xRequest != null )
+ {
+ xRequest.addCallback( aExecutor, Any.VOID );
+ do
+ {
+ Thread.yield();
+ }
+ while( !aExecutor.m_bCalled );
+ }
+ }
+ else
+ {
+ // handle it as a main thread
+ aExecutor.notify( Any.VOID );
+ }
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ return aExecutor.GetResult();
+ }
+
+ private MainThreadDialogExecutor( WikiDialog aWikiDialog )
+ {
+ m_aWikiDialog = aWikiDialog;
+ }
+
+ private MainThreadDialogExecutor( XDialog xDialog )
+ {
+ m_xDialog = xDialog;
+ }
+
+ private MainThreadDialogExecutor( XDialog xDialog, boolean bClose )
+ {
+ m_xDialog = xDialog;
+ m_bClose = true;
+ m_bCalled = true; // no yielding, asynchronous closing
+ }
+
+ private MainThreadDialogExecutor( XMessageBox xMessageBox )
+ {
+ m_xMessageBox = xMessageBox;
+ }
+
+ private boolean GetResult()
+ {
+ return m_bResult;
+ }
+
+ public void notify( Object aData )
+ {
+ if ( m_aWikiDialog != null )
+ m_bResult = m_aWikiDialog.show();
+ else if ( m_xDialog != null )
+ {
+ if ( !m_bClose )
+ m_bResult = ( m_xDialog.execute() == 1 );
+ else
+ {
+ try
+ {
+ m_xDialog.endExecute();
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ m_bResult = true;
+ }
+ }
+ else if ( m_xMessageBox != null )
+ {
+ int nRes = m_xMessageBox.execute();
+ m_bResult = ( nRes == com.sun.star.awt.MessageBoxCommand.OK
+ || nRes == com.sun.star.awt.MessageBoxCommand.YES );
+ }
+
+ m_bCalled = true;
+ }
+};
+
diff --git a/swext/mediawiki/src/com/sun/star/wiki/Settings.java b/swext/mediawiki/src/com/sun/star/wiki/Settings.java
new file mode 100644
index 000000000000..d14c4eae4b52
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/Settings.java
@@ -0,0 +1,347 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.container.XNameAccess;
+import com.sun.star.container.XNameContainer;
+import com.sun.star.container.XNameReplace;
+import com.sun.star.lang.XSingleServiceFactory;
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.util.XChangesBatch;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Vector;
+
+public class Settings
+{
+
+ private XComponentContext m_xContext;
+ private int lastUsedWikiServer = 0;
+
+
+ /* Singelton */
+ private static Settings m_instance;
+
+
+ private Vector m_WikiConnections = new Vector();
+ private Vector m_aWikiDocs = new Vector();
+
+ private Settings( XComponentContext ctx )
+ {
+ m_xContext=ctx;
+ loadConfiguration();
+ }
+
+
+ public static synchronized Settings getSettings( XComponentContext ctx )
+ {
+ if ( m_instance == null )
+ m_instance = new Settings( ctx );
+ // m_instance.loadSettings();
+ return m_instance;
+ }
+
+
+ public void addWikiCon ( Hashtable wikiCon )
+ {
+ m_WikiConnections.add( wikiCon );
+ }
+
+
+ public Vector getWikiCons()
+ {
+ return m_WikiConnections;
+ }
+
+ public String getWikiConUrlByNumber( int num )
+ {
+ String url = "";
+ if ( num >=0 && num < m_WikiConnections.size() )
+ {
+ Hashtable ht = ( Hashtable ) m_WikiConnections.get( num );
+ url = ( String ) ht.get( "Url" );
+ }
+ return url;
+ }
+
+
+ public void addWikiDoc ( Hashtable aWikiDoc )
+ {
+ String sURL = ( String ) aWikiDoc.get( "CompleteUrl" );
+ Hashtable aEntry = getDocByCompleteUrl( sURL );
+
+ if ( aEntry != null )
+ {
+ // add doc to the end, even if it has been added before
+ m_aWikiDocs.remove( aEntry );
+ }
+ else if ( m_aWikiDocs.size() > 10 )
+ {
+ // if the number of elements has reached maximum the oldest element should be removed
+ m_aWikiDocs.remove( 0 );
+ }
+
+ m_aWikiDocs.add( aWikiDoc );
+ }
+
+
+ public Vector getWikiDocs()
+ {
+ return m_aWikiDocs;
+ }
+
+ public Object[] getWikiDocList( int serverid, int num )
+ {
+ String wikiserverurl = getWikiConUrlByNumber( serverid );
+ Vector theDocs = new Vector();
+ String [] docs = new String[0];
+ for ( int i=0; i<m_aWikiDocs.size(); i++ )
+ {
+ Hashtable ht = ( Hashtable ) m_aWikiDocs.get( i );
+ String docurl = ( String ) ht.get( "Url" );
+ if ( docurl.equals( wikiserverurl ) )
+ {
+ theDocs.add( (String ) ht.get( "Doc" ) );
+ }
+ }
+ return theDocs.toArray( docs );
+ }
+
+ public int getLastUsedWikiServer()
+ {
+ return lastUsedWikiServer;
+ }
+
+ public void setLastUsedWikiServer( int l )
+ {
+ lastUsedWikiServer = l;
+ }
+
+ public String[] getWikiURLs()
+ {
+ String [] WikiList = new String [m_WikiConnections.size()];
+ for ( int i=0; i<m_WikiConnections.size(); i++ )
+ {
+ Hashtable ht = ( Hashtable ) m_WikiConnections.get( i );
+ WikiList[i] = ( String ) ht.get( "Url" );
+ }
+ return WikiList;
+ }
+
+
+ public Hashtable getSettingByUrl( String sUrl )
+ {
+ Hashtable ht = null;
+ for( int i=0;i<m_WikiConnections.size();i++ )
+ {
+ Hashtable h1 = ( Hashtable ) m_WikiConnections.get( i );
+ String u1 = ( String ) h1.get( "Url" );
+ if ( u1.equals( sUrl ) )
+ {
+ ht = h1;
+ try
+ {
+ String sUserName = (String)ht.get( "Username" );
+ String aPassword = (String)ht.get( "Password" );
+ if ( sUserName != null && sUserName.length() > 0 && ( aPassword == null || aPassword.length() == 0 ) )
+ {
+ String[] pPasswords = Helper.GetPasswordsForURLAndUser( m_xContext, sUrl, sUserName );
+ if ( pPasswords != null && pPasswords.length > 0 )
+ ht.put( "Password", pPasswords[0] );
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ break;
+ }
+ }
+ return ht;
+ }
+
+ public Hashtable getDocByCompleteUrl( String curl )
+ {
+ Hashtable ht = null;
+ for( int i=0;i<m_aWikiDocs.size();i++ )
+ {
+ Hashtable h1 = ( Hashtable ) m_aWikiDocs.get( i );
+ String u1 = ( String ) h1.get( "CompleteUrl" );
+ if ( u1.equals( curl ) )
+ {
+ ht = h1;
+ }
+ }
+ return ht;
+ }
+
+
+ public void removeSettingByUrl( String sUrl )
+ {
+ Hashtable ht = null;
+ for( int i=0;i<m_WikiConnections.size();i++ )
+ {
+ Hashtable h1 = ( Hashtable ) m_WikiConnections.get( i );
+ String u1 = ( String ) h1.get( "Url" );
+ if ( u1.equals( sUrl ) )
+ {
+ m_WikiConnections.remove( i );
+ }
+ }
+ }
+
+
+ public void storeConfiguration()
+ {
+ try
+ {
+ // remove stored connection information
+ XNameContainer xContainer = Helper.GetConfigNameContainer( m_xContext, "org.openoffice.Office.Custom.WikiExtension/ConnectionList" );
+ String[] pNames = xContainer.getElementNames();
+ for( int i=0; i<pNames.length; i++ )
+ {
+ xContainer.removeByName( pNames[i] );
+ }
+
+ // store all connections
+ XSingleServiceFactory xConnectionFactory = ( XSingleServiceFactory ) UnoRuntime.queryInterface( XSingleServiceFactory.class, xContainer );
+ for ( int i=0; i< m_WikiConnections.size(); i++ )
+ {
+ Object oNewConnection = xConnectionFactory.createInstance();
+ Hashtable ht = ( Hashtable ) m_WikiConnections.get( i );
+ XNameReplace xNewConn = ( XNameReplace ) UnoRuntime.queryInterface( XNameReplace.class, oNewConnection );
+
+ if ( xNewConn != null )
+ xNewConn.replaceByName( "UserName", ht.get( "Username" ) );
+
+ xContainer.insertByName( (String)ht.get( "Url" ), xNewConn );
+ }
+ // commit changes
+ XChangesBatch xBatch = ( XChangesBatch ) UnoRuntime.queryInterface( XChangesBatch.class, xContainer );
+ xBatch.commitChanges();
+
+ // remove stored connection information
+ XNameContainer xContainer2 = Helper.GetConfigNameContainer( m_xContext, "org.openoffice.Office.Custom.WikiExtension/RecentDocs" );
+ String[] pNames2 = xContainer2.getElementNames();
+ for( int i=0; i<pNames2.length; i++ )
+ {
+ xContainer2.removeByName( pNames2[i] );
+ }
+ // store all Docs
+ XSingleServiceFactory xDocListFactory = ( XSingleServiceFactory ) UnoRuntime.queryInterface( XSingleServiceFactory.class, xContainer2 );
+ for ( int i=0; i< m_aWikiDocs.size(); i++ )
+ {
+ Hashtable ht = ( Hashtable ) m_aWikiDocs.get( i );
+
+ Object oNewDoc = xDocListFactory.createInstance();
+ XNameReplace xNewDoc = ( XNameReplace ) UnoRuntime.queryInterface( XNameReplace.class, oNewDoc );
+
+ Enumeration e = ht.keys();
+ while ( e.hasMoreElements() )
+ {
+ String key = ( String ) e.nextElement();
+ xNewDoc.replaceByName( key, ht.get( key ) );
+ }
+
+ xContainer2.insertByName( "d" + i, xNewDoc );
+ }
+ // commit changes
+ XChangesBatch xBatch2 = ( XChangesBatch ) UnoRuntime.queryInterface( XChangesBatch.class, xContainer2 );
+ xBatch2.commitChanges();
+
+ }
+ catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public void loadConfiguration()
+ {
+ m_WikiConnections.clear();
+ try
+ {
+ // get configuration service
+ // connect to configmanager
+ XNameAccess xAccess = Helper.GetConfigNameAccess( m_xContext, "org.openoffice.Office.Custom.WikiExtension" );
+
+ if ( xAccess != null )
+ {
+ Object oList = xAccess.getByName( "ConnectionList" );
+ XNameAccess xConnectionList = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, oList );
+ String [] allCons = xConnectionList.getElementNames();
+ for ( int i=0; i<allCons.length; i++ )
+ {
+ Hashtable ht = new Hashtable();
+ ht.put( "Url", allCons[i] );
+ ht.put( "Username", "" );
+ ht.put( "Password", "" );
+
+ try
+ {
+ XPropertySet xProps = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xConnectionList.getByName( allCons[i] ) );
+ if ( xProps != null )
+ {
+ String aUsername = AnyConverter.toString( xProps.getPropertyValue( "UserName" ) );
+ if ( aUsername != null && aUsername.length() > 0 )
+ ht.put( "Username", aUsername );
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ addWikiCon( ht );
+ }
+
+ Object oDocs = xAccess.getByName( "RecentDocs" );
+ XNameAccess xRecentDocs = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, oDocs );
+ String [] allDocs = xRecentDocs.getElementNames();
+ for ( int i=0; i<allDocs.length; i++ )
+ {
+ Object oDoc = xRecentDocs.getByName( allDocs[i] );
+ XNameAccess xDoc = ( XNameAccess ) UnoRuntime.queryInterface( XNameAccess.class, oDoc );
+ Hashtable ht = new Hashtable();
+ ht.put( "Url", xDoc.getByName( "Url" ) );
+ ht.put( "CompleteUrl", xDoc.getByName( "CompleteUrl" ) );
+ ht.put( "Doc", xDoc.getByName( "Doc" ) );
+ addWikiDoc( ht );
+ }
+ }
+ }
+ catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+}
diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java b/swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java
new file mode 100644
index 000000000000..89025ed84513
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java
@@ -0,0 +1,295 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import com.sun.star.task.UrlRecord;
+import java.io.*;
+import java.util.Hashtable;
+import javax.swing.text.html.*;
+import com.sun.star.uno.XComponentContext;
+
+import org.apache.commons.httpclient.*;
+import org.apache.commons.httpclient.methods.*;
+
+
+public class WikiArticle
+{
+ private XComponentContext m_xContext;
+
+ private String m_sEditTime = "";
+ private String m_sEditToken = "";
+
+ protected String m_sHTMLCode;
+ private boolean m_bNoArticle = true;
+
+ protected String m_sWikiUser;
+ protected String m_sWikiPass;
+
+ protected String m_sTitle = "";
+
+ private URI m_aMainURI;
+ private HostConfiguration m_aHostConfig;
+
+
+ /** Creates a new instance of WikiArticle */
+ public WikiArticle( XComponentContext xContext, String sTitle, Hashtable wikiSettings, boolean bLogin, WikiPropDialog aPropDialog )
+ throws java.net.MalformedURLException, com.sun.star.uno.Exception, java.io.IOException, WikiCancelException
+ {
+ m_xContext = xContext;
+
+ String sMainUrl = (String) wikiSettings.get("Url");
+ m_sWikiUser = (String) wikiSettings.get("Username");
+ m_sWikiPass = (String) wikiSettings.get("Password");
+ m_sTitle = sTitle;
+
+ m_aMainURI = new URI( sMainUrl );
+
+// viewURL = sMainUrl + "index.php?title=" + m_sTitle;
+// editURL = sMainUrl + "index.php?title=" + m_sTitle + "&action=edit";
+// submitURL = sMainUrl + "index.php?title=" + m_sTitle + "&action=submit";
+// loginURL = sMainUrl + "index.php?title=Special:Userlogin";
+// loginSubmitURL = sMainUrl + "index.php?title=Special:Userlogin&action=submitlogin";
+
+ if ( bLogin )
+ {
+ WikiEditSettingDialog aDialog = new WikiEditSettingDialog(m_xContext, "vnd.sun.star.script:WikiEditor.EditSetting?location=application", wikiSettings, false );
+ try
+ {
+ while( !Login() )
+ {
+ if ( aPropDialog != null )
+ aPropDialog.SetThrobberActive( false );
+
+ if ( MainThreadDialogExecutor.Show( xContext, aDialog ) )
+ {
+ m_sWikiUser = (String) wikiSettings.get("Username");
+ m_sWikiPass = (String) wikiSettings.get("Password");
+ }
+ else
+ throw new WikiCancelException();
+
+ if ( aPropDialog != null )
+ {
+ aPropDialog.SetThrobberActive( true );
+ Thread.yield();
+ }
+ }
+ }
+ finally
+ {
+ aDialog.DisposeDialog();
+ }
+ }
+
+ // in case of loading the html contents are used
+ // in case of saving the contents should be checked whether they are empty
+ InitArticleHTML();
+
+ // getArticleWiki();
+ }
+
+ public String GetMainURL()
+ {
+ return m_aMainURI.toString();
+ }
+
+ public String GetTitle()
+ {
+ return m_sTitle;
+ }
+
+ public String GetViewURL()
+ {
+ return m_aMainURI.toString() + "index.php?title=" + m_sTitle;
+ }
+
+ private String getArticleWiki()
+ throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException
+ {
+ String sWikiCode = null;
+
+ if ( m_aHostConfig != null )
+ {
+ URI aURI = new URI( m_aMainURI.toString() + "index.php?title=" + m_sTitle + "&action=edit" );
+ GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery() );
+
+ Helper.ExecuteMethod( aRequest, m_aHostConfig, aURI, m_xContext, false );
+
+ int nResultCode = aRequest.getStatusCode();
+ String sWebPage = null;
+ if ( nResultCode == 200 )
+ sWebPage = aRequest.getResponseBodyAsString();
+
+ aRequest.releaseConnection();
+
+ if ( sWebPage != null )
+ {
+ StringReader r = new StringReader(sWebPage);
+ HTMLEditorKit.Parser parse = Helper.GetHTMLParser();
+ EditPageParser callback = new EditPageParser();
+
+ parse.parse(r,callback,true);
+ m_sEditTime = callback.m_sEditTime;
+ m_sEditToken = callback.m_sEditToken;
+
+ int iPosStart = callback.m_nWikiArticleStart;
+ int iPosEnd = callback.m_nWikiArticleEnd;
+
+ if ( iPosStart >= 0 && iPosEnd > 0 )
+ {
+ String sArticle = sWebPage.substring(iPosStart, iPosEnd);
+ iPosStart = sArticle.indexOf(">") + 1;
+ sWikiCode = sArticle.substring( iPosStart, sArticle.length() );
+ }
+ }
+ }
+
+ return sWikiCode;
+ }
+
+ private void InitArticleHTML()
+ throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException
+ {
+ if ( m_aHostConfig != null )
+ {
+ URI aURI = new URI( m_aMainURI.toString() + "index.php?title=" + m_sTitle );
+ GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery() );
+
+ Helper.ExecuteMethod( aRequest, m_aHostConfig, aURI, m_xContext, false );
+
+ int nResultCode = aRequest.getStatusCode();
+ String sWebPage = null;
+ if ( nResultCode == 200 )
+ sWebPage = aRequest.getResponseBodyAsString();
+
+ if ( sWebPage != null )
+ {
+ StringReader r = new StringReader(sWebPage);
+ HTMLEditorKit.Parser parse = Helper.GetHTMLParser();
+ EditPageParser callback = new EditPageParser();
+
+ parse.parse(r,callback,true);
+
+ int iPosStart = callback.m_nHTMLArticleStart;
+ int iPosEnd = callback.m_nHTMLArticleEnd;
+ int nPosNoArt = callback.m_nNoArticleInd;
+
+ if ( iPosStart >= 0 && iPosEnd > 0 )
+ {
+ m_sHTMLCode = sWebPage.substring(iPosStart, iPosEnd);
+ m_bNoArticle = ( nPosNoArt >= 0 && nPosNoArt >= iPosStart && nPosNoArt <= iPosEnd );
+ }
+ }
+ }
+ }
+
+ protected boolean setArticle( String sWikiCode, String sWikiComment, boolean bMinorEdit )
+ throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException
+ {
+ boolean bResult = false;
+
+ if ( m_aHostConfig != null && sWikiCode != null && sWikiComment != null )
+ {
+ // get the edit time and token
+ getArticleWiki();
+
+ URI aURI = new URI( m_aMainURI.getPath() + "index.php?title=" + m_sTitle + "&action=submit" );
+ PostMethod aPost = new PostMethod();
+ aPost.setPath( aURI.getEscapedPathQuery() );
+
+ // aPost.addParameter( "title", m_sTitle );
+ // aPost.addParameter( "action", "submit" );
+ aPost.addParameter( "wpTextbox1", sWikiCode );
+ aPost.addParameter( "wpSummary", sWikiComment );
+ aPost.addParameter( "wpSection", "" );
+ aPost.addParameter( "wpEdittime", m_sEditTime );
+ aPost.addParameter( "wpSave", "Save page" );
+ aPost.addParameter( "wpEditToken", m_sEditToken );
+
+ if ( bMinorEdit )
+ aPost.addParameter( "wpMinoredit", "1" );
+
+ Helper.ExecuteMethod( aPost, m_aHostConfig, aURI, m_xContext, false );
+
+ int nResultCode = aPost.getStatusCode();
+ if ( nResultCode < 400 )
+ bResult = true;
+
+ String aResult = aPost.getResponseBodyAsString();
+
+ // TODO: remove the debug printing, try to detect the error
+ System.out.print( "nSubmitCode = " + nResultCode + "\n===\n" + aResult );
+ }
+
+ return bResult;
+ }
+
+ protected boolean Login()
+ throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException
+ {
+ m_aHostConfig = Helper.Login( m_aMainURI, m_sWikiUser, m_sWikiPass, m_xContext );
+ return ( m_aHostConfig != null );
+ }
+
+ protected void cleanHTML()
+ {
+ if ( m_sHTMLCode != null )
+ {
+ //Welcome to regex hell ;)
+
+ //strip comments
+ m_sHTMLCode = m_sHTMLCode.replaceAll("\\<![ \\r\\n\\t]*(--([^\\-]|[\\r\\n]|-[^\\-])*--[ \\r\\n\\t]*)\\>","");
+
+ //strip edit section links
+ m_sHTMLCode = m_sHTMLCode.replaceAll("\\<div class=\"editsection\".*?\\</div\\>","");
+
+ //strip huge spaces
+ m_sHTMLCode = m_sHTMLCode.replaceAll("\\<p\\>\\<br /\\>[ \r\n\t]*?\\</p\\>","");
+
+ //strip toc
+ m_sHTMLCode = m_sHTMLCode.replaceAll("\\<table.*id=\"toc\"(.|[\r\n])*?\\</table\\>","");
+
+ //strip jump-to-nav
+ m_sHTMLCode = m_sHTMLCode.replaceAll("\\<div id=\"jump-to-nav\".*?\\</div\\>","");
+
+ //strip Javascript
+ m_sHTMLCode = m_sHTMLCode.replaceAll("\\<script(.|[\r\n])*?\\</script\\>","");
+ }
+ }
+
+
+ protected boolean NotExist()
+ {
+ boolean bResult = true;
+ if ( m_sHTMLCode != null )
+ bResult = m_bNoArticle;
+
+ return bResult;
+ }
+
+}
diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiCancelException.java b/swext/mediawiki/src/com/sun/star/wiki/WikiCancelException.java
new file mode 100644
index 000000000000..73369c997727
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/WikiCancelException.java
@@ -0,0 +1,33 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+class WikiCancelException extends java.lang.Exception
+{
+};
+
diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java b/swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java
new file mode 100644
index 000000000000..e91f053169e7
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/WikiDialog.java
@@ -0,0 +1,325 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import com.sun.star.awt.XControl;
+import com.sun.star.awt.XControlContainer;
+import com.sun.star.awt.XControlModel;
+import com.sun.star.awt.XDialog;
+import com.sun.star.awt.XDialogEventHandler;
+import com.sun.star.awt.XDialogProvider2;
+import com.sun.star.awt.XThrobber;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.awt.XTopWindow;
+import com.sun.star.awt.XTopWindowListener;
+import com.sun.star.awt.XWindow;
+import com.sun.star.container.XNameContainer;
+import com.sun.star.lang.EventObject;
+import com.sun.star.lang.XMultiServiceFactory;
+
+public class WikiDialog implements XDialogEventHandler, XTopWindowListener
+{
+ XComponentContext m_xContext;
+ XControlContainer m_xControlContainer;
+ XDialog m_xDialog;
+ String[] m_aMethods;
+ boolean m_bAction = false;
+ Settings m_aSettings;
+
+ protected Thread m_aThread;
+ protected boolean m_bThreadFinished = false;
+
+
+ /** Creates a new instance of WikiDialog */
+ public WikiDialog(XComponentContext c, String DialogURL)
+ {
+ this.m_xContext = c;
+ XMultiComponentFactory xMCF = m_xContext.getServiceManager();
+ m_aSettings = Settings.getSettings(m_xContext);
+ try
+ {
+ Object obj;
+ obj = xMCF.createInstanceWithContext("com.sun.star.awt.DialogProvider2", m_xContext );
+ XDialogProvider2 xDialogProvider = (XDialogProvider2) UnoRuntime.queryInterface( XDialogProvider2.class, obj );
+
+ m_xDialog = xDialogProvider.createDialogWithHandler( DialogURL, this );
+ m_xControlContainer = (XControlContainer)UnoRuntime.queryInterface( XControlContainer.class, m_xDialog );
+ XTopWindow xTopWindow = (XTopWindow)UnoRuntime.queryInterface( XTopWindow.class, m_xDialog );
+ if ( xTopWindow != null )
+ xTopWindow.addTopWindowListener( this );
+ }
+ catch (com.sun.star.uno.Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public synchronized void ThreadStop( boolean bSelf )
+ {
+ if ( bSelf || m_aThread != null && !m_bThreadFinished )
+ {
+ try
+ {
+ Helper.AllowConnection( bSelf );
+ }
+ catch( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ m_aThread = null;
+ m_bThreadFinished = true;
+ }
+
+ protected void setMethods (String [] Methods)
+ {
+ this.m_aMethods = Methods;
+ }
+
+
+ public boolean show( )
+ {
+ m_bThreadFinished = false;
+
+ if( m_xDialog != null ) m_xDialog.execute();
+ return m_bAction;
+ }
+
+
+ public String[] getSupportedMethodNames()
+ {
+ return m_aMethods;
+ }
+
+
+ public boolean callHandlerMethod( XDialog xDialog, Object EventObject, String MethodName )
+ {
+ return true;
+ }
+
+ public void SetTitle( String sTitle )
+ throws Exception
+ {
+ SetTitle( m_xDialog, sTitle );
+ }
+
+ public static void SetTitle( XDialog xDialog, String sTitle )
+ throws Exception
+ {
+ if ( xDialog != null && sTitle != null )
+ {
+ XControl xDialogControl = (XControl)UnoRuntime.queryInterface( XControl.class, xDialog );
+ if ( xDialogControl != null )
+ {
+ XPropertySet xPropSet = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xDialogControl.getModel() );
+ if ( xPropSet != null )
+ xPropSet.setPropertyValue( "Title", sTitle );
+ }
+ }
+ }
+
+ protected XPropertySet GetPropSet(String sControl)
+ {
+ return GetPropSet( m_xControlContainer, sControl );
+ }
+
+ protected static XPropertySet GetPropSet( XControlContainer xControlContainer, String sControl )
+ {
+ XPropertySet xPS = null;
+
+ if ( xControlContainer != null && sControl != null )
+ {
+ XControl xControl = xControlContainer.getControl(sControl);
+ xPS = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xControl.getModel() );
+ }
+
+ if ( xPS == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ return xPS;
+ }
+
+ public static XDialog CreateSimpleDialog( XComponentContext xContext, String sURL, int nTitleID, String[] pControls, int[] pStringIDs )
+ {
+ XDialog xResult = null;
+
+ if ( xContext != null && sURL != null && sURL.length() > 0 )
+ {
+ try
+ {
+ Object oDialogProvider = xContext.getServiceManager().createInstanceWithContext("com.sun.star.awt.DialogProvider2", xContext );
+ XDialogProvider2 xDialogProvider = (XDialogProvider2) UnoRuntime.queryInterface( XDialogProvider2.class, oDialogProvider );
+
+ if ( xDialogProvider != null )
+ xResult = xDialogProvider.createDialog( sURL );
+
+ if ( xResult != null )
+ {
+ SetTitle( xResult, Helper.GetLocalizedString( xContext, nTitleID ) );
+ if ( pControls != null && pStringIDs != null && pControls.length == pStringIDs.length )
+ {
+ XControlContainer xControlContainer = (XControlContainer)UnoRuntime.queryInterface( XControlContainer.class, xResult );
+ for ( int nInd = 0; nInd < pControls.length; nInd++ )
+ GetPropSet( xControlContainer, pControls[nInd] ).setPropertyValue( "Label", new Integer( pStringIDs[nInd] ) );
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ return xResult;
+ }
+
+ protected void InsertThrobber( int X, int Y, int Width, int Height )
+ {
+ try
+ {
+ XControl xDialogControl = ( XControl ) UnoRuntime.queryInterface( XControl.class, m_xDialog );
+ XControlModel xDialogModel = null;
+ if ( xDialogControl != null )
+ xDialogModel = xDialogControl.getModel();
+
+ XMultiServiceFactory xDialogFactory = ( XMultiServiceFactory ) UnoRuntime.queryInterface( XMultiServiceFactory.class, xDialogModel );
+ if ( xDialogFactory != null )
+ {
+ XControlModel xThrobberModel = (XControlModel)UnoRuntime.queryInterface( XControlModel.class, xDialogFactory.createInstance( "com.sun.star.awt.UnoThrobberControlModel" ) );
+ XPropertySet xThrobberProps = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xThrobberModel );
+ if ( xThrobberProps != null )
+ {
+ xThrobberProps.setPropertyValue( "Name", "WikiThrobber" );
+ xThrobberProps.setPropertyValue( "PositionX", new Integer( X ) );
+ xThrobberProps.setPropertyValue( "PositionY", new Integer( Y ) );
+ xThrobberProps.setPropertyValue( "Height", new Integer( Width ) );
+ xThrobberProps.setPropertyValue( "Width", new Integer( Height ) );
+
+ XNameContainer xDialogContainer = (XNameContainer)UnoRuntime.queryInterface( XNameContainer.class, xDialogModel );
+ xDialogContainer.insertByName( "WikiThrobber", xThrobberModel );
+ }
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ SetThrobberVisible( false );
+ }
+
+ public void SetThrobberActive( boolean bActive )
+ {
+ if ( m_xControlContainer != null )
+ {
+ try
+ {
+ XThrobber xThrobber = (XThrobber)UnoRuntime.queryInterface( XThrobber.class, m_xControlContainer.getControl( "WikiThrobber" ) );
+ if ( xThrobber != null )
+ {
+ if ( bActive )
+ xThrobber.start();
+ else
+ xThrobber.stop();
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void SetThrobberVisible( boolean bVisible )
+ {
+ if ( m_xControlContainer != null )
+ {
+ try
+ {
+ XWindow xWindow = (XWindow)UnoRuntime.queryInterface( XWindow.class, m_xControlContainer.getControl( "WikiThrobber" ) );
+ if ( xWindow != null )
+ xWindow.setVisible( bVisible );
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void SetFocusTo( String aControl )
+ {
+ if ( m_xControlContainer != null )
+ {
+ try
+ {
+ XWindow xWindow = (XWindow)UnoRuntime.queryInterface( XWindow.class, m_xControlContainer.getControl( aControl ) );
+ if ( xWindow != null )
+ xWindow.setFocus();
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void DisposeDialog()
+ {
+ Helper.Dispose( m_xDialog );
+ }
+
+ public void windowOpened( EventObject e )
+ {}
+
+ public void windowClosing( EventObject e )
+ {}
+
+ public void windowClosed( EventObject e )
+ {}
+
+ public void windowMinimized( EventObject e )
+ {}
+
+ public void windowNormalized( EventObject e )
+ {}
+
+ public void windowActivated( EventObject e )
+ {}
+
+ public void windowDeactivated( EventObject e )
+ {}
+
+ public void disposing( EventObject e )
+ {}
+}
+
diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiEditSettingDialog.java b/swext/mediawiki/src/com/sun/star/wiki/WikiEditSettingDialog.java
new file mode 100644
index 000000000000..721b432779a1
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/WikiEditSettingDialog.java
@@ -0,0 +1,429 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import com.sun.star.awt.XDialog;
+import com.sun.star.awt.XWindowPeer;
+import com.sun.star.awt.XThrobber;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.lang.EventObject;
+import java.util.Hashtable;
+import javax.net.ssl.SSLException;
+
+import org.apache.commons.httpclient.*;
+import org.apache.commons.httpclient.methods.*;
+
+public class WikiEditSettingDialog extends WikiDialog
+{
+
+ private final String sOKMethod = "OK";
+
+ String[] Methods =
+ {sOKMethod };
+ private Hashtable setting;
+ private boolean addMode;
+ private boolean m_bAllowURLChange = true;
+
+ public WikiEditSettingDialog( XComponentContext xContext, String DialogURL )
+ {
+ super( xContext, DialogURL );
+ super.setMethods( Methods );
+ setting = new Hashtable();
+ addMode = true;
+
+ InsertThrobber( 184, 20, 10, 10 );
+ InitStrings( xContext );
+ InitSaveCheckbox( xContext, false );
+ }
+
+ public WikiEditSettingDialog( XComponentContext xContext, String DialogURL, Hashtable ht, boolean bAllowURLChange )
+ {
+ super( xContext, DialogURL );
+ super.setMethods( Methods );
+ setting = ht;
+
+ boolean bInitSaveCheckBox = false;
+
+ try
+ {
+ XPropertySet xUrlField = GetPropSet( "UrlField" );
+
+ xUrlField.setPropertyValue( "Text", ht.get( "Url" ) );
+
+ GetPropSet( "UsernameField" ).setPropertyValue( "Text", ht.get( "Username" ) );
+
+ if ( Helper.PasswordStoringIsAllowed( m_xContext ) )
+ {
+ String[] pPasswords = Helper.GetPasswordsForURLAndUser( m_xContext, (String)ht.get( "Url" ), (String)ht.get( "Username" ) );
+ bInitSaveCheckBox = ( pPasswords != null && pPasswords.length > 0 && pPasswords[0].equals( (String)ht.get( "Password" ) ) );
+ }
+
+ // the password should be entered by the user or the Cancel should be pressed
+ // GetPropSet( "PasswordField" ).setPropertyValue( "Text", ht.get( "Password" ));
+ }
+ catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+
+ addMode = false;
+ m_bAllowURLChange = bAllowURLChange;
+
+ InsertThrobber( 184, 20, 10, 10 );
+ InitStrings( xContext );
+ InitSaveCheckbox( xContext, bInitSaveCheckBox );
+ }
+
+ public boolean show( )
+ {
+ SetThrobberVisible( false );
+ EnableControls( true );
+ boolean bResult = super.show();
+
+ try
+ {
+ if ( bResult && Helper.PasswordStoringIsAllowed( m_xContext )
+ && ( (Short)( GetPropSet( "SaveBox" ).getPropertyValue("State") ) ).shortValue() != (short)0 )
+ {
+ String sURL = (String)setting.get( "Url" );
+ String sUserName = (String)setting.get( "Username" );
+ String sPassword = (String)setting.get( "Password" );
+
+ if ( sURL != null && sURL.length() > 0 && sUserName != null && sUserName.length() > 0 && sPassword != null && sPassword.length() > 0 )
+ {
+ String[] pPasswords = { sPassword };
+ Helper.GetPasswordContainer( m_xContext ).addPersistent( sURL, sUserName, pPasswords, Helper.GetInteractionHandler( m_xContext ) );
+ }
+ }
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ return bResult;
+ }
+
+ public void EnableControls( boolean bEnable )
+ {
+ if ( !bEnable )
+ SetFocusTo( "CancelButton" );
+
+ try
+ {
+ GetPropSet( "UsernameField" ).setPropertyValue( "Enabled", new Boolean( bEnable ) );
+ GetPropSet( "PasswordField" ).setPropertyValue( "Enabled", new Boolean( bEnable ) );
+ GetPropSet( "OkButton" ).setPropertyValue( "Enabled", new Boolean( bEnable ) );
+ GetPropSet( "HelpButton" ).setPropertyValue( "Enabled", new Boolean( bEnable ) );
+
+ if ( bEnable )
+ {
+ GetPropSet( "UrlField" ).setPropertyValue( "Enabled", new Boolean( m_bAllowURLChange ) );
+ GetPropSet( "SaveBox" ).setPropertyValue( "Enabled", new Boolean( Helper.PasswordStoringIsAllowed( m_xContext ) ) );
+ if ( m_bAllowURLChange )
+ SetFocusTo( "UrlField" );
+ else
+ SetFocusTo( "UsernameField" );
+ }
+ else
+ {
+ GetPropSet( "UrlField" ).setPropertyValue( "Enabled", Boolean.FALSE );
+ GetPropSet( "SaveBox" ).setPropertyValue( "Enabled", Boolean.FALSE );
+ }
+ }
+ catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ private void InitStrings( XComponentContext xContext )
+ {
+ try
+ {
+ SetTitle( Helper.GetLocalizedString( xContext, Helper.DLG_MEDIAWIKI_TITLE ) );
+ GetPropSet( "UrlLabel" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_URLLABEL ) );
+ GetPropSet( "UsernameLabel" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_USERNAMELABEL ) );
+ GetPropSet( "PasswordLabel" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_PASSWORDLABEL ) );
+ GetPropSet( "AccountLine" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_ACCOUNTLINE ) );
+ GetPropSet( "WikiLine" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_WIKILINE ) );
+ GetPropSet( "SaveBox" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_EDITSETTING_SAVEBOX ) );
+ GetPropSet( "OkButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_OK ) );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void InitSaveCheckbox( XComponentContext xContext, boolean bInitSaveCheckBox )
+ {
+ XPropertySet xSaveCheck = GetPropSet( "SaveBox" );
+ try
+ {
+ xSaveCheck.setPropertyValue( "State", new Short( bInitSaveCheckBox ? (short)1 : (short)0 ) );
+ xSaveCheck.setPropertyValue( "Enabled", new Boolean( Helper.PasswordStoringIsAllowed( xContext ) ) );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public void DoLogin( XDialog xDialog )
+ {
+ String sRedirectURL = "";
+ String sURL = "";
+ try
+ {
+ sURL = ( String ) GetPropSet( "UrlField" ).getPropertyValue( "Text" );
+ String sUserName = ( String ) GetPropSet( "UsernameField" ).getPropertyValue( "Text" );
+ String sPassword = ( String ) GetPropSet( "PasswordField" ).getPropertyValue( "Text" );
+
+ HostConfiguration aHostConfig = new HostConfiguration();
+ boolean bInitHost = true;
+ boolean bAllowIndex = true;
+
+ do
+ {
+ if ( sRedirectURL.length() > 0 )
+ {
+ sURL = sRedirectURL;
+ sRedirectURL = "";
+ }
+
+ if ( sURL.length() > 0 )
+ {
+ URI aURI = new URI( sURL );
+ GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery() );
+ aRequest.setFollowRedirects( false );
+ Helper.ExecuteMethod( aRequest, aHostConfig, aURI, m_xContext, bInitHost );
+ bInitHost = false;
+
+ int nResultCode = aRequest.getStatusCode();
+ String sWebPage = null;
+ if ( nResultCode == 200 )
+ sWebPage = aRequest.getResponseBodyAsString();
+ else if ( nResultCode >= 301 && nResultCode <= 303 || nResultCode == 307 )
+ sRedirectURL = aRequest.getResponseHeader( "Location" ).getValue();
+
+ aRequest.releaseConnection();
+
+ if ( sWebPage != null && sWebPage.length() > 0 )
+ {
+ //the URL is valid
+ String sMainURL = Helper.GetMainURL( sWebPage, sURL );
+
+ if ( sMainURL.equals( "" ) )
+ {
+ // TODO:
+ // it's not a Wiki Page, check first whether a redirect is requested
+ // happens usually in case of https
+ sRedirectURL = Helper.GetRedirectURL( sWebPage, sURL );
+ if ( sRedirectURL.equals( "" ) )
+ {
+ // show error
+ Helper.ShowError( m_xContext,
+ m_xDialog,
+ Helper.DLG_MEDIAWIKI_TITLE,
+ Helper.NOURLCONNECTION_ERROR,
+ sURL,
+ false );
+ }
+ }
+ else
+ {
+ URI aMainURI = new URI( sMainURL, true ); // it must be an escaped URL, otherwise an exception should be thrown
+
+ if ( ( sUserName.length() > 0 || sPassword.length() > 0 )
+ && Helper.Login( aMainURI, sUserName, sPassword, m_xContext ) == null )
+ {
+ // a wrong login information is provided
+ // show error
+ Helper.ShowError( m_xContext,
+ m_xDialog,
+ Helper.DLG_MEDIAWIKI_TITLE,
+ Helper.WRONGLOGIN_ERROR,
+ null,
+ false );
+ }
+ else
+ {
+ setting.put( "Url", aMainURI.getEscapedURI() );
+ setting.put( "Username", sUserName );
+ setting.put( "Password", sPassword );
+ if ( addMode )
+ {
+ // no cleaning of the settings is necessary
+ Settings.getSettings( m_xContext ).addWikiCon( setting );
+ Settings.getSettings( m_xContext ).storeConfiguration();
+ }
+
+ m_bAction = true;
+ }
+ }
+ }
+ else if ( sRedirectURL == null || sRedirectURL.length() == 0 )
+ {
+ if ( sURL.length() > 0 && !sURL.endsWith( "index.php" ) && bAllowIndex )
+ {
+ // the used MainURL is not alwais directly accessible
+ // add the suffix as workaround, but only once
+ sRedirectURL = sURL + "/index.php";
+ bAllowIndex = false;
+ }
+ else
+ {
+ // URL invalid
+ // show error
+ Helper.ShowError( m_xContext,
+ m_xDialog,
+ Helper.DLG_MEDIAWIKI_TITLE,
+ Helper.INVALIDURL_ERROR,
+ null,
+ false );
+ }
+ }
+ }
+ else
+ {
+ // URL field empty
+ // show error
+ Helper.ShowError( m_xContext,
+ m_xDialog,
+ Helper.DLG_MEDIAWIKI_TITLE,
+ Helper.NOURL_ERROR,
+ null,
+ false );
+ }
+ } while ( sRedirectURL.length() > 0 );
+ }
+ catch ( WikiCancelException ce )
+ {
+ }
+ catch ( SSLException essl )
+ {
+ if ( Helper.IsConnectionAllowed() )
+ {
+ Helper.ShowError( m_xContext,
+ m_xDialog,
+ Helper.DLG_MEDIAWIKI_TITLE,
+ Helper.UNKNOWNCERT_ERROR,
+ null,
+ false );
+ }
+ essl.printStackTrace();
+ }
+ catch ( Exception ex )
+ {
+ if ( Helper.IsConnectionAllowed() )
+ {
+ Helper.ShowError( m_xContext,
+ m_xDialog,
+ Helper.DLG_MEDIAWIKI_TITLE,
+ Helper.NOURLCONNECTION_ERROR,
+ sURL,
+ false );
+ }
+ ex.printStackTrace();
+ }
+ }
+
+ public boolean callHandlerMethod( XDialog xDialog, Object EventObject, String MethodName )
+ {
+ if ( MethodName.equals( sOKMethod ) )
+ {
+ EnableControls( false );
+ SetThrobberVisible( true );
+ SetThrobberActive( true );
+
+ if ( Helper.AllowThreadUsage( m_xContext ) )
+ {
+ final XDialog xDialogForThread = xDialog;
+ final XComponentContext xContext = m_xContext;
+ final WikiEditSettingDialog aThis = this;
+
+ // the thread name is used to allow the error dialogs
+ m_bThreadFinished = false;
+ m_aThread = new Thread( "com.sun.star.thread.WikiEditorSendingThread" )
+ {
+ public void run()
+ {
+ try
+ {
+ Thread.yield();
+ } catch( java.lang.Exception e ){}
+
+ DoLogin( xDialogForThread );
+ aThis.EnableControls( true );
+ aThis.SetThrobberActive( false );
+ aThis.SetThrobberVisible( false );
+
+ ThreadStop( true );
+
+ if ( m_bAction )
+ MainThreadDialogExecutor.Close( xContext, xDialogForThread );
+ }
+ };
+
+ m_aThread.start();
+ }
+ else
+ {
+ try
+ {
+ DoLogin( xDialog );
+ } catch( java.lang.Exception e )
+ {}
+ finally
+ {
+ EnableControls( true );
+ SetThrobberActive( false );
+ SetThrobberVisible( false );
+
+ if ( m_bAction )
+ xDialog.endExecute();
+
+ Helper.AllowConnection( true );
+ }
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ public void windowClosed( EventObject e )
+ {
+ ThreadStop( false );
+ }
+}
+
diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiEditorImpl.java b/swext/mediawiki/src/com/sun/star/wiki/WikiEditorImpl.java
new file mode 100644
index 000000000000..0350e07fe8b6
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/WikiEditorImpl.java
@@ -0,0 +1,476 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import com.sun.star.awt.XDialog;
+import com.sun.star.awt.XWindowPeer;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.frame.DispatchDescriptor;
+import com.sun.star.frame.XComponentLoader;
+import com.sun.star.frame.XController;
+import com.sun.star.frame.XDesktop;
+import com.sun.star.frame.XDispatch;
+import com.sun.star.frame.XDispatchProvider;
+import com.sun.star.frame.XFrame;
+import com.sun.star.frame.XModel;
+import com.sun.star.frame.XStatusListener;
+import com.sun.star.frame.XStorable;
+import com.sun.star.io.XInputStream;
+import com.sun.star.lang.XComponent;
+import com.sun.star.lang.XInitialization;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.lib.uno.helper.Factory;
+import com.sun.star.lang.XSingleComponentFactory;
+import com.sun.star.registry.XRegistryKey;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.util.XCloseBroadcaster;
+import com.sun.star.view.XSelectionSupplier;
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import javax.net.ssl.SSLException;
+
+
+public final class WikiEditorImpl extends WeakBase
+ implements com.sun.star.lang.XServiceInfo, XDispatchProvider, XDispatch, XInitialization
+{
+
+ private final XComponentContext m_xContext;
+ private static final String m_implementationName = WikiEditorImpl.class.getName();
+ private static final String[] m_serviceNames = {"com.sun.star.wiki.WikiEditor" };
+
+ // information needed for component registration
+ public static final String[] supportedServiceNames = {"com.sun.star.frame.ProtocolHandler"};
+ public static final Class implementationClass = WikiEditorImpl.class;
+ // protocol name that this protocol handler handles
+ public static final String protocolName = "vnd.com.sun.star.wiki:";
+
+ private Map m_statusListeners = new HashMap();
+
+
+ private XComponent xComp;
+ private String sTempUrl;
+
+ private XFrame m_xFrame;
+ private XModel m_xModel;
+ private Settings m_aSettings;
+
+ private String m_aFilterName;
+
+ public WikiEditorImpl( XComponentContext xContext )
+ {
+ // Helper.trustAllSSL();
+ m_xContext = xContext;
+ m_aSettings = Settings.getSettings( m_xContext );
+ };
+
+ public static XSingleComponentFactory __getComponentFactory( String sImplementationName )
+ {
+ XSingleComponentFactory xFactory = null;
+
+ if ( sImplementationName.equals( m_implementationName ) )
+ xFactory = Factory.createComponentFactory( WikiEditorImpl.class, m_serviceNames );
+ else if ( sImplementationName.equals( WikiOptionsEventHandlerImpl.m_sImplementationName ) )
+ xFactory = Factory.createComponentFactory( WikiOptionsEventHandlerImpl.class,
+ WikiOptionsEventHandlerImpl.m_pServiceNames );
+
+ return xFactory;
+ }
+
+ public static boolean __writeRegistryServiceInfo( XRegistryKey xRegistryKey )
+ {
+ boolean bResult = Factory.writeRegistryServiceInfo( m_implementationName,
+ m_serviceNames,
+ xRegistryKey );
+ return ( bResult && Factory.writeRegistryServiceInfo( WikiOptionsEventHandlerImpl.m_sImplementationName,
+ WikiOptionsEventHandlerImpl.m_pServiceNames,
+ xRegistryKey ) );
+ }
+
+ // com.sun.star.lang.XServiceInfo:
+ public String getImplementationName()
+ {
+ return m_implementationName;
+ }
+
+ public boolean supportsService( String sService )
+ {
+ int len = m_serviceNames.length;
+
+ for( int i=0; i < len; i++ )
+ {
+ if ( sService.equals( m_serviceNames[i] ))
+ return true;
+ }
+ return false;
+ }
+
+ public String[] getSupportedServiceNames()
+ {
+ return m_serviceNames;
+ }
+
+
+ private XSelectionSupplier m_sel;
+ private XController m_ctrl;
+ private boolean m_bInitialized;
+ public synchronized void initialize( Object[] args ) throws com.sun.star.uno.Exception
+ {
+ if ( m_bInitialized )
+ {
+ //logger.log( Level.SEVERE, "Extension instance was initialized again" );
+ }
+ if ( args.length > 0 )
+ {
+ m_bInitialized = true;
+ m_xFrame = ( XFrame )UnoRuntime.queryInterface( XFrame.class, args[0] );
+ // become close listener
+ XCloseBroadcaster cb = ( XCloseBroadcaster )UnoRuntime.queryInterface(
+ XCloseBroadcaster.class, m_xFrame );
+ }
+ }
+
+
+
+ public void dispatch(
+ final com.sun.star.util.URL aURL,
+ com.sun.star.beans.PropertyValue[] propertyValue )
+ {
+ final com.sun.star.util.URL myURL = aURL;
+ //logger.log( Level.INFO, "received dispatch request for: "+aURL.Complete );
+ if ( aURL.Protocol.compareTo( protocolName ) == 0 )
+ {
+ /*
+ synchronized( this )
+ {
+ if( m_bClosing ) return;
+ else m_bActive = true;
+ }
+ **/
+
+ try
+ {
+ if ( myURL.Path.compareTo( "send" ) == 0 )
+ {
+ sendArticle();
+ }
+ } catch( java.lang.Throwable t )
+ {
+ //logger.log( Level.WARNING, "exception while handeling dispatch", t );
+ }
+
+ /*
+ synchronized( this )
+ {
+ m_bActive = false;
+ // if we became owner while we were active
+ // we are responsible for closing the m_xFrame now
+ if ( m_bOwner && m_xFrame != null )
+ {
+ try
+ {
+ XCloseable xclose = ( XCloseable )UnoRuntime.queryInterface(
+ XCloseable.class, m_xFrame );
+ xclose.close( true );
+ } catch ( CloseVetoException cve )
+ {
+ logger.log( Level.SEVERE, "cannot close owned frame" );
+ }
+ // relase reference to the m_xFrame;
+ m_xFrame = null;
+ }
+ }
+ */
+ }
+ }
+
+
+ public com.sun.star.frame.XDispatch queryDispatch(
+ com.sun.star.util.URL aURL,
+ String str,
+ int param )
+ {
+ if ( aURL.Protocol.equals( protocolName ))
+ {
+
+ // by default, we are responsible
+ return this;
+ } else
+ {
+ return null;
+ }
+ }
+
+ public XDispatch[] queryDispatches( DispatchDescriptor[] seqDescripts )
+ {
+ int nCount = seqDescripts.length;
+ XDispatch[] lDispatcher = new XDispatch[nCount];
+
+ for( int i=0; i<nCount; ++i )
+ lDispatcher[i] = queryDispatch(
+ seqDescripts[i].FeatureURL,
+ seqDescripts[i].FrameName,
+ seqDescripts[i].SearchFlags );
+ return lDispatcher;
+ }
+
+
+ public void removeStatusListener(
+ com.sun.star.frame.XStatusListener xStatusListener,
+ com.sun.star.util.URL aURL )
+ {
+ }
+
+
+ public void addStatusListener(
+ com.sun.star.frame.XStatusListener listener,
+ com.sun.star.util.URL url )
+ {
+ String urlstring = url.Complete;
+ m_statusListeners.put( urlstring, listener );
+ // synchroneous callback required!!!
+ callStatusListener( urlstring, listener );
+ }
+
+ public void callStatusListeners()
+ {
+ Set entries = m_statusListeners.entrySet();
+ Iterator iter = entries.iterator();
+ while ( iter.hasNext() )
+ {
+ Map.Entry entry = ( Map.Entry ) iter.next();
+ String uristring = ( String ) entry.getKey();
+ XStatusListener listener = ( XStatusListener ) entry.getValue();
+ callStatusListener( uristring, listener );
+ }
+ }
+
+ public void callStatusListener( String uristring, XStatusListener listener )
+ {
+ try
+ {
+
+ URI uri = new URI( uristring );
+
+ // check whether any blogs are live...
+ setListenerState( listener, "command", false );
+ } catch ( URISyntaxException ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+
+
+ private void setListenerState( XStatusListener listener, String urlstring, boolean state )
+ {
+ com.sun.star.util.URL url = new com.sun.star.util.URL();
+ url.Complete = urlstring;
+ //listener.statusChanged( new FeatureStateEvent( this, url, "", state, false, null ));
+
+ }
+
+ public void sendArticle()
+ {
+ if ( m_xFrame != null )
+ {
+ WikiPropDialog aSendDialog = null;
+ try
+ {
+ if ( m_xModel == null )
+ {
+ XController xController = m_xFrame.getController();
+ if ( xController != null )
+ m_xModel = xController.getModel();
+ }
+
+ if ( m_xModel != null )
+ {
+ // The related Wiki filter must be detected from the typename
+ String aServiceName = Helper.GetDocServiceName( m_xContext, m_xModel );
+ m_aFilterName = Helper.GetFilterName( m_xContext, "MediaWiki", aServiceName );
+
+ if ( m_aFilterName == null || m_aFilterName.length() == 0 )
+ {
+ Helper.ShowError( m_xContext,
+ (XWindowPeer)UnoRuntime.queryInterface( XWindowPeer.class, m_xFrame.getContainerWindow() ),
+ Helper.DLG_SENDTITLE,
+ Helper.NOWIKIFILTER_ERROR,
+ null,
+ false );
+ throw new com.sun.star.uno.RuntimeException();
+ }
+
+ m_aSettings.loadConfiguration(); // throw away all the noncommited changes
+ // show the send dialog
+ aSendDialog = new WikiPropDialog( m_xContext, "vnd.sun.star.script:WikiEditor.SendToMediaWiki?location=application", this );
+ aSendDialog.fillWikiList();
+ aSendDialog.SetWikiTitle( Helper.GetDocTitle( m_xModel ) );
+ aSendDialog.show(); // triggers the sending
+ }
+ }
+ catch ( Exception e )
+ {
+ // TODO: Error handling here
+ e.printStackTrace();
+ }
+ finally
+ {
+ if ( aSendDialog != null )
+ aSendDialog.DisposeDialog();
+ }
+ }
+ }
+
+ public boolean SendArticleImpl( WikiPropDialog aSendDialog, Hashtable aWikiSetting )
+ {
+ boolean bResult = false;
+
+ if ( aSendDialog != null )
+ {
+ String sTemp2Url = null;
+
+ try
+ {
+ // TODO: stop progress spinning
+ WikiArticle aArticle = new WikiArticle( m_xContext, aSendDialog.GetWikiTitle(), aWikiSetting, true, aSendDialog );
+
+ boolean bAllowSending = true;
+ if ( !aArticle.NotExist() )
+ {
+ // ask whether creation of a new page is allowed
+ aSendDialog.SetThrobberActive( false );
+ bAllowSending = Helper.ShowError(
+ m_xContext,
+ (XWindowPeer)UnoRuntime.queryInterface( XWindowPeer.class, m_xFrame.getContainerWindow() ),
+ Helper.DLG_SENDTITLE,
+ Helper.DLG_WIKIPAGEEXISTS_LABEL1,
+ aSendDialog.GetWikiTitle(),
+ true );
+ aSendDialog.SetThrobberActive( true );
+ }
+
+ if ( bAllowSending )
+ {
+ PropertyValue[] lProperties = new PropertyValue[2];
+ lProperties[0] = new PropertyValue();
+ lProperties[0].Name = "FilterName";
+ lProperties[0].Value = m_aFilterName;
+ lProperties[1] = new PropertyValue();
+ lProperties[1].Name = "Overwrite";
+ lProperties[1].Value = new Boolean( true );
+
+ sTemp2Url = Helper.CreateTempFile( m_xContext );
+
+ XStorable xStore = ( com.sun.star.frame.XStorable )UnoRuntime.queryInterface ( XStorable.class, m_xModel );
+ if ( xStore == null )
+ throw new com.sun.star.uno.RuntimeException();
+
+ xStore.storeToURL( sTemp2Url, lProperties );
+ String sWikiCode = Helper.EachLine( sTemp2Url );
+
+ if ( aArticle.setArticle( sWikiCode, aSendDialog.m_sWikiComment, aSendDialog.m_bWikiMinorEdit ) )
+ {
+ bResult = true;
+ Object desktop = m_xContext.getServiceManager().createInstanceWithContext( "com.sun.star.frame.Desktop", m_xContext );
+ XDesktop xDesktop = ( XDesktop ) UnoRuntime.queryInterface( com.sun.star.frame.XDesktop.class, desktop );
+ Helper.SetDocTitle( m_xModel, aArticle.GetTitle() );
+ Hashtable aDocInfo = new Hashtable();
+ aDocInfo.put( "Doc", aArticle.GetTitle() );
+ aDocInfo.put( "Url", aArticle.GetMainURL() );
+ aDocInfo.put( "CompleteUrl", aArticle.GetMainURL() + aArticle.GetTitle() );
+ m_aSettings.addWikiDoc( aDocInfo );
+ m_aSettings.storeConfiguration();
+ }
+ else
+ {
+ Helper.ShowError( m_xContext,
+ (XWindowPeer)UnoRuntime.queryInterface( XWindowPeer.class, m_xFrame.getContainerWindow() ),
+ Helper.DLG_SENDTITLE,
+ Helper.GENERALSEND_ERROR,
+ null,
+ false );
+ }
+ }
+ }
+ catch( WikiCancelException ec )
+ {
+ // nothing to do, the sending was cancelled
+ }
+ catch( SSLException essl )
+ {
+ if ( Helper.IsConnectionAllowed() )
+ {
+ // report the error only if sending was not cancelled
+ Helper.ShowError( m_xContext,
+ (XWindowPeer)UnoRuntime.queryInterface( XWindowPeer.class, m_xFrame.getContainerWindow() ),
+ Helper.DLG_SENDTITLE,
+ Helper.UNKNOWNCERT_ERROR,
+ null,
+ false );
+ }
+ }
+ catch( Exception e )
+ {
+ if ( Helper.IsConnectionAllowed() )
+ {
+ // report the error only if sending was not cancelled
+ Helper.ShowError( m_xContext,
+ (XWindowPeer)UnoRuntime.queryInterface( XWindowPeer.class, m_xFrame.getContainerWindow() ),
+ Helper.DLG_SENDTITLE,
+ Helper.GENERALSEND_ERROR,
+ null,
+ false );
+ }
+ e.printStackTrace();
+ }
+
+ if ( sTemp2Url != null )
+ {
+ try
+ {
+ // remove the temporary file
+ File aFile = new File( new URI( sTemp2Url ) );
+ aFile.delete();
+ }
+ catch ( java.lang.Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ return bResult;
+ }
+
+}
diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiOptionsEventHandlerImpl.java b/swext/mediawiki/src/com/sun/star/wiki/WikiOptionsEventHandlerImpl.java
new file mode 100644
index 000000000000..8b635d85c316
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/WikiOptionsEventHandlerImpl.java
@@ -0,0 +1,303 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import com.sun.star.awt.XContainerWindowEventHandler;
+import com.sun.star.awt.XControl;
+import com.sun.star.awt.XControlContainer;
+import com.sun.star.awt.XDialog;
+import com.sun.star.awt.XDialogEventHandler;
+import com.sun.star.awt.XWindow;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.lang.XServiceInfo;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.uno.AnyConverter;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import java.util.Hashtable;
+
+public final class WikiOptionsEventHandlerImpl extends WeakBase
+ implements XServiceInfo, XContainerWindowEventHandler, XDialogEventHandler
+{
+ static final String[] m_pServiceNames = { "com.sun.star.wiki.WikiOptionsEventHandler" };
+ static final String m_sImplementationName = WikiOptionsEventHandlerImpl.class.getName();
+
+ static final String sExternalEvent = "external_event";
+ static final String sAdd = "Add";
+ static final String sEdit = "Edit";
+ static final String sRemove = "Remove";
+ static final String sListStatus = "ListStatus";
+ static final String sListEdit = "ListEdit";
+ static final String sInitialize = "initialize";
+ static final String sOk = "ok";
+ static final String sBack = "back";
+
+ private XComponentContext m_xContext;
+ private XDialog m_xDialog;
+ private XControlContainer m_xControlContainer;
+
+ Settings m_aSettings;
+
+ public WikiOptionsEventHandlerImpl( XComponentContext xContext )
+ {
+ m_xContext = xContext;
+ }
+
+ protected XPropertySet GetPropSet( String sControl )
+ {
+ if ( m_xControlContainer != null )
+ {
+ XControl xControl = m_xControlContainer.getControl(sControl);
+ XPropertySet xListProps = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xControl.getModel() );
+ return xListProps;
+ }
+
+ return null;
+ }
+
+ private void RefreshView()
+ {
+ if ( m_aSettings != null )
+ {
+ String[] pWikiList = m_aSettings.getWikiURLs();
+ XPropertySet xListProps = GetPropSet( "WikiList" );
+ if ( xListProps != null )
+ {
+ try
+ {
+ xListProps.setPropertyValue( "StringItemList", pWikiList );
+ }
+ catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+
+ private void CheckButtonState()
+ {
+ XPropertySet xListProps = GetPropSet( "WikiList" );
+ if ( xListProps != null )
+ {
+ try
+ {
+ short [] pSel = (short []) xListProps.getPropertyValue( "SelectedItems" );
+ XPropertySet xEditProps = GetPropSet( "EditButton" );
+ XPropertySet xRemoveProps = GetPropSet( "RemoveButton" );
+ Boolean bState = new Boolean( pSel.length != 0 );
+
+ xEditProps.setPropertyValue( "Enabled", bState );
+ xRemoveProps.setPropertyValue( "Enabled", bState );
+ }
+ catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ private void AddSetting()
+ {
+ WikiEditSettingDialog aSettingDialog = new WikiEditSettingDialog( m_xContext, "vnd.sun.star.script:WikiEditor.EditSetting?location=application" );
+ if ( aSettingDialog.show() )
+ RefreshView();
+
+ aSettingDialog.DisposeDialog();
+ }
+
+ private void EditSetting()
+ {
+ XPropertySet xListProps = GetPropSet( "WikiList" );
+ if ( xListProps != null )
+ {
+ Hashtable ht = null;
+ try
+ {
+ short[] pSel = (short []) xListProps.getPropertyValue( "SelectedItems" );
+ String[] pItems = (String []) xListProps.getPropertyValue("StringItemList");
+ if ( pSel.length > 0 && pItems.length > pSel[0] )
+ {
+ String selName = pItems[pSel[0]];
+ ht = m_aSettings.getSettingByUrl( pItems[pSel[0]] );
+ }
+ }
+ catch ( Exception ex )
+ {
+ ex.printStackTrace();
+ }
+
+ WikiEditSettingDialog aSettingDialog = new WikiEditSettingDialog(m_xContext, "vnd.sun.star.script:WikiEditor.EditSetting?location=application", ht, true );
+ if ( aSettingDialog.show() )
+ RefreshView();
+
+ aSettingDialog.DisposeDialog();
+ }
+ }
+
+ private void RemoveSetting()
+ {
+ XPropertySet xListProps = GetPropSet("WikiList");
+ if ( xListProps != null )
+ {
+ try
+ {
+ short[] pSel = (short []) xListProps.getPropertyValue("SelectedItems");
+ String[] pItems = (String []) GetPropSet("WikiList").getPropertyValue("StringItemList");
+ if ( pSel.length > 0 && pItems.length > pSel[0] )
+ {
+ m_aSettings.removeSettingByUrl( pItems[pSel[0]] );
+ RefreshView();
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ private void InitStrings()
+ {
+ try
+ {
+
+ GetPropSet( "FixedLine1" ).setPropertyValue( "Label", Helper.GetLocalizedString( m_xContext, Helper.DLG_MEDIAWIKIEXTENSION_STRING ) );
+ GetPropSet( "AddButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( m_xContext, Helper.DLG_ADDBUTTON ) );
+ GetPropSet( "EditButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( m_xContext, Helper.DLG_EDITBUTTON ) );
+ GetPropSet( "RemoveButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( m_xContext, Helper.DLG_REMOVEBUTTON ) );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ // com.sun.star.lang.XServiceInfo:
+ public String getImplementationName()
+ {
+ return m_sImplementationName;
+ }
+
+ public boolean supportsService( String sService )
+ {
+ int len = m_pServiceNames.length;
+
+ for( int i=0; i < len; i++ )
+ {
+ if ( sService.equals( m_pServiceNames[i] ))
+ return true;
+ }
+ return false;
+ }
+
+ public String[] getSupportedServiceNames()
+ {
+ return m_pServiceNames;
+ }
+
+ // XContainerWindowEventHandler
+ public boolean callHandlerMethod( XWindow xWindow, Object aEventObject, String sMethod )
+ throws WrappedTargetException, com.sun.star.uno.RuntimeException
+ {
+ if ( sMethod.equals( sExternalEvent ) )
+ {
+ try
+ {
+ String sEvent = (String)AnyConverter.toString( aEventObject );
+ if ( sEvent != null )
+ {
+ if ( sEvent.equals( sOk ) )
+ {
+ if ( m_aSettings != null )
+ m_aSettings.storeConfiguration();
+ }
+ else if ( sEvent.equals( sInitialize ) || sEvent.equals( sBack ) )
+ {
+ if ( sEvent.equals( sInitialize ) )
+ {
+ m_xDialog = (XDialog)UnoRuntime.queryInterface( XDialog.class, xWindow );
+ m_xControlContainer = (XControlContainer)UnoRuntime.queryInterface(
+ XControlContainer.class, m_xDialog );
+ m_aSettings = Settings.getSettings( m_xContext );
+ m_aSettings.loadConfiguration(); // throw away all the noncommited changes
+ InitStrings();
+ }
+ else if ( m_aSettings != null )
+ m_aSettings.loadConfiguration(); // throw away all the noncommited changes
+
+ RefreshView();
+ CheckButtonState();
+ }
+ }
+ }
+ catch ( com.sun.star.uno.RuntimeException r )
+ {
+ throw r;
+ }
+ catch ( com.sun.star.uno.Exception e )
+ {
+ throw new WrappedTargetException( sMethod, this, e );
+ }
+ }
+ else if ( sMethod.equals( sAdd ) )
+ {
+ AddSetting();
+ }
+ else if ( sMethod.equals( sEdit ) || sMethod.equals( sListEdit ) )
+ {
+ EditSetting();
+ }
+ else if ( sMethod.equals( sRemove ) )
+ {
+ RemoveSetting();
+ CheckButtonState();
+ }
+ else if ( sMethod.equals( sListStatus ) )
+ {
+ CheckButtonState();
+ }
+
+ return true;
+ }
+
+ public boolean callHandlerMethod( XDialog xDialog, Object aEventObject, String sMethod )
+ throws WrappedTargetException, com.sun.star.uno.RuntimeException
+ {
+
+
+ return true;
+ }
+
+ public String[] getSupportedMethodNames()
+ {
+ return new String[] { sExternalEvent, sAdd, sEdit, sRemove };
+ }
+};
+
diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiPropDialog.java b/swext/mediawiki/src/com/sun/star/wiki/WikiPropDialog.java
new file mode 100644
index 000000000000..317f35a3170b
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/WikiPropDialog.java
@@ -0,0 +1,388 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import com.sun.star.awt.XControl;
+import com.sun.star.awt.XControlModel;
+import com.sun.star.awt.XDialog;
+import com.sun.star.awt.XThrobber;
+import com.sun.star.awt.XWindowPeer;
+import com.sun.star.beans.UnknownPropertyException;
+import com.sun.star.beans.XPropertySet;
+import com.sun.star.container.XNameContainer;
+import com.sun.star.lang.WrappedTargetException;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.lang.EventObject;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import java.util.Hashtable;
+
+public class WikiPropDialog extends WikiDialog{
+
+ WikiEditorImpl m_aWikiEditor;
+
+ private final String sSendMethod = "Send";
+ private final String sWikiListMethod = "WikiListChange";
+ private final String sArticleTextMethod = "ArticleTextChange";
+ private final String sAddWikiMethod = "AddWiki";
+
+ String[] m_pMethods = {sSendMethod, sWikiListMethod, sArticleTextMethod, sAddWikiMethod};
+
+ private String m_sWikiTitle = "";
+ protected String m_sWikiEngineURL = "";
+ protected String m_sWikiComment = "";
+ protected boolean m_bWikiMinorEdit = false;
+
+ /** Creates a new instance of WikiPropDialog */
+ public WikiPropDialog(XComponentContext xContext, String DialogURL, WikiEditorImpl aWikiEditorForThrobber )
+ {
+ super(xContext, DialogURL);
+ super.setMethods(m_pMethods);
+
+ if ( aWikiEditorForThrobber != null )
+ {
+ InsertThrobber( 224, 122, 10, 10 );
+ m_aWikiEditor = aWikiEditorForThrobber;
+ }
+
+ InitStrings( xContext );
+ InitShowBrowser( xContext );
+ InitControls( xContext );
+ }
+
+ private void InitControls( XComponentContext xContext )
+ {
+ try
+ {
+ GetPropSet( "CommentText" ).setPropertyValue( "AutoVScroll", Boolean.TRUE );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void InitStrings( XComponentContext xContext )
+ {
+ try
+ {
+ SetTitle( Helper.GetLocalizedString( xContext, Helper.DLG_SENDTITLE ) );
+ GetPropSet( "Label1" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDTOMEDIAWIKI_LABEL1 ) );
+ GetPropSet( "FixedLine2" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_WIKIARTICLE ) );
+ GetPropSet( "Label2" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDTOMEDIAWIKI_LABEL2 ) );
+ GetPropSet( "Label3" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDTOMEDIAWIKI_LABEL3 ) );
+ GetPropSet( "MinorCheck" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDTOMEDIAWIKI_MINORCHECK ) );
+ GetPropSet( "BrowserCheck" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDTOMEDIAWIKI_BROWSERCHECK ) );
+ GetPropSet( "AddButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_ADDBUTTON ) );
+ GetPropSet( "SendButton" ).setPropertyValue( "Label", Helper.GetLocalizedString( xContext, Helper.DLG_SENDBUTTON ) );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void InitShowBrowser( XComponentContext xContext )
+ {
+ try
+ {
+ GetPropSet( "BrowserCheck" ).setPropertyValue( "State", new Short( Helper.GetShowInBrowserByDefault( m_xContext ) ? (short)1 : (short)0 ) );
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public boolean show()
+ {
+ EnableControls( true );
+ boolean bResult = super.show();
+
+ if ( bResult && Helper.GetShowInBrowserByDefault( m_xContext ) )
+ Helper.ShowURLInBrowser( m_xContext, m_sWikiEngineURL + "index.php?title=" + m_sWikiTitle );
+
+ return bResult;
+ }
+
+ public synchronized void ThreadStop( boolean bSelf )
+ {
+ boolean bShowError = ( !bSelf && m_aThread != null && !m_bThreadFinished );
+
+ super.ThreadStop( bSelf );
+
+ if ( bShowError )
+ Helper.ShowError( m_xContext,
+ m_xDialog,
+ Helper.DLG_SENDTITLE,
+ Helper.CANCELSENDING_ERROR,
+ null,
+ false );
+ }
+
+ public void fillWikiList()
+ {
+ String [] WikiList = m_aSettings.getWikiURLs();
+
+ try
+ {
+ XPropertySet xPS = GetPropSet("WikiList");
+ xPS.setPropertyValue("StringItemList", WikiList);
+ // short [] nSel = new short[1];
+ // nSel[0] = (short) m_aSettings.getLastUsedWikiServer();
+ // xPS.setPropertyValue("SelectedItems", sel);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public void fillDocList()
+ {
+ XPropertySet xPS = GetPropSet("ArticleText");
+ try
+ {
+ short [] sel = (short[]) GetPropSet("WikiList").getPropertyValue("SelectedItems");
+ xPS.setPropertyValue("StringItemList", m_aSettings.getWikiDocList(sel[0], 5));
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+
+ public String GetWikiTitle()
+ {
+ return m_sWikiTitle;
+ }
+
+ public void SetWikiTitle(String sArticle)
+ {
+ m_sWikiTitle = sArticle;
+ try
+ {
+ XPropertySet xPS = GetPropSet("ArticleText");
+ xPS.setPropertyValue("Text", sArticle);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+
+ public void switchSendButtonIfNecessary()
+ {
+ XPropertySet xSendButton = GetPropSet( "SendButton" );
+ if ( xSendButton != null )
+ {
+ XPropertySet xWikiListProps = GetPropSet( "WikiList" );
+ XPropertySet xArticleProps = GetPropSet( "ArticleText" );
+ if ( xWikiListProps != null && xArticleProps != null )
+ {
+ try
+ {
+ short [] pSel = (short[]) GetPropSet("WikiList").getPropertyValue("SelectedItems");
+ String sArticle = (String)xArticleProps.getPropertyValue( "Text" );
+ if ( pSel != null && pSel.length > 0 && sArticle != null && sArticle.length() != 0 )
+ xSendButton.setPropertyValue( "Enabled", Boolean.TRUE );
+ else
+ xSendButton.setPropertyValue( "Enabled", Boolean.FALSE );
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+
+ public void EnableControls( boolean bEnable )
+ {
+ try
+ {
+ String[] pControls = { "WikiList",
+ "ArticleText",
+ "CommentText",
+ "MinorCheck",
+ "BrowserCheck",
+ "HelpButton",
+ "AddButton" };
+
+ for ( int nInd = 0; nInd < pControls.length; nInd++ )
+ GetPropSet( pControls[nInd] ).setPropertyValue( "Enabled", new Boolean( bEnable ) );
+
+ if ( bEnable )
+ {
+ SetFocusTo( "WikiList" );
+ switchSendButtonIfNecessary();
+ }
+ else
+ {
+ GetPropSet( "SendButton" ).setPropertyValue( "Enabled", new Boolean( bEnable ) );
+ SetFocusTo( "CancelButton" );
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ public boolean callHandlerMethod( XDialog xDialog, Object EventObject, String MethodName )
+ {
+ if ( MethodName.equals( sSendMethod ) )
+ {
+ try
+ {
+ XPropertySet aWikiListProps = GetPropSet( "WikiList" );
+ XPropertySet aArticleTextProps = GetPropSet( "ArticleText" );
+ XPropertySet aCommentTextProps = GetPropSet( "CommentText" );
+ XPropertySet aMinorCheckProps = GetPropSet( "MinorCheck" );
+ XPropertySet aBrowserCheckProps = GetPropSet( "BrowserCheck" );
+
+ short [] sel = (short[]) aWikiListProps.getPropertyValue("SelectedItems");
+ String [] items = (String []) aWikiListProps.getPropertyValue("StringItemList");
+ m_sWikiEngineURL = items[sel[0]];
+ m_aSettings.setLastUsedWikiServer(sel[0]);
+ m_sWikiTitle = (String) aArticleTextProps.getPropertyValue("Text");
+ m_sWikiComment = (String) aCommentTextProps.getPropertyValue("Text");
+
+ short minorState = ((Short) aMinorCheckProps.getPropertyValue("State")).shortValue();
+ if (minorState != 0)
+ m_bWikiMinorEdit = true;
+ else
+ m_bWikiMinorEdit = false;
+
+ short nBrowserState = ((Short) aBrowserCheckProps.getPropertyValue("State")).shortValue();
+ Helper.SetShowInBrowserByDefault( m_xContext, nBrowserState != 0 );
+
+ // allow to disable other buttons
+ EnableControls( false );
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+
+ final WikiPropDialog aThisDialog = this;
+ final XDialog xDialogToClose = xDialog;
+ final XComponentContext xContext = m_xContext;
+
+ // start spinning
+ SetThrobberVisible( true );
+ SetThrobberActive( true );
+
+ // the following method might show a dialog, should be used in main thread
+ final Hashtable aWikiSettings = m_aSettings.getSettingByUrl( m_sWikiEngineURL );
+ if ( Helper.AllowThreadUsage( m_xContext ) )
+ {
+ m_aThread = new Thread( "com.sun.star.thread.WikiEditorSendingThread" )
+ {
+ public void run()
+ {
+ try
+ {
+ if ( m_aWikiEditor != null )
+ {
+ Thread.yield();
+ m_bAction = m_aWikiEditor.SendArticleImpl( aThisDialog, aWikiSettings );
+ }
+ }
+ finally
+ {
+ EnableControls( true );
+ SetThrobberActive( false );
+ SetThrobberVisible( false );
+
+ ThreadStop( true );
+ if ( m_bAction )
+ MainThreadDialogExecutor.Close( xContext, xDialogToClose );
+ }
+ }
+ };
+
+ m_aThread.start();
+ }
+ else
+ {
+ try
+ {
+ if ( m_aWikiEditor != null )
+ {
+ m_bAction = m_aWikiEditor.SendArticleImpl( aThisDialog, aWikiSettings );
+ }
+ } catch( java.lang.Exception e )
+ {}
+ finally
+ {
+ EnableControls( true );
+ SetThrobberActive( false );
+ SetThrobberVisible( false );
+
+ if ( m_bAction )
+ xDialogToClose.endExecute();
+ }
+ }
+
+ return true;
+ }
+ else if ( MethodName.equals( sWikiListMethod ) )
+ {
+ fillDocList();
+ switchSendButtonIfNecessary();
+ return true;
+ }
+ else if ( MethodName.equals( sArticleTextMethod ) )
+ {
+ switchSendButtonIfNecessary();
+ return true;
+ }
+ else if ( MethodName.equals( sAddWikiMethod ) )
+ {
+ WikiEditSettingDialog xAddDialog = new WikiEditSettingDialog(m_xContext, "vnd.sun.star.script:WikiEditor.EditSetting?location=application");
+ if ( xAddDialog.show() )
+ fillWikiList();
+
+ xAddDialog.DisposeDialog();
+
+ return true;
+ }
+
+ return false;
+ }
+
+ public void windowClosed( EventObject e )
+ {
+ ThreadStop( false );
+ }
+}
+
diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiProtocolSocketFactory.java b/swext/mediawiki/src/com/sun/star/wiki/WikiProtocolSocketFactory.java
new file mode 100644
index 000000000000..653eaca8466a
--- /dev/null
+++ b/swext/mediawiki/src/com/sun/star/wiki/WikiProtocolSocketFactory.java
@@ -0,0 +1,168 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.wiki;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.security.KeyStore;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.X509TrustManager;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import org.apache.commons.httpclient.ConnectTimeoutException;
+import org.apache.commons.httpclient.HttpClientError;
+import org.apache.commons.httpclient.params.HttpConnectionParams;
+import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
+
+class WikiProtocolSocketFactory implements SecureProtocolSocketFactory
+{
+ private SSLContext m_aSSLContext;
+
+ public WikiProtocolSocketFactory()
+ {
+ super();
+ }
+
+ public synchronized SSLContext GetNotSoSecureSSLContext()
+ {
+ if ( m_aSSLContext == null )
+ {
+ TrustManager[] pTrustUnknownCerts = new TrustManager[]
+ {
+ new X509TrustManager() {
+ private X509TrustManager m_aOrgTrustManager;
+
+ private X509TrustManager GetOrgTrustManager()
+ {
+ if ( m_aOrgTrustManager == null )
+ {
+ try
+ {
+ TrustManagerFactory aFactory = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm() );
+ aFactory.init( (KeyStore)null );
+ TrustManager[] pTrustmanagers = aFactory.getTrustManagers();
+ if ( pTrustmanagers.length != 0 && pTrustmanagers[0] != null )
+ m_aOrgTrustManager = (X509TrustManager)pTrustmanagers[0];
+ }
+ catch( Exception e )
+ {
+ throw new RuntimeException( "No access to the default trust manager!" );
+ }
+ }
+
+ return m_aOrgTrustManager;
+ }
+
+ public X509Certificate[] getAcceptedIssuers()
+ {
+ return GetOrgTrustManager().getAcceptedIssuers();
+ }
+
+ public void checkClientTrusted(X509Certificate[] certs, String authType) throws CertificateException
+ {
+ GetOrgTrustManager().checkClientTrusted( certs, authType );
+ }
+
+ public void checkServerTrusted(X509Certificate[] certs, String authType) throws CertificateException
+ {
+ if ( certs == null || certs.length == 0 )
+ GetOrgTrustManager().checkServerTrusted( certs, authType );
+ else
+ for ( int nInd = 0; nInd < certs.length; nInd++ )
+ certs[nInd].checkValidity();
+ }
+ }
+ };
+
+ try
+ {
+ SSLContext aContext = SSLContext.getInstance("SSL");
+ if ( aContext != null )
+ {
+ aContext.init( null, pTrustUnknownCerts, null );
+ m_aSSLContext = aContext;
+ }
+ }
+ catch ( Exception e )
+ {
+ }
+ }
+
+ if ( m_aSSLContext == null )
+ throw new HttpClientError();
+
+ return m_aSSLContext;
+ }
+
+ public Socket createSocket( String sHost, int nPort, InetAddress clientHost, int clientPort )
+ throws IOException, UnknownHostException
+ {
+ return GetNotSoSecureSSLContext().getSocketFactory().createSocket( sHost, nPort, clientHost, clientPort );
+ }
+
+ public Socket createSocket( final String sHost, final int nPort, final InetAddress aLocalAddress, final int nLocalPort, final HttpConnectionParams params )
+ throws IOException, UnknownHostException, ConnectTimeoutException
+ {
+ if ( params == null )
+ return createSocket( sHost, nPort, aLocalAddress, nLocalPort );
+
+ int nTimeout = params.getConnectionTimeout();
+ Socket aSocket = GetNotSoSecureSSLContext().getSocketFactory().createSocket();
+ aSocket.bind( new InetSocketAddress( aLocalAddress, nLocalPort ) );
+ aSocket.connect( new InetSocketAddress( sHost, nPort ), nTimeout );
+ return aSocket;
+ }
+
+ public Socket createSocket( String sHost, int nPort )
+ throws IOException, UnknownHostException
+ {
+ return GetNotSoSecureSSLContext().getSocketFactory().createSocket( sHost, nPort );
+ }
+
+ public Socket createSocket( Socket aSocket, String sHost, int nPort, boolean bAutoClose )
+ throws IOException, UnknownHostException
+ {
+ return GetNotSoSecureSSLContext().getSocketFactory().createSocket( aSocket, sHost, nPort, bAutoClose );
+ }
+
+ public boolean equals(Object obj)
+ {
+ return ((obj != null) && obj.getClass().equals(WikiProtocolSocketFactory.class));
+ }
+
+ public int hashCode()
+ {
+ return WikiProtocolSocketFactory.class.hashCode();
+ }
+};
+
diff --git a/swext/mediawiki/src/description.xml b/swext/mediawiki/src/description.xml
new file mode 100644
index 000000000000..7f533d97d320
--- /dev/null
+++ b/swext/mediawiki/src/description.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description xmlns="http://openoffice.org/extensions/description/2006" xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <version value="1.1.1"/>
+ <identifier value="@WIKIEXTENSIONID@"/>
+ <display-name>
+ <name lang="en-US">@WIKIEXTENSIONPRODUCTNAME@</name>
+ </display-name>
+ <dependencies>
+ <OpenOffice.org-minimal-version value="3.0" d:name="OpenOffice.org 3.0 or StarOffice 9"/>
+ </dependencies>
+ <publisher>
+ <name xlink:href="http://www.oracle.com/us/products/applications/open-office" lang="en">Oracle</name>
+ </publisher>
+</description>
diff --git a/swext/mediawiki/src/filter/mediawiki.ott b/swext/mediawiki/src/filter/mediawiki.ott
new file mode 100644
index 000000000000..eb94e9607bc0
--- /dev/null
+++ b/swext/mediawiki/src/filter/mediawiki.ott
Binary files differ
diff --git a/swext/mediawiki/src/filter/odt2mediawiki.xsl b/swext/mediawiki/src/filter/odt2mediawiki.xsl
new file mode 100755
index 000000000000..8d21a1cda1fd
--- /dev/null
+++ b/swext/mediawiki/src/filter/odt2mediawiki.xsl
@@ -0,0 +1,1567 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ odt2wiki: OpenDocument to WikiMedia transformation
+ Copyright (C) 2007 Bernhard Haumacher (haui at haumacher dot de)
+
+ 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 program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+-->
+<stylesheet version="1.0"
+ xmlns="http://www.w3.org/1999/XSL/Transform"
+
+ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
+ xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
+ xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
+ xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
+ xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
+ xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
+ xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
+ xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
+ xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
+ xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
+ xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
+ xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
+ xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:math="http://www.w3.org/1998/Math/MathML"
+ xmlns:dom="http://www.w3.org/2001/xml-events"
+ xmlns:xforms="http://www.w3.org/2002/xforms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+>
+
+ <!--
+ == Customization options ==
+ -->
+
+ <!-- Constant defining the newline token. -->
+ <param name="NL" select="'&#10;'"/>
+
+ <!-- String that a tabulator is expanded with in preformatted paragraphs. -->
+
+ <variable name="codetabdocument-value"
+ select="/office:document/office:meta/meta:user-defined[@meta:name='CODE_TAB_REPLACEMENT']"/>
+
+ <param name="CODE_TAB_REPLACEMENT">
+
+ <choose>
+
+ <when test="boolean($codetabdocument-value)">
+ <value-of select="$codetabdocument-value"/>
+ </when>
+
+ <otherwise>
+ <value-of select="' '"/>
+ </otherwise>
+ </choose>
+ </param>
+
+ <!--
+ Switch that suppresses separation of paragraphs with empty lines.
+ (Set to 1 to activate) -->
+ <param name="CODE_JOIN_PARAGRAPHS"
+ select="boolean(string(/office:document/office:meta/meta:user-defined[@meta:name='CODE_JOIN_PARAGRAPHS']) != 'false')"/>
+
+ <variable name="document-value"
+ select="/office:document/office:meta/meta:user-defined[@meta:name='CODE_STYLES']"/>
+
+ <param name="CODE_STYLES">
+
+ <choose>
+ <when test="boolean($document-value)">
+ <value-of select="$document-value"/>
+ </when>
+
+ <otherwise>
+ <value-of select="''"/>
+ </otherwise>
+ </choose>
+ </param>
+
+ <variable name="table-class"
+ select="/office:document/office:meta/meta:user-defined[@meta:name='TABLE_CLASS']"/>
+
+ <param name="TABLE_CLASS">
+ <choose>
+ <when test="boolean($table-class)">
+ <value-of select="$table-class"/>
+ </when>
+
+ <otherwise>
+ <value-of select="''"/>
+ </otherwise>
+ </choose>
+ </param>
+
+ <variable name="USE_DEFAULT_TABLE_CLASS" select="string-length($TABLE_CLASS) &gt; 0"/>
+
+
+ <!--
+ == Wiki style constants ==
+ -->
+
+ <!-- Bold character style. -->
+ <variable name="BOLD_BIT" select="1"/>
+
+ <!-- Italic character style. -->
+ <variable name="ITALIC_BIT" select="2"/>
+
+ <!-- Subscript character style. -->
+ <variable name="SUBSCRIPT_BIT" select="4"/>
+
+ <!-- Superscript character style. -->
+ <variable name="SUPERSCRIPT_BIT" select="8"/>
+
+ <!-- Typewriter character style. -->
+ <variable name="TYPEWRITER_BIT" select="16"/>
+
+ <!-- Preformatted text paragraph style. -->
+ <variable name="CODE_BIT" select="32"/>
+
+ <!-- Centered paragraph style. -->
+ <variable name="CENTER_BIT" select="64"/>
+
+ <!-- Right aligned paragraph style. -->
+ <variable name="RIGHT_BIT" select="128"/>
+
+ <!-- Constant defining the empty style. -->
+ <variable name="NO_STYLE" select="0"/>
+
+
+
+ <output
+ method="text"
+ media-type="text/plain"
+ encoding="UTF-8"
+ />
+
+
+ <!--
+ == Reference resolution ==
+ -->
+
+ <key
+ name="style-ref"
+ match="//style:style"
+ use="@style:name"
+ />
+
+ <key
+ name="list-style-ref"
+ match="//text:list-style"
+ use="@style:name"
+ />
+
+ <key
+ name="font-face-ref"
+ match="//style:font-face"
+ use="@style:name"
+ />
+
+ <key
+ name="reference-resolution"
+ match="//text:reference-mark | //text:reference-mark-start"
+ use="@text:name"
+ />
+
+
+ <!--
+ Multiple pages (draw only)
+ -->
+
+ <template match="draw:page">
+ <value-of select="concat('&#10;&lt;!-- Page ', @draw:name, '--&gt;&#10;')"/>
+ <apply-templates/>
+ <value-of select="'&#10;----&#10;&#10;'"/>
+ </template>
+
+
+ <!--
+ == Lists ==
+ -->
+
+ <template match="text:list">
+ <!--
+ Check, whether this list is used to implement the outline numbering
+ for headings. Such list must not be exported, because within the wiki,
+ automatic outline numbering is performed. An outline list has a single
+ text:h element as its single leaf grandchild.
+
+ This method of section numbering seems not to be used when creating new
+ documents with OpenOffice.org 2.2, but the document containing the
+ OpenDocument specification version 1.1 uses such numbering through nested
+ lists.
+ -->
+ <choose>
+ <when test="boolean(./descendant::node()[not(./self::text:list) and not(./self::text:list-item) and not(./ancestor-or-self::text:h)])">
+ <apply-templates/>
+ </when>
+
+ <otherwise>
+ <apply-templates select=".//text:h"/>
+ </otherwise>
+ </choose>
+ </template>
+
+ <template match="text:list-item">
+ <if test="position() &gt; 1 or boolean(ancestor::text:list-item)">
+ <value-of select="$NL"/>
+ </if>
+ <variable name="list-style"
+ select="key('list-style-ref',ancestor::text:list[boolean(@text:style-name)][1]/@text:style-name)"/>
+ <call-template name="mk-list-token">
+ <with-param name="list-style" select="$list-style"/>
+ <with-param name="level" select="count(ancestor::text:list)"/>
+ </call-template>
+ <text> </text>
+ <apply-templates/>
+ <if test="position() = last() and not(boolean(ancestor::text:list-item))">
+ <!-- End of (potentially nested) list is marked with a double newline. -->
+ <value-of select="$NL"/>
+ <value-of select="$NL"/>
+ </if>
+ </template>
+
+ <template name="mk-list-token">
+ <param name="list-style"/>
+ <param name="level"/>
+
+ <if test="$level &gt; 1">
+ <call-template name="mk-list-token">
+ <with-param name="list-style" select="$list-style"/>
+ <with-param name="level" select="$level - 1"/>
+ </call-template>
+ </if>
+
+ <variable name="number-style" select="$list-style/text:list-level-style-number[@text:level=$level]"/>
+ <variable name="bullet-style" select="$list-style/text:list-level-style-bullet[@text:level=$level]"/>
+ <choose>
+ <when test="boolean($number-style)">
+ <choose>
+ <when test="string-length($number-style/@style:num-format) &gt; 0">
+ <text>#</text>
+ </when>
+ <otherwise>
+ <text>:</text>
+ </otherwise>
+ </choose>
+ </when>
+ <when test="boolean($bullet-style)">
+ <text>*</text>
+ </when>
+ </choose>
+ </template>
+
+
+ <!--
+ == Headings ==
+ -->
+
+ <template match="text:h">
+ <if test="string-length(.) &gt; 0">
+ <variable name="token">
+ <call-template name="mk-heading-prefix">
+ <with-param name="level" select="@text:outline-level"/>
+ </call-template>
+ </variable>
+ <value-of select="$token"/>
+ <text> </text>
+ <apply-templates/>
+ <text> </text>
+ <value-of select="$token"/>
+ <value-of select="$NL"/>
+ </if>
+ </template>
+
+ <template match="text:index-title">
+ <text>== </text>
+ <apply-templates/>
+ <text> ==</text>
+ <value-of select="$NL"/>
+ </template>
+
+ <!--
+ Function generating a wiki heading prefix.
+
+ @param level
+ The heading level. The value must be between 1 and 5.
+ -->
+ <template name="mk-heading-prefix">
+ <param name="level"/>
+ <choose>
+ <when test="$level &gt; 5">
+ <call-template name="mk-heading-prefix">
+ <with-param name="level" select="5"/>
+ </call-template>
+ </when>
+ <when test="$level &gt; 0">
+ <text>=</text>
+ <call-template name="mk-heading-prefix">
+ <with-param name="level" select="$level - 1"/>
+ </call-template>
+ </when>
+ </choose>
+ </template>
+
+ <!--
+ Funktion generating a token consisting of the given character
+ repeated 'level' times.
+
+ @param level
+ The lengh of the result.
+ @param char
+ The character that should be repeated 'level' times.
+ -->
+ <template name="mk-token">
+ <param name="level"/>
+ <param name="char"/>
+ <if test="$level &gt; 0">
+ <value-of select="$char"/>
+ <call-template name="mk-token">
+ <with-param name="level" select="$level - 1"/>
+ <with-param name="char" select="$char"/>
+ </call-template>
+ </if>
+ </template>
+
+
+ <!--
+ == Tables ==
+ -->
+
+ <template match="table:table">
+ <text>&#10;</text>
+ <text>{|</text>
+
+ <choose>
+ <when test="$USE_DEFAULT_TABLE_CLASS">
+ <text> class="</text>
+ <value-of select="$TABLE_CLASS"/>
+ <text>"</text>
+ </when>
+
+ <otherwise>
+ <!-- Default setting to translate detailed office table cell styles correctly. -->
+ <text> style="border-spacing:0;"</text>
+ </otherwise>
+ </choose>
+
+ <text>&#10;</text>
+ <apply-templates/>
+ <text>&#10;</text>
+ <text>|}</text>
+ <text>&#10;</text>
+ </template>
+
+ <template match="table:table-header-rows">
+ <apply-templates/>
+ </template>
+
+ <template match="table:table-row[position() &lt; last()] | table:table-header-rows/table:table-row">
+ <apply-templates/>
+ <text>&#10;</text>
+ <text>|-</text>
+ <text>&#10;</text>
+ </template>
+
+ <template match="table:table-row">
+ <apply-templates/>
+ </template>
+
+ <template match="table:table-header-rows//table:table-cell">
+ <text>! </text>
+ <if test="@table:number-columns-spanned">
+ <text>colspan="</text>
+ <value-of select="@table:number-columns-spanned"/>
+ <text>" | </text>
+ </if>
+ <apply-templates/>
+ <value-of select="$NL"/>
+ </template>
+
+ <template match="table:table-cell">
+ <text>|</text>
+ <if test="@table:number-columns-spanned">
+ <text> colspan="</text>
+ <value-of select="@table:number-columns-spanned"/>
+ <text>" </text>
+ </if>
+ <if test="not($USE_DEFAULT_TABLE_CLASS) and boolean(@table:style-name)">
+ <variable name="style-element" select="key('style-ref', @table:style-name)"/>
+
+ <variable name="style">
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'background-color'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:background-color"/>
+ </call-template>
+
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'border'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:border"/>
+ </call-template>
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'border-top'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:border-top"/>
+ </call-template>
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'border-bottom'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:border-bottom"/>
+ </call-template>
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'border-left'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:border-left"/>
+ </call-template>
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'border-right'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:border-right"/>
+ </call-template>
+
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'padding'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:padding"/>
+ </call-template>
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'padding-top'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:padding-top"/>
+ </call-template>
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'padding-bottom'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:padding-bottom"/>
+ </call-template>
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'padding-left'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:padding-left"/>
+ </call-template>
+ <call-template name="translate-style-property">
+ <with-param name="style-name" select="'padding-right'"/>
+ <with-param name="style-property" select="$style-element/style:table-cell-properties/@fo:padding-right"/>
+ </call-template>
+ </variable>
+
+ <if test="string-length($style) &gt; 0">
+ <text> style="</text>
+ <value-of select="$style"/>
+ <text>"</text>
+ </if>
+ </if>
+ <text>| </text>
+ <apply-templates/>
+ <value-of select="$NL"/>
+ </template>
+
+ <template name="translate-style-property">
+ <param name="style-name"/>
+ <param name="style-property"/>
+
+ <if test="boolean($style-property)">
+ <value-of select="$style-name"/>
+ <text>:</text>
+ <value-of select="string($style-property)"/>
+ <text>;</text>
+ </if>
+ </template>
+
+ <!--
+ == WikiMath ==
+ -->
+
+ <template match="text:span[@text:style-name='WikiMath']">
+ <value-of select="'&lt;math&gt;'"/>
+ <apply-templates/>
+ <value-of select="'&lt;/math&gt;'"/>
+ </template>
+
+
+ <!--
+ == Native links ==
+ -->
+
+ <template match="text:a">
+ <variable name="link-ref" select="@xlink:href"/>
+ <choose>
+ <when test="string-length($link-ref) &gt; 0">
+ <variable name="link-label" select="string(.)"/>
+ <text>[</text>
+ <value-of select="$link-ref"/>
+ <text> </text>
+ <value-of select="$link-label"/>
+ <text>]</text>
+ </when>
+
+ <otherwise>
+ <apply-templates/>
+ </otherwise>
+ </choose>
+ </template>
+
+
+ <!--
+ == WikiLink ==
+ -->
+
+ <template match="text:span[@text:style-name='WikiLink']">
+ <value-of select="'[['"/>
+ <variable name="link-def" select="string(.)"/>
+ <variable name="link-label" select="normalize-space(substring-before($link-def, '['))"/>
+ <variable name="link-ref" select="normalize-space(substring-before(substring-after($link-def, '['), ']'))"/>
+ <choose>
+ <when test="boolean($link-ref)">
+ <value-of select="concat($link-ref, '|', $link-label)"/>
+ </when>
+ <otherwise>
+ <value-of select="$link-def"/>
+ </otherwise>
+ </choose>
+ <value-of select="']]'"/>
+ </template>
+
+
+ <!--
+ == Paragraphs ==
+ -->
+
+ <template match="text:p[string-length(.) &gt; 0]">
+ <variable name="style">
+ <call-template name="mk-style-set">
+ <with-param name="node" select="."/>
+ </call-template>
+ </variable>
+
+ <variable name="code"
+ select="($style mod (2 * $CODE_BIT)) - ($style mod ($CODE_BIT)) != 0"/>
+ <variable name="center"
+ select="($style mod (2 * $CENTER_BIT)) - ($style mod ($CENTER_BIT)) != 0"/>
+ <variable name="right"
+ select="($style mod (2 * $RIGHT_BIT)) - ($style mod ($RIGHT_BIT)) != 0"/>
+
+ <choose>
+ <when test="$center">
+ <text>&lt;center&gt;</text>
+ </when>
+ <when test="$right">
+ <text>&lt;div align="right"&gt;</text>
+ </when>
+ <when test="$code">
+ <value-of select="' '"/>
+ </when>
+ </choose>
+
+ <apply-templates/>
+
+ <choose>
+ <when test="$center">
+ <text>&lt;/center&gt;</text>
+ </when>
+ <when test="$right">
+ <text>&lt;/div&gt;</text>
+ </when>
+ </choose>
+
+ <variable name="paragraph-right"
+ select="./following-sibling::*[1]/self::text:p"/>
+
+ <choose>
+ <when test="boolean($paragraph-right)">
+ <!--
+ Insert end of line only if not within a list. Within wiki lists,
+ a line break leaves the current list item.
+ -->
+ <choose>
+ <when test="boolean(ancestor::text:list-item)">
+ <text>&lt;br/&gt; </text>
+ </when>
+ <when test="$code">
+ <variable name="style-right">
+ <call-template name="mk-style-set">
+ <with-param name="node" select="$paragraph-right"/>
+ </call-template>
+ </variable>
+
+ <variable name="code-right"
+ select="($style-right mod (2 * $CODE_BIT)) - ($style-right mod ($CODE_BIT)) != 0"/>
+
+ <choose>
+ <when test="$code-right">
+ <choose>
+ <when test="$CODE_JOIN_PARAGRAPHS">
+ <value-of select="$NL"/>
+ </when>
+
+ <otherwise>
+ <value-of select="$NL"/>
+ <value-of select="' '"/>
+ <value-of select="$NL"/>
+ </otherwise>
+ </choose>
+ </when>
+ <otherwise>
+ <value-of select="$NL"/>
+ <value-of select="$NL"/>
+ </otherwise>
+ </choose>
+ </when>
+ <otherwise>
+ <value-of select="$NL"/>
+ <value-of select="$NL"/>
+ </otherwise>
+ </choose>
+ </when>
+ <when test="boolean(./following-sibling::*[1]/self::text:h) or boolean(./following-sibling::*[1]/self::table:table) or boolean(./following-sibling::*[1]/self::text:bibliography)">
+ <!-- Newline before following heading or table. -->
+ <value-of select="$NL"/>
+ <value-of select="$NL"/>
+ </when>
+ <when test="./following-sibling::*[1]/self::text:list and not(ancestor::text:list-item)">
+ <value-of select="$NL"/>
+ <value-of select="$NL"/>
+ </when>
+ </choose>
+ </template>
+
+ <template match="text:p[string-length(.) = 0 and string-length(preceding-sibling::*[1]/self::text:p) &gt; 0]">
+ <value-of select="$NL"/>
+ </template>
+
+
+ <!--
+ == Preformatted text ==
+ -->
+
+ <template match="text:s">
+ <variable name="style">
+ <call-template name="mk-style-set">
+ <with-param name="node" select="."/>
+ </call-template>
+ </variable>
+
+ <variable name="code"
+ select="($style mod (2 * $CODE_BIT)) - ($style mod ($CODE_BIT)) != 0"/>
+
+ <if test="$code">
+ <choose>
+ <when test="@text:c">
+ <call-template name="mk-token">
+ <with-param name="level" select="@text:c"/>
+ <with-param name="char" select="' '"/>
+ </call-template>
+ </when>
+ <otherwise>
+ <value-of select="' '"/>
+ </otherwise>
+ </choose>
+ </if>
+ </template>
+
+ <template match="text:tab">
+ <variable name="style">
+ <call-template name="mk-style-set">
+ <with-param name="node" select="."/>
+ </call-template>
+ </variable>
+
+ <variable name="code"
+ select="($style mod (2 * $CODE_BIT)) - ($style mod ($CODE_BIT)) != 0"/>
+
+ <if test="$code">
+ <value-of select="$CODE_TAB_REPLACEMENT"/>
+ </if>
+ </template>
+
+ <template match="text:line-break">
+ <variable name="style">
+ <call-template name="mk-style-set">
+ <with-param name="node" select="."/>
+ </call-template>
+ </variable>
+
+ <variable name="code"
+ select="($style mod (2 * $CODE_BIT)) - ($style mod ($CODE_BIT)) != 0"/>
+
+ <if test="$code">
+ <value-of select="$NL"/>
+ <value-of select="' '"/>
+ </if>
+ </template>
+
+ <!--
+ Footnotes
+ -->
+
+ <template match="text:note-body">
+ <variable name="note" select="./parent::text:note"/>
+
+ <if test="$note/@text:note-class = 'footnote'">
+ <text>&lt;ref name="</text>
+ <value-of select="$note/@text:id"/>
+ <text>"&gt;</text>
+ <apply-templates/>
+ <text>&lt;/ref&gt;</text>
+ </if>
+ </template>
+
+ <template match="text:note-ref[@text:note-class='footnote']">
+ <text>&lt;ref name="</text>
+ <value-of select="@text:ref-name"/>
+ <text>"/&gt;</text>
+ </template>
+
+
+ <!--
+ == Images ==
+ -->
+
+ <template match="draw:text-box[boolean(.//draw:image)]">
+ <variable name="image" select=".//draw:image[1]"/>
+
+ <variable name="image-description">
+ <apply-templates/>
+ </variable>
+
+ <text>[[</text>
+ <call-template name="mk-image-name">
+ <with-param name="image" select="$image"/>
+ </call-template>
+ <text>|thumb|</text>
+ <value-of select="normalize-space($image-description)"/>
+ <text>]]</text>
+ </template>
+
+ <template match="draw:image[not(boolean(ancestor::draw:text-box))]">
+ <text>[[</text>
+ <call-template name="mk-image-name">
+ <with-param name="image" select="."/>
+ </call-template>
+ <text>]]</text>
+ </template>
+
+ <template name="mk-image-name">
+ <param name="image"/>
+
+ <variable name="base-name">
+ <call-template name="mk-base-name">
+ <with-param name="href" select="$image/@xlink:href"/>
+ </call-template>
+ </variable>
+
+ <if test="not(starts-with($base-name, 'Image:'))">
+ <value-of select="'Image:'"/>
+ </if>
+ <value-of select="$base-name"/>
+ </template>
+
+ <template name="mk-base-name">
+ <param name="href"/>
+
+ <variable name="result" select="substring-after($href, '/')"/>
+ <choose>
+ <when test="boolean($result)">
+ <call-template name="mk-base-name">
+ <with-param name="href" select="$result"/>
+ </call-template>
+ </when>
+ <otherwise>
+ <value-of select="$href"/>
+ </otherwise>
+ </choose>
+ </template>
+
+ <!-- Frames -->
+
+ <template match="draw:frame">
+ <choose>
+ <when test="draw:object/math:math">
+ <apply-templates select="draw:object/math:math[1]"/>
+ </when>
+
+ <when test="draw:image">
+ <apply-templates select="draw:image[1]"/>
+ </when>
+
+ <otherwise>
+ <apply-templates select="./*[1]"/>
+ </otherwise>
+ </choose>
+
+ </template>
+
+ <!-- Formulas (Objects) -->
+
+ <include href="math/mmltex.xsl"/>
+
+ <template match="math:math" priority="1">
+ <text>&lt;math&gt;</text>
+ <apply-templates/>
+ <text>&lt;/math&gt;</text>
+ </template>
+
+
+ <!--
+ References
+ -->
+
+ <!-- TODO: text:bibliography-mark -->
+
+ <template match="text:reference-ref">
+ <variable name="reference-mark" select="key('reference-resolution', @text:ref-name)"/>
+
+ <choose>
+ <when test="boolean($reference-mark)">
+ <!--
+ In wiki syntax, only a local reference to a heading can be inserted.
+ If the link target is a descendant of a heading element, a link can be
+ inserted in the result. -->
+ <variable name="header-anchor" select="$reference-mark/ancestor::text:h[1]"/>
+ <if test="boolean($header-anchor)">
+ <text>[[#</text>
+ <value-of select="string($header-anchor)"/>
+ <text>|</text>
+ </if>
+
+ <variable name="reference-text" select="string(.)"/>
+
+ <choose>
+ <!-- Check, whether the reference text is cached in the document. -->
+ <when test="string-length($reference-text) &gt; 0">
+ <value-of select="$reference-text"/>
+ </when>
+
+ <otherwise>
+ <!--
+ TODO: Evaluate the @text:reference-format attribute and
+ generate the replacement text (difficult).-->
+ <text>(REFERENCE TEXT UNAVAILABLE: "</text>
+ <value-of select="@text:ref-name"/>
+ <text>")</text>
+ </otherwise>
+ </choose>
+
+ <if test="boolean($header-anchor)">
+ <text>]]</text>
+ </if>
+ </when>
+
+ <otherwise>
+ <text>(UNDEFINED REFERENCE: "</text>
+ <value-of select="@text:ref-name"/>
+ <text>")</text>
+ </otherwise>
+ </choose>
+ </template>
+
+ <template match="text:reference-mark">
+ <!-- TODO: Output an anchor. -->
+ <apply-templates/>
+ </template>
+
+ <template match="text:reference-mark-start">
+ <!-- TODO: Output an anchor. -->
+ </template>
+
+ <!--
+ == Plain text ==
+ -->
+
+ <template match="text:p/text() | text:h/text() | text:span/text() | text:sequence/text() | text:sequence-ref/text() | text:a/text() | text:bookmark-ref/text() | text:reference-mark/text() | text:date/text() | text:time/text() | text:page-number/text() | text:sender-firstname/text() | text:sender-lastname/text() | text:sender-initials/text() | text:sender-title/text() | text:sender-position/text() | text:sender-email/text() | text:sender-phone-private/text() | text:sender-fax/text() | text:sender-company/text() | text:sender-phone-work/text() | text:sender-street/text() | text:sender-city/text() | text:sender-postal-code/text() | text:sender-country/text() | text:sender-state-or-province/text() | text:author-name/text() | text:author-initials/text() | text:chapter/text() | text:file-name/text() | text:template-name/text() | text:sheet-name/text() | text:variable-get/text() | text:variable-input/text() | text:user-field-get/text() | text:user-field-input/text() | text:expression/text() | text:text-input/text() | text:initial-creator/text() | text:creation-date/text() | text:creation-time/text() | text:description/text() | text:user-defined/text() | text:print-date/text() | text:printed-by/text() | text:title/text() | text:subject/text() | text:keywords/text() | text:editing-cycles/text() | text:editing-duration/text() | text:modification-date/text() | text:creator/text() | text:modification-time/text() | text:page-count/text() | text:paragraph-count/text() | text:word-count/text() | text:character-count/text() | text:table-count/text() | text:image-count/text() | text:object-count/text() | text:database-display/text() | text:database-row-number/text() | text:database-name/text() | text:page-variable-get/text() | text:placeholder/text() | text:conditional-text/text() | text:hidden-text/text() | text:execute-macro/text() | text:dde-connection/text() | text:measure/text() | text:table-formula/text()">
+ <choose>
+ <when test="boolean(./ancestor::table:table-header-rows | ./ancestor::text:h)">
+ <!--
+ No explicit styles within table headings or section headings,
+ because those styles are consistently declared by the Wiki engine. -->
+ <value-of select="."/>
+ </when>
+
+ <when test="string-length(.) &gt; 0">
+ <variable name="style">
+ <call-template name="mk-style-set">
+ <with-param name="node" select="."/>
+ </call-template>
+ </variable>
+
+ <variable name="current-paragraph"
+ select="./ancestor::text:p[1]"/>
+ <variable name="paragraph-id"
+ select="generate-id($current-paragraph)"/>
+ <variable name="frames"
+ select="$current-paragraph/descendant::draw:frame"/>
+ <variable name="frame-count"
+ select="count($frames)"/>
+
+ <!--
+ The current style context consists of all text nodes that are
+ descendants of the paragraph ancestor of this text node but not
+ descendants of any frame nodes that are descendants of the current
+ text nodes paragraph.
+ -->
+ <variable name="context"
+ select="$current-paragraph//text()[not(boolean(./ancestor::draw:frame[1]) and count(./ancestor::draw:frame[1] | $frames) = $frame-count)]"/>
+ <variable name="context-size" select="count($context)"/>
+
+ <variable name="context-index">
+ <call-template name="mk-context-index">
+ <with-param name="current-id" select="generate-id(.)"/>
+ <with-param name="context" select="$context"/>
+ <with-param name="test-index" select="1"/>
+ </call-template>
+ </variable>
+
+ <variable name="style-left">
+ <choose>
+ <when test="$context-index &gt; 1">
+ <variable name="left" select="$context[$context-index - 1]"/>
+ <!--
+ The preceding text node is a child of this nodes topmost
+ styled ancestor. This means that the result of the
+ transformation will be directly concatenated.
+ -->
+ <call-template name="mk-style-set">
+ <with-param name="node" select="$left"/>
+ </call-template>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+ <variable name="style-right">
+ <choose>
+ <when test="$context-index &lt; count($context)">
+ <variable name="right" select="$context[$context-index + 1]"/>
+ <!--
+ The preceding text node is a child of this nodes topmost
+ styled ancestor. This means that the result of the
+ transformation will be directly concatenated.
+ -->
+ <call-template name="mk-style-set">
+ <with-param name="node" select="$right"/>
+ </call-template>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+
+ <variable name="bold"
+ select="($style mod (2 * $BOLD_BIT)) != 0"/>
+ <variable name="italic"
+ select="($style mod (2 * $ITALIC_BIT)) - ($style mod ($ITALIC_BIT)) != 0"/>
+ <variable name="superscript"
+ select="($style mod (2 * $SUPERSCRIPT_BIT)) - ($style mod ($SUPERSCRIPT_BIT)) != 0"/>
+ <variable name="subscript"
+ select="($style mod (2 * $SUBSCRIPT_BIT)) - ($style mod ($SUBSCRIPT_BIT)) != 0"/>
+ <variable name="code"
+ select="($style mod (2 * $CODE_BIT)) - ($style mod ($CODE_BIT)) != 0"/>
+ <variable name="typewriter"
+ select="($style mod (2 * $TYPEWRITER_BIT)) - ($style mod ($TYPEWRITER_BIT)) != 0"/>
+
+ <variable name="bold-left"
+ select="($style-left mod (2 * $BOLD_BIT)) != 0"/>
+ <variable name="italic-left"
+ select="($style-left mod (2 * $ITALIC_BIT)) - ($style-left mod ($ITALIC_BIT)) != 0"/>
+ <variable name="superscript-left"
+ select="($style-left mod (2 * $SUPERSCRIPT_BIT)) - ($style-left mod ($SUPERSCRIPT_BIT)) != 0"/>
+ <variable name="subscript-left"
+ select="($style-left mod (2 * $SUBSCRIPT_BIT)) - ($style-left mod ($SUBSCRIPT_BIT)) != 0"/>
+ <variable name="typewriter-left"
+ select="($style-left mod (2 * $TYPEWRITER_BIT)) - ($style-left mod ($TYPEWRITER_BIT)) != 0"/>
+
+ <variable name="bold-right"
+ select="($style-right mod (2 * $BOLD_BIT)) != 0"/>
+ <variable name="italic-right"
+ select="($style-right mod (2 * $ITALIC_BIT)) - ($style-right mod ($ITALIC_BIT)) != 0"/>
+ <variable name="superscript-right"
+ select="($style-right mod (2 * $SUPERSCRIPT_BIT)) - ($style-right mod ($SUPERSCRIPT_BIT)) != 0"/>
+ <variable name="subscript-right"
+ select="($style-right mod (2 * $SUBSCRIPT_BIT)) - ($style-right mod ($SUBSCRIPT_BIT)) != 0"/>
+ <variable name="typewriter-right"
+ select="($style-right mod (2 * $TYPEWRITER_BIT)) - ($style-right mod ($TYPEWRITER_BIT)) != 0"/>
+
+ <!-- Debugging: Add style infos to the output. -->
+ <!--
+ <value-of select="'{'"/>
+ <value-of select="$style-left"/>
+ <value-of select="'-'"/>
+ <value-of select="$style"/>
+ <value-of select="','"/>
+ <value-of select="$context-size"/>
+ <value-of select="'}'"/>
+ -->
+
+ <if test="$superscript and not($superscript-left)">
+ <text>&lt;sup&gt;</text>
+ </if>
+ <if test="$subscript and not($subscript-left)">
+ <text>&lt;sub&gt;</text>
+ </if>
+ <if test="not($code) and $typewriter and not($typewriter-left)">
+ <text>&lt;tt&gt;</text>
+ </if>
+ <if test="$bold and not($bold-left)">
+ <text>'''</text>
+ </if>
+ <if test="$italic and not($italic-left)">
+ <text>''</text>
+ </if>
+
+ <call-template name="render-quoted-text">
+ <with-param name="text" select="."/>
+ </call-template>
+
+ <if test="$italic and not($italic-right)">
+ <text>''</text>
+ </if>
+ <if test="$bold and not($bold-right)">
+ <text>'''</text>
+ </if>
+ <if test="not($code) and $typewriter and not($typewriter-right)">
+ <text>&lt;/tt&gt;</text>
+ </if>
+ <if test="$subscript and not($subscript-right)">
+ <text>&lt;/sub&gt;</text>
+ </if>
+ <if test="$superscript and not($superscript-right)">
+ <text>&lt;/sup&gt;</text>
+ </if>
+
+ <!-- Debugging: Add style details to the output. -->
+ <!--
+ <value-of select="'{'"/>
+ <value-of select="$style"/>
+ <value-of select="'-'"/>
+ <value-of select="$style-right"/>
+ <value-of select="'}'"/>
+ -->
+
+ </when>
+ </choose>
+ </template>
+
+ <!--
+ Function for looking up the position of a node identified by the given
+ 'current-id' within a node set 'context'.
+
+ The search starts with the the index 'test-index'. The search is recursive
+ in the 'test-index' argument. To save recursion depth, each recursive call
+ iteratively tests a fixed number of indexes (by loop unrolling).
+ -->
+ <template name="mk-context-index">
+ <param name="current-id"/>
+ <param name="context"/>
+ <param name="test-index"/>
+
+ <variable name="context-size" select="count($context)"/>
+
+ <choose>
+ <when test="context-size &lt; $test-index">
+ </when>
+ <when test="$current-id = generate-id($context[$test-index])">
+ <value-of select="$test-index"/>
+ </when>
+ <when test="context-size &lt; ($test-index + 1)">
+ </when>
+ <when test="$current-id = generate-id($context[$test-index + 1])">
+ <value-of select="$test-index + 1"/>
+ </when>
+ <when test="context-size &lt; ($test-index + 2)">
+ </when>
+ <when test="$current-id = generate-id($context[$test-index + 2])">
+ <value-of select="$test-index + 2"/>
+ </when>
+ <when test="context-size &lt; ($test-index + 3)">
+ </when>
+ <when test="$current-id = generate-id($context[$test-index + 3])">
+ <value-of select="$test-index + 3"/>
+ </when>
+ <when test="context-size &lt; ($test-index + 4)">
+ </when>
+ <when test="$current-id = generate-id($context[$test-index + 4])">
+ <value-of select="$test-index + 4"/>
+ </when>
+ <when test="context-size &lt; ($test-index + 5)">
+ </when>
+ <when test="$current-id = generate-id($context[$test-index + 5])">
+ <value-of select="$test-index + 5"/>
+ </when>
+ <when test="context-size &lt; ($test-index + 6)">
+ </when>
+ <otherwise>
+ <call-template name="mk-context-index">
+ <with-param name="current-id" select="$current-id"/>
+ <with-param name="context" select="$context"/>
+ <with-param name="test-index" select="$test-index + 6"/>
+ </call-template>
+ </otherwise>
+ </choose>
+ </template>
+
+ <template name="render-quoted-text">
+ <param name="text"/>
+
+ <choose>
+ <when test="contains($text, '&lt;') or contains($text, '[') or starts-with($text, '----') or starts-with($text, '=') or starts-with($text, '*') or starts-with($text, ';') or starts-with($text, '#')">
+ <text>&lt;nowiki&gt;</text>
+ <choose>
+ <when test="contains($text, '&lt;/nowiki&gt;')">
+ <call-template name="render-escaped-text">
+ <with-param name="text" select="$text"/>
+ </call-template>
+ </when>
+ <otherwise>
+ <call-template name="render-encoded-text">
+ <with-param name="text" select="$text"/>
+ </call-template>
+ </otherwise>
+ </choose>
+ <text>&lt;/nowiki&gt;</text>
+ </when>
+ <otherwise>
+ <call-template name="render-encoded-text">
+ <with-param name="text" select="$text"/>
+ </call-template>
+ </otherwise>
+ </choose>
+ </template>
+
+ <template name="render-escaped-text">
+ <param name="text"/>
+
+ <choose>
+ <when test="contains($text, '&lt;')">
+ <call-template name="render-encoded-text">
+ <with-param name="text" select="substring-before($text, '&lt;')"/>
+ </call-template>
+ <value-of select="'&amp;lt;'"/>
+ <call-template name="render-escaped-text">
+ <with-param name="text" select="substring-after($text, '&lt;')"/>
+ </call-template>
+ </when>
+ <otherwise>
+ <call-template name="render-encoded-text">
+ <with-param name="text" select="$text"/>
+ </call-template>
+ </otherwise>
+ </choose>
+ </template>
+
+ <template name="render-encoded-text">
+ <param name="text"/>
+
+ <choose>
+ <when test="contains($text, '&#160;')">
+ <value-of select="substring-before($text, '&#160;')"/>
+ <value-of select="'&amp;nbsp;'"/>
+ <call-template name="render-encoded-text">
+ <with-param name="text" select="substring-after($text, '&#160;')"/>
+ </call-template>
+ </when>
+ <otherwise>
+ <value-of select="$text"/>
+ </otherwise>
+ </choose>
+ </template>
+
+ <!--
+ == Wiki styles: bold, italics, ... ==
+ -->
+
+ <template name="mk-style-set">
+ <param name="node"/>
+
+ <variable
+ name="context"
+ select="$node/ancestor-or-self::*[@text:style-name][1]"
+ />
+
+ <choose>
+ <when test="boolean($context)">
+ <variable
+ name="style"
+ select="key('style-ref', $context/@text:style-name)"
+ />
+
+ <!-- Debugging: Print inspected styles. -->
+ <!--
+ <message>
+ <value-of select="'=== '"/>
+ <value-of select="$style/@style:name"/>
+ <value-of select="' ==='"/>
+ </message>
+ -->
+
+ <call-template name="mk-style-set-internal">
+ <with-param name="node" select="$context"/>
+ <with-param name="style" select="$style"/>
+ <with-param name="style-set" select="$NO_STYLE"/>
+ <with-param name="style-mask" select="$NO_STYLE"/>
+ </call-template>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </template>
+
+ <!--
+ Compute the wiki style set that corresponds
+ to the given office style at the given context node.
+
+ @param node
+ A node in which context the style is computed. If neither the given style
+ nor one of its linked styles does specify a style of the given type,
+ ancestor nodes of the given context node are considered.
+ @param style
+ A style:style element node. The style of the requested type is searched
+ in the given style and its linked styles.
+ @style-set
+ A bit set of styles already defined by the context.
+ @style-mask
+ A bit set of styles that must not be taken from the currently inspected
+ style, because those styles are already defined by the context.
+
+ @return A bit set composed of the wiki style constants.
+ -->
+ <template name="mk-style-set-internal">
+ <param name="node"/>
+ <param name="style"/>
+ <param name="style-set"/>
+ <param name="style-mask"/>
+
+ <variable name="text-properties" select="$style/style:text-properties"/>
+
+ <!-- Decompose style-mask into individual bits. -->
+ <variable name="bold-requested"
+ select="($style-mask mod (2 * $BOLD_BIT)) = 0"/>
+ <variable name="italic-requested"
+ select="($style-mask mod (2 * $ITALIC_BIT)) - ($style-mask mod ($ITALIC_BIT)) = 0"/>
+ <variable name="superscript-requested"
+ select="($style-mask mod (2 * $SUPERSCRIPT_BIT)) - ($style-mask mod ($SUPERSCRIPT_BIT)) = 0"/>
+ <variable name="subscript-requested"
+ select="($style-mask mod (2 * $SUBSCRIPT_BIT)) - ($style-mask mod ($SUBSCRIPT_BIT)) = 0"/>
+ <variable name="typewriter-requested"
+ select="($style-mask mod (2 * $TYPEWRITER_BIT)) - ($style-mask mod ($TYPEWRITER_BIT)) = 0"/>
+ <variable name="code-requested"
+ select="($style-mask mod (2 * $CODE_BIT)) - ($style-mask mod ($CODE_BIT)) = 0"/>
+ <variable name="center-requested"
+ select="($style-mask mod (2 * $CENTER_BIT)) - ($style-mask mod ($CENTER_BIT)) = 0"/>
+ <variable name="right-requested"
+ select="($style-mask mod (2 * $RIGHT_BIT)) - ($style-mask mod ($RIGHT_BIT)) = 0"/>
+
+ <!-- Extract styles that are not already defined by the context. -->
+ <variable name="bold-style">
+ <choose>
+ <when test="$bold-requested and boolean($text-properties/@fo:font-weight='bold')">
+ <!-- Bold found in current style. -->
+ <value-of select="$BOLD_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+ <variable name="bold-mask">
+ <choose>
+ <when test="$bold-requested and boolean($text-properties/@fo:font-weight)">
+ <!--
+ Other value than "bold" means that the character style is not
+ bold and no parent style must be considered.
+ -->
+ <value-of select="$BOLD_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+
+ <variable name="italic-style">
+ <choose>
+ <when test="$italic-requested and boolean($text-properties/@fo:font-style='italic')">
+ <!-- Italic found in current style. -->
+ <value-of select="$ITALIC_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+ <variable name="italic-mask">
+ <choose>
+ <when test="$italic-requested and boolean($text-properties/@fo:font-style)">
+ <!--
+ Other value than "italic" means that the character style is not
+ italic and no parent style must be considered.
+ -->
+ <value-of select="$ITALIC_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+
+ <variable name="superscript-style">
+ <choose>
+ <when test="$superscript-requested and contains($text-properties/@style:text-position, 'super')">
+ <value-of select="$SUPERSCRIPT_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+ <variable name="superscript-mask">
+ <choose>
+ <when test="$superscript-requested and boolean($text-properties/@style:text-position)">
+ <value-of select="$SUPERSCRIPT_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+
+ <variable name="subscript-style">
+ <choose>
+ <when test="$subscript-requested and contains($text-properties/@style:text-position, 'sub')">
+ <value-of select="$SUBSCRIPT_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+ <variable name="subscript-mask">
+ <choose>
+ <when test="$subscript-requested and boolean($text-properties/@style:text-position)">
+ <value-of select="$SUBSCRIPT_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+
+ <variable name="typewriter-style">
+ <choose>
+ <when test="$typewriter-requested and ($style/@style:family='text') and boolean($text-properties/@style:font-name)">
+ <variable name="font-face"
+ select="key('font-face-ref', $text-properties/@style:font-name)"/>
+ <choose>
+ <when test="$font-face/@style:font-pitch='fixed'">
+ <value-of select="$TYPEWRITER_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+ <variable name="typewriter-mask">
+ <choose>
+ <!-- Note: Suppress the typewriter style on text within a code paragraph. -->
+ <when test="$typewriter-requested and boolean($text-properties/@style:font-name)">
+ <value-of select="$TYPEWRITER_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+
+ <variable name="code-style">
+ <choose>
+ <when test="$code-requested and ($style/@style:family='paragraph') and boolean($text-properties/@style:font-name)">
+ <variable name="font-face"
+ select="key('font-face-ref', $text-properties/@style:font-name)"/>
+ <choose>
+ <when test="$font-face/@style:font-pitch='fixed' or (boolean(@style:display-name) and contains($CODE_STYLES, $style/@style:display-name))">
+ <value-of select="$CODE_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+ <variable name="code-mask">
+ <choose>
+ <when test="$code-requested and ($style/@style:family='paragraph') and boolean($text-properties/@style:font-name)">
+ <value-of select="$CODE_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+
+ <variable name="center-style">
+ <choose>
+ <when test="$center-requested and ($style/@style:family='paragraph') and boolean($style/style:paragraph-properties/@fo:text-align='center')">
+ <value-of select="$CENTER_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+ <variable name="center-mask">
+ <choose>
+ <when test="$center-requested and ($style/@style:family='paragraph') and boolean($style/style:paragraph-properties/@fo:text-align)">
+ <value-of select="$CENTER_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+
+ <variable name="right-style">
+ <choose>
+ <when test="$right-requested and ($style/@style:family='paragraph') and boolean($style/style:paragraph-properties/@fo:text-align='end')">
+ <value-of select="$RIGHT_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+ <variable name="right-mask">
+ <choose>
+ <when test="$center-requested and ($style/@style:family='paragraph') and boolean($style/style:paragraph-properties/@fo:text-align)">
+ <value-of select="$RIGHT_BIT"/>
+ </when>
+ <otherwise>
+ <value-of select="$NO_STYLE"/>
+ </otherwise>
+ </choose>
+ </variable>
+
+
+ <!-- Compute the updated styles and mask. -->
+ <!--
+ Note: The bit masks style-mask, bold-style, italic-style,... are
+ guaranteed to be disjoint, therefore, addition can be use instead
+ of bitwise or (which is missing in XPath). -->
+ <variable name="updated-style"
+ select="$style-set + $bold-style + $italic-style + $superscript-style + $subscript-style + $code-style + $typewriter-style + $center-style + $right-style"/>
+ <variable name="updated-mask"
+ select="$style-mask + $bold-mask + $italic-mask + $superscript-mask + $subscript-mask + $code-mask + $typewriter-mask + $center-mask + $right-mask"/>
+
+ <!-- Inspect linked and nested styles. -->
+ <choose>
+ <when test="boolean($style/@style:parent-style-name)">
+ <!-- Look through the style, the current style is based on. -->
+ <call-template name="mk-style-set-internal">
+ <with-param name="node" select="$node"/>
+ <with-param name="style" select="key('style-ref', $style/@style:parent-style-name)"/>
+ <with-param name="style-set" select="$updated-style"/>
+ <with-param name="style-mask" select="$updated-mask"/>
+ </call-template>
+ </when>
+ <otherwise>
+ <variable name="ancestors" select="$node/ancestor::*[@text:style-name][1]"/>
+
+ <!-- Debugging: Print currently inspected style. -->
+ <!--
+ <message>
+ <value-of select="'{'"/>
+ <value-of select="$style/@style:name"/>
+ <value-of select="','"/>
+ <value-of select="$updated-style"/>
+ <value-of select="','"/>
+ <value-of select="$updated-mask"/>
+ <value-of select="','"/>
+ <value-of select="local-name($ancestors)"/>
+ <value-of select="',('"/>
+ <value-of select="$node"/>
+ <value-of select="')'"/>
+ <value-of select="'}'"/>
+ </message>
+ -->
+
+ <!--
+ If there is an ancestor that has a style, use that style,
+ otherwise, a style is not found. -->
+ <choose>
+ <when test="boolean($ancestors)">
+ <!-- Look through the style of the nearest ancestor that has a style. -->
+ <call-template name="mk-style-set-internal">
+ <with-param name="node" select="$ancestors"/>
+ <with-param name="style" select="key('style-ref', $ancestors/@text:style-name)"/>
+ <with-param name="style-set" select="$updated-style"/>
+ <with-param name="style-mask" select="$updated-mask"/>
+ </call-template>
+ </when>
+ <otherwise>
+ <!-- No more styles to inspect. Return the result. -->
+ <value-of select="$updated-style"/>
+ </otherwise>
+ </choose>
+ </otherwise>
+ </choose>
+ </template>
+
+
+ <!--
+ == Descending the tree ==
+ -->
+
+ <template match="/">
+ <apply-templates/>
+ <value-of select="$NL"/>
+ <if test="boolean(//text:note[@text:note-class='footnote'])">
+ <value-of select="$NL"/>
+ <text>----</text>
+ <value-of select="$NL"/>
+ <text>&lt;references/&gt;</text>
+ <value-of select="$NL"/>
+ </if>
+ </template>
+
+ <template match="office:document-content">
+ <apply-templates/>
+ </template>
+
+ <template match="office:body">
+ <apply-templates/>
+ </template>
+
+ <template match="text:tracked-changes">
+ <!-- Ignore change history. -->
+ </template>
+
+ <template match="office:* | text:* | draw:text-box | draw:a">
+ <apply-templates/>
+ </template>
+
+ <template match="node()">
+ </template>
+</stylesheet>
+
+<!--
+ Local Variables:
+ tab-width: 4
+ sgml-indent-step: 4
+ End:
+-->
diff --git a/swext/mediawiki/src/makefile.mk b/swext/mediawiki/src/makefile.mk
new file mode 100644
index 000000000000..8d920ab20976
--- /dev/null
+++ b/swext/mediawiki/src/makefile.mk
@@ -0,0 +1,54 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+PRJNAME=swext
+TARGET=mediawiki
+GEN_HID=FALSE
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings ----------------------------------
+
+.INCLUDE : settings.mk
+
+DESCRIPTION:=$(MISC)$/$(TARGET)$/description.xml
+
+common_build_zip=
+
+.INCLUDE : target.mk
+
+ALLTAR: $(DESCRIPTION)
+
+.INCLUDE .IGNORE : $(MISC)$/$(TARGET)_lang_track.mk
+.IF "$(LAST_WITH_LANG)"!="$(WITH_LANG)"
+PHONYDESC=.PHONY
+.ENDIF # "$(LAST_WITH_LANG)"!="$(WITH_LANG)"
+$(DESCRIPTION) $(PHONYDESC) : $$(@:f)
+ @@-$(MKDIRHIER) $(@:d)
+ $(PERL) $(SOLARENV)$/bin$/licinserter.pl description.xml license/LICENSE_xxx $@
+ @echo LAST_WITH_LANG=$(WITH_LANG) > $(MISC)$/$(TARGET)_lang_track.mk
diff --git a/swext/mediawiki/src/registry/data/org/openoffice/Office/Addons.xcu b/swext/mediawiki/src/registry/data/org/openoffice/Office/Addons.xcu
new file mode 100644
index 000000000000..b8e96e1f1139
--- /dev/null
+++ b/swext/mediawiki/src/registry/data/org/openoffice/Office/Addons.xcu
@@ -0,0 +1,67 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Addons" oor:package="org.openoffice.Office">
+ <node oor:name="AddonUI">
+ <node oor:name="OfficeMenuBarMerging">
+ <node oor:name="com.sun.star.wiki" oor:op="replace">
+ <node oor:name="S1" oor:op="replace">
+ <prop oor:name="MergePoint">
+ <value>.uno:PickList\.uno:SendToMenu\.uno:SendMailDocAsPDF</value>
+ </prop>
+ <prop oor:name="MergeCommand">
+ <value>AddAfter</value>
+ </prop>
+ <prop oor:name="MergeFallback">
+ <value>AddLast</value>
+ </prop>
+ <prop oor:name="MergeContext" oor:type="xs:string">
+ <value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
+ </prop>
+ <node oor:name="MenuItems">
+ <node oor:name="M1" oor:op="replace">
+ <prop oor:name="URL">
+ <value>private:separator</value>
+ </prop>
+ </node>
+ <node oor:name="M2" oor:op="replace">
+ <prop oor:name="Title">
+ <value xml:lang="en-US">To Media~Wiki...</value>
+ </prop>
+ <prop oor:name="URL">
+ <value>vnd.com.sun.star.wiki:send</value>
+ </prop>
+ <prop oor:name="Target" oor:type="xs:string">
+ <value>_self</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/swext/mediawiki/src/registry/data/org/openoffice/Office/Custom/WikiExtension.xcu b/swext/mediawiki/src/registry/data/org/openoffice/Office/Custom/WikiExtension.xcu
new file mode 100644
index 000000000000..8dbde907af37
--- /dev/null
+++ b/swext/mediawiki/src/registry/data/org/openoffice/Office/Custom/WikiExtension.xcu
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="WikiExtension" oor:package="org.openoffice.Office.Custom">
+ <node oor:name="SpecialData">
+ <node oor:name="so-wiki.germany.sun.com" oor:op="fuse">
+ <prop oor:name="AllowUnknownCertificate">
+ <value>true</value>
+ </prop>
+ <node oor:name="AdditionalLoginArguments">
+ <node oor:name="wpDomain" oor:op="fuse">
+ <prop oor:name="Value">
+ <value>sun</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+
+ <node oor:name="ConnectionList">
+ </node>
+
+ <node oor:name="RecentDocs">
+ </node>
+
+ <node oor:name="Settings">
+ <prop oor:name="PreselectShowBrowser">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="Strings">
+ <prop oor:name="GeneralSendError">
+ <value xml:lang="en-US">The operation 'Send to MediaWiki' could not be completed successfully.</value>
+ </prop>
+ <prop oor:name="NoWikiFilter">
+ <value xml:lang="en-US">The MediaWiki export filter cannot be found. Choose 'Tools-XML Filter Settings' to install the filter, or use the setup to install the component.</value>
+ </prop>
+ <prop oor:name="NoConnectionToURL">
+ <value xml:lang="en-US">A connection to the MediaWiki system at '$ARG1' could not be created.</value>
+ </prop>
+ <prop oor:name="WrongLogin">
+ <value xml:lang="en-US">User name or password is incorrect. Please try again, or leave the fields blank for an anonymous connection.</value>
+ </prop>
+ <prop oor:name="InvalidURL">
+ <value xml:lang="en-US">A connection could not be created because the URL is invalid.</value>
+ </prop>
+ <prop oor:name="NoURL">
+ <value xml:lang="en-US">Specify a MediaWiki server by providing a URL.</value>
+ </prop>
+ <prop oor:name="CancelSending">
+ <value xml:lang="en-US">The transfer has been interrupted. Please check the integrity of the wiki article.</value>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_UrlLabel">
+ <value xml:lang="en-US">U~RL</value>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_UsernameLabel">
+ <value xml:lang="en-US">~Username</value>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_PasswordLabel">
+ <value xml:lang="en-US">~Password</value>
+ </prop>
+ <prop oor:name="Dlg_SendTitle">
+ <value xml:lang="en-US">Send to MediaWiki</value>
+ </prop>
+ <prop oor:name="Dlg_WikiArticle">
+ <value xml:lang="en-US">Wiki article</value>
+ </prop>
+ <prop oor:name="Dlg_No">
+ <value xml:lang="en-US">No</value>
+ </prop>
+ <prop oor:name="Dlg_OK">
+ <value xml:lang="en-US">OK</value>
+ </prop>
+ <prop oor:name="Dlg_Yes">
+ <value xml:lang="en-US">Yes</value>
+ </prop>
+ <prop oor:name="Dlg_AddButton">
+ <value xml:lang="en-US">~Add...</value>
+ </prop>
+ <prop oor:name="Dlg_EditButton">
+ <value xml:lang="en-US">~Edit...</value>
+ </prop>
+ <prop oor:name="Dlg_SendButton">
+ <value xml:lang="en-US">~Send</value>
+ </prop>
+ <prop oor:name="Dlg_RemoveButton">
+ <value xml:lang="en-US">~Remove</value>
+ </prop>
+ <prop oor:name="Dlg_NewWikiPage_Label1">
+ <value xml:lang="en-US">A wiki article with the title '$ARG1' does not exist yet. Do you want to create a new article with that name?</value>
+ </prop>
+ <prop oor:name="Dlg_SendToMediaWiki_Label1">
+ <value xml:lang="en-US">Media~Wiki Server</value>
+ </prop>
+ <prop oor:name="Dlg_SendToMediaWiki_Label2">
+ <value xml:lang="en-US">~Title</value>
+ </prop>
+ <prop oor:name="Dlg_SendToMediaWiki_Label3">
+ <value xml:lang="en-US">S~ummary</value>
+ </prop>
+ <prop oor:name="Dlg_SendToMediaWiki_MinorCheck">
+ <value xml:lang="en-US">This is a ~minor edit</value>
+ </prop>
+ <prop oor:name="Dlg_SendToMediaWiki_BrowserCheck">
+ <value xml:lang="en-US">Show in web ~browser</value>
+ </prop>
+ <prop oor:name="UnknownCert">
+ <value xml:lang="en-US">The certificate of the selected site is unknown.</value>
+ </prop>
+ <prop oor:name="Dlg_MediaWiki_Title">
+ <value xml:lang="en-US">MediaWiki</value>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_AccountLine">
+ <value xml:lang="en-US">Account</value>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_WikiLine">
+ <value xml:lang="en-US">MediaWiki Server</value>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_SaveBox">
+ <value xml:lang="en-US">~Save password</value>
+ </prop>
+ <prop oor:name="Dlg_MediaWiki_Extension_String">
+ <value xml:lang="en-US">@WIKIEXTENSIONPRODUCTNAME@</value>
+ </prop>
+ <prop oor:name="Dlg_WikiPageExists_Label1">
+ <value xml:lang="en-US">A wiki article with the title '$ARG1' already exists.&#13;&#13;Do you want to replace the current article with your article?&#13;&#13;</value>
+ </prop>
+ </node>
+</oor:component-data>
diff --git a/swext/mediawiki/src/registry/data/org/openoffice/Office/Custom/makefile.mk b/swext/mediawiki/src/registry/data/org/openoffice/Office/Custom/makefile.mk
new file mode 100644
index 000000000000..82f8303054ab
--- /dev/null
+++ b/swext/mediawiki/src/registry/data/org/openoffice/Office/Custom/makefile.mk
@@ -0,0 +1,48 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..$/..$/..$/..$/..
+PRJNAME=swext
+CUSTID=mediawiki
+TARGET=mediawiki_registry_data_Custom
+PACKAGE=org.openoffice.Office.Custom
+
+.INCLUDE : settings.mk
+.INCLUDE : ${PRJ}$/makefile.pmk
+
+ABSXCSROOT=$(PWD)$/$(MISC)$/$(CUSTID)
+XCSROOT=$(MISC)$/$(CUSTID)
+
+.IF "$(ENABLE_MEDIAWIKI)" == "YES"
+LOCALIZEDFILES= WikiExtension.xcu
+
+MODULEFILES=
+
+XCUFILES = WikiExtension.xcu
+.ENDIF
+
+.INCLUDE : target.mk
diff --git a/swext/mediawiki/src/registry/data/org/openoffice/Office/OptionsDialog.xcu b/swext/mediawiki/src/registry/data/org/openoffice/Office/OptionsDialog.xcu
new file mode 100644
index 000000000000..f6498c5faef3
--- /dev/null
+++ b/swext/mediawiki/src/registry/data/org/openoffice/Office/OptionsDialog.xcu
@@ -0,0 +1,50 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data oor:name="OptionsDialog" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry">
+ <node oor:name="Nodes">
+ <node oor:name="Internet" oor:op="fuse">
+ <node oor:name="Leaves">
+ <node oor:name="com.sun.star.wiki.options" oor:op="fuse">
+ <prop oor:name="Id">
+ <value>@WIKIEXTENSIONID@</value>
+ </prop>
+ <prop oor:name="Label">
+ <value xml:lang="en-US">MediaWiki</value>
+ </prop>
+ <prop oor:name="OptionsPage">
+ <value>%origin%/WikiEditor/Settings.xdl</value>
+ </prop>
+ <prop oor:name="EventHandlerService">
+ <value>com.sun.star.wiki.WikiOptionsEventHandlerImpl</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
+
diff --git a/swext/mediawiki/src/registry/data/org/openoffice/Office/Paths.xcu b/swext/mediawiki/src/registry/data/org/openoffice/Office/Paths.xcu
new file mode 100644
index 000000000000..e39bbc75471c
--- /dev/null
+++ b/swext/mediawiki/src/registry/data/org/openoffice/Office/Paths.xcu
@@ -0,0 +1,36 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Paths" oor:package="org.openoffice.Office">
+ <node oor:name="Paths">
+ <node oor:name="Template" oor:op="fuse">
+ <node oor:name="InternalPaths">
+ <node oor:name="%origin%/templates" oor:op="fuse"/>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/swext/mediawiki/src/registry/data/org/openoffice/Office/ProtocolHandler.xcu b/swext/mediawiki/src/registry/data/org/openoffice/Office/ProtocolHandler.xcu
new file mode 100644
index 000000000000..501c0a42548c
--- /dev/null
+++ b/swext/mediawiki/src/registry/data/org/openoffice/Office/ProtocolHandler.xcu
@@ -0,0 +1,36 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-data oor:name="ProtocolHandler" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="HandlerSet">
+ <node oor:name="com.sun.star.wiki.WikiEditorImpl" oor:op="replace">
+ <prop oor:name="Protocols" oor:type="oor:string-list">
+ <value>vnd.com.sun.star.wiki:*</value>
+ </prop>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/swext/mediawiki/src/registry/data/org/openoffice/Office/makefile.mk b/swext/mediawiki/src/registry/data/org/openoffice/Office/makefile.mk
new file mode 100644
index 000000000000..3d1409827390
--- /dev/null
+++ b/swext/mediawiki/src/registry/data/org/openoffice/Office/makefile.mk
@@ -0,0 +1,46 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..$/..$/..$/..
+PRJNAME=swext
+CUSTID=mediawiki
+TARGET=mediawiki_registry_data_office
+PACKAGE=org.openoffice.Office
+
+.INCLUDE : settings.mk
+.INCLUDE : ${PRJ}$/makefile.pmk
+
+.IF "$(ENABLE_MEDIAWIKI)" == "YES"
+LOCALIZEDFILES= Addons.xcu OptionsDialog.xcu
+
+MODULEFILES=
+
+XCUFILES = Addons.xcu OptionsDialog.xcu ProtocolHandler.xcu Paths.xcu
+.ENDIF
+
+.INCLUDE : target.mk
+
diff --git a/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Filter.xcu b/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Filter.xcu
new file mode 100644
index 000000000000..d0ddad5b2a7c
--- /dev/null
+++ b/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Filter.xcu
@@ -0,0 +1,56 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd">
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:package="org.openoffice.TypeDetection" oor:name="Filter">
+ <node oor:name="Filters">
+ <node oor:name="MediaWiki" oor:op="fuse">
+ <prop oor:name="FileFormatVersion"><value>0</value></prop>
+ <prop oor:name="Type"><value>MediaWiki</value></prop>
+ <prop oor:name="DocumentService"><value>com.sun.star.text.TextDocument</value></prop>
+ <prop oor:name="UIComponent"/>
+ <prop oor:name="UserData"><value oor:separator=",">com.sun.star.documentconversion.XSLTFilter,,,com.sun.star.comp.Writer.XMLOasisExporter,,%origin%/filter/odt2mediawiki.xsl</value></prop>
+ <prop oor:name="FilterService"><value>com.sun.star.comp.Writer.XmlFilterAdaptor</value></prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">MediaWiki</value>
+ </prop>
+ <prop oor:name="Flags"><value>EXPORT ALIEN 3RDPARTYFILTER</value></prop>
+ </node>
+ <node oor:name="MediaWiki_Web" oor:op="fuse">
+ <prop oor:name="FileFormatVersion"><value>0</value></prop>
+ <prop oor:name="Type"><value>MediaWiki</value></prop>
+ <prop oor:name="DocumentService"><value>com.sun.star.text.WebDocument</value></prop>
+ <prop oor:name="UIComponent"/>
+ <prop oor:name="UserData"><value oor:separator=",">com.sun.star.documentconversion.XSLTFilter,,,com.sun.star.comp.Writer.XMLOasisExporter,,%origin%/filter/odt2mediawiki.xsl</value></prop>
+ <prop oor:name="FilterService"><value>com.sun.star.comp.Writer.XmlFilterAdaptor</value></prop>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">MediaWiki</value>
+ </prop>
+ <prop oor:name="Flags"><value>EXPORT ALIEN 3RDPARTYFILTER</value></prop>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Types.xcu b/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Types.xcu
new file mode 100644
index 000000000000..64031b844aaf
--- /dev/null
+++ b/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/Types.xcu
@@ -0,0 +1,44 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd">
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:package="org.openoffice.TypeDetection" oor:name="Types">
+ <node oor:name="Types">
+ <node oor:name="MediaWiki" oor:op="fuse">
+ <prop oor:name="DetectService"><value>com.sun.star.comp.filters.XMLFilterDetect</value></prop>
+ <prop oor:name="URLPattern"/>
+ <prop oor:name="Extensions"><value>txt</value></prop>
+ <prop oor:name="MediaType"/>
+ <prop oor:name="Preferred"><value>false</value></prop>
+ <prop oor:name="PreferredFilter"/>
+ <prop oor:name="UIName">
+ <value xml:lang="x-default">MediaWiki</value>
+ </prop>
+ <prop oor:name="ClipboardFormat"/>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/makefile.mk b/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/makefile.mk
new file mode 100644
index 000000000000..3224851026c0
--- /dev/null
+++ b/swext/mediawiki/src/registry/data/org/openoffice/TypeDetection/makefile.mk
@@ -0,0 +1,46 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..$/..$/..$/..
+PRJNAME=swext
+CUSTID=mediawiki
+TARGET=mediawiki_registry_data_typedetection
+PACKAGE=org.openoffice.TypeDetection
+
+.INCLUDE : settings.mk
+.INCLUDE : ${PRJ}$/makefile.pmk
+
+.IF "$(ENABLE_MEDIAWIKI)" == "YES"
+LOCALIZEDFILES=
+
+MODULEFILES=
+
+XCUFILES = Filter.xcu Types.xcu
+.ENDIF
+
+.INCLUDE : target.mk
+
diff --git a/swext/mediawiki/src/registry/schema/org/openoffice/Office/Custom/WikiExtension.xcs b/swext/mediawiki/src/registry/schema/org/openoffice/Office/Custom/WikiExtension.xcs
new file mode 100644
index 000000000000..d210ec999507
--- /dev/null
+++ b/swext/mediawiki/src/registry/schema/org/openoffice/Office/Custom/WikiExtension.xcs
@@ -0,0 +1,197 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--***********************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************ -->
+<oor:component-schema
+ xmlns:oor="http://openoffice.org/2001/registry"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ oor:name="WikiExtension"
+ oor:package="org.openoffice.Office.Custom"
+ xml:lang="en-US">
+ <info>
+ <desc>Configuration parameters for the accounts.</desc>
+ </info>
+
+ <templates>
+ <group oor:name="RequestArgument">
+ <info><desc>An argument for a request.</desc></info>
+ <prop oor:name="Value" oor:type="xs:string">
+ <info><desc>The value of the argument.</desc></info>
+ </prop>
+ </group>
+
+ <group oor:name="WikiServerSpecialData">
+ <info><desc>The smart configuration for the MediaWikiServer.</desc></info>
+ <prop oor:name="AllowUnknownCertificate" oor:type="xs:boolean">
+ <info><desc>The value of the argument.</desc></info>
+ </prop>
+ <set oor:name="AdditionalLoginArguments" oor:node-type="RequestArgument">
+ <info><desc>The additional arguments that can be used on login. The name of an entry is the argument name.</desc></info>
+ </set>
+ </group>
+
+ <group oor:name="ConnectionURL">
+ <info><desc>The name of the entry is a connection URL of a wiki server.</desc></info>
+ <prop oor:name="UserName" oor:type="xs:string">
+ <info><desc>The UserName that is used to access the URL.</desc></info>
+ </prop>
+ </group>
+
+ <group oor:name="Document">
+ <info><desc>Wiki Document</desc></info>
+ <prop oor:name="Url" oor:type="xs:string">
+ <info><desc>Main URL for this Wiki</desc></info>
+ </prop>
+ <prop oor:name="Doc" oor:type="xs:string">
+ <info><desc>The Document name</desc></info>
+ </prop>
+ <prop oor:name="CompleteUrl" oor:type="xs:string">
+ <info><desc>Identifier</desc></info>
+ </prop>
+ </group>
+ </templates>
+
+ <component>
+ <set oor:name="SpecialData" oor:node-type="WikiServerSpecialData">
+ <info><desc>The set of smart configurations for MediaWiki Servers.</desc></info>
+ </set>
+ <set oor:name="ConnectionList" oor:node-type="ConnectionURL">
+ <info><desc>The list of the MediaWiki servers.</desc></info>
+ </set>
+ <set oor:name="RecentDocs" oor:node-type="Document">
+ <info><desc>The recenly stored documents.</desc></info>
+ </set>
+ <group oor:name="Settings">
+ <info><desc>The addon related settings.</desc></info>
+ <prop oor:name="PreselectShowBrowser" oor:type="xs:boolean">
+ <info><desc>Specifies whether "Show in webbrowser" checkbox should be preselected.</desc></info>
+ </prop>
+ </group>
+ <group oor:name="Strings">
+ <info>
+ <desc>Contains the strings that should be localized</desc>
+ </info>
+ <prop oor:name="GeneralSendError" oor:type="xs:string" oor:localized="true">
+ <info><desc>The general error shown in case the document could not be sent to the wiki server.</desc></info>
+ </prop>
+ <prop oor:name="NoWikiFilter" oor:type="xs:string" oor:localized="true">
+ <info><desc>The error is shown in case wiki filter is not evailable.</desc></info>
+ </prop>
+ <prop oor:name="NoConnectionToURL" oor:type="xs:string" oor:localized="true">
+ <info><desc>The error is shown in case no wiki system was found on specified URL.</desc></info>
+ </prop>
+ <prop oor:name="WrongLogin" oor:type="xs:string" oor:localized="true">
+ <info><desc>The error is shown in case user name or password is incorrect.</desc></info>
+ </prop>
+ <prop oor:name="InvalidURL" oor:type="xs:string" oor:localized="true">
+ <info><desc>The error is shown in case the provided URL has invalid syntax.</desc></info>
+ </prop>
+ <prop oor:name="NoURL" oor:type="xs:string" oor:localized="true">
+ <info><desc>The error is shown in case no wiki server was specified.</desc></info>
+ </prop>
+ <prop oor:name="CancelSending" oor:type="xs:string" oor:localized="true">
+ <info><desc>The error is shown in case transfer was interrupted by user. The user is notified that the integrity of the wiki article should be checked.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_SendTitle" oor:type="xs:string" oor:localized="true">
+ <info><desc>The title of the send dialog.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_WikiArticle" oor:type="xs:string" oor:localized="true">
+ <info><desc>The dialog string used to border the wiki article related information.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_No" oor:type="xs:string" oor:localized="true">
+ <info><desc>"No" button in dialog.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_OK" oor:type="xs:string" oor:localized="true">
+ <info><desc>"Ok" button in dialog.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_Yes" oor:type="xs:string" oor:localized="true">
+ <info><desc>"Yes" button in dialog.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_AddButton" oor:type="xs:string" oor:localized="true">
+ <info><desc>"Add..." button text.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_EditButton" oor:type="xs:string" oor:localized="true">
+ <info><desc>"Edit..." button text.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_SendButton" oor:type="xs:string" oor:localized="true">
+ <info><desc>"Send" button text.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_RemoveButton" oor:type="xs:string" oor:localized="true">
+ <info><desc>"Remove" button text.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_UrlLabel" oor:type="xs:string" oor:localized="true">
+ <info><desc>"URL" label.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_UsernameLabel" oor:type="xs:string" oor:localized="true">
+ <info><desc>"Username" label.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_PasswordLabel" oor:type="xs:string" oor:localized="true">
+ <info><desc>"Password" label.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_NewWikiPage_Label1" oor:type="xs:string" oor:localized="true">
+ <info><desc>The text asking whether a new wiki page should be created.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_SendToMediaWiki_Label1" oor:type="xs:string" oor:localized="true">
+ <info><desc>The label reffering to the MediaWiki server selection.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_SendToMediaWiki_Label2" oor:type="xs:string" oor:localized="true">
+ <info><desc>The label reffering to the input of wiki article title.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_SendToMediaWiki_Label3" oor:type="xs:string" oor:localized="true">
+ <info><desc>The label reffering to the comments input.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_SendToMediaWiki_MinorCheck" oor:type="xs:string" oor:localized="true">
+ <info><desc>Text for checkbox specifying whether it is a minor input.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_SendToMediaWiki_BrowserCheck" oor:type="xs:string" oor:localized="true">
+ <info><desc>Text for checkbox specifying whether the article should be shown in browser after editing.</desc></info>
+ </prop>
+ <prop oor:name="UnknownCert" oor:type="xs:string" oor:localized="true">
+ <info><desc>The error is shown in case a wiki site is accessed using https and has an unknown certificate.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_MediaWiki_Title" oor:type="xs:string" oor:localized="true">
+ <info><desc>"MediaWiki" string that is used as title in some dialogs.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_AccountLine" oor:type="xs:string" oor:localized="true">
+ <info><desc>The text bordering the account information in the dialog.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_WikiLine" oor:type="xs:string" oor:localized="true">
+ <info><desc>The text bordering wiki server information in the dialog.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_EditSetting_SaveBox" oor:type="xs:string" oor:localized="true">
+ <info><desc>The checkbox specifying whether the password should be stored using the password container.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_MediaWiki_Extension_String" oor:type="xs:string" oor:localized="true">
+ <info><desc>The string containing the name of the extension.</desc></info>
+ </prop>
+ <prop oor:name="Dlg_WikiPageExists_Label1" oor:type="xs:string" oor:localized="true">
+ <info><desc>The text asking whether an existing wiki page should be overwritten.</desc></info>
+ </prop>
+ </group>
+ </component>
+
+</oor:component-schema>
diff --git a/swext/mediawiki/src/registry/schema/org/openoffice/Office/Custom/makefile.mk b/swext/mediawiki/src/registry/schema/org/openoffice/Office/Custom/makefile.mk
new file mode 100644
index 000000000000..bbbb9c664cbb
--- /dev/null
+++ b/swext/mediawiki/src/registry/schema/org/openoffice/Office/Custom/makefile.mk
@@ -0,0 +1,46 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..$/..$/..$/..$/..$/..$/..
+PRJNAME=swext
+CUSTID=mediawiki
+TARGET=mediawiki_registry_schema_custom
+PACKAGE=org.openoffice.Office.Custom
+
+.INCLUDE : settings.mk
+.INCLUDE : ${PRJ}$/makefile.pmk
+
+.IF "$(ENABLE_MEDIAWIKI)" == "YES"
+LOCALIZEDFILES=
+
+MODULEFILES=
+
+XCSFILES = WikiExtension.xcs
+.ENDIF
+
+.INCLUDE : target.mk
+
diff --git a/swext/mediawiki/src/uno-extension-manifest.xml b/swext/mediawiki/src/uno-extension-manifest.xml
new file mode 100644
index 000000000000..f3d9a0e2399b
--- /dev/null
+++ b/swext/mediawiki/src/uno-extension-manifest.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--***********************************************************************
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+ Copyright 2000, 2010 Oracle and/or its affiliates.
+
+ OpenOffice.org - a multi-platform office productivity suite
+
+ This file is part of OpenOffice.org.
+
+ OpenOffice.org is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License version 3
+ only, as published by the Free Software Foundation.
+
+ OpenOffice.org is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License version 3 for more details
+ (a copy is included in the LICENSE file that accompanied this code).
+
+ You should have received a copy of the GNU Lesser General Public License
+ version 3 along with OpenOffice.org. If not, see
+ <http://www.openoffice.org/license.html>
+ for a copy of the LGPLv3 License.
+
+ ************************************************************************ -->
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=Java"
+ manifest:full-path="mediawiki.jar"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="Addons.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="ProtocolHandler.xcu"/>
+ <manifest:file-entry manifest:full-path="WikiEditor/"
+ manifest:media-type="application/vnd.sun.star.basic-library"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-schema"
+ manifest:full-path="WikiExtension.xcs"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="WikiExtension.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="OptionsDialog.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="Filter.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="Types.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="Paths.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.help"
+ manifest:full-path="help"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.package-bundle-description"
+ manifest:full-path="help/component.txt"/>
+</manifest:manifest>
diff --git a/swext/prj/build.lst b/swext/prj/build.lst
new file mode 100644
index 000000000000..0bac744df814
--- /dev/null
+++ b/swext/prj/build.lst
@@ -0,0 +1,10 @@
+swext swext : officecfg TRANSLATIONS:translations DESKTOP:l10ntools javaunohelper ridljar unoil jurt APACHE_COMMONS:apache-commons readlicense_oo xsltml xmlhelp NULL
+swext swext usr1 - all swext_mkout NULL
+swext swext\mediawiki\help nmake - all swext_mwhelp NULL
+swext swext\mediawiki\src\registry\schema\org\openoffice\Office\Custom nmake - all swext_mwschema NULL
+swext swext\mediawiki\src\registry\data\org\openoffice\Office\Custom nmake - all swext_mwcustomdata swext_mwschema NULL
+swext swext\mediawiki\src\registry\data\org\openoffice\Office nmake - all swext_mwofficedata NULL
+swext swext\mediawiki\src\registry\data\org\openoffice\TypeDetection nmake - all swext_mwtypedetection NULL
+swext swext\mediawiki\src nmake - all swext_mwlicense NULL
+swext swext\mediawiki nmake - all swext_mw swext_mwhelp swext_mwschema swext_mwcustomdata swext_mwofficedata swext_mwlicense swext_mwtypedetection NULL
+
diff --git a/swext/prj/d.lst b/swext/prj/d.lst
new file mode 100644
index 000000000000..7f7ff29dc0ee
--- /dev/null
+++ b/swext/prj/d.lst
@@ -0,0 +1,5 @@
+mkdir: %_DEST%\bin\swext
+..\%__SRC%\bin\wiki-publisher.oxt %_DEST%\bin\swext\wiki-publisher.oxt
+..\%__SRC%\bin\wiki-publisher.oxt %_DEST%\bin\wiki-publisher.oxt
+..\%__SRC%\bin\mediawiki_develop.zip %_DEST%\bin\swext\mediawiki_develop.zip
+
diff --git a/tomcat/makefile.mk b/tomcat/makefile.mk
new file mode 100755
index 000000000000..9bdae76a41ab
--- /dev/null
+++ b/tomcat/makefile.mk
@@ -0,0 +1,68 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=.
+
+PRJNAME=tomacat
+TARGET=servlet
+
+.IF "$(SOLAR_JAVA)" != ""
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+.INCLUDE : antsettings.mk
+
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=jakarta-tomcat-5.0.30-src
+TARFILE_MD5=2a177023f9ea8ec8bd00837605c5df1b
+
+TARFILE_ROOTDIR=jakarta-tomcat-5.0.30-src
+
+ADDITIONAL_FILES = jakarta-servletapi-5/build.xml
+
+PATCH_FILES=tomcat.patch
+
+BUILD_DIR=jakarta-servletapi-5
+
+.IF "$(JAVACISGCJ)"=="yes"
+BUILD_ACTION=$(ANT)
+.ELSE
+BUILD_ACTION=$(ANT) -Dant.build.javac.source=$(JAVA_SOURCE_VER) -Dant.build.javac.target=$(JAVA_TARGET_VER)
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+
+.INCLUDE : tg_ext.mk
+
+.ELSE
+@all:
+ @echo java disabled
+.ENDIF
diff --git a/tomcat/prj/build.lst b/tomcat/prj/build.lst
new file mode 100644
index 000000000000..184f6dd19b3e
--- /dev/null
+++ b/tomcat/prj/build.lst
@@ -0,0 +1,2 @@
+to tomcat : solenv NULL
+to tomcat nmake - all to_mkout NULL
diff --git a/tomcat/prj/d.lst b/tomcat/prj/d.lst
new file mode 100644
index 000000000000..41530ac07cf4
--- /dev/null
+++ b/tomcat/prj/d.lst
@@ -0,0 +1 @@
+..\%__SRC%\misc\build\jakarta-tomcat-5.0.30-src\jakarta-servletapi-5\jsr154\dist\lib\servlet-api.jar %_DEST%\bin\servlet-api.jar
diff --git a/tomcat/tomcat.patch b/tomcat/tomcat.patch
new file mode 100644
index 000000000000..1815660b1b5b
--- /dev/null
+++ b/tomcat/tomcat.patch
@@ -0,0 +1,35 @@
+--- misc/jakarta-tomcat-5.0.30-src/jakarta-servletapi-5/build.xml Thu Jun 19 16:03:59 2008
++++ misc/build/jakarta-tomcat-5.0.30-src/jakarta-servletapi-5/build.xml Thu Jun 19 15:56:18 2008
+@@ -1,1 +1,31 @@
+-dummy
++<project name="jsr152 and jsr154 in Debian" default="debuild" basedir=".">
++
++ <target name="debuild"
++ description="Build jsr154 and jsr152 for Debian (Default)">
++ <echo message="Building Servlet 2.4 API"/>
++ <ant antfile="jsr154/build.xml"
++ target="dist"
++ inheritAll="false"
++ />
++ <echo message="Building JSP 2.0 API"/>
++ <ant antfile="jsr152/build.xml"
++ target="dist"
++ inheritAll="false"
++ />
++ </target>
++
++ <target name="clean" description="Clean">
++ <echo message="Cleaning JSP 2.0 API"/>
++ <ant antfile="jsr152/build.xml"
++ target="clean"
++ inheritAll="false"
++ />
++ <echo message="Cleaning Servlet 2.4 API"/>
++ <ant antfile="jsr154/build.xml"
++ target="clean"
++ inheritAll="false"
++ />
++ <delete dir="tmp"/>
++ </target>
++
++</project>
diff --git a/xpdf/makefile.mk b/xpdf/makefile.mk
new file mode 100644
index 000000000000..3205582d969b
--- /dev/null
+++ b/xpdf/makefile.mk
@@ -0,0 +1,137 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+# dmake create_clean -- just unpacks
+# dmake patch -- unpacks and applies patch file
+# dmake create_patch -- creates a patch file
+
+PRJ=.
+
+PRJNAME=xpdf
+TARGET=xpdflib
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+.IF "$(SYSTEM_POPPLER)" == "YES"
+dummy:
+ @echo "An already available installation of poppler should exist on your system."
+ @echo "Therefore xpdf provided here does not need to be built in addition."
+.ENDIF
+
+# --- Files --------------------------------------------------------
+
+TARFILE_NAME=xpdf-3.02
+TARFILE_MD5=599dc4cc65a07ee868cf92a667a913d2
+PATCH_FILES=$(TARFILE_NAME).patch xpdf-3.02-ooopwd.patch
+
+CONFIGURE_DIR=
+BUILD_DIR=$(CONFIGURE_DIR)
+
+.IF "$(SYSBASE)"!=""
+.IF "$(EXTRA_CFLAGS)"!=""
+CFLAGS:=$(EXTRA_CFLAGS)
+CXXFLAGS:=$(EXTRA_CFLAGS)
+.EXPORT : CFLAGS CXXFLAGS
+.ENDIF # "$(EXTRA_CFLAGS)"!=""
+.ELIF "$(OS)"=="MACOSX" # "$(SYSBASE)"!=""
+CFLAGS:=$(EXTRA_CDEFS)
+CXXFLAGS+:=$(EXTRA_CDEFS)
+.EXPORT: CFLAGS CXXFLAGS
+.ENDIF
+
+.IF "$(GUI)"=="UNX"
+.IF "$(OS)"=="SOLARIS"
+CFLAGS:=-O $(ARCH_FLAGS)
+.IF "$(COM)$(CPU)" == "C52I"
+CXXFLAGS:=-O2 $(ARCH_FLAGS)
+.ELSE
+CXXFLAGS:=-O $(ARCH_FLAGS)
+.ENDIF
+.IF "$(SYSBASE)" != ""
+CXXFLAGS +:= -I$(SYSBASE)/usr/include
+.END
+LDFLAGS:=$(ARCH_FLAGS)
+.EXPORT : CFLAGS CXXFLAGS LDFLAGS
+.ENDIF
+
+CONFIGURE_ACTION=configure
+CONFIGURE_FLAGS+=--without-x --without-libpaper-library --without-t1-library --enable-multithreaded --enable-exceptions
+
+.IF "$(OS)$(CPU)"=="MACOSXP"
+CXXFLAGS+=-malign-natural
+.EXPORT: CXXFLAGS
+.ENDIF
+
+BUILD_ACTION=$(GNUMAKE) -j$(EXTMAXPROCESS)
+.ELSE
+.IF "$(COM)"=="GCC"
+LDFLAGS=-Wl,--enable-runtime-pseudo-reloc-v2
+.EXPORT : LDFLAGS
+CONFIGURE_ACTION=./configure --without-x --enable-multithreaded --enable-exceptions LIBS=-lgdi32
+BUILD_ACTION=$(GNUMAKE) -j$(EXTMAXPROCESS)
+.ELSE
+CONFIGURE_ACTION=
+BUILD_ACTION= cmd.exe /d /c ms_make.bat
+.ENDIF
+.ENDIF
+
+CONVERTFILES=ms_make.bat
+BUILD_FLAGS=
+
+OUT2INC= \
+ fofi$/*.h \
+ goo$/*.h \
+ xpdf$/*.h \
+ aconf.h \
+ aconf2.h
+
+.IF "$(GUI)"=="UNX"
+OUT2LIB= \
+ fofi$/lib*.a \
+ goo$/lib*.a \
+ xpdf$/lib*.a
+.ELSE
+.IF "$(COM)"=="GCC"
+OUT2LIB= \
+ fofi$/lib*.a \
+ goo$/lib*.a \
+ xpdf$/lib*.a
+.ELSE
+OUT2LIB= \
+ fofi$/*.lib \
+ goo$/*.lib \
+ xpdf$/*.lib
+.ENDIF
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : set_ext.mk
+.INCLUDE : target.mk
+.INCLUDE : tg_ext.mk
diff --git a/xpdf/prj/build.lst b/xpdf/prj/build.lst
new file mode 100644
index 000000000000..527985ff0cf2
--- /dev/null
+++ b/xpdf/prj/build.lst
@@ -0,0 +1,2 @@
+xp xpdf : solenv soltools NULL
+xp xpdf nmake - all xp_xpdf NULL
diff --git a/xpdf/prj/d.lst b/xpdf/prj/d.lst
new file mode 100644
index 000000000000..efcb7eab693c
--- /dev/null
+++ b/xpdf/prj/d.lst
@@ -0,0 +1,5 @@
+mkdir: %_DEST%\inc\xpdf
+..\%__SRC%\inc\*.h %_DEST%\inc\xpdf\*.h
+..\%__SRC%\lib\lib*.a %_DEST%\lib
+..\%__SRC%\lib\*.lib %_DEST%\lib
+..\%__SRC%\bin\*.dll %_DEST%\bin
diff --git a/xpdf/xpdf-3.02-ooopwd.patch b/xpdf/xpdf-3.02-ooopwd.patch
new file mode 100644
index 000000000000..f773585b3f91
--- /dev/null
+++ b/xpdf/xpdf-3.02-ooopwd.patch
@@ -0,0 +1,101 @@
+--- misc/xpdf-3.02/xpdf/SecurityHandler.cc 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/xpdf/SecurityHandler.cc 2011-02-03 16:41:49.000000000 +0100
+@@ -40,7 +40,7 @@
+
+ encryptDictA->dictLookup("Filter", &filterObj);
+ if (filterObj.isName("Standard")) {
+- secHdlr = new StandardSecurityHandler(docA, encryptDictA);
++ secHdlr = new OOoImportSecurityhandler(docA, encryptDictA);
+ } else if (filterObj.isName()) {
+ #ifdef ENABLE_PLUGINS
+ if ((xsh = globalParams->getSecurityHandler(filterObj.getName()))) {
+@@ -310,6 +310,60 @@
+ return gTrue;
+ }
+
++//------------------------------------------------------------------------
++// OOoImportSecurityhandler
++//------------------------------------------------------------------------
++
++OOoImportSecurityhandler::~OOoImportSecurityhandler()
++{
++}
++
++inline Guchar toNum( Guchar digit )
++{
++ return (digit >= '0') && digit <= '9'
++ ? digit - '0'
++ : (digit >= 'A' && digit <= 'F')
++ ? digit - 'A' + 10
++ : (digit >= 'a' && digit <= 'f')
++ ? digit - 'a' + 10
++ : Guchar(0xff);
++}
++
++GBool OOoImportSecurityhandler::authorize(void* authData)
++{
++ if( !ok )
++ return gFalse;
++ if( authData )
++ {
++ GString* ownerPassword = ((StandardAuthData *)authData)->ownerPassword;
++ if( ownerPassword )
++ {
++ const char* pStr = ownerPassword->getCString();
++ if( strncmp( pStr, "_OOO_pdfi_Credentials_", 22 ) == 0 )
++ {
++ // a hex encoded byte sequence should follow until end of string
++ // the length must match fileKeyLength
++ // if this is the case we can assume that the password checked out
++ // and the file key is valid
++ // max len is 16 (the size of the fileKey array)
++ pStr += 22;
++ size_t i = 0;
++ while( pStr[0] && pStr[1] && i < sizeof( fileKey ) )
++ {
++ fileKey[i++] = (toNum( *pStr++ ) << 4)
++ | (toNum( *pStr++ ));
++ }
++ if( i == size_t(fileKeyLength) )
++ {
++ ownerPasswordOk = gTrue;
++ return gTrue;
++ }
++ }
++ }
++ }
++ return StandardSecurityHandler::authorize( authData );
++}
++
+ #ifdef ENABLE_PLUGINS
+
+ //------------------------------------------------------------------------
+--- misc/xpdf-3.02/xpdf/SecurityHandler.h 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/xpdf/SecurityHandler.h 2011-02-03 16:26:17.000000000 +0100
+@@ -103,7 +103,7 @@
+ virtual int getEncVersion() { return encVersion; }
+ virtual CryptAlgorithm getEncAlgorithm() { return encAlgorithm; }
+
+-private:
++protected:
+
+ int permFlags;
+ GBool ownerPasswordOk;
+@@ -119,6 +119,17 @@
+ GBool ok;
+ };
+
++class OOoImportSecurityhandler : public StandardSecurityHandler
++{
++public:
++ OOoImportSecurityhandler( PDFDoc* docA, Object* encryptDictA )
++ : StandardSecurityHandler( docA, encryptDictA )
++ {}
++ virtual ~OOoImportSecurityhandler();
++
++ virtual GBool authorize(void* authData);
++};
++
+ #ifdef ENABLE_PLUGINS
+ //------------------------------------------------------------------------
+ // ExternalSecurityHandler
diff --git a/xpdf/xpdf-3.02.patch b/xpdf/xpdf-3.02.patch
new file mode 100644
index 000000000000..9477f7a31d4a
--- /dev/null
+++ b/xpdf/xpdf-3.02.patch
@@ -0,0 +1,1901 @@
+--- misc/xpdf-3.02/goo/gmem.cc 2007-02-27 23:05:51.000000000 +0100
++++ misc/build/xpdf-3.02/goo/gmem.cc 2009-11-10 11:43:10.374175496 +0100
+@@ -55,7 +55,15 @@
+ void *data;
+ unsigned long *trl, *p;
+
+- if (size <= 0) {
++ if (size < 0) {
++#if USE_EXCEPTIONS
++ throw GMemException();
++#else
++ fprintf(stderr, "Invalid memory allocation size\n");
++ exit(1);
++#endif
++ }
++ if (size == 0) {
+ return NULL;
+ }
+ size1 = gMemDataSize(size);
+@@ -91,7 +99,15 @@
+ #else
+ void *p;
+
+- if (size <= 0) {
++ if (size < 0) {
++#if USE_EXCEPTIONS
++ throw GMemException();
++#else
++ fprintf(stderr, "Invalid memory allocation size\n");
++ exit(1);
++#endif
++ }
++ if (size == 0) {
+ return NULL;
+ }
+ if (!(p = malloc(size))) {
+@@ -112,7 +128,15 @@
+ void *q;
+ int oldSize;
+
+- if (size <= 0) {
++ if (size < 0) {
++#if USE_EXCEPTIONS
++ throw GMemException();
++#else
++ fprintf(stderr, "Invalid memory allocation size\n");
++ exit(1);
++#endif
++ }
++ if (size == 0) {
+ if (p) {
+ gfree(p);
+ }
+@@ -131,7 +155,15 @@
+ #else
+ void *q;
+
+- if (size <= 0) {
++ if (size < 0) {
++#if USE_EXCEPTIONS
++ throw GMemException();
++#else
++ fprintf(stderr, "Invalid memory allocation size\n");
++ exit(1);
++#endif
++ }
++ if (size == 0) {
+ if (p) {
+ free(p);
+ }
+--- misc/xpdf-3.02/goo/GString.cc 2007-02-27 23:05:51.000000000 +0100
++++ misc/build/xpdf-3.02/goo/GString.cc 2009-11-10 11:43:10.368006116 +0100
+@@ -528,7 +528,7 @@
+ if ((neg = x < 0)) {
+ x = -x;
+ }
+- x = floor(x * pow(10, prec) + 0.5);
++ x = floor(x * pow(10.0, prec) + 0.5);
+ i = bufSize;
+ started = !trim;
+ for (j = 0; j < prec && i > 1; ++j) {
+--- misc/xpdf-3.02/ms_make.bat 2007-02-27 23:05:51.000000000 +0100
++++ misc/build/xpdf-3.02/ms_make.bat 2009-11-10 11:43:10.450112062 +0100
+@@ -1,5 +1,5 @@
+ set CC=cl
+-set CFLAGS=/DWIN32 /I.. /I..\goo /I..\fofi /O2 /nologo
++set CFLAGS=/DWIN32 /D_MT /I.. /I..\goo /I..\fofi /O2 /nologo
+ set CXX=cl
+ set CXXFLAGS=%CFLAGS% /TP
+ set LIBPROG=lib
+@@ -70,6 +70,8 @@
+ %CXX% %CXXFLAGS% /c pdffonts.cc
+ %CXX% %CXXFLAGS% /c pdfimages.cc
+
++%LIBPROG% /nologo /out:xpdf.lib Annot.obj Array.obj BuiltinFont.obj BuiltinFontTables.obj Catalog.obj CharCodeToUnicode.obj CMap.obj Decrypt.obj Dict.obj Error.obj FontEncodingTables.obj Function.obj Gfx.obj GfxFont.obj GfxState.obj GlobalParams.obj JArithmeticDecoder.obj JBIG2Stream.obj JPXStream.obj Lexer.obj Link.obj NameToCharCode.obj Object.obj Outline.obj OutputDev.obj Page.obj Parser.obj PDFDoc.obj PDFDocEncoding.obj PSTokenizer.obj SecurityHandler.obj Stream.obj UnicodeMap.obj XRef.obj
++
+ %CXX% %LINKFLAGS% /Fepdftops.exe Annot.obj Array.obj BuiltinFont.obj BuiltinFontTables.obj Catalog.obj CharCodeToUnicode.obj CMap.obj Decrypt.obj Dict.obj Error.obj FontEncodingTables.obj Function.obj Gfx.obj GfxFont.obj GfxState.obj GlobalParams.obj JArithmeticDecoder.obj JBIG2Stream.obj JPXStream.obj Lexer.obj Link.obj NameToCharCode.obj Object.obj Outline.obj OutputDev.obj Page.obj Parser.obj PDFDoc.obj PDFDocEncoding.obj PSOutputDev.obj PSTokenizer.obj SecurityHandler.obj Stream.obj UnicodeMap.obj XRef.obj pdftops.obj ..\fofi\fofi.lib ..\goo\Goo.lib shell32.lib user32.lib gdi32.lib advapi32.lib
+
+ %CXX% %LINKFLAGS% /Fepdftotext.exe Annot.obj Array.obj BuiltinFont.obj BuiltinFontTables.obj Catalog.obj CharCodeToUnicode.obj CMap.obj Decrypt.obj Dict.obj Error.obj FontEncodingTables.obj Function.obj Gfx.obj GfxFont.obj GfxState.obj GlobalParams.obj JArithmeticDecoder.obj JBIG2Stream.obj JPXStream.obj Lexer.obj Link.obj NameToCharCode.obj Object.obj Outline.obj OutputDev.obj Page.obj Parser.obj PDFDoc.obj PDFDocEncoding.obj PSTokenizer.obj SecurityHandler.obj Stream.obj TextOutputDev.obj UnicodeMap.obj UnicodeTypeTable.obj XRef.obj pdftotext.obj ..\fofi\fofi.lib ..\goo\Goo.lib shell32.lib user32.lib gdi32.lib advapi32.lib
+@@ -82,37 +84,3 @@
+
+ cd ..
+
+-rem --- This part will only work if you have FreeType installed ---
+-
+-set FT2DIR=..\freetype-2.3.1
+-set CXXFLAGS=%CXXFLAGS% /I..\splash /I%FT2DIR%\include
+-
+-cd splash
+-%CXX% %CXXFLAGS% /c Splash.cc
+-%CXX% %CXXFLAGS% /c SplashBitmap.cc
+-%CXX% %CXXFLAGS% /c SplashClip.cc
+-%CXX% %CXXFLAGS% /c SplashFTFont.cc
+-%CXX% %CXXFLAGS% /c SplashFTFontEngine.cc
+-%CXX% %CXXFLAGS% /c SplashFTFontFile.cc
+-%CXX% %CXXFLAGS% /c SplashFont.cc
+-%CXX% %CXXFLAGS% /c SplashFontEngine.cc
+-%CXX% %CXXFLAGS% /c SplashFontFile.cc
+-%CXX% %CXXFLAGS% /c SplashFontFileID.cc
+-%CXX% %CXXFLAGS% /c SplashPath.cc
+-%CXX% %CXXFLAGS% /c SplashPattern.cc
+-%CXX% %CXXFLAGS% /c SplashScreen.cc
+-%CXX% %CXXFLAGS% /c SplashState.cc
+-%CXX% %CXXFLAGS% /c SplashT1Font.cc
+-%CXX% %CXXFLAGS% /c SplashT1FontEngine.cc
+-%CXX% %CXXFLAGS% /c SplashT1FontFile.cc
+-%CXX% %CXXFLAGS% /c SplashXPath.cc
+-%CXX% %CXXFLAGS% /c SplashXPathScanner.cc
+-%LIBPROG% /nologo /out:splash.lib Splash.obj SplashBitmap.obj SplashClip.obj SplashFTFont.obj SplashFTFontEngine.obj SplashFTFontFile.obj SplashFont.obj SplashFontEngine.obj SplashFontFile.obj SplashFontFileID.obj SplashPath.obj SplashPattern.obj SplashScreen.obj SplashState.obj SplashT1Font.obj SplashT1FontEngine.obj SplashT1FontFile.obj SplashXPath.obj SplashXPathScanner.obj
+-
+-cd ..\xpdf
+-%CXX% %CXXFLAGS% /c SplashOutputDev.cc
+-%CXX% %CXXFLAGS% /c pdftoppm.cc
+-
+-%CXX% %LINKFLAGS% /Fepdftoppm.exe Annot.obj Array.obj BuiltinFont.obj BuiltinFontTables.obj Catalog.obj CharCodeToUnicode.obj CMap.obj Decrypt.obj Dict.obj Error.obj FontEncodingTables.obj Function.obj Gfx.obj GfxFont.obj GfxState.obj GlobalParams.obj JArithmeticDecoder.obj JBIG2Stream.obj JPXStream.obj Lexer.obj Link.obj NameToCharCode.obj Object.obj Outline.obj OutputDev.obj Page.obj Parser.obj PDFDoc.obj PDFDocEncoding.obj PSTokenizer.obj SecurityHandler.obj SplashOutputDev.obj Stream.obj UnicodeMap.obj UnicodeTypeTable.obj XRef.obj pdftoppm.obj ..\splash\splash.lib ..\fofi\fofi.lib ..\goo\Goo.lib %FT2DIR%\freetype2.lib shell32.lib user32.lib gdi32.lib advapi32.lib
+-
+-cd ..
+--- misc/xpdf-3.02/splash/SplashBitmap.cc 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/splash/SplashBitmap.cc 2009-11-10 11:43:54.912615507 +0100
+@@ -11,6 +11,7 @@
+ #endif
+
+ #include <stdio.h>
++#include <limits.h>
+ #include "gmem.h"
+ #include "SplashErrorCodes.h"
+ #include "SplashBitmap.h"
+@@ -27,30 +28,48 @@
+ mode = modeA;
+ switch (mode) {
+ case splashModeMono1:
+- rowSize = (width + 7) >> 3;
++ if (width > 0) {
++ rowSize = (width + 7) >> 3;
++ } else {
++ rowSize = -1;
++ }
+ break;
+ case splashModeMono8:
+- rowSize = width;
++ if (width > 0) {
++ rowSize = width;
++ } else {
++ rowSize = -1;
++ }
+ break;
+ case splashModeRGB8:
+ case splashModeBGR8:
+- rowSize = width * 3;
++ if (width > 0 && width <= INT_MAX / 3) {
++ rowSize = width * 3;
++ } else {
++ rowSize = -1;
++ }
+ break;
+ #if SPLASH_CMYK
+ case splashModeCMYK8:
+- rowSize = width * 4;
++ if (width > 0 && width <= INT_MAX / 4) {
++ rowSize = width * 4;
++ } else {
++ rowSize = -1;
++ }
+ break;
+ #endif
+ }
+- rowSize += rowPad - 1;
+- rowSize -= rowSize % rowPad;
+- data = (SplashColorPtr)gmalloc(rowSize * height);
++ if (rowSize > 0) {
++ rowSize += rowPad - 1;
++ rowSize -= rowSize % rowPad;
++ }
++ data = (SplashColorPtr)gmallocn(height, rowSize);
+ if (!topDown) {
+ data += (height - 1) * rowSize;
+ rowSize = -rowSize;
+ }
+ if (alphaA) {
+- alpha = (Guchar *)gmalloc(width * height);
++ alpha = (Guchar *)gmallocn(width, height);
+ } else {
+ alpha = NULL;
+ }
+--- misc/xpdf-3.02/splash/Splash.cc 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/splash/Splash.cc 2009-11-10 11:43:54.894089400 +0100
+@@ -12,6 +12,7 @@
+
+ #include <stdlib.h>
+ #include <string.h>
++#include <limits.h>
+ #include "gmem.h"
+ #include "SplashErrorCodes.h"
+ #include "SplashMath.h"
+@@ -1912,7 +1913,10 @@
+ xq = w % scaledWidth;
+
+ // allocate pixel buffer
+- pixBuf = (SplashColorPtr)gmalloc((yp + 1) * w);
++ if (yp < 0 || yp > INT_MAX - 1) {
++ return splashErrBadArg;
++ }
++ pixBuf = (SplashColorPtr)gmallocn(yp + 1, w);
+
+ // initialize the pixel pipe
+ pipeInit(&pipe, 0, 0, state->fillPattern, NULL, state->fillAlpha,
+@@ -2208,9 +2212,12 @@
+ xq = w % scaledWidth;
+
+ // allocate pixel buffers
+- colorBuf = (SplashColorPtr)gmalloc((yp + 1) * w * nComps);
++ if (yp < 0 || yp > INT_MAX - 1 || w > INT_MAX / nComps) {
++ return splashErrBadArg;
++ }
++ colorBuf = (SplashColorPtr)gmallocn(yp + 1, w * nComps);
+ if (srcAlpha) {
+- alphaBuf = (Guchar *)gmalloc((yp + 1) * w);
++ alphaBuf = (Guchar *)gmallocn(yp + 1, w);
+ } else {
+ alphaBuf = NULL;
+ }
+--- misc/xpdf-3.02/splash/SplashErrorCodes.h 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/splash/SplashErrorCodes.h 2009-11-10 11:43:54.903536237 +0100
+@@ -29,4 +29,6 @@
+
+ #define splashErrSingularMatrix 8 // matrix is singular
+
++#define splashErrBadArg 9 // bad argument
++
+ #endif
+--- misc/xpdf-3.02/xpdf/JBIG2Stream.cc 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/xpdf/JBIG2Stream.cc 2009-11-10 11:43:10.393213949 +0100
+@@ -422,12 +422,14 @@
+ table[i] = table[len];
+
+ // assign prefixes
+- i = 0;
+- prefix = 0;
+- table[i++].prefix = prefix++;
+- for (; table[i].rangeLen != jbig2HuffmanEOT; ++i) {
+- prefix <<= table[i].prefixLen - table[i-1].prefixLen;
+- table[i].prefix = prefix++;
++ if (table[0].rangeLen != jbig2HuffmanEOT) {
++ i = 0;
++ prefix = 0;
++ table[i++].prefix = prefix++;
++ for (; table[i].rangeLen != jbig2HuffmanEOT; ++i) {
++ prefix <<= table[i].prefixLen - table[i-1].prefixLen;
++ table[i].prefix = prefix++;
++ }
+ }
+ }
+
+@@ -491,7 +493,7 @@
+ }
+ if (p->bits < 0) {
+ error(str->getPos(), "Bad two dim code in JBIG2 MMR stream");
+- return 0;
++ return EOF;
+ }
+ bufLen -= p->bits;
+ return p->n;
+@@ -507,7 +509,7 @@
+ ++nBytesRead;
+ }
+ while (1) {
+- if (bufLen >= 7 && ((buf >> (bufLen - 7)) & 0x7f) == 0) {
++ if (bufLen >= 11 && ((buf >> (bufLen - 7)) & 0x7f) == 0) {
+ if (bufLen <= 12) {
+ code = buf << (12 - bufLen);
+ } else {
+@@ -550,14 +552,15 @@
+ ++nBytesRead;
+ }
+ while (1) {
+- if (bufLen >= 6 && ((buf >> (bufLen - 6)) & 0x3f) == 0) {
++ if (bufLen >= 10 && ((buf >> (bufLen - 6)) & 0x3f) == 0) {
+ if (bufLen <= 13) {
+ code = buf << (13 - bufLen);
+ } else {
+ code = buf >> (bufLen - 13);
+ }
+ p = &blackTab1[code & 0x7f];
+- } else if (bufLen >= 4 && ((buf >> (bufLen - 4)) & 0x0f) == 0) {
++ } else if (bufLen >= 7 && ((buf >> (bufLen - 4)) & 0x0f) == 0 &&
++ ((buf >> (bufLen - 6)) & 0x03) != 0) {
+ if (bufLen <= 12) {
+ code = buf << (12 - bufLen);
+ } else {
+@@ -683,8 +686,9 @@
+ h = hA;
+ line = (wA + 7) >> 3;
+ if (w <= 0 || h <= 0 || line <= 0 || h >= (INT_MAX - 1) / line) {
+- data = NULL;
+- return;
++ // force a call to gmalloc(-1), which will throw an exception
++ h = -1;
++ line = 2;
+ }
+ // need to allocate one extra guard byte for use in combine()
+ data = (Guchar *)gmalloc(h * line + 1);
+@@ -698,8 +702,9 @@
+ h = bitmap->h;
+ line = bitmap->line;
+ if (w <= 0 || h <= 0 || line <= 0 || h >= (INT_MAX - 1) / line) {
+- data = NULL;
+- return;
++ // force a call to gmalloc(-1), which will throw an exception
++ h = -1;
++ line = 2;
+ }
+ // need to allocate one extra guard byte for use in combine()
+ data = (Guchar *)gmalloc(h * line + 1);
+@@ -754,6 +759,8 @@
+ inline void JBIG2Bitmap::getPixelPtr(int x, int y, JBIG2BitmapPtr *ptr) {
+ if (y < 0 || y >= h || x >= w) {
+ ptr->p = NULL;
++ ptr->shift = 0; // make gcc happy
++ ptr->x = 0; // make gcc happy
+ } else if (x < 0) {
+ ptr->p = &data[y * line];
+ ptr->shift = 7;
+@@ -798,6 +805,10 @@
+ Guint src0, src1, src, dest, s1, s2, m1, m2, m3;
+ GBool oneByte;
+
++ // check for the pathological case where y = -2^31
++ if (y < -0x7fffffff) {
++ return;
++ }
+ if (y < 0) {
+ y0 = -y;
+ } else {
+@@ -1011,8 +1022,13 @@
+ JBIG2SymbolDict::JBIG2SymbolDict(Guint segNumA, Guint sizeA):
+ JBIG2Segment(segNumA)
+ {
++ Guint i;
++
+ size = sizeA;
+ bitmaps = (JBIG2Bitmap **)gmallocn(size, sizeof(JBIG2Bitmap *));
++ for (i = 0; i < size; ++i) {
++ bitmaps[i] = NULL;
++ }
+ genericRegionStats = NULL;
+ refinementRegionStats = NULL;
+ }
+@@ -1021,7 +1037,9 @@
+ Guint i;
+
+ for (i = 0; i < size; ++i) {
+- delete bitmaps[i];
++ if (bitmaps[i]) {
++ delete bitmaps[i];
++ }
+ }
+ gfree(bitmaps);
+ if (genericRegionStats) {
+@@ -1296,6 +1314,13 @@
+ goto eofError2;
+ }
+
++ // check for missing page information segment
++ if (!pageBitmap && ((segType >= 4 && segType <= 7) ||
++ (segType >= 20 && segType <= 43))) {
++ error(getPos(), "First JBIG2 segment associated with a page must be a page information segment");
++ goto syntaxError;
++ }
++
+ // read the segment data
+ switch (segType) {
+ case 0:
+@@ -1411,6 +1436,8 @@
+ Guint i, j, k;
+ Guchar *p;
+
++ symWidths = NULL;
++
+ // symbol dictionary flags
+ if (!readUWord(&flags)) {
+ goto eofError;
+@@ -1466,20 +1493,32 @@
+ codeTables = new GList();
+ numInputSyms = 0;
+ for (i = 0; i < nRefSegs; ++i) {
+- seg = findSegment(refSegs[i]);
+- if (seg->getType() == jbig2SegSymbolDict) {
+- numInputSyms += ((JBIG2SymbolDict *)seg)->getSize();
+- } else if (seg->getType() == jbig2SegCodeTable) {
+- codeTables->append(seg);
++ if ((seg = findSegment(refSegs[i]))) {
++ if (seg->getType() == jbig2SegSymbolDict) {
++ j = ((JBIG2SymbolDict *)seg)->getSize();
++ if (numInputSyms > UINT_MAX - j) {
++ error(getPos(), "Too many input symbols in JBIG2 symbol dictionary");
++ delete codeTables;
++ goto eofError;
++ }
++ numInputSyms += j;
++ } else if (seg->getType() == jbig2SegCodeTable) {
++ codeTables->append(seg);
++ }
+ }
+ }
++ if (numInputSyms > UINT_MAX - numNewSyms) {
++ error(getPos(), "Too many input symbols in JBIG2 symbol dictionary");
++ delete codeTables;
++ goto eofError;
++ }
+
+ // compute symbol code length
+- symCodeLen = 0;
+- i = 1;
+- while (i < numInputSyms + numNewSyms) {
++ symCodeLen = 1;
++ i = (numInputSyms + numNewSyms) >> 1;
++ while (i) {
+ ++symCodeLen;
+- i <<= 1;
++ i >>= 1;
+ }
+
+ // get the input symbol bitmaps
+@@ -1491,11 +1530,12 @@
+ k = 0;
+ inputSymbolDict = NULL;
+ for (i = 0; i < nRefSegs; ++i) {
+- seg = findSegment(refSegs[i]);
+- if (seg->getType() == jbig2SegSymbolDict) {
+- inputSymbolDict = (JBIG2SymbolDict *)seg;
+- for (j = 0; j < inputSymbolDict->getSize(); ++j) {
+- bitmaps[k++] = inputSymbolDict->getBitmap(j);
++ if ((seg = findSegment(refSegs[i]))) {
++ if (seg->getType() == jbig2SegSymbolDict) {
++ inputSymbolDict = (JBIG2SymbolDict *)seg;
++ for (j = 0; j < inputSymbolDict->getSize(); ++j) {
++ bitmaps[k++] = inputSymbolDict->getBitmap(j);
++ }
+ }
+ }
+ }
+@@ -1510,6 +1550,9 @@
+ } else if (huffDH == 1) {
+ huffDHTable = huffTableE;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffDHTable = ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+ if (huffDW == 0) {
+@@ -1517,17 +1560,26 @@
+ } else if (huffDW == 1) {
+ huffDWTable = huffTableC;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffDWTable = ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+ if (huffBMSize == 0) {
+ huffBMSizeTable = huffTableA;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffBMSizeTable =
+ ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+ if (huffAggInst == 0) {
+ huffAggInstTable = huffTableA;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffAggInstTable =
+ ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+@@ -1560,7 +1612,6 @@
+ }
+
+ // allocate symbol widths storage
+- symWidths = NULL;
+ if (huff && !refAgg) {
+ symWidths = (Guint *)gmallocn(numNewSyms, sizeof(Guint));
+ }
+@@ -1602,6 +1653,10 @@
+ goto syntaxError;
+ }
+ symWidth += dw;
++ if (i >= numNewSyms) {
++ error(getPos(), "Too many symbols in JBIG2 symbol dictionary");
++ goto syntaxError;
++ }
+
+ // using a collective bitmap, so don't read a bitmap here
+ if (huff && !refAgg) {
+@@ -1638,6 +1693,10 @@
+ arithDecoder->decodeInt(&refDX, iardxStats);
+ arithDecoder->decodeInt(&refDY, iardyStats);
+ }
++ if (symID >= numInputSyms + i) {
++ error(getPos(), "Invalid symbol ID in JBIG2 symbol dictionary");
++ goto syntaxError;
++ }
+ refBitmap = bitmaps[symID];
+ bitmaps[numInputSyms + i] =
+ readGenericRefinementRegion(symWidth, symHeight,
+@@ -1704,6 +1763,12 @@
+ } else {
+ arithDecoder->decodeInt(&run, iaexStats);
+ }
++ if (i + run > numInputSyms + numNewSyms ||
++ (ex && j + run > numExSyms)) {
++ error(getPos(), "Too many exported symbols in JBIG2 symbol dictionary");
++ delete symbolDict;
++ goto syntaxError;
++ }
+ if (ex) {
+ for (cnt = 0; cnt < run; ++cnt) {
+ symbolDict->setBitmap(j++, bitmaps[i++]->copy());
+@@ -1713,6 +1778,11 @@
+ }
+ ex = !ex;
+ }
++ if (j != numExSyms) {
++ error(getPos(), "Too few symbols in JBIG2 symbol dictionary");
++ delete symbolDict;
++ goto syntaxError;
++ }
+
+ for (i = 0; i < numNewSyms; ++i) {
+ delete bitmaps[numInputSyms + i];
+@@ -1735,6 +1805,10 @@
+
+ return gTrue;
+
++ codeTableError:
++ error(getPos(), "Missing code table in JBIG2 symbol dictionary");
++ delete codeTables;
++
+ syntaxError:
+ for (i = 0; i < numNewSyms; ++i) {
+ if (bitmaps[numInputSyms + i]) {
+@@ -1837,6 +1911,8 @@
+ }
+ } else {
+ error(getPos(), "Invalid segment reference in JBIG2 text region");
++ delete codeTables;
++ return;
+ }
+ }
+ symCodeLen = 0;
+@@ -1871,6 +1947,9 @@
+ } else if (huffFS == 1) {
+ huffFSTable = huffTableG;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffFSTable = ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+ if (huffDS == 0) {
+@@ -1880,6 +1959,9 @@
+ } else if (huffDS == 2) {
+ huffDSTable = huffTableJ;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffDSTable = ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+ if (huffDT == 0) {
+@@ -1889,6 +1971,9 @@
+ } else if (huffDT == 2) {
+ huffDTTable = huffTableM;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffDTTable = ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+ if (huffRDW == 0) {
+@@ -1896,6 +1981,9 @@
+ } else if (huffRDW == 1) {
+ huffRDWTable = huffTableO;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffRDWTable = ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+ if (huffRDH == 0) {
+@@ -1903,6 +1991,9 @@
+ } else if (huffRDH == 1) {
+ huffRDHTable = huffTableO;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffRDHTable = ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+ if (huffRDX == 0) {
+@@ -1910,6 +2001,9 @@
+ } else if (huffRDX == 1) {
+ huffRDXTable = huffTableO;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffRDXTable = ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+ if (huffRDY == 0) {
+@@ -1917,11 +2011,17 @@
+ } else if (huffRDY == 1) {
+ huffRDYTable = huffTableO;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffRDYTable = ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+ if (huffRSize == 0) {
+ huffRSizeTable = huffTableA;
+ } else {
++ if (i >= (Guint)codeTables->getLength()) {
++ goto codeTableError;
++ }
+ huffRSizeTable =
+ ((JBIG2CodeTable *)codeTables->get(i++))->getHuffTable();
+ }
+@@ -2016,8 +2116,15 @@
+
+ return;
+
++ codeTableError:
++ error(getPos(), "Missing code table in JBIG2 text region");
++ gfree(codeTables);
++ delete syms;
++ return;
++
+ eofError:
+ error(getPos(), "Unexpected EOF in JBIG2 stream");
++ return;
+ }
+
+ JBIG2Bitmap *JBIG2Stream::readTextRegion(GBool huff, GBool refine,
+@@ -2324,8 +2431,8 @@
+ error(getPos(), "Bad symbol dictionary reference in JBIG2 halftone segment");
+ return;
+ }
+- seg = findSegment(refSegs[0]);
+- if (seg->getType() != jbig2SegPatternDict) {
++ if (!(seg = findSegment(refSegs[0])) ||
++ seg->getType() != jbig2SegPatternDict) {
+ error(getPos(), "Bad symbol dictionary reference in JBIG2 halftone segment");
+ return;
+ }
+@@ -2483,7 +2590,7 @@
+
+ // read the bitmap
+ bitmap = readGenericBitmap(mmr, w, h, templ, tpgdOn, gFalse,
+- NULL, atx, aty, mmr ? 0 : length - 18);
++ NULL, atx, aty, mmr ? length - 18 : 0);
+
+ // combine the region bitmap into the page bitmap
+ if (imm) {
+@@ -2505,6 +2612,43 @@
+ error(getPos(), "Unexpected EOF in JBIG2 stream");
+ }
+
++inline void JBIG2Stream::mmrAddPixels(int a1, int blackPixels,
++ int *codingLine, int *a0i, int w) {
++ if (a1 > codingLine[*a0i]) {
++ if (a1 > w) {
++ error(getPos(), "JBIG2 MMR row is wrong length ({0:d})", a1);
++ a1 = w;
++ }
++ if ((*a0i & 1) ^ blackPixels) {
++ ++*a0i;
++ }
++ codingLine[*a0i] = a1;
++ }
++}
++
++inline void JBIG2Stream::mmrAddPixelsNeg(int a1, int blackPixels,
++ int *codingLine, int *a0i, int w) {
++ if (a1 > codingLine[*a0i]) {
++ if (a1 > w) {
++ error(getPos(), "JBIG2 MMR row is wrong length ({0:d})", a1);
++ a1 = w;
++ }
++ if ((*a0i & 1) ^ blackPixels) {
++ ++*a0i;
++ }
++ codingLine[*a0i] = a1;
++ } else if (a1 < codingLine[*a0i]) {
++ if (a1 < 0) {
++ error(getPos(), "Invalid JBIG2 MMR code");
++ a1 = 0;
++ }
++ while (*a0i > 0 && a1 <= codingLine[*a0i - 1]) {
++ --*a0i;
++ }
++ codingLine[*a0i] = a1;
++ }
++}
++
+ JBIG2Bitmap *JBIG2Stream::readGenericBitmap(GBool mmr, int w, int h,
+ int templ, GBool tpgdOn,
+ GBool useSkip, JBIG2Bitmap *skip,
+@@ -2517,7 +2661,7 @@
+ JBIG2BitmapPtr atPtr0, atPtr1, atPtr2, atPtr3;
+ int *refLine, *codingLine;
+ int code1, code2, code3;
+- int x, y, a0, pix, i, refI, codingI;
++ int x, y, a0i, b1i, blackPixels, pix, i;
+
+ bitmap = new JBIG2Bitmap(0, w, h);
+ bitmap->clearToZero();
+@@ -2527,9 +2671,18 @@
+ if (mmr) {
+
+ mmrDecoder->reset();
++ if (w > INT_MAX - 2) {
++ error(getPos(), "Bad width in JBIG2 generic bitmap");
++ // force a call to gmalloc(-1), which will throw an exception
++ w = -3;
++ }
++ // 0 <= codingLine[0] < codingLine[1] < ... < codingLine[n] = w
++ // ---> max codingLine size = w + 1
++ // refLine has one extra guard entry at the end
++ // ---> max refLine size = w + 2
++ codingLine = (int *)gmallocn(w + 1, sizeof(int));
+ refLine = (int *)gmallocn(w + 2, sizeof(int));
+- codingLine = (int *)gmallocn(w + 2, sizeof(int));
+- codingLine[0] = codingLine[1] = w;
++ codingLine[0] = w;
+
+ for (y = 0; y < h; ++y) {
+
+@@ -2537,128 +2690,157 @@
+ for (i = 0; codingLine[i] < w; ++i) {
+ refLine[i] = codingLine[i];
+ }
+- refLine[i] = refLine[i + 1] = w;
++ refLine[i++] = w;
++ refLine[i] = w;
+
+ // decode a line
+- refI = 0; // b1 = refLine[refI]
+- codingI = 0; // a1 = codingLine[codingI]
+- a0 = 0;
+- do {
++ codingLine[0] = 0;
++ a0i = 0;
++ b1i = 0;
++ blackPixels = 0;
++ // invariant:
++ // refLine[b1i-1] <= codingLine[a0i] < refLine[b1i] < refLine[b1i+1] <= w
++ // exception at left edge:
++ // codingLine[a0i = 0] = refLine[b1i = 0] = 0 is possible
++ // exception at right edge:
++ // refLine[b1i] = refLine[b1i+1] = w is possible
++ while (codingLine[a0i] < w) {
+ code1 = mmrDecoder->get2DCode();
+ switch (code1) {
+ case twoDimPass:
+- if (refLine[refI] < w) {
+- a0 = refLine[refI + 1];
+- refI += 2;
+- }
+- break;
++ mmrAddPixels(refLine[b1i + 1], blackPixels, codingLine, &a0i, w);
++ if (refLine[b1i + 1] < w) {
++ b1i += 2;
++ }
++ break;
+ case twoDimHoriz:
+- if (codingI & 1) {
+- code1 = 0;
+- do {
+- code1 += code3 = mmrDecoder->getBlackCode();
+- } while (code3 >= 64);
+- code2 = 0;
+- do {
+- code2 += code3 = mmrDecoder->getWhiteCode();
+- } while (code3 >= 64);
+- } else {
+- code1 = 0;
+- do {
+- code1 += code3 = mmrDecoder->getWhiteCode();
+- } while (code3 >= 64);
+- code2 = 0;
+- do {
+- code2 += code3 = mmrDecoder->getBlackCode();
+- } while (code3 >= 64);
+- }
+- if (code1 > 0 || code2 > 0) {
+- a0 = codingLine[codingI++] = a0 + code1;
+- a0 = codingLine[codingI++] = a0 + code2;
+- while (refLine[refI] <= a0 && refLine[refI] < w) {
+- refI += 2;
+- }
+- }
+- break;
+- case twoDimVert0:
+- a0 = codingLine[codingI++] = refLine[refI];
+- if (refLine[refI] < w) {
+- ++refI;
+- }
+- break;
+- case twoDimVertR1:
+- a0 = codingLine[codingI++] = refLine[refI] + 1;
+- if (refLine[refI] < w) {
+- ++refI;
+- while (refLine[refI] <= a0 && refLine[refI] < w) {
+- refI += 2;
+- }
+- }
+- break;
+- case twoDimVertR2:
+- a0 = codingLine[codingI++] = refLine[refI] + 2;
+- if (refLine[refI] < w) {
+- ++refI;
+- while (refLine[refI] <= a0 && refLine[refI] < w) {
+- refI += 2;
+- }
+- }
+- break;
++ code1 = code2 = 0;
++ if (blackPixels) {
++ do {
++ code1 += code3 = mmrDecoder->getBlackCode();
++ } while (code3 >= 64);
++ do {
++ code2 += code3 = mmrDecoder->getWhiteCode();
++ } while (code3 >= 64);
++ } else {
++ do {
++ code1 += code3 = mmrDecoder->getWhiteCode();
++ } while (code3 >= 64);
++ do {
++ code2 += code3 = mmrDecoder->getBlackCode();
++ } while (code3 >= 64);
++ }
++ mmrAddPixels(codingLine[a0i] + code1, blackPixels,
++ codingLine, &a0i, w);
++ if (codingLine[a0i] < w) {
++ mmrAddPixels(codingLine[a0i] + code2, blackPixels ^ 1,
++ codingLine, &a0i, w);
++ }
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < w) {
++ b1i += 2;
++ }
++ break;
+ case twoDimVertR3:
+- a0 = codingLine[codingI++] = refLine[refI] + 3;
+- if (refLine[refI] < w) {
+- ++refI;
+- while (refLine[refI] <= a0 && refLine[refI] < w) {
+- refI += 2;
+- }
+- }
+- break;
+- case twoDimVertL1:
+- a0 = codingLine[codingI++] = refLine[refI] - 1;
+- if (refI > 0) {
+- --refI;
+- } else {
+- ++refI;
+- }
+- while (refLine[refI] <= a0 && refLine[refI] < w) {
+- refI += 2;
+- }
+- break;
+- case twoDimVertL2:
+- a0 = codingLine[codingI++] = refLine[refI] - 2;
+- if (refI > 0) {
+- --refI;
+- } else {
+- ++refI;
+- }
+- while (refLine[refI] <= a0 && refLine[refI] < w) {
+- refI += 2;
+- }
+- break;
++ mmrAddPixels(refLine[b1i] + 3, blackPixels, codingLine, &a0i, w);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < w) {
++ ++b1i;
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < w) {
++ b1i += 2;
++ }
++ }
++ break;
++ case twoDimVertR2:
++ mmrAddPixels(refLine[b1i] + 2, blackPixels, codingLine, &a0i, w);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < w) {
++ ++b1i;
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < w) {
++ b1i += 2;
++ }
++ }
++ break;
++ case twoDimVertR1:
++ mmrAddPixels(refLine[b1i] + 1, blackPixels, codingLine, &a0i, w);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < w) {
++ ++b1i;
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < w) {
++ b1i += 2;
++ }
++ }
++ break;
++ case twoDimVert0:
++ mmrAddPixels(refLine[b1i], blackPixels, codingLine, &a0i, w);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < w) {
++ ++b1i;
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < w) {
++ b1i += 2;
++ }
++ }
++ break;
+ case twoDimVertL3:
+- a0 = codingLine[codingI++] = refLine[refI] - 3;
+- if (refI > 0) {
+- --refI;
+- } else {
+- ++refI;
+- }
+- while (refLine[refI] <= a0 && refLine[refI] < w) {
+- refI += 2;
+- }
+- break;
++ mmrAddPixelsNeg(refLine[b1i] - 3, blackPixels, codingLine, &a0i, w);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < w) {
++ if (b1i > 0) {
++ --b1i;
++ } else {
++ ++b1i;
++ }
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < w) {
++ b1i += 2;
++ }
++ }
++ break;
++ case twoDimVertL2:
++ mmrAddPixelsNeg(refLine[b1i] - 2, blackPixels, codingLine, &a0i, w);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < w) {
++ if (b1i > 0) {
++ --b1i;
++ } else {
++ ++b1i;
++ }
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < w) {
++ b1i += 2;
++ }
++ }
++ break;
++ case twoDimVertL1:
++ mmrAddPixelsNeg(refLine[b1i] - 1, blackPixels, codingLine, &a0i, w);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < w) {
++ if (b1i > 0) {
++ --b1i;
++ } else {
++ ++b1i;
++ }
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < w) {
++ b1i += 2;
++ }
++ }
++ break;
++ case EOF:
++ mmrAddPixels(w, 0, codingLine, &a0i, w);
++ break;
+ default:
+ error(getPos(), "Illegal code in JBIG2 MMR bitmap data");
++ mmrAddPixels(w, 0, codingLine, &a0i, w);
+ break;
+ }
+- } while (a0 < w);
+- codingLine[codingI++] = w;
++ }
+
+ // convert the run lengths to a bitmap line
+ i = 0;
+- while (codingLine[i] < w) {
++ while (1) {
+ for (x = codingLine[i]; x < codingLine[i+1]; ++x) {
+ bitmap->setPixel(x, y);
+ }
++ if (codingLine[i+1] >= w || codingLine[i+2] >= w) {
++ break;
++ }
+ i += 2;
+ }
+ }
+@@ -2706,7 +2888,9 @@
+ ltp = !ltp;
+ }
+ if (ltp) {
+- bitmap->duplicateRow(y, y-1);
++ if (y > 0) {
++ bitmap->duplicateRow(y, y-1);
++ }
+ continue;
+ }
+ }
+@@ -2909,8 +3093,8 @@
+ return;
+ }
+ if (nRefSegs == 1) {
+- seg = findSegment(refSegs[0]);
+- if (seg->getType() != jbig2SegBitmap) {
++ if (!(seg = findSegment(refSegs[0])) ||
++ seg->getType() != jbig2SegBitmap) {
+ error(getPos(), "Bad bitmap reference in JBIG2 generic refinement segment");
+ return;
+ }
+@@ -3004,6 +3188,10 @@
+ tpgrCX2 = refBitmap->nextPixel(&tpgrCXPtr2);
+ tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2);
+ tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2);
++ } else {
++ tpgrCXPtr0.p = tpgrCXPtr1.p = tpgrCXPtr2.p = NULL; // make gcc happy
++ tpgrCXPtr0.shift = tpgrCXPtr1.shift = tpgrCXPtr2.shift = 0;
++ tpgrCXPtr0.x = tpgrCXPtr1.x = tpgrCXPtr2.x = 0;
+ }
+
+ for (x = 0; x < w; ++x) {
+@@ -3075,6 +3263,10 @@
+ tpgrCX2 = refBitmap->nextPixel(&tpgrCXPtr2);
+ tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2);
+ tpgrCX2 = (tpgrCX2 << 1) | refBitmap->nextPixel(&tpgrCXPtr2);
++ } else {
++ tpgrCXPtr0.p = tpgrCXPtr1.p = tpgrCXPtr2.p = NULL; // make gcc happy
++ tpgrCXPtr0.shift = tpgrCXPtr1.shift = tpgrCXPtr2.shift = 0;
++ tpgrCXPtr0.x = tpgrCXPtr1.x = tpgrCXPtr2.x = 0;
+ }
+
+ for (x = 0; x < w; ++x) {
+--- misc/xpdf-3.02/xpdf/JBIG2Stream.h 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/xpdf/JBIG2Stream.h 2009-11-10 11:43:10.400610529 +0100
+@@ -78,6 +78,10 @@
+ Guint *refSegs, Guint nRefSegs);
+ void readGenericRegionSeg(Guint segNum, GBool imm,
+ GBool lossless, Guint length);
++ void mmrAddPixels(int a1, int blackPixels,
++ int *codingLine, int *a0i, int w);
++ void mmrAddPixelsNeg(int a1, int blackPixels,
++ int *codingLine, int *a0i, int w);
+ JBIG2Bitmap *readGenericBitmap(GBool mmr, int w, int h,
+ int templ, GBool tpgdOn,
+ GBool useSkip, JBIG2Bitmap *skip,
+--- misc/xpdf-3.02/xpdf/Makefile.in 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/xpdf/Makefile.in 2009-11-10 11:43:10.407182402 +0100
+@@ -20,6 +20,8 @@
+ SPLASHLIBDIR = ../splash
+
+ CXXFLAGS = @CXXFLAGS@ @DEFS@ -I.. -I$(GOOSRCDIR) -I$(FOFISRCDIR) -I$(SPLASHSRCDIR) -I$(srcdir) @freetype2_CFLAGS@ @Sgm_CFLAGS@ @Xm_CFLAGS@ @Xt_CFLAGS@ @Xp_CFLAGS@ @Xext_CFLAGS@ @Xpm_CFLAGS@ @t1_CFLAGS@ @libpaper_CFLAGS@ @X_CFLAGS@
++AR = ar rc
++RANLIB = ranlib
+
+ LDFLAGS = @LDFLAGS@
+
+@@ -107,10 +109,27 @@
+ #------------------------------------------------------------------------
+
+ all: xpdf$(EXE) pdftops$(EXE) pdftotext$(EXE) pdfinfo$(EXE) \
+- pdffonts$(EXE) pdftoppm$(EXE) pdfimages$(EXE)
++ pdffonts$(EXE) pdftoppm$(EXE) pdfimages$(EXE) $(LIBPREFIX)xpdf.a
+
+ all-no-x: pdftops$(EXE) pdftotext$(EXE) pdfinfo$(EXE) pdffonts$(EXE) \
+- pdfimages$(EXE)
++ pdfimages$(EXE) $(LIBPREFIX)xpdf.a
++
++#------------------------------------------------------------------------
++
++XPDFLIB_OBJS = Annot.o Array.o BuiltinFont.o BuiltinFontTables.o Catalog.o \
++ CharCodeToUnicode.o CMap.o Decrypt.o Dict.o \
++ Error.o FontEncodingTables.o Function.o Gfx.o GfxFont.o \
++ GfxState.o GlobalParams.o JArithmeticDecoder.o JBIG2Stream.o \
++ JPXStream.o Lexer.o Link.o NameToCharCode.o Object.o Outline.o \
++ OutputDev.o Page.o Parser.o PDFCore.o PDFDoc.o PDFDocEncoding.o \
++ PSTokenizer.o SecurityHandler.o \
++ Stream.o UnicodeMap.o \
++ UnicodeTypeTable.o XRef.o
++
++$(LIBPREFIX)xpdf.a: $(XPDFLIB_OBJS)
++ rm -f $(LIBPREFIX)xpdf.a
++ $(AR) $(LIBPREFIX)xpdf.a $(XPDFLIB_OBJS)
++ $(RANLIB) $(LIBPREFIX)xpdf.a
+
+ #------------------------------------------------------------------------
+
+--- misc/xpdf-3.02/xpdf/PSOutputDev.cc 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/xpdf/PSOutputDev.cc 2009-11-10 11:43:54.879574544 +0100
+@@ -4301,7 +4301,7 @@
+ width, -height, height);
+
+ // allocate a line buffer
+- lineBuf = (Guchar *)gmalloc(4 * width);
++ lineBuf = (Guchar *)gmallocn(width, 4);
+
+ // set up to process the data stream
+ imgStr = new ImageStream(str, width, colorMap->getNumPixelComps(),
+--- misc/xpdf-3.02/xpdf/Stream.cc 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/xpdf/Stream.cc 2009-11-10 11:43:54.863071127 +0100
+@@ -323,6 +323,10 @@
+ } else {
+ imgLineSize = nVals;
+ }
++ if (width > INT_MAX / nComps) {
++ // force a call to gmallocn(-1,...), which will throw an exception
++ imgLineSize = -1;
++ }
+ imgLine = (Guchar *)gmallocn(imgLineSize, sizeof(Guchar));
+ imgIdx = nVals;
+ }
+@@ -410,15 +414,13 @@
+ ok = gFalse;
+
+ nVals = width * nComps;
+- if (width <= 0 || nComps <= 0 || nBits <= 0 ||
+- nComps >= INT_MAX / nBits ||
+- width >= INT_MAX / nComps / nBits ||
+- nVals * nBits + 7 < 0) {
+- return;
+- }
+ pixBytes = (nComps * nBits + 7) >> 3;
+ rowBytes = ((nVals * nBits + 7) >> 3) + pixBytes;
+- if (rowBytes <= 0) {
++ if (width <= 0 || nComps <= 0 || nBits <= 0 ||
++ nComps > gfxColorMaxComps ||
++ nBits > 16 ||
++ width >= INT_MAX / nComps || // check for overflow in nVals
++ nVals >= (INT_MAX - 7) / nBits) { // check for overflow in rowBytes
+ return;
+ }
+ predLine = (Guchar *)gmalloc(rowBytes);
+@@ -1245,23 +1247,26 @@
+ columns = columnsA;
+ if (columns < 1) {
+ columns = 1;
+- }
+- if (columns + 4 <= 0) {
+- columns = INT_MAX - 4;
++ } else if (columns > INT_MAX - 2) {
++ columns = INT_MAX - 2;
+ }
+ rows = rowsA;
+ endOfBlock = endOfBlockA;
+ black = blackA;
+- refLine = (short *)gmallocn(columns + 3, sizeof(short));
+- codingLine = (short *)gmallocn(columns + 2, sizeof(short));
++ // 0 <= codingLine[0] < codingLine[1] < ... < codingLine[n] = columns
++ // ---> max codingLine size = columns + 1
++ // refLine has one extra guard entry at the end
++ // ---> max refLine size = columns + 2
++ codingLine = (int *)gmallocn(columns + 1, sizeof(int));
++ refLine = (int *)gmallocn(columns + 2, sizeof(int));
+
+ eof = gFalse;
+ row = 0;
+ nextLine2D = encoding < 0;
+ inputBits = 0;
+- codingLine[0] = 0;
+- codingLine[1] = refLine[2] = columns;
+- a0 = 1;
++ codingLine[0] = columns;
++ a0i = 0;
++ outputBits = 0;
+
+ buf = EOF;
+ }
+@@ -1280,9 +1285,9 @@
+ row = 0;
+ nextLine2D = encoding < 0;
+ inputBits = 0;
+- codingLine[0] = 0;
+- codingLine[1] = columns;
+- a0 = 1;
++ codingLine[0] = columns;
++ a0i = 0;
++ outputBits = 0;
+ buf = EOF;
+
+ // skip any initial zero bits and end-of-line marker, and get the 2D
+@@ -1299,211 +1304,230 @@
+ }
+ }
+
++inline void CCITTFaxStream::addPixels(int a1, int blackPixels) {
++ if (a1 > codingLine[a0i]) {
++ if (a1 > columns) {
++ error(getPos(), "CCITTFax row is wrong length (%d)", a1);
++ err = gTrue;
++ a1 = columns;
++ }
++ if ((a0i & 1) ^ blackPixels) {
++ ++a0i;
++ }
++ codingLine[a0i] = a1;
++ }
++}
++
++inline void CCITTFaxStream::addPixelsNeg(int a1, int blackPixels) {
++ if (a1 > codingLine[a0i]) {
++ if (a1 > columns) {
++ error(getPos(), "CCITTFax row is wrong length (%d)", a1);
++ err = gTrue;
++ a1 = columns;
++ }
++ if ((a0i & 1) ^ blackPixels) {
++ ++a0i;
++ }
++ codingLine[a0i] = a1;
++ } else if (a1 < codingLine[a0i]) {
++ if (a1 < 0) {
++ error(getPos(), "Invalid CCITTFax code");
++ err = gTrue;
++ a1 = 0;
++ }
++ while (a0i > 0 && a1 <= codingLine[a0i - 1]) {
++ --a0i;
++ }
++ codingLine[a0i] = a1;
++ }
++}
++
+ int CCITTFaxStream::lookChar() {
+ short code1, code2, code3;
+- int a0New;
+- GBool err, gotEOL;
+- int ret;
+- int bits, i;
++ int b1i, blackPixels, i, bits;
++ GBool gotEOL;
+
+- // if at eof just return EOF
+- if (eof && codingLine[a0] >= columns) {
+- return EOF;
++ if (buf != EOF) {
++ return buf;
+ }
+
+ // read the next row
+- err = gFalse;
+- if (codingLine[a0] >= columns) {
++ if (outputBits == 0) {
++
++ // if at eof just return EOF
++ if (eof) {
++ return EOF;
++ }
++
++ err = gFalse;
+
+ // 2-D encoding
+ if (nextLine2D) {
+- // state:
+- // a0New = current position in coding line (0 <= a0New <= columns)
+- // codingLine[a0] = last change in coding line
+- // (black-to-white if a0 is even,
+- // white-to-black if a0 is odd)
+- // refLine[b1] = next change in reference line of opposite color
+- // to a0
+- // invariants:
+- // 0 <= codingLine[a0] <= a0New
+- // <= refLine[b1] <= refLine[b1+1] <= columns
+- // 0 <= a0 <= columns+1
+- // refLine[0] = 0
+- // refLine[n] = refLine[n+1] = columns
+- // -- for some 1 <= n <= columns+1
+- // end condition:
+- // 0 = codingLine[0] <= codingLine[1] < codingLine[2] < ...
+- // < codingLine[n-1] < codingLine[n] = columns
+- // -- where 1 <= n <= columns+1
+ for (i = 0; codingLine[i] < columns; ++i) {
+ refLine[i] = codingLine[i];
+ }
+- refLine[i] = refLine[i + 1] = columns;
+- b1 = 1;
+- a0New = codingLine[a0 = 0] = 0;
+- do {
++ refLine[i++] = columns;
++ refLine[i] = columns;
++ codingLine[0] = 0;
++ a0i = 0;
++ b1i = 0;
++ blackPixels = 0;
++ // invariant:
++ // refLine[b1i-1] <= codingLine[a0i] < refLine[b1i] < refLine[b1i+1]
++ // <= columns
++ // exception at left edge:
++ // codingLine[a0i = 0] = refLine[b1i = 0] = 0 is possible
++ // exception at right edge:
++ // refLine[b1i] = refLine[b1i+1] = columns is possible
++ while (codingLine[a0i] < columns) {
+ code1 = getTwoDimCode();
+ switch (code1) {
+ case twoDimPass:
+- if (refLine[b1] < columns) {
+- a0New = refLine[b1 + 1];
+- b1 += 2;
++ addPixels(refLine[b1i + 1], blackPixels);
++ if (refLine[b1i + 1] < columns) {
++ b1i += 2;
+ }
+ break;
+ case twoDimHoriz:
+- if ((a0 & 1) == 0) {
+- code1 = code2 = 0;
++ code1 = code2 = 0;
++ if (blackPixels) {
+ do {
+- code1 += code3 = getWhiteCode();
++ code1 += code3 = getBlackCode();
+ } while (code3 >= 64);
+ do {
+- code2 += code3 = getBlackCode();
++ code2 += code3 = getWhiteCode();
+ } while (code3 >= 64);
+ } else {
+- code1 = code2 = 0;
+ do {
+- code1 += code3 = getBlackCode();
++ code1 += code3 = getWhiteCode();
+ } while (code3 >= 64);
+ do {
+- code2 += code3 = getWhiteCode();
++ code2 += code3 = getBlackCode();
+ } while (code3 >= 64);
+ }
+- if (code1 > 0 || code2 > 0) {
+- if (a0New + code1 <= columns) {
+- codingLine[a0 + 1] = a0New + code1;
+- } else {
+- codingLine[a0 + 1] = columns;
+- }
+- ++a0;
+- if (codingLine[a0] + code2 <= columns) {
+- codingLine[a0 + 1] = codingLine[a0] + code2;
+- } else {
+- codingLine[a0 + 1] = columns;
+- }
+- ++a0;
+- a0New = codingLine[a0];
+- while (refLine[b1] <= a0New && refLine[b1] < columns) {
+- b1 += 2;
++ addPixels(codingLine[a0i] + code1, blackPixels);
++ if (codingLine[a0i] < columns) {
++ addPixels(codingLine[a0i] + code2, blackPixels ^ 1);
++ }
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) {
++ b1i += 2;
++ }
++ break;
++ case twoDimVertR3:
++ addPixels(refLine[b1i] + 3, blackPixels);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < columns) {
++ ++b1i;
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) {
++ b1i += 2;
+ }
+ }
+ break;
+- case twoDimVert0:
+- if (refLine[b1] < columns) {
+- a0New = codingLine[++a0] = refLine[b1];
+- ++b1;
+- while (refLine[b1] <= a0New && refLine[b1] < columns) {
+- b1 += 2;
++ case twoDimVertR2:
++ addPixels(refLine[b1i] + 2, blackPixels);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < columns) {
++ ++b1i;
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) {
++ b1i += 2;
+ }
+- } else {
+- a0New = codingLine[++a0] = columns;
+ }
+ break;
+ case twoDimVertR1:
+- if (refLine[b1] + 1 < columns) {
+- a0New = codingLine[++a0] = refLine[b1] + 1;
+- ++b1;
+- while (refLine[b1] <= a0New && refLine[b1] < columns) {
+- b1 += 2;
++ addPixels(refLine[b1i] + 1, blackPixels);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < columns) {
++ ++b1i;
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) {
++ b1i += 2;
+ }
+- } else {
+- a0New = codingLine[++a0] = columns;
+ }
+ break;
+- case twoDimVertL1:
+- if (refLine[b1] - 1 > a0New || (a0 == 0 && refLine[b1] == 1)) {
+- a0New = codingLine[++a0] = refLine[b1] - 1;
+- --b1;
+- while (refLine[b1] <= a0New && refLine[b1] < columns) {
+- b1 += 2;
++ case twoDimVert0:
++ addPixels(refLine[b1i], blackPixels);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < columns) {
++ ++b1i;
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) {
++ b1i += 2;
+ }
+ }
+ break;
+- case twoDimVertR2:
+- if (refLine[b1] + 2 < columns) {
+- a0New = codingLine[++a0] = refLine[b1] + 2;
+- ++b1;
+- while (refLine[b1] <= a0New && refLine[b1] < columns) {
+- b1 += 2;
++ case twoDimVertL3:
++ addPixelsNeg(refLine[b1i] - 3, blackPixels);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < columns) {
++ if (b1i > 0) {
++ --b1i;
++ } else {
++ ++b1i;
++ }
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) {
++ b1i += 2;
+ }
+- } else {
+- a0New = codingLine[++a0] = columns;
+ }
+ break;
+ case twoDimVertL2:
+- if (refLine[b1] - 2 > a0New || (a0 == 0 && refLine[b1] == 2)) {
+- a0New = codingLine[++a0] = refLine[b1] - 2;
+- --b1;
+- while (refLine[b1] <= a0New && refLine[b1] < columns) {
+- b1 += 2;
++ addPixelsNeg(refLine[b1i] - 2, blackPixels);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < columns) {
++ if (b1i > 0) {
++ --b1i;
++ } else {
++ ++b1i;
+ }
+- }
+- break;
+- case twoDimVertR3:
+- if (refLine[b1] + 3 < columns) {
+- a0New = codingLine[++a0] = refLine[b1] + 3;
+- ++b1;
+- while (refLine[b1] <= a0New && refLine[b1] < columns) {
+- b1 += 2;
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) {
++ b1i += 2;
+ }
+- } else {
+- a0New = codingLine[++a0] = columns;
+ }
+ break;
+- case twoDimVertL3:
+- if (refLine[b1] - 3 > a0New || (a0 == 0 && refLine[b1] == 3)) {
+- a0New = codingLine[++a0] = refLine[b1] - 3;
+- --b1;
+- while (refLine[b1] <= a0New && refLine[b1] < columns) {
+- b1 += 2;
++ case twoDimVertL1:
++ addPixelsNeg(refLine[b1i] - 1, blackPixels);
++ blackPixels ^= 1;
++ if (codingLine[a0i] < columns) {
++ if (b1i > 0) {
++ --b1i;
++ } else {
++ ++b1i;
++ }
++ while (refLine[b1i] <= codingLine[a0i] && refLine[b1i] < columns) {
++ b1i += 2;
+ }
+ }
+ break;
+ case EOF:
++ addPixels(columns, 0);
+ eof = gTrue;
+- codingLine[a0 = 0] = columns;
+- return EOF;
++ break;
+ default:
+ error(getPos(), "Bad 2D code %04x in CCITTFax stream", code1);
++ addPixels(columns, 0);
+ err = gTrue;
+ break;
+ }
+- } while (codingLine[a0] < columns);
++ }
+
+ // 1-D encoding
+ } else {
+- codingLine[a0 = 0] = 0;
+- while (1) {
++ codingLine[0] = 0;
++ a0i = 0;
++ blackPixels = 0;
++ while (codingLine[a0i] < columns) {
+ code1 = 0;
+- do {
+- code1 += code3 = getWhiteCode();
+- } while (code3 >= 64);
+- codingLine[a0+1] = codingLine[a0] + code1;
+- ++a0;
+- if (codingLine[a0] >= columns) {
+- break;
+- }
+- code2 = 0;
+- do {
+- code2 += code3 = getBlackCode();
+- } while (code3 >= 64);
+- codingLine[a0+1] = codingLine[a0] + code2;
+- ++a0;
+- if (codingLine[a0] >= columns) {
+- break;
++ if (blackPixels) {
++ do {
++ code1 += code3 = getBlackCode();
++ } while (code3 >= 64);
++ } else {
++ do {
++ code1 += code3 = getWhiteCode();
++ } while (code3 >= 64);
+ }
++ addPixels(codingLine[a0i] + code1, blackPixels);
++ blackPixels ^= 1;
+ }
+ }
+
+- if (codingLine[a0] != columns) {
+- error(getPos(), "CCITTFax row is wrong length (%d)", codingLine[a0]);
+- // force the row to be the correct length
+- while (codingLine[a0] > columns) {
+- --a0;
+- }
+- codingLine[++a0] = columns;
+- err = gTrue;
+- }
+-
+ // byte-align the row
+ if (byteAlign) {
+ inputBits &= ~7;
+@@ -1562,14 +1586,17 @@
+ // this if we know the stream contains end-of-line markers because
+ // the "just plow on" technique tends to work better otherwise
+ } else if (err && endOfLine) {
+- do {
++ while (1) {
++ code1 = lookBits(13);
+ if (code1 == EOF) {
+ eof = gTrue;
+ return EOF;
+ }
++ if ((code1 >> 1) == 0x001) {
++ break;
++ }
+ eatBits(1);
+- code1 = lookBits(13);
+- } while ((code1 >> 1) != 0x001);
++ }
+ eatBits(12);
+ if (encoding > 0) {
+ eatBits(1);
+@@ -1577,11 +1604,11 @@
+ }
+ }
+
+- a0 = 0;
+- outputBits = codingLine[1] - codingLine[0];
+- if (outputBits == 0) {
+- a0 = 1;
+- outputBits = codingLine[2] - codingLine[1];
++ // set up for output
++ if (codingLine[0] > 0) {
++ outputBits = codingLine[a0i = 0];
++ } else {
++ outputBits = codingLine[a0i = 1];
+ }
+
+ ++row;
+@@ -1589,39 +1616,43 @@
+
+ // get a byte
+ if (outputBits >= 8) {
+- ret = ((a0 & 1) == 0) ? 0xff : 0x00;
+- if ((outputBits -= 8) == 0) {
+- ++a0;
+- if (codingLine[a0] < columns) {
+- outputBits = codingLine[a0 + 1] - codingLine[a0];
+- }
++ buf = (a0i & 1) ? 0x00 : 0xff;
++ outputBits -= 8;
++ if (outputBits == 0 && codingLine[a0i] < columns) {
++ ++a0i;
++ outputBits = codingLine[a0i] - codingLine[a0i - 1];
+ }
+ } else {
+ bits = 8;
+- ret = 0;
++ buf = 0;
+ do {
+ if (outputBits > bits) {
+- i = bits;
+- bits = 0;
+- if ((a0 & 1) == 0) {
+- ret |= 0xff >> (8 - i);
++ buf <<= bits;
++ if (!(a0i & 1)) {
++ buf |= 0xff >> (8 - bits);
+ }
+- outputBits -= i;
++ outputBits -= bits;
++ bits = 0;
+ } else {
+- i = outputBits;
+- bits -= outputBits;
+- if ((a0 & 1) == 0) {
+- ret |= (0xff >> (8 - i)) << bits;
++ buf <<= outputBits;
++ if (!(a0i & 1)) {
++ buf |= 0xff >> (8 - outputBits);
+ }
++ bits -= outputBits;
+ outputBits = 0;
+- ++a0;
+- if (codingLine[a0] < columns) {
+- outputBits = codingLine[a0 + 1] - codingLine[a0];
++ if (codingLine[a0i] < columns) {
++ ++a0i;
++ outputBits = codingLine[a0i] - codingLine[a0i - 1];
++ } else if (bits > 0) {
++ buf <<= bits;
++ bits = 0;
+ }
+ }
+- } while (bits > 0 && codingLine[a0] < columns);
++ } while (bits);
++ }
++ if (black) {
++ buf ^= 0xff;
+ }
+- buf = black ? (ret ^ 0xff) : ret;
+ return buf;
+ }
+
+@@ -1663,6 +1694,9 @@
+ code = 0; // make gcc happy
+ if (endOfBlock) {
+ code = lookBits(12);
++ if (code == EOF) {
++ return 1;
++ }
+ if ((code >> 5) == 0) {
+ p = &whiteTab1[code];
+ } else {
+@@ -1675,6 +1709,9 @@
+ } else {
+ for (n = 1; n <= 9; ++n) {
+ code = lookBits(n);
++ if (code == EOF) {
++ return 1;
++ }
+ if (n < 9) {
+ code <<= 9 - n;
+ }
+@@ -1686,6 +1723,9 @@
+ }
+ for (n = 11; n <= 12; ++n) {
+ code = lookBits(n);
++ if (code == EOF) {
++ return 1;
++ }
+ if (n < 12) {
+ code <<= 12 - n;
+ }
+@@ -1711,9 +1751,12 @@
+ code = 0; // make gcc happy
+ if (endOfBlock) {
+ code = lookBits(13);
++ if (code == EOF) {
++ return 1;
++ }
+ if ((code >> 7) == 0) {
+ p = &blackTab1[code];
+- } else if ((code >> 9) == 0) {
++ } else if ((code >> 9) == 0 && (code >> 7) != 0) {
+ p = &blackTab2[(code >> 1) - 64];
+ } else {
+ p = &blackTab3[code >> 7];
+@@ -1725,6 +1768,9 @@
+ } else {
+ for (n = 2; n <= 6; ++n) {
+ code = lookBits(n);
++ if (code == EOF) {
++ return 1;
++ }
+ if (n < 6) {
+ code <<= 6 - n;
+ }
+@@ -1736,6 +1782,9 @@
+ }
+ for (n = 7; n <= 12; ++n) {
+ code = lookBits(n);
++ if (code == EOF) {
++ return 1;
++ }
+ if (n < 12) {
+ code <<= 12 - n;
+ }
+@@ -1749,6 +1798,9 @@
+ }
+ for (n = 10; n <= 13; ++n) {
+ code = lookBits(n);
++ if (code == EOF) {
++ return 1;
++ }
+ if (n < 13) {
+ code <<= 13 - n;
+ }
+@@ -1963,6 +2015,12 @@
+ // allocate a buffer for the whole image
+ bufWidth = ((width + mcuWidth - 1) / mcuWidth) * mcuWidth;
+ bufHeight = ((height + mcuHeight - 1) / mcuHeight) * mcuHeight;
++ if (bufWidth <= 0 || bufHeight <= 0 ||
++ bufWidth > INT_MAX / bufWidth / (int)sizeof(int)) {
++ error(getPos(), "Invalid image size in DCT stream");
++ y = height;
++ return;
++ }
+ for (i = 0; i < numComps; ++i) {
+ frameBuf[i] = (int *)gmallocn(bufWidth * bufHeight, sizeof(int));
+ memset(frameBuf[i], 0, bufWidth * bufHeight * sizeof(int));
+@@ -3038,6 +3096,11 @@
+ }
+ scanInfo.firstCoeff = str->getChar();
+ scanInfo.lastCoeff = str->getChar();
++ if (scanInfo.firstCoeff < 0 || scanInfo.lastCoeff > 63 ||
++ scanInfo.firstCoeff > scanInfo.lastCoeff) {
++ error(getPos(), "Bad DCT coefficient numbers in scan info block");
++ return gFalse;
++ }
+ c = str->getChar();
+ scanInfo.ah = (c >> 4) & 0x0f;
+ scanInfo.al = c & 0x0f;
+--- misc/xpdf-3.02/xpdf/Stream.h 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/xpdf/Stream.h 2009-11-10 11:43:10.426813566 +0100
+@@ -528,13 +528,15 @@
+ int row; // current row
+ int inputBuf; // input buffer
+ int inputBits; // number of bits in input buffer
+- short *refLine; // reference line changing elements
+- int b1; // index into refLine
+- short *codingLine; // coding line changing elements
+- int a0; // index into codingLine
++ int *codingLine; // coding line changing elements
++ int *refLine; // reference line changing elements
++ int a0i; // index into codingLine
++ GBool err; // error on current line
+ int outputBits; // remaining ouput bits
+ int buf; // character buffer
+
++ void addPixels(int a1, int black);
++ void addPixelsNeg(int a1, int black);
+ short getTwoDimCode();
+ short getWhiteCode();
+ short getBlackCode();
+--- misc/xpdf-3.02/xpdf/XRef.cc 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/xpdf/XRef.cc 2009-11-10 11:43:54.923556696 +0100
+@@ -52,6 +52,8 @@
+ // generation 0.
+ ObjectStream(XRef *xref, int objStrNumA);
+
++ GBool isOk() { return ok; }
++
+ ~ObjectStream();
+
+ // Return the object number of this object stream.
+@@ -67,6 +69,7 @@
+ int nObjects; // number of objects in the stream
+ Object *objs; // the objects (length = nObjects)
+ int *objNums; // the object numbers (length = nObjects)
++ GBool ok;
+ };
+
+ ObjectStream::ObjectStream(XRef *xref, int objStrNumA) {
+@@ -80,6 +83,7 @@
+ nObjects = 0;
+ objs = NULL;
+ objNums = NULL;
++ ok = gFalse;
+
+ if (!xref->fetch(objStrNum, 0, &objStr)->isStream()) {
+ goto err1;
+@@ -105,6 +109,13 @@
+ goto err1;
+ }
+
++ // this is an arbitrary limit to avoid integer overflow problems
++ // in the 'new Object[nObjects]' call (Acrobat apparently limits
++ // object streams to 100-200 objects)
++ if (nObjects > 1000000) {
++ error(-1, "Too many objects in an object stream");
++ goto err1;
++ }
+ objs = new Object[nObjects];
+ objNums = (int *)gmallocn(nObjects, sizeof(int));
+ offsets = (int *)gmallocn(nObjects, sizeof(int));
+@@ -161,10 +172,10 @@
+ }
+
+ gfree(offsets);
++ ok = gTrue;
+
+ err1:
+ objStr.free();
+- return;
+ }
+
+ ObjectStream::~ObjectStream() {
+@@ -837,6 +848,11 @@
+ delete objStr;
+ }
+ objStr = new ObjectStream(this, e->offset);
++ if (!objStr->isOk()) {
++ delete objStr;
++ objStr = NULL;
++ goto err;
++ }
+ }
+ objStr->getObject(e->gen, num, obj);
+ break;
+--- misc/xpdf-3.02/fofi/FoFiType1.cc 2007-02-27 23:05:51.000000000 +0100
++++ misc/build/xpdf-3.02/fofi/FoFiType1.cc 2011-01-04 13:41:06.871136746 +0100
+@@ -224,7 +224,7 @@
+ code = code * 8 + (*p2 - '0');
+ }
+ }
+- if (code < 256) {
++ if (code < 256 && code >= 0) {
+ for (p = p2; *p == ' ' || *p == '\t'; ++p) ;
+ if (*p == '/') {
+ ++p;
+--- misc/xpdf-3.02/xpdf/Gfx.cc 2007-02-27 23:05:52.000000000 +0100
++++ misc/build/xpdf-3.02/xpdf/Gfx.cc 2011-01-04 13:41:19.847501431 +0100
+@@ -441,6 +441,7 @@
+ void *abortCheckCbkDataA) {
+ int i;
+
++ parser = NULL;
+ xref = xrefA;
+ subPage = gFalse;
+ printCommands = globalParams->getPrintCommands();
+@@ -483,6 +484,7 @@
+ void *abortCheckCbkDataA) {
+ int i;
+
++ parser = NULL;
+ xref = xrefA;
+ subPage = gTrue;
+ printCommands = globalParams->getPrintCommands();